@@ -35,39 +35,40 @@ func init() {
3535
3636var keyLock sync.Mutex
3737
38- func MakeHostKey () (string , error ) {
38+ func generatePrivateKey () (* ecdsa. PrivateKey , string , error ) {
3939 privateKey , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
4040 if err != nil {
41- return "" , err
41+ return nil , "" , err
4242 }
4343
4444 // generate and write private key as PEM
45- var privKeyBuf strings.Builder
46- privateKeyPEM , err := pemBlock (privateKey )
45+ var privateKeyBuf strings.Builder
46+ b , err := x509 . MarshalPKCS8PrivateKey (privateKey )
4747 if err != nil {
48- return "" , err
48+ return nil , "" , err
4949 }
50-
51- if err := pem .Encode (& privKeyBuf , privateKeyPEM ); err != nil {
52- return "" , err
50+ privateKeyPEM := & pem.Block {
51+ Type : "PRIVATE KEY" ,
52+ Bytes : b ,
53+ }
54+ if err := pem .Encode (& privateKeyBuf , privateKeyPEM ); err != nil {
55+ return nil , "" , err
5356 }
5457
55- return privKeyBuf .String (), nil
58+ return privateKey , privateKeyBuf .String (), nil
5659}
5760
58- func MakeSSHKeyPair () (string , string , error ) {
59- privateKey , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
60- if err != nil {
61- return "" , "" , err
62- }
63- // generate and write private key as PEM
64- var privKeyBuf strings.Builder
65- privateKeyPEM , err := pemBlock (privateKey )
61+ func MakeHostKey () (string , error ) {
62+ _ , privKeyStr , err := generatePrivateKey ()
6663 if err != nil {
67- return "" , "" , err
64+ return "" , err
6865 }
66+ return privKeyStr , nil
67+ }
6968
70- if err := pem .Encode (& privKeyBuf , privateKeyPEM ); err != nil {
69+ func MakeSSHKeyPair () (string , string , error ) {
70+ privateKey , privKeyStr , err := generatePrivateKey ()
71+ if err != nil {
7172 return "" , "" , err
7273 }
7374
@@ -79,7 +80,7 @@ func MakeSSHKeyPair() (string, string, error) {
7980
8081 var pubKeyBuf strings.Builder
8182 pubKeyBuf .Write (ssh .MarshalAuthorizedKey (pub ))
82- return pubKeyBuf .String (), privKeyBuf . String () , nil
83+ return pubKeyBuf .String (), privKeyStr , nil
8384}
8485
8586func getHostKey () (string , error ) {
@@ -156,14 +157,3 @@ func getPublicKey() (string, error) {
156157
157158 return base64 .StdEncoding .EncodeToString (out ), nil
158159}
159-
160- func pemBlock (privateKey * ecdsa.PrivateKey ) (* pem.Block , error ) {
161- if b , err := x509 .MarshalPKCS8PrivateKey (privateKey ); err == nil {
162- return & pem.Block {
163- Type : "PRIVATE KEY" ,
164- Bytes : b ,
165- }, nil
166- } else {
167- return nil , err
168- }
169- }
0 commit comments