Skip to content

ecdsa: remove OutputSize bounds on DigestPrimitive#774

Merged
tarcieri merged 1 commit intomasterfrom
ecdsa/remove-output-size-bounds-on-digest
Jan 16, 2024
Merged

ecdsa: remove OutputSize bounds on DigestPrimitive#774
tarcieri merged 1 commit intomasterfrom
ecdsa/remove-output-size-bounds-on-digest

Conversation

@tarcieri
Copy link
Copy Markdown
Member

Notably for curves like P-521, the digest used to compute the signature is smaller than a serialized field element (SHA-512 w\ 64-byte output vs 66-byte serialized field elements).

To support such curves, we need to remove this bound.

The already implemented bits2field function as defined in RFC6979 § 2.3.2 and SEC1 § 2.3.8 handles producing a serialized field element from an input which may be a different size.

Notably for curves like P-521, the digest used to compute the signature
is smaller than a serialized field element (SHA-512 w\ 64-byte output vs
66-byte serialized field elements).

To support such curves, we need to remove this bound.

The already implemented `bits2field` function as defined in
RFC6979 § 2.3.2 and SEC1 § 2.3.8 handles producing a serialized field
element from an input which may be a different size.
@tarcieri tarcieri force-pushed the ecdsa/remove-output-size-bounds-on-digest branch from 15164a7 to f6d720f Compare January 16, 2024 21:02
@tarcieri tarcieri merged commit 8e12e1c into master Jan 16, 2024
@tarcieri tarcieri deleted the ecdsa/remove-output-size-bounds-on-digest branch January 16, 2024 21:06
tarcieri added a commit to RustCrypto/elliptic-curves that referenced this pull request Jan 16, 2024
Now that RustCrypto/signatures#773 and RustCrypto/signatures#774 have
landed it should be possible to use the upstream RFC6979 implementation
from the `ecdsa` crate in conjunction with `p521`, which uses a Digest
with a 64-byte output, but uses 66-byte field elements.

However, we're currently failing to match RFC6979 test vectors.
tarcieri added a commit to RustCrypto/elliptic-curves that referenced this pull request Jan 16, 2024
Now that RustCrypto/signatures#773 and RustCrypto/signatures#774 have
landed it should be possible to use the upstream RFC6979 implementation
from the `ecdsa` crate in conjunction with `p521`, which uses a Digest
with a 64-byte output, but uses 66-byte field elements.

However, we're currently failing to match RFC6979 test vectors.
tarcieri added a commit to RustCrypto/elliptic-curves that referenced this pull request Jan 17, 2024
Now that RustCrypto/signatures#773 and RustCrypto/signatures#774 have
landed it should be possible to use the upstream RFC6979 implementation
from the `ecdsa` crate in conjunction with `p521`, which uses a Digest
with a 64-byte output, but uses 66-byte field elements.
tarcieri added a commit to RustCrypto/elliptic-curves that referenced this pull request Jan 17, 2024
Now that RustCrypto/signatures#773 and RustCrypto/signatures#774 have
landed it should be possible to use the upstream RFC6979 implementation
from the `ecdsa` crate in conjunction with `p521`, which uses a Digest
with a 64-byte output, but uses 66-byte field elements.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant