Copyright 2014 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

package internal

import (
	
	
	
	
	
)
ParseKey converts the binary contents of a private key file to an *rsa.PrivateKey. It detects whether the private key is in a PEM container or not. If so, it extracts the the private key from PEM container before conversion. It only supports PEM containers with no passphrase.
func ( []byte) (*rsa.PrivateKey, error) {
	,  := pem.Decode()
	if  != nil {
		 = .Bytes
	}
	,  := x509.ParsePKCS8PrivateKey()
	if  != nil {
		,  = x509.ParsePKCS1PrivateKey()
		if  != nil {
			return nil, fmt.Errorf("private key should be a PEM or plain PKCS1 or PKCS8; parse error: %v", )
		}
	}
	,  := .(*rsa.PrivateKey)
	if ! {
		return nil, errors.New("private key is invalid")
	}
	return , nil