From 3f9d67c587ba0df008be0ae31c652ffc9a5f6555 Mon Sep 17 00:00:00 2001 From: I503232 Date: Mon, 16 Feb 2026 10:02:50 +0100 Subject: [PATCH] fix: support combined (encrypted & decrypted) data in decryption --- src/reuse/modules/util/data.ts | 6 +++++- test/reuse/util/data/data/getSecureData.secure.json | 3 ++- test/reuse/util/data/getSecureData1.spec.js | 12 +++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/reuse/modules/util/data.ts b/src/reuse/modules/util/data.ts index 01a7e91a3..011d812d9 100644 --- a/src/reuse/modules/util/data.ts +++ b/src/reuse/modules/util/data.ts @@ -155,11 +155,15 @@ export class Data { for (const key in data) { if (typeof data[key] === "object" && !Array.isArray(data[key])) { data[key] = this._decryptRecursively(data[key], options); - } else if (typeof data[key] === "string" || Array.isArray(data[key])) { + } else if ((typeof data[key] === "string" && this._isHex(data[key])) || Array.isArray(data[key])) { data[key] = global.util.data.decrypt(data[key], options); } } return data; } + + private _isHex(str: string): boolean { + return /^[0-9a-fA-F]+$/.test(str) && str.length % 2 === 0; + } } export default new Data(); diff --git a/test/reuse/util/data/data/getSecureData.secure.json b/test/reuse/util/data/data/getSecureData.secure.json index f9ed76a4b..76da3fcd1 100644 --- a/test/reuse/util/data/data/getSecureData.secure.json +++ b/test/reuse/util/data/data/getSecureData.secure.json @@ -3,13 +3,14 @@ "password": "b1512310be1b4ae516a92bab1f857fc6018abe6e8199622db77a621b21ab1d7b0aeede946829ad6d46ec4d8f349e0a27452abe8fd0f7f035a309627e80a066a400ad06456ae6e6202287c7259b5703e8df768e76708c0f8494c2245eee5a841e1ab4ecd909347561cb92eba4ff53f7e288a31d295f475b1a6a00b804090d7bc15eb2108f6ce842fdee574d95c8fa562f4a927aaaea77c5eaf66330bfcb6445ee55c58815d30eb94845a19f3080e89a96cb9fcacfc51a1043dff1a99086d3be86e4529e9ddd381086a167703d5bff19e3060fec0e59b6a2d3d383c731bff89e26cc322d5436c5f654aa4df99977c770580220cad7075fc786a5d6310e49881b8ee9e3614339ce3d7f991d801f6e469ebff38cbda7fa479e6949a71580c8cd53816f72765dd0fe15feeab30424e950b37b8cfa0900d36295208b900d0923ac9b99f8bd5707a6095bdb4c995286787dc3fa058c462f041879061afd5157a207eca7" }, "test": { + "plainValue": "PLAIN_VALUE", "number": 42, "inner": { "value": "7090bcc6097140bdf6e68850582b5e94bbd4ec52d0db5c83ac7b9c1cf4c771e2b467b8cab402f27d6bf7ba1737ec081aff24bb437e80f734ad385fa28cdbe765b630774df1021c5020515d714753c1fce0119d9a7360cd802ac536060b33976a564a590c0f61a83e7d83b02ea917f0eba8ef34f36c5898bd49013dc5756dbb3b775f1df9b99c552f1d6c44fdf8b0635e69d4c884a5226a29b573b7975e8ac564481a3e8870ccef8dbff66e167b67bac9ec3155dc0e3c41460b03d9ab6ab58f061aa67b4216b0f719fb37225c5e51b3cdd38c4597c0fe9c48e5400390a61271649e3eda26c011dfca6a22cab1b7f8ed54bc37883013f203a117d3893dab3f5f42bbb63bf9566114df3e1aff43758a98d1e8cddc0b2a5c9b7076e6b6ce8d02864514b8af3a8b8d5f789c910c2af37305ad73b5bf9a3403299416a4278108987b80f33f82f6f2ad812518fbeb5eca565a52d8dea18976dc4d895c3c5a22693c70e9" } }, "alternatives": [ - "DUMMY310be1b4ae516a92bab1f857fc6018abe6e8199622db77a621b21ab1d7b0aeede946829ad6d46ec4d8f349e0a27452abe8fd0f7f035a309627e80a066a400ad06456ae6e6202287c7259b5703e8df768e76708c0f8494c2245eee5a841e1ab4ecd909347561cb92eba4ff53f7e288a31d295f475b1a6a00b804090d7bc15eb2108f6ce842fdee574d95c8fa562f4a927aaaea77c5eaf66330bfcb6445ee55c58815d30eb94845a19f3080e89a96cb9fcacfc51a1043dff1a99086d3be86e4529e9ddd381086a167703d5bff19e3060fec0e59b6a2d3d383c731bff89e26cc322d5436c5f654aa4df99977c770580220cad7075fc786a5d6310e49881b8ee9e3614339ce3d7f991d801f6e469ebff38cbda7fa479e6949a71580c8cd53816f72765dd0fe15feeab30424e950b37b8cfa0900d36295208b900d0923ac9b99f8bd5707a6095bdb4c995286787dc3fa058c462f041879061afd5157a207eca7", + "a1512310be1b4ae516a92bab1f857fc6018abe6e8199622db77a621b21ab1d7b0aeede946829ad6d46ec4d8f349e0a27452abe8fd0f7f035a309627e80a066a400ad06456ae6e6202287c7259b5703e8df768e76708c0f8494c2245eee5a841e1ab4ecd909347561cb92eba4ff53f7e288a31d295f475b1a6a00b804090d7bc15eb2108f6ce842fdee574d95c8fa562f4a927aaaea77c5eaf66330bfcb6445ee55c58815d30eb94845a19f3080e89a96cb9fcacfc51a1043dff1a99086d3be86e4529e9ddd381086a167703d5bff19e3060fec0e59b6a2d3d383c731bff89e26cc322d5436c5f654aa4df99977c770580220cad7075fc786a5d6310e49881b8ee9e3614339ce3d7f991d801f6e469ebff38cbda7fa479e6949a71580c8cd53816f72765dd0fe15feeab30424e950b37b8cfa0900d36295208b900d0923ac9b99f8bd5707a6095bdb4c995286787dc3fa058c462f041879061afd5157a207eca7", "b1512310be1b4ae516a92bab1f857fc6018abe6e8199622db77a621b21ab1d7b0aeede946829ad6d46ec4d8f349e0a27452abe8fd0f7f035a309627e80a066a400ad06456ae6e6202287c7259b5703e8df768e76708c0f8494c2245eee5a841e1ab4ecd909347561cb92eba4ff53f7e288a31d295f475b1a6a00b804090d7bc15eb2108f6ce842fdee574d95c8fa562f4a927aaaea77c5eaf66330bfcb6445ee55c58815d30eb94845a19f3080e89a96cb9fcacfc51a1043dff1a99086d3be86e4529e9ddd381086a167703d5bff19e3060fec0e59b6a2d3d383c731bff89e26cc322d5436c5f654aa4df99977c770580220cad7075fc786a5d6310e49881b8ee9e3614339ce3d7f991d801f6e469ebff38cbda7fa479e6949a71580c8cd53816f72765dd0fe15feeab30424e950b37b8cfa0900d36295208b900d0923ac9b99f8bd5707a6095bdb4c995286787dc3fa058c462f041879061afd5157a207eca7" ] } diff --git a/test/reuse/util/data/getSecureData1.spec.js b/test/reuse/util/data/getSecureData1.spec.js index 4af638ce4..cc7c5f1e9 100644 --- a/test/reuse/util/data/getSecureData1.spec.js +++ b/test/reuse/util/data/getSecureData1.spec.js @@ -11,19 +11,25 @@ describe("data - getSecureData - default source", function () { common.assertion.expectEqual(dataAct, dataExp); }); - it("Verification 2 - plain value", function () { + it("Verification 2 - plain string value", function () { + const dataExp = "PLAIN_VALUE"; + const dataAct = data.test.plainValue; + common.assertion.expectEqual(dataAct, dataExp); + }); + + it("Verification 3 - plain number value", function () { const dataExp = 42; const dataAct = data.test.number; common.assertion.expectEqual(dataAct, dataExp); }); - it("Verification 3 - nested value", function () { + it("Verification 4 - nested value", function () { const dataExp = "TEST"; const dataAct = data.test.inner.value; common.assertion.expectEqual(dataAct, dataExp); }); - it("Verification 4 - alternatives from different keys", function () { + it("Verification 5 - alternatives from different keys", function () { const dataExp = "super-duper-sensitive-pw"; const dataAct = data.alternatives; common.assertion.expectEqual(dataAct, dataExp);