Crypto++ 中的椭圆曲线点加法和乘法

Elliptic Curve Point Addition and Multiplication in Crypto++

如何使用Crypto++库在椭圆曲线中使用点加法和乘法函数?

我尝试了以下代码,其中 Basepointpoint 是椭圆曲线上的点。

const ECP::Point& ECP::Add(&Basepoint, &point);

ECP::Point& result = ECP::Add(Basepoint, point);

const int result = ECP::Point ECP::Add(&Basepoint, &point);

结果是:

ERROR: E0245 a nonstatic member reference must be relative to a specific object

ECP::Point& result = ECP::Add(Basepoint, point);

你调用ECP::Add作为ECP的静态成员,错误提示没有静态Add,你需要将它应用到ECP的一个实例

当我看 documentation 我只看到

const Point & Add (const Point &P, const Point &Q) const

这不是静态的

还有

const ECP::Point& ECP::Add(&Basepoint, &point);

const int result = ECP::Point ECP::Add(&Basepoint, &point);

是无效的表格。

即使只有 ECP::Add(&Basepoint, &point); 也是错误的,因为操作不是静态的,因为参数是指向 Point 的指针,与操作参数不兼容。可能你必须看看 C++ 中的引用是什么 documentation/tutorial

有效代码可以是

ECP ecp;
Point basepoint;
Point point;

// set ecp, basepoint and point to be the ones you want

const Point & r1 = ecp.Add(basepoint, point); // do not copy the result
Point r2 = ecp.Add(basepoint, point); // copy result in non const to be able to modify it later etc