~ubuntu-branches/ubuntu/maverick/opendkim/maverick

« back to all changes in this revision

Viewing changes to libopendkim/tests/t-test137.c

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-08-11 04:01:22 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20100811040122-ai6d30m3j43nwh1y
Tags: 2.1.3+dfsg-0ubuntu1
* New upstream release
  - Repacked tarball to remove non-free IETF drafts and RFCs
  - Updated Makefile.in/am to not try to install no longer exisitng files
  - Rename libopendkim1 to libopendkim2 to match upstream soname bump
  - Bump libopendkim-dev build-depends to libopendkim2
  - Update debian/rules
  - Rename libopendkim1.docs and .install

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
**  Copyright (c) 2005-2008 Sendmail, Inc. and its suppliers.
 
3
**    All rights reserved.
 
4
**
 
5
**  Copyright (c) 2009, 2010, The OpenDKIM Project.  All rights reserved.
 
6
*/
 
7
 
 
8
#ifndef lint
 
9
static char t_test137_c_id[] = "@(#)$Id: t-test137.c,v 1.1 2010/04/30 17:01:28 cm-msk Exp $";
 
10
#endif /* !lint */
 
11
 
 
12
/* system includes */
 
13
#include <sys/types.h>
 
14
#include <assert.h>
 
15
#include <string.h>
 
16
#include <stdio.h>
 
17
#include <arpa/nameser.h>
 
18
 
 
19
/* libopendkim includes */
 
20
#include "../dkim.h"
 
21
#include "t-testdata.h"
 
22
 
 
23
#define MAXHEADER       4096
 
24
 
 
25
#define SIG1 "v=1; a=rsa-sha1; c=simple/simple; d=example.com; s=test;\r\n\tt=1172620939; bh=ll/0h2aWgG+D3ewmE4Y3pY7Ukz8=; h=Received:Received:\r\n\t Received:From:To:Date:Subject:Message-ID; b=V+wiYd1cE70A40eDNUtYwU\r\n\tvqi727NN/vVo/OdC7jG4zvztIXCRjPKDXEfiZdW+6PZ08M4zA3GmLZI2p+IJTza+VDQ\r\n\tbohnvIUSRR6q9+Nddqz1qTCL0gNM5d64xKwrLUesk/3wb/Cvua6Atr+VBMFVCwQmSDf\r\n\trs4brLkqMyFOkCE="
 
26
#define SIG2 "v=1; a=rsa-sha256; c=simple/simple; d=example.com; s=test;\r\n\tt=1172620939; bh=yHBAX+3IwxTZIynBuB/5tlsBInJq9n8qz5fgAycHi80=;\r\n\th=Received:Received:Received:From:To:Date:Subject:Message-ID; b=12345678Y3y\r\n\tVeA3WZdCZl1sGuOZNC3BBRhtGCOExkZdw5xQoGPvSX/q6AC1SAJvOUWOri95AZAUGs0\r\n\t/bIDzzt23ei9jc+rptlavrl/5ijMrl6ShmvkACk6It62KPkJcDpoGfi5AZkrfX1Ou/z\r\n\tqGg5xJX86Kqd7FgNolMg7PbfyWliK2Yb84="
 
27
#define SIG3 "v=1; a=rsa-sha256; c=simple/simple; d=example.com; s=test;\r\n\tt=1172620939; bh=yHBAX+3IwxTZIynBuB/5tlsBInJq9n8qz5fgAycHi80=;\r\n\th=Received:Received:Received:From:To:Date:Subject:Message-ID; b=12345678Y4y\r\n\tVeA3WZdCZl1sGuOZNC3BBRhtGCOExkZdw5xQoGPvSX/q6AC1SAJvOUWOri95AZAUGs0\r\n\t/bIDzzt23ei9jc+rptlavrl/5ijMrl6ShmvkACk6It62KPkJcDpoGfi5AZkrfX1Ou/z\r\n\tqGg5xJX86Kqd7FgNolMg7PbfyWliK2Yb84="
 
28
 
 
29
/*
 
30
**  MAIN -- program mainline
 
31
**
 
32
**  Parameters:
 
33
**      The usual.
 
34
**
 
35
**  Return value:
 
36
**      Exit status.
 
37
*/
 
38
 
 
39
int
 
40
main(int argc, char **argv)
 
