@keeper-security/keeperapi 16.0.12 → 16.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"code":"var _a;\r\nimport { __awaiter } from \"tslib\";\r\nimport { KeyWrapper } from '../platform';\r\nimport { _asnhex_getHexOfV_AtObj, _asnhex_getPosArrayOfChildren_AtObj } from \"./asn1hex\";\r\nimport { RSAKey } from \"./rsa\";\r\nimport { keeperKeys } from \"../endpoint\";\r\nimport { normal64, normal64Bytes, webSafe64FromBytes } from \"../utils\";\r\nimport { socketSendMessage } from '../auth';\r\nimport * as asmCrypto from 'asmcrypto.js';\r\nconst rsaAlgorithmName = \"RSASSA-PKCS1-v1_5\";\r\nconst CBC_IV_LENGTH = 16;\r\nconst GCM_IV_LENGTH = 12;\r\nconst ECC_PUB_KEY_LENGTH = 65;\r\nlet socket = null;\r\nexport const browserPlatform = (_a = class {\r\n static getRandomBytes(length) {\r\n let data = new Uint8Array(length);\r\n crypto.getRandomValues(data);\r\n return data;\r\n }\r\n static bytesToBase64(data) {\r\n const chunkSize = 0x10000;\r\n if (data.length <= chunkSize) {\r\n // @ts-ignore\r\n return btoa(String.fromCharCode(...data));\r\n }\r\n let chunks = '';\r\n for (let i = 0; i < data.length; i = i + chunkSize) {\r\n // @ts-ignore\r\n chunks = chunks + String.fromCharCode(...data.slice(i, i + chunkSize));\r\n }\r\n return btoa(chunks);\r\n }\r\n static base64ToBytes(data) {\r\n return Uint8Array.from(atob(data), c => c.charCodeAt(0));\r\n }\r\n static bytesToString(data) {\r\n return new TextDecoder().decode(data);\r\n }\r\n static stringToBytes(data) {\r\n return new TextEncoder().encode(data);\r\n }\r\n static wrapPassword(password) {\r\n return KeyWrapper.create(password);\r\n // TODO const wrappedPassword = await crypto.subtle.importKey(\"raw\", password.asBytes(), \"PBKDF2\", false, [\"deriveBits\"]);\r\n // return KeyWrapper.create(wrappedPassword)\r\n }\r\n static unWrapPassword(password) {\r\n return password.getKey();\r\n }\r\n static importKey(keyId, key, storage, canExport) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // An AES key for one of our Keeper objects can be used for either CBC or GCM operations.\r\n // Since CryptoKeys are bound to a particular algorithm, we need to keep a copy for each.\r\n const extractable = !!canExport;\r\n const cbcKey = yield this.aesCbcImportKey(key, extractable);\r\n const gcmKey = yield this.aesGcmImportKey(key, extractable);\r\n cryptoKeysCache['cbc'][keyId] = cbcKey;\r\n cryptoKeysCache['gcm'][keyId] = gcmKey;\r\n if (storage) {\r\n if (storage.saveObject) {\r\n yield storage.saveObject(this.getStorageKeyId(keyId, 'cbc'), cbcKey);\r\n yield storage.saveObject(this.getStorageKeyId(keyId, 'gcm'), gcmKey);\r\n }\r\n else {\r\n yield storage.saveKeyBytes(keyId, key);\r\n }\r\n }\r\n });\r\n }\r\n static importKeyEC(keyId, privateKey, publicKey, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const key = yield this.importPrivateKeyEC(privateKey, publicKey);\r\n cryptoKeysCache['ecc'][keyId] = key;\r\n if (storage) {\r\n if (storage.saveObject) {\r\n yield storage.saveObject(this.getStorageKeyId(keyId, 'ecc'), key);\r\n }\r\n else {\r\n yield storage.saveKeyBytes(keyId, privateKey);\r\n yield storage.saveKeyBytes(keyId + '_pub', publicKey);\r\n }\r\n }\r\n });\r\n }\r\n static importKeyRSA(keyId, key, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n keyBytesCache[keyId] = key;\r\n if (storage) {\r\n yield storage.saveKeyBytes(keyId, key);\r\n }\r\n });\r\n }\r\n static getStorageKeyId(keyId, keyType) {\r\n switch (keyType) {\r\n case 'cbc':\r\n case 'gcm':\r\n return `${keyId}_${keyType}`;\r\n default:\r\n return keyId;\r\n }\r\n }\r\n static loadCryptoKey(keyId, keyType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (storage === null || storage === void 0 ? void 0 : storage.getObject) {\r\n const storageKeyId = this.getStorageKeyId(keyId, keyType);\r\n const storedKey = yield storage.getObject(storageKeyId);\r\n if (!storedKey) {\r\n throw new Error('Unable to load crypto key ' + keyId);\r\n }\r\n return storedKey;\r\n }\r\n const keyBytes = yield this.loadKeyBytes(keyId, storage);\r\n switch (keyType) {\r\n case 'cbc':\r\n return this.aesCbcImportKey(keyBytes, true);\r\n case 'gcm':\r\n return this.aesGcmImportKey(keyBytes, true);\r\n case 'ecc':\r\n const publicKeyBytes = yield this.loadKeyBytes(keyId + '_pub');\r\n if (!publicKeyBytes) {\r\n throw Error('Public key is required for EC decryption');\r\n }\r\n return this.importPrivateKeyEC(keyBytes, publicKeyBytes);\r\n default:\r\n throw new Error('Unsupported keyType: ' + keyType);\r\n }\r\n });\r\n }\r\n static loadKeyBytes(keyId, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const cachedKey = keyBytesCache[keyId];\r\n if (cachedKey) {\r\n return cachedKey;\r\n }\r\n const keyBytes = storage\r\n ? yield storage.getKeyBytes(keyId)\r\n : undefined;\r\n if (!keyBytes) {\r\n throw new Error(`Unable to load the key ${keyId}`);\r\n }\r\n keyBytesCache[keyId] = keyBytes;\r\n return keyBytes;\r\n });\r\n }\r\n static loadKey(keyId, keyType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const cachedKey = cryptoKeysCache[keyType][keyId];\r\n if (cachedKey) {\r\n return cachedKey;\r\n }\r\n const key = yield this.loadCryptoKey(keyId, keyType, storage);\r\n cryptoKeysCache[keyType][keyId] = key;\r\n return key;\r\n });\r\n }\r\n static unwrapKey(key, keyId, unwrappingKeyId, encryptionType, unwrappedKeyType, storage, canExport) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n switch (unwrappedKeyType) {\r\n case 'rsa':\r\n yield this.unwrapRSAKey(key, keyId, unwrappingKeyId, encryptionType, storage);\r\n break;\r\n case 'aes':\r\n yield this.unwrapAesKey(key, keyId, unwrappingKeyId, encryptionType, storage, canExport);\r\n break;\r\n default:\r\n throw new Error('Unable to unwrap key type ' + unwrappedKeyType);\r\n }\r\n });\r\n }\r\n static unwrapAesKey(key, keyId, unwrappingKeyId, encryptionType, storage, canExport) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let unwrappingKey;\r\n let wrappedKey;\r\n let algoParams;\r\n switch (encryptionType) {\r\n case 'rsa':\r\n const rsaKey = yield this.loadKeyBytes(unwrappingKeyId, storage);\r\n const keyBytes = this.privateDecrypt(key, rsaKey);\r\n yield this.importKey(keyId, keyBytes, storage, canExport);\r\n return;\r\n case 'cbc':\r\n wrappedKey = key.subarray(CBC_IV_LENGTH);\r\n algoParams = {\r\n iv: key.subarray(0, CBC_IV_LENGTH),\r\n name: 'AES-CBC'\r\n };\r\n unwrappingKey = yield this.loadKey(unwrappingKeyId, encryptionType, storage);\r\n break;\r\n case 'gcm':\r\n wrappedKey = key.subarray(GCM_IV_LENGTH);\r\n algoParams = {\r\n iv: key.subarray(0, GCM_IV_LENGTH),\r\n name: 'AES-GCM'\r\n };\r\n unwrappingKey = yield this.loadKey(unwrappingKeyId, encryptionType, storage);\r\n break;\r\n case 'ecc':\r\n const message = key.slice(ECC_PUB_KEY_LENGTH);\r\n wrappedKey = message.subarray(GCM_IV_LENGTH);\r\n algoParams = {\r\n iv: message.subarray(0, GCM_IV_LENGTH),\r\n name: 'AES-GCM'\r\n };\r\n const ephemeralPublicKey = key.slice(0, ECC_PUB_KEY_LENGTH);\r\n const eccPrivateKey = yield this.loadKey(unwrappingKeyId, 'ecc', storage);\r\n unwrappingKey = yield this.deriveSharedSecretKey(ephemeralPublicKey, eccPrivateKey);\r\n break;\r\n }\r\n const canExtract = (storage === null || storage === void 0 ? void 0 : storage.saveObject) ? !!canExport : true;\r\n const keyUsages = ['encrypt', 'decrypt', 'unwrapKey', 'wrapKey'];\r\n const gcmKey = yield crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, algoParams, 'AES-GCM', canExtract, keyUsages);\r\n const cbcKey = yield crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, algoParams, 'AES-CBC', canExtract, keyUsages);\r\n cryptoKeysCache['cbc'][keyId] = cbcKey;\r\n cryptoKeysCache['gcm'][keyId] = gcmKey;\r\n if (storage) {\r\n if (storage.saveObject) {\r\n yield storage.saveObject(this.getStorageKeyId(keyId, 'cbc'), cbcKey);\r\n yield storage.saveObject(this.getStorageKeyId(keyId, 'gcm'), gcmKey);\r\n }\r\n else {\r\n const keyBuffer = yield crypto.subtle.exportKey('raw', gcmKey);\r\n yield storage.saveKeyBytes(keyId, new Uint8Array(keyBuffer));\r\n }\r\n }\r\n });\r\n }\r\n static unwrapRSAKey(key, keyId, unwrappingKeyId, encryptionType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const rsaKey = yield this.decrypt(key, unwrappingKeyId, encryptionType, storage);\r\n yield this.importKeyRSA(keyId, rsaKey, storage);\r\n });\r\n }\r\n static decrypt(data, keyId, encryptionType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n switch (encryptionType) {\r\n case 'cbc': {\r\n const key = yield this.loadKey(keyId, encryptionType, storage);\r\n return this.aesCbcDecryptWebCrypto(data, key);\r\n }\r\n case 'gcm': {\r\n const key = yield this.loadKey(keyId, encryptionType, storage);\r\n return this.aesGcmDecryptWebCrypto(data, key);\r\n }\r\n case 'rsa': {\r\n const key = yield this.loadKeyBytes(keyId, storage);\r\n return this.privateDecrypt(data, key);\r\n }\r\n case 'ecc': {\r\n const key = yield this.loadKey(keyId, encryptionType, storage);\r\n return this.privateDecryptECWebCrypto(data, key);\r\n }\r\n default:\r\n throw Error('Unknown encryption type: ' + encryptionType);\r\n }\r\n });\r\n }\r\n static generateRSAKeyPair() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let keyPair = yield crypto.subtle.generateKey({\r\n name: rsaAlgorithmName,\r\n modulusLength: 2048,\r\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\r\n hash: { name: 'SHA-256' },\r\n }, true, [\"sign\", \"verify\"]);\r\n let jwk = yield crypto.subtle.exportKey(\"jwk\", keyPair.privateKey);\r\n let rsaKey = new RSAKey();\r\n rsaKey.setPrivateEx(base64ToHex(normal64(jwk.n)), base64ToHex(normal64(jwk.e)), base64ToHex(normal64(jwk.d)), base64ToHex(normal64(jwk.p)), base64ToHex(normal64(jwk.q)), base64ToHex(normal64(jwk.dp)), base64ToHex(normal64(jwk.dq)), base64ToHex(normal64(jwk.qi)));\r\n let public_key = rsaKey.toASN1HexString(false);\r\n let private_key = rsaKey.toASN1HexString(true);\r\n return {\r\n privateKey: hexToBytes(private_key),\r\n publicKey: hexToBytes(public_key),\r\n };\r\n });\r\n }\r\n static generateECKeyPair() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const ecdh = yield crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits']);\r\n const privateKey = yield crypto.subtle.exportKey('jwk', ecdh.privateKey);\r\n const publicKey = yield crypto.subtle.exportKey('raw', ecdh.publicKey);\r\n return { publicKey: new Uint8Array(publicKey), privateKey: normal64Bytes(privateKey.d) };\r\n });\r\n }\r\n static publicEncrypt(data, key) {\r\n let publicKeyHex = base64ToHex(key);\r\n const pos = _asnhex_getPosArrayOfChildren_AtObj(publicKeyHex, 0);\r\n const hN = _asnhex_getHexOfV_AtObj(publicKeyHex, pos[0]);\r\n const hE = _asnhex_getHexOfV_AtObj(publicKeyHex, pos[1]);\r\n const rsa = new RSAKey();\r\n rsa.setPublic(hN, hE);\r\n const hexBytes = bytesToHex(data);\r\n const encryptedBinary = rsa.encryptBinary(hexBytes);\r\n return hexToBytes(encryptedBinary);\r\n }\r\n static publicEncryptEC(data, key, id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const ephemeralKeyPair = yield crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits']);\r\n const ephemeralPublicKey = yield crypto.subtle.exportKey('raw', ephemeralKeyPair.publicKey);\r\n const recipientPublicKey = yield crypto.subtle.importKey('raw', key, { name: 'ECDH', namedCurve: 'P-256' }, true, []);\r\n const sharedSecret = yield crypto.subtle.deriveBits({ name: 'ECDH', public: recipientPublicKey }, ephemeralKeyPair.privateKey, 256);\r\n const idBytes = id || new Uint8Array();\r\n const sharedSecretCombined = new Uint8Array(sharedSecret.byteLength + idBytes.byteLength);\r\n sharedSecretCombined.set(new Uint8Array(sharedSecret), 0);\r\n sharedSecretCombined.set(idBytes, sharedSecret.byteLength);\r\n const symmetricKey = yield crypto.subtle.digest('SHA-256', sharedSecretCombined);\r\n const cipherText = yield this.aesGcmEncrypt(data, new Uint8Array(symmetricKey));\r\n const result = new Uint8Array(ephemeralPublicKey.byteLength + cipherText.byteLength);\r\n result.set(new Uint8Array(ephemeralPublicKey), 0);\r\n result.set(new Uint8Array(cipherText), ephemeralPublicKey.byteLength);\r\n return result;\r\n });\r\n }\r\n static privateDecrypt(data, key) {\r\n let pkh = bytesToHex(key);\r\n const rsa = new RSAKey();\r\n rsa.setPrivateKeyFromASN1HexString(pkh);\r\n const hexBytes = bytesToHex(data);\r\n const decryptedBinary = rsa.decryptBinary(hexBytes);\r\n return hexToBytes(decryptedBinary);\r\n }\r\n static privateDecryptEC(data, privateKey, publicKey, id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!publicKey) {\r\n throw Error('Public key is required for EC decryption');\r\n }\r\n const privateKeyImport = yield this.importPrivateKeyEC(privateKey, publicKey);\r\n return this.privateDecryptECWebCrypto(data, privateKeyImport, id);\r\n });\r\n }\r\n static importPrivateKeyEC(privateKey, publicKey) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const x = webSafe64FromBytes(publicKey.subarray(1, 33));\r\n const y = webSafe64FromBytes(publicKey.subarray(33, 65));\r\n const d = webSafe64FromBytes(privateKey);\r\n const jwk = {\r\n 'crv': 'P-256',\r\n d,\r\n 'ext': true,\r\n 'key_ops': [\r\n 'deriveBits'\r\n ],\r\n 'kty': 'EC',\r\n x,\r\n y\r\n };\r\n return yield crypto.subtle.importKey('jwk', jwk, { name: 'ECDH', namedCurve: 'P-256' }, false, ['deriveBits']);\r\n });\r\n }\r\n static deriveSharedSecretKey(ephemeralPublicKey, privateKey, id) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const pubCryptoKey = yield crypto.subtle.importKey('raw', ephemeralPublicKey, { name: 'ECDH', namedCurve: 'P-256' }, true, []);\r\n const sharedSecret = yield crypto.subtle.deriveBits({ name: 'ECDH', public: pubCryptoKey }, privateKey, 256);\r\n let sharedSecretCombined = new Uint8Array(sharedSecret.byteLength + ((_a = id === null || id === void 0 ? void 0 : id.byteLength) !== null && _a !== void 0 ? _a : 0));\r\n sharedSecretCombined.set(new Uint8Array(sharedSecret), 0);\r\n if (id) {\r\n sharedSecretCombined.set(id, sharedSecret.byteLength);\r\n }\r\n const symmetricKeyBuffer = yield crypto.subtle.digest('SHA-256', sharedSecretCombined);\r\n return this.aesGcmImportKey(new Uint8Array(symmetricKeyBuffer), false);\r\n });\r\n }\r\n static privateDecryptECWebCrypto(data, privateKey, id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const message = data.slice(ECC_PUB_KEY_LENGTH);\r\n const ephemeralPublicKey = data.slice(0, ECC_PUB_KEY_LENGTH);\r\n const symmetricKey = yield this.deriveSharedSecretKey(ephemeralPublicKey, privateKey, id);\r\n return yield this.aesGcmDecryptWebCrypto(message, symmetricKey);\r\n });\r\n }\r\n // TODO Not tested\r\n static privateSign(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let _key = yield crypto.subtle.importKey(\"pkcs8\", browserPlatform.base64ToBytes(key), \"RSA-PSS\", true, [\"sign\"]);\r\n let signature = yield crypto.subtle.sign(rsaAlgorithmName, _key, data);\r\n return new Uint8Array(signature);\r\n });\r\n }\r\n static encrypt(data, keyId, encryptionType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n switch (encryptionType) {\r\n case 'cbc': {\r\n const key = yield this.loadKey(keyId, encryptionType, storage);\r\n return this.aesCbcEncryptWebCrypto(data, key);\r\n }\r\n case 'gcm': {\r\n const key = yield this.loadKey(keyId, encryptionType, storage);\r\n return this.aesGcmEncryptWebCrypto(data, key);\r\n }\r\n case 'ecc': {\r\n const publicKey = yield this.loadKeyBytes(keyId + '_pub');\r\n return this.publicEncryptEC(data, publicKey);\r\n }\r\n case 'rsa': {\r\n const publicKey = yield this.loadKeyBytes(keyId + '_pub');\r\n return this.publicEncrypt(data, this.bytesToBase64(publicKey));\r\n }\r\n default:\r\n throw Error('Unknown encryption type: ' + encryptionType);\r\n }\r\n });\r\n }\r\n static wrapKey(keyId, wrappingKeyId, encryptionType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n switch (encryptionType) {\r\n case 'cbc':\r\n case 'gcm':\r\n return this.aesWrapKey(keyId, wrappingKeyId, encryptionType, storage);\r\n default:\r\n throw new Error(`Unsupported encryptionType (${encryptionType})`);\r\n }\r\n });\r\n }\r\n static aesWrapKey(keyId, wrappingKeyId, encryptionType, storage) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const key = yield this.loadKey(keyId, 'cbc', storage);\r\n const wrappingKey = yield this.loadKey(wrappingKeyId, encryptionType, storage);\r\n let algoParams;\r\n let iv;\r\n switch (encryptionType) {\r\n case 'cbc':\r\n iv = this.getRandomBytes(CBC_IV_LENGTH);\r\n algoParams = {\r\n iv,\r\n name: 'AES-CBC'\r\n };\r\n break;\r\n case 'gcm':\r\n iv = this.getRandomBytes(GCM_IV_LENGTH);\r\n algoParams = {\r\n iv,\r\n name: 'AES-GCM'\r\n };\r\n break;\r\n }\r\n const wrappedKey = yield crypto.subtle.wrapKey('raw', key, wrappingKey, algoParams);\r\n let resArr = new Uint8Array(wrappedKey);\r\n let result = new Uint8Array(iv.length + resArr.length);\r\n result.set(iv);\r\n result.set(resArr, iv.length);\r\n return result;\r\n });\r\n }\r\n static aesGcmEncrypt(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let _key = yield crypto.subtle.importKey(\"raw\", key, \"AES-GCM\", true, [\"encrypt\"]);\r\n return this.aesGcmEncryptWebCrypto(data, _key);\r\n });\r\n }\r\n static aesGcmEncryptWebCrypto(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let iv = browserPlatform.getRandomBytes(GCM_IV_LENGTH);\r\n let res = yield crypto.subtle.encrypt({\r\n name: \"AES-GCM\",\r\n iv: iv\r\n }, key, data);\r\n let resArr = new Uint8Array(res);\r\n let result = new Uint8Array(iv.length + resArr.length);\r\n result.set(iv);\r\n result.set(resArr, iv.length);\r\n return result;\r\n });\r\n }\r\n static aesGcmDecrypt(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const _key = yield this.aesGcmImportKey(key, false);\r\n return this.aesGcmDecryptWebCrypto(data, _key);\r\n });\r\n }\r\n static aesGcmImportKey(keyBytes, extractable) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return crypto.subtle.importKey(\"raw\", keyBytes, \"AES-GCM\", extractable, ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']);\r\n });\r\n }\r\n static aesGcmDecryptWebCrypto(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const iv = data.subarray(0, GCM_IV_LENGTH);\r\n const encrypted = data.subarray(GCM_IV_LENGTH);\r\n const res = yield crypto.subtle.decrypt({\r\n name: \"AES-GCM\",\r\n iv: iv\r\n }, key, encrypted);\r\n return new Uint8Array(res);\r\n });\r\n }\r\n static aesCbcEncryptWebCrypto(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let iv = browserPlatform.getRandomBytes(CBC_IV_LENGTH);\r\n let res = yield crypto.subtle.encrypt({\r\n name: \"aes-cbc\",\r\n iv: iv\r\n }, key, data);\r\n let resArr = new Uint8Array(res);\r\n let result = new Uint8Array(iv.byteLength + resArr.byteLength);\r\n result.set(iv);\r\n result.set(resArr, iv.byteLength);\r\n return result;\r\n });\r\n }\r\n // The browser's implementation of aes cbc only works when padding is required. \r\n // Use asmCrypto for no padding. crypto-js was found to have a vulnerability (Cache-Timing attack)\r\n static aesCbcEncrypt(data, key, usePadding) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (usePadding) {\r\n let _key = yield crypto.subtle.importKey(\"raw\", key, \"aes-cbc\", true, [\"encrypt\"]);\r\n return this.aesCbcEncryptWebCrypto(data, _key);\r\n }\r\n else {\r\n const iv = browserPlatform.getRandomBytes(CBC_IV_LENGTH);\r\n return asmCrypto.AES_CBC.encrypt(data, key, true, iv);\r\n }\r\n });\r\n }\r\n // The browser's implementation of aes cbc only works when padding is required. \r\n // Use asmCrypto for no padding. crypto-js was found to have a vulnerability (Cache-Timing attack)\r\n static aesCbcDecrypt(data, key, usePadding) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (usePadding) {\r\n let _key = yield this.aesCbcImportKey(key, false);\r\n return this.aesCbcDecryptWebCrypto(data, _key);\r\n }\r\n else {\r\n var iv = data.subarray(0, CBC_IV_LENGTH);\r\n var ciphertext = data.subarray(CBC_IV_LENGTH);\r\n var result = asmCrypto.AES_CBC.decrypt(ciphertext, key, false, iv);\r\n return result;\r\n }\r\n });\r\n }\r\n static aesCbcImportKey(keyBytes, extractable) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return crypto.subtle.importKey('raw', keyBytes, 'AES-CBC', extractable, ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']);\r\n });\r\n }\r\n static aesCbcDecryptWebCrypto(data, key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const iv = data.subarray(0, CBC_IV_LENGTH);\r\n const ciphertext = data.subarray(CBC_IV_LENGTH);\r\n const decrypt = yield crypto.subtle.decrypt({\r\n name: 'AES-CBC',\r\n iv: iv\r\n }, key, ciphertext);\r\n return new Uint8Array(decrypt);\r\n });\r\n }\r\n static deriveKey(password, saltBytes, iterations) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let key = yield crypto.subtle.importKey(\"raw\", password.getKey(), \"PBKDF2\", false, [\"deriveBits\"]);\r\n let derived = yield crypto.subtle.deriveBits({\r\n name: \"PBKDF2\",\r\n salt: saltBytes,\r\n iterations: iterations,\r\n hash: {\r\n name: \"SHA-256\"\r\n }\r\n }, key, 256);\r\n return new Uint8Array(derived);\r\n });\r\n }\r\n static deriveKeyV2(domain, password, saltBytes, iterations) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let key = yield crypto.subtle.importKey(\"raw\", Uint8Array.of(...browserPlatform.stringToBytes(domain), ...browserPlatform.unWrapPassword(password)), \"PBKDF2\", false, [\"deriveBits\"]);\r\n let derived = yield crypto.subtle.deriveBits({\r\n name: \"PBKDF2\",\r\n salt: saltBytes,\r\n iterations: iterations,\r\n hash: {\r\n name: \"SHA-512\"\r\n }\r\n }, key, 512);\r\n let hmacKey = yield crypto.subtle.importKey(\"raw\", derived, {\r\n name: \"HMAC\",\r\n hash: {\r\n name: \"SHA-256\"\r\n }\r\n }, false, [\"sign\", \"verify\"]);\r\n const reduced = yield crypto.subtle.sign(\"HMAC\", hmacKey, browserPlatform.stringToBytes(domain));\r\n return new Uint8Array(reduced);\r\n });\r\n }\r\n static calcAuthVerifier(key) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let digest = yield crypto.subtle.digest(\"SHA-256\", key);\r\n return new Uint8Array(digest);\r\n });\r\n }\r\n static get(url, headers) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let resp = yield fetch(url, {\r\n method: \"GET\",\r\n headers: Object.entries(headers),\r\n });\r\n let body = yield resp.arrayBuffer();\r\n return {\r\n statusCode: resp.status,\r\n headers: resp.headers,\r\n data: new Uint8Array(body)\r\n };\r\n });\r\n }\r\n static post(url, request, headers) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let resp = yield fetch(url, {\r\n method: \"POST\",\r\n headers: new Headers(Object.assign({ \"Content-Type\": \"application/octet-stream\", \"Content-Length\": String(request.length) }, headers)),\r\n body: request,\r\n });\r\n let body = yield resp.arrayBuffer();\r\n return {\r\n statusCode: resp.status,\r\n headers: resp.headers,\r\n data: new Uint8Array(body)\r\n };\r\n });\r\n }\r\n static fileUpload(url, uploadParameters, data) {\r\n return new Promise((resolve, reject) => {\r\n const form = new FormData();\r\n for (const key in uploadParameters) {\r\n form.append(key, uploadParameters[key]);\r\n }\r\n form.append('file', data);\r\n const fetchCfg = {\r\n method: 'PUT',\r\n body: form,\r\n };\r\n fetch(url, fetchCfg)\r\n .then(response => response.json())\r\n .then(res => {\r\n resolve({\r\n headers: res.headers,\r\n statusCode: res.statusCode,\r\n statusMessage: res.statusMessage\r\n });\r\n })\r\n .catch(error => {\r\n console.error('Error uploading file:', error);\r\n reject(error);\r\n });\r\n });\r\n }\r\n static createWebsocket(url) {\r\n socket = new WebSocket(url);\r\n let createdSocket;\r\n return createdSocket = {\r\n onOpen: (callback) => {\r\n socket.onopen = (e) => {\r\n callback();\r\n };\r\n },\r\n close: () => {\r\n socket.close();\r\n },\r\n onClose: (callback) => {\r\n socket.addEventListener(\"close\", callback);\r\n },\r\n onError: (callback) => {\r\n socket.addEventListener(\"error\", callback);\r\n },\r\n onMessage: (callback) => {\r\n socket.onmessage = (e) => __awaiter(this, void 0, void 0, function* () {\r\n const pmArrBuff = yield e.data.arrayBuffer();\r\n const pmUint8Buff = new Uint8Array(pmArrBuff);\r\n callback(pmUint8Buff);\r\n });\r\n },\r\n send: (message) => {\r\n socketSendMessage(message, socket, createdSocket);\r\n },\r\n messageQueue: [],\r\n };\r\n }\r\n static log(message, options) {\r\n if (options === 'CR')\r\n return;\r\n console.log(message);\r\n }\r\n },\r\n _a.keys = keeperKeys.der,\r\n _a);\r\nfunction base64ToHex(data) {\r\n let raw = atob(data);\r\n let hex = '';\r\n for (let i = 0; i < raw.length; i++) {\r\n let _hex = raw.charCodeAt(i).toString(16);\r\n hex += (_hex.length == 2 ? _hex : '0' + _hex);\r\n }\r\n return hex;\r\n}\r\nfunction hexToBytes(data) {\r\n let bytes = [];\r\n for (let c = 0; c < data.length; c += 2)\r\n bytes.push(parseInt(data.substr(c, 2), 16));\r\n return Uint8Array.from(bytes);\r\n}\r\nfunction bytesToHex(data) {\r\n let hex = [];\r\n for (let i = 0; i < data.length; i++) {\r\n let current = data[i] < 0 ? data[i] + 256 : data[i];\r\n hex.push((current >>> 4).toString(16));\r\n hex.push((current & 0xF).toString(16));\r\n }\r\n return hex.join(\"\");\r\n}\r\nconst OPCODE_PING = new Uint8Array([0x9]);\r\nconst heartbeat = setInterval(() => {\r\n if (!socket)\r\n return;\r\n if (socket.readyState !== WebSocket.OPEN)\r\n return;\r\n socket.send(OPCODE_PING);\r\n}, 10000);\r\nconst keyBytesCache = {};\r\nconst cryptoKeysCache = {\r\n cbc: {},\r\n gcm: {},\r\n ecc: {},\r\n};\r\n//# sourceMappingURL=platform.js.map","references":["/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/platform.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/browser/asn1hex.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/browser/rsa.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/endpoint.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/utils.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/auth.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/node_modules/asmcrypto.js/dist_es8/entry-export_all.d.ts","/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/src/commands.ts"],"map":"{\"version\":3,\"file\":\"platform.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/browser/platform.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/home/runner/work/keeper-sdk-javascript/keeper-sdk-javascript/keeperapi/browser/platform.d.ts","writeByteOrderMark":false,"text":"import { Platform } from '../platform';\r\nexport declare const browserPlatform: Platform;\r\n"}}
package/dist/index.es.js CHANGED
@@ -157493,9 +157493,9 @@ const browserPlatform = (_a = class {
157493
157493
  const keyBytes = yield this.loadKeyBytes(keyId, storage);
157494
157494
  switch (keyType) {
157495
157495
  case 'cbc':
157496
- return this.aesCbcImportKey(keyBytes, false);
157496
+ return this.aesCbcImportKey(keyBytes, true);
157497
157497
  case 'gcm':
157498
- return this.aesGcmImportKey(keyBytes, false);
157498
+ return this.aesGcmImportKey(keyBytes, true);
157499
157499
  case 'ecc':
157500
157500
  const publicKeyBytes = yield this.loadKeyBytes(keyId + '_pub');
157501
157501
  if (!publicKeyBytes) {