func readKey(path string) (crypto.Signer, error) {
	b, err := ioutil.ReadFile(path)
	if err != nil {
		return nil, err
	}
	d, _ := pem.Decode(b)
	if d == nil {
		return nil, fmt.Errorf("no block found in %q", path)
	}
	switch d.Type {
	case rsaPrivateKey:
		return x509.ParsePKCS1PrivateKey(d.Bytes)
	case ecPrivateKey:
		return x509.ParseECPrivateKey(d.Bytes)
	default:
		return nil, fmt.Errorf("%q is unsupported", d.Type)
	}
}
func readKey(path string) (crypto.Signer, error) {
	b, err := ioutil.ReadFile(path)
	if err != nil {
		return nil, err
	}
	d, _ := pem.Decode(b)
	if d == nil {
		return nil, fmt.Errorf("no block found in %q", path)
	}
	switch d.Type {
	case rsaPrivateKey:
		return x509.ParsePKCS1PrivateKey(d.Bytes)
	case ecPrivateKey:
		return x509.ParseECPrivateKey(d.Bytes)
	default:
		return nil, fmt.Errorf("%q is unsupported", d.Type)
	}
}
func readKey ( path string ) ( crypto . Signer , error ) { b , err := ioutil . ReadFile ( path ) if err != nil { return nil , err } d , _ := pem . Decode ( b ) if d == nil { return nil , fmt . Errorf ( " " , path ) } switch d . Type { case rsaPrivateKey : return x509 . ParsePKCS1PrivateKey ( d . Bytes ) case ecPrivateKey : return x509 . ParseECPrivateKey ( d . Bytes ) default : return nil , fmt . Errorf ( " " , d . Type ) } }
// readKey reads a private rsa key from path.
// The key is expected to be in PEM format.
readKey reads a private rsa key from path . The key is expected to be in PEM format .