@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
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluL3R5cGVzY3JpcHQva2V5LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBcUM7QUFFckMsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLHdCQUFXLENBQUE7SUFDWCx3QkFBVyxDQUFBO0lBQ1gsd0JBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyxTQUFTLHlCQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFhLFlBQVk7SUFLdkI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQ2hCLEdBQXdCLEVBQ3hCLFVBQXFCLEVBQ3JCLFFBQW1CO1FBRW5CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUV6QixJQUFJLEdBQUcsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUM5QixRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLFVBQVUsS0FBSyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxJQUFJLFFBQVEsS0FBSyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksU0FBUyxHQUF3QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FDL0QsUUFBUSxFQUNSLFVBQVUsRUFDVixRQUFRLENBQ1QsQ0FBQztRQUVGLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksWUFBWSxDQUNqQixHQUFvQixFQUNwQixVQUFxQixFQUNyQixRQUFtQjtRQUVuQixJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRDLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFekIsSUFBSSxVQUFVLEtBQUssU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksR0FBRyxZQUFZLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4QyxVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxRQUFRLEtBQUssU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0QyxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxTQUFTLEdBQW9CLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUM1RCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFFBQVEsQ0FDVCxDQUFDO1FBRUYsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0IsQ0FBQyxTQUFvQjtRQUNqRCxNQUFNLEtBQUssR0FBRyw0QkFBNEIsQ0FBQztRQUUzQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxHQUFHLEdBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLE9BQU87Z0JBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7cUJBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztxQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDYixHQUFHLENBQUM7WUFDTixNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssc0JBQXNCLFNBQVMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1lBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZIRCxvQ0F1SEMifQ==