summaryrefslogtreecommitdiff
path: root/vendor/github.com/superseriousbusiness/oauth2/v4/const.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-08-12 21:03:24 +0200
committerLibravatar GitHub <noreply@github.com>2021-08-12 21:03:24 +0200
commit98263a7de64269898a2f81207e38943b5c8e8653 (patch)
tree743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/superseriousbusiness/oauth2/v4/const.go
parentText duplication fix (#137) (diff)
downloadgotosocial-98263a7de64269898a2f81207e38943b5c8e8653.tar.xz
Grand test fixup (#138)
* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
Diffstat (limited to 'vendor/github.com/superseriousbusiness/oauth2/v4/const.go')
-rw-r--r--vendor/github.com/superseriousbusiness/oauth2/v4/const.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/github.com/superseriousbusiness/oauth2/v4/const.go b/vendor/github.com/superseriousbusiness/oauth2/v4/const.go
new file mode 100644
index 000000000..193e839fd
--- /dev/null
+++ b/vendor/github.com/superseriousbusiness/oauth2/v4/const.go
@@ -0,0 +1,76 @@
+package oauth2
+
+import (
+ "crypto/sha256"
+ "encoding/base64"
+ "strings"
+)
+
+// ResponseType the type of authorization request
+type ResponseType string
+
+// define the type of authorization request
+const (
+ Code ResponseType = "code"
+ Token ResponseType = "token"
+)
+
+func (rt ResponseType) String() string {
+ return string(rt)
+}
+
+// GrantType authorization model
+type GrantType string
+
+// define authorization model
+const (
+ AuthorizationCode GrantType = "authorization_code"
+ PasswordCredentials GrantType = "password"
+ ClientCredentials GrantType = "client_credentials"
+ Refreshing GrantType = "refresh_token"
+ Implicit GrantType = "__implicit"
+)
+
+func (gt GrantType) String() string {
+ if gt == AuthorizationCode ||
+ gt == PasswordCredentials ||
+ gt == ClientCredentials ||
+ gt == Refreshing {
+ return string(gt)
+ }
+ return ""
+}
+
+// CodeChallengeMethod PCKE method
+type CodeChallengeMethod string
+
+const (
+ // CodeChallengePlain PCKE Method
+ CodeChallengePlain CodeChallengeMethod = "plain"
+ // CodeChallengeS256 PCKE Method
+ CodeChallengeS256 CodeChallengeMethod = "S256"
+)
+
+func (ccm CodeChallengeMethod) String() string {
+ if ccm == CodeChallengePlain ||
+ ccm == CodeChallengeS256 {
+ return string(ccm)
+ }
+ return ""
+}
+
+// Validate code challenge
+func (ccm CodeChallengeMethod) Validate(cc, ver string) bool {
+ switch ccm {
+ case CodeChallengePlain:
+ return cc == ver
+ case CodeChallengeS256:
+ s256 := sha256.Sum256([]byte(ver))
+ // trim padding
+ a := strings.TrimRight(base64.URLEncoding.EncodeToString(s256[:]), "=")
+ b := strings.TrimRight(cc, "=")
+ return a == b
+ default:
+ return false
+ }
+}