From 5e820760461c45189b2c113039dae57995511cf6 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 10:49:35 +0100 Subject: [PATCH 01/76] Add P256 implementation and testing --- contracts/utils/cryptography/P256.sol | 297 ++++++++++++++++++++++++++ test/utils/cryptography/P256.t.sol | 28 +++ test/utils/cryptography/P256.test.js | 56 +++++ 3 files changed, 381 insertions(+) create mode 100644 contracts/utils/cryptography/P256.sol create mode 100644 test/utils/cryptography/P256.t.sol create mode 100644 test/utils/cryptography/P256.test.js diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol new file mode 100644 index 00000000000..7fd72f084e5 --- /dev/null +++ b/contracts/utils/cryptography/P256.sol @@ -0,0 +1,297 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.20; + +import { Math } from "../math/Math.sol"; + +/** + * @dev Implementation of secp256r1 verification and recovery functions. + * + * Based on + * - https://github.com/itsobvioustech/aa-passkeys-wallet/blob/main/src/Secp256r1.sol + * Which is heavily inspired from + * - https://github.com/maxrobot/elliptic-solidity/blob/master/contracts/Secp256r1.sol + * - https://github.com/tdrerup/elliptic-curve-solidity/blob/master/contracts/curves/EllipticCurve.sol + */ +library P256 { + struct JPoint { + uint256 x; + uint256 y; + uint256 z; + } + + uint256 constant gx = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296; + uint256 constant gy = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5; + uint256 constant pp = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF; + uint256 constant nn = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551; + uint256 constant aa = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC; + uint256 constant bb = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B; + uint256 constant pp2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD; + uint256 constant nn2 = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F; + uint256 constant pp1div4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; + + /** + * @dev signature verification + * @param Qx - public key coordinate X + * @param Qy - public key coordinate Y + * @param r - signature half R + * @param s - signature half S + * @param e - hashed message + */ + function verify(uint256 Qx, uint256 Qy, uint256 r, uint256 s, uint256 e) internal view returns (bool) { + if (r == 0 || r >= nn || s == 0 || s >= nn || !isOnCurve(Qx, Qy)) return false; + + JPoint[16] memory points = _preComputeJacobianPoints(Qx, Qy); + uint256 w = _invModN(s); + uint256 u1 = mulmod(e, w, nn); + uint256 u2 = mulmod(r, w, nn); + (uint256 x, ) = _jMultShamir(points, u1, u2); + return (x == r); + } + + /** + * @dev public key recovery + * @param r - signature half R + * @param s - signature half S + * @param v - signature recovery param + * @param e - hashed message + */ + function recovery(uint256 r, uint256 s, uint8 v, uint256 e) internal view returns (uint256, uint256) { + if (r == 0 || r >= nn || s == 0 || s >= nn || v > 1) return (0, 0); + + uint256 rx = r; + uint256 ry2 = addmod(mulmod(addmod(mulmod(rx, rx, pp), aa, pp), rx, pp), bb, pp); // weierstrass equation y² = x³ + a.x + b + uint256 ry = Math.modExp(ry2, pp1div4, pp); // This formula for sqrt work because pp ≡ 3 (mod 4) + if (mulmod(ry, ry, pp) != ry2) return (0, 0); // Sanity check + if (ry % 2 != v % 2) ry = pp - ry; + + JPoint[16] memory points = _preComputeJacobianPoints(rx, ry); + uint256 w = _invModN(r); + uint256 u1 = mulmod(nn - (e % nn), w, nn); + uint256 u2 = mulmod(s, w, nn); + (uint256 x, uint256 y) = _jMultShamir(points, u1, u2); + return (x, y); + } + + /** + * @dev address recovery + * @param r - signature half R + * @param s - signature half S + * @param v - signature recovery param + * @param e - hashed message + */ + function recoveryAddress(uint256 r, uint256 s, uint8 v, uint256 e) internal view returns (address) { + (uint256 Qx, uint256 Qy) = recovery(r, s, v, e); + return getAddress(Qx, Qy); + } + + /** + * @dev derivate public key + * @param privateKey - private key + */ + function getPublicKey(uint256 privateKey) internal view returns (uint256, uint256) { + (uint256 x, uint256 y, uint256 z) = _jMult(gx, gy, 1, privateKey); + return _affineFromJacobian(x, y, z); + } + + /** + * @dev Hash public key into an address + * @param Qx - public key coordinate X + * @param Qy - public key coordinate Y + */ + function getAddress(uint256 Qx, uint256 Qy) internal pure returns (address result) { + /// @solidity memory-safe-assembly + assembly { + mstore(0x00, Qx) + mstore(0x20, Qy) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev check if a point is on the curve. + */ + function isOnCurve(uint256 x, uint256 y) internal pure returns (bool result) { + /// @solidity memory-safe-assembly + assembly { + let p := pp + let lhs := mulmod(y, y, p) + let rhs := addmod(mulmod(addmod(mulmod(x, x, p), aa, p), x, p), bb, p) + result := eq(lhs, rhs) + } + } + + /** + * @dev Reduce from jacobian to affine coordinates + * @param jx - jacobian coordinate x + * @param jy - jacobian coordinate y + * @param jz - jacobian coordinate z + * @return ax - affine coordiante x + * @return ay - affine coordiante y + */ + function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (uint256 ax, uint256 ay) { + if (jz == 0) return (0, 0); + uint256 zinv = _invModP(jz); + uint256 zzinv = mulmod(zinv, zinv, pp); + uint256 zzzinv = mulmod(zzinv, zinv, pp); + ax = mulmod(jx, zzinv, pp); + ay = mulmod(jy, zzzinv, pp); + } + + /** + * @dev Point addition on the jacobian coordinates + * https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates + */ + function _jAdd(uint256 x1, uint256 y1, uint256 z1, uint256 x2, uint256 y2, uint256 z2) private pure returns (uint256 x3, uint256 y3, uint256 z3) { + if (z1 == 0) { + return (x2, y2, z2); + } + if (z2 == 0) { + return (x1, y1, z1); + } + /// @solidity memory-safe-assembly + assembly { + let p := pp + let zz1 := mulmod(z1, z1, p) // zz1 = z1² + let zz2 := mulmod(z2, z2, p) // zz2 = z2² + let u1 := mulmod(x1, zz2, p) // u1 = x1*z2² + let u2 := mulmod(x2, zz1, p) // u2 = x2*z1² + let s1 := mulmod(y1, mulmod(zz2, z2, p), p) // s1 = y1*z2³ + let s2 := mulmod(y2, mulmod(zz1, z1, p), p) // s2 = y2*z1³ + let h := addmod(u2, sub(p, u1), p) // h = u2-u1 + let hh := mulmod(h, h, p) // h² + let hhh := mulmod(h, hh, p) // h³ + let r := addmod(s2, sub(p, s1), p) // r = s2-s1 + + // x' = r²-h³-2*u1*h² + x3 := addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p) + // y' = r*(u1*h²-x')-s1*h³ + y3 := addmod(mulmod(r,addmod(mulmod(u1, hh, p), sub(p, x3), p), p), sub(p, mulmod(s1, hhh, p)), p) + // z' = h*z1*z2 + z3 := mulmod(h, mulmod(z1, z2, p), p) + } + } + + /** + * @dev Point doubling on the jacobian coordinates + * https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates + */ + function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 x2, uint256 y2, uint256 z2) { + /// @solidity memory-safe-assembly + assembly { + let p := pp + let yy := mulmod(y, y, p) + let zz := mulmod(z, z, p) + let s := mulmod(4, mulmod(x, yy, p), p) // s = 4*x*y² + let m := addmod(mulmod(3, mulmod(x, x, p), p), mulmod(aa, mulmod(zz, zz, p), p), p) // m = 3*x²+a*z⁴ + + // x' = m²-2*s + x2 := addmod(mulmod(m, m, p), sub(p, mulmod(2, s, p)), p) + // y' = m*(s-x')-8*y⁴ + y2 := addmod(mulmod(m, addmod(s, sub(p, x2), p), p), sub(p, mulmod(8, mulmod(yy, yy, p), p)), p) + // z' = 2*y*z + z2 := mulmod(2, mulmod(y, z, p), p) + } + } + + /** + * @dev Point multiplication on the jacobian coordinates + */ + function _jMult(uint256 x, uint256 y, uint256 z, uint256 k) private pure returns (uint256 x2, uint256 y2, uint256 z2) { + unchecked { + for (uint256 i = 0; i < 256; ++i) { + if (z > 0) { + (x2, y2, z2) = _jDouble(x2, y2, z2); + } + if (k >> 255 > 0) { + (x2, y2, z2) = _jAdd(x2, y2, z2, x, y, z); + } + k <<= 1; + } + } + } + + /** + * @dev Compute P·u1 + Q·u2 using the precomputed points for P and Q (see {_preComputeJacobianPoints}). + * + * Uses Strauss Shamir trick for EC multiplication + * https://stackoverflow.com/questions/50993471/ec-scalar-multiplication-with-strauss-shamir-method + * we optimise on this a bit to do with 2 bits at a time rather than a single bit + * the individual points for a single pass are precomputed + * overall this reduces the number of additions while keeping the same number of doublings + */ + function _jMultShamir(JPoint[16] memory points, uint256 u1, uint256 u2) private view returns (uint256, uint256) { + uint256 x = 0; + uint256 y = 0; + uint256 z = 0; + unchecked { + for (uint256 i = 0; i < 128; ++i) { + if (z > 0) { + (x, y, z) = _jDouble(x, y, z); + (x, y, z) = _jDouble(x, y, z); + } + // Read 2 bits of u1, and 2 bits of u2. Combining the two give a lookup index in the table. + uint256 pos = (u1 >> 252 & 0xc) | (u2 >> 254 & 0x3); + if (pos > 0) { + (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); + } + u1 <<= 2; + u2 <<= 2; + } + } + return _affineFromJacobian(x, y, z); + } + + /** + * @dev Precompute a matrice of usefull jacobian points associated to a given P. This can be seen as a 4x4 matrix + * that contains combinaison of P and G (generator) up to 3 times each. See table bellow: + * + * ┌────┬─────────────────────┐ + * │ i │ 0 1 2 3 │ + * ├────┼─────────────────────┤ + * │ 0 │ 0 p 2p 3p │ + * │ 4 │ g g+p g+2p g+3p │ + * │ 8 │ 2g 2g+p 2g+2p 2g+3p │ + * │ 12 │ 3g 3g+p 3g+2p 3g+3p │ + * └────┴─────────────────────┘ + */ + function _preComputeJacobianPoints(uint256 px, uint256 py) private pure returns (JPoint[16] memory points) { + points[0x00] = JPoint(0, 0, 0); + points[0x01] = JPoint(px, py, 1); + points[0x04] = JPoint(gx, gy, 1); + points[0x02] = _jDoublePoint(points[0x01]); + points[0x08] = _jDoublePoint(points[0x04]); + points[0x03] = _jAddPoint(points[0x01], points[0x02]); + points[0x05] = _jAddPoint(points[0x01], points[0x04]); + points[0x06] = _jAddPoint(points[0x02], points[0x04]); + points[0x07] = _jAddPoint(points[0x03], points[0x04]); + points[0x09] = _jAddPoint(points[0x01], points[0x08]); + points[0x0a] = _jAddPoint(points[0x02], points[0x08]); + points[0x0b] = _jAddPoint(points[0x03], points[0x08]); + points[0x0c] = _jAddPoint(points[0x04], points[0x08]); + points[0x0d] = _jAddPoint(points[0x01], points[0x0c]); + points[0x0e] = _jAddPoint(points[0x02], points[0x0c]); + points[0x0f] = _jAddPoint(points[0x03], points[0x0C]); + } + + function _jAddPoint(JPoint memory p1, JPoint memory p2) private pure returns (JPoint memory) { + (uint256 x, uint256 y, uint256 z) = _jAdd(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z); + return JPoint(x, y, z); + } + + function _jDoublePoint(JPoint memory p) private pure returns (JPoint memory) { + (uint256 x, uint256 y, uint256 z) = _jDouble(p.x, p.y, p.z); + return JPoint(x, y, z); + } + + /** + *@dev From Fermat's little theorem https://en.wikipedia.org/wiki/Fermat%27s_little_theorem: + * `a**(p-1) ≡ 1 mod p`. This means that `a**(p-2)` is an inverse of a in Fp. + */ + function _invModN(uint256 value) private view returns (uint256) { + return Math.modExp(value, nn2, nn); + } + + function _invModP(uint256 value) private view returns (uint256) { + return Math.modExp(value, pp2, pp); + } +} diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol new file mode 100644 index 00000000000..00bc2127165 --- /dev/null +++ b/test/utils/cryptography/P256.t.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.20; + +import {Test} from "forge-std/Test.sol"; +import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; + +contract P256Test is Test { + /// forge-config: default.fuzz.runs = 256 + function testVerify(uint256 seed, bytes32 digest) public { + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.nn - 1); + + (uint256 x, uint256 y) = P256.getPublicKey(privateKey); + (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); + assertTrue(P256.verify(x, y, uint256(r), uint256(s), uint256(digest))); + } + + /// forge-config: default.fuzz.runs = 256 + function testRecover(uint256 seed, bytes32 digest) public { + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.nn - 1); + + (uint256 x, uint256 y) = P256.getPublicKey(privateKey); + (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); + (uint256 qx0, uint256 qy0) = P256.recovery(uint256(r), uint256(s), 0, uint256(digest)); + (uint256 qx1, uint256 qy1) = P256.recovery(uint256(r), uint256(s), 1, uint256(digest)); + assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); + } +} \ No newline at end of file diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js new file mode 100644 index 00000000000..d96880c339a --- /dev/null +++ b/test/utils/cryptography/P256.test.js @@ -0,0 +1,56 @@ +const { ethers } = require('hardhat'); +const { expect } = require('chai'); +const { secp256r1 } = require('@noble/curves/p256'); +const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); + +const prepareSignature = ( + privateKey = secp256r1.utils.randomPrivateKey(), + messageHash = ethers.hexlify(ethers.randomBytes(0x20)) +) => { + const publicKey = [ + secp256r1.getPublicKey(privateKey, false).slice(0x01, 0x21), + secp256r1.getPublicKey(privateKey, false).slice(0x21, 0x41), + ].map(ethers.hexlify) + const { r, s, recovery } = secp256r1.sign(messageHash.replace(/0x/, ''), privateKey); + const signature = [ r, s ].map(v => ethers.toBeHex(v, 0x20)); + return { privateKey, publicKey, signature, recovery, messageHash }; +}; + +describe('P256', function () { + async function fixture() { + return { mock: await ethers.deployContract('$P256') }; + } + + beforeEach(async function () { + Object.assign(this, await loadFixture(fixture), prepareSignature()); + }); + + it('derivate public from private', async function () { + expect(await this.mock.$getPublicKey(ethers.toBigInt(this.privateKey))).to.deep.equal(this.publicKey); + }); + + Array(10).fill().forEach((_, i, {length}) => { + it(`confirm valid signature (run ${i + 1}/${length})`, async function () { + expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.true; + }); + + it(`recover public key (run ${i + 1}/${length})`, async function () { + expect(await this.mock.$recovery(...this.signature, this.recovery, this.messageHash)).to.deep.equal(this.publicKey); + }); + }); + + it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { + this.publicKey.reverse(); + expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.false; + }); + + it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { + this.signature.reverse(); + expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.false; + }); + + it('reject signature with invalid message hash', async function () { + var invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); + expect(await this.mock.$verify(...this.publicKey, ...this.signature, invalidMessageHash)).to.be.false; + }); +}); \ No newline at end of file From da0f27ecab2fc940804f80ce4b1b5fc504add751 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 10:49:48 +0100 Subject: [PATCH 02/76] enable optimizations by default --- hardhat.config.js | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/hardhat.config.js b/hardhat.config.js index 230cca5e215..4006ce19c0a 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,12 +1,12 @@ /// ENVVAR -// - COMPILE_VERSION: compiler version (default: 0.8.20) -// - SRC: contracts folder to compile (default: contracts) -// - COMPILE_MODE: production modes enables optimizations (default: development) -// - IR: enable IR compilation (default: false) -// - COVERAGE: enable coverage report -// - ENABLE_GAS_REPORT: enable gas report -// - COINMARKETCAP: coinmarkercat api key for USD value in gas report -// - CI: output gas report to file instead of stdout +// - COMPILER: compiler version (default: 0.8.20) +// - SRC: contracts folder to compile (default: contracts) +// - RUNS: number of optimization runs (default: 200) +// - IR: enable IR compilation (default: false) +// - COVERAGE: enable coverage report (default: false) +// - GAS: enable gas report (default: false) +// - COINMARKETCAP: coinmarketcap api key for USD value in gas report +// - CI: output gas report to file instead of stdout const fs = require('fs'); const path = require('path'); @@ -25,11 +25,10 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'contracts', }, - mode: { - alias: 'compileMode', - type: 'string', - choices: ['production', 'development'], - default: 'development', + runs: { + alias: 'optimizationRuns', + type: 'number', + default: 200, }, ir: { alias: 'enableIR', @@ -64,9 +63,6 @@ for (const f of fs.readdirSync(path.join(__dirname, 'hardhat'))) { require(path.join(__dirname, 'hardhat', f)); } -const withOptimizations = argv.gas || argv.coverage || argv.compileMode === 'production'; -const allowUnlimitedContractSize = argv.gas || argv.coverage || argv.compileMode === 'development'; - /** * @type import('hardhat/config').HardhatUserConfig */ @@ -75,10 +71,10 @@ module.exports = { version: argv.compiler, settings: { optimizer: { - enabled: withOptimizations, - runs: 200, + enabled: true, + runs: argv.runs, }, - viaIR: withOptimizations && argv.ir, + viaIR: argv.ir, outputSelection: { '*': { '*': ['storageLayout'] } }, }, }, @@ -88,14 +84,14 @@ module.exports = { 'initcode-size': 'off', }, '*': { - 'code-size': withOptimizations, + 'code-size': true, 'unused-param': !argv.coverage, // coverage causes unused-param warnings default: 'error', }, }, networks: { hardhat: { - allowUnlimitedContractSize, + allowUnlimitedContractSize: argv.gas || argv.coverage, initialBaseFeePerGas: argv.coverage ? 0 : undefined, }, }, From aa59c670831365dacf846bac13eccb1dd6d24269 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 11:10:57 +0100 Subject: [PATCH 03/76] test recovering address --- test/utils/cryptography/P256.test.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index d96880c339a..1323bfc95de 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -29,14 +29,17 @@ describe('P256', function () { expect(await this.mock.$getPublicKey(ethers.toBigInt(this.privateKey))).to.deep.equal(this.publicKey); }); - Array(10).fill().forEach((_, i, {length}) => { - it(`confirm valid signature (run ${i + 1}/${length})`, async function () { - expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.true; - }); - - it(`recover public key (run ${i + 1}/${length})`, async function () { - expect(await this.mock.$recovery(...this.signature, this.recovery, this.messageHash)).to.deep.equal(this.publicKey); - }); + it('verify valid signature', async function () { + expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.true; + }); + + it('recover public key', async function () { + expect(await this.mock.$recovery(...this.signature, this.recovery, this.messageHash)).to.deep.equal(this.publicKey); + }); + + it('recover address', async function () { + const address = ethers.getAddress(ethers.keccak256(ethers.concat(this.publicKey)).slice(-40)); + expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, this.messageHash)).to.equal(address); }); it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { From 951294787f58d4aea2e2f3d17b2caad382dc4635 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 11:17:54 +0100 Subject: [PATCH 04/76] improved testing --- test/utils/cryptography/P256.test.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 1323bfc95de..c2e2452013b 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -11,9 +11,10 @@ const prepareSignature = ( secp256r1.getPublicKey(privateKey, false).slice(0x01, 0x21), secp256r1.getPublicKey(privateKey, false).slice(0x21, 0x41), ].map(ethers.hexlify) + const address = ethers.getAddress(ethers.keccak256(ethers.concat(publicKey)).slice(-40)); const { r, s, recovery } = secp256r1.sign(messageHash.replace(/0x/, ''), privateKey); const signature = [ r, s ].map(v => ethers.toBeHex(v, 0x20)); - return { privateKey, publicKey, signature, recovery, messageHash }; + return { address, privateKey, publicKey, signature, recovery, messageHash }; }; describe('P256', function () { @@ -38,22 +39,25 @@ describe('P256', function () { }); it('recover address', async function () { - const address = ethers.getAddress(ethers.keccak256(ethers.concat(this.publicKey)).slice(-40)); - expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, this.messageHash)).to.equal(address); + expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, this.messageHash)).to.equal(this.address); }); it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { - this.publicKey.reverse(); - expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.false; + const reversedPublicKey = Array.from(this.publicKey).reverse(); + expect(await this.mock.$verify(...reversedPublicKey, ...this.signature, this.messageHash)).to.be.false; }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { - this.signature.reverse(); - expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.false; + const reversedSignature = Array.from(this.signature).reverse(); + expect(await this.mock.$verify(...this.publicKey, ...reversedSignature, this.messageHash)).to.be.false; + expect(await this.mock.$recovery(...reversedSignature, this.recovery, this.messageHash)).to.not.deep.equal(this.publicKey); + expect(await this.mock.$recoveryAddress(...reversedSignature, this.recovery, this.messageHash)).to.not.equal(this.address); }); it('reject signature with invalid message hash', async function () { - var invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); + const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); expect(await this.mock.$verify(...this.publicKey, ...this.signature, invalidMessageHash)).to.be.false; + expect(await this.mock.$recovery(...this.signature, this.recovery, invalidMessageHash)).to.not.deep.equal(this.publicKey); + expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, invalidMessageHash)).to.not.equal(this.address); }); }); \ No newline at end of file From a60bf48463536a913ebb677d90edf641c81e0812 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 11:38:32 +0100 Subject: [PATCH 05/76] spelling --- contracts/utils/cryptography/P256.sol | 8 ++++---- test/utils/cryptography/P256.t.sol | 2 +- test/utils/cryptography/P256.test.js | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 7fd72f084e5..c3888ea0be5 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -125,8 +125,8 @@ library P256 { * @param jx - jacobian coordinate x * @param jy - jacobian coordinate y * @param jz - jacobian coordinate z - * @return ax - affine coordiante x - * @return ay - affine coordiante y + * @return ax - affine coordinate x + * @return ay - affine coordinate y */ function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (uint256 ax, uint256 ay) { if (jz == 0) return (0, 0); @@ -242,8 +242,8 @@ library P256 { } /** - * @dev Precompute a matrice of usefull jacobian points associated to a given P. This can be seen as a 4x4 matrix - * that contains combinaison of P and G (generator) up to 3 times each. See table bellow: + * @dev Precompute a matrice of useful jacobian points associated to a given P. This can be seen as a 4x4 matrix + * that contains combinaison of P and G (generator) up to 3 times each. See table below: * * ┌────┬─────────────────────┐ * │ i │ 0 1 2 3 │ diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 00bc2127165..b5b00084fd8 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -25,4 +25,4 @@ contract P256Test is Test { (uint256 qx1, uint256 qy1) = P256.recovery(uint256(r), uint256(s), 1, uint256(digest)); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } -} \ No newline at end of file +} diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index c2e2452013b..f9be534140a 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -60,4 +60,4 @@ describe('P256', function () { expect(await this.mock.$recovery(...this.signature, this.recovery, invalidMessageHash)).to.not.deep.equal(this.publicKey); expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, invalidMessageHash)).to.not.equal(this.address); }); -}); \ No newline at end of file +}); From 918502683dccddf1e93f644dd22f531900dcf19e Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 11:39:10 +0100 Subject: [PATCH 06/76] fix lint --- contracts/utils/cryptography/P256.sol | 22 +++++++++++++++++----- test/utils/cryptography/P256.test.js | 22 +++++++++++++++------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index c3888ea0be5..0901e8ad271 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.20; -import { Math } from "../math/Math.sol"; +import {Math} from "../math/Math.sol"; /** * @dev Implementation of secp256r1 verification and recovery functions. @@ -141,7 +141,14 @@ library P256 { * @dev Point addition on the jacobian coordinates * https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates */ - function _jAdd(uint256 x1, uint256 y1, uint256 z1, uint256 x2, uint256 y2, uint256 z2) private pure returns (uint256 x3, uint256 y3, uint256 z3) { + function _jAdd( + uint256 x1, + uint256 y1, + uint256 z1, + uint256 x2, + uint256 y2, + uint256 z2 + ) private pure returns (uint256 x3, uint256 y3, uint256 z3) { if (z1 == 0) { return (x2, y2, z2); } @@ -165,7 +172,7 @@ library P256 { // x' = r²-h³-2*u1*h² x3 := addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p) // y' = r*(u1*h²-x')-s1*h³ - y3 := addmod(mulmod(r,addmod(mulmod(u1, hh, p), sub(p, x3), p), p), sub(p, mulmod(s1, hhh, p)), p) + y3 := addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, x3), p), p), sub(p, mulmod(s1, hhh, p)), p) // z' = h*z1*z2 z3 := mulmod(h, mulmod(z1, z2, p), p) } @@ -196,7 +203,12 @@ library P256 { /** * @dev Point multiplication on the jacobian coordinates */ - function _jMult(uint256 x, uint256 y, uint256 z, uint256 k) private pure returns (uint256 x2, uint256 y2, uint256 z2) { + function _jMult( + uint256 x, + uint256 y, + uint256 z, + uint256 k + ) private pure returns (uint256 x2, uint256 y2, uint256 z2) { unchecked { for (uint256 i = 0; i < 256; ++i) { if (z > 0) { @@ -230,7 +242,7 @@ library P256 { (x, y, z) = _jDouble(x, y, z); } // Read 2 bits of u1, and 2 bits of u2. Combining the two give a lookup index in the table. - uint256 pos = (u1 >> 252 & 0xc) | (u2 >> 254 & 0x3); + uint256 pos = ((u1 >> 252) & 0xc) | ((u2 >> 254) & 0x3); if (pos > 0) { (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); } diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index f9be534140a..e0a479cf6c5 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -5,15 +5,15 @@ const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); const prepareSignature = ( privateKey = secp256r1.utils.randomPrivateKey(), - messageHash = ethers.hexlify(ethers.randomBytes(0x20)) + messageHash = ethers.hexlify(ethers.randomBytes(0x20)), ) => { const publicKey = [ secp256r1.getPublicKey(privateKey, false).slice(0x01, 0x21), secp256r1.getPublicKey(privateKey, false).slice(0x21, 0x41), - ].map(ethers.hexlify) + ].map(ethers.hexlify); const address = ethers.getAddress(ethers.keccak256(ethers.concat(publicKey)).slice(-40)); const { r, s, recovery } = secp256r1.sign(messageHash.replace(/0x/, ''), privateKey); - const signature = [ r, s ].map(v => ethers.toBeHex(v, 0x20)); + const signature = [r, s].map(v => ethers.toBeHex(v, 0x20)); return { address, privateKey, publicKey, signature, recovery, messageHash }; }; @@ -50,14 +50,22 @@ describe('P256', function () { it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { const reversedSignature = Array.from(this.signature).reverse(); expect(await this.mock.$verify(...this.publicKey, ...reversedSignature, this.messageHash)).to.be.false; - expect(await this.mock.$recovery(...reversedSignature, this.recovery, this.messageHash)).to.not.deep.equal(this.publicKey); - expect(await this.mock.$recoveryAddress(...reversedSignature, this.recovery, this.messageHash)).to.not.equal(this.address); + expect(await this.mock.$recovery(...reversedSignature, this.recovery, this.messageHash)).to.not.deep.equal( + this.publicKey, + ); + expect(await this.mock.$recoveryAddress(...reversedSignature, this.recovery, this.messageHash)).to.not.equal( + this.address, + ); }); it('reject signature with invalid message hash', async function () { const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); expect(await this.mock.$verify(...this.publicKey, ...this.signature, invalidMessageHash)).to.be.false; - expect(await this.mock.$recovery(...this.signature, this.recovery, invalidMessageHash)).to.not.deep.equal(this.publicKey); - expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, invalidMessageHash)).to.not.equal(this.address); + expect(await this.mock.$recovery(...this.signature, this.recovery, invalidMessageHash)).to.not.deep.equal( + this.publicKey, + ); + expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, invalidMessageHash)).to.not.equal( + this.address, + ); }); }); From 025e36053cfa8c7a2fe1907cafc7b88ca18a060c Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 11:44:14 +0100 Subject: [PATCH 07/76] expose imports tick --- contracts/mocks/ExposeImports.sol | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 contracts/mocks/ExposeImports.sol diff --git a/contracts/mocks/ExposeImports.sol b/contracts/mocks/ExposeImports.sol new file mode 100644 index 00000000000..28d275038d3 --- /dev/null +++ b/contracts/mocks/ExposeImports.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.20; + +import {P256} from "../utils/cryptography/P256.sol"; + +abstract contract ExposeImports { + // This will be transpiled, causing all the imports above to be transpiled when running the upgradeable tests. + // This trick is necessary for testing libraries such as Panic.sol (which are not imported by any other transpiled + // contracts and would otherwise not be exposed). +} \ No newline at end of file From 803e7359000fea56c4bdd6599813540ec5030009 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 11:53:17 +0100 Subject: [PATCH 08/76] fix lint --- contracts/mocks/ExposeImports.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/mocks/ExposeImports.sol b/contracts/mocks/ExposeImports.sol index 28d275038d3..2be6ba46ae2 100644 --- a/contracts/mocks/ExposeImports.sol +++ b/contracts/mocks/ExposeImports.sol @@ -8,4 +8,4 @@ abstract contract ExposeImports { // This will be transpiled, causing all the imports above to be transpiled when running the upgradeable tests. // This trick is necessary for testing libraries such as Panic.sol (which are not imported by any other transpiled // contracts and would otherwise not be exposed). -} \ No newline at end of file +} From 57fcecd9cce50550ddc51c135c567fc717f74594 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 12:05:38 +0100 Subject: [PATCH 09/76] fix lint --- contracts/utils/cryptography/P256.sol | 95 ++++++++++++++------------- test/utils/cryptography/P256.t.sol | 4 +- 2 files changed, 53 insertions(+), 46 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 0901e8ad271..ecaab7fa75e 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -7,7 +7,7 @@ import {Math} from "../math/Math.sol"; * @dev Implementation of secp256r1 verification and recovery functions. * * Based on - * - https://github.com/itsobvioustech/aa-passkeys-wallet/blob/main/src/Secp256r1.sol + * - https://github.com/itsobvioustech/A-passkeys-wallet/blob/main/src/Secp256r1.sol * Which is heavily inspired from * - https://github.com/maxrobot/elliptic-solidity/blob/master/contracts/Secp256r1.sol * - https://github.com/tdrerup/elliptic-curve-solidity/blob/master/contracts/curves/EllipticCurve.sol @@ -19,31 +19,38 @@ library P256 { uint256 z; } - uint256 constant gx = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296; - uint256 constant gy = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5; - uint256 constant pp = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF; - uint256 constant nn = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551; - uint256 constant aa = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC; - uint256 constant bb = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B; - uint256 constant pp2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD; - uint256 constant nn2 = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F; - uint256 constant pp1div4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; + /// @dev Generator (x component) + uint256 internal constant GX = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296; + /// @dev Generator (y component) + uint256 internal constant GY = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5; + /// @dev P (size of the field) + uint256 internal constant P = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF; + /// @dev N (order of the field) + uint256 internal constant N = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551; + /// @dev A parameter of the weierstrass equation + uint256 internal constant A = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC; + /// @dev B parameter of the weierstrass equation + uint256 internal constant B = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B; + + uint256 private constant P2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD; + uint256 private constant N2 = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F; + uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; /** * @dev signature verification - * @param Qx - public key coordinate X - * @param Qy - public key coordinate Y + * @param qx - public key coordinate X + * @param qy - public key coordinate Y * @param r - signature half R * @param s - signature half S * @param e - hashed message */ - function verify(uint256 Qx, uint256 Qy, uint256 r, uint256 s, uint256 e) internal view returns (bool) { - if (r == 0 || r >= nn || s == 0 || s >= nn || !isOnCurve(Qx, Qy)) return false; + function verify(uint256 qx, uint256 qy, uint256 r, uint256 s, uint256 e) internal view returns (bool) { + if (r == 0 || r >= N || s == 0 || s >= N || !isOnCurve(qx, qy)) return false; - JPoint[16] memory points = _preComputeJacobianPoints(Qx, Qy); + JPoint[16] memory points = _preComputeJacobianPoints(qx, qy); uint256 w = _invModN(s); - uint256 u1 = mulmod(e, w, nn); - uint256 u2 = mulmod(r, w, nn); + uint256 u1 = mulmod(e, w, N); + uint256 u2 = mulmod(r, w, N); (uint256 x, ) = _jMultShamir(points, u1, u2); return (x == r); } @@ -56,18 +63,18 @@ library P256 { * @param e - hashed message */ function recovery(uint256 r, uint256 s, uint8 v, uint256 e) internal view returns (uint256, uint256) { - if (r == 0 || r >= nn || s == 0 || s >= nn || v > 1) return (0, 0); + if (r == 0 || r >= N || s == 0 || s >= N || v > 1) return (0, 0); uint256 rx = r; - uint256 ry2 = addmod(mulmod(addmod(mulmod(rx, rx, pp), aa, pp), rx, pp), bb, pp); // weierstrass equation y² = x³ + a.x + b - uint256 ry = Math.modExp(ry2, pp1div4, pp); // This formula for sqrt work because pp ≡ 3 (mod 4) - if (mulmod(ry, ry, pp) != ry2) return (0, 0); // Sanity check - if (ry % 2 != v % 2) ry = pp - ry; + uint256 ry2 = addmod(mulmod(addmod(mulmod(rx, rx, P), A, P), rx, P), B, P); // weierstrass equation y² = x³ + a.x + b + uint256 ry = Math.modExp(ry2, P1DIV4, P); // This formula for sqrt work because P ≡ 3 (mod 4) + if (mulmod(ry, ry, P) != ry2) return (0, 0); // Sanity check + if (ry % 2 != v % 2) ry = P - ry; JPoint[16] memory points = _preComputeJacobianPoints(rx, ry); uint256 w = _invModN(r); - uint256 u1 = mulmod(nn - (e % nn), w, nn); - uint256 u2 = mulmod(s, w, nn); + uint256 u1 = mulmod(N - (e % N), w, N); + uint256 u2 = mulmod(s, w, N); (uint256 x, uint256 y) = _jMultShamir(points, u1, u2); return (x, y); } @@ -80,8 +87,8 @@ library P256 { * @param e - hashed message */ function recoveryAddress(uint256 r, uint256 s, uint8 v, uint256 e) internal view returns (address) { - (uint256 Qx, uint256 Qy) = recovery(r, s, v, e); - return getAddress(Qx, Qy); + (uint256 qx, uint256 qy) = recovery(r, s, v, e); + return getAddress(qx, qy); } /** @@ -89,20 +96,20 @@ library P256 { * @param privateKey - private key */ function getPublicKey(uint256 privateKey) internal view returns (uint256, uint256) { - (uint256 x, uint256 y, uint256 z) = _jMult(gx, gy, 1, privateKey); + (uint256 x, uint256 y, uint256 z) = _jMult(GX, GY, 1, privateKey); return _affineFromJacobian(x, y, z); } /** * @dev Hash public key into an address - * @param Qx - public key coordinate X - * @param Qy - public key coordinate Y + * @param qx - public key coordinate X + * @param qy - public key coordinate Y */ - function getAddress(uint256 Qx, uint256 Qy) internal pure returns (address result) { + function getAddress(uint256 qx, uint256 qy) internal pure returns (address result) { /// @solidity memory-safe-assembly assembly { - mstore(0x00, Qx) - mstore(0x20, Qy) + mstore(0x00, qx) + mstore(0x20, qy) result := keccak256(0x00, 0x40) } } @@ -113,9 +120,9 @@ library P256 { function isOnCurve(uint256 x, uint256 y) internal pure returns (bool result) { /// @solidity memory-safe-assembly assembly { - let p := pp + let p := P let lhs := mulmod(y, y, p) - let rhs := addmod(mulmod(addmod(mulmod(x, x, p), aa, p), x, p), bb, p) + let rhs := addmod(mulmod(addmod(mulmod(x, x, p), A, p), x, p), B, p) result := eq(lhs, rhs) } } @@ -131,10 +138,10 @@ library P256 { function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (uint256 ax, uint256 ay) { if (jz == 0) return (0, 0); uint256 zinv = _invModP(jz); - uint256 zzinv = mulmod(zinv, zinv, pp); - uint256 zzzinv = mulmod(zzinv, zinv, pp); - ax = mulmod(jx, zzinv, pp); - ay = mulmod(jy, zzzinv, pp); + uint256 zzinv = mulmod(zinv, zinv, P); + uint256 zzzinv = mulmod(zzinv, zinv, P); + ax = mulmod(jx, zzinv, P); + ay = mulmod(jy, zzzinv, P); } /** @@ -157,7 +164,7 @@ library P256 { } /// @solidity memory-safe-assembly assembly { - let p := pp + let p := P let zz1 := mulmod(z1, z1, p) // zz1 = z1² let zz2 := mulmod(z2, z2, p) // zz2 = z2² let u1 := mulmod(x1, zz2, p) // u1 = x1*z2² @@ -185,11 +192,11 @@ library P256 { function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 x2, uint256 y2, uint256 z2) { /// @solidity memory-safe-assembly assembly { - let p := pp + let p := P let yy := mulmod(y, y, p) let zz := mulmod(z, z, p) let s := mulmod(4, mulmod(x, yy, p), p) // s = 4*x*y² - let m := addmod(mulmod(3, mulmod(x, x, p), p), mulmod(aa, mulmod(zz, zz, p), p), p) // m = 3*x²+a*z⁴ + let m := addmod(mulmod(3, mulmod(x, x, p), p), mulmod(A, mulmod(zz, zz, p), p), p) // m = 3*x²+a*z⁴ // x' = m²-2*s x2 := addmod(mulmod(m, m, p), sub(p, mulmod(2, s, p)), p) @@ -269,7 +276,7 @@ library P256 { function _preComputeJacobianPoints(uint256 px, uint256 py) private pure returns (JPoint[16] memory points) { points[0x00] = JPoint(0, 0, 0); points[0x01] = JPoint(px, py, 1); - points[0x04] = JPoint(gx, gy, 1); + points[0x04] = JPoint(GX, GY, 1); points[0x02] = _jDoublePoint(points[0x01]); points[0x08] = _jDoublePoint(points[0x04]); points[0x03] = _jAddPoint(points[0x01], points[0x02]); @@ -300,10 +307,10 @@ library P256 { * `a**(p-1) ≡ 1 mod p`. This means that `a**(p-2)` is an inverse of a in Fp. */ function _invModN(uint256 value) private view returns (uint256) { - return Math.modExp(value, nn2, nn); + return Math.modExp(value, N2, N); } function _invModP(uint256 value) private view returns (uint256) { - return Math.modExp(value, pp2, pp); + return Math.modExp(value, P2, P); } } diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index b5b00084fd8..279633d8835 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -8,7 +8,7 @@ import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; contract P256Test is Test { /// forge-config: default.fuzz.runs = 256 function testVerify(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.nn - 1); + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (uint256 x, uint256 y) = P256.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); @@ -17,7 +17,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 256 function testRecover(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.nn - 1); + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (uint256 x, uint256 y) = P256.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); From 4dae298bd4860ed71bff38c71e2be56eb3db99d9 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 12:07:52 +0100 Subject: [PATCH 10/76] add changeset --- .changeset/odd-lobsters-wash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/odd-lobsters-wash.md diff --git a/.changeset/odd-lobsters-wash.md b/.changeset/odd-lobsters-wash.md new file mode 100644 index 00000000000..185362ae415 --- /dev/null +++ b/.changeset/odd-lobsters-wash.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': minor +--- + +`P256`: Add a library for verification/recovery of Secp256r1 (Aka P256) signatures. From 6cf039d6aa92f7631d205703b0a2e20d88c97618 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 12:13:10 +0100 Subject: [PATCH 11/76] improve doc --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index ecaab7fa75e..779426ef441 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -25,7 +25,7 @@ library P256 { uint256 internal constant GY = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5; /// @dev P (size of the field) uint256 internal constant P = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF; - /// @dev N (order of the field) + /// @dev N (order of G) uint256 internal constant N = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551; /// @dev A parameter of the weierstrass equation uint256 internal constant A = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC; From c094fa1af8e88e5fa7d0d889a10c00aa4d14ea69 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 12:34:15 +0100 Subject: [PATCH 12/76] add envvar to force allowUnlimitedContractSize --- .github/workflows/checks.yml | 2 ++ hardhat.config.js | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 30b72e2ea02..7d6c9d0a94d 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -66,6 +66,8 @@ jobs: run: bash scripts/upgradeable/transpile.sh - name: Run tests run: npm run test + env: + UNLIMITED: true - name: Check linearisation of the inheritance graph run: npm run test:inheritance - name: Check storage layout diff --git a/hardhat.config.js b/hardhat.config.js index 4006ce19c0a..e9d395e5593 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -3,6 +3,7 @@ // - SRC: contracts folder to compile (default: contracts) // - RUNS: number of optimization runs (default: 200) // - IR: enable IR compilation (default: false) +// - UNLIMITED: allow deployment of contracts larger than 24k (default: false) // - COVERAGE: enable coverage report (default: false) // - GAS: enable gas report (default: false) // - COINMARKETCAP: coinmarketcap api key for USD value in gas report @@ -35,6 +36,11 @@ const { argv } = require('yargs/yargs')() type: 'boolean', default: false, }, + unlimited: { + alias: 'allowUnlimitedContractSize', + type: 'boolean', + default: false + }, // Extra modules coverage: { type: 'boolean', @@ -91,7 +97,7 @@ module.exports = { }, networks: { hardhat: { - allowUnlimitedContractSize: argv.gas || argv.coverage, + allowUnlimitedContractSize: argv.gas || argv.coverage || argv.unlimited, initialBaseFeePerGas: argv.coverage ? 0 : undefined, }, }, From 20a03dfd47d60ab818d922e41cf63ba6837e77f0 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 13:34:24 +0100 Subject: [PATCH 13/76] fix lint --- hardhat.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index e9d395e5593..04f15212e93 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -39,7 +39,7 @@ const { argv } = require('yargs/yargs')() unlimited: { alias: 'allowUnlimitedContractSize', type: 'boolean', - default: false + default: false, }, // Extra modules coverage: { From 15f1a6bbe11ee3de0c9a41e185fd7d8fdec593ec Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 7 Feb 2024 13:37:43 +0100 Subject: [PATCH 14/76] fix stack too deep error in coverage --- hardhat.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/hardhat.config.js b/hardhat.config.js index 04f15212e93..67d8f50f7a7 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -79,6 +79,7 @@ module.exports = { optimizer: { enabled: true, runs: argv.runs, + details: { yul: true }, }, viaIR: argv.ir, outputSelection: { '*': { '*': ['storageLayout'] } }, From e2040e423ae4fe6b86a174fa4fb2bee0ff186e15 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 13 Feb 2024 10:39:48 +0100 Subject: [PATCH 15/76] reoder arguments to match ecrecover and EIP-7212 --- contracts/utils/cryptography/P256.sol | 26 +++++++++++------------ test/utils/cryptography/P256.t.sol | 10 ++++----- test/utils/cryptography/P256.test.js | 30 ++++++++++++++++++--------- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 779426ef441..31760c6d1e6 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -38,18 +38,18 @@ library P256 { /** * @dev signature verification - * @param qx - public key coordinate X - * @param qy - public key coordinate Y + * @param h - hashed message * @param r - signature half R * @param s - signature half S - * @param e - hashed message + * @param qx - public key coordinate X + * @param qy - public key coordinate Y */ - function verify(uint256 qx, uint256 qy, uint256 r, uint256 s, uint256 e) internal view returns (bool) { + function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { if (r == 0 || r >= N || s == 0 || s >= N || !isOnCurve(qx, qy)) return false; JPoint[16] memory points = _preComputeJacobianPoints(qx, qy); uint256 w = _invModN(s); - uint256 u1 = mulmod(e, w, N); + uint256 u1 = mulmod(h, w, N); uint256 u2 = mulmod(r, w, N); (uint256 x, ) = _jMultShamir(points, u1, u2); return (x == r); @@ -57,12 +57,12 @@ library P256 { /** * @dev public key recovery + * @param h - hashed message + * @param v - signature recovery param * @param r - signature half R * @param s - signature half S - * @param v - signature recovery param - * @param e - hashed message */ - function recovery(uint256 r, uint256 s, uint8 v, uint256 e) internal view returns (uint256, uint256) { + function recovery(uint256 h, uint8 v, uint256 r, uint256 s) internal view returns (uint256, uint256) { if (r == 0 || r >= N || s == 0 || s >= N || v > 1) return (0, 0); uint256 rx = r; @@ -73,7 +73,7 @@ library P256 { JPoint[16] memory points = _preComputeJacobianPoints(rx, ry); uint256 w = _invModN(r); - uint256 u1 = mulmod(N - (e % N), w, N); + uint256 u1 = mulmod(N - (h % N), w, N); uint256 u2 = mulmod(s, w, N); (uint256 x, uint256 y) = _jMultShamir(points, u1, u2); return (x, y); @@ -81,13 +81,13 @@ library P256 { /** * @dev address recovery + * @param h - hashed message + * @param v - signature recovery param * @param r - signature half R * @param s - signature half S - * @param v - signature recovery param - * @param e - hashed message */ - function recoveryAddress(uint256 r, uint256 s, uint8 v, uint256 e) internal view returns (address) { - (uint256 qx, uint256 qy) = recovery(r, s, v, e); + function recoveryAddress(uint256 h, uint8 v, uint256 r, uint256 s) internal view returns (address) { + (uint256 qx, uint256 qy) = recovery(h, v, r, s); return getAddress(qx, qy); } diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 279633d8835..736ea223bd4 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -6,23 +6,23 @@ import {Test} from "forge-std/Test.sol"; import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; contract P256Test is Test { - /// forge-config: default.fuzz.runs = 256 + /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (uint256 x, uint256 y) = P256.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); - assertTrue(P256.verify(x, y, uint256(r), uint256(s), uint256(digest))); + assertTrue(P256.verify(uint256(digest), uint256(r), uint256(s), x, y)); } - /// forge-config: default.fuzz.runs = 256 + /// forge-config: default.fuzz.runs = 512 function testRecover(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (uint256 x, uint256 y) = P256.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); - (uint256 qx0, uint256 qy0) = P256.recovery(uint256(r), uint256(s), 0, uint256(digest)); - (uint256 qx1, uint256 qy1) = P256.recovery(uint256(r), uint256(s), 1, uint256(digest)); + (uint256 qx0, uint256 qy0) = P256.recovery(uint256(digest), 0, uint256(r), uint256(s)); + (uint256 qx1, uint256 qy1) = P256.recovery(uint256(digest), 1, uint256(r), uint256(s)); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } } diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index e0a479cf6c5..fd1c58857e9 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -31,40 +31,50 @@ describe('P256', function () { }); it('verify valid signature', async function () { - expect(await this.mock.$verify(...this.publicKey, ...this.signature, this.messageHash)).to.be.true; + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; }); it('recover public key', async function () { - expect(await this.mock.$recovery(...this.signature, this.recovery, this.messageHash)).to.deep.equal(this.publicKey); + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); }); it('recover address', async function () { - expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, this.messageHash)).to.equal(this.address); + expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.equal(this.address); }); it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { const reversedPublicKey = Array.from(this.publicKey).reverse(); - expect(await this.mock.$verify(...reversedPublicKey, ...this.signature, this.messageHash)).to.be.false; + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { const reversedSignature = Array.from(this.signature).reverse(); - expect(await this.mock.$verify(...this.publicKey, ...reversedSignature, this.messageHash)).to.be.false; - expect(await this.mock.$recovery(...reversedSignature, this.recovery, this.messageHash)).to.not.deep.equal( + expect(await this.mock.$verify(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...reversedSignature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(...reversedSignature, this.recovery, this.messageHash)).to.not.equal( + expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...reversedSignature)).to.not.equal( this.address, ); }); it('reject signature with invalid message hash', async function () { const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); - expect(await this.mock.$verify(...this.publicKey, ...this.signature, invalidMessageHash)).to.be.false; - expect(await this.mock.$recovery(...this.signature, this.recovery, invalidMessageHash)).to.not.deep.equal( + expect(await this.mock.$verify(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$recovery(invalidMessageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(...this.signature, this.recovery, invalidMessageHash)).to.not.equal( + expect(await this.mock.$recoveryAddress(invalidMessageHash, this.recovery, ...this.signature)).to.not.equal( + this.address, + ); + }); + + it('fail to recover signature with invalid recovery bit', async function () { + const invalidRecovery = 1 - this.recovery; + expect(await this.mock.$recovery(this.messageHash, invalidRecovery, ...this.signature)).to.not.deep.equal( + this.publicKey, + ); + expect(await this.mock.$recoveryAddress(this.messageHash, invalidRecovery, ...this.signature)).to.not.equal( this.address, ); }); From 695b73234c9bde0e0ac3a901d8c7bcd316176938 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 13 Mar 2024 15:00:14 +0100 Subject: [PATCH 16/76] reduce diff --- contracts/mocks/ExposeImports.sol | 11 ----------- contracts/mocks/Stateless.sol | 1 + 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 contracts/mocks/ExposeImports.sol diff --git a/contracts/mocks/ExposeImports.sol b/contracts/mocks/ExposeImports.sol deleted file mode 100644 index 2be6ba46ae2..00000000000 --- a/contracts/mocks/ExposeImports.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.20; - -import {P256} from "../utils/cryptography/P256.sol"; - -abstract contract ExposeImports { - // This will be transpiled, causing all the imports above to be transpiled when running the upgradeable tests. - // This trick is necessary for testing libraries such as Panic.sol (which are not imported by any other transpiled - // contracts and would otherwise not be exposed). -} diff --git a/contracts/mocks/Stateless.sol b/contracts/mocks/Stateless.sol index 56f5b4c6610..8053acc1085 100644 --- a/contracts/mocks/Stateless.sol +++ b/contracts/mocks/Stateless.sol @@ -24,6 +24,7 @@ import {ERC721Holder} from "../token/ERC721/utils/ERC721Holder.sol"; import {Math} from "../utils/math/Math.sol"; import {MerkleProof} from "../utils/cryptography/MerkleProof.sol"; import {MessageHashUtils} from "../utils/cryptography/MessageHashUtils.sol"; +import {P256} from "../utils/cryptography/P256.sol"; import {SafeCast} from "../utils/math/SafeCast.sol"; import {SafeERC20} from "../token/ERC20/utils/SafeERC20.sol"; import {ShortStrings} from "../utils/ShortStrings.sol"; From 3bf4557353034274133150d4e7313fb2354d3478 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 24 Apr 2024 09:07:15 +0200 Subject: [PATCH 17/76] Update contracts/utils/cryptography/P256.sol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ernesto García --- contracts/utils/cryptography/P256.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 31760c6d1e6..e5babdb1e67 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -261,8 +261,8 @@ library P256 { } /** - * @dev Precompute a matrice of useful jacobian points associated to a given P. This can be seen as a 4x4 matrix - * that contains combinaison of P and G (generator) up to 3 times each. See table below: + * @dev Precompute a matrice of useful jacobian points associated with a given P. This can be seen as a 4x4 matrix + * that contains combination of P and G (generator) up to 3 times each. See the table below: * * ┌────┬─────────────────────┐ * │ i │ 0 1 2 3 │ From bba7fa38ea9cd5a00a18438fea2b881c44195b74 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 25 Apr 2024 15:46:23 +0200 Subject: [PATCH 18/76] update pseudocode reference --- contracts/utils/cryptography/P256.sol | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index e5babdb1e67..6a07db524cd 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -7,7 +7,7 @@ import {Math} from "../math/Math.sol"; * @dev Implementation of secp256r1 verification and recovery functions. * * Based on - * - https://github.com/itsobvioustech/A-passkeys-wallet/blob/main/src/Secp256r1.sol + * - https://github.com/itsobvioustech/aa-passkeys-wallet/blob/main/src/Secp256r1.sol * Which is heavily inspired from * - https://github.com/maxrobot/elliptic-solidity/blob/master/contracts/Secp256r1.sol * - https://github.com/tdrerup/elliptic-curve-solidity/blob/master/contracts/curves/EllipticCurve.sol @@ -146,7 +146,7 @@ library P256 { /** * @dev Point addition on the jacobian coordinates - * https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates + * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#addition-add-1998-cmo-2 */ function _jAdd( uint256 x1, @@ -187,7 +187,7 @@ library P256 { /** * @dev Point doubling on the jacobian coordinates - * https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates + * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#doubling-dbl-1998-cmo-2 */ function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 x2, uint256 y2, uint256 z2) { /// @solidity memory-safe-assembly @@ -197,10 +197,11 @@ library P256 { let zz := mulmod(z, z, p) let s := mulmod(4, mulmod(x, yy, p), p) // s = 4*x*y² let m := addmod(mulmod(3, mulmod(x, x, p), p), mulmod(A, mulmod(zz, zz, p), p), p) // m = 3*x²+a*z⁴ + let t := addmod(mulmod(m, m, p), sub(p, mulmod(2, s, p)), p) // t = m²-2*s - // x' = m²-2*s - x2 := addmod(mulmod(m, m, p), sub(p, mulmod(2, s, p)), p) - // y' = m*(s-x')-8*y⁴ + // x' = t + x2 := t + // y' = m*(s-t)-8*y⁴ y2 := addmod(mulmod(m, addmod(s, sub(p, x2), p), p), sub(p, mulmod(8, mulmod(yy, yy, p), p)), p) // z' = 2*y*z z2 := mulmod(2, mulmod(y, z, p), p) @@ -250,9 +251,7 @@ library P256 { } // Read 2 bits of u1, and 2 bits of u2. Combining the two give a lookup index in the table. uint256 pos = ((u1 >> 252) & 0xc) | ((u2 >> 254) & 0x3); - if (pos > 0) { - (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); - } + (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); u1 <<= 2; u2 <<= 2; } From 2812ed8f110bd7eaa6e7a1485b3b6911cbdfb797 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 25 Apr 2024 17:18:55 +0200 Subject: [PATCH 19/76] Update contracts/utils/cryptography/P256.sol --- contracts/utils/cryptography/P256.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 6a07db524cd..088479f5935 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -251,7 +251,9 @@ library P256 { } // Read 2 bits of u1, and 2 bits of u2. Combining the two give a lookup index in the table. uint256 pos = ((u1 >> 252) & 0xc) | ((u2 >> 254) & 0x3); - (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); + if (pos > 0) { + (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); + } u1 <<= 2; u2 <<= 2; } From e0ef63b775f54df2bbae5caebc1f00d20fb8378d Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 26 Apr 2024 10:02:06 +0200 Subject: [PATCH 20/76] refactor neutral element in jAdd --- contracts/utils/cryptography/P256.sol | 40 ++++++++++++++------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 088479f5935..9d42a4656a0 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -155,13 +155,7 @@ library P256 { uint256 x2, uint256 y2, uint256 z2 - ) private pure returns (uint256 x3, uint256 y3, uint256 z3) { - if (z1 == 0) { - return (x2, y2, z2); - } - if (z2 == 0) { - return (x1, y1, z1); - } + ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { /// @solidity memory-safe-assembly assembly { let p := P @@ -177,11 +171,11 @@ library P256 { let r := addmod(s2, sub(p, s1), p) // r = s2-s1 // x' = r²-h³-2*u1*h² - x3 := addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p) + rx := addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p) // y' = r*(u1*h²-x')-s1*h³ - y3 := addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, x3), p), p), sub(p, mulmod(s1, hhh, p)), p) + ry := addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, rx), p), p), sub(p, mulmod(s1, hhh, p)), p) // z' = h*z1*z2 - z3 := mulmod(h, mulmod(z1, z2, p), p) + rz := mulmod(h, mulmod(z1, z2, p), p) } } @@ -189,7 +183,7 @@ library P256 { * @dev Point doubling on the jacobian coordinates * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#doubling-dbl-1998-cmo-2 */ - function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 x2, uint256 y2, uint256 z2) { + function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 rx, uint256 ry, uint256 rz) { /// @solidity memory-safe-assembly assembly { let p := P @@ -200,11 +194,11 @@ library P256 { let t := addmod(mulmod(m, m, p), sub(p, mulmod(2, s, p)), p) // t = m²-2*s // x' = t - x2 := t + rx := t // y' = m*(s-t)-8*y⁴ - y2 := addmod(mulmod(m, addmod(s, sub(p, x2), p), p), sub(p, mulmod(8, mulmod(yy, yy, p), p)), p) + ry := addmod(mulmod(m, addmod(s, sub(p, t), p), p), sub(p, mulmod(8, mulmod(yy, yy, p), p)), p) // z' = 2*y*z - z2 := mulmod(2, mulmod(y, z, p), p) + rz := mulmod(2, mulmod(y, z, p), p) } } @@ -216,14 +210,18 @@ library P256 { uint256 y, uint256 z, uint256 k - ) private pure returns (uint256 x2, uint256 y2, uint256 z2) { + ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { unchecked { for (uint256 i = 0; i < 256; ++i) { - if (z > 0) { - (x2, y2, z2) = _jDouble(x2, y2, z2); + if (rz > 0) { + (rx, ry, rz) = _jDouble(rx, ry, rz); } if (k >> 255 > 0) { - (x2, y2, z2) = _jAdd(x2, y2, z2, x, y, z); + if (rz == 0) { + (rx, ry, rz) = (x, y, z); + } else { + (rx, ry, rz) = _jAdd(rx, ry, rz, x, y, z); + } } k <<= 1; } @@ -252,7 +250,11 @@ library P256 { // Read 2 bits of u1, and 2 bits of u2. Combining the two give a lookup index in the table. uint256 pos = ((u1 >> 252) & 0xc) | ((u2 >> 254) & 0x3); if (pos > 0) { - (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); + if (z == 0) { + (x, y, z) = (points[pos].x, points[pos].y, points[pos].z); + } else { + (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); + } } u1 <<= 2; u2 <<= 2; From 61a244d87e1b502a291b22df1167d190a5fd51ec Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 17 May 2024 16:13:29 +0200 Subject: [PATCH 21/76] add EIP-7212 support --- contracts/utils/cryptography/P256.sol | 20 +++++++++++++++++++- test/utils/cryptography/P256.t.sol | 1 + test/utils/cryptography/P256.test.js | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 9d42a4656a0..31a5e491342 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -37,7 +37,9 @@ library P256 { uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; /** - * @dev signature verification + * @dev signature verification - generic version that uses the EIP-7212 precompile is available, and fallback to + * the solidity implementation otherwise. + * * @param h - hashed message * @param r - signature half R * @param s - signature half S @@ -45,6 +47,22 @@ library P256 { * @param qy - public key coordinate Y */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { + (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); + return + success && returndata.length == 0x20 + ? abi.decode(returndata, (uint256)) == 1 + : verifySolidity(h, r, s, qx, qy); + } + + /** + * @dev signature verification - solidity implementation + * @param h - hashed message + * @param r - signature half R + * @param s - signature half S + * @param qx - public key coordinate X + * @param qy - public key coordinate Y + */ + function verifySolidity(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { if (r == 0 || r >= N || s == 0 || s >= N || !isOnCurve(qx, qy)) return false; JPoint[16] memory points = _preComputeJacobianPoints(qx, qy); diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 736ea223bd4..61ff302f5a8 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -13,6 +13,7 @@ contract P256Test is Test { (uint256 x, uint256 y) = P256.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); assertTrue(P256.verify(uint256(digest), uint256(r), uint256(s), x, y)); + assertTrue(P256.verifySolidity(uint256(digest), uint256(r), uint256(s), x, y)); } /// forge-config: default.fuzz.runs = 512 diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index fd1c58857e9..5e44df81ad9 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -32,6 +32,7 @@ describe('P256', function () { it('verify valid signature', async function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; }); it('recover public key', async function () { @@ -45,11 +46,13 @@ describe('P256', function () { it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { const reversedPublicKey = Array.from(this.publicKey).reverse(); expect(await this.mock.$verify(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { const reversedSignature = Array.from(this.signature).reverse(); expect(await this.mock.$verify(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; expect(await this.mock.$recovery(this.messageHash, this.recovery, ...reversedSignature)).to.not.deep.equal( this.publicKey, ); @@ -61,6 +64,7 @@ describe('P256', function () { it('reject signature with invalid message hash', async function () { const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); expect(await this.mock.$verify(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$recovery(invalidMessageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); From 2e9d04ded0fd0c6b91036ddaea90886a571b18c1 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Fri, 14 Jun 2024 17:31:32 -0600 Subject: [PATCH 22/76] Apply PR suggestions --- contracts/utils/cryptography/P256.sol | 66 +++++++++++++++------------ contracts/utils/math/Math.sol | 2 +- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 31a5e491342..9b5b3ba7c68 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -6,11 +6,13 @@ import {Math} from "../math/Math.sol"; /** * @dev Implementation of secp256r1 verification and recovery functions. * - * Based on - * - https://github.com/itsobvioustech/aa-passkeys-wallet/blob/main/src/Secp256r1.sol - * Which is heavily inspired from - * - https://github.com/maxrobot/elliptic-solidity/blob/master/contracts/Secp256r1.sol - * - https://github.com/tdrerup/elliptic-curve-solidity/blob/master/contracts/curves/EllipticCurve.sol + * The secp256r1 curve (also known as P256) is a NIST standard curve with wide support in modern devices + * and cryptographic standards. Some notable examples include Apple's Secure Enclave and Android's Keystore + * as well as authentication protocols like FIDO2. + * + * Based on the original https://github.com/itsobvioustech/aa-passkeys-wallet/blob/main/src/Secp256r1.sol[implementation of itsobvioustech]. + * Heavily inspired in https://github.com/maxrobot/elliptic-solidity/blob/master/contracts/Secp256r1.sol[maxrobot] and + * https://github.com/tdrerup/elliptic-curve-solidity/blob/master/contracts/curves/EllipticCurve.sol[tdrerup] implementations. */ library P256 { struct JPoint { @@ -32,13 +34,19 @@ library P256 { /// @dev B parameter of the weierstrass equation uint256 internal constant B = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B; + // P - 2 constant to speed up invModP uint256 private constant P2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD; + // N - 2 constant to speed up invModN uint256 private constant N2 = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F; + uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; + /// N/2 for excluding higher order `s` values + uint256 private constant HALF_N = 0x7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8; + /** - * @dev signature verification - generic version that uses the EIP-7212 precompile is available, and fallback to - * the solidity implementation otherwise. + * @dev Verifies a secp256r1 signature using the RIP-7212 precompile at `address(0x100)` and falls back to the + * Solidity implementation if the precompile is not available. * * @param h - hashed message * @param r - signature half R @@ -47,11 +55,11 @@ library P256 { * @param qy - public key coordinate Y */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { + if (s > HALF_N) { + return false; + } (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); - return - success && returndata.length == 0x20 - ? abi.decode(returndata, (uint256)) == 1 - : verifySolidity(h, r, s, qx, qy); + return success && returndata.length == 0x20 ? abi.decode(returndata, (bool)) : verifySolidity(h, r, s, qx, qy); } /** @@ -124,8 +132,7 @@ library P256 { * @param qy - public key coordinate Y */ function getAddress(uint256 qx, uint256 qy) internal pure returns (address result) { - /// @solidity memory-safe-assembly - assembly { + assembly ("memory-safe") { mstore(0x00, qx) mstore(0x20, qy) result := keccak256(0x00, 0x40) @@ -136,12 +143,11 @@ library P256 { * @dev check if a point is on the curve. */ function isOnCurve(uint256 x, uint256 y) internal pure returns (bool result) { - /// @solidity memory-safe-assembly - assembly { + assembly ("memory-safe") { let p := P - let lhs := mulmod(y, y, p) - let rhs := addmod(mulmod(addmod(mulmod(x, x, p), A, p), x, p), B, p) - result := eq(lhs, rhs) + let lhs := mulmod(y, y, p) // y^2 + let rhs := addmod(mulmod(addmod(mulmod(x, x, p), A, p), x, p), B, p) // ((x^2 + a) * x) + b = x^3 + ax + b + result := eq(lhs, rhs) // Should conform with the Weierstrass equation } } @@ -174,8 +180,7 @@ library P256 { uint256 y2, uint256 z2 ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { - /// @solidity memory-safe-assembly - assembly { + assembly ("memory-safe") { let p := P let zz1 := mulmod(z1, z1, p) // zz1 = z1² let zz2 := mulmod(z2, z2, p) // zz2 = z2² @@ -202,8 +207,7 @@ library P256 { * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#doubling-dbl-1998-cmo-2 */ function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 rx, uint256 ry, uint256 rz) { - /// @solidity memory-safe-assembly - assembly { + assembly ("memory-safe") { let p := P let yy := mulmod(y, y, p) let zz := mulmod(z, z, p) @@ -323,15 +327,21 @@ library P256 { return JPoint(x, y, z); } - /** - *@dev From Fermat's little theorem https://en.wikipedia.org/wiki/Fermat%27s_little_theorem: - * `a**(p-1) ≡ 1 mod p`. This means that `a**(p-2)` is an inverse of a in Fp. - */ function _invModN(uint256 value) private view returns (uint256) { - return Math.modExp(value, N2, N); + return _invMod(value, N2, N); } function _invModP(uint256 value) private view returns (uint256) { - return Math.modExp(value, P2, P); + return _invMod(value, P2, P); + } + + /** + * @dev From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that + * `a**(p-1) ≡ 1 mod p` if p is a prime number (and generates Fp). Given p is prime, it doesn't have a + * a coprime, so we can rewrite it as `a * a**(p-2) ≡ 1 mod p`, which means that `a**(p-2)` is the modular + * multiplicative inverse of a by rewritting it to to `a**-1 ≡ a**(p-2) mod p`. + */ + function _invMod(uint256 value, uint256 p2, uint256 p) private view returns (uint256) { + return Math.modExp(value, p2, p); } } diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index 5bf5bddbb09..28f2eeca338 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -237,7 +237,7 @@ library Math { * * If the input value is not inversible, 0 is returned. * - * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Ferma's little theorem and get the + * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the * inverse using `Math.modExp(a, n - 2, n)`. */ function invMod(uint256 a, uint256 n) internal pure returns (uint256) { From 90626336b41f28eb647c48202e0e0e740c87e236 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 17 Jun 2024 09:47:56 +0200 Subject: [PATCH 23/76] move invModPrime to Math.sol --- contracts/utils/cryptography/P256.sol | 36 +++------------------------ contracts/utils/math/Math.sol | 17 ++++++++++++- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 9b5b3ba7c68..c4c6f371c40 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -34,16 +34,9 @@ library P256 { /// @dev B parameter of the weierstrass equation uint256 internal constant B = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B; - // P - 2 constant to speed up invModP - uint256 private constant P2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD; - // N - 2 constant to speed up invModN - uint256 private constant N2 = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F; - + /// @dev (P + 1) / 4. Usefull to compute sqrt uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; - /// N/2 for excluding higher order `s` values - uint256 private constant HALF_N = 0x7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8; - /** * @dev Verifies a secp256r1 signature using the RIP-7212 precompile at `address(0x100)` and falls back to the * Solidity implementation if the precompile is not available. @@ -55,9 +48,6 @@ library P256 { * @param qy - public key coordinate Y */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - if (s > HALF_N) { - return false; - } (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); return success && returndata.length == 0x20 ? abi.decode(returndata, (bool)) : verifySolidity(h, r, s, qx, qy); } @@ -74,7 +64,7 @@ library P256 { if (r == 0 || r >= N || s == 0 || s >= N || !isOnCurve(qx, qy)) return false; JPoint[16] memory points = _preComputeJacobianPoints(qx, qy); - uint256 w = _invModN(s); + uint256 w = Math.invModPrime(s, N); uint256 u1 = mulmod(h, w, N); uint256 u2 = mulmod(r, w, N); (uint256 x, ) = _jMultShamir(points, u1, u2); @@ -98,7 +88,7 @@ library P256 { if (ry % 2 != v % 2) ry = P - ry; JPoint[16] memory points = _preComputeJacobianPoints(rx, ry); - uint256 w = _invModN(r); + uint256 w = Math.invModPrime(r, N); uint256 u1 = mulmod(N - (h % N), w, N); uint256 u2 = mulmod(s, w, N); (uint256 x, uint256 y) = _jMultShamir(points, u1, u2); @@ -161,7 +151,7 @@ library P256 { */ function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (uint256 ax, uint256 ay) { if (jz == 0) return (0, 0); - uint256 zinv = _invModP(jz); + uint256 zinv = Math.invModPrime(jz, P); uint256 zzinv = mulmod(zinv, zinv, P); uint256 zzzinv = mulmod(zzinv, zinv, P); ax = mulmod(jx, zzinv, P); @@ -326,22 +316,4 @@ library P256 { (uint256 x, uint256 y, uint256 z) = _jDouble(p.x, p.y, p.z); return JPoint(x, y, z); } - - function _invModN(uint256 value) private view returns (uint256) { - return _invMod(value, N2, N); - } - - function _invModP(uint256 value) private view returns (uint256) { - return _invMod(value, P2, P); - } - - /** - * @dev From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that - * `a**(p-1) ≡ 1 mod p` if p is a prime number (and generates Fp). Given p is prime, it doesn't have a - * a coprime, so we can rewrite it as `a * a**(p-2) ≡ 1 mod p`, which means that `a**(p-2)` is the modular - * multiplicative inverse of a by rewritting it to to `a**-1 ≡ a**(p-2) mod p`. - */ - function _invMod(uint256 value, uint256 p2, uint256 p) private view returns (uint256) { - return Math.modExp(value, p2, p); - } } diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index 28f2eeca338..3aa16787328 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -238,7 +238,7 @@ library Math { * If the input value is not inversible, 0 is returned. * * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the - * inverse using `Math.modExp(a, n - 2, n)`. + * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}. */ function invMod(uint256 a, uint256 n) internal pure returns (uint256) { unchecked { @@ -288,6 +288,21 @@ library Math { } } + /** + * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`. + * + * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is + * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that + * `a**(p-2)` is the modular multiplicative inverse of a in Fp. + * + * Note: this function does NOT check that `p` is a prime greater than `2`. + */ + function invModPrime(uint256 a, uint256 p) internal view returns (uint256) { + unchecked { + return Math.modExp(a, p - 2, p); + } + } + /** * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m) * From a44bb713b01781eb884e4b88bd525c64bd246bc2 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 17 Jun 2024 10:27:07 +0200 Subject: [PATCH 24/76] update --- contracts/utils/Errors.sol | 5 ++ contracts/utils/cryptography/P256.sol | 67 +++++++++++++++++++++++++-- test/utils/cryptography/P256.test.js | 12 +++++ 3 files changed, 79 insertions(+), 5 deletions(-) diff --git a/contracts/utils/Errors.sol b/contracts/utils/Errors.sol index 024109444f0..9cd4de8e018 100644 --- a/contracts/utils/Errors.sol +++ b/contracts/utils/Errors.sol @@ -23,4 +23,9 @@ library Errors { * @dev The deployment failed. */ error FailedDeployment(); + + /** + * @dev A necessary EIP/RIP is missing on the current network. + */ + error MissingEIP(uint256); } diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index c4c6f371c40..ec491b572e6 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.20; import {Math} from "../math/Math.sol"; +import {Errors} from "../Errors.sol"; /** * @dev Implementation of secp256r1 verification and recovery functions. @@ -38,8 +39,9 @@ library P256 { uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; /** - * @dev Verifies a secp256r1 signature using the RIP-7212 precompile at `address(0x100)` and falls back to the - * Solidity implementation if the precompile is not available. + * @dev Verifies a secp256r1 signature using the EIP-7212 or RIP-7212 precompiles and falls back to the Solidity + * implementation if the precompile is not available. This version should work on all chains, but requires the + * deployment of more bytecode. * * @param h - hashed message * @param r - signature half R @@ -48,12 +50,67 @@ library P256 { * @param qy - public key coordinate Y */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); - return success && returndata.length == 0x20 ? abi.decode(returndata, (bool)) : verifySolidity(h, r, s, qx, qy); + (bool valid, bool supported) = tryVerifyPrecompile(h, r, s, qx, qy); + return supported ? valid : verifySolidity(h, r, s, qx, qy); } /** - * @dev signature verification - solidity implementation + * @dev signature verification - using EIP-7212 and RIP-7212 precompiles. This version will only work on chains + * that have one of these precompile available. On chains that do not have these precompile, this function reverts. + * + * @param h - hashed message + * @param r - signature half R + * @param s - signature half S + * @param qx - public key coordinate X + * @param qy - public key coordinate Y + */ + function verifyPrecompile(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { + (bool valid, bool supported) = tryVerifyPrecompile(h, r, s, qx, qy); + if (supported) { + return valid; + } else { + revert Errors.MissingEIP(7212); + } + } + + /** + * @dev try signature verification - using EIP-7212 and RIP-7212 precompiles. This function does not revert is the + * required precompiles are missing. Instead it will return with `supported = false`. + * + * @param h - hashed message + * @param r - signature half R + * @param s - signature half S + * @param qx - public key coordinate X + * @param qy - public key coordinate Y + */ + function tryVerifyPrecompile( + uint256 h, + uint256 r, + uint256 s, + uint256 qx, + uint256 qy + ) internal view returns (bool valid, bool supported) { + bytes memory params = abi.encode(h, r, s, qx, qy); + + // try using EIP-7212 precompile at 0x0B + (bool success, bytes memory returndata) = address(0x0B).staticcall(params); + if (success && returndata.length == 0x20) { + return (abi.decode(returndata, (bool)), true); + } + + // try using RIP-7212 precompile at 0x100 + (success, returndata) = address(0x100).staticcall(params); + if (success && returndata.length == 0x20) { + return (abi.decode(returndata, (bool)), true); + } + + return (false, false); + } + + /** + * @dev signature verification - solidity implementation. This version will work on all chains, but is more + * expensive to use, and to deploy, than the version that rely on precompiles. + * * @param h - hashed message * @param r - signature half R * @param s - signature half S diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 5e44df81ad9..a3b71056e02 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -33,6 +33,9 @@ describe('P256', function () { it('verify valid signature', async function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + await expect(this.mock.$verifyPrecompile(this.messageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingEIP') + .withArgs(7212); }); it('recover public key', async function () { @@ -47,12 +50,18 @@ describe('P256', function () { const reversedPublicKey = Array.from(this.publicKey).reverse(); expect(await this.mock.$verify(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; + await expect(this.mock.$verifyPrecompile(this.messageHash, ...this.signature, ...reversedPublicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingEIP') + .withArgs(7212); }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { const reversedSignature = Array.from(this.signature).reverse(); expect(await this.mock.$verify(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verifyPrecompile(this.messageHash, ...reversedSignature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingEIP') + .withArgs(7212); expect(await this.mock.$recovery(this.messageHash, this.recovery, ...reversedSignature)).to.not.deep.equal( this.publicKey, ); @@ -65,6 +74,9 @@ describe('P256', function () { const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); expect(await this.mock.$verify(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verifyPrecompile(invalidMessageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingEIP') + .withArgs(7212); expect(await this.mock.$recovery(invalidMessageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); From 3a6e1f59307b357b8b10b8383a04ceed5ab0cb85 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 17 Jun 2024 11:10:45 +0200 Subject: [PATCH 25/76] update --- contracts/utils/Errors.sol | 4 +-- contracts/utils/cryptography/P256.sol | 41 +++++++++------------------ test/utils/cryptography/P256.test.js | 24 ++++++++-------- 3 files changed, 28 insertions(+), 41 deletions(-) diff --git a/contracts/utils/Errors.sol b/contracts/utils/Errors.sol index 9cd4de8e018..633d8c20286 100644 --- a/contracts/utils/Errors.sol +++ b/contracts/utils/Errors.sol @@ -25,7 +25,7 @@ library Errors { error FailedDeployment(); /** - * @dev A necessary EIP/RIP is missing on the current network. + * @dev A necessary precompile is missing. */ - error MissingEIP(uint256); + error MissingPrecompile(address); } diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index ec491b572e6..5932f895088 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -39,9 +39,9 @@ library P256 { uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; /** - * @dev Verifies a secp256r1 signature using the EIP-7212 or RIP-7212 precompiles and falls back to the Solidity - * implementation if the precompile is not available. This version should work on all chains, but requires the - * deployment of more bytecode. + * @dev Verifies a secp256r1 signature using the RIP-7212 precompile and falls back to the Solidity implementation + * if the precompile is not available. This version should work on all chains, but requires the deployment of more + * bytecode. * * @param h - hashed message * @param r - signature half R @@ -50,13 +50,13 @@ library P256 { * @param qy - public key coordinate Y */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - (bool valid, bool supported) = tryVerifyPrecompile(h, r, s, qx, qy); + (bool valid, bool supported) = tryVerify7212(h, r, s, qx, qy); return supported ? valid : verifySolidity(h, r, s, qx, qy); } /** - * @dev signature verification - using EIP-7212 and RIP-7212 precompiles. This version will only work on chains - * that have one of these precompile available. On chains that do not have these precompile, this function reverts. + * @dev signature verification - using the RIP-7212 precompile. This version will only work on chains that have + * the precompile available. This function will revert on networks that do not have this precompile. * * @param h - hashed message * @param r - signature half R @@ -64,18 +64,18 @@ library P256 { * @param qx - public key coordinate X * @param qy - public key coordinate Y */ - function verifyPrecompile(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - (bool valid, bool supported) = tryVerifyPrecompile(h, r, s, qx, qy); + function verify7212(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { + (bool valid, bool supported) = tryVerify7212(h, r, s, qx, qy); if (supported) { return valid; } else { - revert Errors.MissingEIP(7212); + revert Errors.MissingPrecompile(address(0x100)); } } /** - * @dev try signature verification - using EIP-7212 and RIP-7212 precompiles. This function does not revert is the - * required precompiles are missing. Instead it will return with `supported = false`. + * @dev try signature verification - using the RIP-7212 precompiles. This function does not revert is the required + * precompile is missing. Instead it will return with `supported = false`. * * @param h - hashed message * @param r - signature half R @@ -83,28 +83,15 @@ library P256 { * @param qx - public key coordinate X * @param qy - public key coordinate Y */ - function tryVerifyPrecompile( + function tryVerify7212( uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy ) internal view returns (bool valid, bool supported) { - bytes memory params = abi.encode(h, r, s, qx, qy); - - // try using EIP-7212 precompile at 0x0B - (bool success, bytes memory returndata) = address(0x0B).staticcall(params); - if (success && returndata.length == 0x20) { - return (abi.decode(returndata, (bool)), true); - } - - // try using RIP-7212 precompile at 0x100 - (success, returndata) = address(0x100).staticcall(params); - if (success && returndata.length == 0x20) { - return (abi.decode(returndata, (bool)), true); - } - - return (false, false); + (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); + return (success && returndata.length == 0x20) ? (abi.decode(returndata, (bool)), true) : (false, false); } /** diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index a3b71056e02..0395ee1f5e2 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -33,9 +33,9 @@ describe('P256', function () { it('verify valid signature', async function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - await expect(this.mock.$verifyPrecompile(this.messageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingEIP') - .withArgs(7212); + await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); }); it('recover public key', async function () { @@ -50,18 +50,18 @@ describe('P256', function () { const reversedPublicKey = Array.from(this.publicKey).reverse(); expect(await this.mock.$verify(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; - await expect(this.mock.$verifyPrecompile(this.messageHash, ...this.signature, ...reversedPublicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingEIP') - .withArgs(7212); + await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...reversedPublicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { const reversedSignature = Array.from(this.signature).reverse(); expect(await this.mock.$verify(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verifyPrecompile(this.messageHash, ...reversedSignature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingEIP') - .withArgs(7212); + await expect(this.mock.$verify7212(this.messageHash, ...reversedSignature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); expect(await this.mock.$recovery(this.messageHash, this.recovery, ...reversedSignature)).to.not.deep.equal( this.publicKey, ); @@ -74,9 +74,9 @@ describe('P256', function () { const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); expect(await this.mock.$verify(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verifyPrecompile(invalidMessageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingEIP') - .withArgs(7212); + await expect(this.mock.$verify7212(invalidMessageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); expect(await this.mock.$recovery(invalidMessageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); From 3e71fad47992626bb9da2c2e470840d9ef48e6ba Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 17 Jun 2024 11:52:21 +0200 Subject: [PATCH 26/76] codespell --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 5932f895088..66f79320b28 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -35,7 +35,7 @@ library P256 { /// @dev B parameter of the weierstrass equation uint256 internal constant B = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B; - /// @dev (P + 1) / 4. Usefull to compute sqrt + /// @dev (P + 1) / 4. Useful to compute sqrt uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; /** From 887272bc853a98623d8f7e4730b8076ae58028ce Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 17 Jun 2024 15:18:45 +0200 Subject: [PATCH 27/76] test signature maleability --- test/utils/cryptography/P256.test.js | 62 +++++++++++++++++++--------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 0395ee1f5e2..3c97da7752b 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -3,6 +3,8 @@ const { expect } = require('chai'); const { secp256r1 } = require('@noble/curves/p256'); const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); +const N = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n; + const prepareSignature = ( privateKey = secp256r1.utils.randomPrivateKey(), messageHash = ethers.hexlify(ethers.randomBytes(0x20)), @@ -46,51 +48,73 @@ describe('P256', function () { expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.equal(this.address); }); + it('signatures are maleable', async function () { + // symmetric S' = N - S + this.signature[1] = ethers.toBeHex(N - ethers.toBigInt(this.signature[1])); + this.recovery = 1 - this.recovery; + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); + expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.equal(this.address); + }); + it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { - const reversedPublicKey = Array.from(this.publicKey).reverse(); - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; - expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...reversedPublicKey)).to.be.false; - await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...reversedPublicKey)) + // flip public key + this.publicKey.reverse(); + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { - const reversedSignature = Array.from(this.signature).reverse(); - expect(await this.mock.$verify(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; - expect(await this.mock.$verifySolidity(this.messageHash, ...reversedSignature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verify7212(this.messageHash, ...reversedSignature, ...this.publicKey)) + // flip public key + this.signature.reverse(); + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); - expect(await this.mock.$recovery(this.messageHash, this.recovery, ...reversedSignature)).to.not.deep.equal( + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...reversedSignature)).to.not.equal( + expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.not.equal( this.address, ); }); it('reject signature with invalid message hash', async function () { - const invalidMessageHash = ethers.hexlify(ethers.randomBytes(32)); - expect(await this.mock.$verify(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; - expect(await this.mock.$verifySolidity(invalidMessageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verify7212(invalidMessageHash, ...this.signature, ...this.publicKey)) + // random message hash + this.messageHash = ethers.hexlify(ethers.randomBytes(32)); + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); - expect(await this.mock.$recovery(invalidMessageHash, this.recovery, ...this.signature)).to.not.deep.equal( + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(invalidMessageHash, this.recovery, ...this.signature)).to.not.equal( + expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.not.equal( this.address, ); }); it('fail to recover signature with invalid recovery bit', async function () { - const invalidRecovery = 1 - this.recovery; - expect(await this.mock.$recovery(this.messageHash, invalidRecovery, ...this.signature)).to.not.deep.equal( + // filp recovery bit + this.recovery = 1 - this.recovery; + + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(this.messageHash, invalidRecovery, ...this.signature)).to.not.equal( + expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.not.equal( this.address, ); }); From 433548f7d8e01b48fdc22574566f10356f9467e6 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Wed, 19 Jun 2024 22:13:15 -0600 Subject: [PATCH 28/76] Iterate --- contracts/utils/cryptography/P256.sol | 42 ++++++++++----------------- test/utils/cryptography/P256.test.js | 2 +- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 66f79320b28..d9300192c3f 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -48,6 +48,9 @@ library P256 { * @param s - signature half S * @param qx - public key coordinate X * @param qy - public key coordinate Y + * + * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting + * the upper half order of the curve (i.e. s > N/2) */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { (bool valid, bool supported) = tryVerify7212(h, r, s, qx, qy); @@ -55,14 +58,7 @@ library P256 { } /** - * @dev signature verification - using the RIP-7212 precompile. This version will only work on chains that have - * the precompile available. This function will revert on networks that do not have this precompile. - * - * @param h - hashed message - * @param r - signature half R - * @param s - signature half S - * @param qx - public key coordinate X - * @param qy - public key coordinate Y + * @dev Same as {verify}, but it will revert if the required precompile is not available. */ function verify7212(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { (bool valid, bool supported) = tryVerify7212(h, r, s, qx, qy); @@ -74,14 +70,7 @@ library P256 { } /** - * @dev try signature verification - using the RIP-7212 precompiles. This function does not revert is the required - * precompile is missing. Instead it will return with `supported = false`. - * - * @param h - hashed message - * @param r - signature half R - * @param s - signature half S - * @param qx - public key coordinate X - * @param qy - public key coordinate Y + * @dev Same as {verify}, but it will return false if the required precompile is not available. */ function tryVerify7212( uint256 h, @@ -95,14 +84,7 @@ library P256 { } /** - * @dev signature verification - solidity implementation. This version will work on all chains, but is more - * expensive to use, and to deploy, than the version that rely on precompiles. - * - * @param h - hashed message - * @param r - signature half R - * @param s - signature half S - * @param qx - public key coordinate X - * @param qy - public key coordinate Y + * @dev Same as {verify}, but only the Solidity implementation is used. */ function verifySolidity(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { if (r == 0 || r >= N || s == 0 || s >= N || !isOnCurve(qx, qy)) return false; @@ -116,11 +98,15 @@ library P256 { } /** - * @dev public key recovery + * @dev Public key recovery + * * @param h - hashed message * @param v - signature recovery param * @param r - signature half R * @param s - signature half S + * + * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting + * the upper half order of the curve (i.e. s > N/2) */ function recovery(uint256 h, uint8 v, uint256 r, uint256 s) internal view returns (uint256, uint256) { if (r == 0 || r >= N || s == 0 || s >= N || v > 1) return (0, 0); @@ -140,11 +126,15 @@ library P256 { } /** - * @dev address recovery + * @dev Address recovery from public key + * * @param h - hashed message * @param v - signature recovery param * @param r - signature half R * @param s - signature half S + * + * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting + * the upper half order of the curve (i.e. s > N/2) */ function recoveryAddress(uint256 h, uint8 v, uint256 r, uint256 s) internal view returns (address) { (uint256 qx, uint256 qy) = recovery(h, v, r, s); diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 3c97da7752b..e8bc233871b 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -108,7 +108,7 @@ describe('P256', function () { }); it('fail to recover signature with invalid recovery bit', async function () { - // filp recovery bit + // flip recovery bit this.recovery = 1 - this.recovery; expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( From 4f80ca0bf27ccffabf073f524e822a9dfee1c88e Mon Sep 17 00:00:00 2001 From: ernestognw Date: Thu, 20 Jun 2024 20:51:35 -0600 Subject: [PATCH 29/76] Add more comments --- contracts/utils/cryptography/P256.sol | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index d9300192c3f..3614d70f4b4 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -323,22 +323,22 @@ library P256 { * └────┴─────────────────────┘ */ function _preComputeJacobianPoints(uint256 px, uint256 py) private pure returns (JPoint[16] memory points) { - points[0x00] = JPoint(0, 0, 0); - points[0x01] = JPoint(px, py, 1); - points[0x04] = JPoint(GX, GY, 1); - points[0x02] = _jDoublePoint(points[0x01]); - points[0x08] = _jDoublePoint(points[0x04]); - points[0x03] = _jAddPoint(points[0x01], points[0x02]); - points[0x05] = _jAddPoint(points[0x01], points[0x04]); - points[0x06] = _jAddPoint(points[0x02], points[0x04]); - points[0x07] = _jAddPoint(points[0x03], points[0x04]); - points[0x09] = _jAddPoint(points[0x01], points[0x08]); - points[0x0a] = _jAddPoint(points[0x02], points[0x08]); - points[0x0b] = _jAddPoint(points[0x03], points[0x08]); - points[0x0c] = _jAddPoint(points[0x04], points[0x08]); - points[0x0d] = _jAddPoint(points[0x01], points[0x0c]); - points[0x0e] = _jAddPoint(points[0x02], points[0x0c]); - points[0x0f] = _jAddPoint(points[0x03], points[0x0C]); + points[0x00] = JPoint(0, 0, 0); // 0,0 + points[0x01] = JPoint(px, py, 1); // 1,0 (p) + points[0x04] = JPoint(GX, GY, 1); // 0,1 (g) + points[0x02] = _jDoublePoint(points[0x01]); // 2,0 (2p) + points[0x08] = _jDoublePoint(points[0x04]); // 0,2 (2g) + points[0x03] = _jAddPoint(points[0x01], points[0x02]); // 3,0 (3p) + points[0x05] = _jAddPoint(points[0x01], points[0x04]); // 1,1 (p+g) + points[0x06] = _jAddPoint(points[0x02], points[0x04]); // 2,1 (2p+g) + points[0x07] = _jAddPoint(points[0x03], points[0x04]); // 3,1 (3p+g) + points[0x09] = _jAddPoint(points[0x01], points[0x08]); // 1,2 (p+2g) + points[0x0a] = _jAddPoint(points[0x02], points[0x08]); // 2,2 (2p+2g) + points[0x0b] = _jAddPoint(points[0x03], points[0x08]); // 3,2 (3p+2g) + points[0x0c] = _jAddPoint(points[0x04], points[0x08]); // 0,3 (g+2g) + points[0x0d] = _jAddPoint(points[0x01], points[0x0c]); // 1,3 (p+3g) + points[0x0e] = _jAddPoint(points[0x02], points[0x0c]); // 2,3 (2p+3g) + points[0x0f] = _jAddPoint(points[0x03], points[0x0C]); // 3,3 (3p+3g) } function _jAddPoint(JPoint memory p1, JPoint memory p2) private pure returns (JPoint memory) { From be69f5c9e43eadf2f9c58ffbc2fc716bf27556c8 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 21 Jun 2024 11:23:43 +0200 Subject: [PATCH 30/76] remove P256 public key to address derivation --- contracts/utils/cryptography/P256.sol | 29 --------------------------- test/utils/cryptography/P256.test.js | 17 +--------------- 2 files changed, 1 insertion(+), 45 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 3614d70f4b4..95c5eba3649 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -125,22 +125,6 @@ library P256 { return (x, y); } - /** - * @dev Address recovery from public key - * - * @param h - hashed message - * @param v - signature recovery param - * @param r - signature half R - * @param s - signature half S - * - * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting - * the upper half order of the curve (i.e. s > N/2) - */ - function recoveryAddress(uint256 h, uint8 v, uint256 r, uint256 s) internal view returns (address) { - (uint256 qx, uint256 qy) = recovery(h, v, r, s); - return getAddress(qx, qy); - } - /** * @dev derivate public key * @param privateKey - private key @@ -150,19 +134,6 @@ library P256 { return _affineFromJacobian(x, y, z); } - /** - * @dev Hash public key into an address - * @param qx - public key coordinate X - * @param qy - public key coordinate Y - */ - function getAddress(uint256 qx, uint256 qy) internal pure returns (address result) { - assembly ("memory-safe") { - mstore(0x00, qx) - mstore(0x20, qy) - result := keccak256(0x00, 0x40) - } - } - /** * @dev check if a point is on the curve. */ diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index e8bc233871b..3efd76809ec 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -13,10 +13,9 @@ const prepareSignature = ( secp256r1.getPublicKey(privateKey, false).slice(0x01, 0x21), secp256r1.getPublicKey(privateKey, false).slice(0x21, 0x41), ].map(ethers.hexlify); - const address = ethers.getAddress(ethers.keccak256(ethers.concat(publicKey)).slice(-40)); const { r, s, recovery } = secp256r1.sign(messageHash.replace(/0x/, ''), privateKey); const signature = [r, s].map(v => ethers.toBeHex(v, 0x20)); - return { address, privateKey, publicKey, signature, recovery, messageHash }; + return { privateKey, publicKey, signature, recovery, messageHash }; }; describe('P256', function () { @@ -44,10 +43,6 @@ describe('P256', function () { expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); }); - it('recover address', async function () { - expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.equal(this.address); - }); - it('signatures are maleable', async function () { // symmetric S' = N - S this.signature[1] = ethers.toBeHex(N - ethers.toBigInt(this.signature[1])); @@ -59,7 +54,6 @@ describe('P256', function () { .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); - expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.equal(this.address); }); it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { @@ -85,9 +79,6 @@ describe('P256', function () { expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.not.equal( - this.address, - ); }); it('reject signature with invalid message hash', async function () { @@ -102,9 +93,6 @@ describe('P256', function () { expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.not.equal( - this.address, - ); }); it('fail to recover signature with invalid recovery bit', async function () { @@ -114,8 +102,5 @@ describe('P256', function () { expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( this.publicKey, ); - expect(await this.mock.$recoveryAddress(this.messageHash, this.recovery, ...this.signature)).to.not.equal( - this.address, - ); }); }); From fcde23fefe96058eefed23d266896c67f634f4d9 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Fri, 21 Jun 2024 10:13:57 -0600 Subject: [PATCH 31/76] Move publicKey from privateKey derivation function to tests --- contracts/utils/cryptography/P256.sol | 37 +--------- test/utils/cryptography/P256.t.sol | 100 +++++++++++++++++++++++++- 2 files changed, 99 insertions(+), 38 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 95c5eba3649..650891aafc0 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -126,16 +126,7 @@ library P256 { } /** - * @dev derivate public key - * @param privateKey - private key - */ - function getPublicKey(uint256 privateKey) internal view returns (uint256, uint256) { - (uint256 x, uint256 y, uint256 z) = _jMult(GX, GY, 1, privateKey); - return _affineFromJacobian(x, y, z); - } - - /** - * @dev check if a point is on the curve. + * @dev Checks if a point is on the curve. */ function isOnCurve(uint256 x, uint256 y) internal pure returns (bool result) { assembly ("memory-safe") { @@ -219,32 +210,6 @@ library P256 { } } - /** - * @dev Point multiplication on the jacobian coordinates - */ - function _jMult( - uint256 x, - uint256 y, - uint256 z, - uint256 k - ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { - unchecked { - for (uint256 i = 0; i < 256; ++i) { - if (rz > 0) { - (rx, ry, rz) = _jDouble(rx, ry, rz); - } - if (k >> 255 > 0) { - if (rz == 0) { - (rx, ry, rz) = (x, y, z); - } else { - (rx, ry, rz) = _jAdd(rx, ry, rz, x, y, z); - } - } - k <<= 1; - } - } - } - /** * @dev Compute P·u1 + Q·u2 using the precomputed points for P and Q (see {_preComputeJacobianPoints}). * diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 61ff302f5a8..d6bf0b664fb 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -4,13 +4,14 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); - (uint256 x, uint256 y) = P256.getPublicKey(privateKey); + (uint256 x, uint256 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); assertTrue(P256.verify(uint256(digest), uint256(r), uint256(s), x, y)); assertTrue(P256.verifySolidity(uint256(digest), uint256(r), uint256(s), x, y)); @@ -20,10 +21,105 @@ contract P256Test is Test { function testRecover(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); - (uint256 x, uint256 y) = P256.getPublicKey(privateKey); + (uint256 x, uint256 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); (uint256 qx0, uint256 qy0) = P256.recovery(uint256(digest), 0, uint256(r), uint256(s)); (uint256 qx1, uint256 qy1) = P256.recovery(uint256(digest), 1, uint256(r), uint256(s)); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } } + +/** + * @dev Library to derive P256 public key from private key + * Should be removed if Foundry adds this functionality + * See https://github.com/foundry-rs/foundry/issues/7908 + */ +library P256PublicKey { + function getPublicKey(uint256 privateKey) internal view returns (uint256, uint256) { + (uint256 x, uint256 y, uint256 z) = _jMult(P256.GX, P256.GY, 1, privateKey); + return _affineFromJacobian(x, y, z); + } + + function _jMult( + uint256 x, + uint256 y, + uint256 z, + uint256 k + ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { + unchecked { + for (uint256 i = 0; i < 256; ++i) { + if (rz > 0) { + (rx, ry, rz) = _jDouble(rx, ry, rz); + } + if (k >> 255 > 0) { + if (rz == 0) { + (rx, ry, rz) = (x, y, z); + } else { + (rx, ry, rz) = _jAdd(rx, ry, rz, x, y, z); + } + } + k <<= 1; + } + } + } + + /// From P256.sol + + function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (uint256 ax, uint256 ay) { + if (jz == 0) return (0, 0); + uint256 zinv = Math.invModPrime(jz, P256.P); + uint256 zzinv = mulmod(zinv, zinv, P256.P); + uint256 zzzinv = mulmod(zzinv, zinv, P256.P); + ax = mulmod(jx, zzinv, P256.P); + ay = mulmod(jy, zzzinv, P256.P); + } + + function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 rx, uint256 ry, uint256 rz) { + uint256 p = P256.P; + uint256 a = P256.A; + assembly ("memory-safe") { + let yy := mulmod(y, y, p) + let zz := mulmod(z, z, p) + let s := mulmod(4, mulmod(x, yy, p), p) // s = 4*x*y² + let m := addmod(mulmod(3, mulmod(x, x, p), p), mulmod(a, mulmod(zz, zz, p), p), p) // m = 3*x²+a*z⁴ + let t := addmod(mulmod(m, m, p), sub(p, mulmod(2, s, p)), p) // t = m²-2*s + + // x' = t + rx := t + // y' = m*(s-t)-8*y⁴ + ry := addmod(mulmod(m, addmod(s, sub(p, t), p), p), sub(p, mulmod(8, mulmod(yy, yy, p), p)), p) + // z' = 2*y*z + rz := mulmod(2, mulmod(y, z, p), p) + } + } + + function _jAdd( + uint256 x1, + uint256 y1, + uint256 z1, + uint256 x2, + uint256 y2, + uint256 z2 + ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { + uint256 p = P256.P; + assembly ("memory-safe") { + let zz1 := mulmod(z1, z1, p) // zz1 = z1² + let zz2 := mulmod(z2, z2, p) // zz2 = z2² + let u1 := mulmod(x1, zz2, p) // u1 = x1*z2² + let u2 := mulmod(x2, zz1, p) // u2 = x2*z1² + let s1 := mulmod(y1, mulmod(zz2, z2, p), p) // s1 = y1*z2³ + let s2 := mulmod(y2, mulmod(zz1, z1, p), p) // s2 = y2*z1³ + let h := addmod(u2, sub(p, u1), p) // h = u2-u1 + let hh := mulmod(h, h, p) // h² + let hhh := mulmod(h, hh, p) // h³ + let r := addmod(s2, sub(p, s1), p) // r = s2-s1 + + // x' = r²-h³-2*u1*h² + rx := addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p) + // y' = r*(u1*h²-x')-s1*h³ + ry := addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, rx), p), p), sub(p, mulmod(s1, hhh, p)), p) + // z' = h*z1*z2 + rz := mulmod(h, mulmod(z1, z2, p), p) + } + } +} From 582856619dd55d2b2bed67639438792cdb807f7d Mon Sep 17 00:00:00 2001 From: ernestognw Date: Fri, 21 Jun 2024 10:25:08 -0600 Subject: [PATCH 32/76] Remove unnecessary test --- test/utils/cryptography/P256.test.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 3efd76809ec..108f7fa0018 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -27,10 +27,6 @@ describe('P256', function () { Object.assign(this, await loadFixture(fixture), prepareSignature()); }); - it('derivate public from private', async function () { - expect(await this.mock.$getPublicKey(ethers.toBigInt(this.privateKey))).to.deep.equal(this.publicKey); - }); - it('verify valid signature', async function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; From 93629369e57325c87463989994415106066acdd1 Mon Sep 17 00:00:00 2001 From: cairo Date: Fri, 21 Jun 2024 14:43:53 -0400 Subject: [PATCH 33/76] add wycheproof test --- foundry.toml | 1 + test/utils/cryptography/P256.t.sol | 23 + test/utils/cryptography/wycheproof.jsonl | 778 +++++++++++++++++++++++ 3 files changed, 802 insertions(+) create mode 100644 test/utils/cryptography/wycheproof.jsonl diff --git a/foundry.toml b/foundry.toml index 391c40e6f11..e4e11c67f80 100644 --- a/foundry.toml +++ b/foundry.toml @@ -6,6 +6,7 @@ out = 'out' libs = ['node_modules', 'lib'] test = 'test' cache_path = 'cache_forge' +fs_permissions = [{ access = "read", path = "./test/utils/cryptography/wycheproof.jsonl" }] [fuzz] runs = 5000 diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index d6bf0b664fb..523c0619ffc 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -3,10 +3,14 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; +import {stdJson} from "forge-std/StdJson.sol"; + import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; contract P256Test is Test { + using stdJson for string; + /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); @@ -27,6 +31,25 @@ contract P256Test is Test { (uint256 qx1, uint256 qy1) = P256.recovery(uint256(digest), 1, uint256(r), uint256(s)); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } + + // based on: https://github.com/pcaversaccio/snekmate/blob/4cb87bff4c1ca8901d9931772b1e58758bea6576/test/utils/P256.t.sol#L99 + function testVerifyWycheproofData() public { + string memory file = "test/utils/cryptography/wycheproof.jsonl"; + while (true) { + string memory vector = vm.readLine(file); + if (bytes(vector).length == 0) { + break; + } + + uint256 r = uint256(vector.readBytes32(".r")); + uint256 s = uint256(vector.readBytes32(".s")); + uint256 x = uint256(vector.readBytes32(".x")); + uint256 y = uint256(vector.readBytes32(".y")); + bytes32 hash = vector.readBytes32(".hash"); + + assertEq(P256.verify(uint256(hash), r, s, x, y), vector.readBool(".valid")); + } + } } /** diff --git a/test/utils/cryptography/wycheproof.jsonl b/test/utils/cryptography/wycheproof.jsonl new file mode 100644 index 00000000000..eb6dd5b8d51 --- /dev/null +++ b/test/utils/cryptography/wycheproof.jsonl @@ -0,0 +1,778 @@ +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #1: signature malleability"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #3: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #5: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #8: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #9: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #10: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #11: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #12: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #13: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #14: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #15: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #16: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #17: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #18: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #19: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #20: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #21: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #22: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #23: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #24: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #25: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #26: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #27: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #28: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #29: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #30: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #31: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #32: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #33: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #34: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #35: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #36: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #37: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #38: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #39: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #40: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #41: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #42: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #43: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #44: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #45: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #46: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #47: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #48: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #49: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #50: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #51: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #52: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #53: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #54: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #55: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #56: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #57: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #58: Edge case for Shamir multiplication"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #59: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #60: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #61: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #62: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #63: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #64: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #65: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #66: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #67: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #68: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #69: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #70: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #71: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #72: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #73: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #74: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #75: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #76: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #77: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #78: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #79: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #80: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #81: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #82: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #83: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #84: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #85: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #86: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #87: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #88: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #89: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #90: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #91: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #92: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #93: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #94: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #95: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #96: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #97: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #98: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #99: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #100: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #101: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #102: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #103: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #104: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #105: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #106: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #107: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #108: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #109: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #110: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #111: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #112: special case hash"} +{"x":"0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103","y":"c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e","r":"000000000000000000000000000000004319055358e8617b0c46353d039cdaab","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #113: k*G has a large x-coordinate"} +{"x":"0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103","y":"c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #114: r too large"} +{"x":"ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c582204554","y":"19235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #115: r,s are large"} +{"x":"80984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c56","y":"11feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #116: r and s^-1 have a large Hamming weight"} +{"x":"4201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c05","y":"95c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #117: r and s^-1 have a large Hamming weight"} +{"x":"a71af64de5126a4a4e02b7922d66ce9415ce88a4c9d25514d91082c8725ac957","y":"5d47723c8fbe580bb369fec9c2665d8e30a435b9932645482e7c9f11e872296b","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #118: small r and s"} +{"x":"6627cec4f0731ea23fc2931f90ebe5b7572f597d20df08fc2b31ee8ef16b1572","y":"6170ed77d8d0a14fc5c9c3c4c9be7f0d3ee18f709bb275eaf2073e258fe694a5","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000003","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #120: small r and s"} +{"x":"5a7c8825e85691cce1f5e7544c54e73f14afc010cb731343262ca7ec5a77f5bf","y":"ef6edf62a4497c1bd7b147fb6c3d22af3c39bfce95f30e13a16d3d7b2812f813","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000005","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #122: small r and s"} +{"x":"cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c737","y":"70af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #124: small r and s"} +{"x":"cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c737","y":"70af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632556","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #126: r is larger than n"} +{"x":"4be4178097002f0deab68f0d9a130e0ed33a6795d02a20796db83444b037e139","y":"20f13051e0eecdcfce4dacea0f50d1f247caa669f193c1b4075b51ae296d2d56","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc75fbd8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #127: s is larger than n"} +{"x":"d0f73792203716afd4be4329faa48d269f15313ebbba379d7783c97bf3e890d9","y":"971f4a3206605bec21782bf5e275c714417e8f566549e6bc68690d2363c89cc1","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"8f1e3c7862c58b16bb76eddbb76eddbb516af4f63f2d74d76e0d28c9bb75ea88","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #128: small r and s^-1"} +{"x":"4838b2be35a6276a80ef9e228140f9d9b96ce83b7a254f71ccdebbb8054ce05f","y":"fa9cbc123c919b19e00238198d04069043bd660a828814051fcb8aac738a6c6b","r":"000000000000000000000000000000000000000000000000002d9b4d347952d6","s":"ef3043e7329581dbb3974497710ab11505ee1c87ff907beebadd195a0ffe6d7a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #129: smallish r and s^-1"} +{"x":"7393983ca30a520bbc4783dc9960746aab444ef520c0a8e771119aa4e74b0f64","y":"e9d7be1ab01a0bf626e709863e6a486dbaf32793afccf774e2c6cd27b1857526","r":"000000000000000000000000000000000000001033e67e37b32b445580bf4eff","s":"8b748b74000000008b748b748b748b7466e769ad4a16d3dcd87129b8e91d1b4d","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #130: 100-bit r and small s^-1"} +{"x":"5ac331a1103fe966697379f356a937f350588a05477e308851b8a502d5dfcdc5","y":"fe9993df4b57939b2b8da095bf6d794265204cfe03be995a02e65d408c871c0b","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #131: small r and 100 bit s^-1"} +{"x":"1d209be8de2de877095a399d3904c74cc458d926e27bb8e58e5eae5767c41509","y":"dd59e04c214f7b18dce351fc2a549893a6860e80163f38cc60a4f2c9d040d8c9","r":"00000000000000000000000000000000000000062522bbd3ecbe7c39e93e7c25","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #132: 100-bit r and s^-1"} +{"x":"083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99","y":"915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #133: r and s^-1 are close to n"} +{"x":"8aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e19373874","y":"05bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #134: s == 1"} +{"x":"8aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e19373874","y":"05bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #135: s == 0"} +{"x":"b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f287","y":"1b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #136: point at infinity during verify"} +{"x":"f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86","y":"f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #137: edge case for signature malleability"} +{"x":"68ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d946","y":"97bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #138: edge case for signature malleability"} +{"x":"69da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b8","y":"66d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #139: u1 == 1"} +{"x":"d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff32","y":"33e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #140: u1 == n - 1"} +{"x":"3623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab785","y":"8db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #141: u2 == 1"} +{"x":"cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1","y":"e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #142: u2 == n - 1"} +{"x":"db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff77350","y":"4f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e91e1ba60fdedb76a46bcb51dc0b8b4b7e019f0a28721885fa5d3a8196623397","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #143: edge case for u1"} +{"x":"dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f","y":"1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"fdea5843ffeb73af94313ba4831b53fe24f799e525b1e8e8c87b59b95b430ad9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #144: edge case for u1"} +{"x":"d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9","y":"986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"03ffcabf2f1b4d2a65190db1680d62bb994e41c5251cd73b3c3dfc5e5bafc035","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #145: edge case for u1"} +{"x":"a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c32","y":"6337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"4dfbc401f971cd304b33dfdb17d0fed0fe4c1a88ae648e0d2847f74977534989","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #146: edge case for u1"} +{"x":"c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b7","y":"3877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bc4024761cd2ffd43dfdb17d0fed112b988977055cd3a8e54971eba9cda5ca71","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #147: edge case for u1"} +{"x":"5eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e","y":"5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"788048ed39a5ffa77bfb62fa1fda2257742bf35d128fb3459f2a0c909ee86f91","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #148: edge case for u1"} +{"x":"5caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47a","y":"deb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"476d9131fd381bd917d0fed112bc9e0a5924b5ed5b11167edd8b23582b3cb15e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #149: edge case for u1"} +{"x":"c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b098","y":"6237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8374253e3e21bd154448d0a8f640fe46fafa8b19ce78d538f6cc0a19662d3601","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #150: edge case for u1"} +{"x":"3fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced","y":"03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"357cfd3be4d01d413c5b9ede36cba5452c11ee7fe14879e749ae6a2d897a52d6","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #151: edge case for u1"} +{"x":"9cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114","y":"b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"29798c5c0ee287d4a5e8e6b799fd86b8df5225298e6ffc807cd2f2bc27a0a6d8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #152: edge case for u1"} +{"x":"a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a","y":"4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"0b70f22c781092452dca1a5711fa3a5a1f72add1bf52c2ff7cae4820b30078dd","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #153: edge case for u1"} +{"x":"f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88","y":"cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"16e1e458f021248a5b9434ae23f474b43ee55ba37ea585fef95c90416600f1ba","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #154: edge case for u1"} +{"x":"83a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8","y":"c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2252d6856831b6cf895e4f0535eeaf0e5e5809753df848fe760ad86219016a97","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #155: edge case for u1"} +{"x":"dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7","y":"bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"81ffe55f178da695b28c86d8b406b15dab1a9e39661a3ae017fbe390ac0972c3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #156: edge case for u1"} +{"x":"67e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460","y":"a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #157: edge case for u2"} +{"x":"2eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf","y":"805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #158: edge case for u2"} +{"x":"84db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f35","y":"6d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #159: edge case for u2"} +{"x":"91b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad663","y":"49aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #160: edge case for u2"} +{"x":"f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834d","y":"f97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #161: edge case for u2"} +{"x":"d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc88","y":"5ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #162: edge case for u2"} +{"x":"0a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cd","y":"e6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #163: edge case for u2"} +{"x":"d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e8","y":"68612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #164: edge case for u2"} +{"x":"836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb276","y":"9ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #165: edge case for u2"} +{"x":"92f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8","y":"033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #166: edge case for u2"} +{"x":"d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09e","y":"ff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #167: edge case for u2"} +{"x":"8651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224","y":"e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #168: edge case for u2"} +{"x":"6d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6d","y":"ef6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #169: edge case for u2"} +{"x":"0ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e1542","y":"8911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #170: edge case for u2"} +{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #171: point duplication during verification"} +{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"7c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #172: duplication bug"} +{"x":"6adda82b90261b0f319faa0d878665a6b6da497f09c903176222c34acfef72a6","y":"47e6f50dcc40ad5d9b59f7602bb222fad71a41bf5e1f9df4959a364c62e488d9","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #173: point with x-coordinate 0"} +{"x":"dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d250","y":"45d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #175: comparison with point at infinity "} +{"x":"4fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5","y":"d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #176: extreme value for k and edgecase s"} +{"x":"c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107","y":"bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #177: extreme value for k and s^-1"} +{"x":"851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956ef","y":"cee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #178: extreme value for k and s^-1"} +{"x":"f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f","y":"8f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #179: extreme value for k and s^-1"} +{"x":"501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a0643","y":"8673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #180: extreme value for k and s^-1"} +{"x":"0d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb34","y":"3195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #181: extreme value for k"} +{"x":"5e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca21","y":"5de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #182: extreme value for k and edgecase s"} +{"x":"169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e","y":"7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #183: extreme value for k and s^-1"} +{"x":"271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b54898148754","y":"0a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #184: extreme value for k and s^-1"} +{"x":"3d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12","y":"e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #185: extreme value for k and s^-1"} +{"x":"a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b7","y":"2e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #186: extreme value for k and s^-1"} +{"x":"8d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c","y":"4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #187: extreme value for k"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #188: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #189: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #190: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #191: testing point duplication"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #192: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"530bd6b0c9af2d69ba897f6b5fb59695cfbf33afe66dbadcf5b8d2a2a6538e23","s":"d85e489cb7a161fd55ededcedbf4cc0c0987e3e3f0f242cae934c72caa3f43e9","hash":"dc1921946f4af96a2856e7be399007c9e807bdf4c5332f19f59ec9dd1bb8c7b3","valid":true,"msg":"4d7367","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #193: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #194: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #195: pseudorandom signature"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #196: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #197: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #198: x-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #199: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #200: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #201: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #202: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #203: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #204: y-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #205: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #206: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #207: x-coordinate of the public key has many trailing 1's"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #208: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #209: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #210: x-coordinate of the public key is large"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #211: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #212: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #213: x-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #214: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #215: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #216: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #217: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #218: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #219: y-coordinate of the public key is large"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #1: signature malleability"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #2: Legacy:ASN encoding of s misses leading 0"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #3: valid"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"29a3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #118: modify first byte of integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e98","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #120: modify last byte of integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b491568475b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #121: modify last byte of integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"00b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #124: truncated integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #133: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #134: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #137: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f47aa2bbd0a4c384ee1493b1f518ada018ef05465583885980861905228a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #139: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #143: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #177: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #178: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #179: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #180: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #181: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #187: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #188: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #189: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #190: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #191: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #197: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #198: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #199: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #200: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #201: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #207: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #208: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #209: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #210: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #211: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #217: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #218: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #219: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #220: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #221: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #230: Edge case for Shamir multiplication"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #231: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #232: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #233: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #234: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #235: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #236: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #237: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #238: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #239: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #240: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #241: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #242: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #243: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #244: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #245: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #246: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #247: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #248: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #249: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #250: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #251: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #252: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #253: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #254: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #255: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #256: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #257: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #258: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #259: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #260: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #261: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #262: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #263: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #264: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #265: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #266: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #267: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #268: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #269: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #270: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #271: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #272: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #273: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #274: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #275: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #276: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #277: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #278: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #279: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #280: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #281: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #282: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #283: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #284: special case hash"} +{"x":"0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103","y":"c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #286: r too large"} +{"x":"ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c582204554","y":"19235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #287: r,s are large"} +{"x":"80984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c56","y":"11feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #288: r and s^-1 have a large Hamming weight"} +{"x":"4201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c05","y":"95c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #289: r and s^-1 have a large Hamming weight"} +{"x":"083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99","y":"915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #301: r and s^-1 are close to n"} +{"x":"b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f287","y":"1b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #304: point at infinity during verify"} +{"x":"f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86","y":"f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #305: edge case for signature malleability"} +{"x":"68ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d946","y":"97bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #306: edge case for signature malleability"} +{"x":"69da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b8","y":"66d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #307: u1 == 1"} +{"x":"d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff32","y":"33e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #308: u1 == n - 1"} +{"x":"3623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab785","y":"8db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #309: u2 == 1"} +{"x":"cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1","y":"e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #310: u2 == n - 1"} +{"x":"db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff77350","y":"4f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e91e1ba60fdedb76a46bcb51dc0b8b4b7e019f0a28721885fa5d3a8196623397","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #311: edge case for u1"} +{"x":"dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f","y":"1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"fdea5843ffeb73af94313ba4831b53fe24f799e525b1e8e8c87b59b95b430ad9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #312: edge case for u1"} +{"x":"d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9","y":"986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"03ffcabf2f1b4d2a65190db1680d62bb994e41c5251cd73b3c3dfc5e5bafc035","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #313: edge case for u1"} +{"x":"a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c32","y":"6337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"4dfbc401f971cd304b33dfdb17d0fed0fe4c1a88ae648e0d2847f74977534989","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #314: edge case for u1"} +{"x":"c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b7","y":"3877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bc4024761cd2ffd43dfdb17d0fed112b988977055cd3a8e54971eba9cda5ca71","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #315: edge case for u1"} +{"x":"5eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e","y":"5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"788048ed39a5ffa77bfb62fa1fda2257742bf35d128fb3459f2a0c909ee86f91","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #316: edge case for u1"} +{"x":"5caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47a","y":"deb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"476d9131fd381bd917d0fed112bc9e0a5924b5ed5b11167edd8b23582b3cb15e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #317: edge case for u1"} +{"x":"c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b098","y":"6237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8374253e3e21bd154448d0a8f640fe46fafa8b19ce78d538f6cc0a19662d3601","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #318: edge case for u1"} +{"x":"3fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced","y":"03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"357cfd3be4d01d413c5b9ede36cba5452c11ee7fe14879e749ae6a2d897a52d6","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #319: edge case for u1"} +{"x":"9cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114","y":"b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"29798c5c0ee287d4a5e8e6b799fd86b8df5225298e6ffc807cd2f2bc27a0a6d8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #320: edge case for u1"} +{"x":"a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a","y":"4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"0b70f22c781092452dca1a5711fa3a5a1f72add1bf52c2ff7cae4820b30078dd","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #321: edge case for u1"} +{"x":"f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88","y":"cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"16e1e458f021248a5b9434ae23f474b43ee55ba37ea585fef95c90416600f1ba","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #322: edge case for u1"} +{"x":"83a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8","y":"c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2252d6856831b6cf895e4f0535eeaf0e5e5809753df848fe760ad86219016a97","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #323: edge case for u1"} +{"x":"dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7","y":"bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"81ffe55f178da695b28c86d8b406b15dab1a9e39661a3ae017fbe390ac0972c3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #324: edge case for u1"} +{"x":"67e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460","y":"a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #325: edge case for u2"} +{"x":"2eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf","y":"805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #326: edge case for u2"} +{"x":"84db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f35","y":"6d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #327: edge case for u2"} +{"x":"91b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad663","y":"49aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #328: edge case for u2"} +{"x":"f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834d","y":"f97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #329: edge case for u2"} +{"x":"d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc88","y":"5ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #330: edge case for u2"} +{"x":"0a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cd","y":"e6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #331: edge case for u2"} +{"x":"d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e8","y":"68612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #332: edge case for u2"} +{"x":"836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb276","y":"9ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #333: edge case for u2"} +{"x":"92f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8","y":"033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #334: edge case for u2"} +{"x":"d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09e","y":"ff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #335: edge case for u2"} +{"x":"8651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224","y":"e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #336: edge case for u2"} +{"x":"6d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6d","y":"ef6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #337: edge case for u2"} +{"x":"0ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e1542","y":"8911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #338: edge case for u2"} +{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #339: point duplication during verification"} +{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"7c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #340: duplication bug"} +{"x":"dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d250","y":"45d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #343: comparison with point at infinity "} +{"x":"4fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5","y":"d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #344: extreme value for k and edgecase s"} +{"x":"c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107","y":"bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #345: extreme value for k and s^-1"} +{"x":"851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956ef","y":"cee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #346: extreme value for k and s^-1"} +{"x":"f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f","y":"8f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #347: extreme value for k and s^-1"} +{"x":"501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a0643","y":"8673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #348: extreme value for k and s^-1"} +{"x":"0d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb34","y":"3195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #349: extreme value for k"} +{"x":"5e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca21","y":"5de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #350: extreme value for k and edgecase s"} +{"x":"169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e","y":"7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #351: extreme value for k and s^-1"} +{"x":"271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b54898148754","y":"0a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #352: extreme value for k and s^-1"} +{"x":"3d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12","y":"e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #353: extreme value for k and s^-1"} +{"x":"a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b7","y":"2e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #354: extreme value for k and s^-1"} +{"x":"8d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c","y":"4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #355: extreme value for k"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #356: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #357: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #358: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #359: testing point duplication"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #360: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"530bd6b0c9af2d69ba897f6b5fb59695cfbf33afe66dbadcf5b8d2a2a6538e23","s":"d85e489cb7a161fd55ededcedbf4cc0c0987e3e3f0f242cae934c72caa3f43e9","hash":"dc1921946f4af96a2856e7be399007c9e807bdf4c5332f19f59ec9dd1bb8c7b3","valid":true,"msg":"4d7367","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #361: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #362: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #363: pseudorandom signature"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #364: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #365: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #366: x-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #367: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #368: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #369: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #370: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #371: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #372: y-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #373: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #374: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #375: x-coordinate of the public key has many trailing 1's"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #376: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #377: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #378: x-coordinate of the public key is large"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #379: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #380: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #381: x-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #382: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #383: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #384: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #385: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #386: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #387: y-coordinate of the public key is large"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1: signature malleability"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #2: Legacy:ASN encoding of s misses leading 0"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #3: valid"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"29a3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #118: modify first byte of integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e98","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #120: modify last byte of integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b491568475b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #121: modify last byte of integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"00b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #124: truncated integer"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #133: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #134: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #137: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f47aa2bbd0a4c384ee1493b1f518ada018ef05465583885980861905228a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #139: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #143: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #177: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #178: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #179: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #180: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #181: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #187: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #188: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #189: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #190: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #191: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #197: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #198: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #199: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #200: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #201: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #207: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #208: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #209: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #210: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #211: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #217: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #218: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #219: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #220: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #221: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #230: Edge case for Shamir multiplication"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #231: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #232: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #233: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #234: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #235: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #236: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #237: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #238: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #239: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #240: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #241: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #242: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #243: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #244: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #245: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #246: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #247: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #248: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #249: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #250: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #251: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #252: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #253: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #254: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #255: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #256: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #257: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #258: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #259: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #260: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #261: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #262: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #263: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #264: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #265: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #266: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #267: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #268: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #269: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #270: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #271: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #272: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #273: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #274: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #275: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #276: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #277: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #278: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #279: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #280: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #281: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #282: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #283: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #284: special case hash"} +{"x":"d705d16f80987e2d9b1a6957d29ce22febf7d10fa515153182415c8361baaca4","y":"b1fc105ee5ce80d514ec1238beae2037a6f83625593620d460819e8682160926","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #636: r too large"} +{"x":"3cd8d2f81d6953b0844c09d7b560d527cd2ef67056893eadafa52c8501387d59","y":"ee41fdb4d10402ce7a0c5e3b747adfa3a490b62a6b7719068903485c0bb6dc2d","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #637: r,s are large"} +{"x":"8240cd81edd91cb6936133508c3915100e81f332c4545d41189b481196851378","y":"e05b06e72d4a1bff80ea5db514aa2f93ea6dd6d9c0ae27b7837dc432f9ce89d9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #638: r and s^-1 have a large Hamming weight"} +{"x":"b062947356748b0fc17f1704c65aa1dca6e1bfe6779756fa616d91eaad13df2c","y":"0b38c17f3d0672e7409cfc5992a99fff12b84a4f8432293b431113f1b2fb579d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #639: r and s^-1 have a large Hamming weight"} +{"x":"7a736d8e326a9ca62bbe25a34ea4e3633b499a96afa7aaa3fcf3fd88f8e07ede","y":"b3e45879d8622b93e818443a686e869eeda7bf9ae46aa3eafcc48a5934864627","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #651: r and s^-1 are close to n"} +{"x":"0203736fcb198b15d8d7a0c80f66dddd15259240aa78d08aae67c467de045034","y":"34383438d5041ea9a387ee8e4d4e84b4471b160c6bcf2568b072f8f20e87a996","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #654: point at infinity during verify"} +{"x":"78d844dc7f16b73b1f2a39730da5d8cd99fe2e70a18482384e37dcd2bfea02e1","y":"ed6572e01eb7a8d113d02c666c45ef22d3b9a6a6dea99aa43a8183c26e75d336","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #655: edge case for signature malleability"} +{"x":"dec6c8257dde94110eacc8c09d2e5789cc5beb81a958b02b4d62da9599a74014","y":"66fae1614174be63970b83f6524421067b06dd6f4e9c56baca4e344fdd690f1d","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #656: edge case for signature malleability"} +{"x":"a17f5b75a35ed64623ca5cbf1f91951292db0c23f0c2ea24c3d0cad0988cabc0","y":"83a7a618625c228940730b4fa3ee64faecbb2fc20fdde7c58b3a3f6300424dc6","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #657: u1 == 1"} +{"x":"04ba0cba291a37db13f33bf90dab628c04ec8393a0200419e9eaa1ebcc9fb5c3","y":"1f3a0a0e6823a49b625ad57b12a32d4047970fc3428f0f0049ecf4265dc12f62","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #658: u1 == n - 1"} +{"x":"692b6c828e0feed63d8aeaa2b7322f9ccbe8723a1ed39f229f204a434b8900ef","y":"a1f6f6abcb38ea3b8fde38b98c7c271f274af56a8c5628dc3329069ae4dd5716","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #659: u2 == 1"} +{"x":"00cefd9162d13e64cb93687a9cd8f9755ebb5a3ef7632f800f84871874ccef09","y":"543ecbeaf7e8044ef721be2fb5f549e4b8480d2587404ebf7dbbef2c54bc0cb1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #660: u2 == n - 1"} +{"x":"b975183b42551cf52f291d5c1921fd5e12f50c8c85a4beb9de03efa3f0f24486","y":"2243018e6866df922dc313612020311ff21e242ce3fb15bc78c406b25ab43091","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"710f8e3edc7c2d5a3fd23de844002bb949d9f794f6d5405f6d97c1bb03dd2bd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #661: edge case for u1"} +{"x":"c25f1d166f3e211cdf042a26f8abf6094d48b8d17191d74ed717149274466999","y":"65d06dd6a88abfa49e8b4c5da6bb922851969adf9604b5accfb52a114e77ccdb","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"edffbc270f722c243069a7e5f40335a61a58525c7b4db2e7a8e269274ffe4e1b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #662: edge case for u1"} +{"x":"8fe5e88243a76e41a004236218a3c3a2d6eee398a23c3a0b008d7f0164cbc0ca","y":"98a20d1bdcf573513c7cfd9b83c63e3a82d40127c897697c86b8cb387af7f240","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"a25adcae105ed7ff4f95d2344e24ee523314c3e178525d007904b68919ba4d53","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #663: edge case for u1"} +{"x":"02148256b530fbc470c7b341970b38243ecee6d5a840a37beca2efb37e8dff2c","y":"c0adbea0882482a7489ca703a399864ba987eeb6ddb738af53a83573473cb30d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2e4348c645707dce6760d773de3f3e87346924b2f64bd3dd0297e766b5805ebb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #664: edge case for u1"} +{"x":"a34db012ce6eda1e9c7375c5fcf3e54ed698e19615124273b3a621d021c76f8e","y":"777458d6f55a364c221e39e1205d5510bb4fbb7ddf08d8d8fdde13d1d6df7f14","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"348c673b07dce3920d773de3f3e87408869e916dbcf797d8f9684fb67753d1dc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #665: edge case for u1"} +{"x":"b97af3fe78be15f2912b6271dd8a43badb6dd2a1b315b2ce7ae37b4e7778041d","y":"930d71ee1992d2466495c42102d08e81154c305307d1dcd52d0fa4c479b278e7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"6918ce760fb9c7241aee7bc7e7d0e8110d3d22db79ef2fb1f2d09f6ceea7a3b8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #666: edge case for u1"} +{"x":"81e7198a3c3f23901cedc7a1d6eff6e9bf81108e6c35cd8559139af3135dbcbb","y":"9ef1568530291a8061b90c9f4285eefcba990d4570a4e3b7b737525b5d580034","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"73b3c694391d8eadde3f3e874089464715ac20e4c126bbf6d864d648969f5b5a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #667: edge case for u1"} +{"x":"ab4d792ca121d1dba39cb9de645149c2ab573e8becc6ddff3cc9960f188ddf73","y":"7f90ba23664153e93262ff73355415195858d7be1315a69456386de68285a3c8","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb07ac7a86948c2c2989a16db1930ef1b89ce112595197656877e53c41457f28","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #668: edge case for u1"} +{"x":"518412b69af43aae084476a68d59bbde51fbfa9e5be80563f587c9c2652f88ef","y":"2d3b90d25baa6bdb7b0c55e5240a3a98fbc24afed8523edec1c70503fc10f233","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27e4d82cb6c061dd9337c69bf9332ed3d198662d6f2299443f62c861187db648","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #669: edge case for u1"} +{"x":"a08f14a644b9a935dffea4761ebaf592d1f66fe6cd373aa7f5d370af34f8352d","y":"a54b5bc4025cf335900a914c2934ec2fec7a396d0a7affcad732a5741c7aaaf5","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e7c5cf3aac2e88923b77850515fff6a12d13b356dfe9ec275c3dd81ae94609a4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #670: edge case for u1"} +{"x":"ccf2296a6a89b62b90739d38af4ae3a20e9f45715b90044639241061e33f8f8c","y":"aace0046491eeaa1c6e9a472b96d88f4af83e7ff1bb84438c7e058034412ae08","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"c77838df91c1e953e016e10bddffea2317f9fee32bacfe553cede9e57a748f68","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #671: edge case for u1"} +{"x":"94b0fc1525bcabf82b1f34895e5819a06c02b23e04002276e165f962c86e3927","y":"be7c2ab4d0b25303204fb32a1f8292902792225e16a6d2dbfb29fbc89a9c3376","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8ef071c02383d2a6c02dc217bbffd446730d0318b0425e2586220907f885f97f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #672: edge case for u1"} +{"x":"5351f37e1de0c88c508527d89882d183ccdcf2efca407edb0627cadfd16de6ec","y":"44b4b57cdf960d32ebcc4c97847eed218425853b5b675eb781b766a1a1300349","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5668aaa0b545bbf9a044a32399ffbe69ce20074e34d7bdf5cf56282a76976396","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #673: edge case for u1"} +{"x":"748bbafc320e6735cb64019710a269c6c2b5d147bdc831325cb2fb276ac971a6","y":"9d655e9a755bc9d800ad21ee3fd4d980d93a7a49a8c5ccd37005177578f51163","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"d12d6e56882f6c0027cae91a27127728f7fddf478fb4fdc2b65f40a60b0eb952","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #674: edge case for u1"} +{"x":"14b3bbd75c5e1c0c36535a934d4ab85112410b3b90fa97a31c33038964fd85cc","y":"112f7d837f8f9c36b460d636c965a5f818f2b50c5d00fb3f9705561dd6631883","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #675: edge case for u2"} +{"x":"d823533c04cd8edc6d6f950a8e08ade04a9bafa2f14a590356935671ae9305bf","y":"43178d1f88b6a57a96924c265f0ddb75b58312907b195acb59d7797303123775","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #676: edge case for u2"} +{"x":"db2b3408b3167d91030624c6328e8ce3ec108c105575c2f3d209b92e654bab69","y":"c34318139c50b0802c6e612f0fd3189d800df7c996d5d7b7c3d6be82836fa258","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #677: edge case for u2"} +{"x":"09179ce7c59225392216453b2ac1e9d178c24837dfae26bc1dd7ab6063852742","y":"5556b42e330289f3b826b2db7a86d19d45c2860a59f2be1ddcc3b691f95a9255","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #678: edge case for u2"} +{"x":"01959fb8deda56e5467b7e4b214ea4c2d0c2fb29d70ff19b6b1eccebd6568d7e","y":"d9dbd77a918297fd970bff01e1343f6925167db5a14d098a211c39cc3a413398","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #679: edge case for u2"} +{"x":"567f1fdc387e5350c852b4e8f8ba9d6d947e1c5dd7ccc61a5938245dd6bcab3a","y":"9960bebaf919514f9535c22eaaf0b5812857970e26662267b1f3eb1011130a11","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #680: edge case for u2"} +{"x":"3499f974ff4ca6bbb2f51682fd5f51762f9dd6dd2855262660b36d46d3e4bec2","y":"f498fae2487807e220119152f0122476c64d4fa46ddce85c4546630f0d5c5e81","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #681: edge case for u2"} +{"x":"2c5c01662cf00c1929596257db13b26ecf30d0f3ec4b9f0351b0f27094473426","y":"e986a086060d086eee822ddd2fc744247a0154b57f7a69c51d9fdafa484e4ac7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #682: edge case for u2"} +{"x":"91d4cba813a04d86dbae94c23be6f52c15774183be7ba5b2d9f3cf010b160501","y":"900b8adfea6491019a9ac080d516025a541bf4b952b0ad7be4b1874b02fd544a","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #683: edge case for u2"} +{"x":"ef7fd0a3a36386638330ecad41e1a3b302af36960831d0210c614b948e8aa124","y":"ef0d6d800e4047d6d3c1be0fdeaf11fcd8cab5ab59c730eb34116e35a8c7d098","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #684: edge case for u2"} +{"x":"a521dab13cc9152d8ca77035a607fea06c55cc3ca5dbeb868cea92eafe93df2a","y":"7bfb9b28531996635e6a5ccaa2826a406ce1111bdb9c2e0ca36500418a2f43de","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #685: edge case for u2"} +{"x":"474d58a4eec16e0d565f2187fe11d4e8e7a2683a12f38b4fc01d1237a81a1097","y":"6e55f73bb7cdda46bdb67ef77f6fd2969df2b67920fb5945fde3a517a6ded4cd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #686: edge case for u2"} +{"x":"692da5cd4309d9a6e5cb525c37da8fa0879f7b57208cdabbf47d223a5b23a621","y":"40e0daa78cfdd207a7389aaed61738b17fc5fc3e6a5ed3397d2902e9125e6ab4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #687: edge case for u2"} +{"x":"85689b3e0775c7718a90279f14a8082cfcd4d1f1679274f4e9b8805c570a0670","y":"167fcc5ca734552e09afa3640f4a034e15b9b7ca661ec7ff70d3f240ebe705b1","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #688: edge case for u2"} +{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"2a964fc00d377a8592b8b61aafa7a4aaa7c7b9fd2b41d6e0e17bd1ba5677edcd","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #689: point duplication during verification"} +{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"d569b03ef2c8857b6d4749e550585b5558384603d4be291f1e842e45a9881232","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #690: duplication bug"} +{"x":"664ce273320d918d8bdb2e61201b4549b36b7cdc54e33b84adb6f2c10aac831e","y":"49e68831f18bda2973ac3d76bfbc8c5ee1cceed2dd862e2dc7c915c736cef1f4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #693: comparison with point at infinity "} +{"x":"961691a5e960d07a301dbbad4d86247ec27d7089faeb3ddd1add395efff1e0fe","y":"7254622cc371866cdf990d2c5377790e37d1f1519817f09a231bd260a9e78aeb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #694: extreme value for k and edgecase s"} +{"x":"5d283e13ce8ca60da868e3b0fb33e6b4f1074793274e2928250e71e2aca63e9c","y":"214dc74fa25371fb4d9e506d418ed9a1bfd6d0c8bb6591d3e0f44505a84886ce","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #695: extreme value for k and s^-1"} +{"x":"0fc351da038ae0803bd1d86514ae0462f9f8216551d9315aa9d297f792eef6a3","y":"41c74eed786f2d33da35360ca7aa925e753f00d6077a1e9e5fc339d634019c73","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #696: extreme value for k and s^-1"} +{"x":"a1e34c8f16d138673fee55c080547c2bfd4de7550065f638322bba9430ce4b60","y":"662be9bb512663aa4d7df8ab3f3b4181c5d44a7bdf42436620b7d8a6b81ac936","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #697: extreme value for k and s^-1"} +{"x":"7e1a8a8338d7fd8cf41d322a302d2078a87a23c7186150ed7cda6e52817c1bdf","y":"d0a9135a89d21ce821e29014b2898349254d748272b2d4eb8d59ee34c615377f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #698: extreme value for k and s^-1"} +{"x":"5c19fe227a61abc65c61ee7a018cc9571b2c6f663ea33583f76a686f64be078b","y":"7b4a0d734940f613d52bc48673b457c2cf78492490a5cc5606c0541d17b24ddb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #699: extreme value for k"} +{"x":"db02d1f3421d600e9d9ef9e47419dba3208eed08c2d4189a5db63abeb2739666","y":"e0ed26967b9ada9ed7ffe480827f90a0d210d5fd8ec628e31715e6b24125512a","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #700: extreme value for k and edgecase s"} +{"x":"6222d1962655501893c29e441395b6c05711bd3ed5a0ef72cfab338b88229c4b","y":"aaae079cb44a1af070362aaa520ee24cac2626423b0bf81af1c54311d8e2fd23","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #701: extreme value for k and s^-1"} +{"x":"4ccfa24c67f3def7fa81bc99c70bb0419c0952ba599f4c03361da184b04cdca5","y":"db76b797f7f41d9c729a2219478a7e629728df870800be8cf6ca7a0a82153bfa","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #702: extreme value for k and s^-1"} +{"x":"ea1c72c91034036bac71402b6e9ecc4af3dbde7a99dc574061e99fefff9d84da","y":"b7dd057e75b78ac6f56e34eb048f0a9d29d5d055408c90d02bc2ea918c18cb63","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #703: extreme value for k and s^-1"} +{"x":"c2879a66d86cb20b820b7795da2da62b38924f7817d1cd350d936988e90e79bc","y":"5431a7268ff6931c7a759de024eff90bcb0177216db6fd1f3aaaa11fa3b6a083","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #704: extreme value for k and s^-1"} +{"x":"ab1c0f273f74abc2b848c75006f2ef3c54c26df27711b06558f455079aee0ba3","y":"df510f2ecef6d9a05997c776f14ad6456c179f0a13af1771e4d6c37fa48b47f2","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #705: extreme value for k"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #706: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #707: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #708: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #709: testing point duplication"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1210: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"30e782f964b2e2ff065a051bc7adc20615d8c43a1365713c88268822c253bcce","s":"5b16df652aa1ecb2dc8b46c515f9604e2e84cacfa7c6eec30428d2d3f4e08ed5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1211: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1212: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1213: pseudorandom signature"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1303: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1304: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1305: x-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1306: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1307: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1308: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1309: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1310: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1311: y-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1312: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1313: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1314: x-coordinate of the public key has many trailing 1's"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1315: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1316: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1317: x-coordinate of the public key is large"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1318: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1319: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1320: x-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1321: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1322: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1323: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1324: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1325: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1326: y-coordinate of the public key is large"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #1: signature malleability"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #3: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #5: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #8: Modified r or s, e.g. by adding or subtracting the order of the group"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #9: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #10: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #11: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #12: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #13: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #14: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #15: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #16: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #17: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #18: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #19: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #20: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #21: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #22: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #23: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #24: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #25: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #26: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #27: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #28: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #29: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #30: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #31: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #32: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #33: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #34: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #35: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #36: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #37: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #38: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #39: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #40: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #41: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #42: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #43: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #44: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #45: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #46: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #47: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #48: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #49: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #50: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #51: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #52: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #53: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #54: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #55: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #56: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #57: Signature with special case values for r and s"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #58: Edge case for Shamir multiplication"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #59: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #60: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #61: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #62: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #63: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #64: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #65: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #66: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #67: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #68: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #69: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #70: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #71: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #72: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #73: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #74: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #75: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #76: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #77: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #78: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #79: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #80: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #81: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #82: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #83: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #84: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #85: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #86: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #87: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #88: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #89: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #90: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #91: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #92: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #93: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #94: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #95: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #96: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #97: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #98: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #99: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #100: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #101: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #102: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #103: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #104: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #105: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #106: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #107: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #108: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #109: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #110: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #111: special case hash"} +{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #112: special case hash"} +{"x":"d705d16f80987e2d9b1a6957d29ce22febf7d10fa515153182415c8361baaca4","y":"b1fc105ee5ce80d514ec1238beae2037a6f83625593620d460819e8682160926","r":"000000000000000000000000000000004319055358e8617b0c46353d039cdaab","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #113: k*G has a large x-coordinate"} +{"x":"d705d16f80987e2d9b1a6957d29ce22febf7d10fa515153182415c8361baaca4","y":"b1fc105ee5ce80d514ec1238beae2037a6f83625593620d460819e8682160926","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #114: r too large"} +{"x":"3cd8d2f81d6953b0844c09d7b560d527cd2ef67056893eadafa52c8501387d59","y":"ee41fdb4d10402ce7a0c5e3b747adfa3a490b62a6b7719068903485c0bb6dc2d","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #115: r,s are large"} +{"x":"8240cd81edd91cb6936133508c3915100e81f332c4545d41189b481196851378","y":"e05b06e72d4a1bff80ea5db514aa2f93ea6dd6d9c0ae27b7837dc432f9ce89d9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #116: r and s^-1 have a large Hamming weight"} +{"x":"b062947356748b0fc17f1704c65aa1dca6e1bfe6779756fa616d91eaad13df2c","y":"0b38c17f3d0672e7409cfc5992a99fff12b84a4f8432293b431113f1b2fb579d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #117: r and s^-1 have a large Hamming weight"} +{"x":"4a03ef9f92eb268cafa601072489a56380fa0dc43171d7712813b3a19a1eb5e5","y":"3e213e28a608ce9a2f4a17fd830c6654018a79b3e0263d91a8ba90622df6f2f0","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #118: small r and s"} +{"x":"091194c1cba17f34e286b4833701606a41cef26177ada8850b601ea1f859e701","y":"27242fcec708828758403ce2fe501983a7984e6209f4d6b95db9ad77767f55eb","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000003","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #120: small r and s"} +{"x":"103c6ecceff59e71ea8f56fee3a4b2b148e81c2bdbdd39c195812c96dcfb41a7","y":"2303a193dc591be150b883d770ec51ebb4ebce8b09042c2ecb16c448d8e57bf5","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000005","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #122: small r and s"} +{"x":"3b66b829fe604638bcb2bfe8c22228be67390c20111bd2b451468927e87fb6ea","y":"bc8e59c009361758b274ba2cad36b58fde485a3ed09dade76712fa9e9c4ac212","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #124: small r and s"} +{"x":"3b66b829fe604638bcb2bfe8c22228be67390c20111bd2b451468927e87fb6ea","y":"bc8e59c009361758b274ba2cad36b58fde485a3ed09dade76712fa9e9c4ac212","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632556","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #126: r is larger than n"} +{"x":"4ff2f6c24e4a33cd71c09fdcbc74a6233961b874b8c8e0eb94582092cbc50c30","y":"84fa9547afda5c66335f3f937d4c79afa120486b534139d59ae82d61ead26420","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc75fbd8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #127: s is larger than n"} +{"x":"84b959080bb30859cd53c2fb973cf14d60cdaa8ee00587889b5bc657ac588175","y":"a02ce5c1e53cb196113c78b4cb8dc7d360e5ea7850b0f6650b0c45af2c3cd7ca","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"8f1e3c7862c58b16bb76eddbb76eddbb516af4f63f2d74d76e0d28c9bb75ea88","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #128: small r and s^-1"} +{"x":"df4083bd6ecbda5a77ae578e5d835fa7f74a07ebb91e0570e1ff32a563354e99","y":"25af80b09a167d9ef647df28e2d9acd0d4bc4f2deec5723818edaf9071e311f8","r":"000000000000000000000000000000000000000000000000002d9b4d347952d6","s":"ef3043e7329581dbb3974497710ab11505ee1c87ff907beebadd195a0ffe6d7a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #129: smallish r and s^-1"} +{"x":"c2569a3c9bf8c1838ca821f7ba6f000cc8679d278f3736b414a34a7c956a0377","y":"0387ea85bc4f28804b4a91c9b7d65bc6434c975806795ab7d441a4e9683aeb09","r":"000000000000000000000000000000000000001033e67e37b32b445580bf4eff","s":"8b748b74000000008b748b748b748b7466e769ad4a16d3dcd87129b8e91d1b4d","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #130: 100-bit r and small s^-1"} +{"x":"4a9f7da2a6c359a16540c271774a6bf1c586357c978256f44a6496d80670968a","y":"c496e73a44563f8d56fbd7bb9e4e3ae304c86f2c508eb777b03924755beb40d4","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #131: small r and 100 bit s^-1"} +{"x":"874146432b3cd2c9e26204c0a34136996067d466dde4917a8ff23a8e95ca106b","y":"709b3d50976ef8b385a813bc35f3a20710bdc6edd465e6f43ac4866703a6608c","r":"00000000000000000000000000000000000000062522bbd3ecbe7c39e93e7c25","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #132: 100-bit r and s^-1"} +{"x":"7a736d8e326a9ca62bbe25a34ea4e3633b499a96afa7aaa3fcf3fd88f8e07ede","y":"b3e45879d8622b93e818443a686e869eeda7bf9ae46aa3eafcc48a5934864627","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #133: r and s^-1 are close to n"} +{"x":"e84d9b232e971a43382630f99725e423ec1ecb41e55172e9c69748a03f0d5988","y":"618b15b427ad83363bd041ff75fac98ef2ee923714e7d1dfe31753793c7588d4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #134: s == 1"} +{"x":"e84d9b232e971a43382630f99725e423ec1ecb41e55172e9c69748a03f0d5988","y":"618b15b427ad83363bd041ff75fac98ef2ee923714e7d1dfe31753793c7588d4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #135: s == 0"} +{"x":"0203736fcb198b15d8d7a0c80f66dddd15259240aa78d08aae67c467de045034","y":"34383438d5041ea9a387ee8e4d4e84b4471b160c6bcf2568b072f8f20e87a996","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #136: point at infinity during verify"} +{"x":"78d844dc7f16b73b1f2a39730da5d8cd99fe2e70a18482384e37dcd2bfea02e1","y":"ed6572e01eb7a8d113d02c666c45ef22d3b9a6a6dea99aa43a8183c26e75d336","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #137: edge case for signature malleability"} +{"x":"dec6c8257dde94110eacc8c09d2e5789cc5beb81a958b02b4d62da9599a74014","y":"66fae1614174be63970b83f6524421067b06dd6f4e9c56baca4e344fdd690f1d","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #138: edge case for signature malleability"} +{"x":"a17f5b75a35ed64623ca5cbf1f91951292db0c23f0c2ea24c3d0cad0988cabc0","y":"83a7a618625c228940730b4fa3ee64faecbb2fc20fdde7c58b3a3f6300424dc6","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #139: u1 == 1"} +{"x":"04ba0cba291a37db13f33bf90dab628c04ec8393a0200419e9eaa1ebcc9fb5c3","y":"1f3a0a0e6823a49b625ad57b12a32d4047970fc3428f0f0049ecf4265dc12f62","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #140: u1 == n - 1"} +{"x":"692b6c828e0feed63d8aeaa2b7322f9ccbe8723a1ed39f229f204a434b8900ef","y":"a1f6f6abcb38ea3b8fde38b98c7c271f274af56a8c5628dc3329069ae4dd5716","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #141: u2 == 1"} +{"x":"00cefd9162d13e64cb93687a9cd8f9755ebb5a3ef7632f800f84871874ccef09","y":"543ecbeaf7e8044ef721be2fb5f549e4b8480d2587404ebf7dbbef2c54bc0cb1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #142: u2 == n - 1"} +{"x":"b975183b42551cf52f291d5c1921fd5e12f50c8c85a4beb9de03efa3f0f24486","y":"2243018e6866df922dc313612020311ff21e242ce3fb15bc78c406b25ab43091","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"710f8e3edc7c2d5a3fd23de844002bb949d9f794f6d5405f6d97c1bb03dd2bd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #143: edge case for u1"} +{"x":"c25f1d166f3e211cdf042a26f8abf6094d48b8d17191d74ed717149274466999","y":"65d06dd6a88abfa49e8b4c5da6bb922851969adf9604b5accfb52a114e77ccdb","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"edffbc270f722c243069a7e5f40335a61a58525c7b4db2e7a8e269274ffe4e1b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #144: edge case for u1"} +{"x":"8fe5e88243a76e41a004236218a3c3a2d6eee398a23c3a0b008d7f0164cbc0ca","y":"98a20d1bdcf573513c7cfd9b83c63e3a82d40127c897697c86b8cb387af7f240","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"a25adcae105ed7ff4f95d2344e24ee523314c3e178525d007904b68919ba4d53","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #145: edge case for u1"} +{"x":"02148256b530fbc470c7b341970b38243ecee6d5a840a37beca2efb37e8dff2c","y":"c0adbea0882482a7489ca703a399864ba987eeb6ddb738af53a83573473cb30d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2e4348c645707dce6760d773de3f3e87346924b2f64bd3dd0297e766b5805ebb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #146: edge case for u1"} +{"x":"a34db012ce6eda1e9c7375c5fcf3e54ed698e19615124273b3a621d021c76f8e","y":"777458d6f55a364c221e39e1205d5510bb4fbb7ddf08d8d8fdde13d1d6df7f14","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"348c673b07dce3920d773de3f3e87408869e916dbcf797d8f9684fb67753d1dc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #147: edge case for u1"} +{"x":"b97af3fe78be15f2912b6271dd8a43badb6dd2a1b315b2ce7ae37b4e7778041d","y":"930d71ee1992d2466495c42102d08e81154c305307d1dcd52d0fa4c479b278e7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"6918ce760fb9c7241aee7bc7e7d0e8110d3d22db79ef2fb1f2d09f6ceea7a3b8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #148: edge case for u1"} +{"x":"81e7198a3c3f23901cedc7a1d6eff6e9bf81108e6c35cd8559139af3135dbcbb","y":"9ef1568530291a8061b90c9f4285eefcba990d4570a4e3b7b737525b5d580034","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"73b3c694391d8eadde3f3e874089464715ac20e4c126bbf6d864d648969f5b5a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #149: edge case for u1"} +{"x":"ab4d792ca121d1dba39cb9de645149c2ab573e8becc6ddff3cc9960f188ddf73","y":"7f90ba23664153e93262ff73355415195858d7be1315a69456386de68285a3c8","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb07ac7a86948c2c2989a16db1930ef1b89ce112595197656877e53c41457f28","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #150: edge case for u1"} +{"x":"518412b69af43aae084476a68d59bbde51fbfa9e5be80563f587c9c2652f88ef","y":"2d3b90d25baa6bdb7b0c55e5240a3a98fbc24afed8523edec1c70503fc10f233","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27e4d82cb6c061dd9337c69bf9332ed3d198662d6f2299443f62c861187db648","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #151: edge case for u1"} +{"x":"a08f14a644b9a935dffea4761ebaf592d1f66fe6cd373aa7f5d370af34f8352d","y":"a54b5bc4025cf335900a914c2934ec2fec7a396d0a7affcad732a5741c7aaaf5","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e7c5cf3aac2e88923b77850515fff6a12d13b356dfe9ec275c3dd81ae94609a4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #152: edge case for u1"} +{"x":"ccf2296a6a89b62b90739d38af4ae3a20e9f45715b90044639241061e33f8f8c","y":"aace0046491eeaa1c6e9a472b96d88f4af83e7ff1bb84438c7e058034412ae08","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"c77838df91c1e953e016e10bddffea2317f9fee32bacfe553cede9e57a748f68","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #153: edge case for u1"} +{"x":"94b0fc1525bcabf82b1f34895e5819a06c02b23e04002276e165f962c86e3927","y":"be7c2ab4d0b25303204fb32a1f8292902792225e16a6d2dbfb29fbc89a9c3376","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8ef071c02383d2a6c02dc217bbffd446730d0318b0425e2586220907f885f97f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #154: edge case for u1"} +{"x":"5351f37e1de0c88c508527d89882d183ccdcf2efca407edb0627cadfd16de6ec","y":"44b4b57cdf960d32ebcc4c97847eed218425853b5b675eb781b766a1a1300349","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5668aaa0b545bbf9a044a32399ffbe69ce20074e34d7bdf5cf56282a76976396","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #155: edge case for u1"} +{"x":"748bbafc320e6735cb64019710a269c6c2b5d147bdc831325cb2fb276ac971a6","y":"9d655e9a755bc9d800ad21ee3fd4d980d93a7a49a8c5ccd37005177578f51163","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"d12d6e56882f6c0027cae91a27127728f7fddf478fb4fdc2b65f40a60b0eb952","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #156: edge case for u1"} +{"x":"14b3bbd75c5e1c0c36535a934d4ab85112410b3b90fa97a31c33038964fd85cc","y":"112f7d837f8f9c36b460d636c965a5f818f2b50c5d00fb3f9705561dd6631883","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #157: edge case for u2"} +{"x":"d823533c04cd8edc6d6f950a8e08ade04a9bafa2f14a590356935671ae9305bf","y":"43178d1f88b6a57a96924c265f0ddb75b58312907b195acb59d7797303123775","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #158: edge case for u2"} +{"x":"db2b3408b3167d91030624c6328e8ce3ec108c105575c2f3d209b92e654bab69","y":"c34318139c50b0802c6e612f0fd3189d800df7c996d5d7b7c3d6be82836fa258","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #159: edge case for u2"} +{"x":"09179ce7c59225392216453b2ac1e9d178c24837dfae26bc1dd7ab6063852742","y":"5556b42e330289f3b826b2db7a86d19d45c2860a59f2be1ddcc3b691f95a9255","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #160: edge case for u2"} +{"x":"01959fb8deda56e5467b7e4b214ea4c2d0c2fb29d70ff19b6b1eccebd6568d7e","y":"d9dbd77a918297fd970bff01e1343f6925167db5a14d098a211c39cc3a413398","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #161: edge case for u2"} +{"x":"567f1fdc387e5350c852b4e8f8ba9d6d947e1c5dd7ccc61a5938245dd6bcab3a","y":"9960bebaf919514f9535c22eaaf0b5812857970e26662267b1f3eb1011130a11","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #162: edge case for u2"} +{"x":"3499f974ff4ca6bbb2f51682fd5f51762f9dd6dd2855262660b36d46d3e4bec2","y":"f498fae2487807e220119152f0122476c64d4fa46ddce85c4546630f0d5c5e81","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #163: edge case for u2"} +{"x":"2c5c01662cf00c1929596257db13b26ecf30d0f3ec4b9f0351b0f27094473426","y":"e986a086060d086eee822ddd2fc744247a0154b57f7a69c51d9fdafa484e4ac7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #164: edge case for u2"} +{"x":"91d4cba813a04d86dbae94c23be6f52c15774183be7ba5b2d9f3cf010b160501","y":"900b8adfea6491019a9ac080d516025a541bf4b952b0ad7be4b1874b02fd544a","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #165: edge case for u2"} +{"x":"ef7fd0a3a36386638330ecad41e1a3b302af36960831d0210c614b948e8aa124","y":"ef0d6d800e4047d6d3c1be0fdeaf11fcd8cab5ab59c730eb34116e35a8c7d098","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #166: edge case for u2"} +{"x":"a521dab13cc9152d8ca77035a607fea06c55cc3ca5dbeb868cea92eafe93df2a","y":"7bfb9b28531996635e6a5ccaa2826a406ce1111bdb9c2e0ca36500418a2f43de","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #167: edge case for u2"} +{"x":"474d58a4eec16e0d565f2187fe11d4e8e7a2683a12f38b4fc01d1237a81a1097","y":"6e55f73bb7cdda46bdb67ef77f6fd2969df2b67920fb5945fde3a517a6ded4cd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #168: edge case for u2"} +{"x":"692da5cd4309d9a6e5cb525c37da8fa0879f7b57208cdabbf47d223a5b23a621","y":"40e0daa78cfdd207a7389aaed61738b17fc5fc3e6a5ed3397d2902e9125e6ab4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #169: edge case for u2"} +{"x":"85689b3e0775c7718a90279f14a8082cfcd4d1f1679274f4e9b8805c570a0670","y":"167fcc5ca734552e09afa3640f4a034e15b9b7ca661ec7ff70d3f240ebe705b1","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #170: edge case for u2"} +{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"2a964fc00d377a8592b8b61aafa7a4aaa7c7b9fd2b41d6e0e17bd1ba5677edcd","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #171: point duplication during verification"} +{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"d569b03ef2c8857b6d4749e550585b5558384603d4be291f1e842e45a9881232","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #172: duplication bug"} +{"x":"38a084ffccc4ae2f8204be2abca9fb8ad4ab283b2aa50f13b6bb2347adabc69c","y":"a699799b77b1cc6dad271e88b899c12931986e958e1f5cf5653dddf7389365e2","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #173: point with x-coordinate 0"} +{"x":"664ce273320d918d8bdb2e61201b4549b36b7cdc54e33b84adb6f2c10aac831e","y":"49e68831f18bda2973ac3d76bfbc8c5ee1cceed2dd862e2dc7c915c736cef1f4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #175: comparison with point at infinity "} +{"x":"961691a5e960d07a301dbbad4d86247ec27d7089faeb3ddd1add395efff1e0fe","y":"7254622cc371866cdf990d2c5377790e37d1f1519817f09a231bd260a9e78aeb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #176: extreme value for k and edgecase s"} +{"x":"5d283e13ce8ca60da868e3b0fb33e6b4f1074793274e2928250e71e2aca63e9c","y":"214dc74fa25371fb4d9e506d418ed9a1bfd6d0c8bb6591d3e0f44505a84886ce","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #177: extreme value for k and s^-1"} +{"x":"0fc351da038ae0803bd1d86514ae0462f9f8216551d9315aa9d297f792eef6a3","y":"41c74eed786f2d33da35360ca7aa925e753f00d6077a1e9e5fc339d634019c73","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #178: extreme value for k and s^-1"} +{"x":"a1e34c8f16d138673fee55c080547c2bfd4de7550065f638322bba9430ce4b60","y":"662be9bb512663aa4d7df8ab3f3b4181c5d44a7bdf42436620b7d8a6b81ac936","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #179: extreme value for k and s^-1"} +{"x":"7e1a8a8338d7fd8cf41d322a302d2078a87a23c7186150ed7cda6e52817c1bdf","y":"d0a9135a89d21ce821e29014b2898349254d748272b2d4eb8d59ee34c615377f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #180: extreme value for k and s^-1"} +{"x":"5c19fe227a61abc65c61ee7a018cc9571b2c6f663ea33583f76a686f64be078b","y":"7b4a0d734940f613d52bc48673b457c2cf78492490a5cc5606c0541d17b24ddb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #181: extreme value for k"} +{"x":"db02d1f3421d600e9d9ef9e47419dba3208eed08c2d4189a5db63abeb2739666","y":"e0ed26967b9ada9ed7ffe480827f90a0d210d5fd8ec628e31715e6b24125512a","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #182: extreme value for k and edgecase s"} +{"x":"6222d1962655501893c29e441395b6c05711bd3ed5a0ef72cfab338b88229c4b","y":"aaae079cb44a1af070362aaa520ee24cac2626423b0bf81af1c54311d8e2fd23","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #183: extreme value for k and s^-1"} +{"x":"4ccfa24c67f3def7fa81bc99c70bb0419c0952ba599f4c03361da184b04cdca5","y":"db76b797f7f41d9c729a2219478a7e629728df870800be8cf6ca7a0a82153bfa","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #184: extreme value for k and s^-1"} +{"x":"ea1c72c91034036bac71402b6e9ecc4af3dbde7a99dc574061e99fefff9d84da","y":"b7dd057e75b78ac6f56e34eb048f0a9d29d5d055408c90d02bc2ea918c18cb63","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #185: extreme value for k and s^-1"} +{"x":"c2879a66d86cb20b820b7795da2da62b38924f7817d1cd350d936988e90e79bc","y":"5431a7268ff6931c7a759de024eff90bcb0177216db6fd1f3aaaa11fa3b6a083","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #186: extreme value for k and s^-1"} +{"x":"ab1c0f273f74abc2b848c75006f2ef3c54c26df27711b06558f455079aee0ba3","y":"df510f2ecef6d9a05997c776f14ad6456c179f0a13af1771e4d6c37fa48b47f2","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #187: extreme value for k"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #188: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #189: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #190: testing point duplication"} +{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #191: testing point duplication"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #269: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"30e782f964b2e2ff065a051bc7adc20615d8c43a1365713c88268822c253bcce","s":"5b16df652aa1ecb2dc8b46c515f9604e2e84cacfa7c6eec30428d2d3f4e08ed5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #270: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #271: pseudorandom signature"} +{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #272: pseudorandom signature"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #288: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #289: x-coordinate of the public key has many trailing 0's"} +{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #290: x-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #291: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #292: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #293: y-coordinate of the public key has many trailing 0's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #294: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #295: y-coordinate of the public key has many trailing 1's"} +{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #296: y-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #297: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #298: x-coordinate of the public key has many trailing 1's"} +{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #299: x-coordinate of the public key has many trailing 1's"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #300: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #301: x-coordinate of the public key is large"} +{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #302: x-coordinate of the public key is large"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #303: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #304: x-coordinate of the public key is small"} +{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #305: x-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #306: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #307: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #308: y-coordinate of the public key is small"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #309: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #310: y-coordinate of the public key is large"} +{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #311: y-coordinate of the public key is large"} \ No newline at end of file From 921745b97f0f5689c07ea78833d3a6ff523fac80 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Fri, 21 Jun 2024 20:58:50 -0600 Subject: [PATCH 34/76] Readd malleability check and rename --- contracts/utils/cryptography/P256.sol | 43 ++++++++++++++++++++++----- test/utils/cryptography/P256.test.js | 34 ++++++++++----------- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 650891aafc0..2a89b9495b2 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; import {Math} from "../math/Math.sol"; import {Errors} from "../Errors.sol"; +import {ECDSA} from "./ECDSA.sol"; /** * @dev Implementation of secp256r1 verification and recovery functions. @@ -38,6 +39,9 @@ library P256 { /// @dev (P + 1) / 4. Useful to compute sqrt uint256 private constant P1DIV4 = 0x3fffffffc0000000400000000000000000000000400000000000000000000000; + /// @dev N/2 for excluding higher order `s` values + uint256 private constant HALF_N = 0x7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8; + /** * @dev Verifies a secp256r1 signature using the RIP-7212 precompile and falls back to the Solidity implementation * if the precompile is not available. This version should work on all chains, but requires the deployment of more @@ -48,20 +52,43 @@ library P256 { * @param s - signature half S * @param qx - public key coordinate X * @param qy - public key coordinate Y - * - * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting - * the upper half order of the curve (i.e. s > N/2) */ function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - (bool valid, bool supported) = tryVerify7212(h, r, s, qx, qy); + if (s > HALF_N) { + return false; + } + return _verifyMalleable(h, r, s, qx, qy); + } + + /** + * @dev Same as {verify}, but allows for `s` in the upper half order allowing for malleable signatures. + */ + function _verifyMalleable(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) private view returns (bool) { + (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); return supported ? valid : verifySolidity(h, r, s, qx, qy); } /** * @dev Same as {verify}, but it will revert if the required precompile is not available. */ - function verify7212(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - (bool valid, bool supported) = tryVerify7212(h, r, s, qx, qy); + function verifyNative(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { + if (s > HALF_N) { + return false; + } + return _verifyNativeMalleable(h, r, s, qx, qy); + } + + /** + * @dev Same as {verifyNative}, but allows for `s` in the upper half order allowing for malleable signatures. + */ + function _verifyNativeMalleable( + uint256 h, + uint256 r, + uint256 s, + uint256 qx, + uint256 qy + ) private view returns (bool) { + (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); if (supported) { return valid; } else { @@ -72,13 +99,13 @@ library P256 { /** * @dev Same as {verify}, but it will return false if the required precompile is not available. */ - function tryVerify7212( + function _tryVerifyNative( uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy - ) internal view returns (bool valid, bool supported) { + ) private view returns (bool valid, bool supported) { (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); return (success && returndata.length == 0x20) ? (abi.decode(returndata, (bool)), true) : (false, false); } diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 108f7fa0018..6bfe33dc9f4 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -5,6 +5,16 @@ const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); const N = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n; +// As in ECDSA, signatures are malleable and the tooling produce both high and low S values. +// We need to ensure that the s value is in the lower half of the order of the curve. +const ensureLowerOrderS = ({ s, recovery, ...rest }) => { + if (s > N / 2n) { + s = N - s; + recovery = 1 - recovery; + } + return { s, recovery, ...rest }; +}; + const prepareSignature = ( privateKey = secp256r1.utils.randomPrivateKey(), messageHash = ethers.hexlify(ethers.randomBytes(0x20)), @@ -13,8 +23,9 @@ const prepareSignature = ( secp256r1.getPublicKey(privateKey, false).slice(0x01, 0x21), secp256r1.getPublicKey(privateKey, false).slice(0x21, 0x41), ].map(ethers.hexlify); - const { r, s, recovery } = secp256r1.sign(messageHash.replace(/0x/, ''), privateKey); + const { r, s, recovery } = ensureLowerOrderS(secp256r1.sign(messageHash.replace(/0x/, ''), privateKey)); const signature = [r, s].map(v => ethers.toBeHex(v, 0x20)); + return { privateKey, publicKey, signature, recovery, messageHash }; }; @@ -30,7 +41,7 @@ describe('P256', function () { it('verify valid signature', async function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); }); @@ -39,26 +50,13 @@ describe('P256', function () { expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); }); - it('signatures are maleable', async function () { - // symmetric S' = N - S - this.signature[1] = ethers.toBeHex(N - ethers.toBigInt(this.signature[1])); - this.recovery = 1 - this.recovery; - - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') - .withArgs('0x0000000000000000000000000000000000000100'); - expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); - }); - it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { // flip public key this.publicKey.reverse(); expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); }); @@ -69,7 +67,7 @@ describe('P256', function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( @@ -83,7 +81,7 @@ describe('P256', function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verify7212(this.messageHash, ...this.signature, ...this.publicKey)) + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') .withArgs('0x0000000000000000000000000000000000000100'); expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( From 2c113f42ed153d16e505058c545a78206d88c5d3 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Fri, 21 Jun 2024 21:09:43 -0600 Subject: [PATCH 35/76] Change arguments to bytes32 --- contracts/utils/cryptography/P256.sol | 62 ++++++++++++++------------- test/utils/cryptography/P256.t.sol | 30 ++++++------- 2 files changed, 47 insertions(+), 45 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 2a89b9495b2..2987f5908aa 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -53,8 +53,8 @@ library P256 { * @param qx - public key coordinate X * @param qy - public key coordinate Y */ - function verify(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - if (s > HALF_N) { + function verify(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { + if (uint256(s) > HALF_N) { return false; } return _verifyMalleable(h, r, s, qx, qy); @@ -63,7 +63,7 @@ library P256 { /** * @dev Same as {verify}, but allows for `s` in the upper half order allowing for malleable signatures. */ - function _verifyMalleable(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) private view returns (bool) { + function _verifyMalleable(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) private view returns (bool) { (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); return supported ? valid : verifySolidity(h, r, s, qx, qy); } @@ -71,8 +71,8 @@ library P256 { /** * @dev Same as {verify}, but it will revert if the required precompile is not available. */ - function verifyNative(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - if (s > HALF_N) { + function verifyNative(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { + if (uint256(s) > HALF_N) { return false; } return _verifyNativeMalleable(h, r, s, qx, qy); @@ -82,11 +82,11 @@ library P256 { * @dev Same as {verifyNative}, but allows for `s` in the upper half order allowing for malleable signatures. */ function _verifyNativeMalleable( - uint256 h, - uint256 r, - uint256 s, - uint256 qx, - uint256 qy + bytes32 h, + bytes32 r, + bytes32 s, + bytes32 qx, + bytes32 qy ) private view returns (bool) { (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); if (supported) { @@ -100,11 +100,11 @@ library P256 { * @dev Same as {verify}, but it will return false if the required precompile is not available. */ function _tryVerifyNative( - uint256 h, - uint256 r, - uint256 s, - uint256 qx, - uint256 qy + bytes32 h, + bytes32 r, + bytes32 s, + bytes32 qx, + bytes32 qy ) private view returns (bool valid, bool supported) { (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); return (success && returndata.length == 0x20) ? (abi.decode(returndata, (bool)), true) : (false, false); @@ -113,15 +113,17 @@ library P256 { /** * @dev Same as {verify}, but only the Solidity implementation is used. */ - function verifySolidity(uint256 h, uint256 r, uint256 s, uint256 qx, uint256 qy) internal view returns (bool) { - if (r == 0 || r >= N || s == 0 || s >= N || !isOnCurve(qx, qy)) return false; + function verifySolidity(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { + if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) >= N || !isOnCurve(qx, qy)) { + return false; + } - JPoint[16] memory points = _preComputeJacobianPoints(qx, qy); - uint256 w = Math.invModPrime(s, N); - uint256 u1 = mulmod(h, w, N); - uint256 u2 = mulmod(r, w, N); + JPoint[16] memory points = _preComputeJacobianPoints(uint256(qx), uint256(qy)); + uint256 w = Math.invModPrime(uint256(s), N); + uint256 u1 = mulmod(uint256(h), w, N); + uint256 u2 = mulmod(uint256(r), w, N); (uint256 x, ) = _jMultShamir(points, u1, u2); - return (x == r); + return (x == uint256(r)); } /** @@ -135,27 +137,27 @@ library P256 { * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting * the upper half order of the curve (i.e. s > N/2) */ - function recovery(uint256 h, uint8 v, uint256 r, uint256 s) internal view returns (uint256, uint256) { - if (r == 0 || r >= N || s == 0 || s >= N || v > 1) return (0, 0); + function recovery(bytes32 h, uint8 v, bytes32 r, bytes32 s) internal view returns (bytes32, bytes32) { + if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) >= N || v > 1) return (0, 0); - uint256 rx = r; + uint256 rx = uint256(r); uint256 ry2 = addmod(mulmod(addmod(mulmod(rx, rx, P), A, P), rx, P), B, P); // weierstrass equation y² = x³ + a.x + b uint256 ry = Math.modExp(ry2, P1DIV4, P); // This formula for sqrt work because P ≡ 3 (mod 4) if (mulmod(ry, ry, P) != ry2) return (0, 0); // Sanity check if (ry % 2 != v % 2) ry = P - ry; JPoint[16] memory points = _preComputeJacobianPoints(rx, ry); - uint256 w = Math.invModPrime(r, N); - uint256 u1 = mulmod(N - (h % N), w, N); - uint256 u2 = mulmod(s, w, N); + uint256 w = Math.invModPrime(uint256(r), N); + uint256 u1 = mulmod(N - (uint256(h) % N), w, N); + uint256 u2 = mulmod(uint256(s), w, N); (uint256 x, uint256 y) = _jMultShamir(points, u1, u2); - return (x, y); + return (bytes32(x), bytes32(y)); } /** * @dev Checks if a point is on the curve. */ - function isOnCurve(uint256 x, uint256 y) internal pure returns (bool result) { + function isOnCurve(bytes32 x, bytes32 y) internal pure returns (bool result) { assembly ("memory-safe") { let p := P let lhs := mulmod(y, y, p) // y^2 diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 523c0619ffc..73e1e3bbb20 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -15,20 +15,20 @@ contract P256Test is Test { function testVerify(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); - (uint256 x, uint256 y) = P256PublicKey.getPublicKey(privateKey); + (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); - assertTrue(P256.verify(uint256(digest), uint256(r), uint256(s), x, y)); - assertTrue(P256.verifySolidity(uint256(digest), uint256(r), uint256(s), x, y)); + assertTrue(P256.verify(digest, r, s, x, y)); + assertTrue(P256.verifySolidity(digest, r, s, x, y)); } /// forge-config: default.fuzz.runs = 512 function testRecover(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); - (uint256 x, uint256 y) = P256PublicKey.getPublicKey(privateKey); + (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); - (uint256 qx0, uint256 qy0) = P256.recovery(uint256(digest), 0, uint256(r), uint256(s)); - (uint256 qx1, uint256 qy1) = P256.recovery(uint256(digest), 1, uint256(r), uint256(s)); + (bytes32 qx0, bytes32 qy0) = P256.recovery(digest, 0, r, s); + (bytes32 qx1, bytes32 qy1) = P256.recovery(digest, 1, r, s); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } @@ -41,13 +41,13 @@ contract P256Test is Test { break; } - uint256 r = uint256(vector.readBytes32(".r")); - uint256 s = uint256(vector.readBytes32(".s")); - uint256 x = uint256(vector.readBytes32(".x")); - uint256 y = uint256(vector.readBytes32(".y")); + bytes32 r = vector.readBytes32(".r"); + bytes32 s = vector.readBytes32(".s"); + bytes32 x = vector.readBytes32(".x"); + bytes32 y = vector.readBytes32(".y"); bytes32 hash = vector.readBytes32(".hash"); - assertEq(P256.verify(uint256(hash), r, s, x, y), vector.readBool(".valid")); + assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); } } } @@ -58,7 +58,7 @@ contract P256Test is Test { * See https://github.com/foundry-rs/foundry/issues/7908 */ library P256PublicKey { - function getPublicKey(uint256 privateKey) internal view returns (uint256, uint256) { + function getPublicKey(uint256 privateKey) internal view returns (bytes32, bytes32) { (uint256 x, uint256 y, uint256 z) = _jMult(P256.GX, P256.GY, 1, privateKey); return _affineFromJacobian(x, y, z); } @@ -88,13 +88,13 @@ library P256PublicKey { /// From P256.sol - function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (uint256 ax, uint256 ay) { + function _affineFromJacobian(uint256 jx, uint256 jy, uint256 jz) private view returns (bytes32 ax, bytes32 ay) { if (jz == 0) return (0, 0); uint256 zinv = Math.invModPrime(jz, P256.P); uint256 zzinv = mulmod(zinv, zinv, P256.P); uint256 zzzinv = mulmod(zzinv, zinv, P256.P); - ax = mulmod(jx, zzinv, P256.P); - ay = mulmod(jy, zzzinv, P256.P); + ax = bytes32(mulmod(jx, zzinv, P256.P)); + ay = bytes32(mulmod(jy, zzzinv, P256.P)); } function _jDouble(uint256 x, uint256 y, uint256 z) private pure returns (uint256 rx, uint256 ry, uint256 rz) { From fb7dc6fe422e3b03c37c17b8e150a4cdbe34ac05 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 17:00:53 +0200 Subject: [PATCH 36/76] remove unused malleable version --- contracts/utils/cryptography/P256.sol | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 2987f5908aa..d715da68449 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -57,13 +57,6 @@ library P256 { if (uint256(s) > HALF_N) { return false; } - return _verifyMalleable(h, r, s, qx, qy); - } - - /** - * @dev Same as {verify}, but allows for `s` in the upper half order allowing for malleable signatures. - */ - function _verifyMalleable(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) private view returns (bool) { (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); return supported ? valid : verifySolidity(h, r, s, qx, qy); } @@ -75,19 +68,6 @@ library P256 { if (uint256(s) > HALF_N) { return false; } - return _verifyNativeMalleable(h, r, s, qx, qy); - } - - /** - * @dev Same as {verifyNative}, but allows for `s` in the upper half order allowing for malleable signatures. - */ - function _verifyNativeMalleable( - bytes32 h, - bytes32 r, - bytes32 s, - bytes32 qx, - bytes32 qy - ) private view returns (bool) { (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); if (supported) { return valid; From f264daec5fee3ad3d932434dcd4d4713c57f148f Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 17:06:05 +0200 Subject: [PATCH 37/76] Update contracts/utils/cryptography/P256.sol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ernesto García --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index d715da68449..85302e06d74 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: GPL-3.0 +// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {Math} from "../math/Math.sol"; From 2c9a1373c97fe96eb378f8356b935ee9086d9808 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 17:07:11 +0200 Subject: [PATCH 38/76] Update contracts/utils/cryptography/P256.sol --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 85302e06d74..8d92e552559 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -94,7 +94,7 @@ library P256 { * @dev Same as {verify}, but only the Solidity implementation is used. */ function verifySolidity(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { - if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) >= N || !isOnCurve(qx, qy)) { + if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || !isOnCurve(qx, qy)) { return false; } From f4cbf51d5f5486463fad0bd1559f2d466067f0e8 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 17:08:25 +0200 Subject: [PATCH 39/76] up --- contracts/utils/cryptography/P256.sol | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 8d92e552559..cc798b8fa76 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -54,9 +54,6 @@ library P256 { * @param qy - public key coordinate Y */ function verify(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { - if (uint256(s) > HALF_N) { - return false; - } (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); return supported ? valid : verifySolidity(h, r, s, qx, qy); } @@ -65,9 +62,6 @@ library P256 { * @dev Same as {verify}, but it will revert if the required precompile is not available. */ function verifyNative(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { - if (uint256(s) > HALF_N) { - return false; - } (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); if (supported) { return valid; @@ -86,6 +80,10 @@ library P256 { bytes32 qx, bytes32 qy ) private view returns (bool valid, bool supported) { + if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || !isOnCurve(qx, qy)) { + return (true, false); + } + (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); return (success && returndata.length == 0x20) ? (abi.decode(returndata, (bool)), true) : (false, false); } From 02276568cccb01968518053ad9e213c5f80e5343 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 17:10:44 +0200 Subject: [PATCH 40/76] recovery malleability --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index cc798b8fa76..7913d24f65b 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -116,7 +116,7 @@ library P256 { * the upper half order of the curve (i.e. s > N/2) */ function recovery(bytes32 h, uint8 v, bytes32 r, bytes32 s) internal view returns (bytes32, bytes32) { - if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) >= N || v > 1) return (0, 0); + if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || v > 1) return (0, 0); uint256 rx = uint256(r); uint256 ry2 = addmod(mulmod(addmod(mulmod(rx, rx, P), A, P), rx, P), B, P); // weierstrass equation y² = x³ + a.x + b From e3a8338636103b742fe896f79875b160e57ab7c7 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 17:11:47 +0200 Subject: [PATCH 41/76] fix bug (inverse return values) --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 7913d24f65b..63f772e0a30 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -81,7 +81,7 @@ library P256 { bytes32 qy ) private view returns (bool valid, bool supported) { if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || !isOnCurve(qx, qy)) { - return (true, false); + return (false, true); // signature is invalid, and its not because the precompile is missing } (bool success, bytes memory returndata) = address(0x100).staticcall(abi.encode(h, r, s, qx, qy)); From cbd2ff5b16a47c46381626c82cafc6221d98aa54 Mon Sep 17 00:00:00 2001 From: cairo Date: Mon, 24 Jun 2024 11:55:17 -0400 Subject: [PATCH 42/76] better private key gen --- test/utils/cryptography/P256.t.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 73e1e3bbb20..f5e420f190a 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -13,7 +13,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); + uint256 privateKey = bound(seed, 1, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); @@ -23,7 +23,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testRecover(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); + uint256 privateKey = bound(seed, 1, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); From 194f19a3b3b923877a4fe22205a077082c667311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Mon, 24 Jun 2024 13:02:26 -0600 Subject: [PATCH 43/76] Update contracts/utils/cryptography/P256.sol --- contracts/utils/cryptography/P256.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 63f772e0a30..287acc0f88f 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -111,9 +111,6 @@ library P256 { * @param v - signature recovery param * @param r - signature half R * @param s - signature half S - * - * WARNING: Signatures are malleable, and this function does not check for malleability. Consider rejecting - * the upper half order of the curve (i.e. s > N/2) */ function recovery(bytes32 h, uint8 v, bytes32 r, bytes32 s) internal view returns (bytes32, bytes32) { if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || v > 1) return (0, 0); From 704a12eb8da77f93e160c7c269ff4f5b14d8dbbf Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 14:39:02 -0600 Subject: [PATCH 44/76] Fix hardhat tests and add documentation --- contracts/utils/cryptography/P256.sol | 6 ++++ docs/modules/ROOT/pages/utilities.adoc | 45 ++++++++++++++++++++++++-- test/utils/cryptography/P256.test.js | 22 ++++++++++--- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 287acc0f88f..1f78b11a176 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -52,6 +52,9 @@ library P256 { * @param s - signature half S * @param qx - public key coordinate X * @param qy - public key coordinate Y + * + * IMPORTANT: This function disallows signatures where the `s` value is above `N/2` to prevent malleability. + * To flip the `s` value, compute `s = N - s`. */ function verify(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); @@ -111,6 +114,9 @@ library P256 { * @param v - signature recovery param * @param r - signature half R * @param s - signature half S + * + * IMPORTANT: This function disallows signatures where the `s` value is above `N/2` to prevent malleability. + * To flip the `s` value, compute `s = N - s` and `v = 1 - v` if (`v = 0 | 1`). */ function recovery(bytes32 h, uint8 v, bytes32 r, bytes32 s) internal view returns (bytes32, bytes32) { if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || v > 1) return (0, 0); diff --git a/docs/modules/ROOT/pages/utilities.adoc b/docs/modules/ROOT/pages/utilities.adoc index 4f9949ab036..401530e2c50 100644 --- a/docs/modules/ROOT/pages/utilities.adoc +++ b/docs/modules/ROOT/pages/utilities.adoc @@ -8,9 +8,9 @@ Here are some of the more popular ones. === Checking Signatures On-Chain -At a high level, signatures are a set of cryptographic algorithms that allow for a _signer_ to prove himself owner of a _private key_ used to authorize an piece of information (generally a transaction or `UserOperation`). Natively, the EVM supports the Elliptic Curve Digital Signature Algorithm (https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm[ECDSA]) using the secp256r1 field, however other signature algorithms such as RSA are supported. +At a high level, signatures are a set of cryptographic algorithms that allow for a _signer_ to prove himself owner of a _private key_ used to authorize an piece of information (generally a transaction or `UserOperation`). Natively, the EVM supports the Elliptic Curve Digital Signature Algorithm (https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm[ECDSA]) using the secp256k1 curve, however other signature algorithms such as P256 and RSA are supported. -==== Ethereum Signatures (secp256r1) +==== Ethereum Signatures (secp256k1) xref:api:utils.adoc#ECDSA[`ECDSA`] provides functions for recovering and managing Ethereum account ECDSA signatures. These are often generated via https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#sign[`web3.eth.sign`], and are a 65 byte array (of type `bytes` in Solidity) arranged the following way: `[[v (1)], [r (32)], [s (32)]]`. @@ -30,6 +30,47 @@ function _verify(bytes32 data, bytes memory signature, address account) internal WARNING: Getting signature verification right is not trivial: make sure you fully read and understand xref:api:utils.adoc#MessageHashUtils[`MessageHashUtils`]'s and xref:api:utils.adoc#ECDSA[`ECDSA`]'s documentation. +==== P256 Signatures (secp256r1) + +P256, also known as secp256r1, is one of the most used signature schemes. P256 signatures are standardized by the National Institute of Standards and Technology (NIST) and it's widely available in consumer hardware and software. + +These signatures are different to regular Ethereum Signatures (secp256k1) in that they use a different elliptic curve to perform operations but have similar security guarantees. + +[source,solidity] +---- +using P256 for bytes32; + +function _verify( + bytes32 data, + bytes32 r, + bytes32 s, + bytes32 qx, + bytes32 qy +) internal pure returns (bool) { + return data.verify(data, r, s, qx, qy); +} +---- + +By default, the `verify` function will try calling the (https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md)[RIP-7212] precompile at address `0x100` and will fallback to an implementation in Solidity if not available. We encourage you to use `verifyNative` if you know the precompile is available in the chain you're working on. + +[source,solidity] +---- +using P256 for bytes32; + +function _verify( + bytes32 data, + bytes32 r, + bytes32 s, + bytes32 qx, + bytes32 qy +) internal pure returns (bool) { + // Will only call the precompile at address(0x100) + return data.verifyNative(data, r, s, qx, qy); +} +---- + +IMPORTANT: The P256 library only allows for `s` values in the lower order of the curve (i.e. `s < N`) to prevent malleability. In case your tooling produces signatures in both sides of the curve, consider flipping the `s` value to keep compatibility. + ==== RSA RSA a public-key cryptosystem that was popularized by corporate and governmental public key infrastructures (https://en.wikipedia.org/wiki/Public_key_infrastructure[PKIs]) and https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions[DNSSEC]. diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index 6bfe33dc9f4..d7448adb689 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -56,13 +56,27 @@ describe('P256', function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') - .withArgs('0x0000000000000000000000000000000000000100'); + expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)).to.eventually.be.false; // Flipped public key is not in the curve }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { - // flip public key + // Preselected signature where `r < N/2` and `s < N/2` + this.signature = [ + '0x45350225bad31e89db662fcc4fb2f79f349adbb952b3f652eed1f2aa72fb0356', + '0x513eb68424c42630012309eee4a3b43e0bdc019d179ef0e0c461800845e237ee', + ]; + + // Corresponding hash and public key + this.messageHash = '0x2ad1f900fe63745deeaedfdf396cb6f0f991c4338a9edf114d52f7d1812040a0'; + this.publicKey = [ + '0x9e30de165e521257996425d9bf12a7d366925614bf204eabbb78172b48e52e59', + '0x94bf0fe72f99654d7beae4780a520848e306d46a1275b965c4f4c2b8e9a2c08d', + ]; + + // Make sure it works + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + + // Flip signature this.signature.reverse(); expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; From 61d52a52afcff18749a79527c731fa6fab30b480 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 24 Jun 2024 23:15:13 +0200 Subject: [PATCH 45/76] Update test/utils/cryptography/P256.test.js --- test/utils/cryptography/P256.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index d7448adb689..df0b2188780 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -56,7 +56,7 @@ describe('P256', function () { expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)).to.eventually.be.false; // Flipped public key is not in the curve + expect(await this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; // Flipped public key is not in the curve }); it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { From 242c79602467e676d84178e06d7ec215346f6dea Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 15:16:34 -0600 Subject: [PATCH 46/76] Ensure lower s in Foundry tests --- test/utils/cryptography/P256.t.sol | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index f5e420f190a..78c7ed94fdb 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -13,20 +13,22 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(seed, 1, P256.N - 1); + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); + s = _ensureLowerS(s); assertTrue(P256.verify(digest, r, s, x, y)); assertTrue(P256.verifySolidity(digest, r, s, x, y)); } /// forge-config: default.fuzz.runs = 512 function testRecover(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(seed, 1, P256.N - 1); + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); + s = _ensureLowerS(s); (bytes32 qx0, bytes32 qy0) = P256.recovery(digest, 0, r, s); (bytes32 qx1, bytes32 qy1) = P256.recovery(digest, 1, r, s); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); @@ -50,6 +52,11 @@ contract P256Test is Test { assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); } } + + function _ensureLowerS(bytes32 s) private pure returns (bytes32) { + uint256 _s = uint256(s); + return _s > P256.N / 2 ? bytes32(P256.N - _s) : s; + } } /** From 787834dc086299bf43912d9da95d6aea97c0c601 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 15:17:07 -0600 Subject: [PATCH 47/76] Lint --- test/utils/cryptography/P256.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 78c7ed94fdb..64d372a3858 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -52,7 +52,7 @@ contract P256Test is Test { assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); } } - + function _ensureLowerS(bytes32 s) private pure returns (bytes32) { uint256 _s = uint256(s); return _s > P256.N / 2 ? bytes32(P256.N - _s) : s; From d8f4f7eb52468d60404627410980f96975ac9243 Mon Sep 17 00:00:00 2001 From: cairo Date: Mon, 24 Jun 2024 18:21:58 -0400 Subject: [PATCH 48/76] fix bug for valid signatures with large `r` values --- contracts/utils/cryptography/P256.sol | 2 +- test/utils/cryptography/P256.t.sol | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 1f78b11a176..ac393ec4c25 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -104,7 +104,7 @@ library P256 { uint256 u1 = mulmod(uint256(h), w, N); uint256 u2 = mulmod(uint256(r), w, N); (uint256 x, ) = _jMultShamir(points, u1, u2); - return (x == uint256(r)); + return ((x % N) == uint256(r)); } /** diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 64d372a3858..bb49c4feab2 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -35,7 +35,7 @@ contract P256Test is Test { } // based on: https://github.com/pcaversaccio/snekmate/blob/4cb87bff4c1ca8901d9931772b1e58758bea6576/test/utils/P256.t.sol#L99 - function testVerifyWycheproofData() public { + function testWycheproofData() public { string memory file = "test/utils/cryptography/wycheproof.jsonl"; while (true) { string memory vector = vm.readLine(file); @@ -49,6 +49,13 @@ contract P256Test is Test { bytes32 y = vector.readBytes32(".y"); bytes32 hash = vector.readBytes32(".hash"); + // Skip test for s^-1 + if (uint256(s) > P256.N) { + continue; + } else { + s = _ensureLowerS(s); + } + assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); } } From fc54017e3b45af495a884d0dbded02a68cd7ed21 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 00:44:50 +0200 Subject: [PATCH 49/76] run original wycheproof in hardhat --- foundry.toml | 1 - test/utils/cryptography/P256.t.sol | 19 - test/utils/cryptography/P256.test.js | 183 +- .../ecdsa_secp256r1_sha256_p1363_test.json | 3719 +++++++++++++++++ test/utils/cryptography/wycheproof.jsonl | 778 ---- 5 files changed, 3831 insertions(+), 869 deletions(-) create mode 100644 test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json delete mode 100644 test/utils/cryptography/wycheproof.jsonl diff --git a/foundry.toml b/foundry.toml index e4e11c67f80..391c40e6f11 100644 --- a/foundry.toml +++ b/foundry.toml @@ -6,7 +6,6 @@ out = 'out' libs = ['node_modules', 'lib'] test = 'test' cache_path = 'cache_forge' -fs_permissions = [{ access = "read", path = "./test/utils/cryptography/wycheproof.jsonl" }] [fuzz] runs = 5000 diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index f5e420f190a..d088cca8784 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -31,25 +31,6 @@ contract P256Test is Test { (bytes32 qx1, bytes32 qy1) = P256.recovery(digest, 1, r, s); assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } - - // based on: https://github.com/pcaversaccio/snekmate/blob/4cb87bff4c1ca8901d9931772b1e58758bea6576/test/utils/P256.t.sol#L99 - function testVerifyWycheproofData() public { - string memory file = "test/utils/cryptography/wycheproof.jsonl"; - while (true) { - string memory vector = vm.readLine(file); - if (bytes(vector).length == 0) { - break; - } - - bytes32 r = vector.readBytes32(".r"); - bytes32 s = vector.readBytes32(".s"); - bytes32 x = vector.readBytes32(".x"); - bytes32 y = vector.readBytes32(".y"); - bytes32 hash = vector.readBytes32(".hash"); - - assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); - } - } } /** diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index df0b2188780..63ea4117d71 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -35,80 +35,121 @@ describe('P256', function () { } beforeEach(async function () { - Object.assign(this, await loadFixture(fixture), prepareSignature()); + Object.assign(this, await loadFixture(fixture)); }); - it('verify valid signature', async function () { - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') - .withArgs('0x0000000000000000000000000000000000000100'); + describe('with signature', function () { + beforeEach(async function () { + Object.assign(this, prepareSignature()); + }); + + it('verify valid signature', async function () { + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); + }); + + it('recover public key', async function () { + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); + }); + + it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { + // flip public key + this.publicKey.reverse(); + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; // Flipped public key is not in the curve + }); + + it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { + // Preselected signature where `r < N/2` and `s < N/2` + this.signature = [ + '0x45350225bad31e89db662fcc4fb2f79f349adbb952b3f652eed1f2aa72fb0356', + '0x513eb68424c42630012309eee4a3b43e0bdc019d179ef0e0c461800845e237ee', + ]; + + // Corresponding hash and public key + this.messageHash = '0x2ad1f900fe63745deeaedfdf396cb6f0f991c4338a9edf114d52f7d1812040a0'; + this.publicKey = [ + '0x9e30de165e521257996425d9bf12a7d366925614bf204eabbb78172b48e52e59', + '0x94bf0fe72f99654d7beae4780a520848e306d46a1275b965c4f4c2b8e9a2c08d', + ]; + + // Make sure it works + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; + + // Flip signature + this.signature.reverse(); + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( + this.publicKey, + ); + }); + + it('reject signature with invalid message hash', async function () { + // random message hash + this.messageHash = ethers.hexlify(ethers.randomBytes(32)); + + expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; + await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) + .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') + .withArgs('0x0000000000000000000000000000000000000100'); + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( + this.publicKey, + ); + }); + + it('fail to recover signature with invalid recovery bit', async function () { + // flip recovery bit + this.recovery = 1 - this.recovery; + + expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( + this.publicKey, + ); + }); }); - it('recover public key', async function () { - expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.deep.equal(this.publicKey); - }); - - it('reject signature with flipped public key coordinates ([x,y] >> [y,x])', async function () { - // flip public key - this.publicKey.reverse(); - - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - expect(await this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; // Flipped public key is not in the curve - }); - - it('reject signature with flipped signature values ([r,s] >> [s,r])', async function () { - // Preselected signature where `r < N/2` and `s < N/2` - this.signature = [ - '0x45350225bad31e89db662fcc4fb2f79f349adbb952b3f652eed1f2aa72fb0356', - '0x513eb68424c42630012309eee4a3b43e0bdc019d179ef0e0c461800845e237ee', - ]; - - // Corresponding hash and public key - this.messageHash = '0x2ad1f900fe63745deeaedfdf396cb6f0f991c4338a9edf114d52f7d1812040a0'; - this.publicKey = [ - '0x9e30de165e521257996425d9bf12a7d366925614bf204eabbb78172b48e52e59', - '0x94bf0fe72f99654d7beae4780a520848e306d46a1275b965c4f4c2b8e9a2c08d', - ]; - - // Make sure it works - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.true; - - // Flip signature - this.signature.reverse(); - - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') - .withArgs('0x0000000000000000000000000000000000000100'); - expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( - this.publicKey, - ); - }); - - it('reject signature with invalid message hash', async function () { - // random message hash - this.messageHash = ethers.hexlify(ethers.randomBytes(32)); - - expect(await this.mock.$verify(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - expect(await this.mock.$verifySolidity(this.messageHash, ...this.signature, ...this.publicKey)).to.be.false; - await expect(this.mock.$verifyNative(this.messageHash, ...this.signature, ...this.publicKey)) - .to.be.revertedWithCustomError(this.mock, 'MissingPrecompile') - .withArgs('0x0000000000000000000000000000000000000100'); - expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( - this.publicKey, - ); - }); - - it('fail to recover signature with invalid recovery bit', async function () { - // flip recovery bit - this.recovery = 1 - this.recovery; - - expect(await this.mock.$recovery(this.messageHash, this.recovery, ...this.signature)).to.not.deep.equal( - this.publicKey, - ); + // test cases for https://github.com/C2SP/wycheproof/blob/4672ff74d68766e7785c2cac4c597effccef2c5c/testvectors/ecdsa_secp256r1_sha256_p1363_test.json + describe('wycheproof tests', function () { + for (const { key, sha, tests, ...rest1 } of require('./ecdsa_secp256r1_sha256_p1363_test.json').testGroups) { + // parse public key + let [ x, y ] = [ key.wx, key.wy ].map(v => ethers.stripZerosLeft('0x' + v, 32)); + if (x.length > 66 || y.length > 66) continue; + x = ethers.zeroPadValue(x, 32); + y = ethers.zeroPadValue(y, 32); + + // run all tests for this key + for (const { tcId, comment, msg, sig, result, ...rest2 } of tests) { + // only keep properly formated signatures + if (sig.length != 128) continue; + + it(`${tcId}: ${comment}`, async function () { + // split signature, and reduce modulo N + let [ r, s ] = Array(2).fill().map((_, i) => ethers.toBigInt('0x' + sig.substr(64 * i, 64 * (i + 1)))); + // move s to lower part of the curve if needed + if (s <= N && s > N / 2n) s = N - s; + // prepare signature + r = ethers.toBeHex(r, 32); + s = ethers.toBeHex(s, 32); + // hash + const messageHash = ethers.sha256('0x' + msg); + + // check verify + expect(await this.mock.$verify(messageHash, r, s, x, y)).to.equal(result == 'valid', JSON.stringify({ + key, sha, ...rest1, + test: { comment, msg, sig, result, ...rest2 }, + }, null, 4)); + }); + } + } }); }); diff --git a/test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json b/test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json new file mode 100644 index 00000000000..9cd94cf8b41 --- /dev/null +++ b/test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json @@ -0,0 +1,3719 @@ +{ + "algorithm" : "ECDSA", + "generatorVersion" : "0.8r12", + "numberOfTests" : 219, + "header" : [ + "Test vectors of type EcdsaVerify are meant for the verification", + "of IEEE P1363 encoded ECDSA signatures." + ], + "notes" : { + "EdgeCase" : "Edge case values such as r=1 and s=0 can lead to forgeries if the ECDSA implementation does not check boundaries and computes s^(-1)==0.", + "PointDuplication" : "Some implementations of ECDSA do not handle duplication and points at infinity correctly. This is a test vector that has been specially crafted to check for such an omission.", + "SigSize" : "The size of the signature should always be twice the number of bytes of the size of the order. But some libraries accept signatures with less bytes." + }, + "schema" : "ecdsa_p1363_verify_schema.json", + "testGroups" : [ + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "KSexBRK64-3c_kZ4KBKLrSkDJpkZ9whgacjE32xzKDg", + "y" : "x3h5ZOqsAOWSH7FJimD0YGdms9loUAFVjRqXTnNBUT4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "042927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e", + "wx" : "2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838", + "wy" : "00c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200042927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKSexBRK64+3c/kZ4KBKLrSkDJpkZ\n9whgacjE32xzKDjHeHlk6qwA5ZIfsUmKYPRgZ2az2WhQAVWNGpdOc0FRPg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 1, + "comment" : "signature malleability", + "msg" : "313233343030", + "sig" : "2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e184cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 2, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "012ba3a8bd6b94d5ed80a6d9d1190a436ebccc0833490686deac8635bcb9bf536900b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 3, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 4, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "012ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e1800b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 5, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 6, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "002ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e1801b329f478a2bbd0a6c384ee1493b1f518276e0e4a5375928d6fcd160c11cb6d2c", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 7, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "002ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e1801b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 8, + "comment" : "Modified r or s, e.g. by adding or subtracting the order of the group", + "msg" : "313233343030", + "sig" : "2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e184cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 9, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 10, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 11, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 12, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 13, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 14, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000000ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 15, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000000ffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 16, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 17, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 18, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000001ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 19, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000001ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 20, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000001ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 21, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000001ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 22, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000001ffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 23, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325510000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 24, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325510000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 25, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 26, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 27, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 28, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 29, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551ffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 30, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325500000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 31, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325500000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 32, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 33, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 34, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 35, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 36, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550ffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 37, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325520000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 38, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325520000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 39, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 40, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 41, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 42, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 43, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552ffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 44, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 45, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 46, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffffffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 47, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffffffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 48, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffffffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 49, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffffffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 50, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000ffffffffffffffffffffffffffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 51, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff000000010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 52, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff000000010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 53, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000001000000000000000000000000ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 54, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000001000000000000000000000000ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 55, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000001000000000000000000000000ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 56, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000001000000000000000000000000ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 57, + "comment" : "Signature with special case values for r and s", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000001000000000000000000000000ffffffff00000001000000000000000000000001000000000000000000000000", + "result" : "invalid", + "flags" : [ + "EdgeCase" + ] + }, + { + "tcId" : 58, + "comment" : "Edge case for Shamir multiplication", + "msg" : "3639383139", + "sig" : "64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 59, + "comment" : "special case hash", + "msg" : "343236343739373234", + "sig" : "16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 60, + "comment" : "special case hash", + "msg" : "37313338363834383931", + "sig" : "9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 61, + "comment" : "special case hash", + "msg" : "3130333539333331363638", + "sig" : "73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa432f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 62, + "comment" : "special case hash", + "msg" : "33393439343031323135", + "sig" : "bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3ddbdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 63, + "comment" : "special case hash", + "msg" : "31333434323933303739", + "sig" : "204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 64, + "comment" : "special case hash", + "msg" : "33373036323131373132", + "sig" : "ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa0399ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 65, + "comment" : "special case hash", + "msg" : "333433363838373132", + "sig" : "060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 66, + "comment" : "special case hash", + "msg" : "31333531353330333730", + "sig" : "9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831db26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 67, + "comment" : "special case hash", + "msg" : "36353533323033313236", + "sig" : "a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b720aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 68, + "comment" : "special case hash", + "msg" : "31353634333436363033", + "sig" : "fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db93df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 69, + "comment" : "special case hash", + "msg" : "34343239353339313137", + "sig" : "b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 70, + "comment" : "special case hash", + "msg" : "3130393533323631333531", + "sig" : "3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a84c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 71, + "comment" : "special case hash", + "msg" : "35393837333530303431", + "sig" : "30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 72, + "comment" : "special case hash", + "msg" : "33343633303036383738", + "sig" : "38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 73, + "comment" : "special case hash", + "msg" : "39383137333230323837", + "sig" : "44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 74, + "comment" : "special case hash", + "msg" : "33323232303431303436", + "sig" : "2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e97d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 75, + "comment" : "special case hash", + "msg" : "36363636333037313034", + "sig" : "bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8ff6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 76, + "comment" : "special case hash", + "msg" : "31303335393531383938", + "sig" : "50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 77, + "comment" : "special case hash", + "msg" : "31383436353937313935", + "sig" : "f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 78, + "comment" : "special case hash", + "msg" : "33313336303436313839", + "sig" : "9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7ac60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 79, + "comment" : "special case hash", + "msg" : "32363633373834323534", + "sig" : "bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 80, + "comment" : "special case hash", + "msg" : "31363532313030353234", + "sig" : "2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 81, + "comment" : "special case hash", + "msg" : "35373438303831363936", + "sig" : "54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c592ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 82, + "comment" : "special case hash", + "msg" : "36333433393133343638", + "sig" : "5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c946665d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 83, + "comment" : "special case hash", + "msg" : "31353431313033353938", + "sig" : "207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 84, + "comment" : "special case hash", + "msg" : "3130343738353830313238", + "sig" : "6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 85, + "comment" : "special case hash", + "msg" : "3130353336323835353638", + "sig" : "a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfce99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 86, + "comment" : "special case hash", + "msg" : "393533393034313035", + "sig" : "975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 87, + "comment" : "special case hash", + "msg" : "393738383438303339", + "sig" : "5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 88, + "comment" : "special case hash", + "msg" : "33363130363732343432", + "sig" : "a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba65e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 89, + "comment" : "special case hash", + "msg" : "31303534323430373035", + "sig" : "614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 90, + "comment" : "special case hash", + "msg" : "35313734343438313937", + "sig" : "bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 91, + "comment" : "special case hash", + "msg" : "31393637353631323531", + "sig" : "499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad242c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 92, + "comment" : "special case hash", + "msg" : "33343437323533333433", + "sig" : "08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b29d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 93, + "comment" : "special case hash", + "msg" : "333638323634333138", + "sig" : "be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 94, + "comment" : "special case hash", + "msg" : "33323631313938363038", + "sig" : "15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 95, + "comment" : "special case hash", + "msg" : "39363738373831303934", + "sig" : "352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 96, + "comment" : "special case hash", + "msg" : "34393538383233383233", + "sig" : "4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 97, + "comment" : "special case hash", + "msg" : "383234363337383337", + "sig" : "eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e967451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 98, + "comment" : "special case hash", + "msg" : "3131303230383333373736", + "sig" : "2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 99, + "comment" : "special case hash", + "msg" : "313333383731363438", + "sig" : "ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b330021979938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 100, + "comment" : "special case hash", + "msg" : "333232313434313632", + "sig" : "81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 101, + "comment" : "special case hash", + "msg" : "3130363836363535353436", + "sig" : "dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 102, + "comment" : "special case hash", + "msg" : "3632313535323436", + "sig" : "ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a576293320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 103, + "comment" : "special case hash", + "msg" : "37303330383138373734", + "sig" : "ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 104, + "comment" : "special case hash", + "msg" : "35393234353233373434", + "sig" : "677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f76b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 105, + "comment" : "special case hash", + "msg" : "31343935353836363231", + "sig" : "479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 106, + "comment" : "special case hash", + "msg" : "34303035333134343036", + "sig" : "43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a31dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 107, + "comment" : "special case hash", + "msg" : "33303936343537353132", + "sig" : "5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff1145b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 108, + "comment" : "special case hash", + "msg" : "32373834303235363230", + "sig" : "5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06fb1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 109, + "comment" : "special case hash", + "msg" : "32363138373837343138", + "sig" : "0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32edb1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 110, + "comment" : "special case hash", + "msg" : "31363432363235323632", + "sig" : "7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 111, + "comment" : "special case hash", + "msg" : "36383234313839343336", + "sig" : "7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 112, + "comment" : "special case hash", + "msg" : "343834323435343235", + "sig" : "914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "CtmVACiNRmlAAx1yqfVEWk1DeEZAhVvwpph00t5f4QM", + "y" : "xQEebvLELc1Q1dPSn5mubrosgMkkT0xUIvCXn_DDul4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "040ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e", + "wx" : "0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103", + "wy" : "00c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200040ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECtmVACiNRmlAAx1yqfVEWk1DeEZA\nhVvwpph00t5f4QPFAR5u8sQtzVDV09Kfma5uuiyAySRPTFQi8Jef8MO6Xg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 113, + "comment" : "k*G has a large x-coordinate", + "msg" : "313233343030", + "sig" : "000000000000000000000000000000004319055358e8617b0c46353d039cdaabffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 114, + "comment" : "r too large", + "msg" : "313233343030", + "sig" : "ffffffff00000001000000000000000000000000fffffffffffffffffffffffcffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "qwX9nQ3ia5zm9IGWUtn8aRk9CqOY8PuoAT4JxYIgRVQ", + "y" : "GSNScSKMeGdZCV0St1rwaS3UED8Z9qjDL0lDWh6bjUU" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c58220455419235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45", + "wx" : "00ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c582204554", + "wy" : "19235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c58220455419235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqwX9nQ3ia5zm9IGWUtn8aRk9CqOY\n8PuoAT4JxYIgRVQZI1JxIox4Z1kJXRK3WvBpLdQQPxn2qMMvSUNaHpuNRQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 115, + "comment" : "r,s are large", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "gJhPOaH_OKhqaKpCAba-Xfv-z4diGXELB7rfb91MbFY", + "y" : "Ef65c5DZgm56Bt-0GHHJQNdEFe08rCCJ8URQGbtV7ZU" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0480984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c5611feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95", + "wx" : "0080984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c56", + "wy" : "11feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000480984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c5611feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgJhPOaH/OKhqaKpCAba+Xfv+z4di\nGXELB7rfb91MbFYR/rlzkNmCbnoG37QYcclA10QV7TysIInxRFAZu1XtlQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 116, + "comment" : "r and s^-1 have a large Hamming weight", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "QgG0JylEIBwylPW6qaMjK23Wh0lfzBmnCpW8YCtPfAU", + "y" : "lcN-up7oFxwbtaxv6vdTvDb0Y-Ou8WYpVywMCo-wgA4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "044201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c0595c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e", + "wx" : "4201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c05", + "wy" : "0095c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200044201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c0595c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQgG0JylEIBwylPW6qaMjK23Wh0lf\nzBmnCpW8YCtPfAWVw366nugXHBu1rG/q91O8NvRj467xZilXLAwKj7CADg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 117, + "comment" : "r and s^-1 have a large Hamming weight", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "pxr2TeUSakpOAreSLWbOlBXOiKTJ0lUU2RCCyHJayVc", + "y" : "XUdyPI--WAuzaf7JwmZdjjCkNbmTJkVILnyfEehyKWs" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04a71af64de5126a4a4e02b7922d66ce9415ce88a4c9d25514d91082c8725ac9575d47723c8fbe580bb369fec9c2665d8e30a435b9932645482e7c9f11e872296b", + "wx" : "00a71af64de5126a4a4e02b7922d66ce9415ce88a4c9d25514d91082c8725ac957", + "wy" : "5d47723c8fbe580bb369fec9c2665d8e30a435b9932645482e7c9f11e872296b" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004a71af64de5126a4a4e02b7922d66ce9415ce88a4c9d25514d91082c8725ac9575d47723c8fbe580bb369fec9c2665d8e30a435b9932645482e7c9f11e872296b", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpxr2TeUSakpOAreSLWbOlBXOiKTJ\n0lUU2RCCyHJayVddR3I8j75YC7Np/snCZl2OMKQ1uZMmRUgufJ8R6HIpaw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 118, + "comment" : "small r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 119, + "comment" : "incorrect size of signature", + "msg" : "313233343030", + "sig" : "0501", + "result" : "acceptable", + "flags" : [ + "SigSize" + ] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "ZifOxPBzHqI_wpMfkOvlt1cvWX0g3wj8KzHujvFrFXI", + "y" : "YXDtd9jQoU_FycPEyb5_DT7hj3CbsnXq8gc-JY_mlKU" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "046627cec4f0731ea23fc2931f90ebe5b7572f597d20df08fc2b31ee8ef16b15726170ed77d8d0a14fc5c9c3c4c9be7f0d3ee18f709bb275eaf2073e258fe694a5", + "wx" : "6627cec4f0731ea23fc2931f90ebe5b7572f597d20df08fc2b31ee8ef16b1572", + "wy" : "6170ed77d8d0a14fc5c9c3c4c9be7f0d3ee18f709bb275eaf2073e258fe694a5" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200046627cec4f0731ea23fc2931f90ebe5b7572f597d20df08fc2b31ee8ef16b15726170ed77d8d0a14fc5c9c3c4c9be7f0d3ee18f709bb275eaf2073e258fe694a5", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZifOxPBzHqI/wpMfkOvlt1cvWX0g\n3wj8KzHujvFrFXJhcO132NChT8XJw8TJvn8NPuGPcJuyderyBz4lj+aUpQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 120, + "comment" : "small r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000003", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 121, + "comment" : "incorrect size of signature", + "msg" : "313233343030", + "sig" : "0503", + "result" : "acceptable", + "flags" : [ + "SigSize" + ] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "WnyIJehWkczh9edUTFTnPxSvwBDLcxNDJiyn7Fp39b8", + "y" : "727fYqRJfBvXsUf7bD0irzw5v86V8w4ToW09eygS-BM" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045a7c8825e85691cce1f5e7544c54e73f14afc010cb731343262ca7ec5a77f5bfef6edf62a4497c1bd7b147fb6c3d22af3c39bfce95f30e13a16d3d7b2812f813", + "wx" : "5a7c8825e85691cce1f5e7544c54e73f14afc010cb731343262ca7ec5a77f5bf", + "wy" : "00ef6edf62a4497c1bd7b147fb6c3d22af3c39bfce95f30e13a16d3d7b2812f813" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045a7c8825e85691cce1f5e7544c54e73f14afc010cb731343262ca7ec5a77f5bfef6edf62a4497c1bd7b147fb6c3d22af3c39bfce95f30e13a16d3d7b2812f813", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWnyIJehWkczh9edUTFTnPxSvwBDL\ncxNDJiyn7Fp39b/vbt9ipEl8G9exR/tsPSKvPDm/zpXzDhOhbT17KBL4Ew==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 122, + "comment" : "small r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 123, + "comment" : "incorrect size of signature", + "msg" : "313233343030", + "sig" : "0505", + "result" : "acceptable", + "flags" : [ + "SigSize" + ] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "y-DCkTLNc4Nk_t1gMVKZDASOXi__mW2IP6bKynl4xzc", + "y" : "cK9qjORMtBIksmA2BvTATRiOgL_3zDGtUYnUqw1w6ME" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c73770af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1", + "wx" : "00cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c737", + "wy" : "70af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c73770af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEy+DCkTLNc4Nk/t1gMVKZDASOXi//\nmW2IP6bKynl4xzdwr2qM5Ey0EiSyYDYG9MBNGI6Av/fMMa1RidSrDXDowQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 124, + "comment" : "small r and s", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 125, + "comment" : "incorrect size of signature", + "msg" : "313233343030", + "sig" : "0506", + "result" : "acceptable", + "flags" : [ + "SigSize" + ] + }, + { + "tcId" : 126, + "comment" : "r is larger than n", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325560000000000000000000000000000000000000000000000000000000000000006", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "S-QXgJcALw3qto8NmhMODtM6Z5XQKiB5bbg0RLA34Tk", + "y" : "IPEwUeDuzc_OTazqD1DR8kfKpmnxk8G0B1tRriltLVY" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "044be4178097002f0deab68f0d9a130e0ed33a6795d02a20796db83444b037e13920f13051e0eecdcfce4dacea0f50d1f247caa669f193c1b4075b51ae296d2d56", + "wx" : "4be4178097002f0deab68f0d9a130e0ed33a6795d02a20796db83444b037e139", + "wy" : "20f13051e0eecdcfce4dacea0f50d1f247caa669f193c1b4075b51ae296d2d56" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200044be4178097002f0deab68f0d9a130e0ed33a6795d02a20796db83444b037e13920f13051e0eecdcfce4dacea0f50d1f247caa669f193c1b4075b51ae296d2d56", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAES+QXgJcALw3qto8NmhMODtM6Z5XQ\nKiB5bbg0RLA34Tkg8TBR4O7Nz85NrOoPUNHyR8qmafGTwbQHW1GuKW0tVg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 127, + "comment" : "s is larger than n", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000005ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc75fbd8", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "0Pc3kiA3Fq_UvkMp-qSNJp8VMT67ujedd4PJe_PokNk", + "y" : "lx9KMgZgW-wheCv14nXHFEF-j1ZlSea8aGkNI2PInME" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04d0f73792203716afd4be4329faa48d269f15313ebbba379d7783c97bf3e890d9971f4a3206605bec21782bf5e275c714417e8f566549e6bc68690d2363c89cc1", + "wx" : "00d0f73792203716afd4be4329faa48d269f15313ebbba379d7783c97bf3e890d9", + "wy" : "00971f4a3206605bec21782bf5e275c714417e8f566549e6bc68690d2363c89cc1" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004d0f73792203716afd4be4329faa48d269f15313ebbba379d7783c97bf3e890d9971f4a3206605bec21782bf5e275c714417e8f566549e6bc68690d2363c89cc1", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0Pc3kiA3Fq/UvkMp+qSNJp8VMT67\nujedd4PJe/PokNmXH0oyBmBb7CF4K/XidccUQX6PVmVJ5rxoaQ0jY8icwQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 128, + "comment" : "small r and s^-1", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000000000000000000000000001008f1e3c7862c58b16bb76eddbb76eddbb516af4f63f2d74d76e0d28c9bb75ea88", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "SDiyvjWmJ2qA754igUD52bls6Dt6JU9xzN67uAVM4F8", + "y" : "-py8EjyRmxngAjgZjQQGkEO9ZgqCiBQFH8uKrHOKbGs" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "044838b2be35a6276a80ef9e228140f9d9b96ce83b7a254f71ccdebbb8054ce05ffa9cbc123c919b19e00238198d04069043bd660a828814051fcb8aac738a6c6b", + "wx" : "4838b2be35a6276a80ef9e228140f9d9b96ce83b7a254f71ccdebbb8054ce05f", + "wy" : "00fa9cbc123c919b19e00238198d04069043bd660a828814051fcb8aac738a6c6b" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200044838b2be35a6276a80ef9e228140f9d9b96ce83b7a254f71ccdebbb8054ce05ffa9cbc123c919b19e00238198d04069043bd660a828814051fcb8aac738a6c6b", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDiyvjWmJ2qA754igUD52bls6Dt6\nJU9xzN67uAVM4F/6nLwSPJGbGeACOBmNBAaQQ71mCoKIFAUfy4qsc4psaw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 129, + "comment" : "smallish r and s^-1", + "msg" : "313233343030", + "sig" : "000000000000000000000000000000000000000000000000002d9b4d347952d6ef3043e7329581dbb3974497710ab11505ee1c87ff907beebadd195a0ffe6d7a", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "c5OYPKMKUgu8R4PcmWB0aqtETvUgwKjncRGapOdLD2Q", + "y" : "6de-GrAaC_Ym5wmGPmpIbbrzJ5OvzPd04sbNJ7GFdSY" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "047393983ca30a520bbc4783dc9960746aab444ef520c0a8e771119aa4e74b0f64e9d7be1ab01a0bf626e709863e6a486dbaf32793afccf774e2c6cd27b1857526", + "wx" : "7393983ca30a520bbc4783dc9960746aab444ef520c0a8e771119aa4e74b0f64", + "wy" : "00e9d7be1ab01a0bf626e709863e6a486dbaf32793afccf774e2c6cd27b1857526" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200047393983ca30a520bbc4783dc9960746aab444ef520c0a8e771119aa4e74b0f64e9d7be1ab01a0bf626e709863e6a486dbaf32793afccf774e2c6cd27b1857526", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEc5OYPKMKUgu8R4PcmWB0aqtETvUg\nwKjncRGapOdLD2Tp174asBoL9ibnCYY+akhtuvMnk6/M93Tixs0nsYV1Jg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 130, + "comment" : "100-bit r and small s^-1", + "msg" : "313233343030", + "sig" : "000000000000000000000000000000000000001033e67e37b32b445580bf4eff8b748b74000000008b748b748b748b7466e769ad4a16d3dcd87129b8e91d1b4d", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "WsMxoRA_6WZpc3nzVqk381BYigVHfjCIUbilAtXfzcU", + "y" : "_pmT30tXk5srjaCVv215QmUgTP4DvplaAuZdQIyHHAs" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045ac331a1103fe966697379f356a937f350588a05477e308851b8a502d5dfcdc5fe9993df4b57939b2b8da095bf6d794265204cfe03be995a02e65d408c871c0b", + "wx" : "5ac331a1103fe966697379f356a937f350588a05477e308851b8a502d5dfcdc5", + "wy" : "00fe9993df4b57939b2b8da095bf6d794265204cfe03be995a02e65d408c871c0b" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045ac331a1103fe966697379f356a937f350588a05477e308851b8a502d5dfcdc5fe9993df4b57939b2b8da095bf6d794265204cfe03be995a02e65d408c871c0b", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWsMxoRA/6WZpc3nzVqk381BYigVH\nfjCIUbilAtXfzcX+mZPfS1eTmyuNoJW/bXlCZSBM/gO+mVoC5l1AjIccCw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 131, + "comment" : "small r and 100 bit s^-1", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000100ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "HSCb6N4t6HcJWjmdOQTHTMRY2Sbie7jljl6uV2fEFQk", + "y" : "3VngTCFPexjc41H8KlSYk6aGDoAWPzjMYKTyydBA2Mk" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "041d209be8de2de877095a399d3904c74cc458d926e27bb8e58e5eae5767c41509dd59e04c214f7b18dce351fc2a549893a6860e80163f38cc60a4f2c9d040d8c9", + "wx" : "1d209be8de2de877095a399d3904c74cc458d926e27bb8e58e5eae5767c41509", + "wy" : "00dd59e04c214f7b18dce351fc2a549893a6860e80163f38cc60a4f2c9d040d8c9" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200041d209be8de2de877095a399d3904c74cc458d926e27bb8e58e5eae5767c41509dd59e04c214f7b18dce351fc2a549893a6860e80163f38cc60a4f2c9d040d8c9", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHSCb6N4t6HcJWjmdOQTHTMRY2Sbi\ne7jljl6uV2fEFQndWeBMIU97GNzjUfwqVJiTpoYOgBY/OMxgpPLJ0EDYyQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 132, + "comment" : "100-bit r and s^-1", + "msg" : "313233343030", + "sig" : "00000000000000000000000000000000000000062522bbd3ecbe7c39e93e7c25ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "CDU5--5EYl46yq-i_LQTSTks7wYzobj6vs7gwTOxDpk", + "y" : "kVwevnvwDfhTUZZ3ClgEeuKkAvJjJrt9QdTXYWM3kR4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e", + "wx" : "083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99", + "wy" : "00915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECDU5++5EYl46yq+i/LQTSTks7wYz\nobj6vs7gwTOxDpmRXB6+e/AN+FNRlncKWAR64qQC8mMmu31B1NdhYzeRHg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 133, + "comment" : "r and s^-1 are close to n", + "msg" : "313233343030", + "sig" : "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5555555550000000055555555555555553ef7a8e48d07df81a693439654210c70", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "ius2inAnpNZKveo3OQwMHWom85ni2XNN4es9Dhk3OHQ", + "y" : "Bb0Tg0cV4duum4dc8HvVXhtmkcf3U2rvOxm_ekrfV20" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "048aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e1937387405bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d", + "wx" : "008aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e19373874", + "wy" : "05bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200048aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e1937387405bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEius2inAnpNZKveo3OQwMHWom85ni\n2XNN4es9Dhk3OHQFvRODRxXh266bh1zwe9VeG2aRx/dTau87Gb96St9XbQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 134, + "comment" : "s == 1", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c700000000000000000000000000000000000000000000000000000000000000001", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 135, + "comment" : "s == 0", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c700000000000000000000000000000000000000000000000000000000000000000", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "tTPUaV3VuMXgd1flXm5Rb34siPoCOeI_YOjsB91w8oc", + "y" : "GxNO5YzFgyeEVoY_M8OoXYgffUo5hQFD4p1OrwCa_kc" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f2871b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47", + "wx" : "00b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f287", + "wy" : "1b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f2871b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtTPUaV3VuMXgd1flXm5Rb34siPoC\nOeI/YOjsB91w8ocbE07ljMWDJ4RWhj8zw6hdiB99SjmFAUPinU6vAJr+Rw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 136, + "comment" : "point at infinity during verify", + "msg" : "313233343030", + "sig" : "7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8555555550000000055555555555555553ef7a8e48d07df81a693439654210c70", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "9Q03G5G_sdfRThMjUjvDqoy_LFf54oTeYoyLRTZ4e4Y", + "y" : "-UrYh6yU1SckfNLn0MixKRxVPJcwQFOAsUy7IJ9fot0" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd", + "wx" : "00f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86", + "wy" : "00f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Q03G5G/sdfRThMjUjvDqoy/LFf5\n4oTeYoyLRTZ4e4b5StiHrJTVJyR80ufQyLEpHFU8lzBAU4CxTLsgn1+i3Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 137, + "comment" : "edge case for signature malleability", + "msg" : "313233343030", + "sig" : "7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a97fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "aOxuKY6v4WU5FWzlehSwSnBHwiG6_DpYLq6w2FfE2UY", + "y" : "l77RrxeFARf9s5sjJPIgpWmO0WxCaiczW7OFrIym-zA" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0468ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d94697bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30", + "wx" : "68ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d946", + "wy" : "0097bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000468ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d94697bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOxuKY6v4WU5FWzlehSwSnBHwiG6\n/DpYLq6w2FfE2UaXvtGvF4UBF/2zmyMk8iClaY7RbEJqJzNbs4WsjKb7MA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 138, + "comment" : "edge case for signature malleability", + "msg" : "313233343030", + "sig" : "7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a97fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "adoDZHNNLlMP7OlAGSZf77eBoPGwj2yIl732VXknyLg", + "y" : "ZtLTx9zVGLI9cmlg8Gmtcakz2G74q7zOiyD3HiqEcAI" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0469da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b866d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002", + "wx" : "69da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b8", + "wy" : "66d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000469da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b866d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEadoDZHNNLlMP7OlAGSZf77eBoPGw\nj2yIl732VXknyLhm0tPH3NUYsj1yaWDwaa1xqTPYbvirvM6LIPceKoRwAg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 139, + "comment" : "u1 == 1", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c70bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "2K3AACOo7cAlduK2Pj4wYhpHHisjIGIBh78GehrB_zI", + "y" : "M-K1DsCYB6zLNhMf_5XtEqCahrTqlpCqMoYVdrojYuE" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff3233e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1", + "wx" : "00d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff32", + "wy" : "33e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff3233e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2K3AACOo7cAlduK2Pj4wYhpHHisj\nIGIBh78GehrB/zIz4rUOwJgHrMs2Ex//le0SoJqGtOqWkKoyhhV2uiNi4Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 140, + "comment" : "u1 == n - 1", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c7044a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "NiOslzztClb6bYgvA6fVx-3KAs_HskAfqzaQ2-dat4U", + "y" : "jbBpCOZLKGE9pyV-c385eT2o5xO6BkO5LpuzJSvn-P4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "043623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab7858db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe", + "wx" : "3623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab785", + "wy" : "008db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200043623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab7858db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENiOslzztClb6bYgvA6fVx+3KAs/H\nskAfqzaQ2+dat4WNsGkI5ksoYT2nJX5zfzl5PajnE7oGQ7kum7MlK+f4/g==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 141, + "comment" : "u2 == 1", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c70555555550000000055555555555555553ef7a8e48d07df81a693439654210c70", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "zwTqd-liJSPYlLk_9S3DAnsxlZUDtvo4kOXgQmP5IvE", + "y" : "6FKPt8AGs5g8i4QA5XtO1xdAwvOXVDiCEZm-3q7Ksuk" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9", + "wx" : "00cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1", + "wy" : "00e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzwTqd+liJSPYlLk/9S3DAnsxlZUD\ntvo4kOXgQmP5IvHoUo+3wAazmDyLhADle07XF0DC85dUOIIRmb7ersqy6Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 142, + "comment" : "u2 == n - 1", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c70aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "23osihq1c-WSncJAd7UI1-aD1JInmWvaPp942-_3c1A", + "y" : "T0F_O8mogHXC4KrdWhMxFzDPfMdqgvEaNurwimyZogY" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff773504f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206", + "wx" : "00db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff77350", + "wy" : "4f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff773504f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE23osihq1c+WSncJAd7UI1+aD1JIn\nmWvaPp942+/3c1BPQX87yaiAdcLgqt1aEzEXMM98x2qC8Ro26vCKbJmiBg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 143, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde91e1ba60fdedb76a46bcb51dc0b8b4b7e019f0a28721885fa5d3a8196623397", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "3q0Rx6WzloYvIZdNxHUvre_5lO_pu9BatBN2XqgLbh8", + "y" : "HePwZA6Kxu3Pic_1PEDiZbuUB4o0NzbfB6oDGPx_4f8" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff", + "wx" : "00dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f", + "wy" : "1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3q0Rx6WzloYvIZdNxHUvre/5lO/p\nu9BatBN2XqgLbh8d4/BkDorG7c+Jz/U8QOJlu5QHijQ3Nt8HqgMY/H/h/w==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 144, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdea5843ffeb73af94313ba4831b53fe24f799e525b1e8e8c87b59b95b430ad9", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "0LxHLg18geuu06bvlsGGE7sf6m-ZQyb76A4A395nx-k", + "y" : "mGxyPqSEPUg4m5RvZK1WyDrXD_F7qFM1Zn0bufphnv0" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd", + "wx" : "00d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9", + "wy" : "00986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0LxHLg18geuu06bvlsGGE7sf6m+Z\nQyb76A4A395nx+mYbHI+pIQ9SDiblG9krVbIOtcP8XuoUzVmfRu5+mGe/Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 145, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd03ffcabf2f1b4d2a65190db1680d62bb994e41c5251cd73b3c3dfc5e5bafc035", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "oKRMqUfWairLc2AIucCNGrKtA3duAmQPeEldRY3VHDI", + "y" : "Yzf-XPjEYEsfHECdwthy1ClKR2JCDfQ6MKI5LkBCat0" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c326337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add", + "wx" : "00a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c32", + "wy" : "6337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c326337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoKRMqUfWairLc2AIucCNGrKtA3du\nAmQPeEldRY3VHDJjN/5c+MRgSx8cQJ3C2HLUKUpHYkIN9DowojkuQEJq3Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 146, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4dfbc401f971cd304b33dfdb17d0fed0fe4c1a88ae648e0d2847f74977534989", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "ycIRUpDQCLRftl-tD2AjiSmMJUILd1AZ1Ctiw86Klrc", + "y" : "OHfSWoCA3ALZh8pzDwQFwsnb76xG-eYBzD8G6XE5c_0" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b73877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd", + "wx" : "00c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b7", + "wy" : "3877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b73877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEycIRUpDQCLRftl+tD2AjiSmMJUIL\nd1AZ1Ctiw86Klrc4d9JagIDcAtmHynMPBAXCydvvrEb55gHMPwbpcTlz/Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 147, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbc4024761cd2ffd43dfdb17d0fed112b988977055cd3a8e54971eba9cda5ca71", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "Xsoe9MKH3dxmuLzPG4jookwAGJYvPF5--oO8Gl_2Az4", + "y" : "XnnEyywkW4xFq9zoqOTadY2SpgfDLNQH7K7yLxyTSnE" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71", + "wx" : "5eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e", + "wy" : "5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXsoe9MKH3dxmuLzPG4jookwAGJYv\nPF5++oO8Gl/2Az5eecTLLCRbjEWr3Oio5Np1jZKmB8Ms1AfsrvIvHJNKcQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 148, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd788048ed39a5ffa77bfb62fa1fda2257742bf35d128fb3459f2a0c909ee86f91", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "XKqgMOf98OSTa8erWpY1PgoB5BMMP4vyLUc-MXAppHo", + "y" : "3ratxGL3BY8qINNx6XAiVOmyAWQgBbPO2pJrQrF4vvk" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47adeb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9", + "wx" : "5caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47a", + "wy" : "00deb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47adeb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXKqgMOf98OSTa8erWpY1PgoB5BMM\nP4vyLUc+MXAppHretq3EYvcFjyog03HpcCJU6bIBZCAFs87akmtCsXi++Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 149, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd476d9131fd381bd917d0fed112bc9e0a5924b5ed5b11167edd8b23582b3cb15e", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "wv0gusBuVVu4rAzmnrHqIPg6H8NQHIpmRpsaMfYZsJg", + "y" : "YjcFB3n1K2Fb17jXaiX8lcou0yUlx18n_8h6w5fmy68" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b0986237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf", + "wx" : "00c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b098", + "wy" : "6237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b0986237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwv0gusBuVVu4rAzmnrHqIPg6H8NQ\nHIpmRpsaMfYZsJhiNwUHefUrYVvXuNdqJfyVyi7TJSXHXyf/yHrDl+bLrw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 150, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8374253e3e21bd154448d0a8f640fe46fafa8b19ce78d538f6cc0a19662d3601", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "P9ahyn93-zsLvnJsNyAQBoQm4R6mrnjOF77a5LuobO0", + "y" : "A85VFkBr-M-quHRerBzWkBitb1C1Rhhy3fxW4Ns8j_Q" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "043fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4", + "wx" : "3fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced", + "wy" : "03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200043fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEP9ahyn93+zsLvnJsNyAQBoQm4R6m\nrnjOF77a5LuobO0DzlUWQGv4z6q4dF6sHNaQGK1vULVGGHLd/Fbg2zyP9A==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 151, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd357cfd3be4d01d413c5b9ede36cba5452c11ee7fe14879e749ae6a2d897a52d6", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "nLjlHielrjtiSmDW3DJzTkmJ2yDpvKPt4e33sIaRERQ", + "y" : "tMEEqzxnfks21lVuitX1I0EKGfLid6qJX8VzIrRCdUQ" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "049cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544", + "wx" : "009cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114", + "wy" : "00b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200049cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnLjlHielrjtiSmDW3DJzTkmJ2yDp\nvKPt4e33sIaRERS0wQSrPGd+SzbWVW6K1fUjQQoZ8uJ3qolfxXMitEJ1RA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 152, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd29798c5c0ee287d4a5e8e6b799fd86b8df5225298e6ffc807cd2f2bc27a0a6d8", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "o-UsFW3K8QUCYgt5VbwrQLx47z1WnhIjwmJRLY9JYCo", + "y" : "SiA58xwQlwJK08yG5XMh3gMjVUY0hhZM8ZKUSXffFH8" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f", + "wx" : "00a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a", + "wy" : "4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo+UsFW3K8QUCYgt5VbwrQLx47z1W\nnhIjwmJRLY9JYCpKIDnzHBCXAkrTzIblcyHeAyNVRjSGFkzxkpRJd98Ufw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 153, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0b70f22c781092452dca1a5711fa3a5a1f72add1bf52c2ff7cae4820b30078dd", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "8Zt4kocg1b7o5nD7kAEPsVw3v5G1ilFXw_PAWbJlXog", + "y" : "z3AeyWL7ShHc8nP13DV-WEaFYMfP65QtB0q9QykmBQk" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509", + "wx" : "00f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88", + "wy" : "00cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Zt4kocg1b7o5nD7kAEPsVw3v5G1\nilFXw/PAWbJlXojPcB7JYvtKEdzyc/XcNX5YRoVgx8/rlC0HSr1DKSYFCQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 154, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd16e1e458f021248a5b9434ae23f474b43ee55ba37ea585fef95c90416600f1ba", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "g6dERZ7N-wGlz1KyegW7czdILSQvI117TLiTRVRckKg", + "y" : "wF1JM3uWSYEyh96f_pA1X9kF3188MpRYKBIfN8xQ3m4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0483a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e", + "wx" : "0083a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8", + "wy" : "00c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000483a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEg6dERZ7N+wGlz1KyegW7czdILSQv\nI117TLiTRVRckKjAXUkze5ZJgTKH3p/+kDVf2QXfXzwylFgoEh83zFDebg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 155, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd2252d6856831b6cf895e4f0535eeaf0e5e5809753df848fe760ad86219016a97", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "3RPGs0xWmC3a4STwOd_SP0sZu-iM7o5SiuUeXW86Idc", + "y" : "v61MLm8mP-XrWcqXTQOfwOTDNFaS-1Mgva5L07QqRf8" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff", + "wx" : "00dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7", + "wy" : "00bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3RPGs0xWmC3a4STwOd/SP0sZu+iM\n7o5SiuUeXW86Ide/rUwubyY/5etZypdNA5/A5MM0VpL7UyC9rkvTtCpF/w==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 156, + "comment" : "edge case for u1", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd81ffe55f178da695b28c86d8b406b15dab1a9e39661a3ae017fbe390ac0972c3", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "Z-b2Wc3ehpovZfCU6U5bTfrWNrv5UZL-7tAbDz3rdGA", + "y" : "o34KUfJYt661Hf5ZL1z9VoW75YcSyNkjPGKIZDfDi6A" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0467e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0", + "wx" : "67e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460", + "wy" : "00a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000467e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+b2Wc3ehpovZfCU6U5bTfrWNrv5\nUZL+7tAbDz3rdGCjfgpR8li3rrUd/lkvXP1WhbvlhxLI2SM8YohkN8OLoA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 157, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "LrZBJQWuwFxlRfApkyCH5JDQVRHo7B9Zlhe7Nn-eyq8", + "y" : "gF9R78xIA0A_mxrgEkiQ8GpD_tzdsxgw9maa8pKJXLA" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "042eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0", + "wx" : "2eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf", + "wy" : "00805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200042eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELrZBJQWuwFxlRfApkyCH5JDQVRHo\n7B9Zlhe7Nn+eyq+AX1HvzEgDQD+bGuASSJDwakP+3N2zGDD2ZprykolcsA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 158, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "hNtkWGjqs146n9gOBW4uhVQ146a2jXWlCoVGJf4NfzU", + "y" : "bSWJrGVe3JoR7z4HXt3amr-S5yFxVw73v0Oi7jkzjP4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0484db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f356d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe", + "wx" : "0084db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f35", + "wy" : "6d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000484db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f356d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhNtkWGjqs146n9gOBW4uhVQ146a2\njXWlCoVGJf4NfzVtJYmsZV7cmhHvPgde3dqav5LnIXFXDve/Q6LuOTOM/g==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 159, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "kbnkfFYnhmLXXAmDsiyo6mqlBZt6L_djfrKXXjhq1mM", + "y" : "SaqP8oPQ93wY1tEdwGIWX9E8PAMQZ5wUCDAqFoVOz70" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0491b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad66349aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd", + "wx" : "0091b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad663", + "wy" : "49aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000491b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad66349aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkbnkfFYnhmLXXAmDsiyo6mqlBZt6\nL/djfrKXXjhq1mNJqo/yg9D3fBjW0R3AYhZf0Tw8AxBnnBQIMCoWhU7PvQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 160, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "8-wvE8rwTQGStH-0xTEfttTcawqegC5TJ_fsXujkg00", + "y" : "-X4-Rot9Dbhn1uz-geKw-VMd-H79tHwTOKwyH-_lpDI" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834df97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432", + "wx" : "00f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834d", + "wy" : "00f97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834df97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8+wvE8rwTQGStH+0xTEfttTcawqe\ngC5TJ/fsXujkg035fj5Gi30NuGfW7P6B4rD5Ux34fv20fBM4rDIf7+WkMg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 161, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "2SsgCu_Ktqx9r9msry-hCzGAI1uPRrRQPkaTxnD8zIg", + "y" : "XvLzrr9bMXR1M2JWdo98Ge-3NS0n5MzK3IW2uKuSLHI" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc885ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72", + "wx" : "00d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc88", + "wy" : "5ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc885ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2SsgCu/Ktqx9r9msry+hCzGAI1uP\nRrRQPkaTxnD8zIhe8vOuv1sxdHUzYlZ2j3wZ77c1LSfkzMrchba4q5Iscg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 162, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "Cog2HrkuzKJiWzjl-Yu6u5a_F5s9dvxIFAo7zYgVI80", + "y" : "5r31YDP4SlBUA1WXN12QhmqiyWuGpBzPbt6_RymK1Ik" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "040a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cde6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489", + "wx" : "0a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cd", + "wy" : "00e6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200040a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cde6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECog2HrkuzKJiWzjl+Yu6u5a/F5s9\ndvxIFAo7zYgVI83mvfVgM/hKUFQDVZc3XZCGaqLJa4akHM9u3r9HKYrUiQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 163, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "0PsXzNj6_oJ-DBr8XY2ANm4rIOfxSlY6K6UEadhDdeg", + "y" : "aGEladOeK7n1VDVVZGRt6ZrGAsxjSc-MHiNqfedjfZM" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e868612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93", + "wx" : "00d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e8", + "wy" : "68612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e868612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0PsXzNj6/oJ+DBr8XY2ANm4rIOfx\nSlY6K6UEadhDdehoYSVp054rufVUNVVkZG3pmsYCzGNJz4weI2p952N9kw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 164, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "g28zu8HcDT06u87w2R8R4qxBgQdsmvCiKx5DCdPtsnY", + "y" : "mrRD_2-QHjDHc4Z1gpl8K-wrDLgSDXYCNvOpW76IH3U" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb2769ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75", + "wx" : "00836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb276", + "wy" : "009ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb2769ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEg28zu8HcDT06u87w2R8R4qxBgQds\nmvCiKx5DCdPtsnaatEP/b5AeMMdzhnWCmXwr7CsMuBINdgI286lbvogfdQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 165, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "kvmfvpc-1KKZcZuu5LQydBI3A03sjXK6UQPLM-Vf7rg", + "y" : "Az3Q6RE0xzQXSInz688behrAV2cokoDuenlM69bmlpc" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0492f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697", + "wx" : "0092f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8", + "wy" : "033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000492f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkvmfvpc+1KKZcZuu5LQydBI3A03s\njXK6UQPLM+Vf7rgDPdDpETTHNBdIifPrzxt6GsBXZyiSgO56eUzr1uaWlw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 166, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "01uljaMBl9N45hjsD6fi4tEs_9c-u7IEnRMLukNK8J4", + "y" : "_4OYbmh15B6kMrdYWkmzpsd8uzxHkZ-OgodMeUY1wdI" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09eff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2", + "wx" : "00d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09e", + "wy" : "00ff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09eff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE01uljaMBl9N45hjsD6fi4tEs/9c+\nu7IEnRMLukNK8J7/g5huaHXkHqQyt1haSbOmx3y7PEeRn46Ch0x5RjXB0g==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 167, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "hlHOSQ8bRtc_P_R1FJvikTZpczSlGdfdqwclyNB5MiQ", + "y" : "4RxlvYypLci8mugpEfC1J1HOId2QA65gkAvYJfWQzCg" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "048651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28", + "wx" : "008651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224", + "wy" : "00e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200048651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhlHOSQ8bRtc/P/R1FJvikTZpczSl\nGdfdqwclyNB5MiThHGW9jKktyLya6CkR8LUnUc4h3ZADrmCQC9gl9ZDMKA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 168, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "bY4bEsgxoNqHlWUP-V8QHtkh2eL3KxWxzaypgmuc_G0", + "y" : "721j4rxcCJVwOUpLyfiS1ebHpqY3sgRppYwQatSGvzc" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "046d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6def6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37", + "wx" : "6d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6d", + "wy" : "00ef6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200046d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6def6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbY4bEsgxoNqHlWUP+V8QHtkh2eL3\nKxWxzaypgmuc/G3vbWPivFwIlXA5SkvJ+JLV5sempjeyBGmljBBq1Ia/Nw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 169, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "CuWAuukztO8pl8vbsJIjKMqaQQ9ieg99_yTLTZIOFUI", + "y" : "iRHn-Mw2WoqI64FCGjYczCuZ4wnY3Nmpi6g8OUnYk-M" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "040ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e15428911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3", + "wx" : "0ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e1542", + "wy" : "008911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200040ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e15428911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECuWAuukztO8pl8vbsJIjKMqaQQ9i\neg99/yTLTZIOFUKJEef4zDZaiojrgUIaNhzMK5njCdjc2amLqDw5SdiT4w==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 170, + "comment" : "edge case for u2", + "msg" : "313233343030", + "sig" : "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "W4Ev1SGq-mmDWoSczm-962mDtELSRE_nDhNMAn_EaWM", + "y" : "g4pA8qNgkukATpLY2UDPVjhVDOZyzouNThXrpUmSSek" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9", + "wx" : "5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963", + "wy" : "00838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEW4Ev1SGq+mmDWoSczm+962mDtELS\nRE/nDhNMAn/EaWODikDyo2CS6QBOktjZQM9WOFUM5nLOi41OFeulSZJJ6Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 171, + "comment" : "point duplication during verification", + "msg" : "313233343030", + "sig" : "6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b", + "result" : "valid", + "flags" : [ + "PointDuplication" + ] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "W4Ev1SGq-mmDWoSczm-962mDtELSRE_nDhNMAn_EaWM", + "y" : "fHW_DFyfbRf_sW0nJr8wqceq8xqNMXRyseoUWrZtthY" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc469637c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616", + "wx" : "5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963", + "wy" : "7c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc469637c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEW4Ev1SGq+mmDWoSczm+962mDtELS\nRE/nDhNMAn/EaWN8db8MXJ9tF/+xbScmvzCpx6rzGo0xdHKx6hRatm22Fg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 172, + "comment" : "duplication bug", + "msg" : "313233343030", + "sig" : "6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b", + "result" : "invalid", + "flags" : [ + "PointDuplication" + ] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "at2oK5AmGw8xn6oNh4ZlprbaSX8JyQMXYiLDSs_vcqY", + "y" : "R-b1DcxArV2bWfdgK7Ii-tcaQb9eH530lZo2TGLkiNk" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "046adda82b90261b0f319faa0d878665a6b6da497f09c903176222c34acfef72a647e6f50dcc40ad5d9b59f7602bb222fad71a41bf5e1f9df4959a364c62e488d9", + "wx" : "6adda82b90261b0f319faa0d878665a6b6da497f09c903176222c34acfef72a6", + "wy" : "47e6f50dcc40ad5d9b59f7602bb222fad71a41bf5e1f9df4959a364c62e488d9" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200046adda82b90261b0f319faa0d878665a6b6da497f09c903176222c34acfef72a647e6f50dcc40ad5d9b59f7602bb222fad71a41bf5e1f9df4959a364c62e488d9", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEat2oK5AmGw8xn6oNh4ZlprbaSX8J\nyQMXYiLDSs/vcqZH5vUNzECtXZtZ92ArsiL61xpBv14fnfSVmjZMYuSI2Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 173, + "comment" : "point with x-coordinate 0", + "msg" : "313233343030", + "sig" : "0000000000000000000000000000000000000000000000000000000000000001555555550000000055555555555555553ef7a8e48d07df81a693439654210c70", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "L8oNCkeRTed-1W5-zMMnamARIMbfAGnIJcj2oByfOCA", + "y" : "ZfNFCh0XxrJJiaOb6xx97PyoOE-9wpRBjl2Aezxu194" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "042fca0d0a47914de77ed56e7eccc3276a601120c6df0069c825c8f6a01c9f382065f3450a1d17c6b24989a39beb1c7decfca8384fbdc294418e5d807b3c6ed7de", + "wx" : "2fca0d0a47914de77ed56e7eccc3276a601120c6df0069c825c8f6a01c9f3820", + "wy" : "65f3450a1d17c6b24989a39beb1c7decfca8384fbdc294418e5d807b3c6ed7de" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200042fca0d0a47914de77ed56e7eccc3276a601120c6df0069c825c8f6a01c9f382065f3450a1d17c6b24989a39beb1c7decfca8384fbdc294418e5d807b3c6ed7de", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEL8oNCkeRTed+1W5+zMMnamARIMbf\nAGnIJcj2oByfOCBl80UKHRfGskmJo5vrHH3s/Kg4T73ClEGOXYB7PG7X3g==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 174, + "comment" : "point with x-coordinate 0", + "msg" : "313233343030", + "sig" : "010000000000000000000000000000000000000000000000000000000000000000003333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "3YbTtfShPoURCDt4ACCBxT_0Z_EevZilGmM9t2Zl0lA", + "y" : "RdXIIAyJ8voQ2Ek0kibSHY367W_41cs-G34XR068GPc" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d25045d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7", + "wx" : "00dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d250", + "wy" : "45d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d25045d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3YbTtfShPoURCDt4ACCBxT/0Z/Ee\nvZilGmM9t2Zl0lBF1cggDIny+hDYSTSSJtIdjfrtb/jVyz4bfhdHTrwY9w==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 175, + "comment" : "comparison with point at infinity ", + "msg" : "313233343030", + "sig" : "555555550000000055555555555555553ef7a8e48d07df81a693439654210c703333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "T-pVsyyzKsoMEsTNCr-05ksPWlFuV4wBZZGpP1oPvMU", + "y" : "19P9ELK-ZoxUeyEva7FMiPD-zTiopLLHhe075izksoA" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "044fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280", + "wx" : "4fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5", + "wy" : "00d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200044fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET+pVsyyzKsoMEsTNCr+05ksPWlFu\nV4wBZZGpP1oPvMXX0/0Qsr5mjFR7IS9rsUyI8P7NOKiksseF7TvmLOSygA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 176, + "comment" : "extreme value for k and edgecase s", + "msg" : "313233343030", + "sig" : "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978555555550000000055555555555555553ef7a8e48d07df81a693439654210c70", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "xqdxUnAkIneSFwpvju5zW_Mrf5ivZp6tKZgC4y18MQc", + "y" : "vDtLXmWriHu9NDVys-VhkmH-Ogc-L_14QS9yaGfbWJ4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e", + "wx" : "00c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107", + "wy" : "00bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExqdxUnAkIneSFwpvju5zW/Mrf5iv\nZp6tKZgC4y18MQe8O0teZauIe700NXKz5WGSYf46Bz4v/XhBL3JoZ9tYng==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 177, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "hRwrutCOVOx6mvmfSfA2RNbsbVmyB_7JjehafRW5Vu8", + "y" : "zumWAoMEUHVoS0EL6ND3SUuRqiN59gcnMZ8Q3esP6dY" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956efcee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6", + "wx" : "00851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956ef", + "wy" : "00cee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956efcee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhRwrutCOVOx6mvmfSfA2RNbsbVmy\nB/7JjehafRW5Vu/O6ZYCgwRQdWhLQQvo0PdJS5GqI3n2BycxnxDd6w/p1g==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 178, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "9kF8imcFhOOIZ2lJ5T2n_FWRH_aDGNG_MGEgWssZxI8", + "y" : "jyt0PfNK0PcmdKy3UFkpeEd5zZrJFsNmnq1DAmq21D8" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f8f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f", + "wx" : "00f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f", + "wy" : "008f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f8f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9kF8imcFhOOIZ2lJ5T2n/FWRH/aD\nGNG/MGEgWssZxI+PK3Q980rQ9yZ0rLdQWSl4R3nNmskWw2aerUMCarbUPw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 179, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc476699783333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "UBQhJ3vkWl7v7GxjmTDWNgMlZa9CDPM3P1V_qn-KBkM", + "y" : "hnPWy2B24c_Nx9_nOEyOXKwI10UB8q5uicrRldCqE3E" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a06438673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371", + "wx" : "501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a0643", + "wy" : "008673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a06438673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUBQhJ3vkWl7v7GxjmTDWNgMlZa9C\nDPM3P1V/qn+KBkOGc9bLYHbhz83H3+c4TI5crAjXRQHyrm6JytGV0KoTcQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 180, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc4766997849249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "DZNb-f_BFaUnc19ynKikyiPuAaSJSt8ONBWshOgIuzQ", + "y" : "MZWjdi_qKe04kSvZ6mxP3nDDBQiTpDdYUM5h2C66M8U" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "040d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb343195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5", + "wx" : "0d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb34", + "wy" : "3195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200040d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb343195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDZNb+f/BFaUnc19ynKikyiPuAaSJ\nSt8ONBWshOgIuzQxlaN2L+op7TiRK9nqbE/ecMMFCJOkN1hQzmHYLrozxQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 181, + "comment" : "extreme value for k", + "msg" : "313233343030", + "sig" : "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc4766997816a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "Xln1Bwhka-iliTVQFDCOYLZo-2cBliBsQedI5k5NyiE", + "y" : "XeN_7lyXvK9xRNW0WZgvUu7q-98Dqsuv7zjiE2JKAd4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "045e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca215de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de", + "wx" : "5e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca21", + "wy" : "5de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200045e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca215de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXln1Bwhka+iliTVQFDCOYLZo+2cB\nliBsQedI5k5NyiFd43/uXJe8r3FE1bRZmC9S7ur73wOqy6/vOOITYkoB3g==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 182, + "comment" : "extreme value for k and edgecase s", + "msg" : "313233343030", + "sig" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296555555550000000055555555555555553ef7a8e48d07df81a693439654210c70", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "Fp-3lzJYQ_r_L3pbVEXani_WIm9--Q7wv-kkEEsC244", + "y" : "e7uN5mLHubHPmyL3ouWCvUbVgdaIeO-yuGGxMdih1mc" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667", + "wx" : "169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e", + "wy" : "7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFp+3lzJYQ/r/L3pbVEXani/WIm9+\n+Q7wv+kkEEsC2457u43mYse5sc+bIvei5YK9RtWB1oh477K4YbEx2KHWZw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 183, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "JxzYnAABQwlrYtTp5MqIWu8vcCPRiv_a-Le1SJgUh1Q", + "y" : "ChxulU4yEIQ1tV-jhbD3ZIGmCbkUnMtLArLKR_6OTaU" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b548981487540a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5", + "wx" : "271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b54898148754", + "wy" : "0a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b548981487540a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJxzYnAABQwlrYtTp5MqIWu8vcCPR\niv/a+Le1SJgUh1QKHG6VTjIQhDW1X6OFsPdkgaYJuRScy0sCsspH/o5NpQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 184, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "PQvH7Y8J0st920brwe15mrFWOpq4S_UkWHoiCv5JnBI", + "y" : "4i3Ds8EDgkpPN42WrbCkCKvxnOfWiqYkT3jLIW-j-N8" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "043d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df", + "wx" : "3d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12", + "wy" : "00e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200043d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPQvH7Y8J0st920brwe15mrFWOpq4\nS/UkWHoiCv5JnBLiLcOzwQOCSk83jZatsKQIq/Gc59aKpiRPeMshb6P43w==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 185, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2963333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "psiFreGkxWb5uwENBml0q7KBeX-nASiMchvL0jZjqbc", + "y" : "LkJLaQlXFo0ZOmCW_HeisASpx9Rn4Afh8gWEWPmK8xY" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b72e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316", + "wx" : "00a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b7", + "wy" : "2e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b72e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpsiFreGkxWb5uwENBml0q7KBeX+n\nASiMchvL0jZjqbcuQktpCVcWjRk6YJb8d6KwBKnH1GfgB+HyBYRY+YrzFg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 186, + "comment" : "extreme value for k and s^-1", + "msg" : "313233343030", + "sig" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29649249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "jTwsLDt2W6gonmrDgSVyolv3XfYth6tzMMO9utnr-lw", + "y" : "TGhFRC1mk1sjhXjUOuxU98qhYh0a8kHUYy4LeAxCP10" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "048d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d", + "wx" : "008d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c", + "wy" : "4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200048d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjTwsLDt2W6gonmrDgSVyolv3XfYt\nh6tzMMO9utnr+lxMaEVELWaTWyOFeNQ67FT3yqFiHRryQdRjLgt4DEI/XQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 187, + "comment" : "extreme value for k", + "msg" : "313233343030", + "sig" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29616a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpY", + "y" : "T-NC4v4af5uO5-tKfA-eFivOM1drMV7Oy7ZAaDe_UfU" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "046b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2964fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5", + "wx" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "wy" : "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200046b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2964fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaxfR8uEsQkf4vOblY6RA8ncDfYEt\n6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9Q==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 188, + "comment" : "testing point duplication", + "msg" : "313233343030", + "sig" : "bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 189, + "comment" : "testing point duplication", + "msg" : "313233343030", + "sig" : "44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpY", + "y" : "sBy9HAHlgGVxGBS1g_Bh6dQxzKmUzqExNEm_l8hArgo" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "046b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a", + "wx" : "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "wy" : "00b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200046b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaxfR8uEsQkf4vOblY6RA8ncDfYEt\n6zOg9KE5RdiYwpawHL0cAeWAZXEYFLWD8GHp1DHMqZTOoTE0Sb+XyECuCg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 190, + "comment" : "testing point duplication", + "msg" : "313233343030", + "sig" : "bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2", + "result" : "invalid", + "flags" : [] + }, + { + "tcId" : 191, + "comment" : "testing point duplication", + "msg" : "313233343030", + "sig" : "44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2", + "result" : "invalid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "BKrsc2NXJvIT-4qeZNo7hjLkFJWpRNAEW1IuunJA-tU", + "y" : "h9kxV5iqo6W6AXdXh87QXqr3tOCfyB1tGqVG6DZdUl0" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0404aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad587d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d", + "wx" : "04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5", + "wy" : "0087d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000404aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad587d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBKrsc2NXJvIT+4qeZNo7hjLkFJWp\nRNAEW1IuunJA+tWH2TFXmKqjpboBd1eHztBeqve04J/IHW0apUboNl1SXQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 192, + "comment" : "pseudorandom signature", + "msg" : "", + "sig" : "b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 193, + "comment" : "pseudorandom signature", + "msg" : "4d7367", + "sig" : "530bd6b0c9af2d69ba897f6b5fb59695cfbf33afe66dbadcf5b8d2a2a6538e23d85e489cb7a161fd55ededcedbf4cc0c0987e3e3f0f242cae934c72caa3f43e9", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 194, + "comment" : "pseudorandom signature", + "msg" : "313233343030", + "sig" : "a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 195, + "comment" : "pseudorandom signature", + "msg" : "0000000000000000000000000000000000000000", + "sig" : "986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb713dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "TzN8z9Z3JqgF5PFgCuKEnfOAfsoRc4Ajn72BaQAAAAA", + "y" : "7Z3qEkzIw5ZBZBHpiMMPQn61BK9DoxRs1d9-pgZm1oU" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "044f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685", + "wx" : "4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000", + "wy" : "00ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200044f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETzN8z9Z3JqgF5PFgCuKEnfOAfsoR\nc4Ajn72BaQAAAADtneoSTMjDlkFkEemIww9CfrUEr0OjFGzV336mBmbWhQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 196, + "comment" : "x-coordinate of the public key has many trailing 0's", + "msg" : "4d657373616765", + "sig" : "d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f19b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 197, + "comment" : "x-coordinate of the public key has many trailing 0's", + "msg" : "4d657373616765", + "sig" : "0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 198, + "comment" : "x-coordinate of the public key has many trailing 0's", + "msg" : "4d657373616765", + "sig" : "bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "PPA9YU2JOc_UmaB4c_rCgWGPBrj_h-gBXD9JcmUASTU", + "y" : "hPoXTXkccr8s44gKiWDdKnx6EzioL4Wp5Zzb3oAAAAA" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "043cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f49726500493584fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000", + "wx" : "3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935", + "wy" : "0084fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200043cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f49726500493584fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPPA9YU2JOc/UmaB4c/rCgWGPBrj/\nh+gBXD9JcmUASTWE+hdNeRxyvyzjiAqJYN0qfHoTOKgvhanlnNvegAAAAA==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 199, + "comment" : "y-coordinate of the public key has many trailing 0's", + "msg" : "4d657373616765", + "sig" : "664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 200, + "comment" : "y-coordinate of the public key has many trailing 0's", + "msg" : "4d657373616765", + "sig" : "4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b439638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 201, + "comment" : "y-coordinate of the public key has many trailing 0's", + "msg" : "4d657373616765", + "sig" : "e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "PPA9YU2JOc_UmaB4c_rCgWGPBrj_h-gBXD9JcmUASTU", + "y" : "ewXosYbjjUHTHHf1dp8i1YOF7MhX0HpWGmMkIX____8" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "043cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f4972650049357b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff", + "wx" : "3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935", + "wy" : "7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200043cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f4972650049357b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPPA9YU2JOc/UmaB4c/rCgWGPBrj/\nh+gBXD9JcmUASTV7BeixhuONQdMcd/V2nyLVg4XsyFfQelYaYyQhf////w==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 202, + "comment" : "y-coordinate of the public key has many trailing 1's", + "msg" : "4d657373616765", + "sig" : "1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 203, + "comment" : "y-coordinate of the public key has many trailing 1's", + "msg" : "4d657373616765", + "sig" : "b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 204, + "comment" : "y-coordinate of the public key has many trailing 1's", + "msg" : "4d657373616765", + "sig" : "b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "KCnDH6ouQA40TtlLyj_NBUWVbrz-itD236X_jv____8", + "y" : "oBqvrwAOUlhYVa-nZ2reKEETCZBS31fn6zvTfr65Ii4" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "042829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffffa01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e", + "wx" : "2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff", + "wy" : "00a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d030107034200042829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffffa01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKCnDH6ouQA40TtlLyj/NBUWVbrz+\nitD236X/jv////+gGq+vAA5SWFhVr6dnat4oQRMJkFLfV+frO9N+vrkiLg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 205, + "comment" : "x-coordinate of the public key has many trailing 1's", + "msg" : "4d657373616765", + "sig" : "d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b43dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 206, + "comment" : "x-coordinate of the public key has many trailing 1's", + "msg" : "4d657373616765", + "sig" : "5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af782c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 207, + "comment" : "x-coordinate of the public key has many trailing 1's", + "msg" : "4d657373616765", + "sig" : "96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "____-UgIHmoEWN2PnnOPJmX_kFmtaqwHCDGMTKmnpPU", + "y" : "Woq8ui3ahHQxHuVBSblzyuDA-4lVetC_eOZSmhZjvXM" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f55a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73", + "wx" : "00fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5", + "wy" : "5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f55a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE////+UgIHmoEWN2PnnOPJmX/kFmt\naqwHCDGMTKmnpPVairy6LdqEdDEe5UFJuXPK4MD7iVV60L945lKaFmO9cw==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 208, + "comment" : "x-coordinate of the public key is large", + "msg" : "4d657373616765", + "sig" : "766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 209, + "comment" : "x-coordinate of the public key is large", + "msg" : "4d657373616765", + "sig" : "c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 210, + "comment" : "x-coordinate of the public key is large", + "msg" : "4d657373616765", + "sig" : "d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "AAAAA_oV-WOUnV8DpvXH-G-eABXusjrrv_EXOTe6dI4", + "y" : "EJmHIHDo6HxVX6E2Wcyl1_rc_LACPqiJVIykivK6fnE" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "0400000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71", + "wx" : "03fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e", + "wy" : "1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d0301070342000400000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAAAAA/oV+WOUnV8DpvXH+G+eABXu\nsjrrv/EXOTe6dI4QmYcgcOjofFVfoTZZzKXX+tz8sAI+qIlUjKSK8rp+cQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 211, + "comment" : "x-coordinate of the public key is small", + "msg" : "4d657373616765", + "sig" : "b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 212, + "comment" : "x-coordinate of the public key is small", + "msg" : "4d657373616765", + "sig" : "6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f75939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 213, + "comment" : "x-coordinate of the public key is small", + "msg" : "4d657373616765", + "sig" : "efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "vLspFMefBF6qbsu8YSgWs75dLWeWcH2BJen4UcGK8BU", + "y" : "AAAAABNSu0oPoupMzrmrY91oSt5aESe88wCmmKcZO8I" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2", + "wx" : "00bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015", + "wy" : "1352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvLspFMefBF6qbsu8YSgWs75dLWeW\ncH2BJen4UcGK8BUAAAAAE1K7Sg+i6kzOuatj3WhK3loRJ7zzAKaYpxk7wg==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 214, + "comment" : "y-coordinate of the public key is small", + "msg" : "4d657373616765", + "sig" : "31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb070f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 215, + "comment" : "y-coordinate of the public key is small", + "msg" : "4d657373616765", + "sig" : "caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 216, + "comment" : "y-coordinate of the public key is small", + "msg" : "4d657373616765", + "sig" : "7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed8001859459450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa", + "result" : "valid", + "flags" : [] + } + ] + }, + { + "jwk" : { + "crv" : "P-256", + "kid" : "none", + "kty" : "EC", + "x" : "vLspFMefBF6qbsu8YSgWs75dLWeWcH2BJen4UcGK8BU", + "y" : "_____uytRLbwXRWzMUZUnCKXtSKl7thDDP9ZZ1jmxD0" + }, + "key" : { + "curve" : "secp256r1", + "keySize" : 256, + "type" : "EcPublicKey", + "uncompressed" : "04bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d", + "wx" : "00bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015", + "wy" : "00fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d" + }, + "keyDer" : "3059301306072a8648ce3d020106082a8648ce3d03010703420004bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d", + "keyPem" : "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvLspFMefBF6qbsu8YSgWs75dLWeW\ncH2BJen4UcGK8BX////+7K1EtvBdFbMxRlScIpe1IqXu2EMM/1lnWObEPQ==\n-----END PUBLIC KEY-----", + "sha" : "SHA-256", + "type" : "EcdsaP1363Verify", + "tests" : [ + { + "tcId" : 217, + "comment" : "y-coordinate of the public key is large", + "msg" : "4d657373616765", + "sig" : "d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b35689c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 218, + "comment" : "y-coordinate of the public key is large", + "msg" : "4d657373616765", + "sig" : "341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b3472b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469", + "result" : "valid", + "flags" : [] + }, + { + "tcId" : 219, + "comment" : "y-coordinate of the public key is large", + "msg" : "4d657373616765", + "sig" : "70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9", + "result" : "valid", + "flags" : [] + } + ] + } + ] +} diff --git a/test/utils/cryptography/wycheproof.jsonl b/test/utils/cryptography/wycheproof.jsonl deleted file mode 100644 index eb6dd5b8d51..00000000000 --- a/test/utils/cryptography/wycheproof.jsonl +++ /dev/null @@ -1,778 +0,0 @@ -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #1: signature malleability"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #3: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #5: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #8: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #9: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #10: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #11: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #12: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #13: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #14: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #15: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #16: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #17: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #18: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #19: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #20: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #21: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #22: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #23: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #24: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #25: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #26: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #27: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #28: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #29: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #30: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #31: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #32: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #33: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #34: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #35: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #36: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #37: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #38: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #39: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #40: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #41: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #42: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #43: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #44: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #45: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #46: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #47: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #48: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #49: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #50: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #51: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #52: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #53: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #54: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #55: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #56: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #57: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #58: Edge case for Shamir multiplication"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #59: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #60: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #61: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #62: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #63: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #64: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #65: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #66: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #67: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #68: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #69: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #70: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #71: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #72: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #73: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #74: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #75: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #76: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #77: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #78: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #79: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #80: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #81: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #82: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #83: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #84: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #85: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #86: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #87: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #88: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #89: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #90: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #91: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #92: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #93: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #94: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #95: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #96: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #97: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #98: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #99: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #100: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #101: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #102: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #103: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #104: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #105: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #106: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #107: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #108: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #109: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #110: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #111: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #112: special case hash"} -{"x":"0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103","y":"c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e","r":"000000000000000000000000000000004319055358e8617b0c46353d039cdaab","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #113: k*G has a large x-coordinate"} -{"x":"0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103","y":"c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #114: r too large"} -{"x":"ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c582204554","y":"19235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #115: r,s are large"} -{"x":"80984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c56","y":"11feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #116: r and s^-1 have a large Hamming weight"} -{"x":"4201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c05","y":"95c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #117: r and s^-1 have a large Hamming weight"} -{"x":"a71af64de5126a4a4e02b7922d66ce9415ce88a4c9d25514d91082c8725ac957","y":"5d47723c8fbe580bb369fec9c2665d8e30a435b9932645482e7c9f11e872296b","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #118: small r and s"} -{"x":"6627cec4f0731ea23fc2931f90ebe5b7572f597d20df08fc2b31ee8ef16b1572","y":"6170ed77d8d0a14fc5c9c3c4c9be7f0d3ee18f709bb275eaf2073e258fe694a5","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000003","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #120: small r and s"} -{"x":"5a7c8825e85691cce1f5e7544c54e73f14afc010cb731343262ca7ec5a77f5bf","y":"ef6edf62a4497c1bd7b147fb6c3d22af3c39bfce95f30e13a16d3d7b2812f813","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000005","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #122: small r and s"} -{"x":"cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c737","y":"70af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #124: small r and s"} -{"x":"cbe0c29132cd738364fedd603152990c048e5e2fff996d883fa6caca7978c737","y":"70af6a8ce44cb41224b2603606f4c04d188e80bff7cc31ad5189d4ab0d70e8c1","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632556","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #126: r is larger than n"} -{"x":"4be4178097002f0deab68f0d9a130e0ed33a6795d02a20796db83444b037e139","y":"20f13051e0eecdcfce4dacea0f50d1f247caa669f193c1b4075b51ae296d2d56","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc75fbd8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #127: s is larger than n"} -{"x":"d0f73792203716afd4be4329faa48d269f15313ebbba379d7783c97bf3e890d9","y":"971f4a3206605bec21782bf5e275c714417e8f566549e6bc68690d2363c89cc1","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"8f1e3c7862c58b16bb76eddbb76eddbb516af4f63f2d74d76e0d28c9bb75ea88","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #128: small r and s^-1"} -{"x":"4838b2be35a6276a80ef9e228140f9d9b96ce83b7a254f71ccdebbb8054ce05f","y":"fa9cbc123c919b19e00238198d04069043bd660a828814051fcb8aac738a6c6b","r":"000000000000000000000000000000000000000000000000002d9b4d347952d6","s":"ef3043e7329581dbb3974497710ab11505ee1c87ff907beebadd195a0ffe6d7a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #129: smallish r and s^-1"} -{"x":"7393983ca30a520bbc4783dc9960746aab444ef520c0a8e771119aa4e74b0f64","y":"e9d7be1ab01a0bf626e709863e6a486dbaf32793afccf774e2c6cd27b1857526","r":"000000000000000000000000000000000000001033e67e37b32b445580bf4eff","s":"8b748b74000000008b748b748b748b7466e769ad4a16d3dcd87129b8e91d1b4d","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #130: 100-bit r and small s^-1"} -{"x":"5ac331a1103fe966697379f356a937f350588a05477e308851b8a502d5dfcdc5","y":"fe9993df4b57939b2b8da095bf6d794265204cfe03be995a02e65d408c871c0b","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #131: small r and 100 bit s^-1"} -{"x":"1d209be8de2de877095a399d3904c74cc458d926e27bb8e58e5eae5767c41509","y":"dd59e04c214f7b18dce351fc2a549893a6860e80163f38cc60a4f2c9d040d8c9","r":"00000000000000000000000000000000000000062522bbd3ecbe7c39e93e7c25","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #132: 100-bit r and s^-1"} -{"x":"083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99","y":"915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #133: r and s^-1 are close to n"} -{"x":"8aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e19373874","y":"05bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #134: s == 1"} -{"x":"8aeb368a7027a4d64abdea37390c0c1d6a26f399e2d9734de1eb3d0e19373874","y":"05bd13834715e1dbae9b875cf07bd55e1b6691c7f7536aef3b19bf7a4adf576d","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #135: s == 0"} -{"x":"b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f287","y":"1b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #136: point at infinity during verify"} -{"x":"f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86","y":"f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #137: edge case for signature malleability"} -{"x":"68ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d946","y":"97bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #138: edge case for signature malleability"} -{"x":"69da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b8","y":"66d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #139: u1 == 1"} -{"x":"d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff32","y":"33e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #140: u1 == n - 1"} -{"x":"3623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab785","y":"8db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #141: u2 == 1"} -{"x":"cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1","y":"e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #142: u2 == n - 1"} -{"x":"db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff77350","y":"4f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e91e1ba60fdedb76a46bcb51dc0b8b4b7e019f0a28721885fa5d3a8196623397","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #143: edge case for u1"} -{"x":"dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f","y":"1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"fdea5843ffeb73af94313ba4831b53fe24f799e525b1e8e8c87b59b95b430ad9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #144: edge case for u1"} -{"x":"d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9","y":"986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"03ffcabf2f1b4d2a65190db1680d62bb994e41c5251cd73b3c3dfc5e5bafc035","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #145: edge case for u1"} -{"x":"a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c32","y":"6337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"4dfbc401f971cd304b33dfdb17d0fed0fe4c1a88ae648e0d2847f74977534989","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #146: edge case for u1"} -{"x":"c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b7","y":"3877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bc4024761cd2ffd43dfdb17d0fed112b988977055cd3a8e54971eba9cda5ca71","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #147: edge case for u1"} -{"x":"5eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e","y":"5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"788048ed39a5ffa77bfb62fa1fda2257742bf35d128fb3459f2a0c909ee86f91","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #148: edge case for u1"} -{"x":"5caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47a","y":"deb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"476d9131fd381bd917d0fed112bc9e0a5924b5ed5b11167edd8b23582b3cb15e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #149: edge case for u1"} -{"x":"c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b098","y":"6237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8374253e3e21bd154448d0a8f640fe46fafa8b19ce78d538f6cc0a19662d3601","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #150: edge case for u1"} -{"x":"3fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced","y":"03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"357cfd3be4d01d413c5b9ede36cba5452c11ee7fe14879e749ae6a2d897a52d6","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #151: edge case for u1"} -{"x":"9cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114","y":"b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"29798c5c0ee287d4a5e8e6b799fd86b8df5225298e6ffc807cd2f2bc27a0a6d8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #152: edge case for u1"} -{"x":"a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a","y":"4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"0b70f22c781092452dca1a5711fa3a5a1f72add1bf52c2ff7cae4820b30078dd","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #153: edge case for u1"} -{"x":"f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88","y":"cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"16e1e458f021248a5b9434ae23f474b43ee55ba37ea585fef95c90416600f1ba","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #154: edge case for u1"} -{"x":"83a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8","y":"c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2252d6856831b6cf895e4f0535eeaf0e5e5809753df848fe760ad86219016a97","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #155: edge case for u1"} -{"x":"dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7","y":"bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"81ffe55f178da695b28c86d8b406b15dab1a9e39661a3ae017fbe390ac0972c3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #156: edge case for u1"} -{"x":"67e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460","y":"a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #157: edge case for u2"} -{"x":"2eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf","y":"805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #158: edge case for u2"} -{"x":"84db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f35","y":"6d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #159: edge case for u2"} -{"x":"91b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad663","y":"49aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #160: edge case for u2"} -{"x":"f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834d","y":"f97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #161: edge case for u2"} -{"x":"d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc88","y":"5ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #162: edge case for u2"} -{"x":"0a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cd","y":"e6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #163: edge case for u2"} -{"x":"d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e8","y":"68612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #164: edge case for u2"} -{"x":"836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb276","y":"9ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #165: edge case for u2"} -{"x":"92f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8","y":"033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #166: edge case for u2"} -{"x":"d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09e","y":"ff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #167: edge case for u2"} -{"x":"8651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224","y":"e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #168: edge case for u2"} -{"x":"6d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6d","y":"ef6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #169: edge case for u2"} -{"x":"0ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e1542","y":"8911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #170: edge case for u2"} -{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #171: point duplication during verification"} -{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"7c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #172: duplication bug"} -{"x":"6adda82b90261b0f319faa0d878665a6b6da497f09c903176222c34acfef72a6","y":"47e6f50dcc40ad5d9b59f7602bb222fad71a41bf5e1f9df4959a364c62e488d9","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #173: point with x-coordinate 0"} -{"x":"dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d250","y":"45d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #175: comparison with point at infinity "} -{"x":"4fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5","y":"d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #176: extreme value for k and edgecase s"} -{"x":"c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107","y":"bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #177: extreme value for k and s^-1"} -{"x":"851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956ef","y":"cee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #178: extreme value for k and s^-1"} -{"x":"f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f","y":"8f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #179: extreme value for k and s^-1"} -{"x":"501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a0643","y":"8673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #180: extreme value for k and s^-1"} -{"x":"0d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb34","y":"3195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #181: extreme value for k"} -{"x":"5e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca21","y":"5de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #182: extreme value for k and edgecase s"} -{"x":"169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e","y":"7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #183: extreme value for k and s^-1"} -{"x":"271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b54898148754","y":"0a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #184: extreme value for k and s^-1"} -{"x":"3d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12","y":"e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #185: extreme value for k and s^-1"} -{"x":"a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b7","y":"2e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #186: extreme value for k and s^-1"} -{"x":"8d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c","y":"4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #187: extreme value for k"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #188: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #189: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #190: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #191: testing point duplication"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #192: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"530bd6b0c9af2d69ba897f6b5fb59695cfbf33afe66dbadcf5b8d2a2a6538e23","s":"d85e489cb7a161fd55ededcedbf4cc0c0987e3e3f0f242cae934c72caa3f43e9","hash":"dc1921946f4af96a2856e7be399007c9e807bdf4c5332f19f59ec9dd1bb8c7b3","valid":true,"msg":"4d7367","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #193: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #194: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #195: pseudorandom signature"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #196: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #197: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #198: x-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #199: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #200: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #201: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #202: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #203: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #204: y-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #205: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #206: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #207: x-coordinate of the public key has many trailing 1's"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #208: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #209: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #210: x-coordinate of the public key is large"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #211: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #212: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #213: x-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #214: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #215: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #216: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #217: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #218: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_p1363_test.json EcdsaP1363Verify SHA-256 #219: y-coordinate of the public key is large"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #1: signature malleability"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #2: Legacy:ASN encoding of s misses leading 0"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #3: valid"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"29a3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #118: modify first byte of integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e98","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #120: modify last byte of integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b491568475b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #121: modify last byte of integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"00b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #124: truncated integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #133: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #134: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #137: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f47aa2bbd0a4c384ee1493b1f518ada018ef05465583885980861905228a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #139: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #143: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #177: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #178: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #179: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #180: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #181: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #187: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #188: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #189: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #190: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #191: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #197: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #198: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #199: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #200: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #201: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #207: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #208: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #209: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #210: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #211: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #217: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #218: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #219: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #220: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #221: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #230: Edge case for Shamir multiplication"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #231: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #232: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #233: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #234: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #235: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #236: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #237: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #238: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #239: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #240: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #241: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #242: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #243: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #244: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #245: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #246: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #247: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #248: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #249: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #250: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #251: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #252: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #253: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #254: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #255: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #256: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #257: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #258: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #259: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #260: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #261: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #262: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #263: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #264: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #265: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #266: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #267: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #268: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #269: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #270: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #271: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #272: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #273: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #274: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #275: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #276: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #277: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #278: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #279: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #280: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #281: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #282: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #283: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #284: special case hash"} -{"x":"0ad99500288d466940031d72a9f5445a4d43784640855bf0a69874d2de5fe103","y":"c5011e6ef2c42dcd50d5d3d29f99ae6eba2c80c9244f4c5422f0979ff0c3ba5e","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #286: r too large"} -{"x":"ab05fd9d0de26b9ce6f4819652d9fc69193d0aa398f0fba8013e09c582204554","y":"19235271228c786759095d12b75af0692dd4103f19f6a8c32f49435a1e9b8d45","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #287: r,s are large"} -{"x":"80984f39a1ff38a86a68aa4201b6be5dfbfecf876219710b07badf6fdd4c6c56","y":"11feb97390d9826e7a06dfb41871c940d74415ed3cac2089f1445019bb55ed95","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #288: r and s^-1 have a large Hamming weight"} -{"x":"4201b4272944201c3294f5baa9a3232b6dd687495fcc19a70a95bc602b4f7c05","y":"95c37eba9ee8171c1bb5ac6feaf753bc36f463e3aef16629572c0c0a8fb0800e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #289: r and s^-1 have a large Hamming weight"} -{"x":"083539fbee44625e3acaafa2fcb41349392cef0633a1b8fabecee0c133b10e99","y":"915c1ebe7bf00df8535196770a58047ae2a402f26326bb7d41d4d7616337911e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #301: r and s^-1 are close to n"} -{"x":"b533d4695dd5b8c5e07757e55e6e516f7e2c88fa0239e23f60e8ec07dd70f287","y":"1b134ee58cc583278456863f33c3a85d881f7d4a39850143e29d4eaf009afe47","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #304: point at infinity during verify"} -{"x":"f50d371b91bfb1d7d14e1323523bc3aa8cbf2c57f9e284de628c8b4536787b86","y":"f94ad887ac94d527247cd2e7d0c8b1291c553c9730405380b14cbb209f5fa2dd","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #305: edge case for signature malleability"} -{"x":"68ec6e298eafe16539156ce57a14b04a7047c221bafc3a582eaeb0d857c4d946","y":"97bed1af17850117fdb39b2324f220a5698ed16c426a27335bb385ac8ca6fb30","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #306: edge case for signature malleability"} -{"x":"69da0364734d2e530fece94019265fefb781a0f1b08f6c8897bdf6557927c8b8","y":"66d2d3c7dcd518b23d726960f069ad71a933d86ef8abbcce8b20f71e2a847002","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #307: u1 == 1"} -{"x":"d8adc00023a8edc02576e2b63e3e30621a471e2b2320620187bf067a1ac1ff32","y":"33e2b50ec09807accb36131fff95ed12a09a86b4ea9690aa32861576ba2362e1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #308: u1 == n - 1"} -{"x":"3623ac973ced0a56fa6d882f03a7d5c7edca02cfc7b2401fab3690dbe75ab785","y":"8db06908e64b28613da7257e737f39793da8e713ba0643b92e9bb3252be7f8fe","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #309: u2 == 1"} -{"x":"cf04ea77e9622523d894b93ff52dc3027b31959503b6fa3890e5e04263f922f1","y":"e8528fb7c006b3983c8b8400e57b4ed71740c2f3975438821199bedeaecab2e9","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #310: u2 == n - 1"} -{"x":"db7a2c8a1ab573e5929dc24077b508d7e683d49227996bda3e9f78dbeff77350","y":"4f417f3bc9a88075c2e0aadd5a13311730cf7cc76a82f11a36eaf08a6c99a206","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e91e1ba60fdedb76a46bcb51dc0b8b4b7e019f0a28721885fa5d3a8196623397","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #311: edge case for u1"} -{"x":"dead11c7a5b396862f21974dc4752fadeff994efe9bbd05ab413765ea80b6e1f","y":"1de3f0640e8ac6edcf89cff53c40e265bb94078a343736df07aa0318fc7fe1ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"fdea5843ffeb73af94313ba4831b53fe24f799e525b1e8e8c87b59b95b430ad9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #312: edge case for u1"} -{"x":"d0bc472e0d7c81ebaed3a6ef96c18613bb1fea6f994326fbe80e00dfde67c7e9","y":"986c723ea4843d48389b946f64ad56c83ad70ff17ba85335667d1bb9fa619efd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"03ffcabf2f1b4d2a65190db1680d62bb994e41c5251cd73b3c3dfc5e5bafc035","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #313: edge case for u1"} -{"x":"a0a44ca947d66a2acb736008b9c08d1ab2ad03776e02640f78495d458dd51c32","y":"6337fe5cf8c4604b1f1c409dc2d872d4294a4762420df43a30a2392e40426add","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"4dfbc401f971cd304b33dfdb17d0fed0fe4c1a88ae648e0d2847f74977534989","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #314: edge case for u1"} -{"x":"c9c2115290d008b45fb65fad0f602389298c25420b775019d42b62c3ce8a96b7","y":"3877d25a8080dc02d987ca730f0405c2c9dbefac46f9e601cc3f06e9713973fd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bc4024761cd2ffd43dfdb17d0fed112b988977055cd3a8e54971eba9cda5ca71","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #315: edge case for u1"} -{"x":"5eca1ef4c287dddc66b8bccf1b88e8a24c0018962f3c5e7efa83bc1a5ff6033e","y":"5e79c4cb2c245b8c45abdce8a8e4da758d92a607c32cd407ecaef22f1c934a71","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"788048ed39a5ffa77bfb62fa1fda2257742bf35d128fb3459f2a0c909ee86f91","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #316: edge case for u1"} -{"x":"5caaa030e7fdf0e4936bc7ab5a96353e0a01e4130c3f8bf22d473e317029a47a","y":"deb6adc462f7058f2a20d371e9702254e9b201642005b3ceda926b42b178bef9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"476d9131fd381bd917d0fed112bc9e0a5924b5ed5b11167edd8b23582b3cb15e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #317: edge case for u1"} -{"x":"c2fd20bac06e555bb8ac0ce69eb1ea20f83a1fc3501c8a66469b1a31f619b098","y":"6237050779f52b615bd7b8d76a25fc95ca2ed32525c75f27ffc87ac397e6cbaf","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8374253e3e21bd154448d0a8f640fe46fafa8b19ce78d538f6cc0a19662d3601","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #318: edge case for u1"} -{"x":"3fd6a1ca7f77fb3b0bbe726c372010068426e11ea6ae78ce17bedae4bba86ced","y":"03ce5516406bf8cfaab8745eac1cd69018ad6f50b5461872ddfc56e0db3c8ff4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"357cfd3be4d01d413c5b9ede36cba5452c11ee7fe14879e749ae6a2d897a52d6","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #319: edge case for u1"} -{"x":"9cb8e51e27a5ae3b624a60d6dc32734e4989db20e9bca3ede1edf7b086911114","y":"b4c104ab3c677e4b36d6556e8ad5f523410a19f2e277aa895fc57322b4427544","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"29798c5c0ee287d4a5e8e6b799fd86b8df5225298e6ffc807cd2f2bc27a0a6d8","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #320: edge case for u1"} -{"x":"a3e52c156dcaf10502620b7955bc2b40bc78ef3d569e1223c262512d8f49602a","y":"4a2039f31c1097024ad3cc86e57321de032355463486164cf192944977df147f","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"0b70f22c781092452dca1a5711fa3a5a1f72add1bf52c2ff7cae4820b30078dd","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #321: edge case for u1"} -{"x":"f19b78928720d5bee8e670fb90010fb15c37bf91b58a5157c3f3c059b2655e88","y":"cf701ec962fb4a11dcf273f5dc357e58468560c7cfeb942d074abd4329260509","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"16e1e458f021248a5b9434ae23f474b43ee55ba37ea585fef95c90416600f1ba","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #322: edge case for u1"} -{"x":"83a744459ecdfb01a5cf52b27a05bb7337482d242f235d7b4cb89345545c90a8","y":"c05d49337b9649813287de9ffe90355fd905df5f3c32945828121f37cc50de6e","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2252d6856831b6cf895e4f0535eeaf0e5e5809753df848fe760ad86219016a97","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #323: edge case for u1"} -{"x":"dd13c6b34c56982ddae124f039dfd23f4b19bbe88cee8e528ae51e5d6f3a21d7","y":"bfad4c2e6f263fe5eb59ca974d039fc0e4c3345692fb5320bdae4bd3b42a45ff","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"81ffe55f178da695b28c86d8b406b15dab1a9e39661a3ae017fbe390ac0972c3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #324: edge case for u1"} -{"x":"67e6f659cdde869a2f65f094e94e5b4dfad636bbf95192feeed01b0f3deb7460","y":"a37e0a51f258b7aeb51dfe592f5cfd5685bbe58712c8d9233c62886437c38ba0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #325: edge case for u2"} -{"x":"2eb6412505aec05c6545f029932087e490d05511e8ec1f599617bb367f9ecaaf","y":"805f51efcc4803403f9b1ae0124890f06a43fedcddb31830f6669af292895cb0","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #326: edge case for u2"} -{"x":"84db645868eab35e3a9fd80e056e2e855435e3a6b68d75a50a854625fe0d7f35","y":"6d2589ac655edc9a11ef3e075eddda9abf92e72171570ef7bf43a2ee39338cfe","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #327: edge case for u2"} -{"x":"91b9e47c56278662d75c0983b22ca8ea6aa5059b7a2ff7637eb2975e386ad663","y":"49aa8ff283d0f77c18d6d11dc062165fd13c3c0310679c1408302a16854ecfbd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #328: edge case for u2"} -{"x":"f3ec2f13caf04d0192b47fb4c5311fb6d4dc6b0a9e802e5327f7ec5ee8e4834d","y":"f97e3e468b7d0db867d6ecfe81e2b0f9531df87efdb47c1338ac321fefe5a432","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #329: edge case for u2"} -{"x":"d92b200aefcab6ac7dafd9acaf2fa10b3180235b8f46b4503e4693c670fccc88","y":"5ef2f3aebf5b317475336256768f7c19efb7352d27e4cccadc85b6b8ab922c72","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #330: edge case for u2"} -{"x":"0a88361eb92ecca2625b38e5f98bbabb96bf179b3d76fc48140a3bcd881523cd","y":"e6bdf56033f84a5054035597375d90866aa2c96b86a41ccf6edebf47298ad489","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #331: edge case for u2"} -{"x":"d0fb17ccd8fafe827e0c1afc5d8d80366e2b20e7f14a563a2ba50469d84375e8","y":"68612569d39e2bb9f554355564646de99ac602cc6349cf8c1e236a7de7637d93","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #332: edge case for u2"} -{"x":"836f33bbc1dc0d3d3abbcef0d91f11e2ac4181076c9af0a22b1e4309d3edb276","y":"9ab443ff6f901e30c773867582997c2bec2b0cb8120d760236f3a95bbe881f75","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #333: edge case for u2"} -{"x":"92f99fbe973ed4a299719baee4b432741237034dec8d72ba5103cb33e55feeb8","y":"033dd0e91134c734174889f3ebcf1b7a1ac05767289280ee7a794cebd6e69697","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #334: edge case for u2"} -{"x":"d35ba58da30197d378e618ec0fa7e2e2d12cffd73ebbb2049d130bba434af09e","y":"ff83986e6875e41ea432b7585a49b3a6c77cbb3c47919f8e82874c794635c1d2","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #335: edge case for u2"} -{"x":"8651ce490f1b46d73f3ff475149be29136697334a519d7ddab0725c8d0793224","y":"e11c65bd8ca92dc8bc9ae82911f0b52751ce21dd9003ae60900bd825f590cc28","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #336: edge case for u2"} -{"x":"6d8e1b12c831a0da8795650ff95f101ed921d9e2f72b15b1cdaca9826b9cfc6d","y":"ef6d63e2bc5c089570394a4bc9f892d5e6c7a6a637b20469a58c106ad486bf37","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #337: edge case for u2"} -{"x":"0ae580bae933b4ef2997cbdbb0922328ca9a410f627a0f7dff24cb4d920e1542","y":"8911e7f8cc365a8a88eb81421a361ccc2b99e309d8dcd9a98ba83c3949d893e3","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #338: edge case for u2"} -{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"838a40f2a36092e9004e92d8d940cf5638550ce672ce8b8d4e15eba5499249e9","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #339: point duplication during verification"} -{"x":"5b812fd521aafa69835a849cce6fbdeb6983b442d2444fe70e134c027fc46963","y":"7c75bf0c5c9f6d17ffb16d2726bf30a9c7aaf31a8d317472b1ea145ab66db616","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"bb726660235793aa9957a61e76e00c2c435109cf9a15dd624d53f4301047856b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #340: duplication bug"} -{"x":"dd86d3b5f4a13e8511083b78002081c53ff467f11ebd98a51a633db76665d250","y":"45d5c8200c89f2fa10d849349226d21d8dfaed6ff8d5cb3e1b7e17474ebc18f7","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #343: comparison with point at infinity "} -{"x":"4fea55b32cb32aca0c12c4cd0abfb4e64b0f5a516e578c016591a93f5a0fbcc5","y":"d7d3fd10b2be668c547b212f6bb14c88f0fecd38a8a4b2c785ed3be62ce4b280","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #344: extreme value for k and edgecase s"} -{"x":"c6a771527024227792170a6f8eee735bf32b7f98af669ead299802e32d7c3107","y":"bc3b4b5e65ab887bbd343572b3e5619261fe3a073e2ffd78412f726867db589e","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #345: extreme value for k and s^-1"} -{"x":"851c2bbad08e54ec7a9af99f49f03644d6ec6d59b207fec98de85a7d15b956ef","y":"cee9960283045075684b410be8d0f7494b91aa2379f60727319f10ddeb0fe9d6","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #346: extreme value for k and s^-1"} -{"x":"f6417c8a670584e388676949e53da7fc55911ff68318d1bf3061205acb19c48f","y":"8f2b743df34ad0f72674acb7505929784779cd9ac916c3669ead43026ab6d43f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #347: extreme value for k and s^-1"} -{"x":"501421277be45a5eefec6c639930d636032565af420cf3373f557faa7f8a0643","y":"8673d6cb6076e1cfcdc7dfe7384c8e5cac08d74501f2ae6e89cad195d0aa1371","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #348: extreme value for k and s^-1"} -{"x":"0d935bf9ffc115a527735f729ca8a4ca23ee01a4894adf0e3415ac84e808bb34","y":"3195a3762fea29ed38912bd9ea6c4fde70c3050893a4375850ce61d82eba33c5","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #349: extreme value for k"} -{"x":"5e59f50708646be8a589355014308e60b668fb670196206c41e748e64e4dca21","y":"5de37fee5c97bcaf7144d5b459982f52eeeafbdf03aacbafef38e213624a01de","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #350: extreme value for k and edgecase s"} -{"x":"169fb797325843faff2f7a5b5445da9e2fd6226f7ef90ef0bfe924104b02db8e","y":"7bbb8de662c7b9b1cf9b22f7a2e582bd46d581d68878efb2b861b131d8a1d667","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #351: extreme value for k and s^-1"} -{"x":"271cd89c000143096b62d4e9e4ca885aef2f7023d18affdaf8b7b54898148754","y":"0a1c6e954e32108435b55fa385b0f76481a609b9149ccb4b02b2ca47fe8e4da5","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #352: extreme value for k and s^-1"} -{"x":"3d0bc7ed8f09d2cb7ddb46ebc1ed799ab1563a9ab84bf524587a220afe499c12","y":"e22dc3b3c103824a4f378d96adb0a408abf19ce7d68aa6244f78cb216fa3f8df","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #353: extreme value for k and s^-1"} -{"x":"a6c885ade1a4c566f9bb010d066974abb281797fa701288c721bcbd23663a9b7","y":"2e424b690957168d193a6096fc77a2b004a9c7d467e007e1f2058458f98af316","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #354: extreme value for k and s^-1"} -{"x":"8d3c2c2c3b765ba8289e6ac3812572a25bf75df62d87ab7330c3bdbad9ebfa5c","y":"4c6845442d66935b238578d43aec54f7caa1621d1af241d4632e0b780c423f5d","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #355: extreme value for k"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #356: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #357: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #358: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"44a5ad0ad0636d9f12bc9e0a6bdd5e1cbcb012ea7bf091fcec15b0c43202d52e","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #359: testing point duplication"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #360: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"530bd6b0c9af2d69ba897f6b5fb59695cfbf33afe66dbadcf5b8d2a2a6538e23","s":"d85e489cb7a161fd55ededcedbf4cc0c0987e3e3f0f242cae934c72caa3f43e9","hash":"dc1921946f4af96a2856e7be399007c9e807bdf4c5332f19f59ec9dd1bb8c7b3","valid":true,"msg":"4d7367","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #361: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #362: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #363: pseudorandom signature"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #364: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #365: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #366: x-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #367: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #368: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #369: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #370: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #371: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #372: y-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #373: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #374: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #375: x-coordinate of the public key has many trailing 1's"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #376: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #377: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #378: x-coordinate of the public key is large"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #379: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #380: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #381: x-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #382: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #383: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #384: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #385: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #386: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_secp256r1_sha256_test.json EcdsaVerify SHA-256 #387: y-coordinate of the public key is large"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1: signature malleability"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #2: Legacy:ASN encoding of s misses leading 0"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #3: valid"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"29a3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #118: modify first byte of integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e98","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #120: modify last byte of integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b491568475b","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #121: modify last byte of integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"00b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #124: truncated integer"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #133: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #134: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #137: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"b329f47aa2bbd0a4c384ee1493b1f518ada018ef05465583885980861905228a","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #139: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #143: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #177: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #178: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #179: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #180: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #181: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #187: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #188: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #189: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #190: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #191: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #197: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #198: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #199: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #200: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #201: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #207: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #208: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #209: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #210: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #211: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #217: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #218: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #219: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #220: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #221: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #230: Edge case for Shamir multiplication"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #231: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #232: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #233: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #234: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #235: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #236: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #237: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #238: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #239: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #240: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #241: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #242: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #243: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #244: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #245: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #246: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #247: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #248: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #249: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #250: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #251: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #252: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #253: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #254: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #255: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #256: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #257: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #258: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #259: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #260: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #261: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #262: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #263: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #264: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #265: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #266: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #267: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #268: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #269: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #270: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #271: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #272: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #273: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #274: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #275: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #276: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #277: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #278: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #279: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #280: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #281: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #282: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #283: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #284: special case hash"} -{"x":"d705d16f80987e2d9b1a6957d29ce22febf7d10fa515153182415c8361baaca4","y":"b1fc105ee5ce80d514ec1238beae2037a6f83625593620d460819e8682160926","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #636: r too large"} -{"x":"3cd8d2f81d6953b0844c09d7b560d527cd2ef67056893eadafa52c8501387d59","y":"ee41fdb4d10402ce7a0c5e3b747adfa3a490b62a6b7719068903485c0bb6dc2d","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #637: r,s are large"} -{"x":"8240cd81edd91cb6936133508c3915100e81f332c4545d41189b481196851378","y":"e05b06e72d4a1bff80ea5db514aa2f93ea6dd6d9c0ae27b7837dc432f9ce89d9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #638: r and s^-1 have a large Hamming weight"} -{"x":"b062947356748b0fc17f1704c65aa1dca6e1bfe6779756fa616d91eaad13df2c","y":"0b38c17f3d0672e7409cfc5992a99fff12b84a4f8432293b431113f1b2fb579d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #639: r and s^-1 have a large Hamming weight"} -{"x":"7a736d8e326a9ca62bbe25a34ea4e3633b499a96afa7aaa3fcf3fd88f8e07ede","y":"b3e45879d8622b93e818443a686e869eeda7bf9ae46aa3eafcc48a5934864627","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #651: r and s^-1 are close to n"} -{"x":"0203736fcb198b15d8d7a0c80f66dddd15259240aa78d08aae67c467de045034","y":"34383438d5041ea9a387ee8e4d4e84b4471b160c6bcf2568b072f8f20e87a996","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #654: point at infinity during verify"} -{"x":"78d844dc7f16b73b1f2a39730da5d8cd99fe2e70a18482384e37dcd2bfea02e1","y":"ed6572e01eb7a8d113d02c666c45ef22d3b9a6a6dea99aa43a8183c26e75d336","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #655: edge case for signature malleability"} -{"x":"dec6c8257dde94110eacc8c09d2e5789cc5beb81a958b02b4d62da9599a74014","y":"66fae1614174be63970b83f6524421067b06dd6f4e9c56baca4e344fdd690f1d","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #656: edge case for signature malleability"} -{"x":"a17f5b75a35ed64623ca5cbf1f91951292db0c23f0c2ea24c3d0cad0988cabc0","y":"83a7a618625c228940730b4fa3ee64faecbb2fc20fdde7c58b3a3f6300424dc6","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #657: u1 == 1"} -{"x":"04ba0cba291a37db13f33bf90dab628c04ec8393a0200419e9eaa1ebcc9fb5c3","y":"1f3a0a0e6823a49b625ad57b12a32d4047970fc3428f0f0049ecf4265dc12f62","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #658: u1 == n - 1"} -{"x":"692b6c828e0feed63d8aeaa2b7322f9ccbe8723a1ed39f229f204a434b8900ef","y":"a1f6f6abcb38ea3b8fde38b98c7c271f274af56a8c5628dc3329069ae4dd5716","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #659: u2 == 1"} -{"x":"00cefd9162d13e64cb93687a9cd8f9755ebb5a3ef7632f800f84871874ccef09","y":"543ecbeaf7e8044ef721be2fb5f549e4b8480d2587404ebf7dbbef2c54bc0cb1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #660: u2 == n - 1"} -{"x":"b975183b42551cf52f291d5c1921fd5e12f50c8c85a4beb9de03efa3f0f24486","y":"2243018e6866df922dc313612020311ff21e242ce3fb15bc78c406b25ab43091","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"710f8e3edc7c2d5a3fd23de844002bb949d9f794f6d5405f6d97c1bb03dd2bd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #661: edge case for u1"} -{"x":"c25f1d166f3e211cdf042a26f8abf6094d48b8d17191d74ed717149274466999","y":"65d06dd6a88abfa49e8b4c5da6bb922851969adf9604b5accfb52a114e77ccdb","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"edffbc270f722c243069a7e5f40335a61a58525c7b4db2e7a8e269274ffe4e1b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #662: edge case for u1"} -{"x":"8fe5e88243a76e41a004236218a3c3a2d6eee398a23c3a0b008d7f0164cbc0ca","y":"98a20d1bdcf573513c7cfd9b83c63e3a82d40127c897697c86b8cb387af7f240","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"a25adcae105ed7ff4f95d2344e24ee523314c3e178525d007904b68919ba4d53","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #663: edge case for u1"} -{"x":"02148256b530fbc470c7b341970b38243ecee6d5a840a37beca2efb37e8dff2c","y":"c0adbea0882482a7489ca703a399864ba987eeb6ddb738af53a83573473cb30d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2e4348c645707dce6760d773de3f3e87346924b2f64bd3dd0297e766b5805ebb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #664: edge case for u1"} -{"x":"a34db012ce6eda1e9c7375c5fcf3e54ed698e19615124273b3a621d021c76f8e","y":"777458d6f55a364c221e39e1205d5510bb4fbb7ddf08d8d8fdde13d1d6df7f14","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"348c673b07dce3920d773de3f3e87408869e916dbcf797d8f9684fb67753d1dc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #665: edge case for u1"} -{"x":"b97af3fe78be15f2912b6271dd8a43badb6dd2a1b315b2ce7ae37b4e7778041d","y":"930d71ee1992d2466495c42102d08e81154c305307d1dcd52d0fa4c479b278e7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"6918ce760fb9c7241aee7bc7e7d0e8110d3d22db79ef2fb1f2d09f6ceea7a3b8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #666: edge case for u1"} -{"x":"81e7198a3c3f23901cedc7a1d6eff6e9bf81108e6c35cd8559139af3135dbcbb","y":"9ef1568530291a8061b90c9f4285eefcba990d4570a4e3b7b737525b5d580034","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"73b3c694391d8eadde3f3e874089464715ac20e4c126bbf6d864d648969f5b5a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #667: edge case for u1"} -{"x":"ab4d792ca121d1dba39cb9de645149c2ab573e8becc6ddff3cc9960f188ddf73","y":"7f90ba23664153e93262ff73355415195858d7be1315a69456386de68285a3c8","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb07ac7a86948c2c2989a16db1930ef1b89ce112595197656877e53c41457f28","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #668: edge case for u1"} -{"x":"518412b69af43aae084476a68d59bbde51fbfa9e5be80563f587c9c2652f88ef","y":"2d3b90d25baa6bdb7b0c55e5240a3a98fbc24afed8523edec1c70503fc10f233","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27e4d82cb6c061dd9337c69bf9332ed3d198662d6f2299443f62c861187db648","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #669: edge case for u1"} -{"x":"a08f14a644b9a935dffea4761ebaf592d1f66fe6cd373aa7f5d370af34f8352d","y":"a54b5bc4025cf335900a914c2934ec2fec7a396d0a7affcad732a5741c7aaaf5","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e7c5cf3aac2e88923b77850515fff6a12d13b356dfe9ec275c3dd81ae94609a4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #670: edge case for u1"} -{"x":"ccf2296a6a89b62b90739d38af4ae3a20e9f45715b90044639241061e33f8f8c","y":"aace0046491eeaa1c6e9a472b96d88f4af83e7ff1bb84438c7e058034412ae08","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"c77838df91c1e953e016e10bddffea2317f9fee32bacfe553cede9e57a748f68","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #671: edge case for u1"} -{"x":"94b0fc1525bcabf82b1f34895e5819a06c02b23e04002276e165f962c86e3927","y":"be7c2ab4d0b25303204fb32a1f8292902792225e16a6d2dbfb29fbc89a9c3376","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8ef071c02383d2a6c02dc217bbffd446730d0318b0425e2586220907f885f97f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #672: edge case for u1"} -{"x":"5351f37e1de0c88c508527d89882d183ccdcf2efca407edb0627cadfd16de6ec","y":"44b4b57cdf960d32ebcc4c97847eed218425853b5b675eb781b766a1a1300349","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5668aaa0b545bbf9a044a32399ffbe69ce20074e34d7bdf5cf56282a76976396","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #673: edge case for u1"} -{"x":"748bbafc320e6735cb64019710a269c6c2b5d147bdc831325cb2fb276ac971a6","y":"9d655e9a755bc9d800ad21ee3fd4d980d93a7a49a8c5ccd37005177578f51163","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"d12d6e56882f6c0027cae91a27127728f7fddf478fb4fdc2b65f40a60b0eb952","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #674: edge case for u1"} -{"x":"14b3bbd75c5e1c0c36535a934d4ab85112410b3b90fa97a31c33038964fd85cc","y":"112f7d837f8f9c36b460d636c965a5f818f2b50c5d00fb3f9705561dd6631883","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #675: edge case for u2"} -{"x":"d823533c04cd8edc6d6f950a8e08ade04a9bafa2f14a590356935671ae9305bf","y":"43178d1f88b6a57a96924c265f0ddb75b58312907b195acb59d7797303123775","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #676: edge case for u2"} -{"x":"db2b3408b3167d91030624c6328e8ce3ec108c105575c2f3d209b92e654bab69","y":"c34318139c50b0802c6e612f0fd3189d800df7c996d5d7b7c3d6be82836fa258","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #677: edge case for u2"} -{"x":"09179ce7c59225392216453b2ac1e9d178c24837dfae26bc1dd7ab6063852742","y":"5556b42e330289f3b826b2db7a86d19d45c2860a59f2be1ddcc3b691f95a9255","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #678: edge case for u2"} -{"x":"01959fb8deda56e5467b7e4b214ea4c2d0c2fb29d70ff19b6b1eccebd6568d7e","y":"d9dbd77a918297fd970bff01e1343f6925167db5a14d098a211c39cc3a413398","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #679: edge case for u2"} -{"x":"567f1fdc387e5350c852b4e8f8ba9d6d947e1c5dd7ccc61a5938245dd6bcab3a","y":"9960bebaf919514f9535c22eaaf0b5812857970e26662267b1f3eb1011130a11","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #680: edge case for u2"} -{"x":"3499f974ff4ca6bbb2f51682fd5f51762f9dd6dd2855262660b36d46d3e4bec2","y":"f498fae2487807e220119152f0122476c64d4fa46ddce85c4546630f0d5c5e81","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #681: edge case for u2"} -{"x":"2c5c01662cf00c1929596257db13b26ecf30d0f3ec4b9f0351b0f27094473426","y":"e986a086060d086eee822ddd2fc744247a0154b57f7a69c51d9fdafa484e4ac7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #682: edge case for u2"} -{"x":"91d4cba813a04d86dbae94c23be6f52c15774183be7ba5b2d9f3cf010b160501","y":"900b8adfea6491019a9ac080d516025a541bf4b952b0ad7be4b1874b02fd544a","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #683: edge case for u2"} -{"x":"ef7fd0a3a36386638330ecad41e1a3b302af36960831d0210c614b948e8aa124","y":"ef0d6d800e4047d6d3c1be0fdeaf11fcd8cab5ab59c730eb34116e35a8c7d098","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #684: edge case for u2"} -{"x":"a521dab13cc9152d8ca77035a607fea06c55cc3ca5dbeb868cea92eafe93df2a","y":"7bfb9b28531996635e6a5ccaa2826a406ce1111bdb9c2e0ca36500418a2f43de","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #685: edge case for u2"} -{"x":"474d58a4eec16e0d565f2187fe11d4e8e7a2683a12f38b4fc01d1237a81a1097","y":"6e55f73bb7cdda46bdb67ef77f6fd2969df2b67920fb5945fde3a517a6ded4cd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #686: edge case for u2"} -{"x":"692da5cd4309d9a6e5cb525c37da8fa0879f7b57208cdabbf47d223a5b23a621","y":"40e0daa78cfdd207a7389aaed61738b17fc5fc3e6a5ed3397d2902e9125e6ab4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #687: edge case for u2"} -{"x":"85689b3e0775c7718a90279f14a8082cfcd4d1f1679274f4e9b8805c570a0670","y":"167fcc5ca734552e09afa3640f4a034e15b9b7ca661ec7ff70d3f240ebe705b1","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #688: edge case for u2"} -{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"2a964fc00d377a8592b8b61aafa7a4aaa7c7b9fd2b41d6e0e17bd1ba5677edcd","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #689: point duplication during verification"} -{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"d569b03ef2c8857b6d4749e550585b5558384603d4be291f1e842e45a9881232","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #690: duplication bug"} -{"x":"664ce273320d918d8bdb2e61201b4549b36b7cdc54e33b84adb6f2c10aac831e","y":"49e68831f18bda2973ac3d76bfbc8c5ee1cceed2dd862e2dc7c915c736cef1f4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #693: comparison with point at infinity "} -{"x":"961691a5e960d07a301dbbad4d86247ec27d7089faeb3ddd1add395efff1e0fe","y":"7254622cc371866cdf990d2c5377790e37d1f1519817f09a231bd260a9e78aeb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #694: extreme value for k and edgecase s"} -{"x":"5d283e13ce8ca60da868e3b0fb33e6b4f1074793274e2928250e71e2aca63e9c","y":"214dc74fa25371fb4d9e506d418ed9a1bfd6d0c8bb6591d3e0f44505a84886ce","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #695: extreme value for k and s^-1"} -{"x":"0fc351da038ae0803bd1d86514ae0462f9f8216551d9315aa9d297f792eef6a3","y":"41c74eed786f2d33da35360ca7aa925e753f00d6077a1e9e5fc339d634019c73","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #696: extreme value for k and s^-1"} -{"x":"a1e34c8f16d138673fee55c080547c2bfd4de7550065f638322bba9430ce4b60","y":"662be9bb512663aa4d7df8ab3f3b4181c5d44a7bdf42436620b7d8a6b81ac936","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #697: extreme value for k and s^-1"} -{"x":"7e1a8a8338d7fd8cf41d322a302d2078a87a23c7186150ed7cda6e52817c1bdf","y":"d0a9135a89d21ce821e29014b2898349254d748272b2d4eb8d59ee34c615377f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #698: extreme value for k and s^-1"} -{"x":"5c19fe227a61abc65c61ee7a018cc9571b2c6f663ea33583f76a686f64be078b","y":"7b4a0d734940f613d52bc48673b457c2cf78492490a5cc5606c0541d17b24ddb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #699: extreme value for k"} -{"x":"db02d1f3421d600e9d9ef9e47419dba3208eed08c2d4189a5db63abeb2739666","y":"e0ed26967b9ada9ed7ffe480827f90a0d210d5fd8ec628e31715e6b24125512a","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #700: extreme value for k and edgecase s"} -{"x":"6222d1962655501893c29e441395b6c05711bd3ed5a0ef72cfab338b88229c4b","y":"aaae079cb44a1af070362aaa520ee24cac2626423b0bf81af1c54311d8e2fd23","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #701: extreme value for k and s^-1"} -{"x":"4ccfa24c67f3def7fa81bc99c70bb0419c0952ba599f4c03361da184b04cdca5","y":"db76b797f7f41d9c729a2219478a7e629728df870800be8cf6ca7a0a82153bfa","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #702: extreme value for k and s^-1"} -{"x":"ea1c72c91034036bac71402b6e9ecc4af3dbde7a99dc574061e99fefff9d84da","y":"b7dd057e75b78ac6f56e34eb048f0a9d29d5d055408c90d02bc2ea918c18cb63","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #703: extreme value for k and s^-1"} -{"x":"c2879a66d86cb20b820b7795da2da62b38924f7817d1cd350d936988e90e79bc","y":"5431a7268ff6931c7a759de024eff90bcb0177216db6fd1f3aaaa11fa3b6a083","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #704: extreme value for k and s^-1"} -{"x":"ab1c0f273f74abc2b848c75006f2ef3c54c26df27711b06558f455079aee0ba3","y":"df510f2ecef6d9a05997c776f14ad6456c179f0a13af1771e4d6c37fa48b47f2","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #705: extreme value for k"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #706: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #707: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #708: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #709: testing point duplication"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1210: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"30e782f964b2e2ff065a051bc7adc20615d8c43a1365713c88268822c253bcce","s":"5b16df652aa1ecb2dc8b46c515f9604e2e84cacfa7c6eec30428d2d3f4e08ed5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1211: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1212: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1213: pseudorandom signature"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1303: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1304: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1305: x-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1306: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1307: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1308: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1309: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1310: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1311: y-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1312: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1313: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1314: x-coordinate of the public key has many trailing 1's"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1315: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1316: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1317: x-coordinate of the public key is large"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1318: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1319: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1320: x-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1321: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1322: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1323: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1324: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1325: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_test.json EcdsaVerify SHA-256 #1326: y-coordinate of the public key is large"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b855d442f5b3c7b11eb6c4e0ae7525fe710fab9aa7c77a67f79e6fadd76","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #1: signature malleability"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5740946b2a147f59262ee6f5bc90bd01ed280528b62b3aed5fc93f06f739","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #3: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"d45c5741946b2a137f59262ee6f5bc91001af27a5e1117a64733950642a3d1e8","s":"b329f479a2bbd0a5c384ee1493b1f5186a87139cac5df4087c134b49156847db","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #5: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ba3a8be6b94d5ec80a6d9d1190a436effe50d85a1eee859b8cc6af9bd5c2e18","s":"4cd60b865d442f5a3c7b11eb6c4e0ae79578ec6353a20bf783ecb4b6ea97b825","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #8: Modified r or s, e.g. by adding or subtracting the order of the group"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #9: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #10: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #11: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #12: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #13: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #14: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #15: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #16: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #17: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #18: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #19: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #20: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #21: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #22: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #23: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #24: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #25: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #26: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #27: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #28: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #29: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #30: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #31: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #32: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #33: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #34: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #35: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #36: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #37: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #38: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #39: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #40: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #41: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #42: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #43: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #44: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #45: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #46: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #47: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #48: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #49: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #50: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #51: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #52: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #53: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #54: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632552","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #55: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000000ffffffffffffffffffffffff","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #56: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffffffff00000001000000000000000000000001000000000000000000000000","s":"ffffffff00000001000000000000000000000001000000000000000000000000","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":false,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #57: Signature with special case values for r and s"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"64a1aab5000d0e804f3e2fc02bdee9be8ff312334e2ba16d11547c97711c898e","s":"6af015971cc30be6d1a206d4e013e0997772a2f91d73286ffd683b9bb2cf4f1b","hash":"70239dd877f7c944c422f44dea4ed1a52f2627416faf2f072fa50c772ed6f807","valid":true,"msg":"3639383139","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #58: Edge case for Shamir multiplication"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"16aea964a2f6506d6f78c81c91fc7e8bded7d397738448de1e19a0ec580bf266","s":"252cd762130c6667cfe8b7bc47d27d78391e8e80c578d1cd38c3ff033be928e9","hash":"00000000690ed426ccf17803ebe2bd0884bcd58a1bb5e7477ead3645f356e7a9","valid":true,"msg":"343236343739373234","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #59: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9cc98be2347d469bf476dfc26b9b733df2d26d6ef524af917c665baccb23c882","s":"093496459effe2d8d70727b82462f61d0ec1b7847929d10ea631dacb16b56c32","hash":"7300000000213f2a525c6035725235c2f696ad3ebb5ee47f140697ad25770d91","valid":true,"msg":"37313338363834383931","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #60: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"73b3c90ecd390028058164524dde892703dce3dea0d53fa8093999f07ab8aa43","s":"2f67b0b8e20636695bb7d8bf0a651c802ed25a395387b5f4188c0c4075c88634","hash":"ddf2000000005e0be0635b245f0b97978afd25daadeb3edb4a0161c27fe06045","valid":true,"msg":"3130333539333331363638","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #61: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bfab3098252847b328fadf2f89b95c851a7f0eb390763378f37e90119d5ba3dd","s":"bdd64e234e832b1067c2d058ccb44d978195ccebb65c2aaf1e2da9b8b4987e3b","hash":"67ab1900000000784769c4ecb9e164d6642b8499588b89855be1ec355d0841a0","valid":true,"msg":"33393439343031323135","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #62: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"204a9784074b246d8bf8bf04a4ceb1c1f1c9aaab168b1596d17093c5cd21d2cd","s":"51cce41670636783dc06a759c8847868a406c2506fe17975582fe648d1d88b52","hash":"a2bf09460000000076d7dbeffe125eaf02095dff252ee905e296b6350fc311cf","valid":true,"msg":"31333434323933303739","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #63: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ed66dc34f551ac82f63d4aa4f81fe2cb0031a91d1314f835027bca0f1ceeaa03","s":"99ca123aa09b13cd194a422e18d5fda167623c3f6e5d4d6abb8953d67c0c48c7","hash":"3554e827c700000000e1e75e624a06b3a0a353171160858129e15c544e4f0e65","valid":true,"msg":"33373036323131373132","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #64: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"060b700bef665c68899d44f2356a578d126b062023ccc3c056bf0f60a237012b","s":"8d186c027832965f4fcc78a3366ca95dedbb410cbef3f26d6be5d581c11d3610","hash":"9b6cd3b812610000000026941a0f0bb53255ea4c9fd0cb3426e3a54b9fc6965c","valid":true,"msg":"333433363838373132","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #65: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9f6adfe8d5eb5b2c24d7aa7934b6cf29c93ea76cd313c9132bb0c8e38c96831d","s":"b26a9c9e40e55ee0890c944cf271756c906a33e66b5bd15e051593883b5e9902","hash":"883ae39f50bf0100000000e7561c26fc82a52baa51c71ca877162f93c4ae0186","valid":true,"msg":"31333531353330333730","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #66: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a1af03ca91677b673ad2f33615e56174a1abf6da168cebfa8868f4ba273f16b7","s":"20aa73ffe48afa6435cd258b173d0c2377d69022e7d098d75caf24c8c5e06b1c","hash":"a1ce5d6e5ecaf28b0000000000fa7cd010540f420fb4ff7401fe9fce011d0ba6","valid":true,"msg":"36353533323033313236","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #67: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"fdc70602766f8eed11a6c99a71c973d5659355507b843da6e327a28c11893db9","s":"3df5349688a085b137b1eacf456a9e9e0f6d15ec0078ca60a7f83f2b10d21350","hash":"8ea5f645f373f580930000000038345397330012a8ee836c5494cdffd5ee8054","valid":true,"msg":"31353634333436363033","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #68: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"b516a314f2fce530d6537f6a6c49966c23456f63c643cf8e0dc738f7b876e675","s":"d39ffd033c92b6d717dd536fbc5efdf1967c4bd80954479ba66b0120cd16fff2","hash":"660570d323e9f75fa734000000008792d65ce93eabb7d60d8d9c1bbdcb5ef305","valid":true,"msg":"34343239353339313137","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #69: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"3b2cbf046eac45842ecb7984d475831582717bebb6492fd0a485c101e29ff0a8","s":"4c9b7b47a98b0f82de512bc9313aaf51701099cac5f76e68c8595fc1c1d99258","hash":"d0462673154cce587dde8800000000e98d35f1f45cf9c3bf46ada2de4c568c34","valid":true,"msg":"3130393533323631333531","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #70: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"30c87d35e636f540841f14af54e2f9edd79d0312cfa1ab656c3fb15bfde48dcf","s":"47c15a5a82d24b75c85a692bd6ecafeb71409ede23efd08e0db9abf6340677ed","hash":"bd90640269a7822680cedfef000000000caef15a6171059ab83e7b4418d7278f","valid":true,"msg":"35393837333530303431","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #71: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"38686ff0fda2cef6bc43b58cfe6647b9e2e8176d168dec3c68ff262113760f52","s":"067ec3b651f422669601662167fa8717e976e2db5e6a4cf7c2ddabb3fde9d67d","hash":"33239a52d72f1311512e41222a00000000d2dcceb301c54b4beae8e284788a73","valid":true,"msg":"33343633303036383738","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #72: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"44a3e23bf314f2b344fc25c7f2de8b6af3e17d27f5ee844b225985ab6e2775cf","s":"2d48e223205e98041ddc87be532abed584f0411f5729500493c9cc3f4dd15e86","hash":"b8d64fbcd4a1c10f1365d4e6d95c000000007ee4a21a1cbe1dc84c2d941ffaf1","valid":true,"msg":"39383137333230323837","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #73: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ded5b7ec8e90e7bf11f967a3d95110c41b99db3b5aa8d330eb9d638781688e9","s":"7d5792c53628155e1bfc46fb1a67e3088de049c328ae1f44ec69238a009808f9","hash":"01603d3982bf77d7a3fef3183ed092000000003a227420db4088b20fe0e9d84a","valid":true,"msg":"33323232303431303436","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #74: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bdae7bcb580bf335efd3bc3d31870f923eaccafcd40ec2f605976f15137d8b8f","s":"f6dfa12f19e525270b0106eecfe257499f373a4fb318994f24838122ce7ec3c7","hash":"9ea6994f1e0384c8599aa02e6cf66d9c000000004d89ef50b7e9eb0cfbff7363","valid":true,"msg":"36363636333037313034","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #75: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"50f9c4f0cd6940e162720957ffff513799209b78596956d21ece251c2401f1c6","s":"d7033a0a787d338e889defaaabb106b95a4355e411a59c32aa5167dfab244726","hash":"d03215a8401bcf16693979371a01068a4700000000e2fa5bf692bc670905b18c","valid":true,"msg":"31303335393531383938","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #76: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"f612820687604fa01906066a378d67540982e29575d019aabe90924ead5c860d","s":"3f9367702dd7dd4f75ea98afd20e328a1a99f4857b316525328230ce294b0fef","hash":"307bfaaffb650c889c84bf83f0300e5dc87e000000008408fd5f64b582e3bb14","valid":true,"msg":"31383436353937313935","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #77: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"9505e407657d6e8bc93db5da7aa6f5081f61980c1949f56b0f2f507da5782a7a","s":"c60d31904e3669738ffbeccab6c3656c08e0ed5cb92b3cfa5e7f71784f9c5021","hash":"bab5c4f4df540d7b33324d36bb0c157551527c00000000e4af574bb4d54ea6b8","valid":true,"msg":"33313336303436313839","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #78: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bbd16fbbb656b6d0d83e6a7787cd691b08735aed371732723e1c68a40404517d","s":"9d8e35dba96028b7787d91315be675877d2d097be5e8ee34560e3e7fd25c0f00","hash":"d4ba47f6ae28f274e4f58d8036f9c36ec2456f5b00000000c3b869197ef5e15e","valid":true,"msg":"32363633373834323534","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #79: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2ec9760122db98fd06ea76848d35a6da442d2ceef7559a30cf57c61e92df327e","s":"7ab271da90859479701fccf86e462ee3393fb6814c27b760c4963625c0a19878","hash":"79fd19c7235ea212f29f1fa00984342afe0f10aafd00000000801e47f8c184e1","valid":true,"msg":"31363532313030353234","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #80: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"54e76b7683b6650baa6a7fc49b1c51eed9ba9dd463221f7a4f1005a89fe00c59","s":"2ea076886c773eb937ec1cc8374b7915cfd11b1c1ae1166152f2f7806a31c8fd","hash":"8c291e8eeaa45adbaf9aba5c0583462d79cbeb7ac97300000000a37ea6700cda","valid":true,"msg":"35373438303831363936","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #81: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5291deaf24659ffbbce6e3c26f6021097a74abdbb69be4fb10419c0c496c9466","s":"65d6fcf336d27cc7cdb982bb4e4ecef5827f84742f29f10abf83469270a03dc3","hash":"0eaae8641084fa979803efbfb8140732f4cdcf66c3f78a000000003c278a6b21","valid":true,"msg":"36333433393133343638","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #82: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"207a3241812d75d947419dc58efb05e8003b33fc17eb50f9d15166a88479f107","s":"cdee749f2e492b213ce80b32d0574f62f1c5d70793cf55e382d5caadf7592767","hash":"e02716d01fb23a5a0068399bf01bab42ef17c6d96e13846c00000000afc0f89d","valid":true,"msg":"31353431313033353938","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #83: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"6554e49f82a855204328ac94913bf01bbe84437a355a0a37c0dee3cf81aa7728","s":"aea00de2507ddaf5c94e1e126980d3df16250a2eaebc8be486effe7f22b4f929","hash":"9eb0bf583a1a6b9a194e9a16bc7dab2a9061768af89d00659a00000000fc7de1","valid":true,"msg":"3130343738353830313238","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #84: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a54c5062648339d2bff06f71c88216c26c6e19b4d80a8c602990ac82707efdfc","s":"e99bbe7fcfafae3e69fd016777517aa01056317f467ad09aff09be73c9731b0d","hash":"62aac98818b3b84a2c214f0d5e72ef286e1030cb53d9a82b690e00000000cd15","valid":true,"msg":"3130353336323835353638","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #85: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"975bd7157a8d363b309f1f444012b1a1d23096593133e71b4ca8b059cff37eaf","s":"7faa7a28b1c822baa241793f2abc930bd4c69840fe090f2aacc46786bf919622","hash":"3760a7f37cf96218f29ae43732e513efd2b6f552ea4b6895464b9300000000c8","valid":true,"msg":"393533393034313035","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #86: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5694a6f84b8f875c276afd2ebcfe4d61de9ec90305afb1357b95b3e0da43885e","s":"0dffad9ffd0b757d8051dec02ebdf70d8ee2dc5c7870c0823b6ccc7c679cbaa4","hash":"0da0a1d2851d33023834f2098c0880096b4320bea836cd9cbb6ff6c800000000","valid":true,"msg":"393738383438303339","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #87: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"a0c30e8026fdb2b4b4968a27d16a6d08f7098f1a98d21620d7454ba9790f1ba6","s":"5e470453a8a399f15baf463f9deceb53acc5ca64459149688bd2760c65424339","hash":"ffffffff293886d3086fd567aafd598f0fe975f735887194a764a231e82d289a","valid":true,"msg":"33363130363732343432","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #88: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"614ea84acf736527dd73602cd4bb4eea1dfebebd5ad8aca52aa0228cf7b99a88","s":"737cc85f5f2d2f60d1b8183f3ed490e4de14368e96a9482c2a4dd193195c902f","hash":"7bffffffff2376d1e3c03445a072e24326acdc4ce127ec2e0e8d9ca99527e7b7","valid":true,"msg":"31303534323430373035","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #89: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"bead6734ebe44b810d3fb2ea00b1732945377338febfd439a8d74dfbd0f942fa","s":"6bb18eae36616a7d3cad35919fd21a8af4bbe7a10f73b3e036a46b103ef56e2a","hash":"a2b5ffffffffebb251b085377605a224bc80872602a6e467fd016807e97fa395","valid":true,"msg":"35313734343438313937","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #90: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"499625479e161dacd4db9d9ce64854c98d922cbf212703e9654fae182df9bad2","s":"42c177cf37b8193a0131108d97819edd9439936028864ac195b64fca76d9d693","hash":"641227ffffffff6f1b96fa5f097fcf3cc1a3c256870d45a67b83d0967d4b20c0","valid":true,"msg":"31393637353631323531","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #91: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"08f16b8093a8fb4d66a2c8065b541b3d31e3bfe694f6b89c50fb1aaa6ff6c9b2","s":"9d6455e2d5d1779748573b611cb95d4a21f967410399b39b535ba3e5af81ca2e","hash":"958415d8ffffffffabad03e2fc662dc3ba203521177502298df56f36600e0f8b","valid":true,"msg":"33343437323533333433","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #92: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"be26231b6191658a19dd72ddb99ed8f8c579b6938d19bce8eed8dc2b338cb5f8","s":"e1d9a32ee56cffed37f0f22b2dcb57d5c943c14f79694a03b9c5e96952575c89","hash":"f1d8de4858ffffffff1281093536f47fe13deb04e1fbe8fb954521b6975420f8","valid":true,"msg":"333638323634333138","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #93: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"15e76880898316b16204ac920a02d58045f36a229d4aa4f812638c455abe0443","s":"e74d357d3fcb5c8c5337bd6aba4178b455ca10e226e13f9638196506a1939123","hash":"0927895f2802ffffffff10782dd14a3b32dc5d47c05ef6f1876b95c81fc31def","valid":true,"msg":"33323631313938363038","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #94: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"352ecb53f8df2c503a45f9846fc28d1d31e6307d3ddbffc1132315cc07f16dad","s":"1348dfa9c482c558e1d05c5242ca1c39436726ecd28258b1899792887dd0a3c6","hash":"60907984aa7e8effffffff4f332862a10a57c3063fb5a30624cf6a0c3ac80589","valid":true,"msg":"39363738373831303934","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #95: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"4a40801a7e606ba78a0da9882ab23c7677b8642349ed3d652c5bfa5f2a9558fb","s":"3a49b64848d682ef7f605f2832f7384bdc24ed2925825bf8ea77dc5981725782","hash":"c6ff198484939170ffffffff0af42cda50f9a5f50636ea6942d6b9b8cd6ae1e2","valid":true,"msg":"34393538383233383233","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #96: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"eacc5e1a8304a74d2be412b078924b3bb3511bac855c05c9e5e9e44df3d61e96","s":"7451cd8e18d6ed1885dd827714847f96ec4bb0ed4c36ce9808db8f714204f6d1","hash":"de030419345ca15c75ffffffff8074799b9e0956cc43135d16dfbe4d27d7e68d","valid":true,"msg":"383234363337383337","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #97: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"2f7a5e9e5771d424f30f67fdab61e8ce4f8cd1214882adb65f7de94c31577052","s":"ac4e69808345809b44acb0b2bd889175fb75dd050c5a449ab9528f8f78daa10c","hash":"6f0e3eeaf42b28132b88fffffffff6c8665604d34acb19037e1ab78caaaac6ff","valid":true,"msg":"3131303230383333373736","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #98: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ffcda40f792ce4d93e7e0f0e95e1a2147dddd7f6487621c30a03d710b3300219","s":"79938b55f8a17f7ed7ba9ade8f2065a1fa77618f0b67add8d58c422c2453a49a","hash":"cdb549f773b3e62b3708d1ffffffffbe48f7c0591ddcae7d2cb222d1f8017ab9","valid":true,"msg":"313333383731363438","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #99: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"81f2359c4faba6b53d3e8c8c3fcc16a948350f7ab3a588b28c17603a431e39a8","s":"cd6f6a5cc3b55ead0ff695d06c6860b509e46d99fccefb9f7f9e101857f74300","hash":"2c3f26f96a3ac0051df4989bffffffff9fd64886c1dc4f9924d8fd6f0edb0484","valid":true,"msg":"333232313434313632","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #100: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"dfc8bf520445cbb8ee1596fb073ea283ea130251a6fdffa5c3f5f2aaf75ca808","s":"048e33efce147c9dd92823640e338e68bfd7d0dc7a4905b3a7ac711e577e90e7","hash":"ac18f8418c55a2502cb7d53f9affffffff5c31d89fda6a6b8476397c04edf411","valid":true,"msg":"3130363836363535353436","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #101: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ad019f74c6941d20efda70b46c53db166503a0e393e932f688227688ba6a5762","s":"93320eb7ca0710255346bdbb3102cdcf7964ef2e0988e712bc05efe16c199345","hash":"4f9618f98e2d3a15b24094f72bb5ffffffffa2fd3e2893683e5a6ab8cf0ee610","valid":true,"msg":"3632313535323436","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #102: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"ac8096842e8add68c34e78ce11dd71e4b54316bd3ebf7fffdeb7bd5a3ebc1883","s":"f5ca2f4f23d674502d4caf85d187215d36e3ce9f0ce219709f21a3aac003b7a8","hash":"422e82a3d56ed10a9cc21d31d37a25ffffffff67edf7c40204caae73ab0bc75a","valid":true,"msg":"37303330383138373734","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #103: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"677b2d3a59b18a5ff939b70ea002250889ddcd7b7b9d776854b4943693fb92f7","s":"6b4ba856ade7677bf30307b21f3ccda35d2f63aee81efd0bab6972cc0795db55","hash":"7075d245ccc3281b6e7b329ff738fbb417a5ffffffffa0842d9890b5cf95d018","valid":true,"msg":"35393234353233373434","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #104: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"479e1ded14bcaed0379ba8e1b73d3115d84d31d4b7c30e1f05e1fc0d5957cfb0","s":"918f79e35b3d89487cf634a4f05b2e0c30857ca879f97c771e877027355b2443","hash":"3c80de54cd9226989443d593fa4fd6597e280ebeffffffffc1847eb76c217a95","valid":true,"msg":"31343935353836363231","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #105: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"43dfccd0edb9e280d9a58f01164d55c3d711e14b12ac5cf3b64840ead512a0a3","s":"1dbe33fa8ba84533cd5c4934365b3442ca1174899b78ef9a3199f49584389772","hash":"de21754e29b85601980bef3d697ea2770ce891a8cdffffffffc7906aa794b39b","valid":true,"msg":"34303035333134343036","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #106: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5b09ab637bd4caf0f4c7c7e4bca592fea20e9087c259d26a38bb4085f0bbff11","s":"45b7eb467b6748af618e9d80d6fdcd6aa24964e5a13f885bca8101de08eb0d75","hash":"8f65d92927cfb86a84dd59623fb531bb599e4d5f7289ffffffff2f1f2f57881c","valid":true,"msg":"33303936343537353132","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #107: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"5e9b1c5a028070df5728c5c8af9b74e0667afa570a6cfa0114a5039ed15ee06f","s":"b1360907e2d9785ead362bb8d7bd661b6c29eeffd3c5037744edaeb9ad990c20","hash":"6b63e9a74e092120160bea3877dace8a2cc7cd0e8426cbfffffffffafc8c3ca8","valid":true,"msg":"32373834303235363230","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #108: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"0671a0a85c2b72d54a2fb0990e34538b4890050f5a5712f6d1a7a5fb8578f32e","s":"db1846bab6b7361479ab9c3285ca41291808f27fd5bd4fdac720e5854713694c","hash":"fc28259702a03845b6d75219444e8b43d094586e249c8699ffffffffe852512e","valid":true,"msg":"32363138373837343138","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #109: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7673f8526748446477dbbb0590a45492c5d7d69859d301abbaedb35b2095103a","s":"3dc70ddf9c6b524d886bed9e6af02e0e4dec0d417a414fed3807ef4422913d7c","hash":"1273b4502ea4e3bccee044ee8e8db7f774ecbcd52e8ceb571757ffffffffe20a","valid":true,"msg":"31363432363235323632","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #110: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"7f085441070ecd2bb21285089ebb1aa6450d1a06c36d3ff39dfd657a796d12b5","s":"249712012029870a2459d18d47da9aa492a5e6cb4b2d8dafa9e4c5c54a2b9a8b","hash":"08fb565610a79baa0c566c66228d81814f8c53a15b96e602fb49ffffffffff6e","valid":true,"msg":"36383234313839343336","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #111: special case hash"} -{"x":"2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838","y":"c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e","r":"914c67fb61dd1e27c867398ea7322d5ab76df04bc5aa6683a8e0f30a5d287348","s":"fa07474031481dda4953e3ac1959ee8cea7e66ec412b38d6c96d28f6d37304ea","hash":"d59291cc2cf89f3087715fcb1aa4e79aa2403f748e97d7cd28ecaefeffffffff","valid":true,"msg":"343834323435343235","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #112: special case hash"} -{"x":"d705d16f80987e2d9b1a6957d29ce22febf7d10fa515153182415c8361baaca4","y":"b1fc105ee5ce80d514ec1238beae2037a6f83625593620d460819e8682160926","r":"000000000000000000000000000000004319055358e8617b0c46353d039cdaab","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #113: k*G has a large x-coordinate"} -{"x":"d705d16f80987e2d9b1a6957d29ce22febf7d10fa515153182415c8361baaca4","y":"b1fc105ee5ce80d514ec1238beae2037a6f83625593620d460819e8682160926","r":"ffffffff00000001000000000000000000000000fffffffffffffffffffffffc","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #114: r too large"} -{"x":"3cd8d2f81d6953b0844c09d7b560d527cd2ef67056893eadafa52c8501387d59","y":"ee41fdb4d10402ce7a0c5e3b747adfa3a490b62a6b7719068903485c0bb6dc2d","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #115: r,s are large"} -{"x":"8240cd81edd91cb6936133508c3915100e81f332c4545d41189b481196851378","y":"e05b06e72d4a1bff80ea5db514aa2f93ea6dd6d9c0ae27b7837dc432f9ce89d9","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"909135bdb6799286170f5ead2de4f6511453fe50914f3df2de54a36383df8dd4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #116: r and s^-1 have a large Hamming weight"} -{"x":"b062947356748b0fc17f1704c65aa1dca6e1bfe6779756fa616d91eaad13df2c","y":"0b38c17f3d0672e7409cfc5992a99fff12b84a4f8432293b431113f1b2fb579d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27b4577ca009376f71303fd5dd227dcef5deb773ad5f5a84360644669ca249a5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #117: r and s^-1 have a large Hamming weight"} -{"x":"4a03ef9f92eb268cafa601072489a56380fa0dc43171d7712813b3a19a1eb5e5","y":"3e213e28a608ce9a2f4a17fd830c6654018a79b3e0263d91a8ba90622df6f2f0","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #118: small r and s"} -{"x":"091194c1cba17f34e286b4833701606a41cef26177ada8850b601ea1f859e701","y":"27242fcec708828758403ce2fe501983a7984e6209f4d6b95db9ad77767f55eb","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000003","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #120: small r and s"} -{"x":"103c6ecceff59e71ea8f56fee3a4b2b148e81c2bdbdd39c195812c96dcfb41a7","y":"2303a193dc591be150b883d770ec51ebb4ebce8b09042c2ecb16c448d8e57bf5","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000005","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #122: small r and s"} -{"x":"3b66b829fe604638bcb2bfe8c22228be67390c20111bd2b451468927e87fb6ea","y":"bc8e59c009361758b274ba2cad36b58fde485a3ed09dade76712fa9e9c4ac212","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #124: small r and s"} -{"x":"3b66b829fe604638bcb2bfe8c22228be67390c20111bd2b451468927e87fb6ea","y":"bc8e59c009361758b274ba2cad36b58fde485a3ed09dade76712fa9e9c4ac212","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632556","s":"0000000000000000000000000000000000000000000000000000000000000006","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #126: r is larger than n"} -{"x":"4ff2f6c24e4a33cd71c09fdcbc74a6233961b874b8c8e0eb94582092cbc50c30","y":"84fa9547afda5c66335f3f937d4c79afa120486b534139d59ae82d61ead26420","r":"0000000000000000000000000000000000000000000000000000000000000005","s":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc75fbd8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #127: s is larger than n"} -{"x":"84b959080bb30859cd53c2fb973cf14d60cdaa8ee00587889b5bc657ac588175","y":"a02ce5c1e53cb196113c78b4cb8dc7d360e5ea7850b0f6650b0c45af2c3cd7ca","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"8f1e3c7862c58b16bb76eddbb76eddbb516af4f63f2d74d76e0d28c9bb75ea88","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #128: small r and s^-1"} -{"x":"df4083bd6ecbda5a77ae578e5d835fa7f74a07ebb91e0570e1ff32a563354e99","y":"25af80b09a167d9ef647df28e2d9acd0d4bc4f2deec5723818edaf9071e311f8","r":"000000000000000000000000000000000000000000000000002d9b4d347952d6","s":"ef3043e7329581dbb3974497710ab11505ee1c87ff907beebadd195a0ffe6d7a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #129: smallish r and s^-1"} -{"x":"c2569a3c9bf8c1838ca821f7ba6f000cc8679d278f3736b414a34a7c956a0377","y":"0387ea85bc4f28804b4a91c9b7d65bc6434c975806795ab7d441a4e9683aeb09","r":"000000000000000000000000000000000000001033e67e37b32b445580bf4eff","s":"8b748b74000000008b748b748b748b7466e769ad4a16d3dcd87129b8e91d1b4d","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #130: 100-bit r and small s^-1"} -{"x":"4a9f7da2a6c359a16540c271774a6bf1c586357c978256f44a6496d80670968a","y":"c496e73a44563f8d56fbd7bb9e4e3ae304c86f2c508eb777b03924755beb40d4","r":"0000000000000000000000000000000000000000000000000000000000000100","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #131: small r and 100 bit s^-1"} -{"x":"874146432b3cd2c9e26204c0a34136996067d466dde4917a8ff23a8e95ca106b","y":"709b3d50976ef8b385a813bc35f3a20710bdc6edd465e6f43ac4866703a6608c","r":"00000000000000000000000000000000000000062522bbd3ecbe7c39e93e7c25","s":"ef9f6ba4d97c09d03178fa20b4aaad83be3cf9cb824a879fec3270fc4b81ef5b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #132: 100-bit r and s^-1"} -{"x":"7a736d8e326a9ca62bbe25a34ea4e3633b499a96afa7aaa3fcf3fd88f8e07ede","y":"b3e45879d8622b93e818443a686e869eeda7bf9ae46aa3eafcc48a5934864627","r":"ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #133: r and s^-1 are close to n"} -{"x":"e84d9b232e971a43382630f99725e423ec1ecb41e55172e9c69748a03f0d5988","y":"618b15b427ad83363bd041ff75fac98ef2ee923714e7d1dfe31753793c7588d4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000001","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #134: s == 1"} -{"x":"e84d9b232e971a43382630f99725e423ec1ecb41e55172e9c69748a03f0d5988","y":"618b15b427ad83363bd041ff75fac98ef2ee923714e7d1dfe31753793c7588d4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"0000000000000000000000000000000000000000000000000000000000000000","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #135: s == 0"} -{"x":"0203736fcb198b15d8d7a0c80f66dddd15259240aa78d08aae67c467de045034","y":"34383438d5041ea9a387ee8e4d4e84b4471b160c6bcf2568b072f8f20e87a996","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #136: point at infinity during verify"} -{"x":"78d844dc7f16b73b1f2a39730da5d8cd99fe2e70a18482384e37dcd2bfea02e1","y":"ed6572e01eb7a8d113d02c666c45ef22d3b9a6a6dea99aa43a8183c26e75d336","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #137: edge case for signature malleability"} -{"x":"dec6c8257dde94110eacc8c09d2e5789cc5beb81a958b02b4d62da9599a74014","y":"66fae1614174be63970b83f6524421067b06dd6f4e9c56baca4e344fdd690f1d","r":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","s":"7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #138: edge case for signature malleability"} -{"x":"a17f5b75a35ed64623ca5cbf1f91951292db0c23f0c2ea24c3d0cad0988cabc0","y":"83a7a618625c228940730b4fa3ee64faecbb2fc20fdde7c58b3a3f6300424dc6","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #139: u1 == 1"} -{"x":"04ba0cba291a37db13f33bf90dab628c04ec8393a0200419e9eaa1ebcc9fb5c3","y":"1f3a0a0e6823a49b625ad57b12a32d4047970fc3428f0f0049ecf4265dc12f62","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #140: u1 == n - 1"} -{"x":"692b6c828e0feed63d8aeaa2b7322f9ccbe8723a1ed39f229f204a434b8900ef","y":"a1f6f6abcb38ea3b8fde38b98c7c271f274af56a8c5628dc3329069ae4dd5716","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #141: u2 == 1"} -{"x":"00cefd9162d13e64cb93687a9cd8f9755ebb5a3ef7632f800f84871874ccef09","y":"543ecbeaf7e8044ef721be2fb5f549e4b8480d2587404ebf7dbbef2c54bc0cb1","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #142: u2 == n - 1"} -{"x":"b975183b42551cf52f291d5c1921fd5e12f50c8c85a4beb9de03efa3f0f24486","y":"2243018e6866df922dc313612020311ff21e242ce3fb15bc78c406b25ab43091","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"710f8e3edc7c2d5a3fd23de844002bb949d9f794f6d5405f6d97c1bb03dd2bd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #143: edge case for u1"} -{"x":"c25f1d166f3e211cdf042a26f8abf6094d48b8d17191d74ed717149274466999","y":"65d06dd6a88abfa49e8b4c5da6bb922851969adf9604b5accfb52a114e77ccdb","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"edffbc270f722c243069a7e5f40335a61a58525c7b4db2e7a8e269274ffe4e1b","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #144: edge case for u1"} -{"x":"8fe5e88243a76e41a004236218a3c3a2d6eee398a23c3a0b008d7f0164cbc0ca","y":"98a20d1bdcf573513c7cfd9b83c63e3a82d40127c897697c86b8cb387af7f240","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"a25adcae105ed7ff4f95d2344e24ee523314c3e178525d007904b68919ba4d53","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #145: edge case for u1"} -{"x":"02148256b530fbc470c7b341970b38243ecee6d5a840a37beca2efb37e8dff2c","y":"c0adbea0882482a7489ca703a399864ba987eeb6ddb738af53a83573473cb30d","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"2e4348c645707dce6760d773de3f3e87346924b2f64bd3dd0297e766b5805ebb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #146: edge case for u1"} -{"x":"a34db012ce6eda1e9c7375c5fcf3e54ed698e19615124273b3a621d021c76f8e","y":"777458d6f55a364c221e39e1205d5510bb4fbb7ddf08d8d8fdde13d1d6df7f14","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"348c673b07dce3920d773de3f3e87408869e916dbcf797d8f9684fb67753d1dc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #147: edge case for u1"} -{"x":"b97af3fe78be15f2912b6271dd8a43badb6dd2a1b315b2ce7ae37b4e7778041d","y":"930d71ee1992d2466495c42102d08e81154c305307d1dcd52d0fa4c479b278e7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"6918ce760fb9c7241aee7bc7e7d0e8110d3d22db79ef2fb1f2d09f6ceea7a3b8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #148: edge case for u1"} -{"x":"81e7198a3c3f23901cedc7a1d6eff6e9bf81108e6c35cd8559139af3135dbcbb","y":"9ef1568530291a8061b90c9f4285eefcba990d4570a4e3b7b737525b5d580034","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"73b3c694391d8eadde3f3e874089464715ac20e4c126bbf6d864d648969f5b5a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #149: edge case for u1"} -{"x":"ab4d792ca121d1dba39cb9de645149c2ab573e8becc6ddff3cc9960f188ddf73","y":"7f90ba23664153e93262ff73355415195858d7be1315a69456386de68285a3c8","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb07ac7a86948c2c2989a16db1930ef1b89ce112595197656877e53c41457f28","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #150: edge case for u1"} -{"x":"518412b69af43aae084476a68d59bbde51fbfa9e5be80563f587c9c2652f88ef","y":"2d3b90d25baa6bdb7b0c55e5240a3a98fbc24afed8523edec1c70503fc10f233","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"27e4d82cb6c061dd9337c69bf9332ed3d198662d6f2299443f62c861187db648","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #151: edge case for u1"} -{"x":"a08f14a644b9a935dffea4761ebaf592d1f66fe6cd373aa7f5d370af34f8352d","y":"a54b5bc4025cf335900a914c2934ec2fec7a396d0a7affcad732a5741c7aaaf5","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"e7c5cf3aac2e88923b77850515fff6a12d13b356dfe9ec275c3dd81ae94609a4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #152: edge case for u1"} -{"x":"ccf2296a6a89b62b90739d38af4ae3a20e9f45715b90044639241061e33f8f8c","y":"aace0046491eeaa1c6e9a472b96d88f4af83e7ff1bb84438c7e058034412ae08","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"c77838df91c1e953e016e10bddffea2317f9fee32bacfe553cede9e57a748f68","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #153: edge case for u1"} -{"x":"94b0fc1525bcabf82b1f34895e5819a06c02b23e04002276e165f962c86e3927","y":"be7c2ab4d0b25303204fb32a1f8292902792225e16a6d2dbfb29fbc89a9c3376","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"8ef071c02383d2a6c02dc217bbffd446730d0318b0425e2586220907f885f97f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #154: edge case for u1"} -{"x":"5351f37e1de0c88c508527d89882d183ccdcf2efca407edb0627cadfd16de6ec","y":"44b4b57cdf960d32ebcc4c97847eed218425853b5b675eb781b766a1a1300349","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5668aaa0b545bbf9a044a32399ffbe69ce20074e34d7bdf5cf56282a76976396","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #155: edge case for u1"} -{"x":"748bbafc320e6735cb64019710a269c6c2b5d147bdc831325cb2fb276ac971a6","y":"9d655e9a755bc9d800ad21ee3fd4d980d93a7a49a8c5ccd37005177578f51163","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"d12d6e56882f6c0027cae91a27127728f7fddf478fb4fdc2b65f40a60b0eb952","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #156: edge case for u1"} -{"x":"14b3bbd75c5e1c0c36535a934d4ab85112410b3b90fa97a31c33038964fd85cc","y":"112f7d837f8f9c36b460d636c965a5f818f2b50c5d00fb3f9705561dd6631883","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffffaaaaaaaaffffffffffffffffe9a2538f37b28a2c513dee40fecbb71a","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #157: edge case for u2"} -{"x":"d823533c04cd8edc6d6f950a8e08ade04a9bafa2f14a590356935671ae9305bf","y":"43178d1f88b6a57a96924c265f0ddb75b58312907b195acb59d7797303123775","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"b62f26b5f2a2b26f6de86d42ad8a13da3ab3cccd0459b201de009e526adf21f2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #158: edge case for u2"} -{"x":"db2b3408b3167d91030624c6328e8ce3ec108c105575c2f3d209b92e654bab69","y":"c34318139c50b0802c6e612f0fd3189d800df7c996d5d7b7c3d6be82836fa258","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bb1d9ac949dd748cd02bbbe749bd351cd57b38bb61403d700686aa7b4c90851e","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #159: edge case for u2"} -{"x":"09179ce7c59225392216453b2ac1e9d178c24837dfae26bc1dd7ab6063852742","y":"5556b42e330289f3b826b2db7a86d19d45c2860a59f2be1ddcc3b691f95a9255","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"66755a00638cdaec1c732513ca0234ece52545dac11f816e818f725b4f60aaf2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #160: edge case for u2"} -{"x":"01959fb8deda56e5467b7e4b214ea4c2d0c2fb29d70ff19b6b1eccebd6568d7e","y":"d9dbd77a918297fd970bff01e1343f6925167db5a14d098a211c39cc3a413398","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"55a00c9fcdaebb6032513ca0234ecfffe98ebe492fdf02e48ca48e982beb3669","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #161: edge case for u2"} -{"x":"567f1fdc387e5350c852b4e8f8ba9d6d947e1c5dd7ccc61a5938245dd6bcab3a","y":"9960bebaf919514f9535c22eaaf0b5812857970e26662267b1f3eb1011130a11","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ab40193f9b5d76c064a27940469d9fffd31d7c925fbe05c919491d3057d66cd2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #162: edge case for u2"} -{"x":"3499f974ff4ca6bbb2f51682fd5f51762f9dd6dd2855262660b36d46d3e4bec2","y":"f498fae2487807e220119152f0122476c64d4fa46ddce85c4546630f0d5c5e81","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"ca0234ebb5fdcb13ca0234ecffffffffcb0dadbbc7f549f8a26b4408d0dc8600","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #163: edge case for u2"} -{"x":"2c5c01662cf00c1929596257db13b26ecf30d0f3ec4b9f0351b0f27094473426","y":"e986a086060d086eee822ddd2fc744247a0154b57f7a69c51d9fdafa484e4ac7","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff3ea3677e082b9310572620ae19933a9e65b285598711c77298815ad3","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #164: edge case for u2"} -{"x":"91d4cba813a04d86dbae94c23be6f52c15774183be7ba5b2d9f3cf010b160501","y":"900b8adfea6491019a9ac080d516025a541bf4b952b0ad7be4b1874b02fd544a","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"266666663bbbbbbbe6666666666666665b37902e023fab7c8f055d86e5cc41f4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #165: edge case for u2"} -{"x":"ef7fd0a3a36386638330ecad41e1a3b302af36960831d0210c614b948e8aa124","y":"ef0d6d800e4047d6d3c1be0fdeaf11fcd8cab5ab59c730eb34116e35a8c7d098","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff36db6db7a492492492492492146c573f4c6dfc8d08a443e258970b09","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #166: edge case for u2"} -{"x":"a521dab13cc9152d8ca77035a607fea06c55cc3ca5dbeb868cea92eafe93df2a","y":"7bfb9b28531996635e6a5ccaa2826a406ce1111bdb9c2e0ca36500418a2f43de","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"bfffffff2aaaaaab7fffffffffffffffc815d0e60b3e596ecb1ad3a27cfd49c4","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #167: edge case for u2"} -{"x":"474d58a4eec16e0d565f2187fe11d4e8e7a2683a12f38b4fc01d1237a81a1097","y":"6e55f73bb7cdda46bdb67ef77f6fd2969df2b67920fb5945fde3a517a6ded4cd","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"7fffffff55555555ffffffffffffffffd344a71e6f651458a27bdc81fd976e37","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #168: edge case for u2"} -{"x":"692da5cd4309d9a6e5cb525c37da8fa0879f7b57208cdabbf47d223a5b23a621","y":"40e0daa78cfdd207a7389aaed61738b17fc5fc3e6a5ed3397d2902e9125e6ab4","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"3fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192aa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #169: edge case for u2"} -{"x":"85689b3e0775c7718a90279f14a8082cfcd4d1f1679274f4e9b8805c570a0670","y":"167fcc5ca734552e09afa3640f4a034e15b9b7ca661ec7ff70d3f240ebe705b1","r":"7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd","s":"5d8ecd64a4eeba466815ddf3a4de9a8e6abd9c5db0a01eb80343553da648428f","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #170: edge case for u2"} -{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"2a964fc00d377a8592b8b61aafa7a4aaa7c7b9fd2b41d6e0e17bd1ba5677edcd","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #171: point duplication during verification"} -{"x":"0158137755b901f797a90d4ca8887e023cb2ef63b2ba2c0d455edaef42cf237e","y":"d569b03ef2c8857b6d4749e550585b5558384603d4be291f1e842e45a9881232","r":"6f2347cab7dd76858fe0555ac3bc99048c4aacafdfb6bcbe05ea6c42c4934569","s":"f21d907e3890916dc4fa1f4703c1e50d3f54ddf7383e44023a41de562aa18ed8","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #172: duplication bug"} -{"x":"38a084ffccc4ae2f8204be2abca9fb8ad4ab283b2aa50f13b6bb2347adabc69c","y":"a699799b77b1cc6dad271e88b899c12931986e958e1f5cf5653dddf7389365e2","r":"0000000000000000000000000000000000000000000000000000000000000001","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #173: point with x-coordinate 0"} -{"x":"664ce273320d918d8bdb2e61201b4549b36b7cdc54e33b84adb6f2c10aac831e","y":"49e68831f18bda2973ac3d76bfbc8c5ee1cceed2dd862e2dc7c915c736cef1f4","r":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aa9","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #175: comparison with point at infinity "} -{"x":"961691a5e960d07a301dbbad4d86247ec27d7089faeb3ddd1add395efff1e0fe","y":"7254622cc371866cdf990d2c5377790e37d1f1519817f09a231bd260a9e78aeb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #176: extreme value for k and edgecase s"} -{"x":"5d283e13ce8ca60da868e3b0fb33e6b4f1074793274e2928250e71e2aca63e9c","y":"214dc74fa25371fb4d9e506d418ed9a1bfd6d0c8bb6591d3e0f44505a84886ce","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #177: extreme value for k and s^-1"} -{"x":"0fc351da038ae0803bd1d86514ae0462f9f8216551d9315aa9d297f792eef6a3","y":"41c74eed786f2d33da35360ca7aa925e753f00d6077a1e9e5fc339d634019c73","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #178: extreme value for k and s^-1"} -{"x":"a1e34c8f16d138673fee55c080547c2bfd4de7550065f638322bba9430ce4b60","y":"662be9bb512663aa4d7df8ab3f3b4181c5d44a7bdf42436620b7d8a6b81ac936","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #179: extreme value for k and s^-1"} -{"x":"7e1a8a8338d7fd8cf41d322a302d2078a87a23c7186150ed7cda6e52817c1bdf","y":"d0a9135a89d21ce821e29014b2898349254d748272b2d4eb8d59ee34c615377f","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #180: extreme value for k and s^-1"} -{"x":"5c19fe227a61abc65c61ee7a018cc9571b2c6f663ea33583f76a686f64be078b","y":"7b4a0d734940f613d52bc48673b457c2cf78492490a5cc5606c0541d17b24ddb","r":"7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc47669978","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #181: extreme value for k"} -{"x":"db02d1f3421d600e9d9ef9e47419dba3208eed08c2d4189a5db63abeb2739666","y":"e0ed26967b9ada9ed7ffe480827f90a0d210d5fd8ec628e31715e6b24125512a","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"555555550000000055555555555555553ef7a8e48d07df81a693439654210c70","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #182: extreme value for k and edgecase s"} -{"x":"6222d1962655501893c29e441395b6c05711bd3ed5a0ef72cfab338b88229c4b","y":"aaae079cb44a1af070362aaa520ee24cac2626423b0bf81af1c54311d8e2fd23","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"b6db6db6249249254924924924924924625bd7a09bec4ca81bcdd9f8fd6b63cc","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #183: extreme value for k and s^-1"} -{"x":"4ccfa24c67f3def7fa81bc99c70bb0419c0952ba599f4c03361da184b04cdca5","y":"db76b797f7f41d9c729a2219478a7e629728df870800be8cf6ca7a0a82153bfa","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"cccccccc00000000cccccccccccccccc971f2ef152794b9d8fc7d568c9e8eaa7","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #184: extreme value for k and s^-1"} -{"x":"ea1c72c91034036bac71402b6e9ecc4af3dbde7a99dc574061e99fefff9d84da","y":"b7dd057e75b78ac6f56e34eb048f0a9d29d5d055408c90d02bc2ea918c18cb63","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"3333333300000000333333333333333325c7cbbc549e52e763f1f55a327a3aaa","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #185: extreme value for k and s^-1"} -{"x":"c2879a66d86cb20b820b7795da2da62b38924f7817d1cd350d936988e90e79bc","y":"5431a7268ff6931c7a759de024eff90bcb0177216db6fd1f3aaaa11fa3b6a083","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"49249248db6db6dbb6db6db6db6db6db5a8b230d0b2b51dcd7ebf0c9fef7c185","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #186: extreme value for k and s^-1"} -{"x":"ab1c0f273f74abc2b848c75006f2ef3c54c26df27711b06558f455079aee0ba3","y":"df510f2ecef6d9a05997c776f14ad6456c179f0a13af1771e4d6c37fa48b47f2","r":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","s":"16a4502e2781e11ac82cbc9d1edd8c981584d13e18411e2f6e0478c34416e3bb","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #187: extreme value for k"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #188: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #189: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #190: testing point duplication"} -{"x":"6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296","y":"b01cbd1c01e58065711814b583f061e9d431cca994cea1313449bf97c840ae0a","r":"acd155416a8b77f34089464733ff7cd39c400e9c69af7beb9eac5054ed2ec72c","s":"249249246db6db6ddb6db6db6db6db6dad4591868595a8ee6bf5f864ff7be0c2","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":false,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #191: testing point duplication"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"a8ea150cb80125d7381c4c1f1da8e9de2711f9917060406a73d7904519e51388","s":"f3ab9fa68bd47973a73b2d40480c2ba50c22c9d76ec217257288293285449b86","hash":"bb5a52f42f9c9261ed4361f59422a1e30036e7c32b270c8807a419feca605023","valid":true,"msg":"313233343030","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #269: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"30e782f964b2e2ff065a051bc7adc20615d8c43a1365713c88268822c253bcce","s":"5b16df652aa1ecb2dc8b46c515f9604e2e84cacfa7c6eec30428d2d3f4e08ed5","hash":"532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25","valid":true,"msg":"54657374","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #270: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"b292a619339f6e567a305c951c0dcbcc42d16e47f219f9e98e76e09d8770b34a","s":"0177e60492c5a8242f76f07bfe3661bde59ec2a17ce5bd2dab2abebdf89a62e2","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","valid":true,"msg":"","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #271: pseudorandom signature"} -{"x":"04aaec73635726f213fb8a9e64da3b8632e41495a944d0045b522eba7240fad5","y":"87d9315798aaa3a5ba01775787ced05eaaf7b4e09fc81d6d1aa546e8365d525d","r":"986e65933ef2ed4ee5aada139f52b70539aaf63f00a91f29c69178490d57fb71","s":"3dafedfb8da6189d372308cbf1489bbbdabf0c0217d1c0ff0f701aaa7a694b9c","hash":"de47c9b27eb8d300dbb5f2c353e632c393262cf06340c4fa7f1b40c4cbd36f90","valid":true,"msg":"0000000000000000000000000000000000000000","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #272: pseudorandom signature"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"d434e262a49eab7781e353a3565e482550dd0fd5defa013c7f29745eff3569f1","s":"9b0c0a93f267fb6052fd8077be769c2b98953195d7bc10de844218305c6ba17a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #288: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"0fe774355c04d060f76d79fd7a772e421463489221bf0a33add0be9b1979110b","s":"500dcba1c69a8fbd43fa4f57f743ce124ca8b91a1f325f3fac6181175df55737","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #289: x-coordinate of the public key has many trailing 0's"} -{"x":"4f337ccfd67726a805e4f1600ae2849df3807eca117380239fbd816900000000","y":"ed9dea124cc8c396416411e988c30f427eb504af43a3146cd5df7ea60666d685","r":"bb40bf217bed3fb3950c7d39f03d36dc8e3b2cd79693f125bfd06595ee1135e3","s":"541bf3532351ebb032710bdb6a1bf1bfc89a1e291ac692b3fa4780745bb55677","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #290: x-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"664eb7ee6db84a34df3c86ea31389a5405badd5ca99231ff556d3e75a233e73a","s":"59f3c752e52eca46137642490a51560ce0badc678754b8f72e51a2901426a1bd","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #291: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"4cd0429bbabd2827009d6fcd843d4ce39c3e42e2d1631fd001985a79d1fd8b43","s":"9638bf12dd682f60be7ef1d0e0d98f08b7bca77a1a2b869ae466189d2acdabe3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #292: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"84fa174d791c72bf2ce3880a8960dd2a7c7a1338a82f85a9e59cdbde80000000","r":"e56c6ea2d1b017091c44d8b6cb62b9f460e3ce9aed5e5fd41e8added97c56c04","s":"a308ec31f281e955be20b457e463440b4fcf2b80258078207fc1378180f89b55","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #293: y-coordinate of the public key has many trailing 0's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"1158a08d291500b4cabed3346d891eee57c176356a2624fb011f8fbbf3466830","s":"228a8c486a736006e082325b85290c5bc91f378b75d487dda46798c18f285519","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #294: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b1db9289649f59410ea36b0c0fc8d6aa2687b29176939dd23e0dde56d309fa9d","s":"3e1535e4280559015b0dbd987366dcf43a6d1af5c23c7d584e1c3f48a1251336","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #295: y-coordinate of the public key has many trailing 1's"} -{"x":"3cf03d614d8939cfd499a07873fac281618f06b8ff87e8015c3f497265004935","y":"7b05e8b186e38d41d31c77f5769f22d58385ecc857d07a561a6324217fffffff","r":"b7b16e762286cb96446aa8d4e6e7578b0a341a79f2dd1a220ac6f0ca4e24ed86","s":"ddc60a700a139b04661c547d07bbb0721780146df799ccf55e55234ecb8f12bc","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #296: y-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"d82a7c2717261187c8e00d8df963ff35d796edad36bc6e6bd1c91c670d9105b4","s":"3dcabddaf8fcaa61f4603e7cbac0f3c0351ecd5988efb23f680d07debd139929","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #297: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"5eb9c8845de68eb13d5befe719f462d77787802baff30ce96a5cba063254af78","s":"2c026ae9be2e2a5e7ca0ff9bbd92fb6e44972186228ee9a62b87ddbe2ef66fb5","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #298: x-coordinate of the public key has many trailing 1's"} -{"x":"2829c31faa2e400e344ed94bca3fcd0545956ebcfe8ad0f6dfa5ff8effffffff","y":"a01aafaf000e52585855afa7676ade284113099052df57e7eb3bd37ebeb9222e","r":"96843dd03c22abd2f3b782b170239f90f277921becc117d0404a8e4e36230c28","s":"f2be378f526f74a543f67165976de9ed9a31214eb4d7e6db19e1ede123dd991d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #299: x-coordinate of the public key has many trailing 1's"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"766456dce1857c906f9996af729339464d27e9d98edc2d0e3b760297067421f6","s":"402385ecadae0d8081dccaf5d19037ec4e55376eced699e93646bfbbf19d0b41","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #300: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"c605c4b2edeab20419e6518a11b2dbc2b97ed8b07cced0b19c34f777de7b9fd9","s":"edf0f612c5f46e03c719647bc8af1b29b2cde2eda700fb1cff5e159d47326dba","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #301: x-coordinate of the public key is large"} -{"x":"fffffff948081e6a0458dd8f9e738f2665ff9059ad6aac0708318c4ca9a7a4f5","y":"5a8abcba2dda8474311ee54149b973cae0c0fb89557ad0bf78e6529a1663bd73","r":"d48b68e6cabfe03cf6141c9ac54141f210e64485d9929ad7b732bfe3b7eb8a84","s":"feedae50c61bd00e19dc26f9b7e2265e4508c389109ad2f208f0772315b6c941","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #302: x-coordinate of the public key is large"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"b7c81457d4aeb6aa65957098569f0479710ad7f6595d5874c35a93d12a5dd4c7","s":"b7961a0b652878c2d568069a432ca18a1a9199f2ca574dad4b9e3a05c0a1cdb3","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #303: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"6b01332ddb6edfa9a30a1321d5858e1ee3cf97e263e669f8de5e9652e76ff3f7","s":"5939545fced457309a6a04ace2bd0f70139c8f7d86b02cb1cc58f9e69e96cd5a","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #304: x-coordinate of the public key is small"} -{"x":"00000003fa15f963949d5f03a6f5c7f86f9e0015eeb23aebbff1173937ba748e","y":"1099872070e8e87c555fa13659cca5d7fadcfcb0023ea889548ca48af2ba7e71","r":"efdb884720eaeadc349f9fc356b6c0344101cd2fd8436b7d0e6a4fb93f106361","s":"f24bee6ad5dc05f7613975473aadf3aacba9e77de7d69b6ce48cb60d8113385d","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #305: x-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"31230428405560dcb88fb5a646836aea9b23a23dd973dcbe8014c87b8b20eb07","s":"0f9344d6e812ce166646747694a41b0aaf97374e19f3c5fb8bd7ae3d9bd0beff","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #306: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"caa797da65b320ab0d5c470cda0b36b294359c7db9841d679174db34c4855743","s":"cf543a62f23e212745391aaf7505f345123d2685ee3b941d3de6d9b36242e5a0","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #307: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"000000001352bb4a0fa2ea4cceb9ab63dd684ade5a1127bcf300a698a7193bc2","r":"7e5f0ab5d900d3d3d7867657e5d6d36519bc54084536e7d21c336ed800185945","s":"9450c07f201faec94b82dfb322e5ac676688294aad35aa72e727ff0b19b646aa","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #308: y-coordinate of the public key is small"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"d7d70c581ae9e3f66dc6a480bf037ae23f8a1e4a2136fe4b03aa69f0ca25b356","s":"89c460f8a5a5c2bbba962c8a3ee833a413e85658e62a59e2af41d9127cc47224","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #309: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"341c1b9ff3c83dd5e0dfa0bf68bcdf4bb7aa20c625975e5eeee34bb396266b34","s":"72b69f061b750fd5121b22b11366fad549c634e77765a017902a67099e0a4469","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #310: y-coordinate of the public key is large"} -{"x":"bcbb2914c79f045eaa6ecbbc612816b3be5d2d6796707d8125e9f851c18af015","y":"fffffffeecad44b6f05d15b33146549c2297b522a5eed8430cff596758e6c43d","r":"70bebe684cdcb5ca72a42f0d873879359bd1781a591809947628d313a3814f67","s":"aec03aca8f5587a4d535fa31027bbe9cc0e464b1c3577f4c2dcde6b2094798a9","hash":"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91","valid":true,"msg":"4d657373616765","comment":"wycheproof/ecdsa_webcrypto_test.json EcdsaP1363Verify SHA-256 #311: y-coordinate of the public key is large"} \ No newline at end of file From cc82c171cdc07809078f527a9fd93c3455fd2887 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 01:19:07 +0200 Subject: [PATCH 50/76] Update test/utils/cryptography/P256.test.js --- test/utils/cryptography/P256.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index c09cf9d853a..a195996e50c 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -131,7 +131,7 @@ describe('P256', function () { // run all tests for this key for (const { tcId, comment, msg, sig, result } of tests) { - // only keep properly formated signatures + // only keep properly formatted signatures if (sig.length != 128) continue; it(`${tcId}: ${comment}`, async function () { From a67e5a2bb7544ce1a1291afecb6dda9fe2dc1618 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 16:59:55 -0600 Subject: [PATCH 51/76] Almost fix tests --- contracts/utils/cryptography/P256.sol | 1 - test/utils/cryptography/P256.t.sol | 31 ++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index ac393ec4c25..bb5334c3db0 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import {Math} from "../math/Math.sol"; import {Errors} from "../Errors.sol"; -import {ECDSA} from "./ECDSA.sol"; /** * @dev Implementation of secp256r1 verification and recovery functions. diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index d2ff76a5f4d..820e3b950d1 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -13,7 +13,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); + uint256 privateKey = bound(seed, 4, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); @@ -24,7 +24,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testRecover(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); + uint256 privateKey = bound(seed, 4, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); @@ -34,9 +34,34 @@ contract P256Test is Test { assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } + // based on: https://github.com/pcaversaccio/snekmate/blob/4cb87bff4c1ca8901d9931772b1e58758bea6576/test/utils/P256.t.sol#L99 + function testVerifyWycheproofData() public { + string memory file = "test/utils/cryptography/wycheproof.jsonl"; + while (true) { + string memory vector = vm.readLine(file); + if (bytes(vector).length == 0) { + break; + } + + bytes32 r = vector.readBytes32(".r"); + bytes32 s = _ensureLowerS(vector.readBytes32(".s")); + bytes32 x = vector.readBytes32(".x"); + bytes32 y = vector.readBytes32(".y"); + bytes32 hash = vector.readBytes32(".hash"); + + if (s != bytes32(uint256(3))) { + // Values with s == 3 are failing + assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); + } + } + } + function _ensureLowerS(bytes32 s) private pure returns (bytes32) { uint256 _s = uint256(s); - return _s > P256.N / 2 ? bytes32(P256.N - _s) : s; + // if (_s > P256.N) return s; // Some tests have S edge cases + unchecked { + return _s > P256.N / 2 ? bytes32(P256.N - _s) : s; + } } } From 4c93009018ce92d908bb4b59379024e3f365b9c8 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 17:17:08 -0600 Subject: [PATCH 52/76] Bound r to N so for lower s values --- test/utils/cryptography/P256.t.sol | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 820e3b950d1..1e3818c0a7a 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; -import {Test} from "forge-std/Test.sol"; +import {Test, console2} from "forge-std/Test.sol"; import {stdJson} from "forge-std/StdJson.sol"; import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; @@ -13,7 +13,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(seed, 4, P256.N - 1); + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); @@ -24,7 +24,7 @@ contract P256Test is Test { /// forge-config: default.fuzz.runs = 512 function testRecover(uint256 seed, bytes32 digest) public { - uint256 privateKey = bound(seed, 4, P256.N - 1); + uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); (bytes32 x, bytes32 y) = P256PublicKey.getPublicKey(privateKey); (bytes32 r, bytes32 s) = vm.signP256(privateKey, digest); @@ -49,10 +49,7 @@ contract P256Test is Test { bytes32 y = vector.readBytes32(".y"); bytes32 hash = vector.readBytes32(".hash"); - if (s != bytes32(uint256(3))) { - // Values with s == 3 are failing - assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); - } + assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); } } From 046463c4543a1ff38888840cfefb0b4120da9436 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 17:19:15 -0600 Subject: [PATCH 53/76] Remove unnecessary comment --- test/utils/cryptography/P256.t.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 1e3818c0a7a..64dbb32fb3a 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -55,7 +55,6 @@ contract P256Test is Test { function _ensureLowerS(bytes32 s) private pure returns (bytes32) { uint256 _s = uint256(s); - // if (_s > P256.N) return s; // Some tests have S edge cases unchecked { return _s > P256.N / 2 ? bytes32(P256.N - _s) : s; } From e4df1d177c492df44010028f20d292d574470db9 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 17:21:19 -0600 Subject: [PATCH 54/76] Remove foundry wycheproof --- test/utils/cryptography/P256.t.sol | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 64dbb32fb3a..64e71e542fc 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -34,25 +34,6 @@ contract P256Test is Test { assertTrue((qx0 == x && qy0 == y) || (qx1 == x && qy1 == y)); } - // based on: https://github.com/pcaversaccio/snekmate/blob/4cb87bff4c1ca8901d9931772b1e58758bea6576/test/utils/P256.t.sol#L99 - function testVerifyWycheproofData() public { - string memory file = "test/utils/cryptography/wycheproof.jsonl"; - while (true) { - string memory vector = vm.readLine(file); - if (bytes(vector).length == 0) { - break; - } - - bytes32 r = vector.readBytes32(".r"); - bytes32 s = _ensureLowerS(vector.readBytes32(".s")); - bytes32 x = vector.readBytes32(".x"); - bytes32 y = vector.readBytes32(".y"); - bytes32 hash = vector.readBytes32(".hash"); - - assertEq(P256.verify(hash, r, s, x, y), vector.readBool(".valid")); - } - } - function _ensureLowerS(bytes32 s) private pure returns (bytes32) { uint256 _s = uint256(s); unchecked { From 1bddcf5c76447ad2b7f1ca761112a165ed94d082 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 17:22:54 -0600 Subject: [PATCH 55/76] Tests nit --- test/utils/cryptography/P256.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils/cryptography/P256.test.js b/test/utils/cryptography/P256.test.js index a195996e50c..b9655cad3f9 100644 --- a/test/utils/cryptography/P256.test.js +++ b/test/utils/cryptography/P256.test.js @@ -138,7 +138,7 @@ describe('P256', function () { // split signature, and reduce modulo N let [r, s] = Array(2) .fill() - .map((_, i) => ethers.toBigInt('0x' + sig.substr(64 * i, 64 * (i + 1)))); + .map((_, i) => ethers.toBigInt('0x' + sig.substring(64 * i, 64 * (i + 1)))); // move s to lower part of the curve if needed if (s <= N && s > N / 2n) s = N - s; // prepare signature From e5ba358dfbb487b3f4017e6a9ae8816bdd0ecb9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Mon, 24 Jun 2024 17:27:02 -0600 Subject: [PATCH 56/76] Update .changeset/odd-lobsters-wash.md --- .changeset/odd-lobsters-wash.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/odd-lobsters-wash.md b/.changeset/odd-lobsters-wash.md index 185362ae415..578f7a42ea7 100644 --- a/.changeset/odd-lobsters-wash.md +++ b/.changeset/odd-lobsters-wash.md @@ -2,4 +2,4 @@ 'openzeppelin-solidity': minor --- -`P256`: Add a library for verification/recovery of Secp256r1 (Aka P256) signatures. +`P256`: Library for verification and public key recovery of P256 (aka secp256r1) signatures. From 2eecacf51c5ce87b19513e40e37d471a7452eca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Mon, 24 Jun 2024 17:30:10 -0600 Subject: [PATCH 57/76] Update test/utils/cryptography/P256.t.sol Co-authored-by: Hadrien Croubois --- test/utils/cryptography/P256.t.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 64e71e542fc..4710066e7de 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -2,8 +2,7 @@ pragma solidity ^0.8.20; -import {Test, console2} from "forge-std/Test.sol"; -import {stdJson} from "forge-std/StdJson.sol"; +import {Test} from "forge-std/Test.sol"; import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; From ced4fb8e086e88df72677c91b49a964a0ae069fb Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 01:30:41 +0200 Subject: [PATCH 58/76] Update P256.t.sol --- test/utils/cryptography/P256.t.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/utils/cryptography/P256.t.sol b/test/utils/cryptography/P256.t.sol index 4710066e7de..1391afd76ef 100644 --- a/test/utils/cryptography/P256.t.sol +++ b/test/utils/cryptography/P256.t.sol @@ -8,8 +8,6 @@ import {P256} from "@openzeppelin/contracts/utils/cryptography/P256.sol"; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; contract P256Test is Test { - using stdJson for string; - /// forge-config: default.fuzz.runs = 512 function testVerify(uint256 seed, bytes32 digest) public { uint256 privateKey = bound(uint256(keccak256(abi.encode(seed))), 1, P256.N - 1); From c6a86d95a48fe3d2615989a319be0646177f27bd Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 17:45:31 -0600 Subject: [PATCH 59/76] Add more docs and nit --- contracts/utils/README.adoc | 2 ++ contracts/utils/math/Math.sol | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/utils/README.adoc b/contracts/utils/README.adoc index 74281b3c597..d3130b33448 100644 --- a/contracts/utils/README.adoc +++ b/contracts/utils/README.adoc @@ -8,6 +8,8 @@ Miscellaneous contracts and libraries containing utility functions you can use t * {Math}, {SignedMath}: Implementation of various arithmetic functions. * {SafeCast}: Checked downcasting functions to avoid silent truncation. * {ECDSA}, {MessageHashUtils}: Libraries for interacting with ECDSA signatures. + * {P256}: Library for verifying and recovering public keys from secp256r1 signatures. + * {RSA}: Library with RSA PKCS#1 v1.5 signature verification utilities. * {SignatureChecker}: A library helper to support regular ECDSA from EOAs as well as ERC-1271 signatures for smart contracts. * {Hashes}: Commonly used hash functions. * {MerkleProof}: Functions for verifying https://en.wikipedia.org/wiki/Merkle_tree[Merkle Tree] proofs. diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index 3aa16787328..d5ae271339e 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -295,7 +295,7 @@ library Math { * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that * `a**(p-2)` is the modular multiplicative inverse of a in Fp. * - * Note: this function does NOT check that `p` is a prime greater than `2`. + * NOTE: this function does NOT check that `p` is a prime greater than `2`. */ function invModPrime(uint256 a, uint256 p) internal view returns (uint256) { unchecked { From 9b240146a72383a551c2451c1854ed9c176246d5 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 19:37:01 -0600 Subject: [PATCH 60/76] Manage to compile without via-ir --- contracts/utils/cryptography/P256.sol | 52 ++++++++++++++++++--------- hardhat.config.js | 45 +++++++++++------------ 2 files changed, 56 insertions(+), 41 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index bb5334c3db0..d382190f96a 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -164,36 +164,37 @@ library P256 { } /** - * @dev Point addition on the jacobian coordinates + * @dev Point addition on the jacobian coordinates. + * + * Computation is assisted by Solidity's memory. It takes x1 and y1 arguments from the scratch space + * and returns x' and y' to the scratch space. + * * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#addition-add-1998-cmo-2 */ - function _jAdd( - uint256 x1, - uint256 y1, - uint256 z1, - uint256 x2, - uint256 y2, - uint256 z2 - ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { + function _jAddMemoryAssisted(uint256 z1, uint256 x2, uint256 y2, uint256 z2) private pure returns (uint256 rz) { assembly ("memory-safe") { let p := P + let zz1 := mulmod(z1, z1, p) // zz1 = z1² let zz2 := mulmod(z2, z2, p) // zz2 = z2² - let u1 := mulmod(x1, zz2, p) // u1 = x1*z2² + let u1 := mulmod(mload(0x00), zz2, p) // u1 = x1*z2² let u2 := mulmod(x2, zz1, p) // u2 = x2*z1² - let s1 := mulmod(y1, mulmod(zz2, z2, p), p) // s1 = y1*z2³ + let s1 := mulmod(mload(0x20), mulmod(zz2, z2, p), p) // s1 = y1*z2³ let s2 := mulmod(y2, mulmod(zz1, z1, p), p) // s2 = y2*z1³ let h := addmod(u2, sub(p, u1), p) // h = u2-u1 + rz := mulmod(h, mulmod(z1, z2, p), p) let hh := mulmod(h, h, p) // h² let hhh := mulmod(h, hh, p) // h³ let r := addmod(s2, sub(p, s1), p) // r = s2-s1 // x' = r²-h³-2*u1*h² - rx := addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p) + mstore(0x00, addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p)) + // y' = r*(u1*h²-x')-s1*h³ - ry := addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, rx), p), p), sub(p, mulmod(s1, hhh, p)), p) - // z' = h*z1*z2 - rz := mulmod(h, mulmod(z1, z2, p), p) + mstore( + 0x20, + addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, mload(0)), p), p), sub(p, mulmod(s1, hhh, p)), p) + ) } } @@ -244,7 +245,9 @@ library P256 { if (z == 0) { (x, y, z) = (points[pos].x, points[pos].y, points[pos].z); } else { - (x, y, z) = _jAdd(x, y, z, points[pos].x, points[pos].y, points[pos].z); + _toScratchMemory(x, y); + (z) = _jAddMemoryAssisted(z, points[pos].x, points[pos].y, points[pos].z); + (x, y) = _fromScratchMemory(); } } u1 <<= 2; @@ -287,7 +290,9 @@ library P256 { } function _jAddPoint(JPoint memory p1, JPoint memory p2) private pure returns (JPoint memory) { - (uint256 x, uint256 y, uint256 z) = _jAdd(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z); + _toScratchMemory(p1.x, p1.y); + uint256 z = _jAddMemoryAssisted(p1.z, p2.x, p2.y, p2.z); + (uint256 x, uint256 y) = _fromScratchMemory(); return JPoint(x, y, z); } @@ -295,4 +300,17 @@ library P256 { (uint256 x, uint256 y, uint256 z) = _jDouble(p.x, p.y, p.z); return JPoint(x, y, z); } + + function _toScratchMemory(uint256 x, uint256 y) private pure { + assembly ("memory-safe") { + mstore(0x00, x) + mstore(0x20, y) + } + } + function _fromScratchMemory() private pure returns (uint256 x, uint256 y) { + assembly ("memory-safe") { + x := mload(0x00) + y := mload(0x20) + } + } } diff --git a/hardhat.config.js b/hardhat.config.js index 3cdcef96209..ef90c2d3c0b 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,13 +1,12 @@ /// ENVVAR -// - COMPILER: compiler version (default: 0.8.20) -// - SRC: contracts folder to compile (default: contracts) -// - RUNS: number of optimization runs (default: 200) -// - IR: enable IR compilation (default: false) -// - UNLIMITED: allow deployment of contracts larger than 24k (default: false) -// - COVERAGE: enable coverage report (default: false) -// - GAS: enable gas report (default: false) -// - COINMARKETCAP: coinmarketcap api key for USD value in gas report -// - CI: output gas report to file instead of stdout +// - COMPILE_VERSION: compiler version (default: 0.8.20) +// - SRC: contracts folder to compile (default: contracts) +// - COMPILE_MODE: production modes enables optimizations (default: development) +// - IR: enable IR compilation (default: false) +// - COVERAGE: enable coverage report +// - ENABLE_GAS_REPORT: enable gas report +// - COINMARKETCAP: coinmarkercat api key for USD value in gas report +// - CI: output gas report to file instead of stdout const fs = require('fs'); const path = require('path'); @@ -26,10 +25,11 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'contracts', }, - runs: { - alias: 'optimizationRuns', - type: 'number', - default: 200, + mode: { + alias: 'compileMode', + type: 'string', + choices: ['production', 'development'], + default: 'development', }, ir: { alias: 'enableIR', @@ -41,11 +41,6 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'cancun', }, - unlimited: { - alias: 'allowUnlimitedContractSize', - type: 'boolean', - default: false, - }, // Extra modules coverage: { type: 'boolean', @@ -74,6 +69,9 @@ for (const f of fs.readdirSync(path.join(__dirname, 'hardhat'))) { require(path.join(__dirname, 'hardhat', f)); } +const withOptimizations = argv.gas || argv.coverage || argv.compileMode === 'production'; +const allowUnlimitedContractSize = argv.gas || argv.coverage || argv.compileMode === 'development'; + /** * @type import('hardhat/config').HardhatUserConfig */ @@ -82,12 +80,11 @@ module.exports = { version: argv.compiler, settings: { optimizer: { - enabled: true, - runs: argv.runs, - details: { yul: true }, + enabled: withOptimizations, + runs: 200, }, evmVersion: argv.evm, - viaIR: argv.ir, + viaIR: withOptimizations && argv.ir, outputSelection: { '*': { '*': ['storageLayout'] } }, }, }, @@ -97,7 +94,7 @@ module.exports = { 'initcode-size': 'off', }, '*': { - 'code-size': true, + 'code-size': withOptimizations, 'unused-param': !argv.coverage, // coverage causes unused-param warnings 'transient-storage': false, default: 'error', @@ -106,7 +103,7 @@ module.exports = { networks: { hardhat: { hardfork: argv.evm, - allowUnlimitedContractSize: argv.gas || argv.coverage || argv.unlimited, + allowUnlimitedContractSize, initialBaseFeePerGas: argv.coverage ? 0 : undefined, }, }, From 3616771ff762dc7c23ff0fe44ca997ed1a52ce41 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 19:38:08 -0600 Subject: [PATCH 61/76] Improve comments --- contracts/utils/cryptography/P256.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index d382190f96a..3b9c85f0bf9 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -166,8 +166,8 @@ library P256 { /** * @dev Point addition on the jacobian coordinates. * - * Computation is assisted by Solidity's memory. It takes x1 and y1 arguments from the scratch space - * and returns x' and y' to the scratch space. + * Computation is assisted by Solidity's memory to avoid "Stack too deep" errors. + * It takes x1 and y1 arguments from the scratch space and returns x' and y' to the scratch space. * * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#addition-add-1998-cmo-2 */ @@ -307,6 +307,7 @@ library P256 { mstore(0x20, y) } } + function _fromScratchMemory() private pure returns (uint256 x, uint256 y) { assembly ("memory-safe") { x := mload(0x00) From be078b1bdd39498f58f0cb4a6a77b14c0348c902 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 24 Jun 2024 19:43:41 -0600 Subject: [PATCH 62/76] Remove unnecessary CI flag --- .github/workflows/checks.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 2b2d43c5528..c280885632c 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -66,8 +66,6 @@ jobs: run: bash scripts/upgradeable/transpile.sh - name: Run tests run: npm run test - env: - UNLIMITED: true - name: Check linearisation of the inheritance graph run: npm run test:inheritance - name: Check storage layout From ecd3aa2332591300eaf3acf7564ad2f2a958125d Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 10:46:58 +0200 Subject: [PATCH 63/76] cleanup _jAdd with memory --- contracts/utils/cryptography/P256.sol | 67 +++++++++++---------------- hardhat.config.js | 45 +++++++++--------- 2 files changed, 50 insertions(+), 62 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 3b9c85f0bf9..7d48687a42a 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -164,37 +164,40 @@ library P256 { } /** - * @dev Point addition on the jacobian coordinates. - * - * Computation is assisted by Solidity's memory to avoid "Stack too deep" errors. - * It takes x1 and y1 arguments from the scratch space and returns x' and y' to the scratch space. - * + * @dev Point addition on the jacobian coordinates * Reference: https://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html#addition-add-1998-cmo-2 */ - function _jAddMemoryAssisted(uint256 z1, uint256 x2, uint256 y2, uint256 z2) private pure returns (uint256 rz) { + function _jAdd( + JPoint memory p1, + uint256 x2, + uint256 y2, + uint256 z2 + ) private pure returns (uint256 rx, uint256 ry, uint256 rz) { assembly ("memory-safe") { let p := P - - let zz1 := mulmod(z1, z1, p) // zz1 = z1² - let zz2 := mulmod(z2, z2, p) // zz2 = z2² - let u1 := mulmod(mload(0x00), zz2, p) // u1 = x1*z2² - let u2 := mulmod(x2, zz1, p) // u2 = x2*z1² - let s1 := mulmod(mload(0x20), mulmod(zz2, z2, p), p) // s1 = y1*z2³ - let s2 := mulmod(y2, mulmod(zz1, z1, p), p) // s2 = y2*z1³ + let z1 := mload(add(p1, 0x40)) + let s1 := mulmod(mload(add(p1, 0x20)), mulmod(mulmod(z2, z2, p), z2, p), p) // s1 = y1*z2³ + let s2 := mulmod(y2, mulmod(mulmod(z1, z1, p), z1, p), p) // s2 = y2*z1³ + let r := addmod(s2, sub(p, s1), p) // r = s2-s1 + let u1 := mulmod(mload(add(p1, 0x00)), mulmod(z2, z2, p), p) // u1 = x1*z2² + let u2 := mulmod(x2, mulmod(z1, z1, p), p) // u2 = x2*z1² let h := addmod(u2, sub(p, u1), p) // h = u2-u1 - rz := mulmod(h, mulmod(z1, z2, p), p) let hh := mulmod(h, h, p) // h² - let hhh := mulmod(h, hh, p) // h³ - let r := addmod(s2, sub(p, s1), p) // r = s2-s1 // x' = r²-h³-2*u1*h² - mstore(0x00, addmod(addmod(mulmod(r, r, p), sub(p, hhh), p), sub(p, mulmod(2, mulmod(u1, hh, p), p)), p)) - + rx := addmod( + addmod(mulmod(r, r, p), sub(p, mulmod(h, hh, p)), p), + sub(p, mulmod(2, mulmod(u1, hh, p), p)), + p + ) // y' = r*(u1*h²-x')-s1*h³ - mstore( - 0x20, - addmod(mulmod(r, addmod(mulmod(u1, hh, p), sub(p, mload(0)), p), p), sub(p, mulmod(s1, hhh, p)), p) + ry := addmod( + mulmod(r, addmod(mulmod(u1, hh, p), sub(p, rx), p), p), + sub(p, mulmod(s1, mulmod(h, hh, p), p)), + p ) + // z' = h*z1*z2 + rz := mulmod(h, mulmod(z1, z2, p), p) } } @@ -245,9 +248,7 @@ library P256 { if (z == 0) { (x, y, z) = (points[pos].x, points[pos].y, points[pos].z); } else { - _toScratchMemory(x, y); - (z) = _jAddMemoryAssisted(z, points[pos].x, points[pos].y, points[pos].z); - (x, y) = _fromScratchMemory(); + (x, y, z) = _jAdd(points[pos], x, y, z); } } u1 <<= 2; @@ -290,9 +291,7 @@ library P256 { } function _jAddPoint(JPoint memory p1, JPoint memory p2) private pure returns (JPoint memory) { - _toScratchMemory(p1.x, p1.y); - uint256 z = _jAddMemoryAssisted(p1.z, p2.x, p2.y, p2.z); - (uint256 x, uint256 y) = _fromScratchMemory(); + (uint256 x, uint256 y, uint256 z) = _jAdd(p1, p2.x, p2.y, p2.z); return JPoint(x, y, z); } @@ -300,18 +299,4 @@ library P256 { (uint256 x, uint256 y, uint256 z) = _jDouble(p.x, p.y, p.z); return JPoint(x, y, z); } - - function _toScratchMemory(uint256 x, uint256 y) private pure { - assembly ("memory-safe") { - mstore(0x00, x) - mstore(0x20, y) - } - } - - function _fromScratchMemory() private pure returns (uint256 x, uint256 y) { - assembly ("memory-safe") { - x := mload(0x00) - y := mload(0x20) - } - } } diff --git a/hardhat.config.js b/hardhat.config.js index ef90c2d3c0b..5cd846a5f6a 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,12 +1,13 @@ /// ENVVAR -// - COMPILE_VERSION: compiler version (default: 0.8.20) -// - SRC: contracts folder to compile (default: contracts) -// - COMPILE_MODE: production modes enables optimizations (default: development) -// - IR: enable IR compilation (default: false) -// - COVERAGE: enable coverage report -// - ENABLE_GAS_REPORT: enable gas report -// - COINMARKETCAP: coinmarkercat api key for USD value in gas report -// - CI: output gas report to file instead of stdout +// - COMPILER: compiler version (default: 0.8.20) +// - SRC: contracts folder to compile (default: contracts) +// - RUNS: number of optimization runs (default: 200) +// - IR: enable IR compilation (default: false) +// - UNLIMITED: allow deployment of contracts larger than 24k (default: false) +// - COVERAGE: enable coverage report (default: false) +// - GAS: enable gas report (default: false) +// - COINMARKETCAP: coinmarketcap api key for USD value in gas report +// - CI: output gas report to file instead of stdout const fs = require('fs'); const path = require('path'); @@ -25,11 +26,10 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'contracts', }, - mode: { - alias: 'compileMode', - type: 'string', - choices: ['production', 'development'], - default: 'development', + runs: { + alias: 'optimizationRuns', + type: 'number', + default: 200, }, ir: { alias: 'enableIR', @@ -41,6 +41,11 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'cancun', }, + unlimited: { + alias: 'allowUnlimitedContractSize', + type: 'boolean', + default: false, + }, // Extra modules coverage: { type: 'boolean', @@ -69,9 +74,6 @@ for (const f of fs.readdirSync(path.join(__dirname, 'hardhat'))) { require(path.join(__dirname, 'hardhat', f)); } -const withOptimizations = argv.gas || argv.coverage || argv.compileMode === 'production'; -const allowUnlimitedContractSize = argv.gas || argv.coverage || argv.compileMode === 'development'; - /** * @type import('hardhat/config').HardhatUserConfig */ @@ -80,11 +82,12 @@ module.exports = { version: argv.compiler, settings: { optimizer: { - enabled: withOptimizations, - runs: 200, + enabled: true, + runs: argv.runs, + details: { yul: argv.coverage }, // needed when doing coverage }, evmVersion: argv.evm, - viaIR: withOptimizations && argv.ir, + viaIR: argv.ir, outputSelection: { '*': { '*': ['storageLayout'] } }, }, }, @@ -94,7 +97,7 @@ module.exports = { 'initcode-size': 'off', }, '*': { - 'code-size': withOptimizations, + 'code-size': true, 'unused-param': !argv.coverage, // coverage causes unused-param warnings 'transient-storage': false, default: 'error', @@ -103,7 +106,7 @@ module.exports = { networks: { hardhat: { hardfork: argv.evm, - allowUnlimitedContractSize, + allowUnlimitedContractSize: argv.gas || argv.coverage || argv.unlimited, initialBaseFeePerGas: argv.coverage ? 0 : undefined, }, }, From d83e707c8677a34b9dc29fa229a73a3640d16c90 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 11:48:18 +0200 Subject: [PATCH 64/76] up --- hardhat.config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index 5cd846a5f6a..99849b14f99 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -84,7 +84,6 @@ module.exports = { optimizer: { enabled: true, runs: argv.runs, - details: { yul: argv.coverage }, // needed when doing coverage }, evmVersion: argv.evm, viaIR: argv.ir, From fbc11f5cc022fd98b0d713e0548623e1182c6693 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 11:54:59 +0200 Subject: [PATCH 65/76] Update contracts/utils/cryptography/P256.sol --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 7d48687a42a..e5a97fbf6b9 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -179,7 +179,7 @@ library P256 { let s1 := mulmod(mload(add(p1, 0x20)), mulmod(mulmod(z2, z2, p), z2, p), p) // s1 = y1*z2³ let s2 := mulmod(y2, mulmod(mulmod(z1, z1, p), z1, p), p) // s2 = y2*z1³ let r := addmod(s2, sub(p, s1), p) // r = s2-s1 - let u1 := mulmod(mload(add(p1, 0x00)), mulmod(z2, z2, p), p) // u1 = x1*z2² + let u1 := mulmod(mload(p1), mulmod(z2, z2, p), p) // u1 = x1*z2² let u2 := mulmod(x2, mulmod(z1, z1, p), p) // u2 = x2*z1² let h := addmod(u2, sub(p, u1), p) // h = u2-u1 let hh := mulmod(h, h, p) // h² From 9c88101bc57a6dc804236cd4ac3956ff60ff83c6 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 13:51:40 +0200 Subject: [PATCH 66/76] Apply suggestions from code review Co-authored-by: sudo rm -rf --no-preserve-root / --- docs/modules/ROOT/pages/utilities.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/pages/utilities.adoc b/docs/modules/ROOT/pages/utilities.adoc index b041d64fde9..31d4d5e33ed 100644 --- a/docs/modules/ROOT/pages/utilities.adoc +++ b/docs/modules/ROOT/pages/utilities.adoc @@ -51,7 +51,7 @@ function _verify( } ---- -By default, the `verify` function will try calling the (https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md)[RIP-7212] precompile at address `0x100` and will fallback to an implementation in Solidity if not available. We encourage you to use `verifyNative` if you know the precompile is available in the chain you're working on. +By default, the `verify` function will try calling the (https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md)[RIP-7212] precompile at address `0x100` and will fallback to an implementation in Solidity if not available. We encourage you to use `verifyNative` if you know the precompile is available on the chain you're working on and on any other chain on which you intend to use the same bytecode in the future. In case of any doubts regarding the implementation roadmap of the native precompile `P256` of potential future target chains, please consider using `verifySolidity`. [source,solidity] ---- @@ -69,7 +69,7 @@ function _verify( } ---- -IMPORTANT: The P256 library only allows for `s` values in the lower order of the curve (i.e. `s < N`) to prevent malleability. In case your tooling produces signatures in both sides of the curve, consider flipping the `s` value to keep compatibility. +IMPORTANT: The P256 library only allows for `s` values in the lower order of the curve (i.e. `s <= N/2`) to prevent malleability. In case your tooling produces signatures in both sides of the curve, consider flipping the `s` value to keep compatibility. ==== RSA From b5e6bd7ab911eb3f9a9d3df075e59a51681052b8 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 14:57:55 +0200 Subject: [PATCH 67/76] Update hardhat.config.js --- hardhat.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index 99849b14f99..699e0cbda76 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,5 +1,5 @@ /// ENVVAR -// - COMPILER: compiler version (default: 0.8.20) +// - COMPILER: compiler version (default: 0.8.24) // - SRC: contracts folder to compile (default: contracts) // - RUNS: number of optimization runs (default: 200) // - IR: enable IR compilation (default: false) From db7635355af95e3ca68580f508c66a805c4e910e Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 17:43:25 +0200 Subject: [PATCH 68/76] Update hardhat.config.js --- hardhat.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hardhat.config.js b/hardhat.config.js index 699e0cbda76..bfb2c584252 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -44,7 +44,7 @@ const { argv } = require('yargs/yargs')() unlimited: { alias: 'allowUnlimitedContractSize', type: 'boolean', - default: false, + default: true, // this is needed by many exposed contracts. Enabling it by default. }, // Extra modules coverage: { @@ -105,7 +105,7 @@ module.exports = { networks: { hardhat: { hardfork: argv.evm, - allowUnlimitedContractSize: argv.gas || argv.coverage || argv.unlimited, + allowUnlimitedContractSize: argv.unlimited, initialBaseFeePerGas: argv.coverage ? 0 : undefined, }, }, From 0722d93e14c7f722c3d7f2ce22319e281bf38fa7 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 25 Jun 2024 17:43:45 +0200 Subject: [PATCH 69/76] Update hardhat.config.js --- hardhat.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index bfb2c584252..2adccd56a3c 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -3,7 +3,7 @@ // - SRC: contracts folder to compile (default: contracts) // - RUNS: number of optimization runs (default: 200) // - IR: enable IR compilation (default: false) -// - UNLIMITED: allow deployment of contracts larger than 24k (default: false) +// - UNLIMITED: allow deployment of contracts larger than 24k (default: true) // - COVERAGE: enable coverage report (default: false) // - GAS: enable gas report (default: false) // - COINMARKETCAP: coinmarketcap api key for USD value in gas report From 306a5f69722927fed226000e199d4871c031d6dd Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 26 Jun 2024 09:30:30 +0200 Subject: [PATCH 70/76] Revert all changes to hardhat.config.js Moved that part to a separate PR #5099 --- hardhat.config.js | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/hardhat.config.js b/hardhat.config.js index 2adccd56a3c..ef90c2d3c0b 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,13 +1,12 @@ /// ENVVAR -// - COMPILER: compiler version (default: 0.8.24) -// - SRC: contracts folder to compile (default: contracts) -// - RUNS: number of optimization runs (default: 200) -// - IR: enable IR compilation (default: false) -// - UNLIMITED: allow deployment of contracts larger than 24k (default: true) -// - COVERAGE: enable coverage report (default: false) -// - GAS: enable gas report (default: false) -// - COINMARKETCAP: coinmarketcap api key for USD value in gas report -// - CI: output gas report to file instead of stdout +// - COMPILE_VERSION: compiler version (default: 0.8.20) +// - SRC: contracts folder to compile (default: contracts) +// - COMPILE_MODE: production modes enables optimizations (default: development) +// - IR: enable IR compilation (default: false) +// - COVERAGE: enable coverage report +// - ENABLE_GAS_REPORT: enable gas report +// - COINMARKETCAP: coinmarkercat api key for USD value in gas report +// - CI: output gas report to file instead of stdout const fs = require('fs'); const path = require('path'); @@ -26,10 +25,11 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'contracts', }, - runs: { - alias: 'optimizationRuns', - type: 'number', - default: 200, + mode: { + alias: 'compileMode', + type: 'string', + choices: ['production', 'development'], + default: 'development', }, ir: { alias: 'enableIR', @@ -41,11 +41,6 @@ const { argv } = require('yargs/yargs')() type: 'string', default: 'cancun', }, - unlimited: { - alias: 'allowUnlimitedContractSize', - type: 'boolean', - default: true, // this is needed by many exposed contracts. Enabling it by default. - }, // Extra modules coverage: { type: 'boolean', @@ -74,6 +69,9 @@ for (const f of fs.readdirSync(path.join(__dirname, 'hardhat'))) { require(path.join(__dirname, 'hardhat', f)); } +const withOptimizations = argv.gas || argv.coverage || argv.compileMode === 'production'; +const allowUnlimitedContractSize = argv.gas || argv.coverage || argv.compileMode === 'development'; + /** * @type import('hardhat/config').HardhatUserConfig */ @@ -82,11 +80,11 @@ module.exports = { version: argv.compiler, settings: { optimizer: { - enabled: true, - runs: argv.runs, + enabled: withOptimizations, + runs: 200, }, evmVersion: argv.evm, - viaIR: argv.ir, + viaIR: withOptimizations && argv.ir, outputSelection: { '*': { '*': ['storageLayout'] } }, }, }, @@ -96,7 +94,7 @@ module.exports = { 'initcode-size': 'off', }, '*': { - 'code-size': true, + 'code-size': withOptimizations, 'unused-param': !argv.coverage, // coverage causes unused-param warnings 'transient-storage': false, default: 'error', @@ -105,7 +103,7 @@ module.exports = { networks: { hardhat: { hardfork: argv.evm, - allowUnlimitedContractSize: argv.unlimited, + allowUnlimitedContractSize, initialBaseFeePerGas: argv.coverage ? 0 : undefined, }, }, From e67a4560fccf831c803e570c07405faeffcb0034 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 26 Jun 2024 09:35:56 +0200 Subject: [PATCH 71/76] uniform style --- contracts/utils/cryptography/P256.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index e5a97fbf6b9..36ca38b5d9f 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -118,7 +118,9 @@ library P256 { * To flip the `s` value, compute `s = N - s` and `v = 1 - v` if (`v = 0 | 1`). */ function recovery(bytes32 h, uint8 v, bytes32 r, bytes32 s) internal view returns (bytes32, bytes32) { - if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || v > 1) return (0, 0); + if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || v > 1) { + return (0, 0); + } uint256 rx = uint256(r); uint256 ry2 = addmod(mulmod(addmod(mulmod(rx, rx, P), A, P), rx, P), B, P); // weierstrass equation y² = x³ + a.x + b From 1a8cb630692d73337a671387d437421decb01699 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 26 Jun 2024 17:01:02 +0200 Subject: [PATCH 72/76] add bound checks to isOnCurve --- contracts/utils/cryptography/P256.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 36ca38b5d9f..d5f37c74032 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -137,14 +137,15 @@ library P256 { } /** - * @dev Checks if a point is on the curve. + * @dev Checks if (x, y) are valid coordinates of a point on the curve. + * In particular this function checks that x <= P and y <= P. */ function isOnCurve(bytes32 x, bytes32 y) internal pure returns (bool result) { assembly ("memory-safe") { let p := P let lhs := mulmod(y, y, p) // y^2 let rhs := addmod(mulmod(addmod(mulmod(x, x, p), A, p), x, p), B, p) // ((x^2 + a) * x) + b = x^3 + ax + b - result := eq(lhs, rhs) // Should conform with the Weierstrass equation + result := and(and(lt(x, p), lt(y, p)), eq(lhs, rhs)) // Should conform with the Weierstrass equation } } From 3c3fa27141eaff6d8d2aa6d1cd7fbd01ac810487 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Wed, 26 Jun 2024 21:20:31 +0200 Subject: [PATCH 73/76] rename isOnCurve -> isValidPublicKey + add _isProperSignature helper --- contracts/utils/cryptography/P256.sol | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index d5f37c74032..580f81fe0be 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -82,7 +82,7 @@ library P256 { bytes32 qx, bytes32 qy ) private view returns (bool valid, bool supported) { - if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || !isOnCurve(qx, qy)) { + if (!_isProperSignature(r, s) || !isValidPublicKey(qx, qy)) { return (false, true); // signature is invalid, and its not because the precompile is missing } @@ -94,7 +94,7 @@ library P256 { * @dev Same as {verify}, but only the Solidity implementation is used. */ function verifySolidity(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { - if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || !isOnCurve(qx, qy)) { + if (!_isProperSignature(r, s) || !isValidPublicKey(qx, qy)) { return false; } @@ -118,7 +118,7 @@ library P256 { * To flip the `s` value, compute `s = N - s` and `v = 1 - v` if (`v = 0 | 1`). */ function recovery(bytes32 h, uint8 v, bytes32 r, bytes32 s) internal view returns (bytes32, bytes32) { - if (r == 0 || uint256(r) >= N || s == 0 || uint256(s) > HALF_N || v > 1) { + if (!_isProperSignature(r, s) || v > 1) { return (0, 0); } @@ -140,7 +140,7 @@ library P256 { * @dev Checks if (x, y) are valid coordinates of a point on the curve. * In particular this function checks that x <= P and y <= P. */ - function isOnCurve(bytes32 x, bytes32 y) internal pure returns (bool result) { + function isValidPublicKey(bytes32 x, bytes32 y) internal pure returns (bool result) { assembly ("memory-safe") { let p := P let lhs := mulmod(y, y, p) // y^2 @@ -149,6 +149,14 @@ library P256 { } } + /** + * @dev Checks if (r, s) is a proper signature. + * In particular, this checks that `s` is in the "lower-range", making the signature non-maleable. + */ + function _isProperSignature(bytes32 r, bytes32 s) private pure returns (bool) { + return uint256(r) > 0 && uint256(r) < N && uint256(s) > 0 && uint256(s) <= HALF_N; + } + /** * @dev Reduce from jacobian to affine coordinates * @param jx - jacobian coordinate x From 2fe4a166fcf0967ff6b206918adf597d757204cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Thu, 27 Jun 2024 16:12:29 -0600 Subject: [PATCH 74/76] Update contracts/utils/cryptography/P256.sol --- contracts/utils/cryptography/P256.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index 580f81fe0be..d4fdc556544 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -151,7 +151,7 @@ library P256 { /** * @dev Checks if (r, s) is a proper signature. - * In particular, this checks that `s` is in the "lower-range", making the signature non-maleable. + * In particular, this checks that `s` is in the "lower-range", making the signature non-malleable. */ function _isProperSignature(bytes32 r, bytes32 s) private pure returns (bool) { return uint256(r) > 0 && uint256(r) < N && uint256(s) > 0 && uint256(s) <= HALF_N; From 2420d13fb84a614d0e307237c700763fc232ca80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Mon, 1 Jul 2024 14:16:53 -0600 Subject: [PATCH 75/76] Update contracts/utils/cryptography/P256.sol --- contracts/utils/cryptography/P256.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contracts/utils/cryptography/P256.sol b/contracts/utils/cryptography/P256.sol index d4fdc556544..83c9c975447 100644 --- a/contracts/utils/cryptography/P256.sol +++ b/contracts/utils/cryptography/P256.sol @@ -62,6 +62,9 @@ library P256 { /** * @dev Same as {verify}, but it will revert if the required precompile is not available. + * + * Make sure any logic (code or precompile) deployed at that address is the expected one, + * otherwise the returned value may be misinterpreted as a positive boolean. */ function verifyNative(bytes32 h, bytes32 r, bytes32 s, bytes32 qx, bytes32 qy) internal view returns (bool) { (bool valid, bool supported) = _tryVerifyNative(h, r, s, qx, qy); From 5314727fadea9c507b952c138c438cde7fa5f9c7 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Wed, 3 Jul 2024 00:28:20 -0600 Subject: [PATCH 76/76] Enable --ir-minimum in forge coverage --- scripts/checks/coverage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/checks/coverage.sh b/scripts/checks/coverage.sh index 12e2323547a..a591069c493 100755 --- a/scripts/checks/coverage.sh +++ b/scripts/checks/coverage.sh @@ -10,7 +10,7 @@ hardhat coverage if [ "${CI:-"false"}" == "true" ]; then # Foundry coverage - forge coverage --report lcov + forge coverage --report lcov --ir-minimum # Remove zero hits sed -i '/,0/d' lcov.info fi