exonum-client-cis
Version:
Light Client for Exonum CIS Blockchain
104 lines (86 loc) • 2.25 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.newType = newType;
exports.isType = isType;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var crypto = _interopRequireWildcard(require("../crypto"));
var _helpers = require("../helpers");
/**
* @constructor
* @param {Object} schema
*/
var Type =
/*#__PURE__*/
function () {
function Type(schema) {
(0, _classCallCheck2["default"])(this, Type);
this.schema = schema;
}
/**
* Serialize data into array of 8-bit integers
* @param {Object} data
* @returns {Uint8Array}
*/
(0, _createClass2["default"])(Type, [{
key: "serialize",
value: function serialize(data) {
var object = (0, _helpers.cleanZeroValuedFields)(data, {});
return this.schema.encode(object).finish();
}
/**
* Get SHA256 hash
* @param {Object} data
* @returns {string}
*/
}, {
key: "hash",
value: function hash(data) {
return crypto.hash(data, this);
}
/**
* Get ED25519 signature
* @param {string} secretKey
* @param {Object} data
* @returns {string}
*/
}, {
key: "sign",
value: function sign(secretKey, data) {
return crypto.sign(secretKey, data, this);
}
/**
* Verifies ED25519 signature
* @param {string} signature
* @param {string} publicKey
* @param {Object} data
* @returns {boolean}
*/
}, {
key: "verifySignature",
value: function verifySignature(signature, publicKey, data) {
return crypto.verifySignature(signature, publicKey, data, this);
}
}]);
return Type;
}();
/**
* Create element of Type class
* @param {Object} type
* @returns {Type}
*/
function newType(type) {
return new Type(type);
}
/**
* Check if passed object is of type Type
* @param {Object} type
* @returns {boolean}
*/
function isType(type) {
return type instanceof Type;
}