41
{
 
42
#ifdef TEST_KEEP_FILES
 
43
        u_int flags;
 
44
#endif /* TEST_KEEP_FILES */
 
45
        int nsigs;
 
46
        size_t hdrlen;
 
47
        DKIM_STAT status;
 
48
        DKIM *dkim;
 
49
        DKIM_SIGINFO **sigs;
 
50
        DKIM_LIB *lib;
 
51
        unsigned char hdr[MAXHEADER + 1];
 
52
 
 
53
        /* instantiate the library */
 
54
        lib = dkim_init(NULL, NULL);
 
55
        assert(lib != NULL);
 
56
 
 
57
        if (!dkim_libfeature(lib, DKIM_FEATURE_SHA256))
 
58
        {
 
59
                printf("*** simple/simple rsa-sha256 signature substrings SKIPPED\n");
 
60
                dkim_close(lib);
 
61
                return 0;
 
62
        }
 
63
 
 
64
        printf("*** simple/simple rsa-sha256 verifying signature substrings\n");
 
65
 
 
66
#ifdef TEST_KEEP_FILES
 
67
        /* set flags */
 
68
        flags = (DKIM_LIBFLAGS_TMPFILES|DKIM_LIBFLAGS_KEEPFILES);
 
69
        (void) dkim_options(lib, DKIM_OP_SETOPT, DKIM_OPTS_FLAGS, &flags,
 
70
                            sizeof flags);
 
71
#endif /* TEST_KEEP_FILES */
 
72
 
 
73
        dkim = dkim_verify(lib, JOBID, NULL, &status);
 
74
        assert(dkim != NULL);
 
75
 
 
76
        snprintf(hdr, sizeof hdr, "%s: %s", DKIM_SIGNHEADER, SIG1);
 
77
        status = dkim_header(dkim, hdr, strlen(hdr));
 
78
        assert(status == DKIM_STAT_OK);
 
79
 
 
80
        snprintf(hdr, sizeof hdr, "%s: %s", DKIM_SIGNHEADER, SIG2);
 
81
        status = dkim_header(dkim, hdr, strlen(hdr));
 
82
        assert(status == DKIM_STAT_OK);
 
83
 
 
84
        status = dkim_header(dkim, HEADER01, strlen(HEADER01));
 
85
        assert(status == DKIM_STAT_OK);
 
86
 
 
87
        status = dkim_header(dkim, HEADER02, strlen(HEADER02));
 
88
        assert(status == DKIM_STAT_OK);
 
89
 
 
90
        status = dkim_header(dkim, HEADER03, strlen(HEADER03));
 
91
        assert(status == DKIM_STAT_OK);
 
92
 
 
93
        status = dkim_header(dkim, HEADER04, strlen(HEADER04));
 
94
        assert(status == DKIM_STAT_OK);
 
95
 
 
96
        status = dkim_header(dkim, HEADER05, strlen(HEADER05));
 
97
        assert(status == DKIM_STAT_OK);
 
98
 
 
99
        status = dkim_header(dkim, HEADER06, strlen(HEADER06));
 
100
        assert(status == DKIM_STAT_OK);
 
101
 
 
102
        status = dkim_header(dkim, HEADER07, strlen(HEADER07));
 
103
        assert(status == DKIM_STAT_OK);
 
104
 
 
105
        status = dkim_header(dkim, HEADER08, strlen(HEADER08));
 
106
        assert(status == DKIM_STAT_OK);
 
107
 
 
108
        status = dkim_header(dkim, HEADER09, strlen(HEADER09));
 
109
        assert(status == DKIM_STAT_OK);
 
110
 
 
111
        status = dkim_eoh(dkim);
 
112
        assert(status == DKIM_STAT_OK);
 
113
 
 
114
        status = dkim_getsiglist(dkim, &sigs, &nsigs);
 
115
        assert(status == DKIM_STAT_OK);
 
116
        assert(nsigs == 2);
 
117
 
 
118
        memset(hdr, '\0', sizeof hdr);
 
119
        hdrlen = sizeof hdr - 1;
 
120
        status = dkim_get_sigsubstring(dkim, sigs[0], hdr, &hdrlen);
 
121
        assert(status == DKIM_STAT_OK);
 
122
        assert(hdrlen == 8);
 
123
        assert(strcmp(hdr, "V+wiYd1c") == 0);
 
124
        status = dkim_get_sigsubstring(dkim, sigs[1], hdr, &hdrlen);
 
125
        assert(status == DKIM_STAT_OK);
 
126
        assert(hdrlen == 8);
 
127
        assert(strcmp(hdr, "12345678") == 0);
 
128
 
 
129
        status = dkim_free(dkim);
 
130
        assert(status == DKIM_STAT_OK);
 
131
 
 
132
        dkim = dkim_verify(lib, JOBID, NULL, &status);
 
133
        assert(dkim != NULL);
 
134
 
 
135
        snprintf(hdr, sizeof hdr, "%s: %s", DKIM_SIGNHEADER, SIG1);
 
136
        status = dkim_header(dkim, hdr, strlen(hdr));
 
137
        assert(status == DKIM_STAT_OK);
 
138
 
 
139
        snprintf(hdr, sizeof hdr, "%s: %s", DKIM_SIGNHEADER, SIG2);
 
140
        status = dkim_header(dkim, hdr, strlen(hdr));
 
141
        assert(status == DKIM_STAT_OK);
 
142
 
 
143
        snprintf(hdr, sizeof hdr, "%s: %s", DKIM_SIGNHEADER, SIG3);
 
144
        status = dkim_header(dkim, hdr, strlen(hdr));
 
145
        assert(status == DKIM_STAT_OK);
 
146
 
 
147
        status = dkim_header(dkim, HEADER01, strlen(HEADER01));
 
148
        assert(status == DKIM_STAT_OK);
 
149
 
 
150
        status = dkim_header(dkim, HEADER02, strlen(HEADER02));
 
151
        assert(status == DKIM_STAT_OK);
 
152
 
 
153
        status = dkim_header(dkim, HEADER03, strlen(HEADER03));
 
154
        assert(status == DKIM_STAT_OK);
 
155
 
 
156
        status = dkim_header(dkim, HEADER04, strlen(HEADER04));
 
157
        assert(status == DKIM_STAT_OK);
 
158
 
 
159
        status = dkim_header(dkim, HEADER05, strlen(HEADER05));
 
160
        assert(status == DKIM_STAT_OK);
 
161
 
 
162
        status = dkim_header(dkim, HEADER06, strlen(HEADER06));
 
163
        assert(status == DKIM_STAT_OK);
 
164
 
 
165
        status = dkim_header(dkim, HEADER07, strlen(HEADER07));
 
166
        assert(status == DKIM_STAT_OK);
 
167
 
 
168
        status = dkim_header(dkim, HEADER08, strlen(HEADER08));
 
169
        assert(status == DKIM_STAT_OK);
 
170
 
 
171
        status = dkim_header(dkim, HEADER09, strlen(HEADER09));
 
172
        assert(status == DKIM_STAT_OK);
 
173
 
 
174
        status = dkim_eoh(dkim);
 
175
        assert(status == DKIM_STAT_OK);
 
176
 
 
177
        status = dkim_getsiglist(dkim, &sigs, &nsigs);
 
178
        assert(status == DKIM_STAT_OK);
 
179
        assert(nsigs == 3);
 
180
 
 
181
        memset(hdr, '\0', sizeof hdr);
 
182
        hdrlen = sizeof hdr - 1;
 
183
        status = dkim_get_sigsubstring(dkim, sigs[0], hdr, &hdrlen);
 
184
        assert(status == DKIM_STAT_OK);
 
185
        assert(hdrlen == 10);
 
186
        assert(strcmp(hdr, "V+wiYd1cE7") == 0);
 
187
        status = dkim_get_sigsubstring(dkim, sigs[1], hdr, &hdrlen);
 
188
        assert(status == DKIM_STAT_OK);
 
189
        assert(hdrlen == 10);
 
190
        assert(strcmp(hdr, "12345678Y3") == 0);
 
191
        status = dkim_get_sigsubstring(dkim, sigs[2], hdr, &hdrlen);
 
192
        assert(status == DKIM_STAT_OK);
 
193
        assert(hdrlen == 10);
 
194
        assert(strcmp(hdr, "12345678Y4") == 0);
 
195
 
 
196
        status = dkim_free(dkim);
 
197
        assert(status == DKIM_STAT_OK);
 
198
 
 
199
        dkim_close(lib);
 
200
 
 
201
        return 0;
 
202
}