Skip to content

Commit 1d1f008

Browse files
authored
Add UnmarshalHostPrivateKey helper function (#18)
1 parent 9f2241d commit 1d1f008

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

keys/pem.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,34 @@ func UnmarshalHostP256PrivateKey(b []byte) (*ecdsa.PrivateKey, []byte, error) {
129129
return pkey, r, nil
130130
}
131131

132+
func UnmarshalHostPrivateKey(b []byte) (PrivateKey, []byte, error) {
133+
k, r := pem.Decode(b)
134+
if k == nil {
135+
return nil, r, fmt.Errorf("input did not contain a valid PEM encoded block")
136+
}
137+
138+
switch k.Type {
139+
case HostP256PrivateKeyBanner:
140+
pkey, r, err := UnmarshalHostP256PrivateKey(b)
141+
if err != nil {
142+
return nil, r, err
143+
}
144+
pk, err := NewPrivateKey(pkey)
145+
return pk, r, err
146+
147+
case HostEd25519PrivateKeyBanner:
148+
pkey, r, err := UnmarshalHostEd25519PrivateKey(b)
149+
if err != nil {
150+
return nil, r, err
151+
}
152+
pk, err := NewPrivateKey(pkey)
153+
return pk, r, err
154+
155+
default:
156+
return nil, r, fmt.Errorf("input did not contain a valid private key banner")
157+
}
158+
}
159+
132160
func UnmarshalTrustedKey(b []byte) (TrustedKey, []byte, error) {
133161
k, r := pem.Decode(b)
134162
if k == nil {

0 commit comments

Comments
 (0)