github.com/avenga/couper@v1.12.2/accesscontrol/jwt/algorithm.go (about) 1 package jwt 2 3 type ( 4 Algorithm int 5 ) 6 7 const ( 8 AlgorithmUnknown Algorithm = iota - 1 9 _ 10 AlgorithmRSA256 11 AlgorithmRSA384 12 AlgorithmRSA512 13 AlgorithmHMAC256 14 AlgorithmHMAC384 15 AlgorithmHMAC512 16 AlgorithmECDSA256 17 AlgorithmECDSA384 18 AlgorithmECDSA512 19 ) 20 21 var RSAAlgorithms = []Algorithm{AlgorithmRSA256, AlgorithmRSA384, AlgorithmRSA512} 22 var ECDSAlgorithms = []Algorithm{AlgorithmECDSA256, AlgorithmECDSA384, AlgorithmECDSA512} 23 24 func NewAlgorithm(a string) Algorithm { 25 switch a { 26 case "RS256": 27 return AlgorithmRSA256 28 case "RS384": 29 return AlgorithmRSA384 30 case "RS512": 31 return AlgorithmRSA512 32 case "HS256": 33 return AlgorithmHMAC256 34 case "HS384": 35 return AlgorithmHMAC384 36 case "HS512": 37 return AlgorithmHMAC512 38 case "ES256": 39 return AlgorithmECDSA256 40 case "ES384": 41 return AlgorithmECDSA384 42 case "ES512": 43 return AlgorithmECDSA512 44 default: 45 return AlgorithmUnknown 46 } 47 } 48 49 func (a Algorithm) IsHMAC() bool { 50 switch a { 51 case AlgorithmHMAC256, AlgorithmHMAC384, AlgorithmHMAC512: 52 return true 53 default: 54 return false 55 } 56 } 57 58 func (a Algorithm) String() string { 59 switch a { 60 case AlgorithmRSA256: 61 return "RS256" 62 case AlgorithmRSA384: 63 return "RS384" 64 case AlgorithmRSA512: 65 return "RS512" 66 case AlgorithmHMAC256: 67 return "HS256" 68 case AlgorithmHMAC384: 69 return "HS384" 70 case AlgorithmHMAC512: 71 return "HS512" 72 case AlgorithmECDSA256: 73 return "ES256" 74 case AlgorithmECDSA384: 75 return "ES384" 76 case AlgorithmECDSA512: 77 return "ES512" 78 default: 79 return "Unknown" 80 } 81 }