package jwt

import (
	
	
	
	
	
)

var (
	ErrNotEdPrivateKey = errors.New("key is not a valid Ed25519 private key")
	ErrNotEdPublicKey  = errors.New("key is not a valid Ed25519 public key")
)

// ParseEdPrivateKeyFromPEM parses a PEM-encoded Edwards curve private key
func ( []byte) (crypto.PrivateKey, error) {
	var  error

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

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

	var  ed25519.PrivateKey
	var  bool
	if ,  = .(ed25519.PrivateKey); ! {
		return nil, ErrNotEdPrivateKey
	}

	return , nil
}

// ParseEdPublicKeyFromPEM parses a PEM-encoded Edwards curve public key
func ( []byte) (crypto.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 {
		return nil, 
	}

	var  ed25519.PublicKey
	var  bool
	if ,  = .(ed25519.PublicKey); ! {
		return nil, ErrNotEdPublicKey
	}

	return , nil
}