UNPKG

@hyperledger/cactus-common

Version:

Universal library used by both front end and back end components of Cactus. Aims to be a developer swiss army knife.

101 lines 7.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyConverter = exports.KeyFormat = void 0; const key_encoder_1 = __importDefault(require("key-encoder")); var KeyFormat; (function (KeyFormat) { KeyFormat["Raw"] = "raw"; KeyFormat["Hex"] = "hex"; KeyFormat["PEM"] = "pem"; })(KeyFormat || (exports.KeyFormat = KeyFormat = {})); class KeyConverter { constructor() { this.supportedKeyFormats = Object.values(KeyFormat); this.keyEncoder = new key_encoder_1.default("secp256k1"); } /** * Convert public key from one format to another format * @param key * @param fromFormat * @param toFormat */ publicKeyAs(key, fromFormat, toFormat) { this.validateKeyFormatValue(fromFormat); this.validateKeyFormatValue(toFormat); let keyValue = ""; let convertToRaw = false; if (key instanceof Uint8Array) { keyValue = Buffer.from(key).toString("hex"); } else { keyValue = key; } if (fromFormat === KeyFormat.Hex) { fromFormat = KeyFormat.Raw; } if (toFormat === KeyFormat.Raw) { convertToRaw = true; } else if (toFormat === KeyFormat.Hex) { toFormat = KeyFormat.Raw; } let resultKey = this.keyEncoder.encodePublic(keyValue, fromFormat, toFormat); if (convertToRaw) { resultKey = Uint8Array.from(Buffer.from(resultKey, "hex")); } return resultKey; } /** * Convert private key from one format to another format * @param key * @param fromFormat * @param toFormat */ privateKeyAs(key, fromFormat, toFormat) { this.validateKeyFormatValue(fromFormat); this.validateKeyFormatValue(toFormat); let keyValue = key; let convertToRaw = false; if (fromFormat === KeyFormat.Raw) { if (key instanceof Buffer) { keyValue = key.toString("hex"); } } else if (fromFormat === KeyFormat.Hex) { fromFormat = KeyFormat.Raw; } if (toFormat === KeyFormat.Raw) { convertToRaw = true; } else if (toFormat === KeyFormat.Hex) { toFormat = KeyFormat.Raw; } let resultKey = this.keyEncoder.encodePrivate(keyValue, fromFormat, toFormat); if (convertToRaw) { resultKey = Buffer.from(resultKey, "hex"); } return resultKey; } /** * This method will validate if the input key format match to one of the enum value. * @param keyFormat */ validateKeyFormatValue(keyFormat) { const fnTag = "KeyConverter#publicKeyAs()"; if (!this.supportedKeyFormats.some((val) => val === keyFormat)) { const csv = this.supportedKeyFormats.join(", ") + ` => (` + Object.keys(KeyFormat) .map((f) => `KeyFormat.${f}`) .join(", ") + `)`; const msg = `${fnTag} Invalid KeyFormat ${keyFormat} Supported: (${csv})`; throw new Error(msg); } } } exports.KeyConverter = KeyConverter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluL3R5cGVzY3JpcHQva2V5LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBcUM7QUFFckMsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLHdCQUFXLENBQUE7SUFDWCx3QkFBVyxDQUFBO0lBQ1gsd0JBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyxTQUFTLHlCQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFhLFlBQVk7SUFLdkI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQ2hCLEdBQXdCLEVBQ3hCLFVBQXFCLEVBQ3JCLFFBQW1CO1FBRW5CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUV6QixJQUFJLEdBQUcsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUM5QixRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLFVBQVUsS0FBSyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDN0IsQ0FBQztRQUVE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