Module: OStatus2::MagicKey
- Included in:
- Salmon
- Defined in:
- lib/ostatus2/magic_key.rb
Instance Method Summary collapse
- #decode_base64(string) ⇒ Object
- #magic_key_to_pem(magic_key) ⇒ Object
- #set_key(key, modulus, exponent) ⇒ Object
Instance Method Details
#decode_base64(string) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ostatus2/magic_key.rb', line 23 def decode_base64(string) retries = 0 begin return Base64::urlsafe_decode64(string) rescue ArgumentError retries += 1 string = "#{string}=" retry unless retries > 2 end end |
#magic_key_to_pem(magic_key) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/ostatus2/magic_key.rb', line 14 def magic_key_to_pem(magic_key) _, modulus, exponent = magic_key.split('.') modulus, exponent = [modulus, exponent].map { |n| decode_base64(n).bytes.inject(0) { |a, e| (a << 8) | e } } key = OpenSSL::PKey::RSA.new set_key(key, modulus, exponent) key.to_pem end |
#set_key(key, modulus, exponent) ⇒ Object
4 5 6 7 |
# File 'lib/ostatus2/magic_key.rb', line 4 def set_key(key, modulus, exponent) key.n = modulus key.e = exponent end |