Class: JWK::RSAKey

Inherits:
Key
  • Object
show all
Defined in:
lib/jwk/rsa_key.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Key

from_json, from_pem, #to_json, validate_kty!, #x5t_s256

Constructor Details

#initialize(key) ⇒ RSAKey



5
6
7
8
# File 'lib/jwk/rsa_key.rb', line 5

def initialize(key)
  @key = key
  validate
end

Class Method Details

.from_openssl(k) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/jwk/rsa_key.rb', line 47

def from_openssl(k)
  if k.private?
    key = { 'kty' => 'RSA' }.merge(key_params(k, 'n', 'e', 'd', 'p', 'q', 'dmp1', 'dmq1', 'iqmp'))
    key['dp'] = key.delete('dmp1')
    key['dq'] = key.delete('dmq1')
    key['qi'] = key.delete('iqmp')
  else
    key = { 'kty' => 'RSA' }.merge(key_params(k, 'n', 'e'))
  end

  new(key)
end

Instance Method Details

#private?Boolean



14
15
16
# File 'lib/jwk/rsa_key.rb', line 14

def private?
  !@key['d'].nil?
end

#public?Boolean



10
11
12
# File 'lib/jwk/rsa_key.rb', line 10

def public?
  true
end

#to_openssl_keyObject



32
33
34
# File 'lib/jwk/rsa_key.rb', line 32

def to_openssl_key
  OpenSSL::PKey.read(to_pem)
end

#to_pemObject



22
23
24
25
26
27
28
29
30
# File 'lib/jwk/rsa_key.rb', line 22

def to_pem
  asn = to_asn

  if private?
    generate_pem('RSA PRIVATE', asn)
  else
    generate_pem('PUBLIC', asn)
  end
end

#to_sObject



36
37
38
# File 'lib/jwk/rsa_key.rb', line 36

def to_s
  to_pem
end

#validateObject

Raises:



18
19
20
# File 'lib/jwk/rsa_key.rb', line 18

def validate
  raise JWK::InvalidKey, 'Invalid RSA key.' unless @key['n'] && @key['e']
end