Search code examples
gojwtamazon-kms

Creating JWT signing method for AWS key in Go


I generated an ECC_NIST_P521 spec key, which uses the ECDSA_SHA_512 signing algorithm. I'm trying to create a jwt.SigningMethod with this in mind, but I'm not sure which values to use for the fields. This is what I have so far:

signingMethod := jwt.SigningMethodECDSA {
    Name: "ECC_NIST_P521",
    Hash: crypto.SHA512,
}

Specifically, I'm not sure if the name is correct and I don't know what to use for the KeySize and CurveBits fields. Any help would be appreciated.


Solution

  • You need to specify Hash, CurveBits and KeySize. The value of Name is ignored:

    signingMethod := jwt.SigningMethodECDSA{
            Name:      "ECC_NIST_P521",
            Hash:      crypto.SHA512,
            CurveBits: 521,
            KeySize:   66,
        }
    

    521 bits - the size of curve field.

    66 - number of bytes that fit a compact representation of a point on the curve.

    Full example to sign and verify signature: https://go.dev/play/p/bEnLN2PJv4a