Exemplo n.º 1
0
 def test_double(self):
     x_rd = string_to_long("7669e690 1606ee3b a1a8eef1 e0024c33 df6c22f3"
         "b17481b8 2a860ffc db6127b0")
     y_rd = string_to_long("fa878162 187a54f6 c39f6ee0 072f33de 389ef3ee"
         "cd03023d e10ca2c1 db61d0c7")
     R_d = self.group.double(self.S)
     self.assertEqual(R_d, (x_rd, y_rd))
Exemplo n.º 2
0
 def test_subtraction(self):
     x_rs = string_to_long("c09ce680 b251bb1d 2aad1dbf 6129deab 837419f8"
         "f1c73ea1 3e7dc64a d6be6021")
     y_rs = string_to_long("1a815bf7 00bd8833 6b2f9bad 4edab172 3414a022"
         "fdf6c3f4 ce30675f b1975ef3")
     R_s = self.group.add(self.S, self.group.inverse(self.T))
     self.assertEqual(R_s, (x_rs, y_rs))
Exemplo n.º 3
0
 def test_addition(self):
     x_r = string_to_long("72b13dd4 354b6b81 745195e9 8cc5ba69 70349191"
         "ac476bd4 553cf35a 545a067e")
     y_r = string_to_long("8d585cbb 2e1327d7 5241a8a1 22d7620d c33b1331"
         "5aa5c9d4 6d013011 744ac264")
     R = self.group.add(self.S, self.T)
     self.assertEqual(R, (x_r, y_r))
Exemplo n.º 4
0
def numsp256t1():
    p = string_to_long("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\
        FFFFFFFFFFFFF43")
    a = string_to_long("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\
        FFFFFFFFFFFF42")
    d = string_to_long("3BEE")
    r = string_to_long("3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE6AA55AD0A6BC64E5B\
        84E6F1122B4AD")
    gx = 13
    gy = 56558017671127616723941111350859963393592894419123286895630403139519716830650
    return edecc.EdwardsCurve(p, d, 1, r, gx, gy)
Exemplo n.º 5
0
def curvep256():
    p = string_to_long("ffffffff 00000001 00000000 00000000 00000000 ffffffff"
        "ffffffff ffffffff")
    a = p - 3
    b = string_to_long("5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6"
        "3bce3c3e 27d2604b")
    q = string_to_long("ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84"
        "f3b9cac2 fc632551")
    k = 1000
    g_x = string_to_long("6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81"
        "2deb33a0 f4a13945 d898c296")
    g_y = string_to_long("4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357"
        "6b315ece cbb64068 37bf51f5")
    return EllipticCurve(a, b, p, q, k, g_x, g_y)
Exemplo n.º 6
0
    def test_operations_basic(self):
        # Values obtained from NIST Routines handbook:
        # http://www.nsa.gov/ia/_files/nist-routines.pdf
        x_s = string_to_long("de2444be bc8d36e6 82edd27e 0f271508 617519b3"
            "221a8fa0 b77cab39 89da97c9")
        y_s = string_to_long("c093ae7f f36e5380 fc01a5aa d1e66659 702de80f"
            "53cec576 b6350b24 3042a256")
        S = (x_s, y_s)

        x_t = string_to_long("55a8b00f 8da1d44e 62f6b3b2 5316212e 39540dc8"
            "61c89575 bb8cf92e 35e0986b")
        y_t = string_to_long("5421c320 9c2d6c70 4835d82a c4c3dd90 f61a8a52"
            "598b9e7a b656e9d8 c8b24316")
        T = (x_t, y_t)
        return (S, T)
Exemplo n.º 7
0
def diffiehellman_1024():
    g = string_to_long("A4D1CBD5 C3FD3412 6765A442 EFB99905 F8104DD2 58AC507F"
        "D6406CFF 14266D31 266FEA1E 5C41564B 777E690F 5504F213"
        "160217B4 B01B886A 5E91547F 9E2749F4 D7FBD7D3 B9A92EE1"
        "909D0D22 63F80A76 A6A24C08 7A091F53 1DBF0A01 69B6A28A"
        "D662A4D1 8E73AFA3 2D779D59 18D08BC8 858F4DCE F97C2A24"
        "855E6EEB 22B3B2E5")
    p = string_to_long("B10B8F96 A080E01D DE92DE5E AE5D54EC 52C99FBC FB06A3C6"
        "9A6A9DCA 52D23B61 6073E286 75A23D18 9838EF1E 2EE652C0"
        "13ECB4AE A9061123 24975C3C D49B83BF ACCBDD7D 90C4BD70"
        "98488E9C 219A7372 4EFFD6FA E5644738 FAA31A4F F55BCCC0"
        "A151AF5F 0DC8B4BD 45BF37DF 365C1A65 E68CFDA7 6D4DA708"
        "DF1FB2BC 2E4A4371")
    q = string_to_long("F518AA87 81A8DF27 8ABA4E7D 64B7CB9D 49462353")
    r = 2
    return SchnorrGroup(p, g, q, r)
