首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在go中从jwk生成pem

如何在go中从jwk生成pem
EN

Stack Overflow用户
提问于 2019-04-09 14:14:35
回答 1查看 2.4K关注 0票数 0

我正在尝试使用这个库生成一个pem字符串:

“github.com/lestrrat go/jwx/jwk”

但到目前为止我不能,我猜这是因为我是新来的,有些事情我不明白。我已经阅读了这里找到的文档:doc

我的代码从服务器获取一个JWK,一旦有了它,我尝试在下面生成一个pem字符串:

代码语言:javascript
复制
// 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应用程序它是一个客户端)。

任何帮助都将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2019-06-14 23:00:08

授权服务器通常提供一个端点来获取JSON Web密钥集(JWKS)。所以我认为validationCrt确实应该是一个JSON Web键集。但是,您可以通过json.Unmarshal()访问JWK/JWKS (square/go-jose),通过.Key获取公钥的引用。

使用PEM格式非常简单,如下所示

代码语言:javascript
复制
...
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
}
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55586188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档