github.com/s7techlab/cckit@v0.10.5/identity/key.go (about)

     1  package identity
     2  
     3  import (
     4  	"crypto/ecdsa"
     5  	"crypto/x509"
     6  	"encoding/pem"
     7  
     8  	"github.com/pkg/errors"
     9  )
    10  
    11  func PrivateKey(keyBytes []byte) (*ecdsa.PrivateKey, error) {
    12  	keyPEM, _ := pem.Decode(keyBytes)
    13  	if keyPEM == nil {
    14  		return nil, ErrInvalidPEMStructure
    15  	}
    16  
    17  	key, err := x509.ParsePKCS8PrivateKey(keyPEM.Bytes)
    18  	if err != nil {
    19  		return nil, errors.Wrap(err, `failed to parse private key`)
    20  	}
    21  	return key.(*ecdsa.PrivateKey), nil
    22  }