Class: Bunq::Encryptor

Inherits:
Object
  • Object
show all
Defined in:
lib/bunq/encryptor.rb

Constant Summary collapse

AES_ENCRYPTION_METHOD =
'aes-256-cbc'
HMAC_ALGORITHM =
'sha1'

Instance Method Summary collapse

Constructor Details

#initialize(server_public_key) ⇒ Encryptor

Returns a new instance of Encryptor.



8
9
10
11
12
# File 'lib/bunq/encryptor.rb', line 8

def initialize(server_public_key)
  fail ArgumentError, 'server_public_key is mandatory' unless server_public_key

  @server_public_key = OpenSSL::PKey::RSA.new(server_public_key)
end

Instance Method Details

#encrypt(body) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/bunq/encryptor.rb', line 14

def encrypt(body)
  headers = {}

  iv, key, encrypted_body = encrypt_body(body)

  headers[Bunq::Header::CLIENT_ENCRYPTION_IV] = Base64.strict_encode64(iv)

  encrypted_key = server_public_key.public_encrypt(key)
  headers[Bunq::Header::CLIENT_ENCRYPTION_KEY] = Base64.strict_encode64(encrypted_key)

  digest = hmac(key, iv + encrypted_body)
  headers[Bunq::Header::CLIENT_ENCRYPTION_HMAC] = Base64.strict_encode64(digest)

  [encrypted_body, headers]
end