mirror of
https://github.com/J08nY/std-curves.git
synced 2026-01-08 21:07:57 -05:00
200 lines
4.4 KiB
JSON
200 lines
4.4 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/schema#",
|
|
"definitions": {
|
|
"Number": {
|
|
"type": "string",
|
|
"pattern": "^(0x[0-9a-fA-F]+|[0-9]+)?$"
|
|
},
|
|
"Polynomial": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"power": {"type": "integer"},
|
|
"coeff": {"$ref": "#/definitions/Number"}
|
|
},
|
|
"required": ["power", "coeff"]
|
|
}
|
|
},
|
|
"Element": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"raw": {"$ref": "#/definitions/Number"}
|
|
},
|
|
"required": ["raw"]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"poly": {"$ref": "#/definitions/Polynomial"}
|
|
},
|
|
"required": ["poly"]
|
|
}
|
|
]
|
|
},
|
|
"Weierstrass": {
|
|
"type": "object",
|
|
"properties": {
|
|
"a": {"$ref": "#/definitions/Element"},
|
|
"b": {"$ref": "#/definitions/Element"}
|
|
},
|
|
"required": ["a", "b"]
|
|
},
|
|
"Edwards": {
|
|
"type": "object",
|
|
"properties": {
|
|
"c": {"$ref": "#/definitions/Element"},
|
|
"d": {"$ref": "#/definitions/Element"}
|
|
},
|
|
"required": ["c", "d"]
|
|
},
|
|
"TwistedEdwards": {
|
|
"type": "object",
|
|
"properties": {
|
|
"a": {"$ref": "#/definitions/Element"},
|
|
"d": {"$ref": "#/definitions/Element"}
|
|
},
|
|
"required": ["a", "d"]
|
|
},
|
|
"Montgomery": {
|
|
"type": "object",
|
|
"properties": {
|
|
"a": {"$ref": "#/definitions/Element"},
|
|
"b": {"$ref": "#/definitions/Element"}
|
|
},
|
|
"required": ["a", "b"]
|
|
},
|
|
"PrimeField": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {"const": "Prime"},
|
|
"p": {"$ref": "#/definitions/Number"},
|
|
"bits": {"type": "integer"}
|
|
},
|
|
"required": ["p", "bits"]
|
|
},
|
|
"BinaryField": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {"const": "Binary"},
|
|
"base": {"const": "0x02"},
|
|
"degree": {"type": "integer"},
|
|
"poly": {"$ref": "#/definitions/Polynomial"},
|
|
"bits": {"type": "integer"},
|
|
"basis": {
|
|
"anyOf": [
|
|
{"const": "poly"},
|
|
{"const": "normal"}
|
|
]
|
|
}
|
|
},
|
|
"required": ["degree", "poly", "bits", "basis"]
|
|
},
|
|
"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/Element"},
|
|
"y": {"$ref": "#/definitions/Element"}
|
|
},
|
|
"required": ["x", "y"]
|
|
},
|
|
"Curve": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string"},
|
|
"category": {"type": "string"},
|
|
"desc": {"type": "string"},
|
|
"oid": {"type": "string"},
|
|
"field": {
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/PrimeField"},
|
|
{"$ref": "#/definitions/BinaryField"},
|
|
{"$ref": "#/definitions/ExtenstionField"}
|
|
]
|
|
},
|
|
"form": {
|
|
"type": "string",
|
|
"enum": ["Weierstrass", "Edwards", "TwistedEdwards", "Montgomery"]
|
|
},
|
|
"generator": {"$ref": "#/definitions/Point"},
|
|
"order": {"$ref": "#/definitions/Number"},
|
|
"cofactor": {"$ref": "#/definitions/Number"},
|
|
"aliases": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {"form": {"const": "Weierstrass"}}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"params": {"$ref": "#/definitions/Weierstrass"}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {"form": {"const": "Edwards"}}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"params": {"$ref": "#/definitions/Edwards"}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {"form": {"const": "TwistedEdwards"}}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"params": {"$ref": "#/definitions/TwistedEdwards"}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {"form": {"const": "Montgomery"}}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"params": {"$ref": "#/definitions/Montgomery"}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"required": ["name", "category", "desc", "field", "form", "generator", "order", "cofactor"]
|
|
},
|
|
"Category": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string"},
|
|
"desc": {"type": "string"},
|
|
"curves": {"type": "array", "items": {"$ref": "#/definitions/Curve"}}
|
|
},
|
|
"required": ["name", "desc", "curves"]
|
|
}
|
|
},
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/Category"},
|
|
{"$ref": "#/definitions/Curve"}
|
|
]
|
|
} |