我很感激指针,因为我无法解决如何解密加密密钥以便与golang ssh一起使用它.我正在尝试将两个其他代码源(包括
this个)混合在一起但无法使其工作.
我想我正在使用DER,但需要将其编组回PEM以便将其与crypto / ssh一起使用
-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,D7C72273BE168626E5B2D1BC72E56326 ... -----END RSA PRIVATE KEY-----
我读了它:
key,err := IoUtil.ReadFile(privateKey) if err != nil { log.Fatalf("Unable to read private key: %v",err) }
使用未加密的(!)键,我可以:
signer,err := ssh.ParsePrivateKey(key) if err != nil { log.Fatalf("Unable to parse private key: %v",err) } config := &ssh.ClientConfig{ User: username,Auth: []ssh.AuthMethod{ ssh.PublicKeys(signer),},}
这会奏效.
我重用了一些代码,我认为解密后的PEM作为DER:
func decrypt(key []byte,password []byte) []byte { block,rest := pem.Decode(key) if len(rest) > 0 { log.Fatalf("Extra data included in key") } der,err := x509.DecryptPEMBlock(block,password) if err != nil { log.Fatalf("Decrypt Failed: %v",err) } return der }
但是,我如何从DER到签名者?
如果您有带RSA私钥的DER块,则使用x509.ParsePKCS1PrivateKey来解析密钥,使用ssh.NewSignerFromKey来获取ssh.Signer
key,err := x509.ParsePKCS1PrivateKey(der) if err != nil { log.Fatal(err) } signer := ssh.NewSignerFromKey(key)
原文地址:https://www.jb51.cc/go/186937.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。