class Virgil::SDK::Client::Requests::SignableRequest

Base class for all cards API requests.

Attributes

relations[R]
signatures[R]
snapshot[R]
validation_token[R]

Public Class Methods

new() click to toggle source

Constructs new SignableRequest object

# File lib/virgil/sdk/client/requests/signable_request.rb, line 48
def initialize
  @signatures = {}
end

Public Instance Methods

export() click to toggle source

Exports request snapshot.

Returns:

base64-encoded json representation of the request model.
# File lib/virgil/sdk/client/requests/signable_request.rb, line 107
def export
  json_string = self.request_model.to_json
  Base64.strict_encode64(json_string)
end
request_model() click to toggle source

Request model used for json representation.

# File lib/virgil/sdk/client/requests/signable_request.rb, line 124
def request_model
  model = {
    'content_snapshot': Base64.strict_encode64(snapshot.to_s),
    'meta': {
      'signs': signatures
    }
  }

  if validation_token
    model[:meta][:validation] = {'token': validation_token.value}
  end
  if relations
    model[:meta][:relations] = relations
  end

  return model
end
restore(snapshot, signatures, validation_token = nil, relations = nil) click to toggle source

Restores request from snapshot.

Args:
  snapshot: Json-encoded snapshot request will be restored from.
  signatures: Request signatures.
  validation_token: validation token gotten from Virgil Identity Service
  relations: relations
# File lib/virgil/sdk/client/requests/signable_request.rb, line 83
def restore(snapshot, signatures, validation_token = nil, relations = nil)
  @snapshot = snapshot
  @signatures = signatures
  @validation_token = validation_token
  @relations = relations
  model = JSON.parse(Crypto::Bytes.new(snapshot).to_s)
  restore_from_snapshot_model(model)
end
restore_from_snapshot_model(snapshot) click to toggle source

Restores request from snapshot model.

Should be implemented in the derived classes.

Args:

snapshot: snapshot model dict

Raises:

NotImplementedError
# File lib/virgil/sdk/client/requests/signable_request.rb, line 71
def restore_from_snapshot_model(snapshot)
  raise NotImplementedError.new
end
sign_with(fingerprint_id, signature) click to toggle source

Adds signature to request.“”“

# File lib/virgil/sdk/client/requests/signable_request.rb, line 119
def sign_with(fingerprint_id, signature)
  @signatures[fingerprint_id] = signature
end
snapshot_model() click to toggle source

Constructs snapshot model for exporting and signing.

Should be implemented in the derived classes.

Raises:

NotImplementedError
# File lib/virgil/sdk/client/requests/signable_request.rb, line 58
def snapshot_model
  raise NotImplementedError.new
end
take_snapshot() click to toggle source

Takes request data snapshot.

Returns:

Request snapshot bytes.
# File lib/virgil/sdk/client/requests/signable_request.rb, line 97
def take_snapshot
  json_string = self.snapshot_model.to_json
  Crypto::Bytes.from_string(json_string)
end