module OStatus2::MagicKey

Public Instance Methods

decode_base64(string) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/ostatus2/magic_key.rb, line 4
def set_key(key, modulus, exponent)
  key.n = modulus
  key.e = exponent
end