Add SHA-1 (used for signing)
This commit is contained in:
parent
1d8f694c84
commit
8fa539c61b
|
@ -15,8 +15,9 @@ API documentation is available [here](https://bitchan.github.io/bitmessage/docs/
|
|||
## Feature matrix (both Browser and Node)
|
||||
|
||||
- [x] Crypto
|
||||
- [x] SHA-512
|
||||
- [x] SHA-1
|
||||
- [x] SHA-256
|
||||
- [x] SHA-512
|
||||
- [x] RIPEMD-160
|
||||
- [x] PRNG
|
||||
- [x] ECC keys manipulation
|
||||
|
|
|
@ -10,12 +10,12 @@ var eccrypto = require("eccrypto");
|
|||
var platform = require("./platform");
|
||||
|
||||
/**
|
||||
* Calculate SHA-512 hash.
|
||||
* Calculate SHA-1 hash.
|
||||
* @param {Buffer} buf - Input data
|
||||
* @return {Buffer} Resulting hash.
|
||||
* @function
|
||||
*/
|
||||
exports.sha512 = platform.sha512;
|
||||
exports.sha1 = platform.sha1;
|
||||
|
||||
/**
|
||||
* Calculate SHA-256 hash.
|
||||
|
@ -25,6 +25,14 @@ exports.sha512 = platform.sha512;
|
|||
*/
|
||||
exports.sha256 = platform.sha256;
|
||||
|
||||
/**
|
||||
* Calculate SHA-512 hash.
|
||||
* @param {Buffer} buf - Input data
|
||||
* @return {Buffer} Resulting hash.
|
||||
* @function
|
||||
*/
|
||||
exports.sha512 = platform.sha512;
|
||||
|
||||
/**
|
||||
* Calculate RIPEMD-160 hash.
|
||||
* @param {Buffer} buf - Input data
|
||||
|
|
|
@ -16,14 +16,18 @@ var BN = require("bn.js");
|
|||
var work = require("webworkify");
|
||||
var assert = require("./util").assert;
|
||||
|
||||
exports.sha512 = function(buf) {
|
||||
return new Sha512().update(buf).digest();
|
||||
exports.sha1 = function(buf) {
|
||||
return new Buffer(hash.sha1().update(buf).digest());
|
||||
};
|
||||
|
||||
exports.sha256 = function(buf) {
|
||||
return new Buffer(hash.sha256().update(buf).digest());
|
||||
};
|
||||
|
||||
exports.sha512 = function(buf) {
|
||||
return new Sha512().update(buf).digest();
|
||||
};
|
||||
|
||||
exports.ripemd160 = function(buf) {
|
||||
return new Buffer(hash.ripemd160().update(buf).digest());
|
||||
};
|
||||
|
@ -69,7 +73,7 @@ exports.pow = function(opts) {
|
|||
poolSize = poolSize || FAILBACK_POOL_SIZE;
|
||||
|
||||
var cancel;
|
||||
var promise = new Promise(function(resolve, reject) {
|
||||
var powp = new Promise(function(resolve, reject) {
|
||||
assert(typeof poolSize === "number", "Bad pool size");
|
||||
assert(poolSize >= 1, "Pool size is too low");
|
||||
assert(poolSize <= 1024, "Pool size is too high");
|
||||
|
@ -131,6 +135,8 @@ exports.pow = function(opts) {
|
|||
});
|
||||
// Allow to stop a POW via custom function added to the Promise
|
||||
// instance.
|
||||
promise.cancel = cancel;
|
||||
return promise;
|
||||
powp.cancel = cancel;
|
||||
return powp;
|
||||
};
|
||||
|
||||
exports.promise = Promise;
|
||||
|
|
|
@ -15,14 +15,18 @@ var worker = require("./worker");
|
|||
|
||||
var createHash = crypto.createHash;
|
||||
|
||||
exports.sha512 = function(buf) {
|
||||
return createHash("sha512").update(buf).digest();
|
||||
exports.sha1 = function(buf) {
|
||||
return createHash("sha1").update(buf).digest();
|
||||
};
|
||||
|
||||
exports.sha256 = function(buf) {
|
||||
return createHash("sha256").update(buf).digest();
|
||||
};
|
||||
|
||||
exports.sha512 = function(buf) {
|
||||
return createHash("sha512").update(buf).digest();
|
||||
};
|
||||
|
||||
exports.ripemd160 = function(buf) {
|
||||
return createHash("ripemd160").update(buf).digest();
|
||||
};
|
||||
|
@ -69,3 +73,5 @@ exports.pow = function(opts) {
|
|||
);
|
||||
});
|
||||
};
|
||||
|
||||
exports.promise = promise;
|
||||
|
|
8
test.js
8
test.js
|
@ -29,14 +29,18 @@ var Address = bitmessage.Address;
|
|||
var UserAgent = bitmessage.UserAgent;
|
||||
|
||||
describe("Crypto", function() {
|
||||
it("should implement SHA-512 hash", function() {
|
||||
expect(bmcrypto.sha512(Buffer("test")).toString("hex")).to.equal("ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff");
|
||||
it("should implement SHA-1 hash", function() {
|
||||
expect(bmcrypto.sha1(Buffer("test")).toString("hex")).to.equal("a94a8fe5ccb19ba61c4c0873d391e987982fbbd3");
|
||||
});
|
||||
|
||||
it("should implement SHA-256 hash", function() {
|
||||
expect(bmcrypto.sha256(Buffer("test")).toString("hex")).to.equal("9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08");
|
||||
});
|
||||
|
||||
it("should implement SHA-512 hash", function() {
|
||||
expect(bmcrypto.sha512(Buffer("test")).toString("hex")).to.equal("ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff");
|
||||
});
|
||||
|
||||
it("should implement RIPEMD-160 hash", function() {
|
||||
expect(bmcrypto.ripemd160(Buffer("test")).toString("hex")).to.equal("5e52fee47e6b070565f74372468cdc699de89107");
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue
Block a user