Class: AtomicLti::Jwk

Inherits:
ApplicationRecord show all
Defined in:
app/models/atomic_lti/jwk.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.current_jwkObject



37
38
39
# File 'app/models/atomic_lti/jwk.rb', line 37

def self.current_jwk
  self.last
end

Instance Method Details

#algObject



11
12
13
# File 'app/models/atomic_lti/jwk.rb', line 11

def alg
  "RS256"
end

#generate_keysObject



5
6
7
8
9
# File 'app/models/atomic_lti/jwk.rb', line 5

def generate_keys
  pkey = OpenSSL::PKey::RSA.generate(2048)
  self.pem = pkey.to_pem
  self.kid = pkey.to_jwk.thumbprint
end

#private_keyObject



15
16
17
# File 'app/models/atomic_lti/jwk.rb', line 15

def private_key
  OpenSSL::PKey::RSA.new(pem)
end

#public_keyObject



19
20
21
22
# File 'app/models/atomic_lti/jwk.rb', line 19

def public_key
  pkey = OpenSSL::PKey::RSA.new(pem)
  pkey.public_key
end

#to_jsonObject



24
25
26
27
28
29
30
# File 'app/models/atomic_lti/jwk.rb', line 24

def to_json
  pkey = OpenSSL::PKey::RSA.new(pem)
  json = JSON::JWK.new(pkey.public_key, kid: kid).as_json
  json["use"] = "sig"
  json["alg"] = alg
  json
end

#to_pemObject



32
33
34
35
# File 'app/models/atomic_lti/jwk.rb', line 32

def to_pem
  pkey = OpenSSL::PKey::RSA.new(pem)
  pkey.public_key.to_pem
end