diff --git a/conda_content_trust/common.py b/conda_content_trust/common.py index 4155c66..1875ce8 100644 --- a/conda_content_trust/common.py +++ b/conda_content_trust/common.py @@ -179,6 +179,7 @@ class MixinKey: PrivateKey and PublicKey classes, specifically. It provides some convenience functions. """ + @classmethod def to_hex(cls, key): return hexlify(cls.to_bytes(key)).decode("utf-8") @@ -219,6 +220,7 @@ class PrivateKey(MixinKey, ed25519.Ed25519PrivateKey): value for sign() is a length 64 bytes() object, a raw ed25519 signature. """ + @classmethod def to_bytes(cls, key): return key.private_bytes( @@ -260,13 +262,16 @@ class PublicKey(MixinKey, ed25519.Ed25519PublicKey): We preserve Ed25519PublicKey's verify() method unchanged. """ + @classmethod def to_bytes(cls, key): """ Pops out the nice, tidy bytes of a given ed25519 key object, public or private. """ - return key.public_bytes(serialization.Encoding.Raw, serialization.PublicFormat.Raw) + return key.public_bytes( + serialization.Encoding.Raw, serialization.PublicFormat.Raw + ) @classmethod def from_bytes(cls, key_value_in_bytes): @@ -284,6 +289,7 @@ def from_bytes(cls, key_value_in_bytes): checkformat_byteslike(key_value_in_bytes) return super().from_public_bytes(key_value_in_bytes) + # No.... For now, I'll stick with the raw dictionary representations. # If function profusion makes it inconvenient for folks to use this library, # it MAY then be time to make signatures into class objects... but it's diff --git a/news/56-upgrade-cryptography b/news/56-upgrade-cryptography new file mode 100644 index 0000000..820114f --- /dev/null +++ b/news/56-upgrade-cryptography @@ -0,0 +1,19 @@ +### Enhancements + +* Improve compatibility with cryptography>=41. (#56) + +### Bug fixes + +* + +### Deprecations + +* + +### Docs + +* + +### Other + +* diff --git a/tests/requirements.txt b/tests/requirements.txt index e5baf6b..631a7b5 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,6 +1,6 @@ # conda-content-trust test dependencies # run as 'conda install -c defaults --file tests/requirements.txt' -cryptography <41.0.0 +cryptography>41.0.0 pytest pytest-cov # securesystemslib ==0.13.1 # not available on defaults or conda-forge diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 3b0ed84..f3b64e8 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -158,9 +158,11 @@ def test_wrap_sign_verify_signable(): assert PrivateKey.is_equivalent_to(generated_private, loaded_new_private) assert PublicKey.is_equivalent_to(generated_public, loaded_new_public) - assert PrivateKey.is_equivalent_to(loaded_new_private, PrivateKey.from_bytes(loaded_new_private_bytes)) - assert ( - PublicKey.is_equivalent_to(loaded_new_public, PublicKey.from_bytes(loaded_new_public_bytes)) + assert PrivateKey.is_equivalent_to( + loaded_new_private, PrivateKey.from_bytes(loaded_new_private_bytes) + ) + assert PublicKey.is_equivalent_to( + loaded_new_public, PublicKey.from_bytes(loaded_new_public_bytes) ) # Clean up a bit for the next tests. diff --git a/tests/test_metadata_construction.py b/tests/test_metadata_construction.py index 2710733..ed0023c 100644 --- a/tests/test_metadata_construction.py +++ b/tests/test_metadata_construction.py @@ -241,11 +241,11 @@ def test_gen_and_write_keys(): loaded_new_private, loaded_new_public = keyfiles_to_keys("keytest_new") assert PrivateKey.is_equivalent_to(generated_private, loaded_new_private) assert PublicKey.is_equivalent_to(generated_public, loaded_new_public) - assert ( - PrivateKey.is_equivalent_to(loaded_new_private, PrivateKey.from_bytes(loaded_new_private_bytes)) + assert PrivateKey.is_equivalent_to( + loaded_new_private, PrivateKey.from_bytes(loaded_new_private_bytes) ) - assert ( - PublicKey.is_equivalent_to(loaded_new_public, PublicKey.from_bytes(loaded_new_public_bytes)) + assert PublicKey.is_equivalent_to( + loaded_new_public, PublicKey.from_bytes(loaded_new_public_bytes) ) finally: