Explorar o código

components: convert string to bytes to fix TypeError There is a string passed as an argument for function, but a format of a string seemingly refers to bytes therefore it needs to be converted to bytes Solves https://esp32.com/viewtopic.php?f=13&t=16529

martin.gano %!s(int64=5) %!d(string=hai) anos
pai
achega
cb0bdb8bba

+ 1 - 1
components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py

@@ -797,7 +797,7 @@ def decrypt(args):
     page_num = 0
     page_max_size = 4096
     start_entry_offset = 0
-    empty_data_entry = bytearray('\xff') * 32
+    empty_data_entry = bytearray(b'\xff') * nvs_read_bytes
 
     # Check if key file has .bin extension
     input_files = [args.input, args.key, args.output]

+ 30 - 0
components/nvs_flash/test_nvs_host/test_nvs.cpp

@@ -2976,6 +2976,36 @@ TEST_CASE("test nvs apis for nvs partition generator utility with encryption ena
 
 }
 
+TEST_CASE("test decrypt functionality for encrypted data", "[nvs_part_gen]")
+{
+
+    //retrieving the temporary test data
+    int status = system("cp -rf ../nvs_partition_generator/testdata .");
+    CHECK(status == 0);
+
+    //encoding data from sample_multipage_blob.csv
+    status = system("python ../nvs_partition_generator/nvs_partition_gen.py generate ../nvs_partition_generator/sample_multipage_blob.csv partition_encoded.bin 0x5000 --outdir ../nvs_partition_generator");
+    CHECK(status == 0);
+
+    //encrypting data from sample_multipage_blob.csv
+    status = system("python ../nvs_partition_generator/nvs_partition_gen.py encrypt ../nvs_partition_generator/sample_multipage_blob.csv partition_encrypted.bin 0x5000 --inputkey ../nvs_partition_generator/testdata/sample_encryption_keys.bin --outdir ../nvs_partition_generator");
+    CHECK(status == 0);
+
+    //decrypting data from partition_encrypted.bin
+    status = system("python ../nvs_partition_generator/nvs_partition_gen.py decrypt ../nvs_partition_generator/partition_encrypted.bin ../nvs_partition_generator/testdata/sample_encryption_keys.bin ../nvs_partition_generator/partition_decrypted.bin");
+    CHECK(status == 0);
+
+    status = system("diff ../nvs_partition_generator/partition_decrypted.bin ../nvs_partition_generator/partition_encoded.bin");
+    CHECK(status == 0);
+    CHECK(WEXITSTATUS(status) == 0);
+
+
+    //cleaning up the temporary test data
+    status = system("rm -rf testdata");
+    CHECK(status == 0);
+
+}
+
 TEST_CASE("test nvs apis for nvs partition generator utility with encryption enabled using keygen", "[nvs_part_gen]")
 {
     int childpid = fork();

+ 1 - 1
tools/ci/config/host-test.yml

@@ -59,7 +59,7 @@ test_nvs_on_host:
   extends: .host_test_template
   script:
     - cd components/nvs_flash/test_nvs_host
-    - make test
+    - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh make test
 
 test_nvs_coverage:
   extends: .host_test_template