sth-ts
Version:
An SmartHoldem API wrapper, written in TypeScript to interact with SmartHoldem blockchain.
81 lines • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var bigi = require("bigi");
var bs58check = require("bs58check");
var createHash = require("create-hash");
var createHmac = require("create-hmac");
var ecurve = require("ecurve");
var randomBytes = require("randombytes");
var curveParams = ecurve.getCurveByName('secp256k1');
/** Crypto related functions. */
function assert(condition, message) {
if (message === void 0) { message = 'Assertion failed'; }
if (!condition) {
throw new Error(message);
}
}
var Crypto = /** @class */ (function () {
function Crypto() {
}
Crypto.ripemd160 = function (buffer) {
return createHash('rmd160').update(buffer).digest();
};
Crypto.sha1 = function (buffer) {
return createHash('sha1').update(buffer).digest();
};
Crypto.sha256 = function (buffer) {
return createHash('sha256').update(buffer).digest();
};
Crypto.hash160 = function (buffer) {
return this.ripemd160(this.sha256(buffer));
};
Crypto.hash256 = function (buffer) {
return this.sha256(this.sha256(buffer));
};
Crypto.hmacSha512 = function (key, buffer) {
return createHmac('sha512', key).update(buffer).digest();
};
Crypto.randomSeed = function (size) {
return randomBytes(size);
};
Crypto.bs58encode = function (buffer) {
return bs58check.encode(buffer);
};
Crypto.bs58decode = function (hash) {
return bs58check.decode(hash);
};
Crypto.int32toBuffer = function (size) {
var buf = new Buffer(4);
buf.writeInt32BE(size, 0);
return buf;
};
Crypto.decodeCurvePoint = function (buffer) {
return ecurve.Point.decodeFrom(curveParams, buffer);
};
Crypto.validateCurve = function (buffer) {
return curveParams.validate(buffer);
};
Crypto.validateKey = function (key) {
var buf = bigi.fromBuffer(key);
assert(Number(buf.signum()) > 0, 'Private key must be greather than 0');
assert(Number(buf.compareTo(curveParams.n)) <= 0, 'Private key must be less than the curve order');
assert(key.length === 32, 'Private key must be equals to 32 byte');
return true;
};
Crypto.addPrivateKeys = function (key, priKey) {
var keyBigi = bigi.fromBuffer(key);
var privKeyBigi = bigi.fromBuffer(priKey);
return keyBigi.add(privKeyBigi).mod(curveParams.n).toBuffer(32);
};
Crypto.addPublicKeys = function (key, pubKey) {
var keyBigi = bigi.fromBuffer(key);
var pubKeyBigi = bigi.fromBuffer(pubKey);
var keyPoint = curveParams.G.multiply(keyBigi);
var pubKeyPoint = curveParams.G.multiply(pubKeyBigi);
var expanded = keyPoint.add(pubKeyPoint);
return expanded.getEncoded(true);
};
return Crypto;
}());
exports.default = Crypto;
//# sourceMappingURL=Crypto.js.map