Module: OStatus2::MagicKey

Included in:
Salmon
Defined in:
lib/ostatus2/magic_key.rb

Instance Method Summary collapse

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