Я был бы признателен за указатели, потому что я не могу решить, как расшифровать зашифрованный ключ, чтобы использовать его с golang ssh. Я пытаюсь смять два других источника кода (включая this), но не смог заставить это работать.Как использовать зашифрованный закрытый ключ с golang ssh
Я думаю, что я к DER, но нужно Маршаллу это обратно в PEM для того, чтобы использовать его с криптографической/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 к подписавшимся?
Или, что является лучшим способом решить эту проблему?
Awesome. Большое спасибо! – DazWilkin