Skip to content

Commit e1af516

Browse files
committed
don't set filename/timestamp when signing files with Crypto Refresh enabled
1 parent a0f3d53 commit e1af516

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

src/librepgp/stream-write.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1878,6 +1878,10 @@ build_literal_hdr(const rnp_ctx_t &ctx, pgp_literal_hdr_t &hdr)
18781878
{
18791879
/* content type - forcing binary now */
18801880
hdr.format = 'b';
1881+
#if defined(ENABLE_CRYPTO_REFRESH)
1882+
// filename and timestamp SHOULD NOT be set (struct is zero-initialized)
1883+
return;
1884+
#endif
18811885
/* filename */
18821886
size_t flen = ctx.filename.size();
18831887
if (flen > 255) {

src/tests/cli_tests.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2928,8 +2928,14 @@ def test_literal_filename(self):
29282928
self.assertEqual(ret, 0)
29292929
ret, out, _ = run_proc(GPG, ['--homedir', GPGHOME, GPG_LOOPBACK, '--passphrase', 'password', '--list-packets', enc])
29302930
self.assertEqual(ret, 0)
2931-
self.assertRegex(out, r'(?s)^.*literal data packet.*mode b.*created \d+.*name="source.txt".*$')
2931+
if RNP_CRYPTO_REFRESH:
2932+
self.assertRegex(out, r'(?s)^.*literal data packet.*mode b.*created \d+.*name="".*$')
2933+
else:
2934+
self.assertRegex(out, r'(?s)^.*literal data packet.*mode b.*created \d+.*name="source.txt".*$')
29322935
remove_files(enc)
2936+
if RNP_CRYPTO_REFRESH:
2937+
# skip following tests
2938+
return
29332939
# Encrypt file, overriding it's name
29342940
ret, out, _ = run_proc(RNP, ['--set-filename', 'hello', '-c', src, '--password', 'password'])
29352941
self.assertEqual(ret, 0)
@@ -3430,7 +3436,11 @@ def test_aead_last_chunk_zero_length(self):
34303436
ret, _, _ = run_proc(RNP, ['--homedir', RNPDIR, '--password', PASSWORD, '-z', '0', '-r', 'alice', '--aead=eax',
34313437
'--set-filename', 'cleartext-z0.txt', '--aead-chunk-bits=1', '-e', srctxt, '--output', enc])
34323438
self.assertEqual(ret, 0)
3433-
self.assertEqual(os.path.getsize(enc), eax_size)
3439+
if RNP_CRYPTO_REFRESH:
3440+
# with crypto refresh code we set the empty filename
3441+
self.assertEqual(os.path.getsize(enc), eax_size - len('cleartext-z0.txt'))
3442+
else:
3443+
self.assertEqual(os.path.getsize(enc), eax_size)
34343444
# Decrypt with RNP again
34353445
ret, _, _ = run_proc(RNP, ['--homedir', RNPDIR, '--password', PASSWORD, '-d', enc, '--output', dec])
34363446
self.assertEqual(file_text(srctxt), file_text(dec))
@@ -3445,7 +3455,11 @@ def test_aead_last_chunk_zero_length(self):
34453455
ret, _, _ = run_proc(RNP, ['--homedir', RNPDIR, '--password', PASSWORD, '-z', '0', '-r', 'alice', '--aead=ocb',
34463456
'--set-filename', 'cleartext-z0.txt', '--aead-chunk-bits=1', '-e', srctxt, '--output', enc])
34473457
self.assertEqual(ret, 0)
3448-
self.assertEqual(os.path.getsize(enc), ocb_size)
3458+
if RNP_CRYPTO_REFRESH:
3459+
# with crypto refresh code we set the empty filename
3460+
self.assertEqual(os.path.getsize(enc), ocb_size - len('cleartext-z0.txt'))
3461+
else:
3462+
self.assertEqual(os.path.getsize(enc), ocb_size)
34493463
# Decrypt with RNP again
34503464
ret, _, _ = run_proc(RNP, ['--homedir', RNPDIR, '--password', PASSWORD, '-d', enc, '--output', dec])
34513465
self.assertEqual(file_text(srctxt), file_text(dec))

src/tests/ffi.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3457,8 +3457,10 @@ TEST_F(rnp_tests, test_ffi_literal_filename)
34573457
assert_non_null(json);
34583458

34593459
std::string jstr = json;
3460+
#if !defined(ENABLE_CRYPTO_REFRESH)
34603461
assert_true(jstr.find("\"filename\":\"testfile.dat\"") != std::string::npos);
34613462
assert_true(jstr.find("\"timestamp\":12345678") != std::string::npos);
3463+
#endif
34623464

34633465
assert_rnp_success(rnp_input_destroy(input));
34643466
rnp_buffer_destroy(signed_buf);

0 commit comments

Comments
 (0)