30 lines
693 B
Go
30 lines
693 B
Go
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
|
|
}
|