Sha256: 3db6bc85ddbe1b6146e51f8efd5ff0ecd7c788b27ff547ed37e839f8f13769b8

Contents?: true

Size: 1.55 KB

Versions: 13

Compression:

Stored size: 1.55 KB

Contents

module BTC
  class TestSignatureChecker
    include SignatureChecker
    
    def initialize(signature_hash: nil, timestamp: nil)
      @signature_hash = signature_hash
      @timestamp = timestamp
    end
    
    # for testing check_signature
    def signature_hash
      @signature_hash
    end
    
    # for testing check_lock_time
    def timestamp
      @timestamp
    end
    
    def check_signature(script_signature:nil, public_key:nil, script:nil)
      # Signature must be long enough to contain a sighash byte.
      return false if script_signature.size < 1
      
      # Extract raw ECDSA signature by stripping off the last hashtype byte
      ecdsa_sig = script_signature[0..-2]

      key = BTC::Key.new(public_key: public_key)
      result = key.verify_ecdsa_signature(ecdsa_sig, hash)
      return result
    end

    def check_lock_time(lock_time)
      # There are two times of nLockTime: lock-by-blockheight
      # and lock-by-blocktime, distinguished by whether
      # nLockTime < LOCKTIME_THRESHOLD.
      #
      # We want to compare apples to apples, so fail the script
      # if the type of nLockTime being tested is not the same as
      # the nLockTime in the transaction.
      if !(
           (timestamp <  LOCKTIME_THRESHOLD && lock_time <  LOCKTIME_THRESHOLD) ||
           (timestamp >= LOCKTIME_THRESHOLD && lock_time >= LOCKTIME_THRESHOLD)
       )
        return false
      end

      # Now that we know we're comparing apples-to-apples, the
      # comparison is a simple numeric one.
      return timestamp >= lock_time
    end
    
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
btcruby-1.5 lib/btcruby/script/test_signature_checker.rb
btcruby-1.4 lib/btcruby/script/test_signature_checker.rb
btcruby-1.3 lib/btcruby/script/test_signature_checker.rb
btcruby-1.2.2 lib/btcruby/script/test_signature_checker.rb
btcruby-1.2.1 lib/btcruby/script/test_signature_checker.rb
btcruby-1.2 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1.6 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1.5 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1.4 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1.3 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1.2 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1.1 lib/btcruby/script/test_signature_checker.rb
btcruby-1.1 lib/btcruby/script/test_signature_checker.rb