Add LoadPrivateKey(s) functions
This commit is contained in:
parent
10fa7919b0
commit
249b99f46f
41
keys.go
41
keys.go
@ -102,3 +102,44 @@ func generateKeys(path string) (ed25519.PublicKey, ed25519.PrivateKey, error) {
|
||||
|
||||
return pub, priv, nil
|
||||
}
|
||||
|
||||
// LoadPrivateKeys loads the private keys at all the provided paths.
|
||||
//
|
||||
// Any invalid keys are skipped.
|
||||
func LoadPrivateKeys(paths ...string) []ed25519.PrivateKey {
|
||||
out := make([]ed25519.PrivateKey, len(paths))
|
||||
for i, path := range paths {
|
||||
privkey, err := LoadPrivateKey(path)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
out[i] = privkey
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// LoadPrivateKey loads a private Ed25519 key from the given path.
|
||||
func LoadPrivateKey(path string) (ed25519.PrivateKey, error) {
|
||||
privData, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
privBlock, _ := pem.Decode(privData)
|
||||
|
||||
if privBlock == nil {
|
||||
return nil, errors.New("invalid private key data")
|
||||
}
|
||||
|
||||
privkey, err := x509.ParsePKCS8PrivateKey(privBlock.Bytes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
priv, ok := privkey.(ed25519.PrivateKey)
|
||||
if !ok {
|
||||
return nil, errors.New("invalid private key type")
|
||||
}
|
||||
|
||||
return priv, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user