54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/gibheer/pki"
|
|
)
|
|
|
|
var (
|
|
ErrNoPKFound = errors.New("no private key found")
|
|
ErrNoPUFound = errors.New("no public key found")
|
|
ErrUnknownFormat = errors.New("key is an unknown format")
|
|
)
|
|
|
|
// Read the private key from the path and try to figure out which type of key it
|
|
// might be.
|
|
func ReadPrivateKeyFile(path string) (pki.PrivateKey, error) {
|
|
raw_pk, err := readSectionFromFile(path, pki.PemLabelEcdsa)
|
|
if err == nil {
|
|
pk, err := pki.LoadPrivateKeyEcdsa(raw_pk)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return pk, nil
|
|
}
|
|
raw_pk, err = readSectionFromFile(path, pki.PemLabelRsa)
|
|
if err == nil {
|
|
pk, err := pki.LoadPrivateKeyRsa(raw_pk)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return pk, nil
|
|
}
|
|
return nil, ErrNoPKFound
|
|
}
|
|
|
|
// read the public key and try to figure out what kind of key it might be
|
|
func ReadPublicKeyFile(path string) (pki.PublicKey, error) {
|
|
raw_pu, err := readSectionFromFile(path, pki.PemLabelPublic)
|
|
if err != nil {
|
|
return nil, ErrNoPUFound
|
|
}
|
|
|
|
var public pki.PublicKey
|
|
public, err = pki.LoadPublicKeyEcdsa(raw_pu)
|
|
if err == nil {
|
|
return public, nil
|
|
}
|
|
public, err = pki.LoadPublicKeyRsa(raw_pu)
|
|
if err == nil {
|
|
return public, nil
|
|
}
|
|
return nil, ErrUnknownFormat
|
|
}
|