keystore-idb
Advanced tools
Comparing version 0.2.5 to 0.2.6
@@ -50,4 +50,6 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var ecc_1 = require("./ecc"); | ||
var keys_1 = require("./ecc/keys"); | ||
var constants_1 = require("./constants"); | ||
var types_1 = require("./types"); | ||
var utils_1 = require("./utils"); | ||
exports.defaultConfig = { | ||
@@ -72,3 +74,3 @@ type: constants_1.DEFAULT_CRYPTOSYSTEM, | ||
if (!(maybeCfg === null || maybeCfg === void 0 ? void 0 : maybeCfg.type)) { | ||
cfg.type = eccEnabled ? 'ecc' : 'rsa'; | ||
cfg.type = eccEnabled ? types_1.CryptoSystem.ECC : types_1.CryptoSystem.RSA; | ||
} | ||
@@ -85,3 +87,3 @@ return cfg; | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, ecc_1.default.makeKey(constants_1.DEFAULT_ECC_CURVE, KeyUse.Read)]; | ||
case 0: return [4 /*yield*/, keys_1.default.makeKey(constants_1.DEFAULT_ECC_CURVE, types_1.KeyUse.Read)]; | ||
case 1: | ||
@@ -92,3 +94,3 @@ keypair = _a.sent(); | ||
_a.trys.push([2, 4, , 5]); | ||
return [4 /*yield*/, structuralClone(keypair)]; | ||
return [4 /*yield*/, utils_1.default.structuralClone(keypair)]; | ||
case 3: | ||
@@ -106,18 +108,7 @@ _a.sent(); | ||
exports.eccEnabled = eccEnabled; | ||
function structuralClone(obj) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, new Promise(function (resolve) { | ||
var _a = new MessageChannel(), port1 = _a.port1, port2 = _a.port2; | ||
port2.onmessage = function (ev) { return resolve(ev.data); }; | ||
port1.postMessage(obj); | ||
})]; | ||
}); | ||
}); | ||
} | ||
exports.default = { | ||
defaultConfig: exports.defaultConfig, | ||
normalize: normalize, | ||
eccEnabled: eccEnabled | ||
eccEnabled: eccEnabled, | ||
}; | ||
//# sourceMappingURL=config.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var types_1 = require("./types"); | ||
exports.ECC_READ_ALG = 'ECDH'; | ||
@@ -9,6 +10,6 @@ exports.ECC_WRITE_ALG = 'ECDSA'; | ||
exports.DEFAULT_CRYPTOSYSTEM = 'ecc'; | ||
exports.DEFAULT_ECC_CURVE = 'P-256'; | ||
exports.DEFAULT_RSA_SIZE = 2048; | ||
exports.DEFAULT_SYMM_ALG = 'AES-CTR'; | ||
exports.DEFAULT_HASH_ALG = 'SHA-256'; | ||
exports.DEFAULT_ECC_CURVE = types_1.ECC_Curve.P_256; | ||
exports.DEFAULT_RSA_SIZE = types_1.RSA_Size.B2048; | ||
exports.DEFAULT_SYMM_ALG = types_1.SymmAlg.AES_CTR; | ||
exports.DEFAULT_HASH_ALG = types_1.HashAlg.SHA_256; | ||
exports.DEFAULT_READ_KEY_NAME = 'read-key'; | ||
@@ -15,0 +16,0 @@ exports.DEFAULT_WRITE_KEY_NAME = 'write-key'; |
@@ -19,5 +19,7 @@ "use strict"; | ||
var operations_1 = require("./operations"); | ||
var keystore_1 = require("./keystore"); | ||
__export(require("./keys")); | ||
__export(require("./operations")); | ||
exports.default = __assign(__assign({}, keys_1.default), operations_1.default); | ||
__export(require("./keystore")); | ||
exports.default = __assign(__assign(__assign({}, keys_1.default), operations_1.default), keystore_1.default); | ||
//# sourceMappingURL=index.js.map |
@@ -40,3 +40,6 @@ "use strict"; | ||
var idb_1 = require("../idb"); | ||
var utils_1 = require("../utils"); | ||
var constants_1 = require("../constants"); | ||
var types_1 = require("../types"); | ||
var errors_1 = require("../errors"); | ||
function getKey(curve, keyName, use) { | ||
@@ -47,3 +50,5 @@ return __awaiter(this, void 0, void 0, function () { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, idb_1.default.getKey(keyName)]; | ||
case 0: | ||
errors_1.checkValidKeyUse(use); | ||
return [4 /*yield*/, idb_1.default.getKey(keyName)]; | ||
case 1: | ||
@@ -70,5 +75,6 @@ maybeKey = _a.sent(); | ||
return __generator(this, function (_a) { | ||
alg = use === KeyUse.Read ? constants_1.ECC_READ_ALG : constants_1.ECC_WRITE_ALG; | ||
uses = use === KeyUse.Read ? ['deriveKey', 'deriveBits'] : ['sign', 'verify']; | ||
return [2 /*return*/, crypto.subtle.generateKey({ name: alg, namedCurve: curve }, false, uses)]; | ||
errors_1.checkValidKeyUse(use); | ||
alg = use === types_1.KeyUse.Read ? constants_1.ECC_READ_ALG : constants_1.ECC_WRITE_ALG; | ||
uses = use === types_1.KeyUse.Read ? ['deriveKey', 'deriveBits'] : ['sign', 'verify']; | ||
return [2 /*return*/, window.crypto.subtle.generateKey({ name: alg, namedCurve: curve }, false, uses)]; | ||
}); | ||
@@ -78,6 +84,20 @@ }); | ||
exports.makeKey = makeKey; | ||
function importPublicKey(hexKey, curve, use) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var alg, uses, buf; | ||
return __generator(this, function (_a) { | ||
errors_1.checkValidKeyUse(use); | ||
alg = use === types_1.KeyUse.Read ? constants_1.ECC_READ_ALG : constants_1.ECC_WRITE_ALG; | ||
uses = use === types_1.KeyUse.Read ? [] : ['verify']; | ||
buf = utils_1.default.base64ToArrBuf(hexKey); | ||
return [2 /*return*/, window.crypto.subtle.importKey('raw', buf, { name: alg, namedCurve: curve }, true, uses)]; | ||
}); | ||
}); | ||
} | ||
exports.importPublicKey = importPublicKey; | ||
exports.default = { | ||
getKey: getKey, | ||
makeKey: makeKey | ||
makeKey: makeKey, | ||
importPublicKey: importPublicKey | ||
}; | ||
//# sourceMappingURL=keys.js.map |
@@ -54,2 +54,3 @@ "use strict"; | ||
var utils_1 = require("../utils"); | ||
var types_1 = require("../types"); | ||
function init(maybeCfg) { | ||
@@ -61,8 +62,8 @@ return __awaiter(this, void 0, void 0, function () { | ||
case 0: | ||
cfg = config_1.default.normalize(__assign(__assign({}, (maybeCfg || {})), { type: 'ecc' })); | ||
cfg = config_1.default.normalize(__assign(__assign({}, (maybeCfg || {})), { type: types_1.CryptoSystem.ECC })); | ||
curve = cfg.curve, readKeyName = cfg.readKeyName, writeKeyName = cfg.writeKeyName; | ||
return [4 /*yield*/, keys_1.default.getKey(curve, readKeyName, KeyUse.Read)]; | ||
return [4 /*yield*/, keys_1.default.getKey(curve, readKeyName, types_1.KeyUse.Read)]; | ||
case 1: | ||
readKey = _a.sent(); | ||
return [4 /*yield*/, keys_1.default.getKey(curve, writeKeyName, KeyUse.Write)]; | ||
return [4 /*yield*/, keys_1.default.getKey(curve, writeKeyName, types_1.KeyUse.Write)]; | ||
case 2: | ||
@@ -99,4 +100,10 @@ writeKey = _a.sent(); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var pubkey; | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, operations_1.default.verifyBytes(utils_1.default.strToArrBuf(msg, charSize), utils_1.default.base64ToArrBuf(sig), publicKey, this.cfg.hashAlg)]; | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, keys_1.default.importPublicKey(publicKey, this.cfg.curve, types_1.KeyUse.Write)]; | ||
case 1: | ||
pubkey = _a.sent(); | ||
return [2 /*return*/, operations_1.default.verifyBytes(utils_1.default.strToArrBuf(msg, charSize), utils_1.default.base64ToArrBuf(sig), pubkey, this.cfg.hashAlg)]; | ||
} | ||
}); | ||
@@ -108,7 +115,10 @@ }); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var cipherText; | ||
var pubkey, cipherText; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, operations_1.default.encryptBytes(utils_1.default.strToArrBuf(msg, charSize), this.readKey.privateKey, publicKey, this.cfg.symmAlg)]; | ||
case 0: return [4 /*yield*/, keys_1.default.importPublicKey(publicKey, this.cfg.curve, types_1.KeyUse.Read)]; | ||
case 1: | ||
pubkey = _a.sent(); | ||
return [4 /*yield*/, operations_1.default.encryptBytes(utils_1.default.strToArrBuf(msg, charSize), this.readKey.privateKey, pubkey, this.cfg.symmAlg)]; | ||
case 2: | ||
cipherText = _a.sent(); | ||
@@ -123,7 +133,10 @@ return [2 /*return*/, utils_1.default.arrBufToBase64(cipherText)]; | ||
return __awaiter(this, void 0, void 0, function () { | ||
var msgBytes; | ||
var pubkey, msgBytes; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, operations_1.default.decryptBytes(utils_1.default.base64ToArrBuf(cipherText), this.readKey.privateKey, publicKey, this.cfg.symmAlg)]; | ||
case 0: return [4 /*yield*/, keys_1.default.importPublicKey(publicKey, this.cfg.curve, types_1.KeyUse.Read)]; | ||
case 1: | ||
pubkey = _a.sent(); | ||
return [4 /*yield*/, operations_1.default.decryptBytes(utils_1.default.base64ToArrBuf(cipherText), this.readKey.privateKey, pubkey, this.cfg.symmAlg)]; | ||
case 2: | ||
msgBytes = _a.sent(); | ||
@@ -130,0 +143,0 @@ return [2 /*return*/, utils_1.default.arrBufToStr(msgBytes, charSize)]; |
@@ -60,3 +60,3 @@ "use strict"; | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, crypto.subtle.deriveKey({ name: constants_1.ECC_READ_ALG, public: publicKey }, privateKey, { name: symmAlg, length: 256 }, false, ['encrypt', 'decrypt'])]; | ||
return [2 /*return*/, window.crypto.subtle.deriveKey({ name: constants_1.ECC_READ_ALG, public: publicKey }, privateKey, { name: symmAlg, length: 256 }, false, ['encrypt', 'decrypt'])]; | ||
}); | ||
@@ -74,3 +74,3 @@ }); | ||
cipherKey = _a.sent(); | ||
return [2 /*return*/, crypto.subtle.encrypt({ name: symmAlg, | ||
return [2 /*return*/, window.crypto.subtle.encrypt({ name: symmAlg, | ||
counter: new Uint8Array(16), | ||
@@ -92,3 +92,3 @@ length: 128 | ||
cipherKey = _a.sent(); | ||
return [4 /*yield*/, crypto.subtle.encrypt({ name: symmAlg, | ||
return [4 /*yield*/, window.crypto.subtle.decrypt({ name: symmAlg, | ||
counter: new Uint8Array(16), | ||
@@ -110,6 +110,6 @@ length: 128 | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, crypto.subtle.exportKey('raw', keypair.publicKey)]; | ||
case 0: return [4 /*yield*/, window.crypto.subtle.exportKey('raw', keypair.publicKey)]; | ||
case 1: | ||
raw = _a.sent(); | ||
return [2 /*return*/, utils_1.default.arrBufToHex(raw)]; | ||
return [2 /*return*/, utils_1.default.arrBufToBase64(raw)]; | ||
} | ||
@@ -116,0 +116,0 @@ }); |
@@ -39,17 +39,8 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var localforage_1 = require("localforage"); | ||
/* istanbul ignore next */ | ||
function putKey(id, keypair) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, new Promise(function (resolve, reject) { | ||
callOnStore(function (store) { | ||
try { | ||
var putData = store.put({ id: id, keypair: keypair }); | ||
putData.onsuccess = resolve; | ||
putData.onerror = reject; | ||
} | ||
catch (err) { | ||
console.error(err); | ||
} | ||
}); | ||
})]; | ||
return [2 /*return*/, localforage_1.default.setItem(id, keypair)]; | ||
}); | ||
@@ -59,23 +50,7 @@ }); | ||
exports.putKey = putKey; | ||
/* istanbul ignore next */ | ||
function getKey(id) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var _this = this; | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, new Promise(function (resolve, reject) { | ||
callOnStore(function (store) { | ||
var getData = store.get(id); | ||
getData.onsuccess = function () { return __awaiter(_this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
if (getData.result && getData.result.keypair) { | ||
return [2 /*return*/, resolve(getData.result.keypair)]; | ||
} | ||
else { | ||
return [2 /*return*/, resolve(undefined)]; | ||
} | ||
return [2 /*return*/]; | ||
}); | ||
}); }; | ||
getData.onerror = reject; | ||
}); | ||
})]; | ||
return [2 /*return*/, localforage_1.default.getItem(id)]; | ||
}); | ||
@@ -85,16 +60,12 @@ }); | ||
exports.getKey = getKey; | ||
/* istanbul ignore next */ | ||
function clear() { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var _this = this; | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, new Promise(function (resolve, reject) { | ||
callOnStore(function (store) { | ||
var req = store.clear(); | ||
req.onsuccess = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { | ||
resolve(); | ||
return [2 /*return*/]; | ||
}); }); }; | ||
req.onerror = reject; | ||
}); | ||
})]; | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, localforage_1.default.clear()]; | ||
case 1: | ||
_a.sent(); | ||
return [2 /*return*/]; | ||
} | ||
}); | ||
@@ -104,36 +75,7 @@ }); | ||
exports.clear = clear; | ||
// from https://gist.github.com/saulshanabrook/b74984677bccd08b028b30d9968623f5 | ||
function callOnStore(fn_) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var windowIDB, indexedDB, open; | ||
return __generator(this, function (_a) { | ||
windowIDB = window; | ||
indexedDB = windowIDB.indexedDB || windowIDB.mozIndexedDB || windowIDB.webkitIndexedDB || windowIDB.msIndexedDB || windowIDB.shimIndexedDB; | ||
open = indexedDB.open("MyDatabase", 1); | ||
// Create the schema | ||
open.onupgradeneeded = function () { | ||
var db = open.result; | ||
var store = db.createObjectStore("MyObjectStore", { keyPath: "id" }); | ||
}; | ||
open.onsuccess = function () { | ||
// Start a new transaction | ||
var db = open.result; | ||
var tx = db.transaction("MyObjectStore", "readwrite"); | ||
var store = tx.objectStore("MyObjectStore"); | ||
fn_(store); | ||
// Close the db when the transaction is done | ||
tx.oncomplete = function () { | ||
db.close(); | ||
}; | ||
}; | ||
return [2 /*return*/]; | ||
}); | ||
}); | ||
} | ||
exports.callOnStore = callOnStore; | ||
exports.default = { | ||
putKey: putKey, | ||
getKey: getKey, | ||
clear: clear, | ||
clear: clear | ||
}; | ||
//# sourceMappingURL=idb.js.map |
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var keystore_1 = require("./keystore"); | ||
exports.default = keystore_1.default; | ||
var keystore_2 = require("./keystore"); | ||
exports.keystore = keystore_2.default; | ||
var ecc_1 = require("./ecc"); | ||
exports.ecc = ecc_1.default; | ||
var rsa_1 = require("./rsa"); | ||
exports.rsa = rsa_1.default; | ||
var config_1 = require("./config"); | ||
exports.config = config_1.default; | ||
var constants_1 = require("./constants"); | ||
exports.constants = constants_1.default; | ||
var utils_1 = require("./utils"); | ||
exports.utils = utils_1.default; | ||
var idb_1 = require("./idb"); | ||
exports.idb = idb_1.default; | ||
var ecc = require("./ecc"); | ||
var rsa = require("./rsa"); | ||
var config = require("./config"); | ||
var constants = require("./constants"); | ||
var utils = require("./utils"); | ||
var idb = require("./idb"); | ||
var types = require("./types"); | ||
exports.default = __assign(__assign(__assign(__assign(__assign({ init: keystore_1.init, | ||
clear: keystore_1.clear }, types), constants), config), utils), { ecc: ecc, | ||
rsa: rsa, | ||
idb: idb }); | ||
//# sourceMappingURL=index.js.map |
@@ -43,2 +43,3 @@ "use strict"; | ||
var idb_1 = require("./idb"); | ||
var errors_1 = require("./errors"); | ||
function init(maybeCfg) { | ||
@@ -53,14 +54,12 @@ return __awaiter(this, void 0, void 0, function () { | ||
if (!eccEnabled && (maybeCfg === null || maybeCfg === void 0 ? void 0 : maybeCfg.type) === 'ecc') { | ||
throw new Error("ECC is not enabled for this browser. Please use RSA instead."); | ||
throw errors_1.ECCNotEnabled; | ||
} | ||
cfg = config_1.default.normalize(maybeCfg, eccEnabled); | ||
errors_1.checkValidCryptoSystem(cfg.type); | ||
if (cfg.type === 'ecc') { | ||
return [2 /*return*/, keystore_1.default.init(cfg)]; | ||
} | ||
else if (cfg.type === 'rsa') { | ||
else { | ||
return [2 /*return*/, keystore_2.default.init(cfg)]; | ||
} | ||
else { | ||
throw new Error("Cryptosystem not supported. Please use ECC or RSA"); | ||
} | ||
return [2 /*return*/]; | ||
@@ -67,0 +66,0 @@ } |
@@ -19,5 +19,7 @@ "use strict"; | ||
var operations_1 = require("./operations"); | ||
var keystore_1 = require("./keystore"); | ||
__export(require("./keys")); | ||
__export(require("./operations")); | ||
exports.default = __assign(__assign({}, keys_1.default), operations_1.default); | ||
__export(require("./keystore")); | ||
exports.default = __assign(__assign(__assign({}, keys_1.default), operations_1.default), keystore_1.default); | ||
//# sourceMappingURL=index.js.map |
@@ -41,2 +41,5 @@ "use strict"; | ||
var constants_1 = require("../constants"); | ||
var types_1 = require("../types"); | ||
var utils_1 = require("../utils"); | ||
var errors_1 = require("../errors"); | ||
function getKey(size, hashAlg, keyName, use) { | ||
@@ -47,3 +50,5 @@ return __awaiter(this, void 0, void 0, function () { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, idb_1.default.getKey(keyName)]; | ||
case 0: | ||
errors_1.checkValidKeyUse(use); | ||
return [4 /*yield*/, idb_1.default.getKey(keyName)]; | ||
case 1: | ||
@@ -70,8 +75,9 @@ maybeKey = _a.sent(); | ||
return __generator(this, function (_a) { | ||
alg = use === KeyUse.Read ? constants_1.RSA_READ_ALG : constants_1.RSA_WRITE_ALG; | ||
uses = use === KeyUse.Read ? ['encrypt', 'decrypt'] : ['sign', 'verify']; | ||
return [2 /*return*/, crypto.subtle.generateKey({ | ||
errors_1.checkValidKeyUse(use); | ||
alg = use === types_1.KeyUse.Read ? constants_1.RSA_READ_ALG : constants_1.RSA_WRITE_ALG; | ||
uses = use === types_1.KeyUse.Read ? ['encrypt', 'decrypt'] : ['sign', 'verify']; | ||
return [2 /*return*/, window.crypto.subtle.generateKey({ | ||
name: alg, | ||
modulusLength: size, | ||
publicExponent: new Uint8Array([0x01, 0x00, 0x01]), | ||
publicExponent: utils_1.default.publicExponent(), | ||
hash: { name: hashAlg } | ||
@@ -83,6 +89,25 @@ }, false, uses)]; | ||
exports.makeKey = makeKey; | ||
function importPublicKey(hexKey, hashAlg, use) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var alg, uses, buf; | ||
return __generator(this, function (_a) { | ||
errors_1.checkValidKeyUse(use); | ||
alg = use === types_1.KeyUse.Read ? constants_1.RSA_READ_ALG : constants_1.RSA_WRITE_ALG; | ||
uses = use === types_1.KeyUse.Read ? ['encrypt'] : ['verify']; | ||
buf = utils_1.default.base64ToArrBuf(stripKeyHeader(hexKey)); | ||
return [2 /*return*/, window.crypto.subtle.importKey('spki', buf, { name: alg, hash: { name: hashAlg } }, true, uses)]; | ||
}); | ||
}); | ||
} | ||
exports.importPublicKey = importPublicKey; | ||
function stripKeyHeader(hexKey) { | ||
return hexKey | ||
.replace('-----BEGIN PUBLIC KEY-----\n', '') | ||
.replace('\n-----END PUBLIC KEY-----', ''); | ||
} | ||
exports.default = { | ||
getKey: getKey, | ||
makeKey: makeKey | ||
makeKey: makeKey, | ||
importPublicKey: importPublicKey | ||
}; | ||
//# sourceMappingURL=keys.js.map |
@@ -54,2 +54,3 @@ "use strict"; | ||
var utils_1 = require("../utils"); | ||
var types_1 = require("../types"); | ||
function init(maybeCfg) { | ||
@@ -61,8 +62,8 @@ return __awaiter(this, void 0, void 0, function () { | ||
case 0: | ||
cfg = config_1.default.normalize(__assign(__assign({}, (maybeCfg || {})), { type: 'rsa' })); | ||
cfg = config_1.default.normalize(__assign(__assign({}, (maybeCfg || {})), { type: types_1.CryptoSystem.RSA })); | ||
rsaSize = cfg.rsaSize, hashAlg = cfg.hashAlg, readKeyName = cfg.readKeyName, writeKeyName = cfg.writeKeyName; | ||
return [4 /*yield*/, keys_1.default.getKey(rsaSize, hashAlg, readKeyName, KeyUse.Read)]; | ||
return [4 /*yield*/, keys_1.default.getKey(rsaSize, hashAlg, readKeyName, types_1.KeyUse.Read)]; | ||
case 1: | ||
readKey = _a.sent(); | ||
return [4 /*yield*/, keys_1.default.getKey(rsaSize, hashAlg, writeKeyName, KeyUse.Write)]; | ||
return [4 /*yield*/, keys_1.default.getKey(rsaSize, hashAlg, writeKeyName, types_1.KeyUse.Write)]; | ||
case 2: | ||
@@ -99,4 +100,10 @@ writeKey = _a.sent(); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var pubkey; | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, operations_1.default.verifyBytes(utils_1.default.strToArrBuf(msg, charSize), utils_1.default.base64ToArrBuf(sig), publicKey)]; | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, keys_1.default.importPublicKey(publicKey, this.cfg.hashAlg, types_1.KeyUse.Write)]; | ||
case 1: | ||
pubkey = _a.sent(); | ||
return [2 /*return*/, operations_1.default.verifyBytes(utils_1.default.strToArrBuf(msg, charSize), utils_1.default.base64ToArrBuf(sig), pubkey)]; | ||
} | ||
}); | ||
@@ -108,7 +115,10 @@ }); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var cipherText; | ||
var pubkey, cipherText; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, operations_1.default.encryptBytes(utils_1.default.strToArrBuf(msg, charSize), publicKey)]; | ||
case 0: return [4 /*yield*/, keys_1.default.importPublicKey(publicKey, this.cfg.hashAlg, types_1.KeyUse.Read)]; | ||
case 1: | ||
pubkey = _a.sent(); | ||
return [4 /*yield*/, operations_1.default.encryptBytes(utils_1.default.strToArrBuf(msg, charSize), pubkey)]; | ||
case 2: | ||
cipherText = _a.sent(); | ||
@@ -120,3 +130,4 @@ return [2 /*return*/, utils_1.default.arrBufToBase64(cipherText)]; | ||
}; | ||
RSAKeyStore.prototype.decrypt = function (cipherText, publicKey, charSize) { | ||
RSAKeyStore.prototype.decrypt = function (cipherText, publicKey, //unused param so that keystore interfaces match | ||
charSize) { | ||
if (charSize === void 0) { charSize = 16; } | ||
@@ -123,0 +134,0 @@ return __awaiter(this, void 0, void 0, function () { |
@@ -60,3 +60,3 @@ "use strict"; | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, crypto.subtle.encrypt({ name: constants_1.RSA_READ_ALG }, publicKey, data)]; | ||
return [2 /*return*/, window.crypto.subtle.encrypt({ name: constants_1.RSA_READ_ALG }, publicKey, data)]; | ||
}); | ||
@@ -69,3 +69,3 @@ }); | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, crypto.subtle.decrypt({ name: constants_1.RSA_READ_ALG }, privateKey, cipherText)]; | ||
return [2 /*return*/, window.crypto.subtle.decrypt({ name: constants_1.RSA_READ_ALG }, privateKey, cipherText)]; | ||
}); | ||
@@ -80,3 +80,3 @@ }); | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, crypto.subtle.exportKey('spki', keypair.publicKey)]; | ||
case 0: return [4 /*yield*/, window.crypto.subtle.exportKey('spki', keypair.publicKey)]; | ||
case 1: | ||
@@ -83,0 +83,0 @@ spki = _a.sent(); |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -42,2 +78,19 @@ function arrBufToStr(buf, charSize) { | ||
exports.base64ToArrBuf = base64ToArrBuf; | ||
function publicExponent() { | ||
return new Uint8Array([0x01, 0x00, 0x01]); | ||
} | ||
exports.publicExponent = publicExponent; | ||
/* istanbul ignore next */ | ||
function structuralClone(obj) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
return [2 /*return*/, new Promise(function (resolve) { | ||
var _a = new MessageChannel(), port1 = _a.port1, port2 = _a.port2; | ||
port2.onmessage = function (ev) { return resolve(ev.data); }; | ||
port1.postMessage(obj); | ||
})]; | ||
}); | ||
}); | ||
} | ||
exports.structuralClone = structuralClone; | ||
exports.default = { | ||
@@ -49,4 +102,6 @@ arrBufToStr: arrBufToStr, | ||
hexToArrBuf: hexToArrBuf, | ||
base64ToArrBuf: base64ToArrBuf | ||
base64ToArrBuf: base64ToArrBuf, | ||
publicExponent: publicExponent, | ||
structuralClone: structuralClone | ||
}; | ||
//# sourceMappingURL=utils.js.map |
@@ -11,3 +11,3 @@ import { KeyStore, PartialConfig, Config, CharSize } from '../types'; | ||
encrypt(msg: string, publicKey: string, charSize?: CharSize): Promise<string>; | ||
decrypt(cipherText: string, publicKey: string, charSize?: CharSize): Promise<String>; | ||
decrypt(cipherText: string, publicKey: string, charSize?: CharSize): Promise<string>; | ||
publicReadKey(): Promise<string>; | ||
@@ -14,0 +14,0 @@ publicWriteKey(): Promise<string>; |
@@ -12,3 +12,3 @@ import { KeyStore, PartialConfig, Config, CharSize } from '../types'; | ||
decrypt(cipherText: string, publicKey?: string, //unused param so that keystore interfaces match | ||
charSize?: CharSize): Promise<String>; | ||
charSize?: CharSize): Promise<string>; | ||
publicReadKey(): Promise<string>; | ||
@@ -15,0 +15,0 @@ publicWriteKey(): Promise<string>; |
@@ -5,3 +5,3 @@ export declare type CipherText = ArrayBuffer; | ||
export declare type PrivateKey = CryptoKey; | ||
export declare type Config = { | ||
export interface Config { | ||
type: CryptoSystem; | ||
@@ -14,4 +14,4 @@ curve: ECC_Curve; | ||
writeKeyName: string; | ||
}; | ||
export declare type PartialConfig = { | ||
} | ||
export interface PartialConfig { | ||
type?: CryptoSystem; | ||
@@ -24,3 +24,3 @@ curve?: ECC_Curve; | ||
writeKeyName?: string; | ||
}; | ||
} | ||
export declare enum CryptoSystem { | ||
@@ -59,3 +59,3 @@ ECC = "ecc", | ||
} | ||
export declare type KeyStore = { | ||
export interface KeyStore { | ||
cfg: Config; | ||
@@ -67,5 +67,5 @@ readKey: CryptoKeyPair; | ||
encrypt(msg: string, publicKey: string, charSize?: CharSize): Promise<string>; | ||
decrypt(cipherText: string, publicKey: string, charSize?: CharSize): Promise<String>; | ||
decrypt(cipherText: string, publicKey: string, charSize?: CharSize): Promise<string>; | ||
publicReadKey(): Promise<string>; | ||
publicWriteKey(): Promise<string>; | ||
}; | ||
} |
{ | ||
"name": "keystore-idb", | ||
"version": "0.2.5", | ||
"version": "0.2.6", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "keywords": [], |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
820480
55
8098