bitmessage-js/lib/crypto.js

59 lines
1.3 KiB
JavaScript
Raw Normal View History

2014-12-13 18:56:14 +00:00
/**
2015-01-03 10:29:22 +00:00
* Isomorphic Bitmessage crypto module. Reexports platform-dependent
* implementations and and also some common routines.
2014-12-18 16:47:18 +00:00
* @module bitmessage/crypto
2014-12-13 18:56:14 +00:00
*/
"use strict";
var eccrypto = require("eccrypto");
2015-01-03 10:29:22 +00:00
var platform = require("./platform");
2014-12-26 17:17:01 +00:00
2015-01-03 10:29:22 +00:00
/**
* Calculate SHA-512 hash.
* @param {Buffer} buf - Input data
* @return {Buffer} Resulting hash.
2015-01-03 10:29:22 +00:00
* @function
*/
exports.sha512 = platform.sha512;
/**
* Calculate SHA-256 hash.
* @param {Buffer} buf - Input data
* @return {Buffer} Resulting hash.
2015-01-03 10:29:22 +00:00
* @function
*/
exports.sha256 = platform.sha256;
/**
* Calculate RIPEMD-160 hash.
* @param {Buffer} buf - Input data
* @return {Buffer} Resulting hash.
2015-01-03 10:29:22 +00:00
* @function
*/
exports.ripemd160 = platform.ripemd160;
/**
* Generate cryptographically strong pseudo-random data.
* @param {number} size - Number of bytes
* @return {Buffer} Buffer with random data.
* @function
*/
exports.randomBytes = platform.randomBytes;
/**
* Generate new random private key.
* @return {Buffer} New private key.
*/
exports.getPrivate = function() {
2015-01-03 10:29:22 +00:00
return platform.randomBytes(32);
};
2014-12-30 17:00:28 +00:00
/**
2015-01-15 22:43:15 +00:00
* Generate public key for the given private key.
* @param {Buffer} privateKey - A 32-byte private key
* @return {Buffer} A 65-byte (uncompressed) public key.
2014-12-30 17:00:28 +00:00
* @function
*/
exports.getPublic = eccrypto.getPublic;