Exemplo n.º 8
0
def diffiehellman_1024():
    g = string_to_long("A4D1CBD5 C3FD3412 6765A442 EFB99905 F8104DD2 58AC507F"
                       "D6406CFF 14266D31 266FEA1E 5C41564B 777E690F 5504F213"
                       "160217B4 B01B886A 5E91547F 9E2749F4 D7FBD7D3 B9A92EE1"
                       "909D0D22 63F80A76 A6A24C08 7A091F53 1DBF0A01 69B6A28A"
                       "D662A4D1 8E73AFA3 2D779D59 18D08BC8 858F4DCE F97C2A24"
                       "855E6EEB 22B3B2E5")
    p = string_to_long("B10B8F96 A080E01D DE92DE5E AE5D54EC 52C99FBC FB06A3C6"
                       "9A6A9DCA 52D23B61 6073E286 75A23D18 9838EF1E 2EE652C0"
                       "13ECB4AE A9061123 24975C3C D49B83BF ACCBDD7D 90C4BD70"
                       "98488E9C 219A7372 4EFFD6FA E5644738 FAA31A4F F55BCCC0"
                       "A151AF5F 0DC8B4BD 45BF37DF 365C1A65 E68CFDA7 6D4DA708"
                       "DF1FB2BC 2E4A4371")
    q = string_to_long("F518AA87 81A8DF27 8ABA4E7D 64B7CB9D 49462353")
    r = 2
    return SchnorrGroup(p, g, q, r)
Exemplo n.º 9
0
def verdict_1024():
    p = string_to_long("fd8a16fc2afdaeb2ea62b66b355f73e6c2fc4349bf4551793"
        "36ca1b45f75d68da0101cba63c22efd5f72e5c81dc30cf709da"
        "aef2323e950160926e11ef8cbf40a26496668749218b5620276"
        "697c2d1536b31042ad846e1e5758d79b3e4e0b5bc4c5d3a4e95"
        "da4502e9058ea3beade156d8234e35d5164783c57e6135139db"
        "097")
    g = 2
    q = (p - 1) // 2
    r = 2
    return SchnorrGroup(p, g, q, r)
Exemplo n.º 10
0
def verdict_1024():
    p = string_to_long("fd8a16fc2afdaeb2ea62b66b355f73e6c2fc4349bf4551793"
                       "36ca1b45f75d68da0101cba63c22efd5f72e5c81dc30cf709da"
                       "aef2323e950160926e11ef8cbf40a26496668749218b5620276"
                       "697c2d1536b31042ad846e1e5758d79b3e4e0b5bc4c5d3a4e95"
                       "da4502e9058ea3beade156d8234e35d5164783c57e6135139db"
                       "097")
    g = 2
    q = (p - 1) // 2
    r = 2
    return SchnorrGroup(p, g, q, r)
Exemplo n.º 11
0
def ed25519():
    """ Edwards Curve version of curve25519.
    Base points obtained from
    http://tools.ietf.org/html/draft-ladd-safecurves-04
    """
    prime = pow(2, 255) - 19
    p = ModInt(prime, prime)
    d = ModInt(p)
    d.div(ModInt(p, -121665), ModInt(p, 121666))
    a = ModInt(p, -1)
    r = ModInt(p, (pow(2, 252) + 27742317777372353535851937790883648493 % p.v))
    gx = ModInt(p, string_to_long("216936 d3cd6e 53fec0 a4e231 fdd6dc 5c692c c76095 25a7b2 c9562d 608f25 d51a"))
    gy = ModInt(p)
    gy.div(ModInt(p, 4), ModInt(p, 5))
    return edwards.EdwardsCurve("Twisted Edwards w/ a = -1", p, d, a, r, gx, gy)
Exemplo n.º 12
0
    def test_multiplication(self):
        d = string_to_long("c51e4753 afdec1e6 b6c6a5b9 92f43f8d d0c7a893"
            "3072708b 6522468b 2ffb06fd")
        x_rm = string_to_long("51d08d5f 2d427888 2946d88d 83c97d11 e62becc3"
            "cfc18bed acc89ba3 4eeca03f")
        y_rm = string_to_long("75ee68eb 8bf626aa 5b673ab5 1f6e744e 06f8fcf8"
            "a6c0cf30 35beca95 6a7b41d5")
        R_m = self.group.multiply(self.S, d)
        self.assertEqual(R_m, (x_rm, y_rm))

        # Joint scalar multiply testing
        e = string_to_long("d37f628e ce72a462 f0145cbe fe3f0b35 5ee8332d"
            "37acdd83 a358016a ea029db7")
        x_j = string_to_long("d867b467 92210092 34939221 b8046245 efcf5841"
            "3daacbef f857b858 8341f6b8")
        y_j = string_to_long("f2504055 c03cede1 2d22720d ad69c745 106b6607"
            "ec7e50dd 35d54bd8 0f615275")

        R_j = self.group.add(self.group.multiply(self.S, d), \
            self.group.multiply(self.T, e))
        self.assertEqual(R_j, (x_j, y_j))