Class: MandateClaw::DSL::Attestation

Inherits:
Object
  • Object
show all
Defined in:
lib/mandate_claw/dsl/attestation.rb

Overview

Defines signing requirements for the contract. A contract is not in force until all required parties have signed.

attestation do
  require_signature_from :buyer, :seller, :ai_agent
  sign_with :ed25519
end

Constant Summary collapse

SUPPORTED_ALGORITHMS =
%i[ed25519 hmac_sha256].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAttestation

Returns a new instance of Attestation.



18
19
20
21
# File 'lib/mandate_claw/dsl/attestation.rb', line 18

def initialize
  @required_signatories = []
  @algorithm = :ed25519
end

Instance Attribute Details

#algorithmObject (readonly)

Returns the value of attribute algorithm.



16
17
18
# File 'lib/mandate_claw/dsl/attestation.rb', line 16

def algorithm
  @algorithm
end

#required_signatoriesObject (readonly)

Returns the value of attribute required_signatories.



16
17
18
# File 'lib/mandate_claw/dsl/attestation.rb', line 16

def required_signatories
  @required_signatories
end

Instance Method Details

#require_signature_from(*parties) ⇒ Object



23
24
25
# File 'lib/mandate_claw/dsl/attestation.rb', line 23

def require_signature_from(*parties)
  @required_signatories.concat(parties.flatten)
end

#sign_with(algorithm) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/mandate_claw/dsl/attestation.rb', line 27

def sign_with(algorithm)
  unless SUPPORTED_ALGORITHMS.include?(algorithm)
    raise ArgumentError, "Unsupported signing algorithm: #{algorithm}. " \
                         "Supported: #{SUPPORTED_ALGORITHMS.join(', ')}"
  end
  @algorithm = algorithm
end