mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 02:25:52 +00:00
75 lines
1.8 KiB
C++
75 lines
1.8 KiB
C++
#pragma once
|
|
#include "bn.h"
|
|
|
|
#define PUT(x) std::cout << #x << "\t=" << (x) << std::endl;
|
|
|
|
const struct Point {
|
|
struct G2 {
|
|
const char *aa;
|
|
const char *ab;
|
|
const char *ba;
|
|
const char *bb;
|
|
} g2;
|
|
struct G1 {
|
|
int a;
|
|
int b;
|
|
} g1;
|
|
} g_pointTbl[] = {
|
|
#ifdef BN_SUPPORT_SNARK
|
|
// SNARK1(b = 3)
|
|
{
|
|
{
|
|
"15267802884793550383558706039165621050290089775961208824303765753922461897946",
|
|
"9034493566019742339402378670461897774509967669562610788113215988055021632533",
|
|
"644888581738283025171396578091639672120333224302184904896215738366765861164",
|
|
"20532875081203448695448744255224543661959516361327385779878476709582931298750",
|
|
},
|
|
{
|
|
1, 2
|
|
},
|
|
},
|
|
// SNARK2(b = 82)
|
|
{
|
|
{
|
|
"7281644703356799059368313064438243279269372005747477888712173236228325795991",
|
|
"15160700668152503952980485502602536850541312794041965342451842375663084147486",
|
|
"13523979532236795535820810482891703536907572704519492618036353386190612673074",
|
|
"15929067770616689398844794432758732907995965312283969374632681891490787470887",
|
|
},
|
|
{
|
|
-1, 9
|
|
},
|
|
},
|
|
#else
|
|
// Aranha
|
|
{
|
|
{
|
|
"12723517038133731887338407189719511622662176727675373276651903807414909099441",
|
|
"4168783608814932154536427934509895782246573715297911553964171371032945126671",
|
|
"13891744915211034074451795021214165905772212241412891944830863846330766296736",
|
|
"7937318970632701341203597196594272556916396164729705624521405069090520231616",
|
|
},
|
|
{
|
|
-1, 1
|
|
},
|
|
},
|
|
#endif
|
|
};
|
|
|
|
inline const Point& selectPoint(const bn::CurveParam& cp)
|
|
{
|
|
#ifdef BN_SUPPORT_SNARK
|
|
if (cp.b != 3 && cp.b != 82) {
|
|
printf("not support point for b=%d\n", cp.b);
|
|
exit(1);
|
|
}
|
|
return g_pointTbl[cp.b == 3 ? 0 : 1];
|
|
#else
|
|
if (cp != bn::CurveFp254BNb) {
|
|
printf("not support except for CurveFp254BNb");
|
|
exit(1);
|
|
}
|
|
return g_pointTbl[0];
|
|
#endif
|
|
}
|