commit b21fa8e2cd98d487d50755416c7ab90ebd6e620e (tree)
parent 5cfd47660cc0422f92c5c2d029d6dbad3f213e52
Author: HydroH <ixlesis@gmail.com>
Date: Tue, 6 May 2025 02:50:25 +0800
std: fix compile errors in `std.crypto.ecc` (#23797)
Implemented `neg()` method for `AffineCoordinates` struct of p256,
p384 and secp256k1 curves.
Resolves: #20505 (partially)
Diffstat:
3 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/lib/std/crypto/pcurves/p256.zig b/lib/std/crypto/pcurves/p256.zig
@@ -471,6 +471,10 @@ pub const AffineCoordinates = struct {
/// Identity element in affine coordinates.
pub const identityElement = AffineCoordinates{ .x = P256.identityElement.x, .y = P256.identityElement.y };
+ pub fn neg(p: AffineCoordinates) AffineCoordinates {
+ return .{ .x = p.x, .y = p.y.neg() };
+ }
+
fn cMov(p: *AffineCoordinates, a: AffineCoordinates, c: u1) void {
p.x.cMov(a.x, c);
p.y.cMov(a.y, c);
diff --git a/lib/std/crypto/pcurves/p384.zig b/lib/std/crypto/pcurves/p384.zig
@@ -471,6 +471,10 @@ pub const AffineCoordinates = struct {
/// Identity element in affine coordinates.
pub const identityElement = AffineCoordinates{ .x = P384.identityElement.x, .y = P384.identityElement.y };
+ pub fn neg(p: AffineCoordinates) AffineCoordinates {
+ return .{ .x = p.x, .y = p.y.neg() };
+ }
+
fn cMov(p: *AffineCoordinates, a: AffineCoordinates, c: u1) void {
p.x.cMov(a.x, c);
p.y.cMov(a.y, c);
diff --git a/lib/std/crypto/pcurves/secp256k1.zig b/lib/std/crypto/pcurves/secp256k1.zig
@@ -549,6 +549,10 @@ pub const AffineCoordinates = struct {
/// Identity element in affine coordinates.
pub const identityElement = AffineCoordinates{ .x = Secp256k1.identityElement.x, .y = Secp256k1.identityElement.y };
+ pub fn neg(p: AffineCoordinates) AffineCoordinates {
+ return .{ .x = p.x, .y = p.y.neg() };
+ }
+
fn cMov(p: *AffineCoordinates, a: AffineCoordinates, c: u1) void {
p.x.cMov(a.x, c);
p.y.cMov(a.y, c);