From 023307943705a5d4400d23fcf0e8126e998a15b5 Mon Sep 17 00:00:00 2001 From: epuig <epuig@google.com> Date: Wed, 24 Jul 2019 04:35:48 -0700 Subject: [PATCH] Move tink_config out from core. PiperOrigin-RevId: 259716293 --- __init__.py | 2 +- python/aead/aead_key_manager_test.py | 2 +- python/core/keyset_handle_test.py | 2 +- python/core/tink_config.py | 75 ------ python/core/tink_config_test.py | 225 ------------------ .../deterministic_aead_key_manager_test.py | 2 +- python/hybrid/hybrid_key_manager_test.py | 2 +- .../public_key_sign_key_manager_test.py | 2 +- .../public_key_verify_key_manager_test.py | 2 +- .../signature/signature_key_templates_test.py | 2 +- 10 files changed, 8 insertions(+), 308 deletions(-) delete mode 100644 python/core/tink_config.py delete mode 100644 python/core/tink_config_test.py diff --git a/__init__.py b/__init__.py index 5b8c5ab8a..63ee79701 100644 --- a/__init__.py +++ b/__init__.py @@ -24,7 +24,7 @@ from tink.python import daead from tink.python import hybrid from tink.python import mac from tink.python import signature -from tink.python.core import tink_config +from tink.python import tink_config Aead = aead.Aead diff --git a/python/aead/aead_key_manager_test.py b/python/aead/aead_key_manager_test.py index 685d93ef0..6a1a9b481 100644 --- a/python/aead/aead_key_manager_test.py +++ b/python/aead/aead_key_manager_test.py @@ -22,9 +22,9 @@ from absl.testing import absltest from tink.proto import aes_eax_pb2 from tink.proto import aes_gcm_pb2 from tink.proto import tink_pb2 +from tink.python import tink_config from tink.python.aead import aead from tink.python.aead import aead_key_manager -from tink.python.core import tink_config from tink.python.core import tink_error diff --git a/python/core/keyset_handle_test.py b/python/core/keyset_handle_test.py index 3ab6595a4..50ccb9aa3 100644 --- a/python/core/keyset_handle_test.py +++ b/python/core/keyset_handle_test.py @@ -27,7 +27,7 @@ from tink.python import aead from tink.python import core from tink.python import hybrid from tink.python import mac -from tink.python.core import tink_config +from tink.python import tink_config from tink.python.testing import helper diff --git a/python/core/tink_config.py b/python/core/tink_config.py deleted file mode 100644 index 0ba8523cc..000000000 --- a/python/core/tink_config.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright 2019 Google LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Static methods for handling of Tink configurations.""" - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -from tink.python import aead -from tink.python import daead -from tink.python import hybrid -from tink.python import mac -from tink.python import signature -from tink.python.aead import aead_key_manager -from tink.python.cc.clif import cc_tink_config -from tink.python.core import registry -from tink.python.daead import deterministic_aead_key_manager -from tink.python.hybrid import hybrid_decrypt_key_manager -from tink.python.hybrid import hybrid_encrypt_key_manager -from tink.python.mac import mac_key_manager -from tink.python.signature import public_key_sign_key_manager -from tink.python.signature import public_key_verify_key_manager - - -KEY_MANAGER_GENERATORS = { - 'Aead': aead_key_manager.from_cc_registry, - 'DeterministicAead': deterministic_aead_key_manager.from_cc_registry, - 'HybridDecrypt': hybrid_decrypt_key_manager.from_cc_registry, - 'HybridEncrypt': hybrid_encrypt_key_manager.from_cc_registry, - 'Mac': mac_key_manager.from_cc_registry, - 'PublicKeySign': public_key_sign_key_manager.from_cc_registry, - 'PublicKeyVerify': public_key_verify_key_manager.from_cc_registry, -} - - -def register(): - cc_tink_config.register() - _register_key_managers() - _register_primitive_wrappers() - - -def latest(): - return cc_tink_config.latest() - - -def _register_key_managers(): - for entry in cc_tink_config.latest().entry: - if entry.primitive_name in KEY_MANAGER_GENERATORS: - registry.Registry.register_key_manager( - KEY_MANAGER_GENERATORS[entry.primitive_name](entry.type_url), - entry.new_key_allowed) - - -def _register_primitive_wrappers(): - """Registers all primitive wrappers.""" - register_primitive_wrapper = registry.Registry.register_primitive_wrapper - register_primitive_wrapper(aead.AeadWrapper()) - register_primitive_wrapper(daead.DeterministicAeadWrapper()) - register_primitive_wrapper(hybrid.HybridDecryptWrapper()) - register_primitive_wrapper(hybrid.HybridEncryptWrapper()) - register_primitive_wrapper(mac.MacWrapper()) - register_primitive_wrapper(signature.PublicKeySignWrapper()) - register_primitive_wrapper(signature.PublicKeyVerifyWrapper()) diff --git a/python/core/tink_config_test.py b/python/core/tink_config_test.py deleted file mode 100644 index 6fe0e3161..000000000 --- a/python/core/tink_config_test.py +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright 2019 Google LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Tests for tink.python.tink_config.""" - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -from absl.testing import absltest -from tink.proto import tink_pb2 -from tink.python import aead -from tink.python import core -from tink.python import daead -from tink.python import hybrid -from tink.python import mac -from tink.python import signature -from tink.python.core import tink_config - - -def setUpModule(): - tink_config.register() - - -def _primitive_and_key(key_data, primitive_class, output_prefix_type): - primitive = core.Registry.primitive(key_data, primitive_class) - key = tink_pb2.Keyset.Key( - key_id=1, status=tink_pb2.ENABLED, output_prefix_type=output_prefix_type) - key.key_data.CopyFrom(key_data) - return primitive, key - - -def _new_primitive_and_key(template, primitive_class, output_prefix_type): - return _primitive_and_key( - core.Registry.new_key_data(template), primitive_class, output_prefix_type) - - -def _public_primitive_and_key(private_key, primitive_class, output_prefix_type): - return _primitive_and_key( - core.Registry.public_key_data(private_key.key_data), primitive_class, - output_prefix_type) - - -class TinkConfigTest(absltest.TestCase): - - def test_all_aead_templates_are_registered(self): - for template in [ - aead.aead_key_templates.AES128_EAX, - aead.aead_key_templates.AES256_EAX, - aead.aead_key_templates.AES128_GCM, - aead.aead_key_templates.AES256_GCM, - aead.aead_key_templates.AES128_CTR_HMAC_SHA256, - aead.aead_key_templates.AES256_CTR_HMAC_SHA256, - aead.aead_key_templates.XCHACHA20_POLY1305 - ]: - key_data = core.Registry.new_key_data(template) - primitive = core.Registry.primitive(key_data, aead.Aead) - self.assertEqual( - primitive.decrypt(primitive.encrypt(b'message', b'ad'), b'ad'), - b'message') - - def test_all_mac_templates_are_registered(self): - for template in [ - mac.mac_key_templates.HMAC_SHA256_128BITTAG, - mac.mac_key_templates.HMAC_SHA256_256BITTAG - ]: - key_data = core.Registry.new_key_data(template) - primitive = core.Registry.primitive(key_data, mac.Mac) - self.assertIsNone( - primitive.verify_mac(primitive.compute_mac(b'data'), b'data')) - - def test_all_deterministic_aead_templates_are_registered(self): - key_data = core.Registry.new_key_data( - daead.deterministic_aead_key_templates.AES256_SIV) - daead_primitive = core.Registry.primitive(key_data, daead.DeterministicAead) - ciphertext = daead_primitive.encrypt_deterministically(b'message', b'ad') - self.assertEqual( - daead_primitive.decrypt_deterministically(ciphertext, b'ad'), - b'message') - - def test_aead_wrapper_is_correctly_registered(self): - aead1, key1 = _new_primitive_and_key(aead.aead_key_templates.AES128_EAX, - aead.Aead, tink_pb2.RAW) - aead2, key2 = _new_primitive_and_key(aead.aead_key_templates.AES256_GCM, - aead.Aead, tink_pb2.TINK) - pset = core.PrimitiveSet(aead.Aead) - pset.add_primitive(aead1, key1) - pset.set_primary(pset.add_primitive(aead2, key2)) - wrapped_aead = core.Registry.wrap(pset) - - self.assertEqual( - wrapped_aead.decrypt(aead1.encrypt(b'plaintext1', b'ad1'), b'ad1'), - b'plaintext1') - self.assertEqual( - wrapped_aead.decrypt( - wrapped_aead.encrypt(b'plaintext2', b'ad2'), b'ad2'), b'plaintext2') - - def test_mac_wrapper_is_correctly_registered(self): - mac1, key1 = _new_primitive_and_key( - mac.mac_key_templates.HMAC_SHA256_128BITTAG, mac.Mac, tink_pb2.RAW) - mac2, key2 = _new_primitive_and_key( - mac.mac_key_templates.HMAC_SHA256_256BITTAG, mac.Mac, tink_pb2.TINK) - pset = core.PrimitiveSet(mac.Mac) - pset.add_primitive(mac1, key1) - pset.set_primary(pset.add_primitive(mac2, key2)) - wrapped_mac = core.Registry.wrap(pset) - - self.assertIsNone( - wrapped_mac.verify_mac(mac1.compute_mac(b'data1'), b'data1')) - self.assertIsNone( - wrapped_mac.verify_mac(wrapped_mac.compute_mac(b'data2'), b'data2')) - - def test_deterministic_aead_wrapper_is_correctly_registered(self): - daead1, key1 = _new_primitive_and_key( - daead.deterministic_aead_key_templates.AES256_SIV, - daead.DeterministicAead, tink_pb2.RAW) - daead2, key2 = _new_primitive_and_key( - daead.deterministic_aead_key_templates.AES256_SIV, - daead.DeterministicAead, tink_pb2.TINK) - pset = core.PrimitiveSet(daead.DeterministicAead) - pset.add_primitive(daead1, key1) - pset.set_primary(pset.add_primitive(daead2, key2)) - wrapped_daead = core.Registry.wrap(pset) - - self.assertEqual( - wrapped_daead.decrypt_deterministically( - daead1.encrypt_deterministically(b'plaintext1', b'ad1'), b'ad1'), - b'plaintext1') - self.assertEqual( - wrapped_daead.decrypt_deterministically( - wrapped_daead.encrypt_deterministically(b'plaintext2', b'ad2'), - b'ad2'), b'plaintext2') - - def test_hybrid_wrappers_are_correctly_registered(self): - dec1, dec1_key = _new_primitive_and_key( - hybrid.hybrid_key_templates.ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM, - hybrid.HybridDecrypt, tink_pb2.RAW) - enc1, enc1_key = _public_primitive_and_key(dec1_key, hybrid.HybridEncrypt, - tink_pb2.RAW) - - dec2, dec2_key = _new_primitive_and_key( - hybrid.hybrid_key_templates.ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM, - hybrid.HybridDecrypt, tink_pb2.RAW) - enc2, enc2_key = _public_primitive_and_key(dec2_key, hybrid.HybridEncrypt, - tink_pb2.RAW) - - dec_pset = core.PrimitiveSet(hybrid.HybridDecrypt) - dec_pset.add_primitive(dec1, dec1_key) - dec_pset.set_primary(dec_pset.add_primitive(dec2, dec2_key)) - wrapped_dec = core.Registry.wrap(dec_pset) - - enc_pset = core.PrimitiveSet(hybrid.HybridEncrypt) - enc_pset.add_primitive(enc1, enc1_key) - enc_pset.set_primary(enc_pset.add_primitive(enc2, enc2_key)) - wrapped_enc = core.Registry.wrap(enc_pset) - - self.assertEqual( - wrapped_dec.decrypt(enc1.encrypt(b'plaintext1', b'ad1'), b'ad1'), - b'plaintext1') - self.assertEqual( - wrapped_dec.decrypt(wrapped_enc.encrypt(b'plaintext2', b'ad2'), b'ad2'), - b'plaintext2') - - def test_key_managers_for_signature_templates_are_registered(self): - key_templates = signature.signature_key_templates - for template in [ - key_templates.ECDSA_P256, key_templates.ECDSA_P384, - key_templates.ECDSA_P521, key_templates.ECDSA_P256_IEEE_P1363, - key_templates.ECDSA_P256_IEEE_P1363, - key_templates.ECDSA_P521_IEEE_P1363, key_templates.ED25519, - key_templates.RSA_SSA_PSS_3072_SHA256_SHA256_32_F4, - key_templates.RSA_SSA_PSS_4096_SHA512_SHA512_64_F4, - key_templates.RSA_SSA_PKCS1_3072_SHA256_F4, - key_templates.RSA_SSA_PKCS1_4096_SHA512_F4 - ]: - key_data = core.Registry.new_key_data(template) - primitive = core.Registry.primitive(key_data, signature.PublicKeySign) - sig = primitive.sign(b'data') - - public_key = core.Registry.public_key_data(key_data) - primitive_verify = core.Registry.primitive(public_key, - signature.PublicKeyVerify) - - primitive_verify.verify(sig, b'data') - - def test_signature_wrapper_is_correctly_registered(self): - sig1, key1 = _new_primitive_and_key( - signature.signature_key_templates.ECDSA_P256, signature.PublicKeySign, - tink_pb2.TINK) - sig2, key2 = _new_primitive_and_key( - signature.signature_key_templates.ECDSA_P256, signature.PublicKeySign, - tink_pb2.TINK) - - ver1, pubkey1 = _public_primitive_and_key(key1, signature.PublicKeyVerify, - tink_pb2.TINK) - ver2, pubkey2 = _public_primitive_and_key(key2, signature.PublicKeyVerify, - tink_pb2.TINK) - - pset = core.PrimitiveSet(signature.PublicKeySign) - pset.add_primitive(sig1, key1) - pset.set_primary(pset.add_primitive(sig2, key2)) - wrapped_sig = core.Registry.wrap(pset) - - pset_verify = core.new_primitive_set(signature.PublicKeyVerify) - pset_verify.add_primitive(ver1, pubkey1) - pset_verify.set_primary(pset_verify.add_primitive(ver2, pubkey2)) - wrapped_ver = core.Registry.wrap(pset_verify) - - sig = wrapped_sig.sign(b'data') - wrapped_ver.verify(sig, b'data') - - -if __name__ == '__main__': - absltest.main() diff --git a/python/daead/deterministic_aead_key_manager_test.py b/python/daead/deterministic_aead_key_manager_test.py index 8856c6fbb..94bf467ce 100644 --- a/python/daead/deterministic_aead_key_manager_test.py +++ b/python/daead/deterministic_aead_key_manager_test.py @@ -21,7 +21,7 @@ from __future__ import print_function from absl.testing import absltest from tink.proto import aes_siv_pb2 from tink.proto import tink_pb2 -from tink.python.core import tink_config +from tink.python import tink_config from tink.python.core import tink_error from tink.python.daead import deterministic_aead from tink.python.daead import deterministic_aead_key_manager diff --git a/python/hybrid/hybrid_key_manager_test.py b/python/hybrid/hybrid_key_manager_test.py index e4d1783f8..a6ebadd8f 100644 --- a/python/hybrid/hybrid_key_manager_test.py +++ b/python/hybrid/hybrid_key_manager_test.py @@ -22,8 +22,8 @@ from absl.testing import absltest from tink.proto import common_pb2 from tink.proto import ecies_aead_hkdf_pb2 from tink.proto import tink_pb2 +from tink.python import tink_config from tink.python.aead import aead_key_templates -from tink.python.core import tink_config from tink.python.core import tink_error from tink.python.hybrid import hybrid_decrypt from tink.python.hybrid import hybrid_decrypt_key_manager diff --git a/python/signature/public_key_sign_key_manager_test.py b/python/signature/public_key_sign_key_manager_test.py index bd18cbe4b..896df2fb7 100644 --- a/python/signature/public_key_sign_key_manager_test.py +++ b/python/signature/public_key_sign_key_manager_test.py @@ -23,7 +23,7 @@ from absl.testing import absltest from tink.proto import common_pb2 from tink.proto import ecdsa_pb2 from tink.proto import tink_pb2 -from tink.python.core import tink_config +from tink.python import tink_config from tink.python.signature import public_key_sign from tink.python.signature import public_key_sign_key_manager from tink.python.signature import public_key_verify_key_manager diff --git a/python/signature/public_key_verify_key_manager_test.py b/python/signature/public_key_verify_key_manager_test.py index d58ea52cf..bfd9a480f 100644 --- a/python/signature/public_key_verify_key_manager_test.py +++ b/python/signature/public_key_verify_key_manager_test.py @@ -23,7 +23,7 @@ from absl.testing import absltest from tink.proto import common_pb2 from tink.proto import ecdsa_pb2 from tink.proto import tink_pb2 -from tink.python.core import tink_config +from tink.python import tink_config from tink.python.core import tink_error from tink.python.signature import public_key_sign_key_manager from tink.python.signature import public_key_verify_key_manager diff --git a/python/signature/signature_key_templates_test.py b/python/signature/signature_key_templates_test.py index da256d022..e5606681b 100644 --- a/python/signature/signature_key_templates_test.py +++ b/python/signature/signature_key_templates_test.py @@ -26,7 +26,7 @@ from tink.proto import ecdsa_pb2 from tink.proto import rsa_ssa_pkcs1_pb2 from tink.proto import rsa_ssa_pss_pb2 from tink.proto import tink_pb2 -from tink.python.core import tink_config +from tink.python import tink_config from tink.python.signature import public_key_sign_key_manager from tink.python.signature import signature_key_templates -- GitLab