package jwt

import (
	
	
	
	
)

var (
	ErrNotECPublicKey  = errors.New("key is not a valid ECDSA public key")
	ErrNotECPrivateKey = errors.New("key is not a valid ECDSA private key")
)

// ParseECPrivateKeyFromPEM parses a PEM encoded Elliptic Curve Private Key Structure
func ( []byte) (*ecdsa.PrivateKey, error) {
	var  error

	// Parse PEM block
	var  *pem.Block
	if , _ = pem.Decode();  == nil {
		return nil, ErrKeyMustBePEMEncoded
	}

	// Parse the key
	var  interface{}
	if ,  = x509.ParseECPrivateKey(.Bytes);  != nil {
		if ,  = x509.ParsePKCS8PrivateKey(.Bytes);  != nil {
			return nil, 
		}
	}

	var  *ecdsa.PrivateKey
	var  bool
	if ,  = .(*ecdsa.PrivateKey); ! {
		return nil, ErrNotECPrivateKey
	}

	return , nil
}

// ParseECPublicKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 public key
func ( []byte) (*ecdsa.PublicKey, error) {
	var  error

	// Parse PEM block
	var  *pem.Block
	if , _ = pem.Decode();  == nil {
		return nil, ErrKeyMustBePEMEncoded
	}

	// Parse the key
	var  interface{}
	if ,  = x509.ParsePKIXPublicKey(.Bytes);  != nil {
		if ,  := x509.ParseCertificate(.Bytes);  == nil {
			 = .PublicKey
		} else {
			return nil, 
		}
	}

	var  *ecdsa.PublicKey
	var  bool
	if ,  = .(*ecdsa.PublicKey); ! {
		return nil, ErrNotECPublicKey
	}

	return , nil
}