Module: BSV::Wallet::Serializer::GetPublicKey::Args

Defined in:
lib/bsv/wallet/serializer/get_public_key.rb

Overview

Args wire layout:

[1 byte: identity_key flag — 0=no, 1=yes]
If 0: [key-related params][optional_bool for_self]
If 1: [privileged params only]
[optional_bool seek_permission]

Class Method Summary collapse

Class Method Details

.deserialize(bytes) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/bsv/wallet/serializer/get_public_key.rb', line 45

def deserialize(bytes)
  r = BSV::Wallet::Wire::Reader.new(bytes)
  flag = r.read_byte

  if flag == IDENTITY_KEY_FLAG
    privileged, reason = Common.read_privileged_params(r)
    seek_permission = r.read_optional_bool
    {
      identity_key: true,
      privileged: privileged,
      privileged_reason: reason,
      seek_permission: seek_permission
    }
  else
    params = Common.read_key_related_params(r)
    for_self = r.read_optional_bool
    seek_permission = r.read_optional_bool
    params.merge(identity_key: false, for_self: for_self, seek_permission: seek_permission)
  end
end

.serialize(args) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/bsv/wallet/serializer/get_public_key.rb', line 21

def serialize(args)
  identity_key = args[:identity_key]
  w = BSV::Wallet::Wire::Writer.new

  if identity_key
    w.write_byte(IDENTITY_KEY_FLAG)
    Common.write_privileged_params(w, args[:privileged], args[:privileged_reason])
  else
    w.write_byte(0)
    Common.write_key_related_params(
      w,
      protocol_id: args[:protocol_id],
      key_id: args[:key_id],
      counterparty: args[:counterparty],
      privileged: args[:privileged],
      privileged_reason: args[:privileged_reason]
    )
    w.write_optional_bool(args[:for_self])
  end

  w.write_optional_bool(args[:seek_permission])
  w.buf
end