annotate src/lib-dcrypt/test-stream.c @ 22981:acc052049f0b

lib-dcrypt: istream-decrypt - Add support for seeking
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 05 Jun 2018 13:34:02 +0300
parents 29cb00415262
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21482
diff changeset
1 /* Copyright (c) 2016-2018 Dovecot authors, see the included COPYING file */
21264
8f33680c6722 global: Added missing copyright notices.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21232
diff changeset
2
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
3 #include "lib.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
4 #include "buffer.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
5 #include "str.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
6 #include "dcrypt.h"
20596
9a2ac2a69648 lib-dcrypt: add dcrypt-iostream.h
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20589
diff changeset
7 #include "dcrypt-iostream.h"
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
8 #include "ostream.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
9 #include "ostream-encrypt.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
10 #include "istream.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
11 #include "istream-decrypt.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
12 #include "istream-hash.h"
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
13 #include "istream-base64.h"
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
14 #include "randgen.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
15 #include "hash-method.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
16 #include "test-common.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
17 #include "hex-binary.h"
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
18 #include <fcntl.h>
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
19 #include <sys/stat.h>
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
20 #include <stdio.h>
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
21
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
22 static const char key_v1_priv[] = "-----BEGIN PRIVATE KEY-----\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
23 "MIGpAgEAMBAGByqGSM49AgEGBSuBBAAjBIGRMIGOAgEBBEGz2V2VMi/5s+Z+GJh7\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
24 "4WfqZjZUpqqm+NJWojm6BbrZMY+9ZComlTGVcUZ007acFxV93oMmrfmtRUb5ynrb\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
25 "MRFskKFGA0QAAwHrAJc8TvyPzspOoz6UH1C1YRmaUVm8tsLu2d0dYtZeOKJUl52J\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
26 "4o8MKIg+ce4q0mTNFrhj+glKj29ppWti6JGAQA==\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
27 "-----END PRIVATE KEY-----";
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
28
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
29 static const char key_v1_pub[] = "-----BEGIN PUBLIC KEY-----\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
30 "MFgwEAYHKoZIzj0CAQYFK4EEACMDRAADAesAlzxO/I/Oyk6jPpQfULVhGZpRWby2\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
31 "wu7Z3R1i1l44olSXnYnijwwoiD5x7irSZM0WuGP6CUqPb2mla2LokYBA\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
32 "-----END PUBLIC KEY-----";
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
33
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
34 static const char key_v2_priv[] = "-----BEGIN PRIVATE KEY-----\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
35 "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtuQJA+uboZWVwgHc\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
36 "DciyVdrovAPwlMqshDK3s78IDDuhRANCAAQm0VEdzLB9PtD0HA8JK1zifWnj8M00\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
37 "FQzedfp9SQsWyA8dzs5/NFR5MTe6Xbh/ndKEs1zZH3vZ4FlNrilZc0st\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
38 "-----END PRIVATE KEY-----";
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
39
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
40 static const char key_v2_pub[] = "-----BEGIN PUBLIC KEY-----\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
41 "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJtFRHcywfT7Q9BwPCStc4n1p4/DN\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
42 "NBUM3nX6fUkLFsgPHc7OfzRUeTE3ul24f53ShLNc2R972eBZTa4pWXNLLQ==\n" \
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
43 "-----END PUBLIC KEY-----";
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
44
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
45 static const char test_sample_v1_hash[] = "1d7cc2cc1f1983f76241cc42389911e88590ad58cf9d54cafeb5b198d3723dd1";
20413
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
46 static const char test_sample_v1_short_hash[] = "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c";
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
47 static const char test_sample_v2_hash[] = "2e31218656dd34db65b321688bf418dee4ee785e99eb9c21e0d29b4af27a863e";
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
48
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
49 static struct dcrypt_keypair test_v1_kp;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
50 static struct dcrypt_keypair test_v2_kp;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
51
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
52 static
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
53 void test_static_v1_input(void)
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
54 {
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
55 ssize_t siz;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
56 const struct hash_method *hash = hash_method_lookup("sha256");
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
57 unsigned char hash_ctx[hash->context_size];
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
58 unsigned char hash_dgst[hash->digest_size];
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
59 hash->init(hash_ctx);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
60
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
61 test_begin("test_static_v1_input");
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
62
20336
e8ee0a7de1df lib-dcrypt: Fixed running unit tests in build directory.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20225
diff changeset
63 struct istream *is_1 = i_stream_create_file(DCRYPT_SRC_DIR"/sample-v1.asc", IO_BLOCK_SIZE);
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
64 struct istream *is_2 = i_stream_create_base64_decoder(is_1);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
65 i_stream_unref(&is_1);
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
66 struct istream *is_3 = i_stream_create_decrypt(is_2, test_v1_kp.priv);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
67 i_stream_unref(&is_2);
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
68 struct istream *is_4 = i_stream_create_hash(is_3, hash, hash_ctx);
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
69 i_stream_unref(&is_3);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
70
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
71 while((siz = i_stream_read(is_4))>0) { i_stream_skip(is_4, siz); }
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
72
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
73 if (is_4->stream_errno != 0)
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
74 i_debug("error: %s", i_stream_get_error(is_4));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
75
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
76 test_assert(is_4->stream_errno == 0);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
77
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
78 i_stream_unref(&is_4);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
79
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
80 hash->result(hash_ctx, hash_dgst);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
81
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
82 test_assert(strcmp(test_sample_v1_hash, binary_to_hex(hash_dgst, sizeof(hash_dgst))) == 0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
83
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
84 test_end();
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
85 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
86
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
87 static
20413
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
88 void test_static_v1_input_short(void)
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
89 {
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
90 ssize_t siz;
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
91 const struct hash_method *hash = hash_method_lookup("sha256");
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
92 unsigned char hash_ctx[hash->context_size];
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
93 unsigned char hash_dgst[hash->digest_size];
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
94 hash->init(hash_ctx);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
95
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
96 test_begin("test_static_v1_input_short");
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
97
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
98 struct istream *is_1 = i_stream_create_file(DCRYPT_SRC_DIR"/sample-v1_short.asc", IO_BLOCK_SIZE);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
99 struct istream *is_2 = i_stream_create_base64_decoder(is_1);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
100 i_stream_unref(&is_1);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
101 struct istream *is_3 = i_stream_create_decrypt(is_2, test_v1_kp.priv);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
102 i_stream_unref(&is_2);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
103 struct istream *is_4 = i_stream_create_hash(is_3, hash, hash_ctx);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
104 i_stream_unref(&is_3);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
105
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
106 while((siz = i_stream_read(is_4))>0) { i_stream_skip(is_4, siz); }
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
107
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
108 if (is_4->stream_errno != 0)
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
109 i_debug("error: %s", i_stream_get_error(is_4));
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
110
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
111 test_assert(is_4->stream_errno == 0);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
112
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
113 i_stream_unref(&is_4);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
114
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
115 hash->result(hash_ctx, hash_dgst);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
116
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
117 test_assert(strcmp(test_sample_v1_short_hash, binary_to_hex(hash_dgst, sizeof(hash_dgst))) == 0);
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
118
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
119 test_end();
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
120 }
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
121
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
122 static
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
123 void test_static_v2_input(void)
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
124 {
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
125 test_begin("test_static_v2_input");
20695
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
126
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
127 ssize_t amt;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
128 const struct hash_method *hash = hash_method_lookup("sha256");
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
129 unsigned char hash_ctx[hash->context_size];
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
130 unsigned char hash_dgst[hash->digest_size];
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
131 hash->init(hash_ctx);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
132
20336
e8ee0a7de1df lib-dcrypt: Fixed running unit tests in build directory.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20225
diff changeset
133 struct istream *is_1 = i_stream_create_file(DCRYPT_SRC_DIR"/sample-v2.asc", IO_BLOCK_SIZE);
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
134 struct istream *is_2 = i_stream_create_base64_decoder(is_1);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
135 i_stream_unref(&is_1);
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
136 struct istream *is_3 = i_stream_create_decrypt(is_2, test_v2_kp.priv);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
137 i_stream_unref(&is_2);
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
138 struct istream *is_4 = i_stream_create_hash(is_3, hash, hash_ctx);
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
139 i_stream_unref(&is_3);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
140
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
141 while((amt = i_stream_read(is_4))>0) { i_stream_skip(is_4, amt); }
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
142
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
143 if (is_4->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
144 i_debug("error: %s", i_stream_get_error(is_4));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
145
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
146 test_assert(is_4->stream_errno == 0);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
147
20225
d7f5154677c2 lib-dcrypt: Use base64 encoded test samples
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20215
diff changeset
148 i_stream_unref(&is_4);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
149
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
150 hash->result(hash_ctx, hash_dgst);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
151
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
152 test_assert(strcmp(test_sample_v2_hash, binary_to_hex(hash_dgst, sizeof(hash_dgst))) == 0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
153
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
154 test_end();
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
155
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
156 /** this code is left here to show how the sample file is created
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
157 struct istream *is = i_stream_create_file("../lib-fts/udhr_fra.txt", 8192);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
158 struct istream *is_2 = i_stream_create_hash(is, hash, hash_ctx);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
159 int fd = open("sample-v2.bin", O_CREAT|O_TRUNC|O_WRONLY, S_IRWXU);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
160 struct ostream *os = o_stream_create_fd_file(fd, 0, TRUE);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
161 struct ostream *os_2 = o_stream_create_encrypt(os, "aes-256-gcm-sha256", test_v2_kp.pub, IO_STREAM_ENC_INTEGRITY_AEAD);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
162 const unsigned char *ptr;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
163 size_t siz;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
164
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
165 while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
166 o_stream_nsend(os_2, ptr, siz);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
167 i_stream_skip(is_2, siz);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
168 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
169
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
170 i_assert(o_stream_nfinish(os_2)==0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
171
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
172 o_stream_close(os_2);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
173 i_stream_close(is_2);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
174
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
175 hash->result(hash_ctx, hash_dgst);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
176 printf("%s\n", binary_to_hex(hash_dgst, sizeof(hash_dgst)));
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
177 */
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
178 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
179
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
180 static
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
181 void test_write_read_v1(void)
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
182 {
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
183 test_begin("test_write_read_v1");
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
184 unsigned char payload[IO_BLOCK_SIZE];
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
185 const unsigned char *ptr;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
186 size_t pos = 0, siz;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
187 random_fill_weak(payload, IO_BLOCK_SIZE);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
188
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
189 buffer_t *buf = buffer_create_dynamic(default_pool, sizeof(payload));
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
190 struct ostream *os = o_stream_create_buffer(buf);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
191 struct ostream *os_2 = o_stream_create_encrypt(os, "<unused>", test_v2_kp.pub, IO_STREAM_ENC_VERSION_1);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
192 o_stream_nsend(os_2, payload, sizeof(payload));
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
193
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
194 if (os_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
195 i_debug("error: %s", o_stream_get_error(os_2));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
196
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
197 test_assert(os_2->stream_errno == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
198 test_assert(o_stream_nfinish(os_2) == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
199 test_assert(os_2->stream_errno == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
200
20579
928bc88fb37a lib-dcrypt: Fixed test-stream unit test not to leak memory
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20576
diff changeset
201 o_stream_unref(&os);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
202 o_stream_unref(&os_2);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
203
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
204 struct istream *is = test_istream_create_data(buf->data, buf->used);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
205 struct istream *is_2 = i_stream_create_decrypt(is, test_v2_kp.priv);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
206
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
207 size_t offset = 0;
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
208 test_istream_set_allow_eof(is, FALSE);
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
209 test_istream_set_size(is, 0);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
210 while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
211 if (offset == buf->used)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
212 test_istream_set_allow_eof(is, TRUE);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
213 else
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
214 test_istream_set_size(is, ++offset);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
215
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
216 test_assert_idx(pos + siz <= sizeof(payload), pos);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
217 if (pos + siz > sizeof(payload)) break;
21213
10a77a6881cd global: Code cleanup - avoid passing NULL to functions with non-null parameter
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20696
diff changeset
218 test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
219 i_stream_skip(is_2, siz); pos += siz;
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
220 }
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
221
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
222 test_assert(is_2->stream_errno == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
223
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
224 i_stream_unref(&is);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
225 i_stream_unref(&is_2);
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
226 buffer_free(&buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
227
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
228 test_end();
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
229 }
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
230
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
231 static
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
232 void test_write_read_v1_short(void)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
233 {
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
234 test_begin("test_write_read_v1_short");
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
235 unsigned char payload[1];
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
236 const unsigned char *ptr;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
237 size_t pos = 0, siz;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
238 random_fill_weak(payload, 1);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
239
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
240 buffer_t *buf = buffer_create_dynamic(default_pool, 64);
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
241 struct ostream *os = o_stream_create_buffer(buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
242 struct ostream *os_2 = o_stream_create_encrypt(os, "<unused>", test_v2_kp.pub, IO_STREAM_ENC_VERSION_1);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
243 o_stream_nsend(os_2, payload, sizeof(payload));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
244
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
245 if (os_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
246 i_debug("error: %s", o_stream_get_error(os_2));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
247
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
248 test_assert(os_2->stream_errno == 0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
249 test_assert(o_stream_nfinish(os_2) == 0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
250 test_assert(os_2->stream_errno == 0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
251
20579
928bc88fb37a lib-dcrypt: Fixed test-stream unit test not to leak memory
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20576
diff changeset
252 o_stream_unref(&os);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
253 o_stream_unref(&os_2);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
254
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
255 struct istream *is = test_istream_create_data(buf->data, buf->used);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
256 struct istream *is_2 = i_stream_create_decrypt(is, test_v2_kp.priv);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
257
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
258 size_t offset = 0;
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
259 test_istream_set_allow_eof(is, FALSE);
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
260 test_istream_set_size(is, 0);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
261 while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
262 if (offset == buf->used)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
263 test_istream_set_allow_eof(is, TRUE);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
264 else
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
265 test_istream_set_size(is, ++offset);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
266
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
267 test_assert_idx(pos + siz <= sizeof(payload), pos);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
268 if (pos + siz > sizeof(payload)) break;
21213
10a77a6881cd global: Code cleanup - avoid passing NULL to functions with non-null parameter
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20696
diff changeset
269 test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
270 i_stream_skip(is_2, siz); pos += siz;
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
271 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
272
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
273 test_assert(is_2->stream_errno == 0);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
274
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
275 i_stream_unref(&is);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
276 i_stream_unref(&is_2);
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
277 buffer_free(&buf);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
278
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
279 test_end();
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
280 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
281
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
282 static
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
283 void test_write_read_v1_empty(void)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
284 {
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
285 const unsigned char *ptr;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
286 size_t siz;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
287 test_begin("test_write_read_v1_empty");
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
288 buffer_t *buf = buffer_create_dynamic(default_pool, 64);
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
289 struct ostream *os = o_stream_create_buffer(buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
290 struct ostream *os_2 = o_stream_create_encrypt(os, "<unused>", test_v1_kp.pub, IO_STREAM_ENC_VERSION_1);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
291 test_assert(o_stream_nfinish(os_2) == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
292 if (os_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
293 i_debug("error: %s", o_stream_get_error(os_2));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
294
20579
928bc88fb37a lib-dcrypt: Fixed test-stream unit test not to leak memory
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20576
diff changeset
295 o_stream_unref(&os);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
296 o_stream_unref(&os_2);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
297 /* this should've been enough */
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
298
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
299 struct istream *is = test_istream_create_data(buf->data, buf->used);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
300 struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
301
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
302 /* read should not fail */
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
303 test_istream_set_allow_eof(is, FALSE);
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
304 test_istream_set_size(is, 0);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
305 size_t offset = 0;
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
306 ssize_t ret;
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
307 while ((ret = i_stream_read_data(is_2, &ptr, &siz, 0)) >= 0) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
308 test_assert(ret == 0);
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
309 if (offset == buf->used)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
310 test_istream_set_allow_eof(is, TRUE);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
311 else
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
312 test_istream_set_size(is, ++offset);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
313 };
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
314
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
315 test_assert(is_2->stream_errno == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
316 if (is_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
317 i_debug("error: %s", i_stream_get_error(is_2));
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
318 i_stream_unref(&is);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
319 i_stream_unref(&is_2);
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
320 buffer_free(&buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
321 test_end();
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
322 }
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
323
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
324 static
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
325 void test_write_read_v2(void)
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
326 {
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
327 test_begin("test_write_read_v2");
20695
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
328 unsigned char payload[IO_BLOCK_SIZE*10];
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
329 const unsigned char *ptr;
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
330 size_t pos = 0, siz;
20695
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
331 random_fill_weak(payload, IO_BLOCK_SIZE*10);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
332
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
333 buffer_t *buf = buffer_create_dynamic(default_pool, sizeof(payload));
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
334 struct ostream *os = o_stream_create_buffer(buf);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
335 struct ostream *os_2 = o_stream_create_encrypt(os, "aes-256-gcm-sha256", test_v1_kp.pub, IO_STREAM_ENC_INTEGRITY_AEAD);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
336 o_stream_nsend(os_2, payload, sizeof(payload));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
337 test_assert(o_stream_nfinish(os_2) == 0);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
338 if (os_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
339 i_debug("error: %s", o_stream_get_error(os_2));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
340
20579
928bc88fb37a lib-dcrypt: Fixed test-stream unit test not to leak memory
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20576
diff changeset
341 o_stream_unref(&os);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
342 o_stream_unref(&os_2);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
343
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
344 struct istream *is = test_istream_create_data(buf->data, buf->used);
20695
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
345 /* test regression where read fails due to incorrect behaviour
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
346 when buffer is full before going to decrypt code */
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
347 i_stream_set_max_buffer_size(is, 8192);
56d721e9ee64 dcrypt: Test for stream prefetch
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20663
diff changeset
348 i_stream_read(is);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
349 struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
350
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
351 size_t offset = 0;
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
352 test_istream_set_size(is, 0);
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
353 test_istream_set_allow_eof(is, FALSE);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
354 while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
355 if (offset == buf->used)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
356 test_istream_set_allow_eof(is, TRUE);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
357 else
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
358 test_istream_set_size(is, ++offset);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
359
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
360 test_assert_idx(pos + siz <= sizeof(payload), pos);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
361 if (pos + siz > sizeof(payload)) break;
21213
10a77a6881cd global: Code cleanup - avoid passing NULL to functions with non-null parameter
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20696
diff changeset
362 test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
363 i_stream_skip(is_2, siz); pos += siz;
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
364 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
365
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
366 test_assert(is_2->stream_errno == 0);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
367 if (is_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
368 i_debug("error: %s", i_stream_get_error(is_2));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
369
22981
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
370 /* test seeking */
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
371 for (size_t i = sizeof(payload)-100; i > 100; i -= 100) {
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
372 i_stream_seek(is_2, i);
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
373 test_assert_idx(i_stream_read_data(is_2, &ptr, &siz, 0) == 1, i);
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
374 test_assert_idx(memcmp(ptr, payload + i, siz) == 0, i);
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
375 }
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
376 i_stream_seek(is_2, 0);
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
377 test_assert(i_stream_read_data(is_2, &ptr, &siz, 0) == 1);
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
378 test_assert(memcmp(ptr, payload, siz) == 0);
acc052049f0b lib-dcrypt: istream-decrypt - Add support for seeking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22890
diff changeset
379
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
380 i_stream_unref(&is);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
381 i_stream_unref(&is_2);
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
382 buffer_free(&buf);
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
383
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
384 test_end();
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
385 }
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
386
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
387 static
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
388 void test_write_read_v2_short(void)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
389 {
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
390 test_begin("test_write_read_v2_short");
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
391 unsigned char payload[1];
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
392 const unsigned char *ptr;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
393 size_t pos = 0, siz;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
394 random_fill_weak(payload, 1);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
395
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
396 buffer_t *buf = buffer_create_dynamic(default_pool, 64);
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
397 struct ostream *os = o_stream_create_buffer(buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
398 struct ostream *os_2 = o_stream_create_encrypt(os, "aes-256-gcm-sha256", test_v1_kp.pub, IO_STREAM_ENC_INTEGRITY_AEAD);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
399 o_stream_nsend(os_2, payload, sizeof(payload));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
400 test_assert(o_stream_nfinish(os_2) == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
401 if (os_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
402 i_debug("error: %s", o_stream_get_error(os_2));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
403
20579
928bc88fb37a lib-dcrypt: Fixed test-stream unit test not to leak memory
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20576
diff changeset
404 o_stream_unref(&os);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
405 o_stream_unref(&os_2);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
406
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
407 struct istream *is = test_istream_create_data(buf->data, buf->used);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
408 struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
409
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
410 size_t offset = 0;
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
411 test_istream_set_allow_eof(is, FALSE);
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
412 test_istream_set_size(is, 0);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
413 while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
414 if (offset == buf->used)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
415 test_istream_set_allow_eof(is, TRUE);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
416 test_istream_set_size(is, ++offset);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
417
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
418 test_assert_idx(pos + siz <= sizeof(payload), pos);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
419 if (pos + siz > sizeof(payload)) break;
21213
10a77a6881cd global: Code cleanup - avoid passing NULL to functions with non-null parameter
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20696
diff changeset
420 test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
421 i_stream_skip(is_2, siz); pos += siz;
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
422 }
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
423
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
424 test_assert(is_2->stream_errno == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
425 if (is_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
426 i_debug("error: %s", i_stream_get_error(is_2));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
427
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
428 i_stream_unref(&is);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
429 i_stream_unref(&is_2);
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
430 buffer_free(&buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
431
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
432 test_end();
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
433 }
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
434
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
435 static
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
436 void test_write_read_v2_empty(void)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
437 {
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
438 const unsigned char *ptr;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
439 size_t siz;
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
440 test_begin("test_write_read_v2_empty");
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
441 buffer_t *buf = buffer_create_dynamic(default_pool, 64);
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
442 struct ostream *os = o_stream_create_buffer(buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
443 struct ostream *os_2 = o_stream_create_encrypt(os, "aes-256-gcm-sha256", test_v1_kp.pub, IO_STREAM_ENC_INTEGRITY_AEAD);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
444 test_assert(o_stream_nfinish(os_2) == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
445 if (os_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
446 i_debug("error: %s", o_stream_get_error(os_2));
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
447
20579
928bc88fb37a lib-dcrypt: Fixed test-stream unit test not to leak memory
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20576
diff changeset
448 o_stream_unref(&os);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
449 o_stream_unref(&os_2);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
450 /* this should've been enough */
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
451
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
452 struct istream *is = test_istream_create_data(buf->data, buf->used);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
453 struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
454
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
455 /* read should not fail */
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
456 size_t offset = 0;
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
457 test_istream_set_allow_eof(is, FALSE);
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
458 test_istream_set_size(is, 0);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
459 ssize_t ret;
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
460 while ((ret = i_stream_read_data(is_2, &ptr, &siz, 0)) >= 0) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
461 test_assert(ret == 0);
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
462 if (offset == buf->used)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
463 test_istream_set_allow_eof(is, TRUE);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
464 test_istream_set_size(is, ++offset);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
465 };
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
466
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
467 test_assert(is_2->stream_errno == 0);
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
468 if (is_2->stream_errno != 0)
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
469 i_debug("error: %s", i_stream_get_error(is_2));
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
470 i_stream_unref(&is);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
471 i_stream_unref(&is_2);
20588
2d909f393a27 lib-dcrypt: test-stream writes now to buffer, not to temp-iostream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20586
diff changeset
472 buffer_free(&buf);
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
473 test_end();
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
474 }
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
475
20567
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
476 static int no_op_cb(const char *digest ATTR_UNUSED,
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
477 struct dcrypt_private_key **priv_key_r ATTR_UNUSED,
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
478 const char **error_r ATTR_UNUSED,
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
479 void *context ATTR_UNUSED)
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
480 {
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
481 return 0;
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
482 }
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
483
20586
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
484 static void test_read_0_to_400_byte_garbage(void)
20567
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
485 {
20586
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
486 test_begin("test_read_0_to_100_byte_garbage");
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
487
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
488 char data[512];
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
489 memset(data, 0, sizeof(data));
20567
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
490
20586
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
491 for (size_t s = 0; s <= 400; ++s) {
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
492 struct istream *is = test_istream_create_data(data, s);
20586
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
493 struct istream *ds = i_stream_create_decrypt_callback(is,
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
494 no_op_cb, NULL);
20663
e802abd40812 lib-dcrypt: Fixed partial reads in header and limit header's max size.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20596
diff changeset
495 test_istream_set_size(is, 0);
20589
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
496 test_istream_set_allow_eof(is, FALSE);
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
497 ssize_t siz = 0;
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
498 for (size_t offset = 0; offset <= s && siz == 0; offset++) {
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
499 if (offset == s)
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
500 test_istream_set_allow_eof(is, TRUE);
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
501 test_istream_set_size(is, offset);
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
502 siz = i_stream_read(ds);
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
503 }
bdf83b32af07 lib-dcrypt: Added unit tests to nonblocking istream-decrypt
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20588
diff changeset
504 test_assert_idx(siz < 0, s);
20586
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
505 i_stream_unref(&ds);
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
506 i_stream_unref(&is);
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
507 }
20567
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
508
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
509 test_end();
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
510 }
307eb07fba9c lib-dcrypt: add crashing 8 byte garbage read test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20566
diff changeset
511
20696
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
512 static void test_read_large_header(void)
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
513 {
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
514 test_begin("test_read_large_header");
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
515
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
516 struct istream *is = test_istream_create_data(IOSTREAM_CRYPT_MAGIC, sizeof(IOSTREAM_CRYPT_MAGIC));
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
517 struct istream *ds = i_stream_create_decrypt_callback(is, no_op_cb, NULL);
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
518 test_istream_set_allow_eof(is, FALSE);
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
519 test_istream_set_max_buffer_size(is, sizeof(IOSTREAM_CRYPT_MAGIC));
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
520
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
521 test_assert(i_stream_read(ds) == -1);
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
522 i_stream_unref(&ds);
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
523 i_stream_unref(&is);
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
524
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
525 test_end();
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
526 }
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
527
22890
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
528 static void test_read_increment(void)
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
529 {
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
530 test_begin("test_read_increment");
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
531
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
532 ssize_t amt, total, i;
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
533
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
534 struct istream *is_1 = i_stream_create_file(DCRYPT_SRC_DIR"/sample-v2.asc", IO_BLOCK_SIZE);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
535 struct istream *is_2 = i_stream_create_base64_decoder(is_1);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
536 i_stream_unref(&is_1);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
537 struct istream *is_3 = i_stream_create_decrypt(is_2, test_v2_kp.priv);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
538 i_stream_unref(&is_2);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
539 total = 0;
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
540 i = 500;
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
541
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
542 i_stream_set_max_buffer_size(is_3, i);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
543 while((amt = i_stream_read(is_3)) > 0) {
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
544 total += amt;
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
545 i_stream_set_max_buffer_size(is_3, ++i);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
546 }
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
547
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
548 test_assert(total == 13534);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
549 test_assert(is_3->stream_errno == 0);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
550 test_assert(is_3->eof);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
551
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
552 i_stream_unref(&is_3);
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
553
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
554 test_end();
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
555 }
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
556
20465
07e65e96bc10 dcrypt: Free keys in test-stream
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20464
diff changeset
557 static
07e65e96bc10 dcrypt: Free keys in test-stream
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20464
diff changeset
558 void test_free_keys() {
20566
6ebb03fc9a25 dcrypt: Update API for testing
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20465
diff changeset
559 dcrypt_key_unref_private(&test_v1_kp.priv);
6ebb03fc9a25 dcrypt: Update API for testing
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20465
diff changeset
560 dcrypt_key_unref_public(&test_v1_kp.pub);
6ebb03fc9a25 dcrypt: Update API for testing
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20465
diff changeset
561 dcrypt_key_unref_private(&test_v2_kp.priv);
6ebb03fc9a25 dcrypt: Update API for testing
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20465
diff changeset
562 dcrypt_key_unref_public(&test_v2_kp.pub);
20465
07e65e96bc10 dcrypt: Free keys in test-stream
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20464
diff changeset
563 }
07e65e96bc10 dcrypt: Free keys in test-stream
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20464
diff changeset
564
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
565 int main(void) {
21232
7bb1cb2102d4 lib-dcrypt: Use module_dir setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21213
diff changeset
566 struct dcrypt_settings set = {
7bb1cb2102d4 lib-dcrypt: Use module_dir setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21213
diff changeset
567 .module_dir = ".libs"
7bb1cb2102d4 lib-dcrypt: Use module_dir setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21213
diff changeset
568 };
21482
d7227df3624d lib-dcrypt: If dcrypt can't be initialized, log also the reason.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21390
diff changeset
569 const char *error;
21232
7bb1cb2102d4 lib-dcrypt: Use module_dir setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21213
diff changeset
570
21482
d7227df3624d lib-dcrypt: If dcrypt can't be initialized, log also the reason.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21390
diff changeset
571 if (!dcrypt_initialize(NULL, &set, &error)) {
d7227df3624d lib-dcrypt: If dcrypt can't be initialized, log also the reason.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21390
diff changeset
572 i_error("No functional dcrypt backend found - skipping tests: %s", error);
20576
6e584af6f758 lib-dcrypt: Skip checks if no backend found
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20574
diff changeset
573 return 0;
6e584af6f758 lib-dcrypt: Skip checks if no backend found
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20574
diff changeset
574 }
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
575 random_init();
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
576
20573
071903e5586b lib-dcrypt: drop format from key_load_private
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20567
diff changeset
577 test_assert(dcrypt_key_load_private(&test_v1_kp.priv, key_v1_priv, NULL, NULL, NULL));
20574
79fa3bdcfc95 lib-dcrypt: drop format from key_load_public
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20573
diff changeset
578 test_assert(dcrypt_key_load_public(&test_v1_kp.pub, key_v1_pub, NULL));
20573
071903e5586b lib-dcrypt: drop format from key_load_private
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20567
diff changeset
579 test_assert(dcrypt_key_load_private(&test_v2_kp.priv, key_v2_priv, NULL, NULL, NULL));
20574
79fa3bdcfc95 lib-dcrypt: drop format from key_load_public
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20573
diff changeset
580 test_assert(dcrypt_key_load_public(&test_v2_kp.pub, key_v2_pub, NULL));
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
581
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
582 static void (*test_functions[])(void) = {
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
583 test_static_v1_input,
20413
6a509c06684d istream-decrypt: Ensure we can open short v1 files
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20402
diff changeset
584 test_static_v1_input_short,
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
585 test_static_v2_input,
22890
29cb00415262 lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22713
diff changeset
586 test_read_increment,
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
587 test_write_read_v1,
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
588 test_write_read_v1_short,
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
589 test_write_read_v1_empty,
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
590 test_write_read_v2,
20464
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
591 test_write_read_v2_short,
5510668578b0 dcrypt: Add tests for 0 and 1 byte data
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20413
diff changeset
592 test_write_read_v2_empty,
20465
07e65e96bc10 dcrypt: Free keys in test-stream
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 20464
diff changeset
593 test_free_keys,
20586
56fde44e2425 lib-dcrypt: add 0 to 400 byte stream test
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents: 20579
diff changeset
594 test_read_0_to_400_byte_garbage,
20696
e390f6e14850 lib-dcrypt: Avoid infinite loop if istream header is too large.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20695
diff changeset
595 test_read_large_header,
20215
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
596 NULL
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
597 };
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
598
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
599 return test_run(test_functions);
389c5094c2a8 lib-dcrypt: Initial implementation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
600 }