Module: EllipticCurve::Curve

Defined in:
lib/curve.rb

Overview

Elliptic Curve Equation

y^2 = x^3 + A*x + B (mod P)

Defined Under Namespace

Classes: CurveFp

Constant Summary collapse

SECP256K1 =
CurveFp.new(
    0x0000000000000000000000000000000000000000000000000000000000000000,
    0x0000000000000000000000000000000000000000000000000000000000000007,
    0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f,
    0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141,
    0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,
    0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8,
    "secp256k1",
    [1, 3, 132, 0, 10]
)
PRIME256V1 =
CurveFp.new(
    0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc,
    0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b,
    0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff,
    0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551,
    0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296,
    0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5,
    "prime256v1",
    [1, 2, 840, 10045, 3, 1, 7],
    "p-256",
)
P256 =
PRIME256V1

Class Method Summary collapse

Class Method Details

.add(curve) ⇒ Object



55
56
57
# File 'lib/curve.rb', line 55

def self.add(curve)
    @_curvesByOid[curve.oid] = curve
end

.getbyOid(oid) ⇒ Object



59
60
61
62
63
64
# File 'lib/curve.rb', line 59

def self.getbyOid(oid)
    if not @_curvesByOid.include?(oid)
        raise Exception.new("Unknown curve oid: #{oid}; The following are registered: #{@_curvesByOid.map{|k,v| v.name}}")
    end
    return @_curvesByOid[oid]
end