Class: IcAgent::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/ic_agent/agent.rb

Class Method Summary collapse

Class Method Details

.sign_request(req, iden) ⇒ Array

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

Parameters:

  • req (Hash)

    The request to be signed.

  • iden (Identity)

    The identity used for signing.

Returns:

  • (Array)

    The request ID and the encoded signed request.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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