The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
SecretKey::try_from_be_bytes()takes just a slice reference instead of aSecretBox. (#134)- Bumped MSRV to 1.70. (#134)
0.11.0 - 2023-08-01
0.10.0 - 2023-05-29
0.9.2 - 2023-02-18
- Fixed the type signature for
RecoverableSignature.from_be_bytes()in Python bindings. (#121)
0.9.1 - 2023-02-17
- Added
AsRefandFromimpls forbindings_wasm::RecoverableSignature- necessary for the bindings innucypher-core. (#120)
0.9.0 - 2023-02-17
- Bumped MSRV to 1.60. (#117)
- Bumped
k256to 0.12 and PyO3 to0.18. (#117) - Renamed
serde-supportfeature toserdeto match the conventional style. (#118) serdeimplementation forSignaturenow uses fixed-size (r,s) serialization instead of DER. (#119)
- Added
ReencryptionEvidencestructure that can be used in e.g. Ethereum contracts to verify the reencryption validity (see its docstring for the list of checks). (#107) - Made
ParametersandCurvePointpublic (necessary for the evidence to work). MadeParameters::upublic, and added a publicCurvePoint::coordinates()method. (#107) - Made
hash_to_cfrag_verification()public. (#107) - Added
VerifiedCapsuleFrag::to_bytes_simple(). (#107) - Added
RecoverableSignaturetype with limited functionality. (#117) - Added
Signature::try_from_be_bytes(). (#117) - Added
PublicKey::recover_from_prehash(). (#117)
0.8.1 - 2023-01-17
- Added
Signature::to_be_bytes(),Capsule::to_bytes_simple(), andCapsuleFrag::to_bytes_simple()to use in Ethereum contracts. (#115)
- Added the missing
VerifiedCapsuleFrag::unverify()method in WASM bindings. (#115) - Added the missing
Signature::to_der_bytes()andfrom_der_bytes()that were missing in the Rust library but present in the bindings. (#115)
0.8.0 - 2023-01-15
- Removed
HasTypeNametrait. (#110) - Removed
DeserializableFromArray,RepresentableAsArray,SerializableToArray,SerializableToSecretArray.Caspule,(Verified)CapsuleFrag,(Verified)KeyFragare now serialized viaserde. (#110) - Removed
VerifiedCapsuleFrag::from_verified_bytes()andVerifiedKeyFrag::from_verified_bytes(). For this behavior, deserialize intoCapsuleFragorKeyFragand callskip_verification(). (#110) Capsuleno longer implementsCopy. (#110)- Removed default serialization methods for
PublicKeyandSignaturein the bindings; useto_compressed_bytes()/to_der_bytes()instead. (#110) - Bumped
rmp-serdeto 1,base64to 0.21, andpyo3to 0.17. (#114)
DefaultSerialize/DefaultDeserializefor Umbral objects (Caspule,(Verified)CapsuleFrag,(Verified)KeyFrag) which uses MessagePack viaserde(gated bydefault-serializationfeature). This is what the serialization methods in the bindings use. (#110)to_compressed_bytes()/try_from_compressed_bytes()forPublicKeyto give access to non-serde representation (just 33 bytes). These are exposed in the bindings in lieu of the "default" methods (e.g.__bytes__()ortoBytes()). (#110)to_der_bytes()/try_from_der_bytes()forSignatureto give access to non-serde representation. These are exposed in the bindings in lieu of the "default" methods (e.g.__bytes__()ortoBytes()). (#110)SecretKeyFactory::make_secret()to provide a more straightforward replacement ofSecretKeyFactory::make_secret_key()->SecretKey::to_secret_bytes(). (#110)- Added
SecretKey::to_be_bytes()andtry_from_be_bytes(). (#112)
- A typo in the error message that could be returned from
CapsuleFrag.verify()- it erroneously mentionedKeyFrag. (#105)
0.7.0 - 2022-09-30
- Replaced
AsBackend/FromBackend,.inner(),.new(), andpub backendwith derivedAsRef/From/Intowhere appropriate. (#103) - Using a workaround with
wasm-bindgen-deriveto supportOption<&T>and&Vec<T>arguments, andVec<T>return values in WASM bindings. Generating correct TypeScript signatures in all the relevant cases. Affected API:Capsule.decryptReencrypted(),KeyFrag.verify(),generate_kfrags(). (#103) - Removed
serdeusage in WASM bindings. (#103) encrypt()now returns an actual tuple in WASM bindings instead of a special object. (#103)
Eqmarkers for the types that only hadPartialEqbefore. (#100)
- Added missing parameters to
from_bytes()methods in Python type stubs. (#101) - Fixed the type annotation for
signeringenerate_kfrags()in Python type stubs. (#102)
0.6.0 - 2022-08-15
- When serialized to a human-readable format using
serde, hex-encoded objects now have a0xprefix. (#94) - Bumped
k256to 0.11,sha2to 0.10,hkdfto 0.12,chacha20poly1305to 0.10, andzeroizeto 1.5 (and MSRV to 1.57), so that we could use the newZeroizeOnDropfunctionality. In particular,SecretBox,SecretKey,Signer, andDEMnow implementZeroizeOnDrop. (#97) - Removed
CanBeZeroizedOnDroptrait, sinceGenericArraynow supportsZeroizenatively. (#97) - Bumped
pyo3to 0.16. (#97)
serdeutility functions to serialize bytestrings as bytes or hex/base64 encoded strings, depending on the target format. Exposed asserde_bytesmodule. (#94)
- Fixed some typos and added missing
__bytes__()methods to Python typing stubs. (#99)
0.5.2 - 2022-03-15
k256bumped to 0.10.4 to make use of an important bugfix (see RustCrypto/elliptic-curves#529). Previous 0.5.* versions (usingk2560.10.2 with the bug) are yanked.
0.5.1 - 2022-01-22 (YANKED)
- WASM bindings are exposed as a feature
bindings-wasmin the main crate, to allow dependent crates to create their own WASM bindings and re-export some WASM-wrapped Umbral types. (#78)
0.5.0 - 2022-01-19 (YANKED)
k256dependency bumped to 0.10 (and to match it,chacha20poly1305to 0.9,elliptic-curveto 0.11,ecdsato 0.13,signatureto 1.4, MSRV to 1.56, and Rust edition to 2021). (#87)- ABI changed because of the internal change in hashing to scalars (we can hash to non-zero scalars now). Correspondingly,
OpenReencryptedError::ZeroHashandSecretKeyFactoryErrorhave been removed, andSecretKeyFactory::make_key()was made infallible. (#87) - Internal cloning in the library methods was eliminated, and, as a result, several methods now consume the given objects. Namely:
Signer::new()consumes the givenSecretKey,KeyFrag::verify()andCapsuleFrag::verify()consume the given kfrag/cfrag,reencrypt()consumes the cfrag (but not the capsule). (#91) - As a consequence,
KeyFrag::verify()andCapsuleFrag::verify()return the original frag on error (as a tuple with the error itself), for logging purposes (since the original object is not available anymore). (#91) VerifiedKeyFrag::to_unverified()andVerifiedCapsuleFrag::to_unverified()were renamed tounverify()and consume the corresponding frag. (#91)- Using the IETF standard to hash to point instead of a custom implementation (and bumps
k256to 0.10.2). Changes the format of all the library's objects! (#92)
- Some previously missed potentially secret values are zeroized in drop. (#87)
0.4.0 - 2021-12-24
serdesupport for types is now gated under theserde-supportfeature (not enabled by default). (#82)
- Python bindings are exposed as a feature
bindings-pythonin the main crate, to allow dependent crates to create their own Python bindings and re-export some Python-wrapped Umbral types. (#74) KeyFrag::skip_verification(),VerifiedKeyFrag::to_unverified(),CapsuleFrag::skip_verification(),VerifiedCapsuleFrag::to_unverified(), and the corresponding methods in Python and WASM bindings. (#84)
- Make the source distribution of Python bindings actually usable, by removing a dependency on a workspace directory. (#86)
0.3.3 - 2021-12-10
- Github actions configured for automatic build and push of Python wheels.
- Fixed Python example
- Improved/updated documentation
0.3.0 - 2021-09-15
SecretKeyandSecretKeyFactoryno longer implementSerializableToArray, but implementSerializableToSecretArrayinstead. Correspondingly, in the bindings these objects implementto_secret_bytes()instead of__bytes__()(for Python), andtoSecretBytes()instead oftoBytes()(for WASM). (#53)SecretKey,SecretKeyFactoryandSignerdo not implementPartialEqanymore. Corresponding methods in the bindings were removed as well. (#53)- Bumped
k256to0.9andecdsato0.12.2. (#53) - Bumped
pyo3to0.14. (#65) - Reduced the size of key material in
SecretKeyFactoryfrom 64 to 32 bytes. (#64) - Renamed
num_kfragstosharesingenereate_kfrags. (#69) - Renamed
SecretKeyFactory::secret_key_by_label()/secret_factory_by_label()tomake_key()/make_factory(). (#71) - Renamed remaining instances of
verifying_keyparameter toverifying_pk. (#71)
- Added separate entry points for Webpack and Node.JS in the WASM bindings, and added examples for both of these scenarios. (#60)
SecretBoxstruct, a wrapper making operations with secret data explicit and ensuring zeroization on drop. (#53)- Feature
default-rng(enabled by default). When disabled, the library can be compiled on targets not supported bygetrandom(e.g., ARM), but only the functions taking an explicit RNG as a parameter will be available. (#55) - Added benchmarks for the main usage scenario and a feature
bench-internalsto expose some internals for benchmarking. (#54) - Added
VerifiedCapsuleFrag::from_verified_bytes(). (#63) - Added
SecretKeyFactory::secret_key_factory_by_label(). (#64) - Added
SecretKeyFactory::from_secure_randomness()andseed_size(). (#64) serdesupport forCapsule,CapsuleFrag,KeyFrag,PublicKey, andSignature. (#67)
- Turned off
wasm-bindgenfeature ofgetrandomcrate. (#56) - Multiple internal changes for safe secret data handling using
SecretBox. (#53)
0.2.0 - 2021-06-14
- Initial release.