From e548c4a3c602b87a2b01756c7eb82e125030cfb2 Mon Sep 17 00:00:00 2001
From: CPlusSharp
Date: Fri, 12 Nov 2021 21:39:02 +0100
Subject: [PATCH 1/3] fix ecdsa unit test includes
add missing base64x-1.1.js
---
test/qunit-do-ecdsamod-unsupport.html | 1 +
test/qunit-do-ecdsamod.html | 1 +
test/qunit-do-ecparam.html | 1 +
3 files changed, 3 insertions(+)
diff --git a/test/qunit-do-ecdsamod-unsupport.html b/test/qunit-do-ecdsamod-unsupport.html
index 24833682..904c24f7 100755
--- a/test/qunit-do-ecdsamod-unsupport.html
+++ b/test/qunit-do-ecdsamod-unsupport.html
@@ -32,6 +32,7 @@
+
diff --git a/test/qunit-do-ecdsamod.html b/test/qunit-do-ecdsamod.html
index 2ea270ff..f6beac76 100755
--- a/test/qunit-do-ecdsamod.html
+++ b/test/qunit-do-ecdsamod.html
@@ -32,6 +32,7 @@
+
diff --git a/test/qunit-do-ecparam.html b/test/qunit-do-ecparam.html
index 00768e44..c64c5156 100755
--- a/test/qunit-do-ecparam.html
+++ b/test/qunit-do-ecparam.html
@@ -32,6 +32,7 @@
+
From f2037281239546c585f028a710c12391244b3e6b Mon Sep 17 00:00:00 2001
From: CPlusSharp
Date: Fri, 12 Nov 2021 18:53:30 +0100
Subject: [PATCH 2/3] Support P-521 curve
---
sample/sample-ecdsa.html | 1 +
src/asn1x509-1.0.js | 1 +
src/crypto-1.1.js | 3 +-
src/ecdsa-modified-1.0.js | 13 ++++++---
src/ecparam-1.0.js | 3 +-
src/keyutil-1.0.js | 2 +-
test/qunit-do-ecdsamod-s.html | 2 +-
test/qunit-do-ecdsamod-unsupport.html | 2 +-
test/qunit-do-ecdsamod.html | 41 ++++++++++++++++++++++++++-
test/qunit-do-ecparam.html | 23 ++++++++++++++-
10 files changed, 80 insertions(+), 11 deletions(-)
diff --git a/sample/sample-ecdsa.html b/sample/sample-ecdsa.html
index 0e10ba7f..f8b375d2 100755
--- a/sample/sample-ecdsa.html
+++ b/sample/sample-ecdsa.html
@@ -84,6 +84,7 @@ (Step1) choose supported EC curve name and generate key pair
secp256r1 (= NIST P-256, P-256, prime256v1)
secp256k1
secp384r1 (= NIST P-384, P-384)
+ secp521r1 (= NIST P-521, P-521)
diff --git a/src/asn1x509-1.0.js b/src/asn1x509-1.0.js
index 837e7a4c..362b4348 100644
--- a/src/asn1x509-1.0.js
+++ b/src/asn1x509-1.0.js
@@ -4162,6 +4162,7 @@ KJUR.asn1.x509.OID = new function(params) {
'secp256r1': '1.2.840.10045.3.1.7',
'secp256k1': '1.3.132.0.10',
'secp384r1': '1.3.132.0.34',
+ 'secp521r1': '1.3.132.0.35',
'pkcs5PBES2': '1.2.840.113549.1.5.13',
'pkcs5PBKDF2': '1.2.840.113549.1.5.12',
diff --git a/src/crypto-1.1.js b/src/crypto-1.1.js
index 18d0d20d..7f251470 100644
--- a/src/crypto-1.1.js
+++ b/src/crypto-1.1.js
@@ -1012,6 +1012,7 @@ KJUR.crypto.Mac = function(params) {
*
secp256k1
* secp256r1, NIST P-256, P-256, prime256v1
* secp384r1, NIST P-384, P-384
+ * secp521r1, NIST P-521, P-521
*
* NOTE1: DSA signing algorithm is also supported since crypto 1.1.5.
* EXAMPLES
@@ -1512,8 +1513,8 @@ KJUR.crypto.OID = new function() {
'2b8104001f': 'secp192k1',
'2b81040021': 'secp224r1',
'2b8104000a': 'secp256k1',
- '2b81040023': 'secp521r1',
'2b81040022': 'secp384r1',
+ '2b81040023': 'secp521r1',
'2a8648ce380403': 'SHA1withDSA', // 1.2.840.10040.4.3
'608648016503040301': 'SHA224withDSA', // 2.16.840.1.101.3.4.3.1
'608648016503040302': 'SHA256withDSA', // 2.16.840.1.101.3.4.3.2
diff --git a/src/ecdsa-modified-1.0.js b/src/ecdsa-modified-1.0.js
index 6eeff5e8..8f7a2be3 100644
--- a/src/ecdsa-modified-1.0.js
+++ b/src/ecdsa-modified-1.0.js
@@ -39,6 +39,7 @@ if (typeof KJUR.crypto == "undefined" || !KJUR.crypto) KJUR.crypto = {};
* secp256r1, NIST P-256, P-256, prime256v1 (*)
* secp256k1 (*)
* secp384r1, NIST P-384, P-384 (*)
+ * secp521r1, NIST P-521, P-521 (*)
*
*
*/
@@ -134,7 +135,7 @@ KJUR.crypto.ECDSA = function(params) {
if (h.substr(0, 2) !== "04")
throw "this method supports uncompressed format(04) only";
- var charlen = this.ecparams.keylen / 4;
+ var charlen = this.ecparams.keycharlen;
if (h.length !== 2 + charlen * 2)
throw "malformed public key hex length";
@@ -162,6 +163,8 @@ KJUR.crypto.ECDSA = function(params) {
return "P-256";
if (s === "secp384r1" || s === "NIST P-384" || s === "P-384")
return "P-384";
+ if (s === "secp521r1" || s === "NIST P-521" || s === "P-521")
+ return "P-521";
return null;
};
@@ -185,7 +188,7 @@ KJUR.crypto.ECDSA = function(params) {
var biX = epPub.getX().toBigInteger();
var biY = epPub.getY().toBigInteger();
- var charlen = this.ecparams['keylen'] / 4;
+ var charlen = this.ecparams.keycharlen;
var hPrv = ("0000000000" + biPrv.toString(16)).slice(- charlen);
var hX = ("0000000000" + biX.toString(16)).slice(- charlen);
var hY = ("0000000000" + biY.toString(16)).slice(- charlen);
@@ -218,7 +221,7 @@ KJUR.crypto.ECDSA = function(params) {
var n = this.ecparams['n'];
// message hash is truncated with curve key length (FIPS 186-4 6.4)
- var e = new _BigInteger(hashHex.substring(0, this.ecparams.keylen / 4), 16);
+ var e = new _BigInteger(hashHex.substring(0, this.ecparams.keycharlen), 16);
do {
var k = this.getBigRandom(n);
@@ -277,7 +280,7 @@ KJUR.crypto.ECDSA = function(params) {
var Q = _ECPointFp.decodeFromHex(this.ecparams['curve'], pubkeyHex);
// message hash is truncated with curve key length (FIPS 186-4 6.4)
- var e = new _BigInteger(hashHex.substring(0, this.ecparams.keylen / 4), 16);
+ var e = new _BigInteger(hashHex.substring(0, this.ecparams.keycharlen), 16);
return this.verifyRaw(e, r, s, Q);
} catch (ex) {
@@ -846,10 +849,12 @@ KJUR.crypto.ECDSA.getName = function(s) {
if (s === "2b8104000a") return "secp256k1"; // 1.3.132.0.10
if (s === "2b81040021") return "secp224r1"; // 1.3.132.0.33
if (s === "2b81040022") return "secp384r1"; // 1.3.132.0.34
+ if (s === "2b81040023") return "secp521r1"; // 1.3.132.0.35
if ("|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(s) !== -1) return "secp256r1";
if ("|secp256k1|".indexOf(s) !== -1) return "secp256k1";
if ("|secp224r1|NIST P-224|P-224|".indexOf(s) !== -1) return "secp224r1";
if ("|secp384r1|NIST P-384|P-384|".indexOf(s) !== -1) return "secp384r1";
+ if ("|secp521r1|NIST P-521|P-521|".indexOf(s) !== -1) return "secp521r1";
return null;
};
diff --git a/src/ecparam-1.0.js b/src/ecparam-1.0.js
index dc11320c..eca5e57c 100644
--- a/src/ecparam-1.0.js
+++ b/src/ecparam-1.0.js
@@ -107,6 +107,7 @@ KJUR.crypto.ECParameterDB = new function() {
var G = curve.decodePointHex("04" + gxHex + gyHex);
db[name]['name'] = name;
db[name]['keylen'] = keylen;
+ db[name]['keycharlen'] = Math.ceil(keylen / 8) * 2; // for P-521
db[name]['curve'] = curve;
db[name]['G'] = G;
db[name]['n'] = n;
@@ -242,7 +243,7 @@ KJUR.crypto.ECParameterDB.regist(
"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", // b
"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", // n
"1", // h
- "C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66", // gx
+ "00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66", // gx
"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650", // gy
["NIST P-521", "P-521"]); // alias
diff --git a/src/keyutil-1.0.js b/src/keyutil-1.0.js
index 64a0dad6..3a769936 100644
--- a/src/keyutil-1.0.js
+++ b/src/keyutil-1.0.js
@@ -1238,7 +1238,7 @@ KEYUTIL.getKey = function(param, passcode, hextype) {
* NOTE1: As for RSA algoirthm, public exponent has fixed
* value '0x10001'.
* NOTE2: As for EC algorithm, supported names of curve are
- * secp256r1, secp256k1 and secp384r1.
+ * secp256r1, secp256k1, secp384r1 and secp521r1.
* NOTE3: DSA is not supported yet.
* @example
* var rsaKeypair = KEYUTIL.generateKeypair("RSA", 1024);
diff --git a/test/qunit-do-ecdsamod-s.html b/test/qunit-do-ecdsamod-s.html
index 5c1cf3e4..222ecd9a 100755
--- a/test/qunit-do-ecdsamod-s.html
+++ b/test/qunit-do-ecdsamod-s.html
@@ -61,7 +61,7 @@
NOTE:
-Currently this library works for only secp256r1, secp256k1 and secp384r1 EC curves
+Currently this library works for only secp256r1, secp256k1, secp384r1 and secp521 EC curves
besides some other curves are pre-defined.
diff --git a/test/qunit-do-ecdsamod-unsupport.html b/test/qunit-do-ecdsamod-unsupport.html
index 904c24f7..513f74fa 100755
--- a/test/qunit-do-ecdsamod-unsupport.html
+++ b/test/qunit-do-ecdsamod-unsupport.html
@@ -82,7 +82,7 @@
NOTE:
-Currently this library works for only secp256r1, secp256k1 and secp384r1 EC curves
+Currently this library works for only secp256r1, secp256k1, secp384r1 and secp521 EC curves
besides some other curves are pre-defined.
diff --git a/test/qunit-do-ecdsamod.html b/test/qunit-do-ecdsamod.html
index f6beac76..960d743b 100755
--- a/test/qunit-do-ecdsamod.html
+++ b/test/qunit-do-ecdsamod.html
@@ -217,6 +217,15 @@
equal(keypair['ecpubhex'].length, (384 / 4) * 2 + 2, "public key hexstr length");
});
+test("generate ECC key for secp521r1 curve", function() {
+ var ec = new KJUR.crypto.ECDSA({"curve": "secp521r1"});
+ var keypair = ec.generateKeyPairHex();
+
+ expect(2);
+ equal(keypair['ecprvhex'].length, Math.ceil(521 / 8) * 2, "private key hexstr length");
+ equal(keypair['ecpubhex'].length, (Math.ceil(521 / 8) * 2) * 2 + 2, "public key hexstr length");
+});
+
test("key generation, signing and verification for secp256r1 curve", function() {
// key generation
var ec0 = new KJUR.crypto.ECDSA({'curve': 'secp256r1'});
@@ -232,6 +241,36 @@
equal(result2, true, "ecdsa sign");
});
+test("key generation, signing and verification for secp384r1 curve", function() {
+ // key generation
+ var ec0 = new KJUR.crypto.ECDSA({'curve': 'secp384r1'});
+ var keypair = ec0.generateKeyPairHex();
+
+ // signing
+ var ec1 = new KJUR.crypto.ECDSA({'curve': 'secp384r1'});
+ var sigHex = ec1.signHex(hashAAA256Hex, keypair.ecprvhex);
+
+ // signature validation
+ var ec2 = new KJUR.crypto.ECDSA({'curve': 'secp384r1'});
+ var result2 = ec2.verifyHex(hashAAA256Hex, sigHex, keypair.ecpubhex);
+ equal(result2, true, "ecdsa sign");
+});
+
+test("key generation, signing and verification for secp521r1 curve", function() {
+ // key generation
+ var ec0 = new KJUR.crypto.ECDSA({'curve': 'secp521r1'});
+ var keypair = ec0.generateKeyPairHex();
+
+ // signing
+ var ec1 = new KJUR.crypto.ECDSA({'curve': 'secp521r1'});
+ var sigHex = ec1.signHex(hashAAA256Hex, keypair.ecprvhex);
+
+ // signature validation
+ var ec2 = new KJUR.crypto.ECDSA({'curve': 'secp521r1'});
+ var result2 = ec2.verifyHex(hashAAA256Hex, sigHex, keypair.ecpubhex);
+ equal(result2, true, "ecdsa sign");
+});
+
test("getPublicKeyXYHex() method test", function() {
var ec1 = new KJUR.crypto.ECDSA({'curve': 'secp256r1', 'pub': ECK1PUBHEX});
var xy = ec1.getPublicKeyXYHex();
@@ -295,7 +334,7 @@
NOTE:
-Currently this library works for only secp256r1, secp256k1 and secp384r1 EC curves
+Currently this library works for only secp256r1, secp256k1, secp384r1 and secp521 EC curves
besides some other curves are pre-defined.
diff --git a/test/qunit-do-ecparam.html b/test/qunit-do-ecparam.html
index c64c5156..f6906640 100755
--- a/test/qunit-do-ecparam.html
+++ b/test/qunit-do-ecparam.html
@@ -44,13 +44,34 @@
test("ECParameterDB NIST P-256", function() {
var db = KJUR.crypto.ECParameterDB;
- expect(5);
+ expect(6);
equal(typeof db.getByName("secp256r1"), "object", "secp256r1 defined");
equal(typeof db.getByName("NIST P-256"), "object", "alias NIST P-256 defined");
equal(typeof db.getByName("P-256"), "object", "alias P-256 defined");
equal(typeof db.getByName("prime256v1"), "object", "alias prime256v1 defined");
var ecparam = db.getByName("prime256v1");
equal(ecparam['n'].toString(16), "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", "prime256v1:n = ");
+ equal(ecparam.keycharlen, 64, "prime256v1:keycharlen = ");
+});
+
+test("ECParameterDB NIST P-384", function() {
+ var db = KJUR.crypto.ECParameterDB;
+ expect(4);
+ equal(typeof db.getByName("secp384r1"), "object", "secp384r1 defined");
+ equal(typeof db.getByName("NIST P-384"), "object", "alias NIST P-384 defined");
+ equal(typeof db.getByName("P-384"), "object", "alias P-384 defined");
+ var ecparam = db.getByName("secp384r1");
+ equal(ecparam.keycharlen, 96, "secp384r1:keycharlen = ");
+});
+
+test("ECParameterDB NIST P-521", function() {
+ var db = KJUR.crypto.ECParameterDB;
+ expect(4);
+ equal(typeof db.getByName("secp521r1"), "object", "secp521r1 defined");
+ equal(typeof db.getByName("NIST P-521"), "object", "alias NIST P-521 defined");
+ equal(typeof db.getByName("P-521"), "object", "alias P-521 defined");
+ var ecparam = db.getByName("secp521r1");
+ equal(ecparam.keycharlen, 132, "secp521r1:keycharlen = ");
});
});
From fae1b819b1171d5e30a2c0d58e8f48edbb2e4cbf Mon Sep 17 00:00:00 2001
From: CPlusSharp
Date: Sun, 14 Nov 2021 16:33:06 +0100
Subject: [PATCH 3/3] Test ECDSA public key generation against testvectors
- make ECDSA public key generation an own method so we can test it
- test against the testvectors
---
src/ecdsa-modified-1.0.js | 34 +-
test/ecc-testvectors.js | 635 ++++++++++++++++++++++++++++++++++++
test/qunit-do-ecdsamod.html | 36 ++
3 files changed, 696 insertions(+), 9 deletions(-)
create mode 100644 test/ecc-testvectors.js
diff --git a/src/ecdsa-modified-1.0.js b/src/ecdsa-modified-1.0.js
index 8f7a2be3..25f5d26f 100644
--- a/src/ecdsa-modified-1.0.js
+++ b/src/ecdsa-modified-1.0.js
@@ -184,21 +184,37 @@ KJUR.crypto.ECDSA = function(params) {
this.generateKeyPairHex = function() {
var biN = this.ecparams['n'];
var biPrv = this.getBigRandom(biN);
- var epPub = this.ecparams['G'].multiply(biPrv);
- var biX = epPub.getX().toBigInteger();
- var biY = epPub.getY().toBigInteger();
-
var charlen = this.ecparams.keycharlen;
var hPrv = ("0000000000" + biPrv.toString(16)).slice(- charlen);
- var hX = ("0000000000" + biX.toString(16)).slice(- charlen);
- var hY = ("0000000000" + biY.toString(16)).slice(- charlen);
- var hPub = "04" + hX + hY;
-
this.setPrivateKeyHex(hPrv);
- this.setPublicKeyHex(hPub);
+ hPub = this.generatePublicKeyHex();
return {'ecprvhex': hPrv, 'ecpubhex': hPub};
};
+ /**
+ * generate public key for EC private key
+ * @name generatePublicKeyHex
+ * @memberOf KJUR.crypto.ECDSA#
+ * @function
+ * @return {String} associative array of hexadecimal string of private and public key
+ * @example
+ * var ec = new KJUR.crypto.ECDSA({'curve': 'secp256r1', 'prv': prvHex});
+ * var pubhex = ec.generatePublicKeyHex(); // hexadecimal string of EC public key
+ * var pub ec.getPublicKeyXYHex() → { x: '01bacf...', y: 'c3bc22...' }
+ */
+ this.generatePublicKeyHex = function() {
+ var biPrv = new _BigInteger(this.prvKeyHex, 16);
+ var epPub = this.ecparams['G'].multiply(biPrv);
+ var biX = epPub.getX().toBigInteger();
+ var biY = epPub.getY().toBigInteger();
+ var charlen = this.ecparams.keycharlen;;
+ var hX = ("0000000000" + biX.toString(16)).slice(- charlen);
+ var hY = ("0000000000" + biY.toString(16)).slice(- charlen);
+ var hPub = "04" + hX + hY;
+ this.setPublicKeyHex(hPub);
+ return hPub;
+ }
+
this.signWithMessageHash = function(hashHex) {
return this.signHex(hashHex, this.prvKeyHex);
};
diff --git a/test/ecc-testvectors.js b/test/ecc-testvectors.js
new file mode 100644
index 00000000..9cd39381
--- /dev/null
+++ b/test/ecc-testvectors.js
@@ -0,0 +1,635 @@
+// testvectors from http://point-at-infinity.org/ecc/nisttv
+const ECC_TESTVECTORS = {
+ "secp256r1": [
+ { "k": "1",
+ "x": "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
+ "y": "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",
+ },
+ { "k": "2",
+ "x": "7CF27B188D034F7E8A52380304B51AC3C08969E277F21B35A60B48FC47669978",
+ "y": "07775510DB8ED040293D9AC69F7430DBBA7DADE63CE982299E04B79D227873D1",
+ },
+ { "k": "3",
+ "x": "5ECBE4D1A6330A44C8F7EF951D4BF165E6C6B721EFADA985FB41661BC6E7FD6C",
+ "y": "8734640C4998FF7E374B06CE1A64A2ECD82AB036384FB83D9A79B127A27D5032",
+ },
+ { "k": "4",
+ "x": "E2534A3532D08FBBA02DDE659EE62BD0031FE2DB785596EF509302446B030852",
+ "y": "E0F1575A4C633CC719DFEE5FDA862D764EFC96C3F30EE0055C42C23F184ED8C6",
+ },
+ { "k": "5",
+ "x": "51590B7A515140D2D784C85608668FDFEF8C82FD1F5BE52421554A0DC3D033ED",
+ "y": "E0C17DA8904A727D8AE1BF36BF8A79260D012F00D4D80888D1D0BB44FDA16DA4",
+ },
+ { "k": "6",
+ "x": "B01A172A76A4602C92D3242CB897DDE3024C740DEBB215B4C6B0AAE93C2291A9",
+ "y": "E85C10743237DAD56FEC0E2DFBA703791C00F7701C7E16BDFD7C48538FC77FE2",
+ },
+ { "k": "7",
+ "x": "8E533B6FA0BF7B4625BB30667C01FB607EF9F8B8A80FEF5B300628703187B2A3",
+ "y": "73EB1DBDE03318366D069F83A6F5900053C73633CB041B21C55E1A86C1F400B4",
+ },
+ { "k": "8",
+ "x": "62D9779DBEE9B0534042742D3AB54CADC1D238980FCE97DBB4DD9DC1DB6FB393",
+ "y": "AD5ACCBD91E9D8244FF15D771167CEE0A2ED51F6BBE76A78DA540A6A0F09957E",
+ },
+ { "k": "9",
+ "x": "EA68D7B6FEDF0B71878938D51D71F8729E0ACB8C2C6DF8B3D79E8A4B90949EE0",
+ "y": "2A2744C972C9FCE787014A964A8EA0C84D714FEAA4DE823FE85A224A4DD048FA",
+ },
+ { "k": "10",
+ "x": "CEF66D6B2A3A993E591214D1EA223FB545CA6C471C48306E4C36069404C5723F",
+ "y": "878662A229AAAE906E123CDD9D3B4C10590DED29FE751EEECA34BBAA44AF0773",
+ },
+ { "k": "11",
+ "x": "3ED113B7883B4C590638379DB0C21CDA16742ED0255048BF433391D374BC21D1",
+ "y": "9099209ACCC4C8A224C843AFA4F4C68A090D04DA5E9889DAE2F8EEFCE82A3740",
+ },
+ { "k": "12",
+ "x": "741DD5BDA817D95E4626537320E5D55179983028B2F82C99D500C5EE8624E3C4",
+ "y": "0770B46A9C385FDC567383554887B1548EEB912C35BA5CA71995FF22CD4481D3",
+ },
+ { "k": "13",
+ "x": "177C837AE0AC495A61805DF2D85EE2FC792E284B65EAD58A98E15D9D46072C01",
+ "y": "63BB58CD4EBEA558A24091ADB40F4E7226EE14C3A1FB4DF39C43BBE2EFC7BFD8",
+ },
+ { "k": "14",
+ "x": "54E77A001C3862B97A76647F4336DF3CF126ACBE7A069C5E5709277324D2920B",
+ "y": "F599F1BB29F4317542121F8C05A2E7C37171EA77735090081BA7C82F60D0B375",
+ },
+ { "k": "15",
+ "x": "F0454DC6971ABAE7ADFB378999888265AE03AF92DE3A0EF163668C63E59B9D5F",
+ "y": "B5B93EE3592E2D1F4E6594E51F9643E62A3B21CE75B5FA3F47E59CDE0D034F36",
+ },
+ { "k": "16",
+ "x": "76A94D138A6B41858B821C629836315FCD28392EFF6CA038A5EB4787E1277C6E",
+ "y": "A985FE61341F260E6CB0A1B5E11E87208599A0040FC78BAA0E9DDD724B8C5110",
+ },
+ { "k": "17",
+ "x": "47776904C0F1CC3A9C0984B66F75301A5FA68678F0D64AF8BA1ABCE34738A73E",
+ "y": "AA005EE6B5B957286231856577648E8381B2804428D5733F32F787FF71F1FCDC",
+ },
+ { "k": "18",
+ "x": "1057E0AB5780F470DEFC9378D1C7C87437BB4C6F9EA55C63D936266DBD781FDA",
+ "y": "F6F1645A15CBE5DC9FA9B7DFD96EE5A7DCC11B5C5EF4F1F78D83B3393C6A45A2",
+ },
+ { "k": "19",
+ "x": "CB6D2861102C0C25CE39B7C17108C507782C452257884895C1FC7B74AB03ED83",
+ "y": "58D7614B24D9EF515C35E7100D6D6CE4A496716E30FA3E03E39150752BCECDAA",
+ },
+ { "k": "20",
+ "x": "83A01A9378395BAB9BCD6A0AD03CC56D56E6B19250465A94A234DC4C6B28DA9A",
+ "y": "76E49B6DE2F73234AE6A5EB9D612B75C9F2202BB6923F54FF8240AAA86F640B8",
+ },
+ { "k": "112233445566778899",
+ "x": "339150844EC15234807FE862A86BE77977DBFB3AE3D96F4C22795513AEAAB82F",
+ "y": "B1C14DDFDC8EC1B2583F51E85A5EB3A155840F2034730E9B5ADA38B674336A21",
+ },
+ { "k": "112233445566778899112233445566778899",
+ "x": "1B7E046A076CC25E6D7FA5003F6729F665CC3241B5ADAB12B498CD32F2803264",
+ "y": "BFEA79BE2B666B073DB69A2A241ADAB0738FE9D2DD28B5604EB8C8CF097C457B",
+ },
+ { "k": "29852220098221261079183923314599206100666902414330245206392788703677545185283",
+ "x": "9EACE8F4B071E677C5350B02F2BB2B384AAE89D58AA72CA97A170572E0FB222F",
+ "y": "1BBDAEC2430B09B93F7CB08678636CE12EAAFD58390699B5FD2F6E1188FC2A78",
+ },
+ { "k": "57896042899961394862005778464643882389978449576758748073725983489954366354431",
+ "x": "878F22CC6DB6048D2B767268F22FFAD8E56AB8E2DC615F7BD89F1E350500DD8D",
+ "y": "714A5D7BB901C9C5853400D12341A892EF45D87FC553786756C4F0C9391D763E",
+ },
+ { "k": "1766845392945710151501889105729049882997660004824848915955419660366636031",
+ "x": "659A379625AB122F2512B8DADA02C6348D53B54452DFF67AC7ACE4E8856295CA",
+ "y": "49D81AB97B648464D0B4A288BD7818FAB41A16426E943527C4FED8736C53D0F6",
+ },
+ { "k": "28948025760307534517734791687894775804466072615242963443097661355606862201087",
+ "x": "CBCEAAA8A4DD44BBCE58E8DB7740A5510EC2CB7EA8DA8D8F036B3FB04CDA4DE4",
+ "y": "4BD7AA301A80D7F59FD983FEDBE59BB7B2863FE46494935E3745B360E32332FA",
+ },
+ { "k": "113078210460870548944811695960290644973229224625838436424477095834645696384",
+ "x": "F0C4A0576154FF3A33A3460D42EAED806E854DFA37125221D37935124BA462A4",
+ "y": "5B392FA964434D29EEC6C9DBC261CF116796864AA2FAADB984A2DF38D1AEF7A3",
+ },
+ { "k": "12078056106883488161242983286051341125085761470677906721917479268909056",
+ "x": "5E6C8524B6369530B12C62D31EC53E0288173BD662BDF680B53A41ECBCAD00CC",
+ "y": "447FE742C2BFEF4D0DB14B5B83A2682309B5618E0064A94804E9282179FE089F",
+ },
+ { "k": "57782969857385448082319957860328652998540760998293976083718804450708503920639",
+ "x": "03792E541BC209076A3D7920A915021ECD396A6EB5C3960024BE5575F3223484",
+ "y": "FC774AE092403101563B712F68170312304F20C80B40C06282063DB25F268DE4",
+ },
+ { "k": "57896017119460046759583662757090100341435943767777707906455551163257755533312",
+ "x": "2379FF85AB693CDF901D6CE6F2473F39C04A2FE3DCD842CE7AAB0E002095BCF8",
+ "y": "F8B476530A634589D5129E46F322B02FBC610A703D80875EE70D7CE1877436A1",
+ },
+ { "k": "452312848374287284681282171017647412726433684238464212999305864837160993279",
+ "x": "C1E4072C529BF2F44DA769EFC934472848003B3AF2C0F5AA8F8DDBD53E12ED7C",
+ "y": "39A6EE77812BB37E8079CD01ED649D3830FCA46F718C1D3993E4A591824ABCDB",
+ },
+ { "k": "904571339174065134293634407946054000774746055866917729876676367558469746684",
+ "x": "34DFBC09404C21E250A9B40FA8772897AC63A094877DB65862B61BD1507B34F3",
+ "y": "CF6F8A876C6F99CEAEC87148F18C7E1E0DA6E165FFC8ED82ABB65955215F77D3",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044349",
+ "x": "83A01A9378395BAB9BCD6A0AD03CC56D56E6B19250465A94A234DC4C6B28DA9A",
+ "y": "891B64911D08CDCC5195A14629ED48A360DDFD4596DC0AB007DBF5557909BF47",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044350",
+ "x": "CB6D2861102C0C25CE39B7C17108C507782C452257884895C1FC7B74AB03ED83",
+ "y": "A7289EB3DB2610AFA3CA18EFF292931B5B698E92CF05C1FC1C6EAF8AD4313255",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044351",
+ "x": "1057E0AB5780F470DEFC9378D1C7C87437BB4C6F9EA55C63D936266DBD781FDA",
+ "y": "090E9BA4EA341A246056482026911A58233EE4A4A10B0E08727C4CC6C395BA5D",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044352",
+ "x": "47776904C0F1CC3A9C0984B66F75301A5FA68678F0D64AF8BA1ABCE34738A73E",
+ "y": "55FFA1184A46A8D89DCE7A9A889B717C7E4D7FBCD72A8CC0CD0878008E0E0323",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044353",
+ "x": "76A94D138A6B41858B821C629836315FCD28392EFF6CA038A5EB4787E1277C6E",
+ "y": "567A019DCBE0D9F2934F5E4A1EE178DF7A665FFCF0387455F162228DB473AEEF",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044354",
+ "x": "F0454DC6971ABAE7ADFB378999888265AE03AF92DE3A0EF163668C63E59B9D5F",
+ "y": "4A46C11BA6D1D2E1B19A6B1AE069BC19D5C4DE328A4A05C0B81A6321F2FCB0C9",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044355",
+ "x": "54E77A001C3862B97A76647F4336DF3CF126ACBE7A069C5E5709277324D2920B",
+ "y": "0A660E43D60BCE8BBDEDE073FA5D183C8E8E15898CAF6FF7E45837D09F2F4C8A",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044356",
+ "x": "177C837AE0AC495A61805DF2D85EE2FC792E284B65EAD58A98E15D9D46072C01",
+ "y": "9C44A731B1415AA85DBF6E524BF0B18DD911EB3D5E04B20C63BC441D10384027",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044357",
+ "x": "741DD5BDA817D95E4626537320E5D55179983028B2F82C99D500C5EE8624E3C4",
+ "y": "F88F4B9463C7A024A98C7CAAB7784EAB71146ED4CA45A358E66A00DD32BB7E2C",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044358",
+ "x": "3ED113B7883B4C590638379DB0C21CDA16742ED0255048BF433391D374BC21D1",
+ "y": "6F66DF64333B375EDB37BC505B0B3975F6F2FB26A16776251D07110317D5C8BF",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044359",
+ "x": "CEF66D6B2A3A993E591214D1EA223FB545CA6C471C48306E4C36069404C5723F",
+ "y": "78799D5CD655517091EDC32262C4B3EFA6F212D7018AE11135CB4455BB50F88C",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044360",
+ "x": "EA68D7B6FEDF0B71878938D51D71F8729E0ACB8C2C6DF8B3D79E8A4B90949EE0",
+ "y": "D5D8BB358D36031978FEB569B5715F37B28EB0165B217DC017A5DDB5B22FB705",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044361",
+ "x": "62D9779DBEE9B0534042742D3AB54CADC1D238980FCE97DBB4DD9DC1DB6FB393",
+ "y": "52A533416E1627DCB00EA288EE98311F5D12AE0A4418958725ABF595F0F66A81",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044362",
+ "x": "8E533B6FA0BF7B4625BB30667C01FB607EF9F8B8A80FEF5B300628703187B2A3",
+ "y": "8C14E2411FCCE7CA92F9607C590A6FFFAC38C9CD34FBE4DE3AA1E5793E0BFF4B",
+ },
+ { "k": "115792089210356248762697446949407573529996955224135760342422259061068512044363",
+ "x": "B01A172A76A4602C92D3242CB897DDE3024C740DEBB215B4C6B0AAE93C2291A9",
+ "y": "17A3EF8ACDC8252B9013F1D20458FC86E3FF0890E381E9420283B7AC7038801D",
+ },
+ { "k":"115792089210356248762697446949407573529996955224135760342422259061068512044364",
+ "x":"51590B7A515140D2D784C85608668FDFEF8C82FD1F5BE52421554A0DC3D033ED",
+ "y":"1F3E82566FB58D83751E40C9407586D9F2FED1002B27F7772E2F44BB025E925B",
+ },
+ { "k":"115792089210356248762697446949407573529996955224135760342422259061068512044365",
+ "x":"E2534A3532D08FBBA02DDE659EE62BD0031FE2DB785596EF509302446B030852",
+ "y":"1F0EA8A4B39CC339E62011A02579D289B103693D0CF11FFAA3BD3DC0E7B12739",
+ },
+ { "k":"115792089210356248762697446949407573529996955224135760342422259061068512044366",
+ "x":"5ECBE4D1A6330A44C8F7EF951D4BF165E6C6B721EFADA985FB41661BC6E7FD6C",
+ "y":"78CB9BF2B6670082C8B4F931E59B5D1327D54FCAC7B047C265864ED85D82AFCD",
+ },
+ { "k":"115792089210356248762697446949407573529996955224135760342422259061068512044367",
+ "x":"7CF27B188D034F7E8A52380304B51AC3C08969E277F21B35A60B48FC47669978",
+ "y":"F888AAEE24712FC0D6C26539608BCF244582521AC3167DD661FB4862DD878C2E",
+ },
+ { "k":"115792089210356248762697446949407573529996955224135760342422259061068512044368",
+ "x":"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
+ "y":"B01CBD1C01E58065711814B583F061E9D431CCA994CEA1313449BF97C840AE0A",
+ }
+ ],
+
+ "secp384r1": [
+ { "k":"1",
+ "x":"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7",
+ "y":"3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F",
+ },
+ { "k":"2",
+ "x":"08D999057BA3D2D969260045C55B97F089025959A6F434D651D207D19FB96E9E4FE0E86EBE0E64F85B96A9C75295DF61",
+ "y":"8E80F1FA5B1B3CEDB7BFE8DFFD6DBA74B275D875BC6CC43E904E505F256AB4255FFD43E94D39E22D61501E700A940E80",
+ },
+ { "k":"3",
+ "x":"077A41D4606FFA1464793C7E5FDC7D98CB9D3910202DCD06BEA4F240D3566DA6B408BBAE5026580D02D7E5C70500C831",
+ "y":"C995F7CA0B0C42837D0BBE9602A9FC998520B41C85115AA5F7684C0EDC111EACC24ABD6BE4B5D298B65F28600A2F1DF1",
+ },
+ { "k":"4",
+ "x":"138251CD52AC9298C1C8AAD977321DEB97E709BD0B4CA0ACA55DC8AD51DCFC9D1589A1597E3A5120E1EFD631C63E1835",
+ "y":"CACAE29869A62E1631E8A28181AB56616DC45D918ABC09F3AB0E63CF792AA4DCED7387BE37BBA569549F1C02B270ED67",
+ },
+ { "k":"5",
+ "x":"11DE24A2C251C777573CAC5EA025E467F208E51DBFF98FC54F6661CBE56583B037882F4A1CA297E60ABCDBC3836D84BC",
+ "y":"8FA696C77440F92D0F5837E90A00E7C5284B447754D5DEE88C986533B6901AEB3177686D0AE8FB33184414ABE6C1713A",
+ },
+ { "k":"6",
+ "x":"627BE1ACD064D2B2226FE0D26F2D15D3C33EBCBB7F0F5DA51CBD41F26257383021317D7202FF30E50937F0854E35C5DF",
+ "y":"09766A4CB3F8B1C21BE6DDA6C14F1575B2C95352644F774C99864F613715441604C45B8D84E165311733A408D3F0F934",
+ },
+ { "k":"7",
+ "x":"283C1D7365CE4788F29F8EBF234EDFFEAD6FE997FBEA5FFA2D58CC9DFA7B1C508B05526F55B9EBB2040F05B48FB6D0E1",
+ "y":"9475C99061E41B88BA52EFDB8C1690471A61D867ED799729D9C92CD01DBD225630D84EDE32A78F9E64664CDAC512EF8C",
+ },
+ { "k":"8",
+ "x":"1692778EA596E0BE75114297A6FA383445BF227FBE58190A900C3C73256F11FB5A3258D6F403D5ECE6E9B269D822C87D",
+ "y":"DCD2365700D4106A835388BA3DB8FD0E22554ADC6D521CD4BD1C30C2EC0EEC196BADE1E9CDD1708D6F6ABFA4022B0AD2",
+ },
+ { "k":"9",
+ "x":"8F0A39A4049BCB3EF1BF29B8B025B78F2216F7291E6FD3BAC6CB1EE285FB6E21C388528BFEE2B9535C55E4461079118B",
+ "y":"62C77E1438B601D6452C4A5322C3A9799A9B3D7CA3C400C6B7678854AED9B3029E743EFEDFD51B68262DA4F9AC664AF8",
+ },
+ { "k":"10",
+ "x":"A669C5563BD67EEC678D29D6EF4FDE864F372D90B79B9E88931D5C29291238CCED8E85AB507BF91AA9CB2D13186658FB",
+ "y":"A988B72AE7C1279F22D9083DB5F0ECDDF70119550C183C31C502DF78C3B705A8296D8195248288D997784F6AB73A21DD",
+ },
+ { "k":"11",
+ "x":"099056E27DA7B998DA1EEEC2904816C57FE935ED5837C37456C9FD14892D3F8C4749B66E3AFB81D626356F3B55B4DDD8",
+ "y":"2E4C0C234E30AB96688505544AC5E0396FC4EED8DFC363FD43FF93F41B52A3255466D51263AAFF357D5DBA8138C5E0BB",
+ },
+ { "k":"12",
+ "x":"952A7A349BD49289AB3AC421DCF683D08C2ED5E41F6D0E21648AF2691A481406DA4A5E22DA817CB466DA2EA77D2A7022",
+ "y":"A0320FAF84B5BC0563052DEAE6F66F2E09FB8036CE18A0EBB9028B096196B50D031AA64589743E229EF6BACCE21BD16E",
+ },
+ { "k":"13",
+ "x":"A567BA97B67AEA5BAFDAF5002FFCC6AB9632BFF9F01F873F6267BCD1F0F11C139EE5F441ABD99F1BAAF1CA1E3B5CBCE7",
+ "y":"DE1B38B3989F3318644E4147AF164ECC5185595046932EC086329BE057857D66776BCB8272218A7D6423A12736F429CC",
+ },
+ { "k":"14",
+ "x":"E8C8F94D44FBC2396BBEAC481B89D2B0877B1DFFD23E7DC95DE541EB651CCA2C41ABA24DBC02DE6637209ACCF0F59EA0",
+ "y":"891AE44356FC8AE0932BCBF6DE52C8A933B86191E7728D79C8319413A09D0F48FC468BA05509DE22D7EE5C9E1B67B888",
+ },
+ { "k":"15",
+ "x":"B3D13FC8B32B01058CC15C11D813525522A94156FFF01C205B21F9F7DA7C4E9CA849557A10B6383B4B88701A9606860B",
+ "y":"152919E7DF9162A61B049B2536164B1BEEBAC4A11D749AF484D1114373DFBFD9838D24F8B284AF50985D588D33F7BD62",
+ },
+ { "k":"16",
+ "x":"D5D89C3B5282369C5FBD88E2B231511A6B80DFF0E5152CF6A464FA9428A8583BAC8EBC773D157811A462B892401DAFCF",
+ "y":"D815229DE12906D241816D5E9A9448F1D41D4FC40E2A3BDB9CABA57E440A7ABAD1210CB8F49BF2236822B755EBAB3673",
+ },
+ { "k":"17",
+ "x":"4099952208B4889600A5EBBCB13E1A32692BEFB0733B41E6DCC614E42E5805F817012A991AF1F486CAF3A9ADD9FFCC03",
+ "y":"5ECF94777833059839474594AF603598163AD3F8008AD0CD9B797D277F2388B304DA4D2FAA9680ECFA650EF5E23B09A0",
+ },
+ { "k":"18",
+ "x":"DFB1FE3A40F7AC9B64C41D39360A7423828B97CB088A4903315E402A7089FA0F8B6C2355169CC9C99DFB44692A9B93DD",
+ "y":"453ACA1243B5EC6B423A68A25587E1613A634C1C42D2EE7E6C57F449A1C91DC89168B7036EC0A7F37A366185233EC522",
+ },
+ { "k":"19",
+ "x":"8D481DAB912BC8AB16858A211D750B77E07DBECCA86CD9B012390B430467AABF59C8651060801C0E9599E68713F5D41B",
+ "y":"A1592FF0121460857BE99F2A60669050B2291B68A1039AA0594B32FD7ADC0E8C11FFBA5608004E646995B07E75E52245",
+ },
+ { "k":"20",
+ "x":"605508EC02C534BCEEE9484C86086D2139849E2B11C1A9CA1E2808DEC2EAF161AC8A105D70D4F85C50599BE5800A623F",
+ "y":"5158EE87962AC6B81F00A103B8543A07381B7639A3A65F1353AEF11B733106DDE92E99B78DE367B48E238C38DAD8EEDD",
+ },
+ { "k":"112233445566778899",
+ "x":"A499EFE48839BC3ABCD1C5CEDBDD51904F9514DB44F4686DB918983B0C9DC3AEE05A88B72433E9515F91A329F5F4FA60",
+ "y":"3B7CA28EF31F809C2F1BA24AAED847D0F8B406A4B8968542DE139DB5828CA410E615D1182E25B91B1131E230B727D36A",
+ },
+ { "k":"112233445566778899112233445566778899",
+ "x":"90A0B1CAC601676B083F21E07BC7090A3390FE1B9C7F61D842D27FA315FB38D83667A11A71438773E483F2A114836B24",
+ "y":"3197D3C6123F0D6CD65D5F0DE106FEF36656CB16DC7CD1A6817EB1D51510135A8F492F72665CFD1053F75ED03A7D04C9",
+ },
+ { "k":"10158184112867540819754776755819761756724522948540419979637868435924061464745859402573149498125806098880003248619520",
+ "x":"F2A066BD332DC59BBC3D01DA1B124C687D8BB44611186422DE94C1DA4ECF150E664D353CCDB5CB2652685F8EB4D2CD49",
+ "y":"D6ED0BF75FDD8E53D87765FA746835B673881D6D1907163A2C43990D75B454294F942EC571AD5AAE1806CAF2BB8E9A4A",
+ },
+ { "k":"9850501551105991028245052605056992139810094908912799254115847683881357749738726091734403950439157209401153690566655",
+ "x":"5C7F9845D1C4AA44747F9137B6F9C39B36B26B8A62E8AF97290434D5F3B214F5A0131550ADB19058DC4C8780C4165C4A",
+ "y":"712F7FCCC86F647E70DB8798228CB16344AF3D00B139B6F8502939C2A965AF0EB4E39E2E16AB8F597B8D5630A50C9D85",
+ },
+ { "k":"9850502723405747097317271194763310482462751455185699630571661657946308788426092983270628740691202018691293898608608",
+ "x":"DD5838F7EC3B8ACF1BECFD746F8B668C577107E93548ED93ED0D254C112E76B10F053109EF8428BFCD50D38C4C030C57",
+ "y":"33244F479CDAC34F160D9E4CE2D19D2FF0E3305B5BF0EEF29E91E9DE6E28F678C61B773AA7E3C03740E1A49D1AA2493C",
+ },
+ { "k":"1146189371817832990947611400450889406070215735255370280811736587845016396640969656447803207438173695115264",
+ "x":"CB8ED893530BFBA04B4CA655923AAAD109A62BC8411D5925316C32D33602459C33057A1FBCB5F70AEB295D90F9165FBC",
+ "y":"426AEE3E91B08420F9B357B66D5AFCBCF3956590BF5564DBF9086042EB880493D19DA39AAA6436C6B5FC66CE5596B43F",
+ },
+ { "k":"9619341438217097641865390297189708858938017986426152622639500179774624579127744608993294698873437325090751520764",
+ "x":"67F714012B6B070182122DDD435CC1C2262A1AB88939BC6A2906CB2B4137C5E82B4582160F6403CAB887ACDF5786A268",
+ "y":"90E31CF398CE2F8C5897C7380BF541075D1B4D3CB70547262B7095731252F181AC0597C66AF8311C7780DB39DEC0BD32",
+ },
+ { "k":"1231307996623833742387400352380172566077927415136813282735641918395585376659282194317590461518639141730493780722175",
+ "x":"55A79DF7B53A99D31462C7E1A5ED5623970715BB1021098CB973A7520CBD6365E613E4B2467486FB37E86E01CEE09B8F",
+ "y":"B95AEB71693189911661B709A886A1867F056A0EFE401EE11C06030E46F7A87731DA4575863178012208707DD666727C",
+ },
+ { "k":"587118838854683800942906722504810343086699021451906946003274128973058942197377013128840514404789143516741631",
+ "x":"9539A968CF819A0E52E10EEA3BACA1B6480D7E4DF69BC07002C568569047110EE4FE72FCA423FDD5179D6E0E19C44844",
+ "y":"A7728F37A0AE0DF2716061900D83A4DA149144129F89A214A8260464BAB609BB322E4E67DE5E4C4C6CB8D25983EC19B0",
+ },
+ { "k":"153914077530671739663795070876894766451466019374644150541452557147890542143280855693795882295846834387672681660416",
+ "x":"933FC13276672AB360D909161CD02D830B1628935DF0D800C6ED602C59D575A86A8A97E3A2D697E3ED06BE741C0097D6",
+ "y":"F35296BD7A6B4C6C025ED6D84338CCCC7522A45C5D4FBDB1442556CAEFB598128FA188793ADA510EB5F44E90A4E4BEF1",
+ },
+ { "k":"75148784606135150476268171850082176256856776750560539466196504390587921789283134009866871754361028131485122560",
+ "x":"0CE31E1C4A937071E6EBACA026A93D783848BCC0C1585DAF639518125FCD1F1629D63041ABFB11FFC8F03FA8B6FCF6BF",
+ "y":"A69EA55BE4BEAB2D5224050FEBFFBDFCFD614624C3B4F228909EB80012F003756D1C377E52F04FA539237F24DD080E2E",
+ },
+ { "k":"19691383761310193665095292424754807745686799029814707849273381514021788371252213000473497648851202400395528761229312",
+ "x":"6842CFE3589AC268818291F31D44177A9168DCBC19F321ED66D81ECF59E31B54CCA0DDFD4C4136780171748D69A91C54",
+ "y":"E3A5ECD5AC725F13DBC631F358C6E817EDCF3A613B83832741A9DB591A0BAE767FC714F70C2E7EA891E4312047DECCC0",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942623",
+ "x":"605508EC02C534BCEEE9484C86086D2139849E2B11C1A9CA1E2808DEC2EAF161AC8A105D70D4F85C50599BE5800A623F",
+ "y":"AEA7117869D53947E0FF5EFC47ABC5F8C7E489C65C59A0ECAC510EE48CCEF92116D16647721C984B71DC73C825271122",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942624",
+ "x":"8D481DAB912BC8AB16858A211D750B77E07DBECCA86CD9B012390B430467AABF59C8651060801C0E9599E68713F5D41B",
+ "y":"5EA6D00FEDEB9F7A841660D59F996FAF4DD6E4975EFC655FA6B4CD028523F172EE0045A8F7FFB19B966A4F828A1ADDBA",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942625",
+ "x":"DFB1FE3A40F7AC9B64C41D39360A7423828B97CB088A4903315E402A7089FA0F8B6C2355169CC9C99DFB44692A9B93DD",
+ "y":"BAC535EDBC4A1394BDC5975DAA781E9EC59CB3E3BD2D118193A80BB65E36E2366E9748FB913F580C85C99E7BDCC13ADD",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942626",
+ "x":"4099952208B4889600A5EBBCB13E1A32692BEFB0733B41E6DCC614E42E5805F817012A991AF1F486CAF3A9ADD9FFCC03",
+ "y":"A1306B8887CCFA67C6B8BA6B509FCA67E9C52C07FF752F32648682D880DC774BFB25B2CF55697F13059AF10B1DC4F65F",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942627",
+ "x":"D5D89C3B5282369C5FBD88E2B231511A6B80DFF0E5152CF6A464FA9428A8583BAC8EBC773D157811A462B892401DAFCF",
+ "y":"27EADD621ED6F92DBE7E92A1656BB70E2BE2B03BF1D5C42463545A81BBF585442EDEF3460B640DDC97DD48AB1454C98C",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942628",
+ "x":"B3D13FC8B32B01058CC15C11D813525522A94156FFF01C205B21F9F7DA7C4E9CA849557A10B6383B4B88701A9606860B",
+ "y":"EAD6E618206E9D59E4FB64DAC9E9B4E411453B5EE28B650B7B2EEEBC8C2040257C72DB064D7B50AF67A2A773CC08429D",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942629",
+ "x":"E8C8F94D44FBC2396BBEAC481B89D2B0877B1DFFD23E7DC95DE541EB651CCA2C41ABA24DBC02DE6637209ACCF0F59EA0",
+ "y":"76E51BBCA903751F6CD4340921AD3756CC479E6E188D728637CE6BEC5F62F0B603B9745EAAF621DD2811A362E4984777",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942630",
+ "x":"A567BA97B67AEA5BAFDAF5002FFCC6AB9632BFF9F01F873F6267BCD1F0F11C139EE5F441ABD99F1BAAF1CA1E3B5CBCE7",
+ "y":"21E4C74C6760CCE79BB1BEB850E9B133AE7AA6AFB96CD13F79CD641FA87A82988894347C8DDE75829BDC5ED9C90BD633",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942631",
+ "x":"952A7A349BD49289AB3AC421DCF683D08C2ED5E41F6D0E21648AF2691A481406DA4A5E22DA817CB466DA2EA77D2A7022",
+ "y":"5FCDF0507B4A43FA9CFAD215190990D1F6047FC931E75F1446FD74F69E694AF1FCE559B9768BC1DD610945341DE42E91",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942632",
+ "x":"099056E27DA7B998DA1EEEC2904816C57FE935ED5837C37456C9FD14892D3F8C4749B66E3AFB81D626356F3B55B4DDD8",
+ "y":"D1B3F3DCB1CF5469977AFAABB53A1FC6903B1127203C9C02BC006C0BE4AD5CD9AB992AEC9C5500CA82A2457FC73A1F44",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942633",
+ "x":"A669C5563BD67EEC678D29D6EF4FDE864F372D90B79B9E88931D5C29291238CCED8E85AB507BF91AA9CB2D13186658FB",
+ "y":"567748D5183ED860DD26F7C24A0F132208FEE6AAF3E7C3CE3AFD20873C48FA56D6927E69DB7D77266887B09648C5DE22",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942634",
+ "x":"8F0A39A4049BCB3EF1BF29B8B025B78F2216F7291E6FD3BAC6CB1EE285FB6E21C388528BFEE2B9535C55E4461079118B",
+ "y":"9D3881EBC749FE29BAD3B5ACDD3C56866564C2835C3BFF39489877AB51264CFC618BC100202AE497D9D25B075399B507",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942635",
+ "x":"1692778EA596E0BE75114297A6FA383445BF227FBE58190A900C3C73256F11FB5A3258D6F403D5ECE6E9B269D822C87D",
+ "y":"232DC9A8FF2BEF957CAC7745C24702F1DDAAB52392ADE32B42E3CF3D13F113E594521E15322E8F729095405CFDD4F52D",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942636",
+ "x":"283C1D7365CE4788F29F8EBF234EDFFEAD6FE997FBEA5FFA2D58CC9DFA7B1C508B05526F55B9EBB2040F05B48FB6D0E1",
+ "y":"6B8A366F9E1BE47745AD102473E96FB8E59E2798128668D62636D32FE242DDA8CF27B120CD5870619B99B3263AED1073",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942637",
+ "x":"627BE1ACD064D2B2226FE0D26F2D15D3C33EBCBB7F0F5DA51CBD41F26257383021317D7202FF30E50937F0854E35C5DF",
+ "y":"F68995B34C074E3DE41922593EB0EA8A4D36ACAD9BB088B36679B09EC8EABBE8FB3BA4717B1E9ACEE8CC5BF82C0F06CB",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942638",
+ "x":"11DE24A2C251C777573CAC5EA025E467F208E51DBFF98FC54F6661CBE56583B037882F4A1CA297E60ABCDBC3836D84BC",
+ "y":"705969388BBF06D2F0A7C816F5FF183AD7B4BB88AB2A211773679ACC496FE513CE889791F51704CCE7BBEB55193E8EC5",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942639",
+ "x":"138251CD52AC9298C1C8AAD977321DEB97E709BD0B4CA0ACA55DC8AD51DCFC9D1589A1597E3A5120E1EFD631C63E1835",
+ "y":"35351D679659D1E9CE175D7E7E54A99E923BA26E7543F60C54F19C3086D55B22128C7840C8445A96AB60E3FE4D8F1298",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942640",
+ "x":"077A41D4606FFA1464793C7E5FDC7D98CB9D3910202DCD06BEA4F240D3566DA6B408BBAE5026580D02D7E5C70500C831",
+ "y":"366A0835F4F3BD7C82F44169FD5603667ADF4BE37AEEA55A0897B3F123EEE1523DB542931B4A2D6749A0D7A0F5D0E20E",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942641",
+ "x":"08D999057BA3D2D969260045C55B97F089025959A6F434D651D207D19FB96E9E4FE0E86EBE0E64F85B96A9C75295DF61",
+ "y":"717F0E05A4E4C312484017200292458B4D8A278A43933BC16FB1AFA0DA954BD9A002BC15B2C61DD29EAFE190F56BF17F",
+ },
+ { "k":"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942642",
+ "x":"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7",
+ "y":"C9E821B569D9D390A26167406D6D23D6070BE242D765EB831625CEEC4A0F473EF59F4E30E2817E6285BCE2846F15F1A0",
+ }
+ ],
+
+ "secp521r1": [
+ { "k":"1",
+ "x":"00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66",
+ "y":"011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650",
+ },
+ { "k":"2",
+ "x":"00433C219024277E7E682FCB288148C282747403279B1CCC06352C6E5505D769BE97B3B204DA6EF55507AA104A3A35C5AF41CF2FA364D60FD967F43E3933BA6D783D",
+ "y":"00F4BB8CC7F86DB26700A7F3ECEEEED3F0B5C6B5107C4DA97740AB21A29906C42DBBB3E377DE9F251F6B93937FA99A3248F4EAFCBE95EDC0F4F71BE356D661F41B02",
+ },
+ { "k":"3",
+ "x":"01A73D352443DE29195DD91D6A64B5959479B52A6E5B123D9AB9E5AD7A112D7A8DD1AD3F164A3A4832051DA6BD16B59FE21BAEB490862C32EA05A5919D2EDE37AD7D",
+ "y":"013E9B03B97DFA62DDD9979F86C6CAB814F2F1557FA82A9D0317D2F8AB1FA355CEEC2E2DD4CF8DC575B02D5ACED1DEC3C70CF105C9BC93A590425F588CA1EE86C0E5",
+ },
+ { "k":"4",
+ "x":"0035B5DF64AE2AC204C354B483487C9070CDC61C891C5FF39AFC06C5D55541D3CEAC8659E24AFE3D0750E8B88E9F078AF066A1D5025B08E5A5E2FBC87412871902F3",
+ "y":"0082096F84261279D2B673E0178EB0B4ABB65521AEF6E6E32E1B5AE63FE2F19907F279F283E54BA385405224F750A95B85EEBB7FAEF04699D1D9E21F47FC346E4D0D",
+ },
+ { "k":"5",
+ "x":"00652BF3C52927A432C73DBC3391C04EB0BF7A596EFDB53F0D24CF03DAB8F177ACE4383C0C6D5E3014237112FEAF137E79A329D7E1E6D8931738D5AB5096EC8F3078",
+ "y":"015BE6EF1BDD6601D6EC8A2B73114A8112911CD8FE8E872E0051EDD817C9A0347087BB6897C9072CF374311540211CF5FF79D1F007257354F7F8173CC3E8DEB090CB",
+ },
+ { "k":"6",
+ "x":"01EE4569D6CDB59219532EFF34F94480D195623D30977FD71CF3981506ADE4AB01525FBCCA16153F7394E0727A239531BE8C2F66E95657F380AE23731BEDF79206B9",
+ "y":"01DE0255AD0CC64F586AE2DD270546E3B1112AABBB73DA5A808E7240A926201A8A96CAB72D0E56648C9DF96C984DE274F2203DC7B8B55CA0DADE1EACCD7858D44F17",
+ },
+ { "k":"7",
+ "x":"0056D5D1D99D5B7F6346EEB65FDA0B073A0C5F22E0E8F5483228F018D2C2F7114C5D8C308D0ABFC698D8C9A6DF30DCE3BBC46F953F50FDC2619A01CEAD882816ECD4",
+ "y":"003D2D1B7D9BAAA2A110D1D8317A39D68478B5C582D02824F0DD71DBD98A26CBDE556BD0F293CDEC9E2B9523A34591CE1A5F9E76712A5DDEFC7B5C6B8BC90525251B",
+ },
+ { "k":"8",
+ "x":"000822C40FB6301F7262A8348396B010E25BD4E29D8A9B003E0A8B8A3B05F826298F5BFEA5B8579F49F08B598C1BC8D79E1AB56289B5A6F4040586F9EA54AA78CE68",
+ "y":"016331911D5542FC482048FDAB6E78853B9A44F8EDE9E2C0715B5083DE610677A8F189E9C0AA5911B4BFF0BA0DF065C578699F3BA940094713538AD642F11F17801C",
+ },
+ { "k":"9",
+ "x":"01585389E359E1E21826A2F5BF157156D488ED34541B988746992C4AB145B8C6B6657429E1396134DA35F3C556DF725A318F4F50BABD85CD28661F45627967CBE207",
+ "y":"002A2E618C9A8AEDF39F0B55557A27AE938E3088A654EE1CEBB6C825BA263DDB446E0D69E5756057AC840FF56ECF4ABFD87D736C2AE928880F343AA0EA86B9AD2A4E",
+ },
+ { "k":"10",
+ "x":"0190EB8F22BDA61F281DFCFE7BB6721EC4CD901D879AC09AC7C34A9246B11ADA8910A2C7C178FCC263299DAA4DA9842093F37C2E411F1A8E819A87FF09A04F2F3320",
+ "y":"01EB5D96B8491614BA9DBAEAB3B0CA2BA760C2EEB2144251B20BA97FD78A62EF62D2BF5349D44D9864BB536F6163DC57EBEFF3689639739FAA172954BC98135EC759",
+ },
+ { "k":"11",
+ "x":"008A75841259FDEDFF546F1A39573B4315CFED5DC7ED7C17849543EF2C54F2991652F3DBC5332663DA1BD19B1AEBE3191085015C024FA4C9A902ECC0E02DDA0CDB9A",
+ "y":"0096FB303FCBBA2129849D0CA877054FB2293ADD566210BD0493ED2E95D4E0B9B82B1BC8A90E8B42A4AB3892331914A95336DCAC80E3F4819B5D58874F92CE48C808",
+ },
+ { "k":"12",
+ "x":"01C0D9DCEC93F8221C5DE4FAE9749C7FDE1E81874157958457B6107CF7A5967713A644E90B7C3FB81B31477FEE9A60E938013774C75C530928B17BE69571BF842D8C",
+ "y":"014048B5946A4927C0FE3CE1D103A682CA4763FE65AB71494DA45E404ABF6A17C097D6D18843D86FCDB6CC10A6F951B9B630884BA72224F5AE6C79E7B1A3281B17F0",
+ },
+ { "k":"13",
+ "x":"007E3E98F984C396AD9CD7865D2B4924861A93F736CDE1B4C2384EEDD2BEAF5B866132C45908E03C996A3550A5E79AB88EE94BEC3B00AB38EFF81887848D32FBCDA7",
+ "y":"0108EE58EB6D781FEDA91A1926DAA3ED5A08CED50A386D5421C69C7A67AE5C1E212AC1BD5D5838BC763F26DFDD351CBFBBC36199EAAF9117E9F7291A01FB022A71C9",
+ },
+ { "k":"14",
+ "x":"01875BC7DC551B1B65A9E1B8CCFAAF84DED1958B401494116A2FD4FB0BABE0B3199974FC06C8B897222D79DF3E4B7BC744AA6767F6B812EFBF5D2C9E682DD3432D74",
+ "y":"005CA4923575DACB5BD2D66290BBABB4BDFB8470122B8E51826A0847CE9B86D7ED62D07781B1B4F3584C11E89BF1D133DC0D5B690F53A87C84BE41669F852700D54A",
+ },
+ { "k":"15",
+ "x":"006B6AD89ABCB92465F041558FC546D4300FB8FBCC30B40A0852D697B532DF128E11B91CCE27DBD00FFE7875BD1C8FC0331D9B8D96981E3F92BDE9AFE337BCB8DB55",
+ "y":"01B468DA271571391D6A7CE64D2333EDBF63DF0496A9BAD20CBA4B62106997485ED57E9062C899470A802148E2232C96C99246FD90CC446ABDD956343480A1475465",
+ },
+ { "k":"16",
+ "x":"01D17D10D8A89C8AD05DDA97DA26AC743B0B2A87F66192FD3F3DD632F8D20B188A52943FF18861CA00A0E5965DA7985630DF0DBF5C8007DCDC533A6C508F81A8402F",
+ "y":"007A37343C582D77001FC714B18D3D3E69721335E4C3B800D50EC7CA30C94B6B82C1C182E1398DB547AA0B3075AC9D9988529E3004D28D18633352E272F89BC73ABE",
+ },
+ { "k":"17",
+ "x":"01B00DDB707F130EDA13A0B874645923906A99EE9E269FA2B3B4D66524F269250858760A69E674FE0287DF4E799B5681380FF8C3042AF0D1A41076F817A853110AE0",
+ "y":"0085683F1D7DB16576DBC111D4E4AEDDD106B799534CF69910A98D68AC2B22A1323DF9DA564EF6DD0BF0D2F6757F16ADF420E6905594C2B755F535B9CB7C70E64647",
+ },
+ { "k":"18",
+ "x":"01BC33425E72A12779EACB2EDCC5B63D1281F7E86DBC7BF99A7ABD0CFE367DE4666D6EDBB8525BFFE5222F0702C3096DEC0884CE572F5A15C423FDF44D01DD99C61D",
+ "y":"010D06E999885B63535DE3E74D33D9E63D024FB07CE0D196F2552C8E4A00AC84C044234AEB201F7A9133915D1B4B45209B9DA79FE15B19F84FD135D841E2D8F9A86A",
+ },
+ { "k":"19",
+ "x":"00998DCCE486419C3487C0F948C2D5A1A07245B77E0755DF547EFFF0ACDB3790E7F1FA3B3096362669679232557D7A45970DFECF431E725BBDE478FF0B2418D6A19B",
+ "y":"0137D5DA0626A021ED5CC3942497535B245D67D28AEE2B7BCF4ACC50EEE36545772773AD963FF2EB8CF9B0EC39991631C377F5A4D89EA9FBFE44A9091A695BFD0575",
+ },
+ { "k":"20",
+ "x":"018BDD7F1B889598A4653DEEAE39CC6F8CC2BD767C2AB0D93FB12E968FBED342B51709506339CB1049CB11DD48B9BDB3CD5CAD792E43B74E16D8E2603BFB11B0344F",
+ "y":"00C5AADBE63F68CA5B6B6908296959BF0AF89EE7F52B410B9444546C550952D311204DA3BDDDC6D4EAE7EDFAEC1030DA8EF837CCB22EEE9CFC94DD3287FED0990F94",
+ },
+ { "k":"112233445566778899",
+ "x":"01650048FBD63E8C30B305BF36BD7643B91448EF2206E8A0CA84A140789A99B0423A0A2533EA079CA7E049843E69E5FA2C25A163819110CEC1A30ACBBB3A422A40D8",
+ "y":"010C9C64A0E0DB6052DBC5646687D06DECE5E9E0703153EFE9CB816FE025E85354D3C5F869D6DB3F4C0C01B5F97919A5E72CEEBE03042E5AA99112691CFFC2724828",
+ },
+ { "k":"112233445566778899112233445566778899",
+ "x":"017E1370D39C9C63925DAEEAC571E21CAAF60BD169191BAEE8352E0F54674443B29786243564ABB705F6FC0FE5FC5D3F98086B67CA0BE7AC8A9DEC421D9F1BC6B37F",
+ "y":"01CD559605EAD19FBD99E83600A6A81A0489E6F20306EE0789AE00CE16A6EFEA2F42F7534186CF1C60DF230BD9BCF8CB95E5028AD9820B2B1C0E15597EE54C4614A6",
+ },
+ { "k":"1769805277975163035253775930842367129093741786725376786007349332653323812656658291413435033257677579095366632521448854141275926144187294499863933403633025023",
+ "x":"00B45CB84651C9D4F08858B867F82D816E84E94FE4CAE3DA5F65E420B08398D0C5BF019253A6C26D20671BDEF0B8E6C1D348A4B0734687F73AC6A4CBB2E085C68B3F",
+ "y":"01C84942BBF538903062170A4BA8B3410D385719BA2037D29CA5248BFCBC8478220FEC79244DCD45D31885A1764DEE479CE20B12CEAB62F9001C7AA4282CE4BE7F56",
+ },
+ { "k":"104748400337157462316262627929132596317243790506798133267698218707528750292682889221414310155907963824712114916552440160880550666043997030661040721887239",
+ "x":"01CCEF4CDA108CEBE6568820B54A3CA3A3997E4EF0EDA6C350E7ED3DBB1861EDD80181C650CEBE5440FEBA880F9C8A7A86F8B82659794F6F5B88E501E5DD84E65D7E",
+ "y":"01026565F8B195D03C3F6139C3A63EAA1C29F7090AB2A8F75027939EC05109035F1B38E6C508E0C14CE53AB7E2DA33AA28140EDBF3964862FB157119517454E60F07",
+ },
+ { "k":"6703903865078345888141381651430168039496664077350965054288133126549307058741788671148197429777343936466127575938031786147409472627479702469884214509568000",
+ "x":"00C1002DC2884EEDADB3F9B468BBEBD55980799852C506D37271FFCD006919DB3A96DF8FE91EF6ED4B9081B1809E8F2C2B28AF5FCBF524147C73CB0B913D6FAB0995",
+ "y":"01614E8A62C8293DD2AA6EF27D30974A4FD185019FA8EF4F982DA48698CECF706581F69EE9ED67A9C231EC9D0934D0F674646153273BCBB345E923B1EC1386A1A4AD",
+ },
+ { "k":"1675925643682395305404517165643562251880026958780896531698856737024179880343339878336382412050263431942974939646683480906434632963478257639757341102436352",
+ "x":"010ED3E085ECDE1E66874286B5D5642B9D37853A026A0A025C7B84936E2ECEEC5F342E14C80C79CCF814D5AD085C5303F2823251F2B9276F88C9D7A43E387EBD87AC",
+ "y":"01BE399A7666B29E79BBF3D277531A97CE05CAC0B49BECE4781E7AEE0D6E80FEE883C76E9F08453DC1ADE4E49300F3D56FEE6A1510DA1B1F12EEAA39A05AA0508119",
+ },
+ { "k":"12785133382149415221402495202586701798620696169446772599038235721862338692190156163951558963856959059232381602864743924427451786769515154396810706943",
+ "x":"013070A29B059D317AF37089E40FCB135868F52290EFF3E9F3E32CDADCA18EA234D8589C665A4B8E3D0714DE004A419DEA7091A3BBA97263C438FE9413AA598FD4A5",
+ "y":"00238A27FD9E5E7324C8B538EF2E334B71AC2611A95F42F4F2544D8C4A65D2A32A8BAFA15EFD4FC2BD8AB2B0C51F65B680879589F4D5FE8A84CEB17A2E8D3587F011",
+ },
+ { "k":"214524875832249255872206855495734426889477529336261655255492425273322727861341825677722947375406711676372335314043071600934941615185418540320233184489636351",
+ "x":"01A3D88799878EC74E66FF1AD8C7DFA9A9B4445A17F0810FF8189DD27AE3B6C580D352476DBDAEB08D7DA0DE3866F7C7FDBEBB8418E19710F1F7AFA88C22280B1404",
+ "y":"00B39703D2053EC7B8812BDFEBFD81B4CB76F245FE535A1F1E46801C35DE03C15063A99A203981529C146132863CA0E68544D0F0A638D8A2859D82B4DD266F27C3AE",
+ },
+ { "k":"51140486275567859131139077890835526884648461857823088348651153840508287621366854506831244746531272246620295123104269565867055949378266395604768784399",
+ "x":"01D16B4365DEFE6FD356DC1F31727AF2A32C7E86C5AE87ED2950A08BC8653F203C7F7860E80F95AA27C93EA76E8CD094127B15ED42CC5F96DC0A0F9A1C1E31D0D526",
+ "y":"006E3710A0F9366E0BB8A14FFE8EBC2722EECF4A123EC9BA98DCCCA335D6FAFD289DC69FD90903C9AC982FEB46DF93F03A7C8C9549D32C1C386D17F37340E63822A8",
+ },
+ { "k":"6651529716025206881035279952881520627841152247212784520914425039312606120198879080839643311347169019249080198239408356563413447402270445462102068592377843",
+ "x":"01B1220F67C985E9FC9C588C0C86BB16E6FE4CC11E168A98D701AE4670724B3D030ED9965FADF4207C7A1BE9BE0F40DEF2BBFFF0C7EABCB5B42526CE1D3CAA468F52",
+ "y":"006CDAD2860F6D2C37159A5A866D11605F2E7D87430DCFE6E6816AB6423CD9003CA6F2527B9C2A2483C541D456C963D18A0D2A46E158CB2A44C0BF42D562881FB748",
+ },
+ { "k":"3224551824613232232537680077946818660156835288778087344805370397811379731631671254853846826682273677870214778462237171365140390183770226853329363961324241919",
+ "x":"00F25E545213C8C074BE38A0612EA9B66336B14A874372548D9716392DFA31CD0D13E94F86CD48B8D43B80B5299144E01245C873B39F6AC6C4FB397746AF034AD67C",
+ "y":"01733ABB21147CC27E35F41FAF40290AFD1EEB221D983FFABBD88E5DC8776450A409EACDC1BCA2B9F517289C68645BB96781808FEAE42573C2BB289F16E2AECECE17",
+ },
+ { "k":"12486613128442885430380874043991285080254917488396284953815149251315412600634581539066663092297612040669978017623587752845409653167277021864132608",
+ "x":"0172CD22CBE0634B6BFEE24BB1D350F384A945ED618ECAD48AADC6C1BC0DCC107F0FFE9FE14DC929F90153F390C25BE5D3A73A56F9ACCB0C72C768753869732D0DC4",
+ "y":"00D249CFB570DA4CC48FB5426A928B43D7922F787373B6182408FBC71706E7527E8414C79167F3C999FF58DE352D238F1FE7168C658D338F72696F2F889A97DE23C5",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005429",
+ "x":"018BDD7F1B889598A4653DEEAE39CC6F8CC2BD767C2AB0D93FB12E968FBED342B51709506339CB1049CB11DD48B9BDB3CD5CAD792E43B74E16D8E2603BFB11B0344F",
+ "y":"013A552419C09735A49496F7D696A640F50761180AD4BEF46BBBAB93AAF6AD2CEEDFB25C4222392B1518120513EFCF257107C8334DD11163036B22CD78012F66F06B",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005430",
+ "x":"00998DCCE486419C3487C0F948C2D5A1A07245B77E0755DF547EFFF0ACDB3790E7F1FA3B3096362669679232557D7A45970DFECF431E725BBDE478FF0B2418D6A19B",
+ "y":"00C82A25F9D95FDE12A33C6BDB68ACA4DBA2982D7511D48430B533AF111C9ABA88D88C5269C00D1473064F13C666E9CE3C880A5B2761560401BB56F6E596A402FA8A",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005431",
+ "x":"01BC33425E72A12779EACB2EDCC5B63D1281F7E86DBC7BF99A7ABD0CFE367DE4666D6EDBB8525BFFE5222F0702C3096DEC0884CE572F5A15C423FDF44D01DD99C61D",
+ "y":"00F2F9166677A49CACA21C18B2CC2619C2FDB04F831F2E690DAAD371B5FF537B3FBBDCB514DFE0856ECC6EA2E4B4BADF646258601EA4E607B02ECA27BE1D27065795",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005432",
+ "x":"01B00DDB707F130EDA13A0B874645923906A99EE9E269FA2B3B4D66524F269250858760A69E674FE0287DF4E799B5681380FF8C3042AF0D1A41076F817A853110AE0",
+ "y":"017A97C0E2824E9A89243EEE2B1B51222EF94866ACB30966EF56729753D4DD5ECDC20625A9B10922F40F2D098A80E9520BDF196FAA6B3D48AA0ACA4634838F19B9B8",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005433",
+ "x":"01D17D10D8A89C8AD05DDA97DA26AC743B0B2A87F66192FD3F3DD632F8D20B188A52943FF18861CA00A0E5965DA7985630DF0DBF5C8007DCDC533A6C508F81A8402F",
+ "y":"0185C8CBC3A7D288FFE038EB4E72C2C1968DECCA1B3C47FF2AF13835CF36B4947D3E3E7D1EC6724AB855F4CF8A53626677AD61CFFB2D72E79CCCAD1D8D076438C541",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005434",
+ "x":"006B6AD89ABCB92465F041558FC546D4300FB8FBCC30B40A0852D697B532DF128E11B91CCE27DBD00FFE7875BD1C8FC0331D9B8D96981E3F92BDE9AFE337BCB8DB55",
+ "y":"004B9725D8EA8EC6E2958319B2DCCC12409C20FB6956452DF345B49DEF9668B7A12A816F9D3766B8F57FDEB71DDCD369366DB9026F33BB954226A9CBCB7F5EB8AB9A",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005435",
+ "x":"01875BC7DC551B1B65A9E1B8CCFAAF84DED1958B401494116A2FD4FB0BABE0B3199974FC06C8B897222D79DF3E4B7BC744AA6767F6B812EFBF5D2C9E682DD3432D74",
+ "y":"01A35B6DCA8A2534A42D299D6F44544B42047B8FEDD471AE7D95F7B831647928129D2F887E4E4B0CA7B3EE17640E2ECC23F2A496F0AC57837B41BE99607AD8FF2AB5",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005436",
+ "x":"007E3E98F984C396AD9CD7865D2B4924861A93F736CDE1B4C2384EEDD2BEAF5B866132C45908E03C996A3550A5E79AB88EE94BEC3B00AB38EFF81887848D32FBCDA7",
+ "y":"00F711A7149287E01256E5E6D9255C12A5F7312AF5C792ABDE3963859851A3E1DED53E42A2A7C74389C0D92022CAE340443C9E6615506EE81608D6E5FE04FDD58E36",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005437",
+ "x":"01C0D9DCEC93F8221C5DE4FAE9749C7FDE1E81874157958457B6107CF7A5967713A644E90B7C3FB81B31477FEE9A60E938013774C75C530928B17BE69571BF842D8C",
+ "y":"00BFB74A6B95B6D83F01C31E2EFC597D35B89C019A548EB6B25BA1BFB54095E83F68292E77BC2790324933EF5906AE4649CF77B458DDDB0A519386184E5CD7E4E80F",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005438",
+ "x":"008A75841259FDEDFF546F1A39573B4315CFED5DC7ED7C17849543EF2C54F2991652F3DBC5332663DA1BD19B1AEBE3191085015C024FA4C9A902ECC0E02DDA0CDB9A",
+ "y":"016904CFC03445DED67B62F35788FAB04DD6C522A99DEF42FB6C12D16A2B1F4647D4E43756F174BD5B54C76DCCE6EB56ACC923537F1C0B7E64A2A778B06D31B737F7",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005439",
+ "x":"0190EB8F22BDA61F281DFCFE7BB6721EC4CD901D879AC09AC7C34A9246B11ADA8910A2C7C178FCC263299DAA4DA9842093F37C2E411F1A8E819A87FF09A04F2F3320",
+ "y":"0014A26947B6E9EB456245154C4F35D4589F3D114DEBBDAE4DF4568028759D109D2D40ACB62BB2679B44AC909E9C23A814100C9769C68C6055E8D6AB4367ECA138A6",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005440",
+ "x":"01585389E359E1E21826A2F5BF157156D488ED34541B988746992C4AB145B8C6B6657429E1396134DA35F3C556DF725A318F4F50BABD85CD28661F45627967CBE207",
+ "y":"01D5D19E736575120C60F4AAAA85D8516C71CF7759AB11E3144937DA45D9C224BB91F2961A8A9FA8537BF00A9130B54027828C93D516D777F0CBC55F15794652D5B1",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005441",
+ "x":"000822C40FB6301F7262A8348396B010E25BD4E29D8A9B003E0A8B8A3B05F826298F5BFEA5B8579F49F08B598C1BC8D79E1AB56289B5A6F4040586F9EA54AA78CE68",
+ "y":"009CCE6EE2AABD03B7DFB7025491877AC465BB0712161D3F8EA4AF7C219EF988570E76163F55A6EE4B400F45F20F9A3A879660C456BFF6B8ECAC7529BD0EE0E87FE3",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005442",
+ "x":"0056D5D1D99D5B7F6346EEB65FDA0B073A0C5F22E0E8F5483228F018D2C2F7114C5D8C308D0ABFC698D8C9A6DF30DCE3BBC46F953F50FDC2619A01CEAD882816ECD4",
+ "y":"01C2D2E48264555D5EEF2E27CE85C6297B874A3A7D2FD7DB0F228E242675D93421AA942F0D6C321361D46ADC5CBA6E31E5A061898ED5A2210384A3947436FADADAE4",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005443",
+ "x":"01EE4569D6CDB59219532EFF34F94480D195623D30977FD71CF3981506ADE4AB01525FBCCA16153F7394E0727A239531BE8C2F66E95657F380AE23731BEDF79206B9",
+ "y":"0021FDAA52F339B0A7951D22D8FAB91C4EEED554448C25A57F718DBF56D9DFE575693548D2F1A99B7362069367B21D8B0DDFC238474AA35F2521E1533287A72BB0E8",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005444",
+ "x":"00652BF3C52927A432C73DBC3391C04EB0BF7A596EFDB53F0D24CF03DAB8F177ACE4383C0C6D5E3014237112FEAF137E79A329D7E1E6D8931738D5AB5096EC8F3078",
+ "y":"00A41910E42299FE291375D48CEEB57EED6EE327017178D1FFAE1227E8365FCB8F7844976836F8D30C8BCEEABFDEE30A00862E0FF8DA8CAB0807E8C33C17214F6F34",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005445",
+ "x":"0035B5DF64AE2AC204C354B483487C9070CDC61C891C5FF39AFC06C5D55541D3CEAC8659E24AFE3D0750E8B88E9F078AF066A1D5025B08E5A5E2FBC87412871902F3",
+ "y":"017DF6907BD9ED862D498C1FE8714F4B5449AADE5109191CD1E4A519C01D0E66F80D860D7C1AB45C7ABFADDB08AF56A47A114480510FB9662E261DE0B803CB91B2F2",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005446",
+ "x":"01A73D352443DE29195DD91D6A64B5959479B52A6E5B123D9AB9E5AD7A112D7A8DD1AD3F164A3A4832051DA6BD16B59FE21BAEB490862C32EA05A5919D2EDE37AD7D",
+ "y":"00C164FC4682059D2226686079393547EB0D0EAA8057D562FCE82D0754E05CAA3113D1D22B30723A8A4FD2A5312E213C38F30EFA36436C5A6FBDA0A7735E11793F1A",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005447",
+ "x":"00433C219024277E7E682FCB288148C282747403279B1CCC06352C6E5505D769BE97B3B204DA6EF55507AA104A3A35C5AF41CF2FA364D60FD967F43E3933BA6D783D",
+ "y":"010B44733807924D98FF580C1311112C0F4A394AEF83B25688BF54DE5D66F93BD2444C1C882160DAE0946C6C805665CDB70B1503416A123F0B08E41CA9299E0BE4FD",
+ },
+ { "k":"6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005448",
+ "x":"00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66",
+ "y":"00E7C6D6958765C43FFBA375A04BD382E426670ABBB6A864BB97E85042E8D8C199D368118D66A10BD9BF3AAF46FEC052F89ECAC38F795D8D3DBF77416B89602E99AF",
+ }
+ ]
+};
diff --git a/test/qunit-do-ecdsamod.html b/test/qunit-do-ecdsamod.html
index 960d743b..08567cf5 100755
--- a/test/qunit-do-ecdsamod.html
+++ b/test/qunit-do-ecdsamod.html
@@ -39,6 +39,8 @@
+
+