Sha256: 9e645ef1e9f928feb360c997ddc8ec4f68dd30438715f4a60b1c76be6aff5221
Contents?: true
Size: 909 Bytes
Versions: 1
Compression:
Stored size: 909 Bytes
Contents
# encoding: ascii-8bit require 'openssl' module MoneyTree module OpenSSLExtensions def self.add(point_0, point_1) validate_points(point_0, point_1) group = OpenSSL::PKey::EC::Group.new('secp256k1') point_0_hex = point_0.to_bn.to_s(16) point_0_pt = OpenSSL::PKey::EC::Point.new(group, OpenSSL::BN.new(point_0_hex, 16)) point_1_hex = point_1.to_bn.to_s(16) point_1_pt = OpenSSL::PKey::EC::Point.new(group, OpenSSL::BN.new(point_1_hex, 16)) sum_point = point_0_pt.add(point_1_pt) sum_point.to_bn.to_s(16) end def self.validate_points(*points) points.each do |point| if !point.is_a?(OpenSSL::PKey::EC::Point) raise ArgumentError, "point must be an OpenSSL::PKey::EC::Point object" elsif point.infinity? raise ArgumentError, "point must not be infinity" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
money-tree-openssl-1.1 | lib/openssl_extensions.rb |