class IcAgent::Request

Public Class Methods

sign_request(req, iden) click to toggle source

Signs a request with an identity's signature and encodes it using CBOR.

@param req [Hash] The request to be signed. @param iden [Identity] The identity used for signing. @return [Array] The request ID and the encoded signed request.

# File lib/ic_agent/agent.rb, line 13
def self.sign_request(req, iden)
  req_id = IcAgent::Utils.to_request_id(req)
  msg = IcAgent::IC_REQUEST_DOMAIN_SEPARATOR + req_id
  sig = iden.sign(msg)
  envelop = {
    'content': req,
    'sender_pubkey': sig[0],
    'sender_sig': sig[1]
  }

  if iden.is_a?(DelegateIdentity)
    envelop.update({
                     'sender_pubkey': iden.der_pubkey,
                     'sender_delegation': iden.delegations
                   })
  end
  [req_id, CBOR.encode(envelop)]
end