omniauth-doximity-oauth2 1.2.0.pre → 1.2.0.pre.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/Gemfile.lock +1 -1
- data/lib/omniauth/strategies/doximity_oauth2.rb +1 -1
- data/lib/omniauth-doximity-oauth2/crypto.rb +20 -18
- data/lib/omniauth-doximity-oauth2/errors.rb +1 -1
- data/lib/omniauth-doximity-oauth2/version.rb +2 -2
- data/omniauth-doximity-oauth2.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1642591775f515a59d09b10e8a33847385dd631f7b56e5f66189498ac1a5d85c
|
4
|
+
data.tar.gz: f72018f59d00f2e9e5797f4fdb4a5b424e35ab90d5bba5f6341adcd1f2cdd155
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05c9241df99c419635cc04f0b58c05eea994b1d6a86f804bc0370684562e30f357879d3b3de5ebaf42716760247b1b79bd79b72197dab8762960f6699f8ee9ae
|
7
|
+
data.tar.gz: 38428772017194b3f928900a41b0a9ad8990b15ada8b910e92aab556f5871732b87075de1dfe575469bafae7134fd9c46a48162924a2eb0952f55af62d4969c8
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -102,7 +102,7 @@ module OmniAuth
|
|
102
102
|
keys = request_keys
|
103
103
|
|
104
104
|
public_key_params = keys.find { |key| key["kid"] == header["kid"] }
|
105
|
-
rsa_key = Crypto.create_rsa_key(public_key_params["n"], public_key_params["e"])
|
105
|
+
rsa_key = OmniAuth::DoximityOauth2::Crypto.create_rsa_key(public_key_params["n"], public_key_params["e"])
|
106
106
|
|
107
107
|
body, = JWT.decode(token, rsa_key.public_key, true, { algorithm: header["alg"] })
|
108
108
|
body
|
@@ -1,29 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module OmniAuth
|
4
4
|
module DoximityOauth2
|
5
5
|
# Static crypto methods
|
6
6
|
class Crypto
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
class << self
|
8
|
+
def create_rsa_key(n, e)
|
9
|
+
data_sequence = OpenSSL::ASN1::Sequence([
|
10
|
+
OpenSSL::ASN1::Integer(base64_to_long(n)),
|
11
|
+
OpenSSL::ASN1::Integer(base64_to_long(e))
|
12
|
+
])
|
13
|
+
asn1 = OpenSSL::ASN1::Sequence(data_sequence)
|
14
|
+
OpenSSL::PKey::RSA.new(asn1.to_der)
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
+
private
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
def base64_to_long(data)
|
20
|
+
decoded_with_padding = Base64.urlsafe_decode64(data) + Base64.decode64("==")
|
21
|
+
decoded_with_padding.to_s.unpack("C*").map do |byte|
|
22
|
+
byte_to_hex(byte)
|
23
|
+
end.join.to_i(16)
|
24
|
+
end
|
24
25
|
|
25
|
-
|
26
|
-
|
26
|
+
def byte_to_hex(int)
|
27
|
+
int < 16 ? "0#{int.to_s(16)}" : int.to_s(16)
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
@@ -5,7 +5,7 @@ require File.expand_path('lib/omniauth-doximity-oauth2/version', __dir__)
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "omniauth-doximity-oauth2"
|
8
|
-
spec.version =
|
8
|
+
spec.version = OmniAuth::DoximityOauth2::VERSION
|
9
9
|
spec.authors = ["William Harvey"]
|
10
10
|
spec.email = ["wharvey@doximity.com"]
|
11
11
|
spec.description = 'OmniAuth strategy for Doximity, supporting OIDC, and using PKCE'
|