1// this file was auto-generated by internal/cmd/gentypes/main.go: DO NOT EDIT 2 3package jwa 4 5import ( 6 "fmt" 7 "sort" 8 "sync" 9 10 "github.com/pkg/errors" 11) 12 13// SignatureAlgorithm represents the various signature algorithms as described in https://tools.ietf.org/html/rfc7518#section-3.1 14type SignatureAlgorithm string 15 16// Supported values for SignatureAlgorithm 17const ( 18 ES256 SignatureAlgorithm = "ES256" // ECDSA using P-256 and SHA-256 19 ES256K SignatureAlgorithm = "ES256K" // ECDSA using secp256k1 and SHA-256 20 ES384 SignatureAlgorithm = "ES384" // ECDSA using P-384 and SHA-384 21 ES512 SignatureAlgorithm = "ES512" // ECDSA using P-521 and SHA-512 22 EdDSA SignatureAlgorithm = "EdDSA" // EdDSA signature algorithms 23 HS256 SignatureAlgorithm = "HS256" // HMAC using SHA-256 24 HS384 SignatureAlgorithm = "HS384" // HMAC using SHA-384 25 HS512 SignatureAlgorithm = "HS512" // HMAC using SHA-512 26 NoSignature SignatureAlgorithm = "none" 27 PS256 SignatureAlgorithm = "PS256" // RSASSA-PSS using SHA256 and MGF1-SHA256 28 PS384 SignatureAlgorithm = "PS384" // RSASSA-PSS using SHA384 and MGF1-SHA384 29 PS512 SignatureAlgorithm = "PS512" // RSASSA-PSS using SHA512 and MGF1-SHA512 30 RS256 SignatureAlgorithm = "RS256" // RSASSA-PKCS-v1.5 using SHA-256 31 RS384 SignatureAlgorithm = "RS384" // RSASSA-PKCS-v1.5 using SHA-384 32 RS512 SignatureAlgorithm = "RS512" // RSASSA-PKCS-v1.5 using SHA-512 33) 34 35var allSignatureAlgorithms = map[SignatureAlgorithm]struct{}{ 36 ES256: {}, 37 ES256K: {}, 38 ES384: {}, 39 ES512: {}, 40 EdDSA: {}, 41 HS256: {}, 42 HS384: {}, 43 HS512: {}, 44 NoSignature: {}, 45 PS256: {}, 46 PS384: {}, 47 PS512: {}, 48 RS256: {}, 49 RS384: {}, 50 RS512: {}, 51} 52 53var listSignatureAlgorithmOnce sync.Once 54var listSignatureAlgorithm []SignatureAlgorithm 55 56// SignatureAlgorithms returns a list of all available values for SignatureAlgorithm 57func SignatureAlgorithms() []SignatureAlgorithm { 58 listSignatureAlgorithmOnce.Do(func() { 59 listSignatureAlgorithm = make([]SignatureAlgorithm, 0, len(allSignatureAlgorithms)) 60 for v := range allSignatureAlgorithms { 61 listSignatureAlgorithm = append(listSignatureAlgorithm, v) 62 } 63 sort.Slice(listSignatureAlgorithm, func(i, j int) bool { 64 return string(listSignatureAlgorithm[i]) < string(listSignatureAlgorithm[j]) 65 }) 66 }) 67 return listSignatureAlgorithm 68} 69 70// Accept is used when conversion from values given by 71// outside sources (such as JSON payloads) is required 72func (v *SignatureAlgorithm) Accept(value interface{}) error { 73 var tmp SignatureAlgorithm 74 if x, ok := value.(SignatureAlgorithm); ok { 75 tmp = x 76 } else { 77 var s string 78 switch x := value.(type) { 79 case fmt.Stringer: 80 s = x.String() 81 case string: 82 s = x 83 default: 84 return errors.Errorf(`invalid type for jwa.SignatureAlgorithm: %T`, value) 85 } 86 tmp = SignatureAlgorithm(s) 87 } 88 if _, ok := allSignatureAlgorithms[tmp]; !ok { 89 return errors.Errorf(`invalid jwa.SignatureAlgorithm value`) 90 } 91 92 *v = tmp 93 return nil 94} 95 96// String returns the string representation of a SignatureAlgorithm 97func (v SignatureAlgorithm) String() string { 98 return string(v) 99} 100