使用 .pem 文件私钥在 Go 中使用 RSASSA-PSS 对字符串进行签名

Using a .pem file private key to sign a string with RSASSA-PSS in Go

我正在尝试设置 Amazon Pay,并按照他们的指南签署请求: https://amazonpaycheckoutintegrationguide.s3.amazonaws.com/amazon-pay-api-v2/signing-requests.html

我卡在了第 3 步。我有一个来自 Amazon 的包含私钥的 .pem 文件。看起来像:

-----BEGIN PRIVATE KEY-----
M...
-----END PRIVATE KEY-----

我应该对我之前使用 RSASSA-PSS 算法创建的字符串进行签名,该算法具有 SHA256 哈希和 20 的盐长度。我看到 Go 有一个函数可以这样做 (https://golang.org/pkg/crypto/rsa/#SignPSS),但我不确定如何获取我的 .pem 文件私钥并在此函数中使用它。看起来它想要一个 *rsa.PrivateKey...

我已经试过了...

var privateKeyString = `-----BEGIN PRIVATE KEY-----...`
decoded, _ := pem.Decode([]byte(privateKeyString))
parsed, _ := x509.ParsePKCS8PrivateKey(decoded.Bytes)
privateKey := parsed.(*rsa.PrivateKey)

但是 pem.Decode 返回 nil。我也试过:

parsed, _ := x509.ParsePKCS8PrivateKey([]byte(privateKeyString))

但是这个 returns 也没有。我对加密类型的东西一点都不熟悉,所以如果有人能提供一些指导,我将不胜感激!

解码返回 nil,因为反引号中的私钥字符串是自动缩进的!删除所有缩进修复了问题。