-
Notifications
You must be signed in to change notification settings - Fork 138
/
digest.t
174 lines (153 loc) · 2.89 KB
/
digest.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#! perl
# Copyright (C) 2008, The Perl Foundation.
# $Id$
use strict;
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
use Parrot::Test;
use Parrot::Config;
=head1 NAME
t/dynpmc/digest.t - test the digest_group (MDx, RIPEMD, SHAx PMC)
=head1 SYNOPSIS
% perl -Ilib t/dynpmc/digest.t
=head1 DESCRIPTION
Tests the C<digest_group> a libcrypto wrapper.
=cut
if ( $PConfig{has_crypto} ) {
plan tests => 9;
}
else {
plan skip_all => "No crypto library available";
}
pir_output_is( << 'CODE', << 'OUTPUT', 'MD2 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'MD2'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
MD2
OUTPUT
pir_output_is( << 'CODE', << 'OUTPUT', 'MD4 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'MD4'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
MD4
OUTPUT
pir_output_is( << 'CODE', << 'OUTPUT', 'MD5 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'MD5'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
MD5
OUTPUT
pir_output_is( << 'CODE', << 'OUTPUT', 'RIPEMD160 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'RIPEMD160'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
RIPEMD160
OUTPUT
pir_output_is( << 'CODE', << 'OUTPUT', 'SHA typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'SHA'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
SHA
OUTPUT
pir_output_is( << 'CODE', << 'OUTPUT', 'SHA1 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'SHA1'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
SHA1
OUTPUT
SKIP: {
skip( "Only with OpenSSL 0.9.8", 2 ) if ($PConfig{openssl_version} lt '0.9.8a');
pir_output_is( << 'CODE', << 'OUTPUT', 'SHA256 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'SHA256'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
SHA256
OUTPUT
pir_output_is( << 'CODE', << 'OUTPUT', 'SHA512 typeof' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'SHA512'
$S0 = typeof md
print $S0
print "\n"
.end
CODE
SHA512
OUTPUT
}
pir_output_is( << 'CODE', << 'OUTPUT', 'MD5 digest' );
.sub test :main
$P0 = loadlib 'digest_group'
.local pmc md
md = new 'MD5'
md.'Init'()
$S0 = 'message digest'
md.'Update'($S0)
$S0 = md.'Final'()
$P0 = split '', $S0
new $P1, 'FixedPMCArray'
set $P1, 1
L1:
unless $P0 goto L2
$S1 = shift $P0
$I1 = ord $S1
$P1[0] = $I1
$S2 = sprintf '%2x', $P1
print $S2
goto L1
L2:
print "\n"
.end
CODE
f96b697d7cb7938d525a2f31aaf161d0
OUTPUT
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4: