class ECC::PublicKey

Attributes

point[R]

Public Class Methods

new( *args, group: SECP256K1 ) click to toggle source
# File lib/elliptic-lite/signature.rb, line 18
def initialize( *args, group: SECP256K1 )
  @group = group

  if args.size == 1     ## assume it's a point already -- todo/fix: check class via group - why? why not?
    @point = args[0]
  elsif args.size == 2  ## assume it's an x/y coord pair -- todo/fix: check must be Integer class/type - why? why not?
    @point = @group.point( *args )
  else
    raise ArgumentError, "expected point or x/y coords for point; got: #{args.inspect}"
  end
end

Public Instance Methods

verify?( z, sig ) click to toggle source
# File lib/elliptic-lite/signature.rb, line 30
def verify?( z, sig )
  s_inv = sig.s.pow( @group.n-2, @group.n )
  u = z * s_inv % @group.n
  v = sig.r * s_inv % @group.n

  total = u*@group.g + v*@point
  total.x == sig.r
end