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  }