diff --git a/dist/services/IPFSService.js b/dist/services/IPFSService.js index 72d5a8ad30529d2fb3765d5869d81ef4ffe0f154..fa99b554123665a1f662a6bab9aae3838dd790fd 100644 --- a/dist/services/IPFSService.js +++ b/dist/services/IPFSService.js @@ -24,7 +24,7 @@ class IPFSDataRetriever { getDecodedContent(contentData, ipfsVersion) { return __awaiter(this, void 0, void 0, function* () { const rawContent = yield this.getRawContent(contentData.cid, contentData.head, ipfsVersion); - return this.decryptContent(rawContent, contentData.key); + return this.decryptContent(rawContent, contentData.key, ipfsVersion); }); } getRawContent(cid, head, ipfsVersion) { @@ -54,10 +54,14 @@ class IPFSDataRetriever { return assembledData; }); } - decryptContent(content, decryptionKey) { + decryptContent(content, decryptionKey, ipfsVersion) { return __awaiter(this, void 0, void 0, function* () { const { key, data: iv } = QrCodeDataService_1.default.decodeKeyDataPair(decryptionKey); const decryptedZip = yield CryptoService_1.default.decryptAESGCM(content, (0, common_1.base64ToArrayBuffer)(key), (0, common_1.base64ToArrayBuffer)(iv), true); + if (ipfsVersion === undefined) { + const decodedZip = new TextDecoder().decode(decryptedZip); + return (0, common_1.decompressData)(decodedZip); + } const decompressed = (0, common_1.decompressData)(decryptedZip); return decompressed; }); diff --git a/package.json b/package.json index e86e75964c4cbe9a8c454df8e426db04dc449ba6..dcb129d776d41c47c63c21da1a8102b61feec489 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@vereign/light-utils", - "version": "2.0.4", + "version": "v2.0.7", "license": "MIT", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/services/CryptoService/CryptoServiceWeb.ts b/src/services/CryptoService/CryptoServiceWeb.ts index d5ef7a08fee5c44b84b7df08b9c70016f4ac81a8..06534df3aa1ac55180bc501d73b5ee30718fc55d 100644 --- a/src/services/CryptoService/CryptoServiceWeb.ts +++ b/src/services/CryptoService/CryptoServiceWeb.ts @@ -101,9 +101,11 @@ class CryptoServiceWeb implements ICryptoService { importedKey, data ); + if (returnBuffer) { return decrypted; } + return new TextDecoder().decode(decrypted); } diff --git a/src/services/IPFSService.ts b/src/services/IPFSService.ts index 18a89c52087b4370cff1fe2792c7fe0eb9f548b1..c2644aa1222306af115bb69365b792a197a09aba 100644 --- a/src/services/IPFSService.ts +++ b/src/services/IPFSService.ts @@ -21,7 +21,7 @@ class IPFSDataRetriever { contentData.head, ipfsVersion ); - return this.decryptContent(rawContent, contentData.key); + return this.decryptContent(rawContent, contentData.key, ipfsVersion); } private async getRawContent( @@ -37,6 +37,7 @@ class IPFSDataRetriever { url: `${this.ipfsUrl}${GET_CONTENT_PATH}/${cid}`, method: "GET", }); + ipfsFileContent = base64ToArrayBuffer(response.data); } else if (ipfsVersion === "v2") { const result = await axios.get( @@ -59,7 +60,8 @@ class IPFSDataRetriever { private async decryptContent( content: ArrayBuffer, - decryptionKey: string + decryptionKey: string, + ipfsVersion: string ): Promise<ArrayBuffer> { const { key, data: iv } = QrCodeDataService.decodeKeyDataPair(decryptionKey); @@ -71,8 +73,12 @@ class IPFSDataRetriever { true ); - const decompressed = decompressData(decryptedZip); + if (ipfsVersion === undefined) { + const decodedZip = new TextDecoder().decode(decryptedZip); + return decompressData(decodedZip); + } + const decompressed = decompressData(decryptedZip); return decompressed; } }