Tôi sẽ đánh giá cao con trỏ vì tôi không thể tìm ra cách giải mã khóa được mã hóa để sử dụng khóa đó với golang ssh. Tôi đang cố gắng để trộn lẫn với nhau hai nguồn khác của mã (bao gồm cả this một) nhưng không thể có được điều này để làm việc.Cách sử dụng khóa riêng được mã hóa với golang ssh
Tôi nghĩ rằng tôi nhận được đến một DER nhưng cần phải marshall trở lại này để PEM để sử dụng nó với crypto/ssh
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,D7C72273BE168626E5B2D1BC72E56326
...
-----END RSA PRIVATE KEY-----
Tôi đọc nó:
key, err := ioutil.ReadFile(privateKey)
if err != nil {
log.Fatalf("Unable to read private key: %v", err)
}
Với một khóa không được mã hóa (!), tôi có thể:
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),
},
}
Và điều này sẽ hiệu quả.
tôi tái sử dụng một số mã mà tôi nghĩ được tôi PEM giải mã như một 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
}
Nhưng, làm thế nào để tôi nhận được từ các DER để một người ký?
Hoặc cách tốt nhất để giải quyết vấn đề này là gì?
Tuyệt vời. Cảm ơn nhiều! – DazWilkin