1#!/usr/bin/perl -I..
2# 22.10.1999, Sampo Kellomaki <sampo@iki.fi>
3#
4# Regression tests for smime command line tool. This also regression
5# tests the library to considerable extent.
6#
7# Usage: ./test-smime.pl [-fast]
8
9use filex;
10
11print "Tests will be done inside directory t$$\n";
12mkdir "t$$", 0774 or die $!;
13
14if ($ARGV[0] eq '-fast') {
15    shift;
16    $fast = 1;
17}
18
19$|=1;
20$n = 11;
21
22filex::barf("t$$/dn$n", <<DN);
23countryName=PT
24organizationName=Universidade T�cnica de Lisboa
25organizationalUnitName=IST
26commonName=t$n
27emailAddress=t$n\@test.com
28DN
29    ;
30
31
32$attr = "description=t$n";
33
34print "1. Keygen...";
35system "./smime -kg '$attr' pw t$$/r$n.pem <t$$/dn$n >t$$/t$n.pem" and die $?;
36print "OK\n";
37
38print "2. Make PKCS12...";
39system "./smime -pem-p12 t$n\@test.com pw pw <t$$/t$n.pem >t$$/t$n.p12"
40    and die $?;
41print "OK\n";
42
43print "3. Read PKCS12...";
44system "./smime -p12-pem pw pw <t$$/t$n.p12 >t$$/tt$n.pem" and die $?;
45print "OK\n";
46
47print "4. Certification Authority...";
48system "./smime -ca t$$/t$n.pem pw $$ <t$$/r$n.pem >t$$/c$n.pem" and die $?;
49print "OK\n";
50
51if ($fast) {
52    print "Skipping tests 5-9 on fast mode.\n";
53} else {
54    print "5. Make multipart...";
55    system "./smime -m application/octetstream smime <t$$/dn$n >t$$/m$n.mime"
56	and die $?;
57    print "OK\n";
58
59    print "6. Clear sign...";
60    system "./smime -cs t$$/tt$n.pem pw <t$$/m$n.mime >t$$/m$n.p7s" and die $?;
61    print "OK\n";
62
63    print "7. Encrypt...";
64    system "./smime -e t$$/tt$n.pem <t$$/m$n.p7s >t$$/m$n.p7m" and die $?;
65    print "OK\n";
66
67    print "8. Decrypt...";
68    system "./smime -d t$$/t$n.pem pw <t$$/m$n.p7m >t$$/mm$n.p7s" and die $?;
69    print "OK\n";
70
71    print "9. Comparing plain texts...";
72    system "diff t$$/m$n.p7s t$$/mm$n.p7s" and die $?;
73    print "OK\n";
74}
75
76print "10. Sign...";
77system "./smime -s t$$/tt$n.pem pw <t$$/dn$n >t$$/s$n.p7m" and die $?;
78print "OK\n";
79
80print "11. Verify...";
81system "./smime -v t$$/t$n.pem <t$$/s$n.p7m >t$$/ddn$n" and die $?;
82print "OK\n";
83
84print "12. Comparing plain texts...";
85system "diff -b t$$/dn$n t$$/ddn$n" and die $?;
86print "OK\n";
87
88print "13. Query req...";
89system "./smime -qr <t$$/r$n.pem >t$$/qr$n" and die $?;
90print "OK\n";
91
92print "14. Query cert...";
93system "./smime -qc <t$$/t$n.pem >t$$/qc$n" and die $?;
94print "OK\n";
95
96print "15. Base64 encode...";
97system "./smime -base64 <smime >t$$/f$n.b64" and die $?;
98print "OK\n";
99
100print "16. Base64 decode...";
101system "./smime -unbase64 <t$$/f$n.b64 >t$$/f$n" and die $?;
102print "OK\n";
103
104print "17. Comparing files...";
105system "cmp smime t$$/f$n" and die $?;
106print "OK\n";
107
108print "18. Querying signature...";
109system "./smime -qs <t$$/s$n.p7m" and die $?;
110print "OK\n";
111
112print "19. Verifying certificate against CA cert...";
113system "./smime -cv t$$/t$n.pem <t$$/t$n.pem" and die $?;
114print "OK\n";
115
116#print "9. Checking clear sig...";
117#system "./smime -cv <t$$/mm$n.p7s >t$$/sig-dn$n" and die $?;
118#print "OK\n";
119
120if (0) {
121print "10. ...";
122system "./smime" and die $?;
123print "OK\n";
124}
125
126print "rm -rf t$$";
127
128#EOF
129