diff options
| author | Rutger Broekhoff | 2024-01-02 18:56:31 +0100 |
|---|---|---|
| committer | Rutger Broekhoff | 2024-01-02 18:56:31 +0100 |
| commit | 8db41da676ac8368ef7c2549d56239a5ff5eedde (patch) | |
| tree | 09c427fd66de2ec1ebffc8342f5fdbb84b0701b5 /vendor/github.com/golang-jwt/jwt/v5/hmac.go | |
| parent | d4f75fb6db22e57577867445a022227e70958931 (diff) | |
| download | gitolfs3-8db41da676ac8368ef7c2549d56239a5ff5eedde.tar.gz gitolfs3-8db41da676ac8368ef7c2549d56239a5ff5eedde.zip | |
Delete vendor directory
Diffstat (limited to 'vendor/github.com/golang-jwt/jwt/v5/hmac.go')
| -rw-r--r-- | vendor/github.com/golang-jwt/jwt/v5/hmac.go | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/vendor/github.com/golang-jwt/jwt/v5/hmac.go b/vendor/github.com/golang-jwt/jwt/v5/hmac.go deleted file mode 100644 index 96c6272..0000000 --- a/vendor/github.com/golang-jwt/jwt/v5/hmac.go +++ /dev/null | |||
| @@ -1,104 +0,0 @@ | |||
| 1 | package jwt | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "crypto" | ||
| 5 | "crypto/hmac" | ||
| 6 | "errors" | ||
| 7 | ) | ||
| 8 | |||
| 9 | // SigningMethodHMAC implements the HMAC-SHA family of signing methods. | ||
| 10 | // Expects key type of []byte for both signing and validation | ||
| 11 | type SigningMethodHMAC struct { | ||
| 12 | Name string | ||
| 13 | Hash crypto.Hash | ||
| 14 | } | ||
| 15 | |||
| 16 | // Specific instances for HS256 and company | ||
| 17 | var ( | ||
| 18 | SigningMethodHS256 *SigningMethodHMAC | ||
| 19 | SigningMethodHS384 *SigningMethodHMAC | ||
| 20 | SigningMethodHS512 *SigningMethodHMAC | ||
| 21 | ErrSignatureInvalid = errors.New("signature is invalid") | ||
| 22 | ) | ||
| 23 | |||
| 24 | func init() { | ||
| 25 | // HS256 | ||
| 26 | SigningMethodHS256 = &SigningMethodHMAC{"HS256", crypto.SHA256} | ||
| 27 | RegisterSigningMethod(SigningMethodHS256.Alg(), func() SigningMethod { | ||
| 28 | return SigningMethodHS256 | ||
| 29 | }) | ||
| 30 | |||
| 31 | // HS384 | ||
| 32 | SigningMethodHS384 = &SigningMethodHMAC{"HS384", crypto.SHA384} | ||
| 33 | RegisterSigningMethod(SigningMethodHS384.Alg(), func() SigningMethod { | ||
| 34 | return SigningMethodHS384 | ||
| 35 | }) | ||
| 36 | |||
| 37 | // HS512 | ||
| 38 | SigningMethodHS512 = &SigningMethodHMAC{"HS512", crypto.SHA512} | ||
| 39 | RegisterSigningMethod(SigningMethodHS512.Alg(), func() SigningMethod { | ||
| 40 | return SigningMethodHS512 | ||
| 41 | }) | ||
| 42 | } | ||
| 43 | |||
| 44 | func (m *SigningMethodHMAC) Alg() string { | ||
| 45 | return m.Name | ||
| 46 | } | ||
| 47 | |||
| 48 | // Verify implements token verification for the SigningMethod. Returns nil if | ||
| 49 | // the signature is valid. Key must be []byte. | ||
| 50 | // | ||
| 51 | // Note it is not advised to provide a []byte which was converted from a 'human | ||
| 52 | // readable' string using a subset of ASCII characters. To maximize entropy, you | ||
| 53 | // should ideally be providing a []byte key which was produced from a | ||
| 54 | // cryptographically random source, e.g. crypto/rand. Additional information | ||
| 55 | // about this, and why we intentionally are not supporting string as a key can | ||
| 56 | // be found on our usage guide | ||
| 57 | // https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types. | ||
| 58 | func (m *SigningMethodHMAC) Verify(signingString string, sig []byte, key interface{}) error { | ||
| 59 | // Verify the key is the right type | ||
| 60 | keyBytes, ok := key.([]byte) | ||
| 61 | if !ok { | ||
| 62 | return newError("HMAC verify expects []byte", ErrInvalidKeyType) | ||
| 63 | } | ||
| 64 | |||
| 65 | // Can we use the specified hashing method? | ||
| 66 | if !m.Hash.Available() { | ||
| 67 | return ErrHashUnavailable | ||
| 68 | } | ||
| 69 | |||
| 70 | // This signing method is symmetric, so we validate the signature | ||
| 71 | // by reproducing the signature from the signing string and key, then | ||
| 72 | // comparing that against the provided signature. | ||
| 73 | hasher := hmac.New(m.Hash.New, keyBytes) | ||
| 74 | hasher.Write([]byte(signingString)) | ||
| 75 | if !hmac.Equal(sig, hasher.Sum(nil)) { | ||
| 76 | return ErrSignatureInvalid | ||
| 77 | } | ||
| 78 | |||
| 79 | // No validation errors. Signature is good. | ||
| 80 | return nil | ||
| 81 | } | ||
| 82 | |||
| 83 | // Sign implements token signing for the SigningMethod. Key must be []byte. | ||
| 84 | // | ||
| 85 | // Note it is not advised to provide a []byte which was converted from a 'human | ||
| 86 | // readable' string using a subset of ASCII characters. To maximize entropy, you | ||
| 87 | // should ideally be providing a []byte key which was produced from a | ||
| 88 | // cryptographically random source, e.g. crypto/rand. Additional information | ||
| 89 | // about this, and why we intentionally are not supporting string as a key can | ||
| 90 | // be found on our usage guide https://golang-jwt.github.io/jwt/usage/signing_methods/. | ||
| 91 | func (m *SigningMethodHMAC) Sign(signingString string, key interface{}) ([]byte, error) { | ||
| 92 | if keyBytes, ok := key.([]byte); ok { | ||
| 93 | if !m.Hash.Available() { | ||
| 94 | return nil, newError("HMAC sign expects []byte", ErrInvalidKeyType) | ||
| 95 | } | ||
| 96 | |||
| 97 | hasher := hmac.New(m.Hash.New, keyBytes) | ||
| 98 | hasher.Write([]byte(signingString)) | ||
| 99 | |||
| 100 | return hasher.Sum(nil), nil | ||
| 101 | } | ||
| 102 | |||
| 103 | return nil, ErrInvalidKeyType | ||
| 104 | } | ||