我正在尝试使用这个库生成一个pem字符串:
“github.com/lestrrat go/jwx/jwk”
但到目前为止我不能,我猜这是因为我是新来的,有些事情我不明白。我已经阅读了这里找到的文档:doc
我的代码从服务器获取一个JWK,一旦有了它,我尝试在下面生成一个pem字符串:
// validationCrt contains my []byte from the server
set, err := jwk.Parse(validationCrt)
if err != nil {
println(err)
}
// I suspect this piece of code is actually a mess
// but I just can't understand what I'm doing wrong
key, err := jwk.GetPublicKey(set)
if err != nil {
log.Printf("failed to create public key: %s", err)
}我真的很迷惑,我尝试了很多方法(使用和不使用这个库),似乎找不到任何例子(他们通常解释如何生成密钥,或者从pem转到jwt,但我的go应用程序它是一个客户端)。
任何帮助都将不胜感激
发布于 2019-06-14 23:00:08
授权服务器通常提供一个端点来获取JSON Web密钥集(JWKS)。所以我认为validationCrt确实应该是一个JSON Web键集。但是,您可以通过json.Unmarshal()访问JWK/JWKS (square/go-jose),通过.Key获取公钥的引用。
使用PEM格式非常简单,如下所示
...
pubData, err := x509.MarshalPKIXPublicKey(pubKey)
if err != nil {
return err
}
if err := pem.Encode(os.Stdout, &pem.Block{
Type: "PUBLIC KEY",
Bytes: pubData,
}); err != nil {
return err
}
...https://stackoverflow.com/questions/55586188
复制相似问题