oauth2.dev

secp256k1

IESG

Registry Context

The JWK `crv` value identifying the secp256k1 elliptic curve.

Technical Summary

A secp256k1 JWK uses `kty` value `EC`, `crv` value `secp256k1`, and the uncompressed elliptic-curve point representation defined by RFC 7518.

When Used

When representing a secp256k1 elliptic-curve key as a JSON Web Key.

Normative Requirements

JWK producer

MUST
2
  1. RFC 8812 - Section 3.1

    Use the uncompressed point encoding defined by RFC 7518..

    Condition: When representing a secp256k1 key as a JWK.

    The uncompressed point encoding MUST be used.

  2. RFC 8812 - Section 3.1

    Represent both `x` and `y` as exactly 256 bits, preserving leading zeros..

    Condition: When representing a secp256k1 key as a JWK.

    The `x` and `y` values MUST both be exactly 256 bits.

MAY
1
  1. RFC 8812 - Section 3.1

    Include other optional JWK members, such as `alg`..

    Condition: When representing a secp256k1 key as a JWK.

    Other optional values MAY also be present.

Validation Guidance

error

Verify that `kty` is `EC` and `crv` is exactly `secp256k1`.

error

Reject compressed point encodings for secp256k1 JWKs.

error

Verify that both `x` and `y` decode to exactly 256-bit values, including preserved leading zeros.

info

Allow optional JWK members such as `alg`.

Security Notes

RFC 8812 - Section 5.4

Do not confuse secp256k1 keys with P-256 keys; their JWK representations differ principally in the `crv` value.

RFC 8812 - Section 5.4

Scalar multiplication should execute in constant time to mitigate timing side-channel attacks.

RFC 8812 - Section 5.4

The curve has theoretical weaknesses that led to its registration as not recommended.

Reference

Details

Entry Id
secp256k1
Curve Name
secp256k1
Curve Description
SECG secp256k1 curve
Jose Implementation Requirements
Optional
Change Controller
IESG
Reference
RFC8812 - Section 3.1