add some test vectors for secp256k1

This commit is contained in:
Ryan X. Charles 2014-07-11 14:47:48 -07:00
parent 0f0a1b1913
commit 572035fdd5
4 changed files with 41 additions and 3 deletions

File diff suppressed because one or more lines are too long

19
test/data/secp256k1.json Normal file
View File

@ -0,0 +1,19 @@
{
"nTimesG": [
{"n": "AA5E28D6A97A2479A65527F7290311A3624D4CC0FA1578598EE3C2613BF99522",
"px": "34F9460F0E4F08393D192B3C5133A6BA099AA0AD9FD54EBCCFACDFA239FF49C6",
"py": "0B71EA9BD730FD8923F6D25A7A91E7DD7728A960686CB5A901BB419E0F2CA232"},
{"n": "7E2B897B8CEBC6361663AD410835639826D590F393D90A9538881735256DFAE3",
"px": "D74BF844B0862475103D96A611CF2D898447E288D34B360BC885CB8CE7C00575",
"py": "131C670D414C4546B88AC3FF664611B1C38CEB1C21D76369D7A7A0969D61D97D"},
{"n": "6461E6DF0FE7DFD05329F41BF771B86578143D4DD1F7866FB4CA7E97C5FA945D",
"px": "E8AECC370AEDD953483719A116711963CE201AC3EB21D3F3257BB48668C6A72F",
"py": "C25CAF2F0EBA1DDB2F0F3F47866299EF907867B7D27E95B3873BF98397B24EE1"},
{"n": "376A3A2CDCD12581EFFF13EE4AD44C4044B8A0524C42422A7E1E181E4DEECCEC",
"px": "14890E61FCD4B0BD92E5B36C81372CA6FED471EF3AA60A3E415EE4FE987DABA1",
"py": "297B858D9F752AB42D3BCA67EE0EB6DCD1C2B7B0DBE23397E66ADC272263F982"},
{"n": "1B22644A7BE026548810C378D0B2994EEFA6D2B9881803CB02CEFF865287D1B9",
"px": "F73C65EAD01C5126F28F442D087689BFA08E12763E0CEC1D35B01751FD735ED3",
"py": "F449A8376906482A84ED01479BD18882B919C140D638307F0C0934BA12590BDE"}
]
}

View File

@ -12,6 +12,8 @@ var assert = chai.assert;
var Point = bitcore.Point;
var Key = bitcore.Key;
var testdata = testdata || require('./testdata');
describe('Point', function() {
it('should initialize the main object', function() {
@ -180,4 +182,17 @@ describe('Point', function() {
});
describe('secp256k1 test vectors', function() {
//test vectors from http://crypto.stackexchange.com/questions/784/are-there-any-secp256k1-ecdsa-test-examples-available
var G = bitcore.Curve.getG();
testdata.dataSecp256k1.nTimesG.forEach(function(val) {
it('should multiply n by G and get p from test data', function() {
var n = new Buffer(val.n, 'hex');
var p = Point.multiply(G, n);
p.x.toBuffer().toString('hex').toUpperCase().should.equal(val.px);
p.y.toBuffer().toString('hex').toUpperCase().should.equal(val.py);
});
});
});
});

View File

@ -14,6 +14,7 @@ var dataSigNonCanonical = JSON.parse(fs.readFileSync('test/data/sig_noncanonical
var dataBase58KeysValid = JSON.parse(fs.readFileSync('test/data/base58_keys_valid.json'));
var dataBase58KeysInvalid = JSON.parse(fs.readFileSync('test/data/base58_keys_invalid.json'));
var dataSighash = JSON.parse(fs.readFileSync('test/data/sighash.json'));
var dataSecp256k1 = JSON.parse(fs.readFileSync('test/data/secp256k1.json'));
module.exports.dataValid = dataValid;
module.exports.dataInvalid = dataInvalid;
@ -30,6 +31,7 @@ module.exports.dataSigNonCanonical = dataSigNonCanonical;
module.exports.dataBase58KeysValid = dataBase58KeysValid;
module.exports.dataBase58KeysInvalid = dataBase58KeysInvalid;
module.exports.dataSighash = dataSighash;
module.exports.dataSecp256k1 = dataSecp256k1;
var buffer = new Buffer(fs.readFileSync('test/data/blk86756-testnet.dat'));
module.exports.dataRawBlock = buffer;