rsa.go
func UnmarshalRsaPrivateKey(b []byte) (PrivKey, error) {
	sk, err := x509.ParsePKCS1PrivateKey(b)
	if err != nil {
		return nil, err
	}
	if sk.N.BitLen() < 512 {
		return nil, ErrRsaKeyTooSmall
	}
	return &RsaPrivateKey{sk: sk}, nil
}
func UnmarshalRsaPrivateKey(b []byte) (PrivKey, error) {
	sk, err := x509.ParsePKCS1PrivateKey(b)
	if err != nil {
		return nil, err
	}
	if sk.N.BitLen() < 512 {
		return nil, ErrRsaKeyTooSmall
	}
	return &RsaPrivateKey{sk: sk}, nil
}
// UnmarshalRsaPrivateKey returns a private key from the input x509 bytes