-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[API Proposal]: NamedCurves should support Curve25519 and Curve448 #81433
Comments
Tagging subscribers to this area: @dotnet/area-system-security, @vcsjones Issue DetailsBackground and motivation
See also: https://en.wikipedia.org/wiki/Curve448 see also: https://en.wikipedia.org/wiki/Comparison_of_TLS_implementations#Supported_elliptic_curves API Proposalnamespace System.Security.Cryptography
{
public struct ECCurve
{
public static class NamedCurves
{
public static ECCurve Curve25519 { get; }
public static ECCurve Curve448 { get; }
}
}
} API UsageN/A Alternative DesignsNo response RisksShould be no risk.
|
Putting Ed25519 and Ed448 on
We don't have specific issue for Edwards448 but it usually comes up wherever we discuss Edwards25519. |
|
|
To my recollection, and reinforced by a few minutes' research, the neither of the /curves/ for Curve25519 or Curve448 have registered Object Identifiers (OIDs). (ed25519/ed448 and X25519/x448 as algorithm identifiers exist, but I can't find OIDs for those curves for using as the identifier for an id-ecdh SPKI/PKCS#8) In addition to needing to solve the problem of what key export looks like (do we change from id-ecdh to id-x25519 just because the curve was Curve25519?), we'd need to solve the problem of how we communicate this curve back and forth to OpenSSL (when on Linux). So, while I agree that the shape of the API is about as good as it would get... it can't currently be meaningfully implemented for our platform. |
RFC 8410 defines them as: id-X25519 OBJECT IDENTIFIER ::= { 1 3 101 110 } |
Yeah, those aren't curve identifiers, they're algorithm identifiers. The sample certificate:
has tbsCertificate.subjectPublicKeyInfo.algorithm value of SEQUENCE(
OID:id-X25519
) instead of SEQUENCE(
OID:id-ecPublicKey,
OID:[some oid to identify the curve]
) (or id-ecdh instead of id-ecPublicKey) If OpenSSL will fetch the curve by 1.3.101.110 (translated to an OSSL-NID), then I guess we could use it... but why would we pick 110 over 112 for the same thing there (assuming they both work)? The other major alternative would be to take the Windows approach and call it |
FYI Nist finally published ed25519 and 448 as part of the fips 186-5 standard. |
Background and motivation
NamedCurves
currently support onlynist
andbrainpool
family, I believeCurve25519
andCurve448
should also be supported.See also: https://en.wikipedia.org/wiki/Curve448
"In 2017, NIST announced that Curve25519 and Curve448 would be added to "Special Publication 800-186", which specifies approved elliptic curves for use by the US Federal Government"
see also: https://en.wikipedia.org/wiki/Comparison_of_TLS_implementations#Supported_elliptic_curves
API Proposal
API Usage
N/A
Alternative Designs
No response
Risks
Should be no risk.
The text was updated successfully, but these errors were encountered: