Class: JWK::RSAKey
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_key ⇒ Object
32
33
34
|
# File 'lib/jwk/rsa_key.rb', line 32
def to_openssl_key
OpenSSL::PKey.read(to_pem)
end
|
#to_pem ⇒ Object
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_s ⇒ Object
36
37
38
|
# File 'lib/jwk/rsa_key.rb', line 36
def to_s
to_pem
end
|
#validate ⇒ Object
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
|