Add support for extension field curves.

This commit is contained in:
J08nY
2020-08-08 19:06:45 +02:00
parent 28d25d938c
commit 7991278b3f
9 changed files with 571 additions and 394 deletions

4
.gitignore vendored
View File

@@ -2,4 +2,6 @@
node_modules/
package-lock.json
public/
src/
src/
.idea/
*.sage.py

View File

@@ -110,12 +110,25 @@ def get_curve_group(data):
return E, G
elif data["field"]["type"] == "Binary":
F.<x> = GF(2)[]
poly = sum(x^i for i in [data["field"]["poly"]["m"], data["field"]["poly"].get("e1"), data["field"]["poly"].get("e2"), data["field"]["poly"].get("e3"), 0] if i is not None)
K = GF(2^data["field"]["poly"]["m"], name="x", modulus=poly)
poly = sum(F(int(elem["coeff"], 16)) * x^elem["power"] for elem in data["field"]["poly"])
K = GF(2^data["field"]["degree"], name="x", modulus=poly)
E = EllipticCurve(K, (1, K.fetch_int(int(data["params"]["a"], 16)), 0, 0, K.fetch_int(int(data["params"]["b"], 16))))
E.set_order(int(data["order"], 16) * int(data["cofactor"], 16))
G = E(K.fetch_int(int(data["generator"]["x"], 16)), K.fetch_int(int(data["generator"]["y"], 16)))
return E, G
elif data["field"]["type"] == "Extension":
base = int(data["field"]["base"], 16)
F.<x> = GF(base)[]
poly = sum(F(int(elem["coeff"], 16)) * x^elem["power"] for elem in data["field"]["poly"])
K = GF(base^data["field"]["degree"], name="x", modulus=poly)
a = K(sum(F(int(elem["coeff"], 16)) * x^elem["power"] for elem in data["params"]["a"]))
b = K(sum(F(int(elem["coeff"], 16)) * x^elem["power"] for elem in data["params"]["b"]))
E = EllipticCurve(K, (a, b))
E.set_order(int(data["order"], 16) * int(data["cofactor"], 16))
gx = K(sum(F(int(elem["coeff"], 16)) * x^elem["power"] for elem in data["generator"]["x"]))
gy = K(sum(F(int(elem["coeff"], 16)) * x^elem["power"] for elem in data["generator"]["y"]))
G = E(gx, gy)
return E, G
else:
raise ValueError()

View File

