6.3 KiB
6.3 KiB
Changelog
Unreleased
0.20.0
Breaking changes:
- Refactor and improve the variants of
JsonError:NotOfTypeandNotMultiplesOfTypewere merged into a singleInvalidTypevariant and provide more details about the invalid field.JsonFieldMissingFromObjectwas renamed toMissingFieldan provides the full path of the missing field.
- The methods on
Ed25519KeyPairuse a separate error enum namedEd25519KeyPairParseError.Error::DerParseis nowEd25519KeyPairParseError::Pkcs8.ParseError::DerivedPublicKeyDoesNotMatchParsedKeyis nowEd25519KeyPairParseError::PublicKeyMismatch.ParseError::Oidis nowEd25519KeyPairParseError::InvalidOid.ParseError::SecretKeyis nowEd25519KeyPairParseError::InvalidSecretKey.
- The error variants returned specifically when verifying an ed25519 signature
use a separate error enum named
Ed25519VerificationError, which is exposed asVerificationError::Ed25519.ParseError::PublicKeyis nowEd25519VerificationError::InvalidPublicKey.ParseError::Signatureis nowEd25519VerificationError::InvalidSignatureLength.VerificationError::Signatureis nowEd25519VerificationError::SignatureVerification.
Error::PduSizeis nowJsonError::PduTooLargeallowing the following functions to returnJsonErroras an error type:to_canonical_json_string_for_signing()reference_hash()content_hash()sign_json()hash_and_sign_event()
- The remaining variants of
ErrorandParseErrorwere merged intoVerificationError. This is now the error type returned by:verify_canonical_json_bytes()verify_event()verify_json()
- When verifying the signatures on a JSON object, signatures of keys that are
not in the key map are ignored rather than returning an error. The
VerificationError::PublicKeyNotFoundvariant was removed. Ed25519KeyPairwas moved under the newed25519module with its error types.Signature::new()takes anOwnedSigningKeyId<AnyKeyName>and aVec<u8>and is now infallible.canonical_json()was renamed toto_canonical_json_string_for_signing()to clarify that is is not to be used outside of the signing/verifying context.- Update
Ed25519KeyPair::generateto return bytes directly, not aResult- The previous implementation should have never returned an
Erranyways
- The previous implementation should have never returned an
Improvements:
- Get a better error message when verifying a signature with a public key that has the wrong length.
- Make
required_server_signatures_to_verify_event()public, for homeservers to get the list of servers whose public keys they need to provide toverify_event().
0.19.0
No changes for this version
0.18.0
Breaking changes:
Algorithmis replaced bySigningKeyAlgorithmfromruma-common.Signature::new()returns anIdParseError.Error::UnsupportedAlgorithmis removed since it is now unused.
- The
compat-signature-idcargo feature was removed. No validation is done on the key name of a key ID, to stop assuming that this crate is only used to check server signatures. - The variants of
VerificationErrorwere changed to be clearer, have more details about the error, and to support any type of entity. JsonError::JsonKeyMissingwas replaced byVerificationError::PublicKeyNotFoundreference_hashandverify_eventtakeRoomVersionRulesinstead ofRoomVersionId. This avoids undefined behavior for unknown room versions.hash_and_sign_eventtakeRedactionRulesinstead ofRoomVersionId. This avoids undefined behavior for unknown room versions.- The
ServerNameFromEventIdByRoomVersionvariant ofParseErrorwas renamed toServerNameFromEventId, and doesn't hold aRoomVersionIdanymore.
Improvements:
- Add
verify_canonical_json_bytes()as a low-level function to check the signature of canonical JSON bytes.
0.17.1
Bug fixes:
- Do not check the signature of the server of the sender of
m.room.memberinvite events with athird_party_invitefield.
0.17.0
Improvements:
- The
unstable-exhaustive-typescargo feature was replaced by theruma_unstable_exhaustive_typescompile-timecfgsetting. Like allcfgsettings, it can be enabled at compile-time with theRUSTFLAGSenvironment variable, or inside.cargo/config.toml. It can also be enabled by setting theRUMA_UNSTABLE_EXHAUSTIVE_TYPESenvironment variable.
0.16.0
Upgrade ruma-common to 0.14.0.
0.15.0
No changes for this version
0.14.0
Breaking changes:
- Update
ed25519-dalekcrateEd25519KeyPair::generate()returns aZeroizing<Vec<u8>>on successEd25519KeyPair::public_key()returns an array instead of a slice
Bug fixes:
- Ignore keys with unknown algorithms in
verify_events
Improvements:
- Remove
age_tsfromREFERENCE_HASH_FIELDS_TO_REMOVEaccording to a spec clarification
0.13.1
No changes for this version
0.13.0
No changes for this version
0.12.0
Breaking changes:
- Remove pointless
PartialEqimplementation forEd25519Verifier
0.11.0
Breaking changes:
- Upgrade dependencies
0.10.0
Breaking changes:
- Merge
SplitErrorintoError - Update some function signatures to use the new
Base64type
Improvements:
- Move Room Version 9 keys out of
unstable-pre-specinallowed_content_keys_for
0.9.0
Breaking changes:
- Change a few functions to return
Results- See each function's documentation for how it can fail
Bug fixes:
- Don't check stringified JSON size <= 65535 bytes for verify_json and sign_json since these functions may be used for things other than PDUs
0.8.0
Breaking changes:
- Replace
ringdependency withed25519-dalekandpkcs8 canonical_jsonandcontent_hashnow returnErrorwhen JSON is not canonical
0.7.2
Improvements:
-
Add a
compatfeatureWhen enabled, ruma-signatures will accept slightly malformed base64 input.
0.7.1
Improvements:
- Fix verify_json signature check algorithm
- Bump dependency versions
0.7.0
Breaking changes:
- Upgrade ruma-identifiers dependency to 0.19.0
0.6.0
Breaking changes:
- Remove
Copyimplementation forAlgorithm - Remove
CopyandCloneimplementations forEd25519Verifier - Upgrade ruma-identifiers
Bug fixes:
- Verify only the required signatures on
verify_event - Fix redactions for aliases events