Class: Evervault::Crypto::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/evervault/crypto/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_handler:, curve:) ⇒ Client

Returns a new instance of Client.



13
14
15
16
17
18
19
20
21
22
# File 'lib/evervault/crypto/client.rb', line 13

def initialize(request_handler:, curve:)
  @curve = curve
  @p256 = Evervault::Crypto::Curves::P256.new()
  @ev_version = base_64_remove_padding(
      Base64.strict_encode64(EV_VERSION[curve])
  )
  response = request_handler.get("cages/key")
  key = @curve == 'secp256k1' ? 'ecdhKey' : 'ecdhP256Key'
  @team_key = response[key]
end

Instance Attribute Details

#request_handlerObject (readonly)

Returns the value of attribute request_handler.



12
13
14
# File 'lib/evervault/crypto/client.rb', line 12

def request_handler
  @request_handler
end

Instance Method Details

#encrypt(data) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/evervault/crypto/client.rb', line 24

def encrypt(data)
  raise Evervault::Errors::UndefinedDataError.new(
    "Data is required for encryption"
  ) if data.nil? || (data.instance_of?(String) && data.empty?)

  raise Evervault::Errors::UnsupportedEncryptType.new(
    "Encryption is not supported for #{data.class}"
  ) if !(encryptable_data?(data) || data.instance_of?(Hash) || data.instance_of?(Array))
    
  traverse_and_encrypt(data)
end