我正在尝试创建 JWE 解密函数,但无法确定如何使用 Go Jose 接口来执行此操作。我已经使用密码进行了加密(对于此用例,我更喜欢使用密码):
token := jwt.NewWithClaims(
jwt.SigningMethodHS256,
claims,
)
ss, err := token.SignedString("thisisatestpassphraserighthere")
if err != nil {
panic("COULD_NOT_GENERATE")
return
}
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
panic(err)
}
publicKey := &privateKey.PublicKey
encrypter, err := jose.NewEncrypter(
jose.A128CBC_HS256,
jose.Recipient{Algorithm: jose.RSA_OAEP, Key: publicKey},
nil,
)
if err != nil {
return
}
object, err := encrypter.Encrypt([]byte(ss))
if err != nil {
errRes = s.Error(codes.Internal, err, nil)
return
}
key, err := object.CompactSerialize()
if err != nil {
errRes = s.Error(codes.Internal, err, nil)
return
}
fmt.Println(key)
上面的代码创建一个 JWT,对其进行编码,压缩并返回密钥。然而,现在还不完全清楚如何使用密码对其进行解密。
Jose 文档上有一个 JWE 示例:https://godoc.org/gopkg.in/square/go-jose.v2#example-Encrypter--Encrypt
所以我考虑了这一点:
object, err = jose.ParseEncrypted(Key)
if err != nil {
panic(err)
}
decrypted, err := object.Decrypt(...)
但我不知道在省略号内该放什么。我似乎无法确定如何根据密码传递密钥。
摇曳的蔷薇
幕布斯7119047
相关分类