signature_gen.go 3.1 KB

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