| ... | ... | @@ -159,17 +159,13 @@ test "secp256k1 public multiplication" { |
| 159 | 159 | |
| 160 | 160 | test "secp256k1 scalar split" { |
| 161 | 161 | const io = testing.io; |
| 162 | | const Scalar = Secp256k1.scalar.Scalar; |
| 163 | 162 | const n = Secp256k1.scalar.field_order; |
| 164 | | var lambda_s: [32]u8 = undefined; |
| 165 | | std.mem.writeInt(u256, &lambda_s, lambda, .little); |
| 166 | | const lambda_scalar = try Scalar.fromBytes(lambda_s, .little); |
| 167 | 163 | inline for (.{ .little, .big }) |endian| { |
| 164 | var lambda_s: [32]u8 = undefined; |
| 165 | std.mem.writeInt(u256, &lambda_s, lambda, endian); |
| 168 | 166 | const k = Secp256k1.scalar.random(io, endian); |
| 169 | 167 | const split = try Secp256k1.Endormorphism.splitScalar(k, endian); |
| 170 | | const r1 = try Scalar.fromBytes(split.r1, endian); |
| 171 | | const r2 = try Scalar.fromBytes(split.r2, endian); |
| 172 | | try testing.expect(r1.add(r2.mul(lambda_scalar)).equivalent(try Scalar.fromBytes(k, endian))); |
| 168 | try testing.expectEqual(k, try Secp256k1.scalar.mulAdd(split.r2, lambda_s, split.r1, endian)); |
| 173 | 169 | for ([_][32]u8{ split.r1, split.r2 }) |r_s| { |
| 174 | 170 | const r = std.mem.readInt(u256, &r_s, endian); |
| 175 | 171 | try testing.expect(@min(r, n - r) < 1 << 128); |