RFC6979 Appendix A.1. provides a "Detailed Example" which exercises several edge cases in the protocol: - `bits2int` for an input which is not byte-aligned - Rejecting inputs which exceed the modulus This commit adds what was missing from the previous implementation which assumed inputs were always aligned to the size of the digest output: a constant-time right shift by the number of bits by which the modulus is smaller than a byte-aligned value.
RustCrypto: Signatures

Support for digital signatures, which provide authentication of data using public-key cryptography.
All algorithms reside in the separate crates and implemented using traits from
the signature crate.
Crates are designed so they do not require the standard library (i.e. no_std)
and can be easily used for bare-metal or lightweight WebAssembly programming.
Crates
| Name | Algorithm | Crates.io | Documentation | Build |
|---|---|---|---|---|
dsa |
DSA | |||
ecdsa |
ECDSA | |||
ed25519 |
Ed25519 | |||
ed448 |
Ed448 | |||
rfc6979 |
RFC6979 |
NOTE: for RSA signatures see https://github.com/RustCrypto/RSA
Usage
Crates functionality is expressed in terms of traits defined in the signature
crate.
License
All crates licensed under either of
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.