Mercurial > dovecot > core-2.2
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 |
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 } |