elliptic_gen.go 2.4 KB

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