package crypto import ( "crypto/x509" "gopkg.in/square/go-jose.v2" ) // GetPubJWK returns JWK for given keys func GetPubJWK(algo, keyID string, publicKey interface{}) (string, error) { jwk := &jose.JSONWebKeySet{ Keys: []jose.JSONWebKey{ { Algorithm: algo, Key: publicKey, Use: "sig", KeyID: keyID, Certificates: []*x509.Certificate{}, CertificateThumbprintSHA1: []uint8{}, CertificateThumbprintSHA256: []uint8{}, }, }, } jwkPublicKey, err := jwk.Keys[0].MarshalJSON() if err != nil { return "", err } return string(jwkPublicKey), nil }