Module: Urg
- Defined in:
- lib/urg.rb
Constant Summary collapse
- DEFAULT_PUBLIC_KEY_URI =
"https://urg-public-keys.s3-us-west-2.amazonaws.com/urg-exfil.pub"
Class Method Summary collapse
Class Method Details
.exfil(object, key: DEFAULT_PUBLIC_KEY_URI) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/urg.rb', line 9 def self.exfil(object, key: DEFAULT_PUBLIC_KEY_URI) if key public_key_uri = URI.parse(key) public_key = OpenSSL::PKey::RSA.new(public_key_uri.read) str = Base64.encode64(public_key.public_encrypt(Base64.encode64(Zlib::Deflate.deflate(Marshal.dump(object))), OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING)) key_arg = key == DEFAULT_PUBLIC_KEY_URI ? "\"#{key}\"" : "YOUR_PRIVATE_KEY_LOCATION" else str = Base64.encode64(Zlib::Deflate.deflate(Marshal.dump(object))) key_arg = "nil" end puts "🚀"*20 puts "Urg.infil(\"#{str}\", key: #{key_arg})" puts "🚀"*20 end |
.infil(str, key: nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/urg.rb', line 25 def self.infil(str, key:nil) unless key return Marshal.load(Zlib::Inflate.inflate(Base64.decode64(str))) end if key == DEFAULT_PUBLIC_KEY_URI private_key_content = ENV["URG_EXFIL_PRIVATE_KEY"] else private_key_content = open(key) end private_key = OpenSSL::PKey::RSA.new(private_key_content) Marshal.load(Zlib::Inflate.inflate(Base64.decode64(private_key.private_decrypt(Base64.decode64(str), OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING)))) end |