...

Source file src/github.com/lestrrat-go/jwx/jwa/elliptic_gen.go

Documentation: github.com/lestrrat-go/jwx/jwa

     1  // this file was auto-generated by internal/cmd/gentypes/main.go: DO NOT EDIT
     2  
     3  package jwa
     4  
     5  import (
     6  	"fmt"
     7  	"sort"
     8  	"sync"
     9  
    10  	"github.com/pkg/errors"
    11  )
    12  
    13  //  EllipticCurveAlgorithm represents the algorithms used for EC keys
    14  type EllipticCurveAlgorithm string
    15  
    16  // Supported values for EllipticCurveAlgorithm
    17  const (
    18  	Ed25519              EllipticCurveAlgorithm = "Ed25519"
    19  	Ed448                EllipticCurveAlgorithm = "Ed448"
    20  	InvalidEllipticCurve EllipticCurveAlgorithm = "P-invalid"
    21  	P256                 EllipticCurveAlgorithm = "P-256"
    22  	P384                 EllipticCurveAlgorithm = "P-384"
    23  	P521                 EllipticCurveAlgorithm = "P-521"
    24  	X25519               EllipticCurveAlgorithm = "X25519"
    25  	X448                 EllipticCurveAlgorithm = "X448"
    26  )
    27  
    28  var allEllipticCurveAlgorithms = map[EllipticCurveAlgorithm]struct{}{
    29  	Ed25519: {},
    30  	Ed448:   {},
    31  	P256:    {},
    32  	P384:    {},
    33  	P521:    {},
    34  	X25519:  {},
    35  	X448:    {},
    36  }
    37  
    38  var listEllipticCurveAlgorithmOnce sync.Once
    39  var listEllipticCurveAlgorithm []EllipticCurveAlgorithm
    40  
    41  // EllipticCurveAlgorithms returns a list of all available values for EllipticCurveAlgorithm
    42  func EllipticCurveAlgorithms() []EllipticCurveAlgorithm {
    43  	listEllipticCurveAlgorithmOnce.Do(func() {
    44  		listEllipticCurveAlgorithm = make([]EllipticCurveAlgorithm, 0, len(allEllipticCurveAlgorithms))
    45  		for v := range allEllipticCurveAlgorithms {
    46  			listEllipticCurveAlgorithm = append(listEllipticCurveAlgorithm, v)
    47  		}
    48  		sort.Slice(listEllipticCurveAlgorithm, func(i, j int) bool {
    49  			return string(listEllipticCurveAlgorithm[i]) < string(listEllipticCurveAlgorithm[j])
    50  		})
    51  	})
    52  	return listEllipticCurveAlgorithm
    53  }
    54  
    55  // Accept is used when conversion from values given by
    56  // outside sources (such as JSON payloads) is required
    57  func (v *EllipticCurveAlgorithm) Accept(value interface{}) error {
    58  	var tmp EllipticCurveAlgorithm
    59  	if x, ok := value.(EllipticCurveAlgorithm); ok {
    60  		tmp = x
    61  	} else {
    62  		var s string
    63  		switch x := value.(type) {
    64  		case fmt.Stringer:
    65  			s = x.String()
    66  		case string:
    67  			s = x
    68  		default:
    69  			return errors.Errorf(`invalid type for jwa.EllipticCurveAlgorithm: %T`, value)
    70  		}
    71  		tmp = EllipticCurveAlgorithm(s)
    72  	}
    73  	if _, ok := allEllipticCurveAlgorithms[tmp]; !ok {
    74  		return errors.Errorf(`invalid jwa.EllipticCurveAlgorithm value`)
    75  	}
    76  
    77  	*v = tmp
    78  	return nil
    79  }
    80  
    81  // String returns the string representation of a EllipticCurveAlgorithm
    82  func (v EllipticCurveAlgorithm) String() string {
    83  	return string(v)
    84  }
    85  

View as plain text