@@ -242,16 +242,18 @@
{
"name": "K-163",
"category": "nist",
"desc": "",
"desc": "Koblitz curve.",
"field": {
"type": "Binary",
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
},
"bits": 163
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"form": "Weierstrass",
"params": {
@@ -283,13 +285,15 @@
"desc": "",
"field": {
"type": "Binary",
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
},
"bits": 163
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"form": "Weierstrass",
"params": {
@@ -319,14 +323,16 @@
{
"name": "K-233",
"category": "nist",
"desc": "",
"desc": "Koblitz curve.",
"field": {
"type": "Binary",
"poly": {
"m": 233,
"e1": 74
},
"bits": 233
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"degree": 233
},
"form": "Weierstrass",
"params": {
@@ -359,11 +365,13 @@
"desc": "",
"field": {
"type": "Binary",
"poly": {
"m": 233,
"e1": 74
},
"bits": 233
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"degree": 233
},
"form": "Weierstrass",
"params": {
@@ -394,16 +402,18 @@
{
"name": "K-283",
"category": "nist",
"desc": "",
"desc": "Koblitz curve.",
"field": {
"type": "Binary",
"poly": {
"m": 283,
"e1": 12,
"e2": 7,
"e3": 5
},
"bits": 283
"poly": [
{"power": 283, "coeff": "0x01"},
{"power": 12, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 283,
"degree": 283
},
"form": "Weierstrass",
"params": {
@@ -436,13 +446,15 @@
"desc": "",
"field": {
"type": "Binary",
"poly": {
"m": 283,
"e1": 12,
"e2": 7,
"e3": 5
},
"bits": 283
"poly": [
{"power": 283, "coeff": "0x01"},
{"power": 12, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 283,
"degree": 283
},
"form": "Weierstrass",
"params": {
@@ -472,14 +484,16 @@
{
"name": "K-409",
"category": "nist",
"desc": "",
"desc": "Koblitz curve.",
"field": {
"type": "Binary",
"poly": {
"m": 409,
"e1": 87
},
"bits": 409
"poly": [
{"power": 409, "coeff": "0x01"},
{"power": 87, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 409,
"degree": 409
},
"form": "Weierstrass",
"params": {
@@ -510,11 +524,13 @@
"desc": "",
"field": {
"type": "Binary",
"poly": {
"m": 409,
"e1": 87
},
"bits": 409
"poly": [
{"power": 409, "coeff": "0x01"},
{"power": 87, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 409,
"degree": 409
},
"form": "Weierstrass",
"params": {
@@ -542,16 +558,18 @@
{
"name": "K-571",
"category": "nist",
"desc": "",
"desc": "Koblitz curve.",
"field": {
"type": "Binary",
"poly": {
"m": 571,
"e1": 10,
"e2": 5,
"e3": 2
},
"bits": 571
"poly": [
{"power": 571, "coeff": "0x01"},
{"power": 10, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 571,
"degree": 571
},
"form": "Weierstrass",
"params": {
@@ -582,13 +600,15 @@
"desc": "",
"field": {
"type": "Binary",
"poly": {
"m": 571,
"e1": 10,
"e2": 5,
"e3": 2
},
"bits": 571
"poly": [
{"power": 571, "coeff": "0x01"},
{"power": 10, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 571,
"degree": 571
},
"form": "Weierstrass",
"params": {

View File

@@ -363,6 +363,38 @@
]
}
},
{
"name": "Fp254n2BNa",
"category": "other",
"desc": "Curve used in: https://eprint.iacr.org/2010/354.pdf",
"field": {
"type": "Extension",
"base": "0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001",
"bits": 508,
"degree": 2,
"poly": [
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x05"}
]
},
"form": "Weierstrass",
"params": {
"a": [{"power": 0, "coeff": "0x00"}],
"b": [{"power": 1, "coeff": "0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000000"}]
},
"generator": {
"x": [
{"power": 1, "coeff": "0xa1cf585585a61c6e9880b1f2a5c539f7d906fff238fa6341e1de1a2e45c3f72"},
{"power": 0, "coeff": "0x19b0bea4afe4c330da93cc3533da38a9f430b471c6f8a536e81962ed967909b5"}
],
"y": [
{"power": 1, "coeff": "0x0ee97d6de9902a27d00e952232a78700863bc9aa9be960C32f5bf9fd0a32d345"},
{"power": 0, "coeff": "0x17abd366ebbd65333e49c711a80a0cf6d24adf1b9b3990eedcc91731384d2627"}
]
},
"order": "0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001",
"cofactor": "0x2370fb049d410fbe4e761a9886e50241dc42cf101e0000017e80600000000001"
},
{
"name": "Fp254BNb",
"category": "other",

View File

@@ -5,35 +5,51 @@
"type": "string",
"pattern": "^(0x[0-9a-fA-F]+|[0-9]+)$"
},
"Polynomial": {
"type": "array",
"items": {
"type": "object",
"properties": {
"power": {"type": "integer"},
"coeff": {"$ref": "#/definitions/Number"}
}
}
},
"Element": {
"anyOf": [
{"$ref": "#/definitions/Number"},
{"$ref": "#/definitions/Polynomial"}
]
},
"Weierstrass": {
"type": "object",
"properties": {
"a": {"$ref": "#/definitions/Number"},
"b": {"$ref": "#/definitions/Number"}
"a": {"$ref": "#/definitions/Element"},
"b": {"$ref": "#/definitions/Element"}
},
"required": ["a", "b"]
},
"Edwards": {
"type": "object",
"properties": {
"c": {"$ref": "#/definitions/Number"},
"d": {"$ref": "#/definitions/Number"}
"c": {"$ref": "#/definitions/Element"},
"d": {"$ref": "#/definitions/Element"}
},
"required": ["c", "d"]
},
"TwistedEdwards": {
"type": "object",
"properties": {
"a": {"$ref": "#/definitions/Number"},
"d": {"$ref": "#/definitions/Number"}
"a": {"$ref": "#/definitions/Element"},
"d": {"$ref": "#/definitions/Element"}
},
"required": ["a", "d"]
},
"Montgomery": {
"type": "object",
"properties": {
"a": {"$ref": "#/definitions/Number"},
"b": {"$ref": "#/definitions/Number"}
"a": {"$ref": "#/definitions/Element"},
"b": {"$ref": "#/definitions/Element"}
},
"required": ["a", "b"]
},
@@ -46,43 +62,33 @@
},
"required": ["p", "bits"]
},
"Trinomial": {
"type": "object",
"properties": {
"m": {"type": "integer"},
"e1": {"type": "integer"}
},
"required": ["m", "e1"]
},
"Pentanomial": {
"type": "object",
"properties": {
"m": {"type": "integer"},
"e1": {"type": "integer"},
"e2": {"type": "integer"},
"e3": {"type": "integer"}
},
"required": ["m", "e1", "e2", "e3"]
},
"BinaryField": {
"type": "object",
"properties": {
"type": {"const": "Binary"},
"poly": {
"anyOf": [
{"$ref": "#/definitions/Trinomial"},
{"$ref": "#/definitions/Pentanomial"}
]
},
"base": {"const": "0x02"},
"degree": {"type": "integer"},
"poly": {"$ref": "#/definitions/Polynomial"},
"bits": {"type": "integer"}
},
"required": ["poly", "bits"]
"required": ["degree", "poly", "bits"]
},
"ExtenstionField": {
"type": "object",
"properties": {
"type": {"const": "Extension"},
"base": {"$ref": "#/definitions/Number"},
"degree": {"type": "integer"},
"poly": {"$ref": "#/definitions/Polynomial"},
"bits": {"type": "integer"}
},
"required": ["base", "degree", "poly", "bits"]
},
"Point": {
"type": "object",
"properties": {
"x": {"$ref": "#/definitions/Number"},
"y": {"$ref": "#/definitions/Number"}
"x": {"$ref": "#/definitions/Element"},
"y": {"$ref": "#/definitions/Element"}
},
"required": ["x", "y"]
},
@@ -96,7 +102,8 @@
"field": {
"oneOf": [
{"$ref": "#/definitions/PrimeField"},
{"$ref": "#/definitions/BinaryField"}
{"$ref": "#/definitions/BinaryField"},
{"$ref": "#/definitions/ExtenstionField"}
]
},
"form": {

View File

@@ -899,10 +899,12 @@
"field": {
"type": "Binary",
"bits": 113,
"poly": {
"m": 113,
"e1": 9
}
"poly": [
{"power": 113, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"degree": 113
},
"params": {
"a": "0x003088250ca6e7c7fe649ce85820f7",
@@ -927,10 +929,12 @@
"field": {
"type": "Binary",
"bits": 113,
"poly": {
"m": 113,
"e1": 9
}
"poly": [
{"power": 113, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"degree": 113
},
"params": {
"a": "0x00689918dbec7e5a0dd6dfc0aa55c7",
@@ -952,12 +956,14 @@
"field": {
"type": "Binary",
"bits": 131,
"poly": {
"m": 131,
"e1": 8,
"e2": 3,
"e3": 2
}
"poly": [
{"power": 131, "coeff": "0x01"},
{"power": 8, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"degree": 131
},
"params": {
"a": "0x07a11b09a76b562144418ff3ff8c2570b8",
@@ -979,12 +985,14 @@
"field": {
"type": "Binary",
"bits": 131,
"poly": {
"m": 131,
"e1": 8,
"e2": 3,
"e3": 2
}
"poly": [
{"power": 131, "coeff": "0x01"},
{"power": 8, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"degree": 131
},
"params": {
"a": "0x03e5a88919d7cafcbf415f07c2176573b2",
@@ -1004,13 +1012,15 @@
"oid": "1.3.132.0.1",
"field": {
"type": "Binary",
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
},
"bits": 163
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"form": "Weierstrass",
"params": {
@@ -1045,13 +1055,15 @@
"oid": "1.3.132.0.2",
"field": {
"type": "Binary",
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
},
"bits": 163
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"form": "Weierstrass",
"params": {
@@ -1084,13 +1096,15 @@
"oid": "1.3.132.0.15",
"field": {
"type": "Binary",
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
},
"bits": 163
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"form": "Weierstrass",
"params": {
@@ -1126,10 +1140,12 @@
"field": {
"type": "Binary",
"bits": 193,
"poly": {
"m": 193,
"e1": 15
}
"poly": [
{"power": 193, "coeff": "0x01"},
{"power": 15, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"degree": 193
},
"params": {
"a": "0x0017858feb7a98975169e171f77b4087de098ac8a911df7b01",
@@ -1154,10 +1170,12 @@
"field": {
"type": "Binary",
"bits": 193,
"poly": {
"m": 193,
"e1": 15
}
"poly": [
{"power": 193, "coeff": "0x01"},
{"power": 15, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"degree": 193
},
"params": {
"a": "0x0163f35a5137c2ce3ea6ed8667190b0bc43ecd69977702709b",
@@ -1180,11 +1198,13 @@
"oid": "1.3.132.0.26",
"field": {
"type": "Binary",
"poly": {
"m": 233,
"e1": 74
},
"bits": 233
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"degree": 233
},
"form": "Weierstrass",
"params": {
@@ -1217,11 +1237,13 @@
"oid": "1.3.132.0.27",
"field": {
"type": "Binary",
"poly": {
"m": 233,
"e1": 74
},
"bits": 233
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"degree": 233
},
"form": "Weierstrass",
"params": {
@@ -1256,11 +1278,13 @@
"oid": "1.3.132.0.3",
"field": {
"type": "Binary",
"poly": {
"m": 239,
"e1": 158
},
"bits": 233
"poly": [
{"power": 239, "coeff": "0x01"},
{"power": 158, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"degree": 233
},
"form": "Weierstrass",
"params": {
@@ -1293,13 +1317,15 @@
"oid": "1.3.132.0.16",
"field": {
"type": "Binary",
"poly": {
"m": 283,
"e1": 12,
"e2": 7,
"e3": 5
},
"bits": 283
"poly": [
{"power": 283, "coeff": "0x01"},
{"power": 12, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 283,
"degree": 283
},
"form": "Weierstrass",
"params": {
@@ -1333,13 +1359,15 @@
"oid": "1.3.132.0.17",
"field": {
"type": "Binary",
"poly": {
"m": 283,
"e1": 12,
"e2": 7,
"e3": 5
},
"bits": 283
"poly": [
{"power": 283, "coeff": "0x01"},
{"power": 12, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 283,
"degree": 283
},
"form": "Weierstrass",
"params": {
@@ -1373,11 +1401,13 @@
"oid": "1.3.132.0.36",
"field": {
"type": "Binary",
"poly": {
"m": 409,
"e1": 87
},
"bits": 409
"poly": [
{"power": 409, "coeff": "0x01"},
{"power": 87, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 409,
"degree": 409
},
"form": "Weierstrass",
"params": {
@@ -1409,11 +1439,13 @@
"oid": "1.3.132.0.37",
"field": {
"type": "Binary",
"poly": {
"m": 409,
"e1": 87
},
"bits": 409
"poly": [
{"power": 409, "coeff": "0x01"},
{"power": 87, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 409,
"degree": 409
},
"form": "Weierstrass",
"params": {
@@ -1445,13 +1477,15 @@
"oid": "1.3.132.0.38",
"field": {
"type": "Binary",
"poly": {
"m": 571,
"e1": 10,
"e2": 5,
"e3": 2
},
"bits": 571
"poly": [
{"power": 571, "coeff": "0x01"},
{"power": 10, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 571,
"degree": 571
},
"form": "Weierstrass",
"params": {
@@ -1483,13 +1517,15 @@
"oid": "1.3.132.0.39",
"field": {
"type": "Binary",
"poly": {
"m": 571,
"e1": 10,
"e2": 5,
"e3": 2
},
"bits": 571
"poly": [
{"power": 571, "coeff": "0x01"},
{"power": 10, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 571,
"degree": 571
},
"form": "Weierstrass",
"params": {

View File

@@ -6,10 +6,12 @@
"desc": "",
"field": {
"bits": 113,
"poly": {
"e1": 9,
"m": 113
},
"degree": 113,
"poly": [
{"power": 113, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"type": "Binary"
},
"form": "Weierstrass",
@@ -30,14 +32,16 @@
"cofactor": "0x2",
"desc": "",
"field": {
"type": "Binary",
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"poly": {
"e1": 7,
"e2": 6,
"e3": 2,
"m": 163
},
"type": "Binary"
"degree": 163
},
"form": "Weierstrass",
"generator": {
@@ -63,10 +67,12 @@
"desc": "",
"field": {
"bits": 113,
"poly": {
"e1": 9,
"m": 113
},
"degree": 113,
"poly": [
{"power": 113, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"type": "Binary"
},
"form": "Weierstrass",
@@ -94,12 +100,14 @@
"field": {
"type": "Binary",
"bits": 163,
"poly": {
"m": 163,
"e1": 8,
"e2": 2,
"e3": 1
}
"degree": 163,
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 8, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x072546b5435234a422e0789675f432c89435de5242",
@@ -126,7 +134,7 @@
},
"form": "Weierstrass",
"generator": {
"x": "0x09487239995a5ee76b55f9c2f098,",
"x": "0x09487239995a5ee76b55f9c2f098",
"y": "0xa89ce5af8724c0a23e0e0ff77500"
},
"name": "wap-wsg-idm-ecid-wtls6",
@@ -151,7 +159,7 @@
},
"form": "Weierstrass",
"generator": {
"x": "0x4a96b5688ef573284664698968c38bb913cbfc82,",
"x": "0x4a96b5688ef573284664698968c38bb913cbfc82",
"y": "0x23a628553168947d59dcc912042351377ac5fb32"
},
"name": "wap-wsg-idm-ecid-wtls7",
@@ -215,16 +223,18 @@
"cofactor": "0x4",
"desc": "",
"field": {
"type": "Binary",
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"poly": {
"e1": 74,
"m": 233
},
"type": "Binary"
"degree": 233
},
"form": "Weierstrass",
"generator": {
"x": "0x017232ba853a7e731af129f22ff4149563a419c26bf50a4c9d6eefad6126,",
"x": "0x017232ba853a7e731af129f22ff4149563a419c26bf50a4c9d6eefad6126",
"y": "0x01db537dece819b7f70f555a67c427a8cd9bf18aeb9b56e0c11056fae6a3"
},
"name": "wap-wsg-idm-ecid-wtls10",
@@ -245,12 +255,14 @@
"cofactor": "0x2",
"desc": "",
"field": {
"type": "Binary",
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"poly": {
"e1": 74,
"m": 233
},
"type": "Binary"
"degree": 233
},
"form": "Weierstrass",
"generator": {

View File

@@ -352,12 +352,14 @@
"field": {
"type": "Binary",
"bits": 176,
"poly": {
"m": 176,
"e1": 43,
"e2": 2,
"e3": 1
}
"degree": 176,
"poly": [
{"power": 176, "coeff": "0x01"},
{"power": 43, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0xe4e6db2995065c407d9d39b8d0967b96704ba8e9c90b",
@@ -379,12 +381,14 @@
"field": {
"type": "Binary",
"bits": 163,
"poly": {
"m": 163,
"e1": 8,
"e2": 2,
"e3": 1
}
"degree": 163,
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 8, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x072546b5435234a422e0789675f432c89435de5242",
@@ -406,12 +410,14 @@
"field": {
"type": "Binary",
"bits": 163,
"poly": {
"m": 163,
"e1": 8,
"e2": 2,
"e3": 1
}
"degree": 163,
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 8, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x0108b39e77c4b108bed981ed0e890e117c511cf072",
@@ -433,12 +439,14 @@
"field": {
"type": "Binary",
"bits": 163,
"poly": {
"m": 163,
"e1": 8,
"e2": 2,
"e3": 1
}
"degree": 163,
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 8, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x07a526c63d3e25a256a007699f5447e32ae456b50e",
@@ -460,12 +468,14 @@
"field": {
"type": "Binary",
"bits": 208,
"poly": {
"m": 208,
"e1": 83,
"e2": 2,
"e3": 1
}
"degree": 208,
"poly": [
{"power": 208, "coeff": "0x01"},
{"power": 83, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x0",
@@ -487,10 +497,12 @@
"field": {
"type": "Binary",
"bits": 191,
"poly": {
"m": 191,
"e1": 9
}
"degree": 191,
"poly": [
{"power": 191, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x6c01074756099122221056911c77d77e77a777e7e7e77fcb",
@@ -512,10 +524,12 @@
"field": {
"type": "Binary",
"bits": 191,
"poly": {
"m": 191,
"e1": 9
}
"degree": 191,
"poly": [
{"power": 191, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x401028774d7777c7b7666d1366ea432071274f89ff01e718",
@@ -537,10 +551,12 @@
"field": {
"type": "Binary",
"bits": 191,
"poly": {
"m": 191,
"e1": 9
}
"degree": 191,
"poly": [
{"power": 191, "coeff": "0x01"},
{"power": 9, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x2866537b676752636a68f56554e12640276b649ef7526267",
@@ -562,10 +578,12 @@
"field": {
"type": "Binary",
"bits": 239,
"poly": {
"m": 239,
"e1": 36
}
"degree": 239,
"poly": [
{"power": 239, "coeff": "0x01"},
{"power": 36, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x01238774666a67766d6676f778e676b66999176666e687666d8766c66a9f",
@@ -587,10 +605,12 @@
"field": {
"type": "Binary",
"bits": 239,
"poly": {
"m": 239,
"e1": 36
}
"degree": 239,
"poly": [
{"power": 239, "coeff": "0x01"},
{"power": 36, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x4230017757a767fae42398569b746325d45313af0766266479b75654e65f",
@@ -612,10 +632,12 @@
"field": {
"type": "Binary",
"bits": 239,
"poly": {
"m": 239,
"e1": 36
}
"degree": 239,
"poly": [
{"power": 239, "coeff": "0x01"},
{"power": 36, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x32010857077c5431123a46b808906756f543423e8d27877578125778ac76",
@@ -637,12 +659,14 @@
"field": {
"type": "Binary",
"bits": 272,
"poly": {
"m": 272,
"e1": 56,
"e2": 3,
"e3": 1
}
"degree": 272,
"poly": [
{"power": 272, "coeff": "0x01"},
{"power": 56, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x91a091f03b5fba4ab2ccf49c4edd220fb028712d42be752b2c40094dbacdb586fb20",
@@ -664,12 +688,14 @@
"field": {
"type": "Binary",
"bits": 304,
"poly": {
"m": 304,
"e1": 11,
"e2": 2,
"e3": 1
}
"degree": 304,
"poly": [
{"power": 304, "coeff": "0x01"},
{"power": 11, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0xfd0d693149a118f651e6dce6802085377e5f882d1b510b44160074c1288078365a0396c8e681",
@@ -691,12 +717,14 @@
"field": {
"type": "Binary",
"bits": 368,
"poly": {
"m": 368,
"e1": 85,
"e2": 2,
"e3": 1
}
"degree": 368,
"poly": [
{"power": 368, "coeff": "0x01"},
{"power": 85, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 1, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0xe0d2ee25095206f5e2a4f9ed229f1f256e79a0e2b455970d8d0d865bd94778c576d62f0ab7519ccd2a1a906ae30d",
@@ -718,10 +746,12 @@
"field": {
"type": "Binary",
"bits": 359,
"poly": {
"m": 359,
"e1": 68
}
"degree": 359,
"poly": [
{"power": 359, "coeff": "0x01"},
{"power": 68, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x5667676a654b20754f356ea92017d946567c46675556f19556a04616b567d223a5e05656fb549016a96656a557",
@@ -743,10 +773,12 @@
"field": {
"type": "Binary",
"bits": 431,
"poly": {
"m": 431,
"e1": 120
}
"degree": 431,
"poly": [
{"power": 431, "coeff": "0x01"},
{"power": 120, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x1a827ef00dd6fc0e234caf046c6a5d8a85395b236cc4ad2cf32a0cadbdc9ddf620b0eb9906d0957f6c6feacd615468df104de296cd8f",

View File

@@ -10,13 +10,15 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
}
"degree": 163
},
"params": {
"a": "0x000000000000000000000000000000000000000001",
@@ -36,13 +38,15 @@
"oid": "",
"field": {
"type": "Binary",
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
},
"bits": 163
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"form": "Weierstrass",
"params": {
@@ -67,13 +71,15 @@
"oid": "",
"field": {
"type": "Binary",
"bits": 193,
"poly": {
"m": 163,
"e1": 7,
"e2": 6,
"e3": 3
}
"poly": [
{"power": 163, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 6, "coeff": "0x01"},
{"power": 3, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 163,
"degree": 163
},
"params": {
"a": "0x000000000000000000000000000000000000000001",
@@ -99,10 +105,11 @@
"field": {
"type": "Binary",
"bits": 193,
"poly": {
"m": 193,
"e1": 15
}
"poly": [
{"power": 193, "coeff": "0x01"},
{"power": 15, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x0017858feb7a98975169e171f77b4087de098ac8a911df7b01",
@@ -127,10 +134,11 @@
"field": {
"type": "Binary",
"bits": 193,
"poly": {
"m": 193,
"e1": 15
}
"poly": [
{"power": 193, "coeff": "0x01"},
{"power": 15, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x0163f35a5137c2ce3ea6ed8667190b0bc43ecd69977702709b",
@@ -154,11 +162,13 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"poly": {
"m": 233,
"e1": 74
}
"degree": 233
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000000",
@@ -184,11 +194,13 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 233, "coeff": "0x01"},
{"power": 74, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 233,
"poly": {
"m": 233,
"e1": 74
}
"degree": 233
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000001",
@@ -215,10 +227,11 @@
"field": {
"type": "Binary",
"bits": 239,
"poly": {
"m": 239,
"e1": 158
}
"poly": [
{"power": 239, "coeff": "0x01"},
{"power": 158, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000000",
@@ -243,12 +256,13 @@
"field": {
"type": "Binary",
"bits": 283,
"poly": {
"m": 283,
"e1": 12,
"e2": 7,
"e3": 5
}
"poly": [
{"power": 283, "coeff": "0x01"},
{"power": 12, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000000000000000000",
@@ -274,12 +288,13 @@
"field": {
"type": "Binary",
"bits": 283,
"poly": {
"m": 283,
"e1": 12,
"e2": 7,
"e3": 5
}
"poly": [
{"power": 283, "coeff": "0x01"},
{"power": 12, "coeff": "0x01"},
{"power": 7, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
]
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000000000000000001",
@@ -304,11 +319,13 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 409, "coeff": "0x01"},
{"power": 87, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 409,
"poly": {
"m": 409,
"e1": 87
}
"degree": 409
},
"params": {
"a": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
@@ -333,11 +350,13 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 409, "coeff": "0x01"},
{"power": 87, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 409,
"poly": {
"m": 409,
"e1": 87
}
"degree": 409
},
"params": {
"a": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
@@ -362,13 +381,15 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 571, "coeff": "0x01"},
{"power": 10, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 571,
"poly": {
"m": 571,
"e1": 10,
"e2": 5,
"e3": 2
}
"degree": 571
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
@@ -393,13 +414,15 @@
"oid": "",
"field": {
"type": "Binary",
"poly": [
{"power": 571, "coeff": "0x01"},
{"power": 10, "coeff": "0x01"},
{"power": 5, "coeff": "0x01"},
{"power": 2, "coeff": "0x01"},
{"power": 0, "coeff": "0x01"}
],
"bits": 571,
"poly": {
"m": 571,
"e1": 10,
"e2": 5,
"e3": 2
}
"degree": 571
},
"params": {
"a": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",