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
AsRef
andFrom
impls forbindings_wasm::RecoverableSignature
- necessary for the bindings innucypher-core
. (#120)
0.9.0 - 2023-02-17
- Bumped MSRV to 1.60. (#117)
- Bumped
k256
to 0.12 and PyO3 to0.18
. (#117) - Renamed
serde-support
feature toserde
to match the conventional style. (#118) serde
implementation forSignature
now uses fixed-size (r,s) serialization instead of DER. (#119)
- Added
ReencryptionEvidence
structure that can be used in e.g. Ethereum contracts to verify the reencryption validity (see its docstring for the list of checks). (#107) - Made
Parameters
andCurvePoint
public (necessary for the evidence to work). MadeParameters::u
public, and added a publicCurvePoint::coordinates()
method. (#107) - Made
hash_to_cfrag_verification()
public. (#107) - Added
VerifiedCapsuleFrag::to_bytes_simple()
. (#107) - Added
RecoverableSignature
type 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
HasTypeName
trait. (#110) - Removed
DeserializableFromArray
,RepresentableAsArray
,SerializableToArray
,SerializableToSecretArray
.Caspule
,(Verified)CapsuleFrag
,(Verified)KeyFrag
are now serialized viaserde
. (#110) - Removed
VerifiedCapsuleFrag::from_verified_bytes()
andVerifiedKeyFrag::from_verified_bytes()
. For this behavior, deserialize intoCapsuleFrag
orKeyFrag
and callskip_verification()
. (#110) Capsule
no longer implementsCopy
. (#110)- Removed default serialization methods for
PublicKey
andSignature
in the bindings; useto_compressed_bytes()
/to_der_bytes()
instead. (#110) - Bumped
rmp-serde
to 1,base64
to 0.21, andpyo3
to 0.17. (#114)
DefaultSerialize
/DefaultDeserialize
for Umbral objects (Caspule
,(Verified)CapsuleFrag
,(Verified)KeyFrag
) which uses MessagePack viaserde
(gated bydefault-serialization
feature). This is what the serialization methods in the bindings use. (#110)to_compressed_bytes()
/try_from_compressed_bytes()
forPublicKey
to 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()
forSignature
to 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 backend
with derivedAsRef
/From
/Into
where appropriate. (#103) - Using a workaround with
wasm-bindgen-derive
to 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
serde
usage in WASM bindings. (#103) encrypt()
now returns an actual tuple in WASM bindings instead of a special object. (#103)
Eq
markers for the types that only hadPartialEq
before. (#100)
- Added missing parameters to
from_bytes()
methods in Python type stubs. (#101) - Fixed the type annotation for
signer
ingenerate_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 a0x
prefix. (#94) - Bumped
k256
to 0.11,sha2
to 0.10,hkdf
to 0.12,chacha20poly1305
to 0.10, andzeroize
to 1.5 (and MSRV to 1.57), so that we could use the newZeroizeOnDrop
functionality. In particular,SecretBox
,SecretKey
,Signer
, andDEM
now implementZeroizeOnDrop
. (#97) - Removed
CanBeZeroizedOnDrop
trait, sinceGenericArray
now supportsZeroize
natively. (#97) - Bumped
pyo3
to 0.16. (#97)
serde
utility functions to serialize bytestrings as bytes or hex/base64 encoded strings, depending on the target format. Exposed asserde_bytes
module. (#94)
- Fixed some typos and added missing
__bytes__()
methods to Python typing stubs. (#99)
0.5.2 - 2022-03-15
k256
bumped to 0.10.4 to make use of an important bugfix (see RustCrypto/elliptic-curves#529). Previous 0.5.* versions (usingk256
0.10.2 with the bug) are yanked.
0.5.1 - 2022-01-22 (YANKED)
- WASM bindings are exposed as a feature
bindings-wasm
in 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)
k256
dependency bumped to 0.10 (and to match it,chacha20poly1305
to 0.9,elliptic-curve
to 0.11,ecdsa
to 0.13,signature
to 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::ZeroHash
andSecretKeyFactoryError
have 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
k256
to 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
serde
support for types is now gated under theserde-support
feature (not enabled by default). (#82)
- Python bindings are exposed as a feature
bindings-python
in 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
SecretKey
andSecretKeyFactory
no longer implementSerializableToArray
, but implementSerializableToSecretArray
instead. Correspondingly, in the bindings these objects implementto_secret_bytes()
instead of__bytes__()
(for Python), andtoSecretBytes()
instead oftoBytes()
(for WASM). (#53)SecretKey
,SecretKeyFactory
andSigner
do not implementPartialEq
anymore. Corresponding methods in the bindings were removed as well. (#53)- Bumped
k256
to0.9
andecdsa
to0.12.2
. (#53) - Bumped
pyo3
to0.14
. (#65) - Reduced the size of key material in
SecretKeyFactory
from 64 to 32 bytes. (#64) - Renamed
num_kfrags
toshares
ingenereate_kfrags
. (#69) - Renamed
SecretKeyFactory::secret_key_by_label()
/secret_factory_by_label()
tomake_key()
/make_factory()
. (#71) - Renamed remaining instances of
verifying_key
parameter 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)
SecretBox
struct, 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-internals
to 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) serde
support forCapsule
,CapsuleFrag
,KeyFrag
,PublicKey
, andSignature
. (#67)
- Turned off
wasm-bindgen
feature ofgetrandom
crate. (#56) - Multiple internal changes for safe secret data handling using
SecretBox
. (#53)
0.2.0 - 2021-06-14
- Initial release.