diff options
author | beck <> | 1999-09-29 05:53:45 +0000 |
---|---|---|
committer | beck <> | 1999-09-29 05:53:45 +0000 |
commit | 648e4f0876a3773381cbfff3192dd84dd1c8c925 (patch) | |
tree | bd9d01e3969ffa5aac92128af3e515520c88fc0e /src/lib | |
parent | 756086c41b0487beefc3d5b3400f80095d0e4157 (diff) | |
download | openbsd-648e4f0876a3773381cbfff3192dd84dd1c8c925.tar.gz openbsd-648e4f0876a3773381cbfff3192dd84dd1c8c925.tar.bz2 openbsd-648e4f0876a3773381cbfff3192dd84dd1c8c925.zip |
new files for OpenSSL 0.9.4
Diffstat (limited to 'src/lib')
200 files changed, 23231 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/add.pl b/src/lib/libcrypto/bn/asm/alpha.works/add.pl new file mode 100644 index 0000000000..4dc76e6b69 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/add.pl | |||
@@ -0,0 +1,119 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &br(&label("finish")); | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0,$b0)=&NR(2); | ||
26 | &ld($a0,&QWPw(0,$ap)); | ||
27 | &ld($b0,&QWPw(0,$bp)); | ||
28 | |||
29 | ########################################################## | ||
30 | &set_label("loop"); | ||
31 | |||
32 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
33 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
34 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
35 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
36 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
37 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
38 | |||
39 | ($o0,$t0)=&NR(2); | ||
40 | &add($a0,$b0,$o0); | ||
41 | &cmpult($o0,$b0,$t0); | ||
42 | &add($o0,$cc,$o0); | ||
43 | &cmpult($o0,$cc,$cc); | ||
44 | &add($cc,$t0,$cc); &FR($t0); | ||
45 | |||
46 | ($t1,$o1)=&NR(2); | ||
47 | |||
48 | &add($a1,$b1,$o1); &FR($a1); | ||
49 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
50 | &add($o1,$cc,$o1); | ||
51 | &cmpult($o1,$cc,$cc); | ||
52 | &add($cc,$t1,$cc); &FR($t1); | ||
53 | |||
54 | ($t2,$o2)=&NR(2); | ||
55 | |||
56 | &add($a2,$b2,$o2); &FR($a2); | ||
57 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
58 | &add($o2,$cc,$o2); | ||
59 | &cmpult($o2,$cc,$cc); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &add($a3,$b3,$o3); &FR($a3); | ||
65 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
66 | &add($o3,$cc,$o3); | ||
67 | &cmpult($o3,$cc,$cc); | ||
68 | &add($cc,$t3,$cc); &FR($t3); | ||
69 | |||
70 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
71 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
72 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
73 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
74 | |||
75 | &sub($count,4,$count); # count-=4 | ||
76 | &add($ap,4*$QWS,$ap); # count+=4 | ||
77 | &add($bp,4*$QWS,$bp); # count+=4 | ||
78 | &add($rp,4*$QWS,$rp); # count+=4 | ||
79 | |||
80 | &blt($count,&label("finish")); | ||
81 | &ld($a0,&QWPw(0,$ap)); | ||
82 | &ld($b0,&QWPw(0,$bp)); | ||
83 | &br(&label("loop")); | ||
84 | ################################################## | ||
85 | # Do the last 0..3 words | ||
86 | |||
87 | ($t0,$o0)=&NR(2); | ||
88 | &set_label("last_loop"); | ||
89 | |||
90 | &ld($a0,&QWPw(0,$ap)); # get a | ||
91 | &ld($b0,&QWPw(0,$bp)); # get b | ||
92 | |||
93 | &add($a0,$b0,$o0); | ||
94 | &cmpult($o0,$b0,$t0); # will we borrow? | ||
95 | &add($o0,$cc,$o0); # will we borrow? | ||
96 | &cmpult($o0,$cc,$cc); # will we borrow? | ||
97 | &add($cc,$t0,$cc); # add the borrows | ||
98 | &st($o0,&QWPw(0,$rp)); # save | ||
99 | |||
100 | &add($ap,$QWS,$ap); | ||
101 | &add($bp,$QWS,$bp); | ||
102 | &add($rp,$QWS,$rp); | ||
103 | &sub($count,1,$count); | ||
104 | &bgt($count,&label("last_loop")); | ||
105 | &function_end_A($name); | ||
106 | |||
107 | ###################################################### | ||
108 | &set_label("finish"); | ||
109 | &add($count,4,$count); | ||
110 | &bgt($count,&label("last_loop")); | ||
111 | |||
112 | &FR($o0,$t0,$a0,$b0); | ||
113 | &set_label("end"); | ||
114 | &function_end($name); | ||
115 | |||
116 | &fin_pool; | ||
117 | } | ||
118 | |||
119 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/div.pl b/src/lib/libcrypto/bn/asm/alpha.works/div.pl new file mode 100644 index 0000000000..7ec144377f --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/div.pl | |||
@@ -0,0 +1,144 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | |||
3 | sub bn_div64 | ||
4 | { | ||
5 | local($data)=<<'EOF'; | ||
6 | # | ||
7 | # What follows was taken directly from the C compiler with a few | ||
8 | # hacks to redo the lables. | ||
9 | # | ||
10 | .text | ||
11 | .set noreorder | ||
12 | .set volatile | ||
13 | .align 3 | ||
14 | .globl bn_div64 | ||
15 | .ent bn_div64 | ||
16 | bn_div64: | ||
17 | ldgp $29,0($27) | ||
18 | bn_div64..ng: | ||
19 | lda $30,-48($30) | ||
20 | .frame $30,48,$26,0 | ||
21 | stq $26,0($30) | ||
22 | stq $9,8($30) | ||
23 | stq $10,16($30) | ||
24 | stq $11,24($30) | ||
25 | stq $12,32($30) | ||
26 | stq $13,40($30) | ||
27 | .mask 0x4003e00,-48 | ||
28 | .prologue 1 | ||
29 | bis $16,$16,$9 | ||
30 | bis $17,$17,$10 | ||
31 | bis $18,$18,$11 | ||
32 | bis $31,$31,$13 | ||
33 | bis $31,2,$12 | ||
34 | bne $11,$9119 | ||
35 | lda $0,-1 | ||
36 | br $31,$9136 | ||
37 | .align 4 | ||
38 | $9119: | ||
39 | bis $11,$11,$16 | ||
40 | jsr $26,BN_num_bits_word | ||
41 | ldgp $29,0($26) | ||
42 | subq $0,64,$1 | ||
43 | beq $1,$9120 | ||
44 | bis $31,1,$1 | ||
45 | sll $1,$0,$1 | ||
46 | cmpule $9,$1,$1 | ||
47 | bne $1,$9120 | ||
48 | # lda $16,_IO_stderr_ | ||
49 | # lda $17,$C32 | ||
50 | # bis $0,$0,$18 | ||
51 | # jsr $26,fprintf | ||
52 | # ldgp $29,0($26) | ||
53 | jsr $26,abort | ||
54 | ldgp $29,0($26) | ||
55 | .align 4 | ||
56 | $9120: | ||
57 | bis $31,64,$3 | ||
58 | cmpult $9,$11,$2 | ||
59 | subq $3,$0,$1 | ||
60 | addl $1,$31,$0 | ||
61 | subq $9,$11,$1 | ||
62 | cmoveq $2,$1,$9 | ||
63 | beq $0,$9122 | ||
64 | zapnot $0,15,$2 | ||
65 | subq $3,$0,$1 | ||
66 | sll $11,$2,$11 | ||
67 | sll $9,$2,$3 | ||
68 | srl $10,$1,$1 | ||
69 | sll $10,$2,$10 | ||
70 | bis $3,$1,$9 | ||
71 | $9122: | ||
72 | srl $11,32,$5 | ||
73 | zapnot $11,15,$6 | ||
74 | lda $7,-1 | ||
75 | .align 5 | ||
76 | $9123: | ||
77 | srl $9,32,$1 | ||
78 | subq $1,$5,$1 | ||
79 | bne $1,$9126 | ||
80 | zapnot $7,15,$27 | ||
81 | br $31,$9127 | ||
82 | .align 4 | ||
83 | $9126: | ||
84 | bis $9,$9,$24 | ||
85 | bis $5,$5,$25 | ||
86 | divqu $24,$25,$27 | ||
87 | $9127: | ||
88 | srl $10,32,$4 | ||
89 | .align 5 | ||
90 | $9128: | ||
91 | mulq $27,$5,$1 | ||
92 | subq $9,$1,$3 | ||
93 | zapnot $3,240,$1 | ||
94 | bne $1,$9129 | ||
95 | mulq $6,$27,$2 | ||
96 | sll $3,32,$1 | ||
97 | addq $1,$4,$1 | ||
98 | cmpule $2,$1,$2 | ||
99 | bne $2,$9129 | ||
100 | subq $27,1,$27 | ||
101 | br $31,$9128 | ||
102 | .align 4 | ||
103 | $9129: | ||
104 | mulq $27,$6,$1 | ||
105 | mulq $27,$5,$4 | ||
106 | srl $1,32,$3 | ||
107 | sll $1,32,$1 | ||
108 | addq $4,$3,$4 | ||
109 | cmpult $10,$1,$2 | ||
110 | subq $10,$1,$10 | ||
111 | addq $2,$4,$2 | ||
112 | cmpult $9,$2,$1 | ||
113 | bis $2,$2,$4 | ||
114 | beq $1,$9134 | ||
115 | addq $9,$11,$9 | ||
116 | subq $27,1,$27 | ||
117 | $9134: | ||
118 | subl $12,1,$12 | ||
119 | subq $9,$4,$9 | ||
120 | beq $12,$9124 | ||
121 | sll $27,32,$13 | ||
122 | sll $9,32,$2 | ||
123 | srl $10,32,$1 | ||
124 | sll $10,32,$10 | ||
125 | bis $2,$1,$9 | ||
126 | br $31,$9123 | ||
127 | .align 4 | ||
128 | $9124: | ||
129 | bis $13,$27,$0 | ||
130 | $9136: | ||
131 | ldq $26,0($30) | ||
132 | ldq $9,8($30) | ||
133 | ldq $10,16($30) | ||
134 | ldq $11,24($30) | ||
135 | ldq $12,32($30) | ||
136 | ldq $13,40($30) | ||
137 | addq $30,48,$30 | ||
138 | ret $31,($26),1 | ||
139 | .end bn_div64 | ||
140 | EOF | ||
141 | &asm_add($data); | ||
142 | } | ||
143 | |||
144 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/mul.pl b/src/lib/libcrypto/bn/asm/alpha.works/mul.pl new file mode 100644 index 0000000000..b182bae452 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/mul.pl | |||
@@ -0,0 +1,116 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &br(&label("finish")); | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0,$r0)=&NR(2); | ||
26 | &ld($a0,&QWPw(0,$ap)); | ||
27 | &ld($r0,&QWPw(0,$rp)); | ||
28 | |||
29 | $a=<<'EOF'; | ||
30 | ########################################################## | ||
31 | &set_label("loop"); | ||
32 | |||
33 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
34 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
35 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
36 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
37 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
38 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
39 | |||
40 | ($o0,$t0)=&NR(2); | ||
41 | &add($a0,$b0,$o0); | ||
42 | &cmpult($o0,$b0,$t0); | ||
43 | &add($o0,$cc,$o0); | ||
44 | &cmpult($o0,$cc,$cc); | ||
45 | &add($cc,$t0,$cc); &FR($t0); | ||
46 | |||
47 | ($t1,$o1)=&NR(2); | ||
48 | |||
49 | &add($a1,$b1,$o1); &FR($a1); | ||
50 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
51 | &add($o1,$cc,$o1); | ||
52 | &cmpult($o1,$cc,$cc); | ||
53 | &add($cc,$t1,$cc); &FR($t1); | ||
54 | |||
55 | ($t2,$o2)=&NR(2); | ||
56 | |||
57 | &add($a2,$b2,$o2); &FR($a2); | ||
58 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
59 | &add($o2,$cc,$o2); | ||
60 | &cmpult($o2,$cc,$cc); | ||
61 | &add($cc,$t2,$cc); &FR($t2); | ||
62 | |||
63 | ($t3,$o3)=&NR(2); | ||
64 | |||
65 | &add($a3,$b3,$o3); &FR($a3); | ||
66 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
67 | &add($o3,$cc,$o3); | ||
68 | &cmpult($o3,$cc,$cc); | ||
69 | &add($cc,$t3,$cc); &FR($t3); | ||
70 | |||
71 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
72 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
73 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
74 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
75 | |||
76 | &sub($count,4,$count); # count-=4 | ||
77 | &add($ap,4*$QWS,$ap); # count+=4 | ||
78 | &add($bp,4*$QWS,$bp); # count+=4 | ||
79 | &add($rp,4*$QWS,$rp); # count+=4 | ||
80 | |||
81 | &blt($count,&label("finish")); | ||
82 | &ld($a0,&QWPw(0,$ap)); | ||
83 | &ld($b0,&QWPw(0,$bp)); | ||
84 | &br(&label("loop")); | ||
85 | EOF | ||
86 | ################################################## | ||
87 | # Do the last 0..3 words | ||
88 | |||
89 | &set_label("last_loop"); | ||
90 | |||
91 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
92 | &mul($a0,$word,($l0)=&NR(1)); | ||
93 | &add($ap,$QWS,$ap); | ||
94 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
95 | &add($l0,$cc,$l0); | ||
96 | &add($rp,$QWS,$rp); | ||
97 | &sub($count,1,$count); | ||
98 | &cmpult($l0,$cc,$cc); | ||
99 | &st($l0,&QWPw(-1,$rp)); &FR($l0); | ||
100 | &add($h0,$cc,$cc); &FR($h0); | ||
101 | |||
102 | &bgt($count,&label("last_loop")); | ||
103 | &function_end_A($name); | ||
104 | |||
105 | ###################################################### | ||
106 | &set_label("finish"); | ||
107 | &add($count,4,$count); | ||
108 | &bgt($count,&label("last_loop")); | ||
109 | |||
110 | &set_label("end"); | ||
111 | &function_end($name); | ||
112 | |||
113 | &fin_pool; | ||
114 | } | ||
115 | |||
116 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/mul_add.pl b/src/lib/libcrypto/bn/asm/alpha.works/mul_add.pl new file mode 100644 index 0000000000..e37f6315fb --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/mul_add.pl | |||
@@ -0,0 +1,120 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &br(&label("finish")); | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0,$r0)=&NR(2); | ||
26 | &ld($a0,&QWPw(0,$ap)); | ||
27 | &ld($r0,&QWPw(0,$rp)); | ||
28 | |||
29 | $a=<<'EOF'; | ||
30 | ########################################################## | ||
31 | &set_label("loop"); | ||
32 | |||
33 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
34 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
35 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
36 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
37 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
38 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
39 | |||
40 | ($o0,$t0)=&NR(2); | ||
41 | &add($a0,$b0,$o0); | ||
42 | &cmpult($o0,$b0,$t0); | ||
43 | &add($o0,$cc,$o0); | ||
44 | &cmpult($o0,$cc,$cc); | ||
45 | &add($cc,$t0,$cc); &FR($t0); | ||
46 | |||
47 | ($t1,$o1)=&NR(2); | ||
48 | |||
49 | &add($a1,$b1,$o1); &FR($a1); | ||
50 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
51 | &add($o1,$cc,$o1); | ||
52 | &cmpult($o1,$cc,$cc); | ||
53 | &add($cc,$t1,$cc); &FR($t1); | ||
54 | |||
55 | ($t2,$o2)=&NR(2); | ||
56 | |||
57 | &add($a2,$b2,$o2); &FR($a2); | ||
58 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
59 | &add($o2,$cc,$o2); | ||
60 | &cmpult($o2,$cc,$cc); | ||
61 | &add($cc,$t2,$cc); &FR($t2); | ||
62 | |||
63 | ($t3,$o3)=&NR(2); | ||
64 | |||
65 | &add($a3,$b3,$o3); &FR($a3); | ||
66 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
67 | &add($o3,$cc,$o3); | ||
68 | &cmpult($o3,$cc,$cc); | ||
69 | &add($cc,$t3,$cc); &FR($t3); | ||
70 | |||
71 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
72 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
73 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
74 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
75 | |||
76 | &sub($count,4,$count); # count-=4 | ||
77 | &add($ap,4*$QWS,$ap); # count+=4 | ||
78 | &add($bp,4*$QWS,$bp); # count+=4 | ||
79 | &add($rp,4*$QWS,$rp); # count+=4 | ||
80 | |||
81 | &blt($count,&label("finish")); | ||
82 | &ld($a0,&QWPw(0,$ap)); | ||
83 | &ld($b0,&QWPw(0,$bp)); | ||
84 | &br(&label("loop")); | ||
85 | EOF | ||
86 | ################################################## | ||
87 | # Do the last 0..3 words | ||
88 | |||
89 | &set_label("last_loop"); | ||
90 | |||
91 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
92 | &ld(($r0)=&NR(1),&QWPw(0,$rp)); # get b | ||
93 | &mul($a0,$word,($l0)=&NR(1)); | ||
94 | &sub($count,1,$count); | ||
95 | &add($ap,$QWS,$ap); | ||
96 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
97 | &add($r0,$l0,$r0); | ||
98 | &add($rp,$QWS,$rp); | ||
99 | &cmpult($r0,$l0,($t0)=&NR(1)); &FR($l0); | ||
100 | &add($r0,$cc,$r0); | ||
101 | &add($h0,$t0,$h0); &FR($t0); | ||
102 | &cmpult($r0,$cc,$cc); | ||
103 | &st($r0,&QWPw(-1,$rp)); &FR($r0); | ||
104 | &add($h0,$cc,$cc); &FR($h0); | ||
105 | |||
106 | &bgt($count,&label("last_loop")); | ||
107 | &function_end_A($name); | ||
108 | |||
109 | ###################################################### | ||
110 | &set_label("finish"); | ||
111 | &add($count,4,$count); | ||
112 | &bgt($count,&label("last_loop")); | ||
113 | |||
114 | &set_label("end"); | ||
115 | &function_end($name); | ||
116 | |||
117 | &fin_pool; | ||
118 | } | ||
119 | |||
120 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/mul_c4.pl b/src/lib/libcrypto/bn/asm/alpha.works/mul_c4.pl new file mode 100644 index 0000000000..5efd201281 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/mul_c4.pl | |||
@@ -0,0 +1,213 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$b,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | &mul($a,$b,($l1)=&NR(1)); | ||
10 | &muh($a,$b,($h1)=&NR(1)); | ||
11 | &add($c0,$l1,$c0); | ||
12 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
13 | &add($t1,$h1,$h1); &FR($t1); | ||
14 | &add($c1,$h1,$c1); | ||
15 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
16 | &add($c2,$t2,$c2); &FR($t2); | ||
17 | } | ||
18 | |||
19 | sub bn_mul_comba4 | ||
20 | { | ||
21 | local($name)=@_; | ||
22 | local(@a,@b,$r,$c0,$c1,$c2); | ||
23 | |||
24 | $cnt=1; | ||
25 | &init_pool(3); | ||
26 | |||
27 | $rp=&wparam(0); | ||
28 | $ap=&wparam(1); | ||
29 | $bp=&wparam(2); | ||
30 | |||
31 | &function_begin($name,""); | ||
32 | |||
33 | &comment(""); | ||
34 | |||
35 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
36 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
37 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
38 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
39 | &mul($a[0],$b[0],($r00)=&NR(1)); | ||
40 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
41 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
42 | &muh($a[0],$b[0],($r01)=&NR(1)); | ||
43 | &FR($ap); &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
44 | &FR($bp); &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
45 | &mul($a[0],$b[1],($r02)=&NR(1)); | ||
46 | |||
47 | ($R,$H1,$H2)=&NR(3); | ||
48 | |||
49 | &st($r00,&QWPw(0,$rp)); &FR($r00); | ||
50 | |||
51 | &mov("zero",$R); | ||
52 | &mul($a[1],$b[0],($r03)=&NR(1)); | ||
53 | |||
54 | &mov("zero",$H1); | ||
55 | &mov("zero",$H0); | ||
56 | &add($R,$r01,$R); | ||
57 | &muh($a[0],$b[1],($r04)=&NR(1)); | ||
58 | &cmpult($R,$r01,($t01)=&NR(1)); &FR($r01); | ||
59 | &add($R,$r02,$R); | ||
60 | &add($H1,$t01,$H1) &FR($t01); | ||
61 | &muh($a[1],$b[0],($r05)=&NR(1)); | ||
62 | &cmpult($R,$r02,($t02)=&NR(1)); &FR($r02); | ||
63 | &add($R,$r03,$R); | ||
64 | &add($H2,$t02,$H2) &FR($t02); | ||
65 | &mul($a[0],$b[2],($r06)=&NR(1)); | ||
66 | &cmpult($R,$r03,($t03)=&NR(1)); &FR($r03); | ||
67 | &add($H1,$t03,$H1) &FR($t03); | ||
68 | &st($R,&QWPw(1,$rp)); | ||
69 | &add($H1,$H2,$R); | ||
70 | |||
71 | &mov("zero",$H1); | ||
72 | &add($R,$r04,$R); | ||
73 | &mov("zero",$H2); | ||
74 | &mul($a[1],$b[1],($r07)=&NR(1)); | ||
75 | &cmpult($R,$r04,($t04)=&NR(1)); &FR($r04); | ||
76 | &add($R,$r05,$R); | ||
77 | &add($H1,$t04,$H1) &FR($t04); | ||
78 | &mul($a[2],$b[0],($r08)=&NR(1)); | ||
79 | &cmpult($R,$r05,($t05)=&NR(1)); &FR($r05); | ||
80 | &add($R,$r01,$R); | ||
81 | &add($H2,$t05,$H2) &FR($t05); | ||
82 | &muh($a[0],$b[2],($r09)=&NR(1)); | ||
83 | &cmpult($R,$r06,($t06)=&NR(1)); &FR($r06); | ||
84 | &add($R,$r07,$R); | ||
85 | &add($H1,$t06,$H1) &FR($t06); | ||
86 | &muh($a[1],$b[1],($r10)=&NR(1)); | ||
87 | &cmpult($R,$r07,($t07)=&NR(1)); &FR($r07); | ||
88 | &add($R,$r08,$R); | ||
89 | &add($H2,$t07,$H2) &FR($t07); | ||
90 | &muh($a[2],$b[0],($r11)=&NR(1)); | ||
91 | &cmpult($R,$r08,($t08)=&NR(1)); &FR($r08); | ||
92 | &add($H1,$t08,$H1) &FR($t08); | ||
93 | &st($R,&QWPw(2,$rp)); | ||
94 | &add($H1,$H2,$R); | ||
95 | |||
96 | &mov("zero",$H1); | ||
97 | &add($R,$r09,$R); | ||
98 | &mov("zero",$H2); | ||
99 | &mul($a[0],$b[3],($r12)=&NR(1)); | ||
100 | &cmpult($R,$r09,($t09)=&NR(1)); &FR($r09); | ||
101 | &add($R,$r10,$R); | ||
102 | &add($H1,$t09,$H1) &FR($t09); | ||
103 | &mul($a[1],$b[2],($r13)=&NR(1)); | ||
104 | &cmpult($R,$r10,($t10)=&NR(1)); &FR($r10); | ||
105 | &add($R,$r11,$R); | ||
106 | &add($H1,$t10,$H1) &FR($t10); | ||
107 | &mul($a[2],$b[1],($r14)=&NR(1)); | ||
108 | &cmpult($R,$r11,($t11)=&NR(1)); &FR($r11); | ||
109 | &add($R,$r12,$R); | ||
110 | &add($H1,$t11,$H1) &FR($t11); | ||
111 | &mul($a[3],$b[0],($r15)=&NR(1)); | ||
112 | &cmpult($R,$r12,($t12)=&NR(1)); &FR($r12); | ||
113 | &add($R,$r13,$R); | ||
114 | &add($H1,$t12,$H1) &FR($t12); | ||
115 | &muh($a[0],$b[3],($r16)=&NR(1)); | ||
116 | &cmpult($R,$r13,($t13)=&NR(1)); &FR($r13); | ||
117 | &add($R,$r14,$R); | ||
118 | &add($H1,$t13,$H1) &FR($t13); | ||
119 | &muh($a[1],$b[2],($r17)=&NR(1)); | ||
120 | &cmpult($R,$r14,($t14)=&NR(1)); &FR($r14); | ||
121 | &add($R,$r15,$R); | ||
122 | &add($H1,$t14,$H1) &FR($t14); | ||
123 | &muh($a[2],$b[1],($r18)=&NR(1)); | ||
124 | &cmpult($R,$r15,($t15)=&NR(1)); &FR($r15); | ||
125 | &add($H1,$t15,$H1) &FR($t15); | ||
126 | &st($R,&QWPw(3,$rp)); | ||
127 | &add($H1,$H2,$R); | ||
128 | |||
129 | &mov("zero",$H1); | ||
130 | &add($R,$r16,$R); | ||
131 | &mov("zero",$H2); | ||
132 | &muh($a[3],$b[0],($r19)=&NR(1)); | ||
133 | &cmpult($R,$r16,($t16)=&NR(1)); &FR($r16); | ||
134 | &add($R,$r17,$R); | ||
135 | &add($H1,$t16,$H1) &FR($t16); | ||
136 | &mul($a[1],$b[3],($r20)=&NR(1)); | ||
137 | &cmpult($R,$r17,($t17)=&NR(1)); &FR($r17); | ||
138 | &add($R,$r18,$R); | ||
139 | &add($H1,$t17,$H1) &FR($t17); | ||
140 | &mul($a[2],$b[2],($r21)=&NR(1)); | ||
141 | &cmpult($R,$r18,($t18)=&NR(1)); &FR($r18); | ||
142 | &add($R,$r19,$R); | ||
143 | &add($H1,$t18,$H1) &FR($t18); | ||
144 | &mul($a[3],$b[1],($r22)=&NR(1)); | ||
145 | &cmpult($R,$r19,($t19)=&NR(1)); &FR($r19); | ||
146 | &add($R,$r20,$R); | ||
147 | &add($H1,$t19,$H1) &FR($t19); | ||
148 | &muh($a[1],$b[3],($r23)=&NR(1)); | ||
149 | &cmpult($R,$r20,($t20)=&NR(1)); &FR($r20); | ||
150 | &add($R,$r21,$R); | ||
151 | &add($H1,$t20,$H1) &FR($t20); | ||
152 | &muh($a[2],$b[2],($r24)=&NR(1)); | ||
153 | &cmpult($R,$r21,($t21)=&NR(1)); &FR($r21); | ||
154 | &add($R,$r22,$R); | ||
155 | &add($H1,$t21,$H1) &FR($t21); | ||
156 | &muh($a[3],$b[1],($r25)=&NR(1)); | ||
157 | &cmpult($R,$r22,($t22)=&NR(1)); &FR($r22); | ||
158 | &add($H1,$t22,$H1) &FR($t22); | ||
159 | &st($R,&QWPw(4,$rp)); | ||
160 | &add($H1,$H2,$R); | ||
161 | |||
162 | &mov("zero",$H1); | ||
163 | &add($R,$r23,$R); | ||
164 | &mov("zero",$H2); | ||
165 | &mul($a[2],$b[3],($r26)=&NR(1)); | ||
166 | &cmpult($R,$r23,($t23)=&NR(1)); &FR($r23); | ||
167 | &add($R,$r24,$R); | ||
168 | &add($H1,$t23,$H1) &FR($t23); | ||
169 | &mul($a[3],$b[2],($r27)=&NR(1)); | ||
170 | &cmpult($R,$r24,($t24)=&NR(1)); &FR($r24); | ||
171 | &add($R,$r25,$R); | ||
172 | &add($H1,$t24,$H1) &FR($t24); | ||
173 | &muh($a[2],$b[3],($r28)=&NR(1)); | ||
174 | &cmpult($R,$r25,($t25)=&NR(1)); &FR($r25); | ||
175 | &add($R,$r26,$R); | ||
176 | &add($H1,$t25,$H1) &FR($t25); | ||
177 | &muh($a[3],$b[2],($r29)=&NR(1)); | ||
178 | &cmpult($R,$r26,($t26)=&NR(1)); &FR($r26); | ||
179 | &add($R,$r27,$R); | ||
180 | &add($H1,$t26,$H1) &FR($t26); | ||
181 | &mul($a[3],$b[3],($r30)=&NR(1)); | ||
182 | &cmpult($R,$r27,($t27)=&NR(1)); &FR($r27); | ||
183 | &add($H1,$t27,$H1) &FR($t27); | ||
184 | &st($R,&QWPw(5,$rp)); | ||
185 | &add($H1,$H2,$R); | ||
186 | |||
187 | &mov("zero",$H1); | ||
188 | &add($R,$r28,$R); | ||
189 | &mov("zero",$H2); | ||
190 | &muh($a[3],$b[3],($r31)=&NR(1)); | ||
191 | &cmpult($R,$r28,($t28)=&NR(1)); &FR($r28); | ||
192 | &add($R,$r29,$R); | ||
193 | &add($H1,$t28,$H1) &FR($t28); | ||
194 | ############ | ||
195 | &cmpult($R,$r29,($t29)=&NR(1)); &FR($r29); | ||
196 | &add($R,$r30,$R); | ||
197 | &add($H1,$t29,$H1) &FR($t29); | ||
198 | ############ | ||
199 | &cmpult($R,$r30,($t30)=&NR(1)); &FR($r30); | ||
200 | &add($H1,$t30,$H1) &FR($t30); | ||
201 | &st($R,&QWPw(6,$rp)); | ||
202 | &add($H1,$H2,$R); | ||
203 | |||
204 | &add($R,$r31,$R); &FR($r31); | ||
205 | &st($R,&QWPw(7,$rp)); | ||
206 | |||
207 | &FR($R,$H1,$H2); | ||
208 | &function_end($name); | ||
209 | |||
210 | &fin_pool; | ||
211 | } | ||
212 | |||
213 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/mul_c4.works.pl b/src/lib/libcrypto/bn/asm/alpha.works/mul_c4.works.pl new file mode 100644 index 0000000000..79d86dd25c --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/mul_c4.works.pl | |||
@@ -0,0 +1,98 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$b,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | print STDERR "count=$cnt\n"; $cnt++; | ||
10 | &mul($a,$b,($l1)=&NR(1)); | ||
11 | &muh($a,$b,($h1)=&NR(1)); | ||
12 | &add($c0,$l1,$c0); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &add($t1,$h1,$h1); &FR($t1); | ||
15 | &add($c1,$h1,$c1); | ||
16 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
17 | &add($c2,$t2,$c2); &FR($t2); | ||
18 | } | ||
19 | |||
20 | sub bn_mul_comba4 | ||
21 | { | ||
22 | local($name)=@_; | ||
23 | local(@a,@b,$r,$c0,$c1,$c2); | ||
24 | |||
25 | $cnt=1; | ||
26 | &init_pool(3); | ||
27 | |||
28 | $rp=&wparam(0); | ||
29 | $ap=&wparam(1); | ||
30 | $bp=&wparam(2); | ||
31 | |||
32 | &function_begin($name,""); | ||
33 | |||
34 | &comment(""); | ||
35 | |||
36 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
37 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
38 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
39 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
40 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
41 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
42 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
43 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); &FR($bp); | ||
44 | |||
45 | ($c0,$c1,$c2)=&NR(3); | ||
46 | &mov("zero",$c2); | ||
47 | &mul($a[0],$b[0],$c0); | ||
48 | &muh($a[0],$b[0],$c1); | ||
49 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
50 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
51 | &mov("zero",$c2); | ||
52 | |||
53 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
54 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
55 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
56 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
57 | &mov("zero",$c2); | ||
58 | |||
59 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
60 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
61 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
62 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
63 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
64 | &mov("zero",$c2); | ||
65 | |||
66 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); &FR($a[0]); | ||
67 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
68 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
69 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
70 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
71 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
72 | &mov("zero",$c2); | ||
73 | |||
74 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); &FR($a[1]); | ||
75 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
76 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
77 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
78 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
79 | &mov("zero",$c2); | ||
80 | |||
81 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); &FR($a[2]); | ||
82 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
83 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
84 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
85 | &mov("zero",$c2); | ||
86 | |||
87 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); &FR($a[3],$b[3]); | ||
88 | &st($c0,&QWPw(6,$rp)); | ||
89 | &st($c1,&QWPw(7,$rp)); | ||
90 | |||
91 | &FR($c0,$c1,$c2); | ||
92 | |||
93 | &function_end($name); | ||
94 | |||
95 | &fin_pool; | ||
96 | } | ||
97 | |||
98 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/mul_c8.pl b/src/lib/libcrypto/bn/asm/alpha.works/mul_c8.pl new file mode 100644 index 0000000000..525ca7494b --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/mul_c8.pl | |||
@@ -0,0 +1,177 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(3); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | |||
20 | &stack_push(2); | ||
21 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
22 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
23 | &st($reg_s0,&swtmp(0)); &FR($reg_s0); | ||
24 | &st($reg_s1,&swtmp(1)); &FR($reg_s1); | ||
25 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
26 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
27 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
28 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
29 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
30 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
31 | &ld(($a[4])=&NR(1),&QWPw(1,$ap)); | ||
32 | &ld(($b[4])=&NR(1),&QWPw(1,$bp)); | ||
33 | &ld(($a[5])=&NR(1),&QWPw(1,$ap)); | ||
34 | &ld(($b[5])=&NR(1),&QWPw(1,$bp)); | ||
35 | &ld(($a[6])=&NR(1),&QWPw(1,$ap)); | ||
36 | &ld(($b[6])=&NR(1),&QWPw(1,$bp)); | ||
37 | &ld(($a[7])=&NR(1),&QWPw(1,$ap)); &FR($ap); | ||
38 | &ld(($b[7])=&NR(1),&QWPw(1,$bp)); &FR($bp); | ||
39 | |||
40 | ($c0,$c1,$c2)=&NR(3); | ||
41 | &mov("zero",$c2); | ||
42 | &mul($a[0],$b[0],$c0); | ||
43 | &muh($a[0],$b[0],$c1); | ||
44 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR(1); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
49 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR(1); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
55 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
56 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR(1); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); | ||
62 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
63 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
64 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); | ||
65 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR(1); | ||
66 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
67 | &mov("zero",$c2); | ||
68 | |||
69 | &mul_add_c($a[0],$b[4],$c0,$c1,$c2); | ||
70 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); | ||
71 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
72 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); | ||
73 | &mul_add_c($a[4],$b[0],$c0,$c1,$c2); | ||
74 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR(1); | ||
75 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
76 | &mov("zero",$c2); | ||
77 | |||
78 | &mul_add_c($a[0],$b[5],$c0,$c1,$c2); | ||
79 | &mul_add_c($a[1],$b[4],$c0,$c1,$c2); | ||
80 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); | ||
81 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); | ||
82 | &mul_add_c($a[4],$b[1],$c0,$c1,$c2); | ||
83 | &mul_add_c($a[5],$b[0],$c0,$c1,$c2); | ||
84 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR(1); | ||
85 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
86 | &mov("zero",$c2); | ||
87 | |||
88 | &mul_add_c($a[0],$b[6],$c0,$c1,$c2); | ||
89 | &mul_add_c($a[1],$b[5],$c0,$c1,$c2); | ||
90 | &mul_add_c($a[2],$b[4],$c0,$c1,$c2); | ||
91 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); | ||
92 | &mul_add_c($a[4],$b[2],$c0,$c1,$c2); | ||
93 | &mul_add_c($a[5],$b[1],$c0,$c1,$c2); | ||
94 | &mul_add_c($a[6],$b[0],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(6,$rp)); &FR($c0); ($c0)=&NR(1); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &mul_add_c($a[0],$b[7],$c0,$c1,$c2); &FR($a[0]); | ||
100 | &mul_add_c($a[1],$b[6],$c0,$c1,$c2); | ||
101 | &mul_add_c($a[2],$b[5],$c0,$c1,$c2); | ||
102 | &mul_add_c($a[3],$b[4],$c0,$c1,$c2); | ||
103 | &mul_add_c($a[4],$b[3],$c0,$c1,$c2); | ||
104 | &mul_add_c($a[5],$b[2],$c0,$c1,$c2); | ||
105 | &mul_add_c($a[6],$b[1],$c0,$c1,$c2); | ||
106 | &mul_add_c($a[7],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
107 | &st($c0,&QWPw(7,$rp)); &FR($c0); ($c0)=&NR(1); | ||
108 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
109 | &mov("zero",$c2); | ||
110 | |||
111 | &mul_add_c($a[1],$b[7],$c0,$c1,$c2); &FR($a[1]); | ||
112 | &mul_add_c($a[2],$b[6],$c0,$c1,$c2); | ||
113 | &mul_add_c($a[3],$b[5],$c0,$c1,$c2); | ||
114 | &mul_add_c($a[4],$b[4],$c0,$c1,$c2); | ||
115 | &mul_add_c($a[5],$b[3],$c0,$c1,$c2); | ||
116 | &mul_add_c($a[6],$b[2],$c0,$c1,$c2); | ||
117 | &mul_add_c($a[7],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
118 | &st($c0,&QWPw(8,$rp)); &FR($c0); ($c0)=&NR(1); | ||
119 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
120 | &mov("zero",$c2); | ||
121 | |||
122 | &mul_add_c($a[2],$b[7],$c0,$c1,$c2); &FR($a[2]); | ||
123 | &mul_add_c($a[3],$b[6],$c0,$c1,$c2); | ||
124 | &mul_add_c($a[4],$b[5],$c0,$c1,$c2); | ||
125 | &mul_add_c($a[5],$b[4],$c0,$c1,$c2); | ||
126 | &mul_add_c($a[6],$b[3],$c0,$c1,$c2); | ||
127 | &mul_add_c($a[7],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
128 | &st($c0,&QWPw(9,$rp)); &FR($c0); ($c0)=&NR(1); | ||
129 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
130 | &mov("zero",$c2); | ||
131 | |||
132 | &mul_add_c($a[3],$b[7],$c0,$c1,$c2); &FR($a[3]); | ||
133 | &mul_add_c($a[4],$b[6],$c0,$c1,$c2); | ||
134 | &mul_add_c($a[5],$b[5],$c0,$c1,$c2); | ||
135 | &mul_add_c($a[6],$b[4],$c0,$c1,$c2); | ||
136 | &mul_add_c($a[7],$b[3],$c0,$c1,$c2); &FR($b[3]); | ||
137 | &st($c0,&QWPw(10,$rp)); &FR($c0); ($c0)=&NR(1); | ||
138 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
139 | &mov("zero",$c2); | ||
140 | |||
141 | &mul_add_c($a[4],$b[7],$c0,$c1,$c2); &FR($a[4]); | ||
142 | &mul_add_c($a[5],$b[6],$c0,$c1,$c2); | ||
143 | &mul_add_c($a[6],$b[5],$c0,$c1,$c2); | ||
144 | &mul_add_c($a[7],$b[4],$c0,$c1,$c2); &FR($b[4]); | ||
145 | &st($c0,&QWPw(11,$rp)); &FR($c0); ($c0)=&NR(1); | ||
146 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
147 | &mov("zero",$c2); | ||
148 | |||
149 | &mul_add_c($a[5],$b[7],$c0,$c1,$c2); &FR($a[5]); | ||
150 | &mul_add_c($a[6],$b[6],$c0,$c1,$c2); | ||
151 | &mul_add_c($a[7],$b[5],$c0,$c1,$c2); &FR($b[5]); | ||
152 | &st($c0,&QWPw(12,$rp)); &FR($c0); ($c0)=&NR(1); | ||
153 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
154 | &mov("zero",$c2); | ||
155 | |||
156 | &mul_add_c($a[6],$b[7],$c0,$c1,$c2); &FR($a[6]); | ||
157 | &mul_add_c($a[7],$b[6],$c0,$c1,$c2); &FR($b[6]); | ||
158 | &st($c0,&QWPw(13,$rp)); &FR($c0); ($c0)=&NR(1); | ||
159 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
160 | &mov("zero",$c2); | ||
161 | |||
162 | &mul_add_c($a[7],$b[7],$c0,$c1,$c2); &FR($a[7],$b[7]); | ||
163 | &st($c0,&QWPw(14,$rp)); | ||
164 | &st($c1,&QWPw(15,$rp)); | ||
165 | |||
166 | &FR($c0,$c1,$c2); | ||
167 | |||
168 | &ld($reg_s0,&swtmp(0)); | ||
169 | &ld($reg_s1,&swtmp(1)); | ||
170 | &stack_pop(2); | ||
171 | |||
172 | &function_end($name); | ||
173 | |||
174 | &fin_pool; | ||
175 | } | ||
176 | |||
177 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/sqr.pl b/src/lib/libcrypto/bn/asm/alpha.works/sqr.pl new file mode 100644 index 0000000000..a55b696906 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/sqr.pl | |||
@@ -0,0 +1,113 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(3); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | &sub($count,4,$count); | ||
20 | &mov("zero",$cc); | ||
21 | &br(&label("finish")); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$r0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($r0,&QWPw(0,$rp)); | ||
27 | |||
28 | $a=<<'EOF'; | ||
29 | ########################################################## | ||
30 | &set_label("loop"); | ||
31 | |||
32 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
33 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
34 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
35 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
36 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
37 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
38 | |||
39 | ($o0,$t0)=&NR(2); | ||
40 | &add($a0,$b0,$o0); | ||
41 | &cmpult($o0,$b0,$t0); | ||
42 | &add($o0,$cc,$o0); | ||
43 | &cmpult($o0,$cc,$cc); | ||
44 | &add($cc,$t0,$cc); &FR($t0); | ||
45 | |||
46 | ($t1,$o1)=&NR(2); | ||
47 | |||
48 | &add($a1,$b1,$o1); &FR($a1); | ||
49 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
50 | &add($o1,$cc,$o1); | ||
51 | &cmpult($o1,$cc,$cc); | ||
52 | &add($cc,$t1,$cc); &FR($t1); | ||
53 | |||
54 | ($t2,$o2)=&NR(2); | ||
55 | |||
56 | &add($a2,$b2,$o2); &FR($a2); | ||
57 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
58 | &add($o2,$cc,$o2); | ||
59 | &cmpult($o2,$cc,$cc); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &add($a3,$b3,$o3); &FR($a3); | ||
65 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
66 | &add($o3,$cc,$o3); | ||
67 | &cmpult($o3,$cc,$cc); | ||
68 | &add($cc,$t3,$cc); &FR($t3); | ||
69 | |||
70 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
71 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
72 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
73 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
74 | |||
75 | &sub($count,4,$count); # count-=4 | ||
76 | &add($ap,4*$QWS,$ap); # count+=4 | ||
77 | &add($bp,4*$QWS,$bp); # count+=4 | ||
78 | &add($rp,4*$QWS,$rp); # count+=4 | ||
79 | |||
80 | &blt($count,&label("finish")); | ||
81 | &ld($a0,&QWPw(0,$ap)); | ||
82 | &ld($b0,&QWPw(0,$bp)); | ||
83 | &br(&label("loop")); | ||
84 | EOF | ||
85 | ################################################## | ||
86 | # Do the last 0..3 words | ||
87 | |||
88 | &set_label("last_loop"); | ||
89 | |||
90 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
91 | &mul($a0,$a0,($l0)=&NR(1)); | ||
92 | &add($ap,$QWS,$ap); | ||
93 | &add($rp,2*$QWS,$rp); | ||
94 | &sub($count,1,$count); | ||
95 | &muh($a0,$a0,($h0)=&NR(1)); &FR($a0); | ||
96 | &st($l0,&QWPw(-2,$rp)); &FR($l0); | ||
97 | &st($h0,&QWPw(-1,$rp)); &FR($h0); | ||
98 | |||
99 | &bgt($count,&label("last_loop")); | ||
100 | &function_end_A($name); | ||
101 | |||
102 | ###################################################### | ||
103 | &set_label("finish"); | ||
104 | &add($count,4,$count); | ||
105 | &bgt($count,&label("last_loop")); | ||
106 | |||
107 | &set_label("end"); | ||
108 | &function_end($name); | ||
109 | |||
110 | &fin_pool; | ||
111 | } | ||
112 | |||
113 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/sqr_c4.pl b/src/lib/libcrypto/bn/asm/alpha.works/sqr_c4.pl new file mode 100644 index 0000000000..bf33f5b503 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/sqr_c4.pl | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub sqr_add_c | ||
5 | { | ||
6 | local($a,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | &mul($a,$a,($l1)=&NR(1)); | ||
10 | &muh($a,$a,($h1)=&NR(1)); | ||
11 | &add($c0,$l1,$c0); | ||
12 | &add($c1,$h1,$c1); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
15 | &add($c1,$t1,$c1); &FR($t1); | ||
16 | &add($c2,$t2,$c2); &FR($t2); | ||
17 | } | ||
18 | |||
19 | sub sqr_add_c2 | ||
20 | { | ||
21 | local($a,$b,$c0,$c1,$c2)=@_; | ||
22 | local($l1,$h1,$t1,$t2); | ||
23 | |||
24 | &mul($a,$b,($l1)=&NR(1)); | ||
25 | &muh($a,$b,($h1)=&NR(1)); | ||
26 | &cmplt($l1,"zero",($lc1)=&NR(1)); | ||
27 | &cmplt($h1,"zero",($hc1)=&NR(1)); | ||
28 | &add($l1,$l1,$l1); | ||
29 | &add($h1,$h1,$h1); | ||
30 | &add($h1,$lc1,$h1); &FR($lc1); | ||
31 | &add($c2,$hc1,$c2); &FR($hc1); | ||
32 | |||
33 | &add($c0,$l1,$c0); | ||
34 | &add($c1,$h1,$c1); | ||
35 | &cmpult($c0,$l1,($lc1)=&NR(1)); &FR($l1); | ||
36 | &cmpult($c1,$h1,($hc1)=&NR(1)); &FR($h1); | ||
37 | |||
38 | &add($c1,$lc1,$c1); &FR($lc1); | ||
39 | &add($c2,$hc1,$c2); &FR($hc1); | ||
40 | } | ||
41 | |||
42 | |||
43 | sub bn_sqr_comba4 | ||
44 | { | ||
45 | local($name)=@_; | ||
46 | local(@a,@b,$r,$c0,$c1,$c2); | ||
47 | |||
48 | $cnt=1; | ||
49 | &init_pool(2); | ||
50 | |||
51 | $rp=&wparam(0); | ||
52 | $ap=&wparam(1); | ||
53 | |||
54 | &function_begin($name,""); | ||
55 | |||
56 | &comment(""); | ||
57 | |||
58 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
59 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
60 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
61 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
62 | |||
63 | ($c0,$c1,$c2)=&NR(3); | ||
64 | |||
65 | &mov("zero",$c2); | ||
66 | &mul($a[0],$a[0],$c0); | ||
67 | &muh($a[0],$a[0],$c1); | ||
68 | &st($c0,&QWPw(0,$rp)); | ||
69 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
70 | &mov("zero",$c2); | ||
71 | |||
72 | &sqr_add_c2($a[0],$a[1],$c0,$c1,$c2); | ||
73 | &st($c0,&QWPw(1,$rp)); | ||
74 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
75 | &mov("zero",$c2); | ||
76 | |||
77 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
79 | &st($c0,&QWPw(2,$rp)); | ||
80 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
81 | &mov("zero",$c2); | ||
82 | |||
83 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
84 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
85 | &st($c0,&QWPw(3,$rp)); | ||
86 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
87 | &mov("zero",$c2); | ||
88 | |||
89 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
90 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
91 | &st($c0,&QWPw(4,$rp)); | ||
92 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
93 | &mov("zero",$c2); | ||
94 | |||
95 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
96 | &st($c0,&QWPw(5,$rp)); | ||
97 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
98 | &mov("zero",$c2); | ||
99 | |||
100 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
101 | &st($c0,&QWPw(6,$rp)); | ||
102 | &st($c1,&QWPw(7,$rp)); | ||
103 | |||
104 | &function_end($name); | ||
105 | |||
106 | &fin_pool; | ||
107 | } | ||
108 | |||
109 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/sqr_c8.pl b/src/lib/libcrypto/bn/asm/alpha.works/sqr_c8.pl new file mode 100644 index 0000000000..b4afe085f1 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/sqr_c8.pl | |||
@@ -0,0 +1,132 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(2); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | |||
15 | &function_begin($name,""); | ||
16 | |||
17 | &comment(""); | ||
18 | |||
19 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
20 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
21 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
22 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
23 | &ld(($a[4])=&NR(1),&QWPw(4,$ap)); | ||
24 | &ld(($a[5])=&NR(1),&QWPw(5,$ap)); | ||
25 | &ld(($a[6])=&NR(1),&QWPw(6,$ap)); | ||
26 | &ld(($a[7])=&NR(1),&QWPw(7,$ap)); &FR($ap); | ||
27 | |||
28 | ($c0,$c1,$c2)=&NR(3); | ||
29 | |||
30 | &mov("zero",$c2); | ||
31 | &mul($a[0],$a[0],$c0); | ||
32 | &muh($a[0],$a[0],$c1); | ||
33 | &st($c0,&QWPw(0,$rp)); | ||
34 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
35 | &mov("zero",$c2); | ||
36 | |||
37 | &sqr_add_c2($a[1],$a[0],$c0,$c1,$c2); | ||
38 | &st($c0,&QWPw(1,$rp)); | ||
39 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
40 | &mov("zero",$c2); | ||
41 | |||
42 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
43 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
44 | &st($c0,&QWPw(2,$rp)); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
49 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(3,$rp)); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
55 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
56 | &sqr_add_c2($a[4],$a[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(4,$rp)); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
62 | &sqr_add_c2($a[4],$a[1],$c0,$c1,$c2); | ||
63 | &sqr_add_c2($a[5],$a[0],$c0,$c1,$c2); | ||
64 | &st($c0,&QWPw(5,$rp)); | ||
65 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
66 | &mov("zero",$c2); | ||
67 | |||
68 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
69 | &sqr_add_c2($a[4],$a[2],$c0,$c1,$c2); | ||
70 | &sqr_add_c2($a[5],$a[1],$c0,$c1,$c2); | ||
71 | &sqr_add_c2($a[6],$a[0],$c0,$c1,$c2); | ||
72 | &st($c0,&QWPw(6,$rp)); | ||
73 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
74 | &mov("zero",$c2); | ||
75 | |||
76 | &sqr_add_c2($a[4],$a[3],$c0,$c1,$c2); | ||
77 | &sqr_add_c2($a[5],$a[2],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[6],$a[1],$c0,$c1,$c2); | ||
79 | &sqr_add_c2($a[7],$a[0],$c0,$c1,$c2); | ||
80 | &st($c0,&QWPw(7,$rp)); | ||
81 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
82 | &mov("zero",$c2); | ||
83 | |||
84 | &sqr_add_c($a[4],$c0,$c1,$c2); | ||
85 | &sqr_add_c2($a[5],$a[3],$c0,$c1,$c2); | ||
86 | &sqr_add_c2($a[6],$a[2],$c0,$c1,$c2); | ||
87 | &sqr_add_c2($a[7],$a[1],$c0,$c1,$c2); | ||
88 | &st($c0,&QWPw(8,$rp)); | ||
89 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
90 | &mov("zero",$c2); | ||
91 | |||
92 | &sqr_add_c2($a[5],$a[4],$c0,$c1,$c2); | ||
93 | &sqr_add_c2($a[6],$a[3],$c0,$c1,$c2); | ||
94 | &sqr_add_c2($a[7],$a[2],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(9,$rp)); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &sqr_add_c($a[5],$c0,$c1,$c2); | ||
100 | &sqr_add_c2($a[6],$a[4],$c0,$c1,$c2); | ||
101 | &sqr_add_c2($a[7],$a[3],$c0,$c1,$c2); | ||
102 | &st($c0,&QWPw(10,$rp)); | ||
103 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
104 | &mov("zero",$c2); | ||
105 | |||
106 | &sqr_add_c2($a[6],$a[5],$c0,$c1,$c2); | ||
107 | &sqr_add_c2($a[7],$a[4],$c0,$c1,$c2); | ||
108 | &st($c0,&QWPw(11,$rp)); | ||
109 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
110 | &mov("zero",$c2); | ||
111 | |||
112 | &sqr_add_c($a[6],$c0,$c1,$c2); | ||
113 | &sqr_add_c2($a[7],$a[5],$c0,$c1,$c2); | ||
114 | &st($c0,&QWPw(12,$rp)); | ||
115 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
116 | &mov("zero",$c2); | ||
117 | |||
118 | &sqr_add_c2($a[7],$a[6],$c0,$c1,$c2); | ||
119 | &st($c0,&QWPw(13,$rp)); | ||
120 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
121 | &mov("zero",$c2); | ||
122 | |||
123 | &sqr_add_c($a[7],$c0,$c1,$c2); | ||
124 | &st($c0,&QWPw(14,$rp)); | ||
125 | &st($c1,&QWPw(15,$rp)); | ||
126 | |||
127 | &function_end($name); | ||
128 | |||
129 | &fin_pool; | ||
130 | } | ||
131 | |||
132 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha.works/sub.pl b/src/lib/libcrypto/bn/asm/alpha.works/sub.pl new file mode 100644 index 0000000000..d998da5c21 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha.works/sub.pl | |||
@@ -0,0 +1,108 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sub_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$b0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($b0,&QWPw(0,$bp)); | ||
27 | |||
28 | ########################################################## | ||
29 | &set_label("loop"); | ||
30 | |||
31 | ($a1,$tmp,$b1,$a2,$b2,$a3,$b3,$o0)=&NR(8); | ||
32 | &ld($a1,&QWPw(1,$ap)); | ||
33 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
34 | &ld($b1,&QWPw(1,$bp)); | ||
35 | &sub($a0,$b0,$a0); # do the subtract | ||
36 | &ld($a2,&QWPw(2,$ap)); | ||
37 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
38 | &ld($b2,&QWPw(2,$bp)); | ||
39 | &sub($a0,$cc,$o0); # will we borrow? | ||
40 | &ld($a3,&QWPw(3,$ap)); | ||
41 | &add($b0,$tmp,$cc); ($t1,$o1)=&NR(2); &FR($tmp); | ||
42 | |||
43 | &cmpult($a1,$b1,$t1); # will we borrow? | ||
44 | &sub($a1,$b1,$a1); # do the subtract | ||
45 | &ld($b3,&QWPw(3,$bp)); | ||
46 | &cmpult($a1,$cc,$b1); # will we borrow? | ||
47 | &sub($a1,$cc,$o1); # will we borrow? | ||
48 | &add($b1,$t1,$cc); ($tmp,$o2)=&NR(2); &FR($t1,$a1,$b1); | ||
49 | |||
50 | &cmpult($a2,$b2,$tmp); # will we borrow? | ||
51 | &sub($a2,$b2,$a2); # do the subtract | ||
52 | &st($o0,&QWPw(0,$rp)); &FR($o0); # save | ||
53 | &cmpult($a2,$cc,$b2); # will we borrow? | ||
54 | &sub($a2,$cc,$o2); # will we borrow? | ||
55 | &add($b2,$tmp,$cc); ($t3,$o3)=&NR(2); &FR($tmp,$a2,$b2); | ||
56 | |||
57 | &cmpult($a3,$b3,$t3); # will we borrow? | ||
58 | &sub($a3,$b3,$a3); # do the subtract | ||
59 | &st($o1,&QWPw(1,$rp)); &FR($o1); | ||
60 | &cmpult($a3,$cc,$b3); # will we borrow? | ||
61 | &sub($a3,$cc,$o3); # will we borrow? | ||
62 | &add($b3,$t3,$cc); &FR($t3,$a3,$b3); | ||
63 | |||
64 | &st($o2,&QWPw(2,$rp)); &FR($o2); | ||
65 | &sub($count,4,$count); # count-=4 | ||
66 | &st($o3,&QWPw(3,$rp)); &FR($o3); | ||
67 | &add($ap,4*$QWS,$ap); # count+=4 | ||
68 | &add($bp,4*$QWS,$bp); # count+=4 | ||
69 | &add($rp,4*$QWS,$rp); # count+=4 | ||
70 | |||
71 | &blt($count,&label("finish")); | ||
72 | &ld($a0,&QWPw(0,$ap)); | ||
73 | &ld($b0,&QWPw(0,$bp)); | ||
74 | &br(&label("loop")); | ||
75 | ################################################## | ||
76 | # Do the last 0..3 words | ||
77 | |||
78 | &set_label("last_loop"); | ||
79 | |||
80 | &ld($a0,&QWPw(0,$ap)); # get a | ||
81 | &ld($b0,&QWPw(0,$bp)); # get b | ||
82 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
83 | &sub($a0,$b0,$a0); # do the subtract | ||
84 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
85 | &sub($a0,$cc,$a0); # will we borrow? | ||
86 | &st($a0,&QWPw(0,$rp)); # save | ||
87 | &add($b0,$tmp,$cc); # add the borrows | ||
88 | |||
89 | &add($ap,$QWS,$ap); | ||
90 | &add($bp,$QWS,$bp); | ||
91 | &add($rp,$QWS,$rp); | ||
92 | &sub($count,1,$count); | ||
93 | &bgt($count,&label("last_loop")); | ||
94 | &function_end_A($name); | ||
95 | |||
96 | ###################################################### | ||
97 | &set_label("finish"); | ||
98 | &add($count,4,$count); | ||
99 | &bgt($count,&label("last_loop")); | ||
100 | |||
101 | &FR($a0,$b0); | ||
102 | &set_label("end"); | ||
103 | &function_end($name); | ||
104 | |||
105 | &fin_pool; | ||
106 | } | ||
107 | |||
108 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/add.pl b/src/lib/libcrypto/bn/asm/alpha/add.pl new file mode 100644 index 0000000000..13bf516428 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/add.pl | |||
@@ -0,0 +1,118 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$b0)=&NR(2); | ||
25 | |||
26 | ########################################################## | ||
27 | &set_label("loop"); | ||
28 | |||
29 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); | ||
30 | &ld(($b0)=&NR(1),&QWPw(0,$bp)); | ||
31 | &ld(($a1)=&NR(1),&QWPw(1,$ap)); | ||
32 | &ld(($b1)=&NR(1),&QWPw(1,$bp)); | ||
33 | |||
34 | ($o0,$t0)=&NR(2); | ||
35 | &add($a0,$b0,$o0); | ||
36 | &ld(($a2)=&NR(1),&QWPw(2,$ap)); | ||
37 | &cmpult($o0,$b0,$t0); | ||
38 | &add($o0,$cc,$o0); | ||
39 | &cmpult($o0,$cc,$cc); | ||
40 | &ld(($b2)=&NR(1),&QWPw(2,$bp)); | ||
41 | &add($cc,$t0,$cc); &FR($t0); | ||
42 | |||
43 | ($t1,$o1)=&NR(2); | ||
44 | |||
45 | &add($a1,$b1,$o1); &FR($a1); | ||
46 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
47 | &add($o1,$cc,$o1); | ||
48 | &cmpult($o1,$cc,$cc); | ||
49 | &ld(($a3)=&NR(1),&QWPw(3,$ap)); | ||
50 | &add($cc,$t1,$cc); &FR($t1); | ||
51 | |||
52 | ($t2,$o2)=&NR(2); | ||
53 | |||
54 | &add($a2,$b2,$o2); &FR($a2); | ||
55 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
56 | &add($o2,$cc,$o2); | ||
57 | &cmpult($o2,$cc,$cc); | ||
58 | &ld(($b3)=&NR(1),&QWPw(3,$bp)); | ||
59 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
65 | &add($a3,$b3,$o3); &FR($a3); | ||
66 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
67 | &add($o3,$cc,$o3); | ||
68 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
69 | &cmpult($o3,$cc,$cc); | ||
70 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
71 | &add($cc,$t3,$cc); &FR($t3); | ||
72 | |||
73 | |||
74 | &sub($count,4,$count); # count-=4 | ||
75 | &add($ap,4*$QWS,$ap); # count+=4 | ||
76 | &add($bp,4*$QWS,$bp); # count+=4 | ||
77 | &add($rp,4*$QWS,$rp); # count+=4 | ||
78 | |||
79 | ### | ||
80 | &bge($count,&label("loop")); | ||
81 | ### | ||
82 | &br(&label("finish")); | ||
83 | ################################################## | ||
84 | # Do the last 0..3 words | ||
85 | |||
86 | ($t0,$o0)=&NR(2); | ||
87 | &set_label("last_loop"); | ||
88 | |||
89 | &ld($a0,&QWPw(0,$ap)); # get a | ||
90 | &ld($b0,&QWPw(0,$bp)); # get b | ||
91 | &add($ap,$QWS,$ap); | ||
92 | &add($bp,$QWS,$bp); | ||
93 | &add($a0,$b0,$o0); | ||
94 | &sub($count,1,$count); | ||
95 | &cmpult($o0,$b0,$t0); # will we borrow? | ||
96 | &add($o0,$cc,$o0); # will we borrow? | ||
97 | &cmpult($o0,$cc,$cc); # will we borrow? | ||
98 | &add($rp,$QWS,$rp); | ||
99 | &st($o0,&QWPw(-1,$rp)); # save | ||
100 | &add($cc,$t0,$cc); # add the borrows | ||
101 | |||
102 | ### | ||
103 | &bgt($count,&label("last_loop")); | ||
104 | &function_end_A($name); | ||
105 | |||
106 | ###################################################### | ||
107 | &set_label("finish"); | ||
108 | &add($count,4,$count); | ||
109 | &bgt($count,&label("last_loop")); | ||
110 | |||
111 | &FR($o0,$t0,$a0,$b0); | ||
112 | &set_label("end"); | ||
113 | &function_end($name); | ||
114 | |||
115 | &fin_pool; | ||
116 | } | ||
117 | |||
118 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/div.pl b/src/lib/libcrypto/bn/asm/alpha/div.pl new file mode 100644 index 0000000000..e9e680897a --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/div.pl | |||
@@ -0,0 +1,144 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | |||
3 | sub bn_div_words | ||
4 | { | ||
5 | local($data)=<<'EOF'; | ||
6 | # | ||
7 | # What follows was taken directly from the C compiler with a few | ||
8 | # hacks to redo the lables. | ||
9 | # | ||
10 | .text | ||
11 | .set noreorder | ||
12 | .set volatile | ||
13 | .align 3 | ||
14 | .globl bn_div_words | ||
15 | .ent bn_div_words | ||
16 | bn_div_words | ||
17 | ldgp $29,0($27) | ||
18 | bn_div_words.ng: | ||
19 | lda $30,-48($30) | ||
20 | .frame $30,48,$26,0 | ||
21 | stq $26,0($30) | ||
22 | stq $9,8($30) | ||
23 | stq $10,16($30) | ||
24 | stq $11,24($30) | ||
25 | stq $12,32($30) | ||
26 | stq $13,40($30) | ||
27 | .mask 0x4003e00,-48 | ||
28 | .prologue 1 | ||
29 | bis $16,$16,$9 | ||
30 | bis $17,$17,$10 | ||
31 | bis $18,$18,$11 | ||
32 | bis $31,$31,$13 | ||
33 | bis $31,2,$12 | ||
34 | bne $11,$9119 | ||
35 | lda $0,-1 | ||
36 | br $31,$9136 | ||
37 | .align 4 | ||
38 | $9119: | ||
39 | bis $11,$11,$16 | ||
40 | jsr $26,BN_num_bits_word | ||
41 | ldgp $29,0($26) | ||
42 | subq $0,64,$1 | ||
43 | beq $1,$9120 | ||
44 | bis $31,1,$1 | ||
45 | sll $1,$0,$1 | ||
46 | cmpule $9,$1,$1 | ||
47 | bne $1,$9120 | ||
48 | # lda $16,_IO_stderr_ | ||
49 | # lda $17,$C32 | ||
50 | # bis $0,$0,$18 | ||
51 | # jsr $26,fprintf | ||
52 | # ldgp $29,0($26) | ||
53 | jsr $26,abort | ||
54 | ldgp $29,0($26) | ||
55 | .align 4 | ||
56 | $9120: | ||
57 | bis $31,64,$3 | ||
58 | cmpult $9,$11,$2 | ||
59 | subq $3,$0,$1 | ||
60 | addl $1,$31,$0 | ||
61 | subq $9,$11,$1 | ||
62 | cmoveq $2,$1,$9 | ||
63 | beq $0,$9122 | ||
64 | zapnot $0,15,$2 | ||
65 | subq $3,$0,$1 | ||
66 | sll $11,$2,$11 | ||
67 | sll $9,$2,$3 | ||
68 | srl $10,$1,$1 | ||
69 | sll $10,$2,$10 | ||
70 | bis $3,$1,$9 | ||
71 | $9122: | ||
72 | srl $11,32,$5 | ||
73 | zapnot $11,15,$6 | ||
74 | lda $7,-1 | ||
75 | .align 5 | ||
76 | $9123: | ||
77 | srl $9,32,$1 | ||
78 | subq $1,$5,$1 | ||
79 | bne $1,$9126 | ||
80 | zapnot $7,15,$27 | ||
81 | br $31,$9127 | ||
82 | .align 4 | ||
83 | $9126: | ||
84 | bis $9,$9,$24 | ||
85 | bis $5,$5,$25 | ||
86 | divqu $24,$25,$27 | ||
87 | $9127: | ||
88 | srl $10,32,$4 | ||
89 | .align 5 | ||
90 | $9128: | ||
91 | mulq $27,$5,$1 | ||
92 | subq $9,$1,$3 | ||
93 | zapnot $3,240,$1 | ||
94 | bne $1,$9129 | ||
95 | mulq $6,$27,$2 | ||
96 | sll $3,32,$1 | ||
97 | addq $1,$4,$1 | ||
98 | cmpule $2,$1,$2 | ||
99 | bne $2,$9129 | ||
100 | subq $27,1,$27 | ||
101 | br $31,$9128 | ||
102 | .align 4 | ||
103 | $9129: | ||
104 | mulq $27,$6,$1 | ||
105 | mulq $27,$5,$4 | ||
106 | srl $1,32,$3 | ||
107 | sll $1,32,$1 | ||
108 | addq $4,$3,$4 | ||
109 | cmpult $10,$1,$2 | ||
110 | subq $10,$1,$10 | ||
111 | addq $2,$4,$2 | ||
112 | cmpult $9,$2,$1 | ||
113 | bis $2,$2,$4 | ||
114 | beq $1,$9134 | ||
115 | addq $9,$11,$9 | ||
116 | subq $27,1,$27 | ||
117 | $9134: | ||
118 | subl $12,1,$12 | ||
119 | subq $9,$4,$9 | ||
120 | beq $12,$9124 | ||
121 | sll $27,32,$13 | ||
122 | sll $9,32,$2 | ||
123 | srl $10,32,$1 | ||
124 | sll $10,32,$10 | ||
125 | bis $2,$1,$9 | ||
126 | br $31,$9123 | ||
127 | .align 4 | ||
128 | $9124: | ||
129 | bis $13,$27,$0 | ||
130 | $9136: | ||
131 | ldq $26,0($30) | ||
132 | ldq $9,8($30) | ||
133 | ldq $10,16($30) | ||
134 | ldq $11,24($30) | ||
135 | ldq $12,32($30) | ||
136 | ldq $13,40($30) | ||
137 | addq $30,48,$30 | ||
138 | ret $31,($26),1 | ||
139 | .end bn_div_words | ||
140 | EOF | ||
141 | &asm_add($data); | ||
142 | } | ||
143 | |||
144 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/mul.pl b/src/lib/libcrypto/bn/asm/alpha/mul.pl new file mode 100644 index 0000000000..76c926566c --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/mul.pl | |||
@@ -0,0 +1,104 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | ### | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0)=&NR(1); &ld($a0,&QWPw(0,$ap)); | ||
26 | |||
27 | &set_label("loop"); | ||
28 | |||
29 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
30 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
31 | |||
32 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
33 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
34 | ### wait 8 | ||
35 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0); | ||
36 | ### wait 8 | ||
37 | &muh($a1,$word,($h1)=&NR(1)); &FR($a1); | ||
38 | &add($l0,$cc,$l0); ### wait 8 | ||
39 | &mul($a1,$word,($l1)=&NR(1)); &FR($a1); | ||
40 | &cmpult($l0,$cc,$cc); ### wait 8 | ||
41 | &muh($a2,$word,($h2)=&NR(1)); &FR($a2); | ||
42 | &add($h0,$cc,$cc); &FR($h0); ### wait 8 | ||
43 | &mul($a2,$word,($l2)=&NR(1)); &FR($a2); | ||
44 | &add($l1,$cc,$l1); ### wait 8 | ||
45 | &st($l0,&QWPw(0,$rp)); &FR($l0); | ||
46 | &cmpult($l1,$cc,$cc); ### wait 8 | ||
47 | &muh($a3,$word,($h3)=&NR(1)); &FR($a3); | ||
48 | &add($h1,$cc,$cc); &FR($h1); | ||
49 | &mul($a3,$word,($l3)=&NR(1)); &FR($a3); | ||
50 | &add($l2,$cc,$l2); | ||
51 | &st($l1,&QWPw(1,$rp)); &FR($l1); | ||
52 | &cmpult($l2,$cc,$cc); | ||
53 | &add($h2,$cc,$cc); &FR($h2); | ||
54 | &sub($count,4,$count); # count-=4 | ||
55 | &st($l2,&QWPw(2,$rp)); &FR($l2); | ||
56 | &add($l3,$cc,$l3); | ||
57 | &cmpult($l3,$cc,$cc); | ||
58 | &add($bp,4*$QWS,$bp); # count+=4 | ||
59 | &add($h3,$cc,$cc); &FR($h3); | ||
60 | &add($ap,4*$QWS,$ap); # count+=4 | ||
61 | &st($l3,&QWPw(3,$rp)); &FR($l3); | ||
62 | &add($rp,4*$QWS,$rp); # count+=4 | ||
63 | ### | ||
64 | &blt($count,&label("finish")); | ||
65 | ($a0)=&NR(1); &ld($a0,&QWPw(0,$ap)); | ||
66 | &br(&label("finish")); | ||
67 | ################################################## | ||
68 | |||
69 | ################################################## | ||
70 | # Do the last 0..3 words | ||
71 | |||
72 | &set_label("last_loop"); | ||
73 | |||
74 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
75 | ### | ||
76 | ### | ||
77 | ### | ||
78 | &muh($a0,$word,($h0)=&NR(1)); | ||
79 | ### Wait 8 for next mul issue | ||
80 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0) | ||
81 | &add($ap,$QWS,$ap); | ||
82 | ### Loose 12 until result is available | ||
83 | &add($rp,$QWS,$rp); | ||
84 | &sub($count,1,$count); | ||
85 | &add($l0,$cc,$l0); | ||
86 | ### | ||
87 | &st($l0,&QWPw(-1,$rp)); &FR($l0); | ||
88 | &cmpult($l0,$cc,$cc); | ||
89 | &add($h0,$cc,$cc); &FR($h0); | ||
90 | &bgt($count,&label("last_loop")); | ||
91 | &function_end_A($name); | ||
92 | |||
93 | ###################################################### | ||
94 | &set_label("finish"); | ||
95 | &add($count,4,$count); | ||
96 | &bgt($count,&label("last_loop")); | ||
97 | |||
98 | &set_label("end"); | ||
99 | &function_end($name); | ||
100 | |||
101 | &fin_pool; | ||
102 | } | ||
103 | |||
104 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/mul_add.pl b/src/lib/libcrypto/bn/asm/alpha/mul_add.pl new file mode 100644 index 0000000000..0d6df69bc4 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/mul_add.pl | |||
@@ -0,0 +1,123 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | ### | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); | ||
26 | |||
27 | $a=<<'EOF'; | ||
28 | ########################################################## | ||
29 | &set_label("loop"); | ||
30 | |||
31 | &ld(($r0)=&NR(1),&QWPw(0,$rp)); | ||
32 | &ld(($a1)=&NR(1),&QWPw(1,$ap)); | ||
33 | &muh($a0,$word,($h0)=&NR(1)); | ||
34 | &ld(($r1)=&NR(1),&QWPw(1,$rp)); | ||
35 | &ld(($a2)=&NR(1),&QWPw(2,$ap)); | ||
36 | ### | ||
37 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0); | ||
38 | &ld(($r2)=&NR(1),&QWPw(2,$rp)); | ||
39 | &muh($a1,$word,($h1)=&NR(1)); | ||
40 | &ld(($a3)=&NR(1),&QWPw(3,$ap)); | ||
41 | &mul($a1,$word,($l1)=&NR(1)); &FR($a1); | ||
42 | &ld(($r3)=&NR(1),&QWPw(3,$rp)); | ||
43 | &add($r0,$l0,$r0); | ||
44 | &add($r1,$l1,$r1); | ||
45 | &cmpult($r0,$l0,($t0)=&NR(1)); &FR($l0); | ||
46 | &cmpult($r1,$l1,($t1)=&NR(1)); &FR($l1); | ||
47 | &muh($a2,$word,($h2)=&NR(1)); | ||
48 | &add($r0,$cc,$r0); | ||
49 | &add($h0,$t0,$h0); &FR($t0); | ||
50 | &cmpult($r0,$cc,$cc); | ||
51 | &add($h1,$t1,$h1); &FR($t1); | ||
52 | &add($h0,$cc,$cc); &FR($h0); | ||
53 | &mul($a2,$word,($l2)=&NR(1)); &FR($a2); | ||
54 | &add($r1,$cc,$r1); | ||
55 | &cmpult($r1,$cc,$cc); | ||
56 | &add($r2,$l2,$r2); | ||
57 | &add($h1,$cc,$cc); &FR($h1); | ||
58 | &cmpult($r2,$l2,($t2)=&NR(1)); &FR($l2); | ||
59 | &muh($a3,$word,($h3)=&NR(1)); | ||
60 | &add($r2,$cc,$r2); | ||
61 | &st($r0,&QWPw(0,$rp)); &FR($r0); | ||
62 | &add($h2,$t2,$h2); &FR($t2); | ||
63 | &st($r1,&QWPw(1,$rp)); &FR($r1); | ||
64 | &cmpult($r2,$cc,$cc); | ||
65 | &mul($a3,$word,($l3)=&NR(1)); &FR($a3); | ||
66 | &add($h2,$cc,$cc); &FR($h2); | ||
67 | &st($r2,&QWPw(2,$rp)); &FR($r2); | ||
68 | &sub($count,4,$count); # count-=4 | ||
69 | &add($rp,4*$QWS,$rp); # count+=4 | ||
70 | &add($r3,$l3,$r3); | ||
71 | &add($ap,4*$QWS,$ap); # count+=4 | ||
72 | &cmpult($r3,$l3,($t3)=&NR(1)); &FR($l3); | ||
73 | &add($r3,$cc,$r3); | ||
74 | &add($h3,$t3,$h3); &FR($t3); | ||
75 | &cmpult($r3,$cc,$cc); | ||
76 | &st($r3,&QWPw(-1,$rp)); &FR($r3); | ||
77 | &add($h3,$cc,$cc); &FR($h3); | ||
78 | |||
79 | ### | ||
80 | &blt($count,&label("finish")); | ||
81 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); | ||
82 | &br(&label("loop")); | ||
83 | EOF | ||
84 | ################################################## | ||
85 | # Do the last 0..3 words | ||
86 | |||
87 | &set_label("last_loop"); | ||
88 | |||
89 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
90 | &ld(($r0)=&NR(1),&QWPw(0,$rp)); # get b | ||
91 | ### | ||
92 | ### | ||
93 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
94 | ### wait 8 | ||
95 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0); | ||
96 | &add($rp,$QWS,$rp); | ||
97 | &add($ap,$QWS,$ap); | ||
98 | &sub($count,1,$count); | ||
99 | ### wait 3 until l0 is available | ||
100 | &add($r0,$l0,$r0); | ||
101 | ### | ||
102 | &cmpult($r0,$l0,($t0)=&NR(1)); &FR($l0); | ||
103 | &add($r0,$cc,$r0); | ||
104 | &add($h0,$t0,$h0); &FR($t0); | ||
105 | &cmpult($r0,$cc,$cc); | ||
106 | &add($h0,$cc,$cc); &FR($h0); | ||
107 | |||
108 | &st($r0,&QWPw(-1,$rp)); &FR($r0); | ||
109 | &bgt($count,&label("last_loop")); | ||
110 | &function_end_A($name); | ||
111 | |||
112 | ###################################################### | ||
113 | &set_label("finish"); | ||
114 | &add($count,4,$count); | ||
115 | &bgt($count,&label("last_loop")); | ||
116 | |||
117 | &set_label("end"); | ||
118 | &function_end($name); | ||
119 | |||
120 | &fin_pool; | ||
121 | } | ||
122 | |||
123 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/mul_c4.pl b/src/lib/libcrypto/bn/asm/alpha/mul_c4.pl new file mode 100644 index 0000000000..9cc876ded4 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/mul_c4.pl | |||
@@ -0,0 +1,215 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | # upto | ||
5 | |||
6 | sub mul_add_c | ||
7 | { | ||
8 | local($a,$b,$c0,$c1,$c2)=@_; | ||
9 | local($l1,$h1,$t1,$t2); | ||
10 | |||
11 | &mul($a,$b,($l1)=&NR(1)); | ||
12 | &muh($a,$b,($h1)=&NR(1)); | ||
13 | &add($c0,$l1,$c0); | ||
14 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
15 | &add($t1,$h1,$h1); &FR($t1); | ||
16 | &add($c1,$h1,$c1); | ||
17 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
18 | &add($c2,$t2,$c2); &FR($t2); | ||
19 | } | ||
20 | |||
21 | sub bn_mul_comba4 | ||
22 | { | ||
23 | local($name)=@_; | ||
24 | local(@a,@b,$r,$c0,$c1,$c2); | ||
25 | |||
26 | $cnt=1; | ||
27 | &init_pool(3); | ||
28 | |||
29 | $rp=&wparam(0); | ||
30 | $ap=&wparam(1); | ||
31 | $bp=&wparam(2); | ||
32 | |||
33 | &function_begin($name,""); | ||
34 | |||
35 | &comment(""); | ||
36 | |||
37 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
38 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
39 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
40 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
41 | &mul($a[0],$b[0],($r00)=&NR(1)); | ||
42 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
43 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
44 | &muh($a[0],$b[0],($r01)=&NR(1)); | ||
45 | &FR($ap); &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
46 | &FR($bp); &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
47 | &mul($a[0],$b[1],($r02)=&NR(1)); | ||
48 | |||
49 | ($R,$H1,$H2)=&NR(3); | ||
50 | |||
51 | &st($r00,&QWPw(0,$rp)); &FR($r00); | ||
52 | |||
53 | &mov("zero",$R); | ||
54 | &mul($a[1],$b[0],($r03)=&NR(1)); | ||
55 | |||
56 | &mov("zero",$H1); | ||
57 | &mov("zero",$H0); | ||
58 | &add($R,$r01,$R); | ||
59 | &muh($a[0],$b[1],($r04)=&NR(1)); | ||
60 | &cmpult($R,$r01,($t01)=&NR(1)); &FR($r01); | ||
61 | &add($R,$r02,$R); | ||
62 | &add($H1,$t01,$H1) &FR($t01); | ||
63 | &muh($a[1],$b[0],($r05)=&NR(1)); | ||
64 | &cmpult($R,$r02,($t02)=&NR(1)); &FR($r02); | ||
65 | &add($R,$r03,$R); | ||
66 | &add($H2,$t02,$H2) &FR($t02); | ||
67 | &mul($a[0],$b[2],($r06)=&NR(1)); | ||
68 | &cmpult($R,$r03,($t03)=&NR(1)); &FR($r03); | ||
69 | &add($H1,$t03,$H1) &FR($t03); | ||
70 | &st($R,&QWPw(1,$rp)); | ||
71 | &add($H1,$H2,$R); | ||
72 | |||
73 | &mov("zero",$H1); | ||
74 | &add($R,$r04,$R); | ||
75 | &mov("zero",$H2); | ||
76 | &mul($a[1],$b[1],($r07)=&NR(1)); | ||
77 | &cmpult($R,$r04,($t04)=&NR(1)); &FR($r04); | ||
78 | &add($R,$r05,$R); | ||
79 | &add($H1,$t04,$H1) &FR($t04); | ||
80 | &mul($a[2],$b[0],($r08)=&NR(1)); | ||
81 | &cmpult($R,$r05,($t05)=&NR(1)); &FR($r05); | ||
82 | &add($R,$r01,$R); | ||
83 | &add($H2,$t05,$H2) &FR($t05); | ||
84 | &muh($a[0],$b[2],($r09)=&NR(1)); | ||
85 | &cmpult($R,$r06,($t06)=&NR(1)); &FR($r06); | ||
86 | &add($R,$r07,$R); | ||
87 | &add($H1,$t06,$H1) &FR($t06); | ||
88 | &muh($a[1],$b[1],($r10)=&NR(1)); | ||
89 | &cmpult($R,$r07,($t07)=&NR(1)); &FR($r07); | ||
90 | &add($R,$r08,$R); | ||
91 | &add($H2,$t07,$H2) &FR($t07); | ||
92 | &muh($a[2],$b[0],($r11)=&NR(1)); | ||
93 | &cmpult($R,$r08,($t08)=&NR(1)); &FR($r08); | ||
94 | &add($H1,$t08,$H1) &FR($t08); | ||
95 | &st($R,&QWPw(2,$rp)); | ||
96 | &add($H1,$H2,$R); | ||
97 | |||
98 | &mov("zero",$H1); | ||
99 | &add($R,$r09,$R); | ||
100 | &mov("zero",$H2); | ||
101 | &mul($a[0],$b[3],($r12)=&NR(1)); | ||
102 | &cmpult($R,$r09,($t09)=&NR(1)); &FR($r09); | ||
103 | &add($R,$r10,$R); | ||
104 | &add($H1,$t09,$H1) &FR($t09); | ||
105 | &mul($a[1],$b[2],($r13)=&NR(1)); | ||
106 | &cmpult($R,$r10,($t10)=&NR(1)); &FR($r10); | ||
107 | &add($R,$r11,$R); | ||
108 | &add($H1,$t10,$H1) &FR($t10); | ||
109 | &mul($a[2],$b[1],($r14)=&NR(1)); | ||
110 | &cmpult($R,$r11,($t11)=&NR(1)); &FR($r11); | ||
111 | &add($R,$r12,$R); | ||
112 | &add($H1,$t11,$H1) &FR($t11); | ||
113 | &mul($a[3],$b[0],($r15)=&NR(1)); | ||
114 | &cmpult($R,$r12,($t12)=&NR(1)); &FR($r12); | ||
115 | &add($R,$r13,$R); | ||
116 | &add($H1,$t12,$H1) &FR($t12); | ||
117 | &muh($a[0],$b[3],($r16)=&NR(1)); | ||
118 | &cmpult($R,$r13,($t13)=&NR(1)); &FR($r13); | ||
119 | &add($R,$r14,$R); | ||
120 | &add($H1,$t13,$H1) &FR($t13); | ||
121 | &muh($a[1],$b[2],($r17)=&NR(1)); | ||
122 | &cmpult($R,$r14,($t14)=&NR(1)); &FR($r14); | ||
123 | &add($R,$r15,$R); | ||
124 | &add($H1,$t14,$H1) &FR($t14); | ||
125 | &muh($a[2],$b[1],($r18)=&NR(1)); | ||
126 | &cmpult($R,$r15,($t15)=&NR(1)); &FR($r15); | ||
127 | &add($H1,$t15,$H1) &FR($t15); | ||
128 | &st($R,&QWPw(3,$rp)); | ||
129 | &add($H1,$H2,$R); | ||
130 | |||
131 | &mov("zero",$H1); | ||
132 | &add($R,$r16,$R); | ||
133 | &mov("zero",$H2); | ||
134 | &muh($a[3],$b[0],($r19)=&NR(1)); | ||
135 | &cmpult($R,$r16,($t16)=&NR(1)); &FR($r16); | ||
136 | &add($R,$r17,$R); | ||
137 | &add($H1,$t16,$H1) &FR($t16); | ||
138 | &mul($a[1],$b[3],($r20)=&NR(1)); | ||
139 | &cmpult($R,$r17,($t17)=&NR(1)); &FR($r17); | ||
140 | &add($R,$r18,$R); | ||
141 | &add($H1,$t17,$H1) &FR($t17); | ||
142 | &mul($a[2],$b[2],($r21)=&NR(1)); | ||
143 | &cmpult($R,$r18,($t18)=&NR(1)); &FR($r18); | ||
144 | &add($R,$r19,$R); | ||
145 | &add($H1,$t18,$H1) &FR($t18); | ||
146 | &mul($a[3],$b[1],($r22)=&NR(1)); | ||
147 | &cmpult($R,$r19,($t19)=&NR(1)); &FR($r19); | ||
148 | &add($R,$r20,$R); | ||
149 | &add($H1,$t19,$H1) &FR($t19); | ||
150 | &muh($a[1],$b[3],($r23)=&NR(1)); | ||
151 | &cmpult($R,$r20,($t20)=&NR(1)); &FR($r20); | ||
152 | &add($R,$r21,$R); | ||
153 | &add($H1,$t20,$H1) &FR($t20); | ||
154 | &muh($a[2],$b[2],($r24)=&NR(1)); | ||
155 | &cmpult($R,$r21,($t21)=&NR(1)); &FR($r21); | ||
156 | &add($R,$r22,$R); | ||
157 | &add($H1,$t21,$H1) &FR($t21); | ||
158 | &muh($a[3],$b[1],($r25)=&NR(1)); | ||
159 | &cmpult($R,$r22,($t22)=&NR(1)); &FR($r22); | ||
160 | &add($H1,$t22,$H1) &FR($t22); | ||
161 | &st($R,&QWPw(4,$rp)); | ||
162 | &add($H1,$H2,$R); | ||
163 | |||
164 | &mov("zero",$H1); | ||
165 | &add($R,$r23,$R); | ||
166 | &mov("zero",$H2); | ||
167 | &mul($a[2],$b[3],($r26)=&NR(1)); | ||
168 | &cmpult($R,$r23,($t23)=&NR(1)); &FR($r23); | ||
169 | &add($R,$r24,$R); | ||
170 | &add($H1,$t23,$H1) &FR($t23); | ||
171 | &mul($a[3],$b[2],($r27)=&NR(1)); | ||
172 | &cmpult($R,$r24,($t24)=&NR(1)); &FR($r24); | ||
173 | &add($R,$r25,$R); | ||
174 | &add($H1,$t24,$H1) &FR($t24); | ||
175 | &muh($a[2],$b[3],($r28)=&NR(1)); | ||
176 | &cmpult($R,$r25,($t25)=&NR(1)); &FR($r25); | ||
177 | &add($R,$r26,$R); | ||
178 | &add($H1,$t25,$H1) &FR($t25); | ||
179 | &muh($a[3],$b[2],($r29)=&NR(1)); | ||
180 | &cmpult($R,$r26,($t26)=&NR(1)); &FR($r26); | ||
181 | &add($R,$r27,$R); | ||
182 | &add($H1,$t26,$H1) &FR($t26); | ||
183 | &mul($a[3],$b[3],($r30)=&NR(1)); | ||
184 | &cmpult($R,$r27,($t27)=&NR(1)); &FR($r27); | ||
185 | &add($H1,$t27,$H1) &FR($t27); | ||
186 | &st($R,&QWPw(5,$rp)); | ||
187 | &add($H1,$H2,$R); | ||
188 | |||
189 | &mov("zero",$H1); | ||
190 | &add($R,$r28,$R); | ||
191 | &mov("zero",$H2); | ||
192 | &muh($a[3],$b[3],($r31)=&NR(1)); | ||
193 | &cmpult($R,$r28,($t28)=&NR(1)); &FR($r28); | ||
194 | &add($R,$r29,$R); | ||
195 | &add($H1,$t28,$H1) &FR($t28); | ||
196 | ############ | ||
197 | &cmpult($R,$r29,($t29)=&NR(1)); &FR($r29); | ||
198 | &add($R,$r30,$R); | ||
199 | &add($H1,$t29,$H1) &FR($t29); | ||
200 | ############ | ||
201 | &cmpult($R,$r30,($t30)=&NR(1)); &FR($r30); | ||
202 | &add($H1,$t30,$H1) &FR($t30); | ||
203 | &st($R,&QWPw(6,$rp)); | ||
204 | &add($H1,$H2,$R); | ||
205 | |||
206 | &add($R,$r31,$R); &FR($r31); | ||
207 | &st($R,&QWPw(7,$rp)); | ||
208 | |||
209 | &FR($R,$H1,$H2); | ||
210 | &function_end($name); | ||
211 | |||
212 | &fin_pool; | ||
213 | } | ||
214 | |||
215 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/mul_c4.works.pl b/src/lib/libcrypto/bn/asm/alpha/mul_c4.works.pl new file mode 100644 index 0000000000..79d86dd25c --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/mul_c4.works.pl | |||
@@ -0,0 +1,98 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$b,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | print STDERR "count=$cnt\n"; $cnt++; | ||
10 | &mul($a,$b,($l1)=&NR(1)); | ||
11 | &muh($a,$b,($h1)=&NR(1)); | ||
12 | &add($c0,$l1,$c0); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &add($t1,$h1,$h1); &FR($t1); | ||
15 | &add($c1,$h1,$c1); | ||
16 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
17 | &add($c2,$t2,$c2); &FR($t2); | ||
18 | } | ||
19 | |||
20 | sub bn_mul_comba4 | ||
21 | { | ||
22 | local($name)=@_; | ||
23 | local(@a,@b,$r,$c0,$c1,$c2); | ||
24 | |||
25 | $cnt=1; | ||
26 | &init_pool(3); | ||
27 | |||
28 | $rp=&wparam(0); | ||
29 | $ap=&wparam(1); | ||
30 | $bp=&wparam(2); | ||
31 | |||
32 | &function_begin($name,""); | ||
33 | |||
34 | &comment(""); | ||
35 | |||
36 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
37 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
38 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
39 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
40 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
41 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
42 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
43 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); &FR($bp); | ||
44 | |||
45 | ($c0,$c1,$c2)=&NR(3); | ||
46 | &mov("zero",$c2); | ||
47 | &mul($a[0],$b[0],$c0); | ||
48 | &muh($a[0],$b[0],$c1); | ||
49 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
50 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
51 | &mov("zero",$c2); | ||
52 | |||
53 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
54 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
55 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
56 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
57 | &mov("zero",$c2); | ||
58 | |||
59 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
60 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
61 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
62 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
63 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
64 | &mov("zero",$c2); | ||
65 | |||
66 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); &FR($a[0]); | ||
67 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
68 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
69 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
70 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
71 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
72 | &mov("zero",$c2); | ||
73 | |||
74 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); &FR($a[1]); | ||
75 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
76 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
77 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
78 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
79 | &mov("zero",$c2); | ||
80 | |||
81 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); &FR($a[2]); | ||
82 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
83 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
84 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
85 | &mov("zero",$c2); | ||
86 | |||
87 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); &FR($a[3],$b[3]); | ||
88 | &st($c0,&QWPw(6,$rp)); | ||
89 | &st($c1,&QWPw(7,$rp)); | ||
90 | |||
91 | &FR($c0,$c1,$c2); | ||
92 | |||
93 | &function_end($name); | ||
94 | |||
95 | &fin_pool; | ||
96 | } | ||
97 | |||
98 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/mul_c8.pl b/src/lib/libcrypto/bn/asm/alpha/mul_c8.pl new file mode 100644 index 0000000000..525ca7494b --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/mul_c8.pl | |||
@@ -0,0 +1,177 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(3); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | |||
20 | &stack_push(2); | ||
21 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
22 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
23 | &st($reg_s0,&swtmp(0)); &FR($reg_s0); | ||
24 | &st($reg_s1,&swtmp(1)); &FR($reg_s1); | ||
25 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
26 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
27 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
28 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
29 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
30 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
31 | &ld(($a[4])=&NR(1),&QWPw(1,$ap)); | ||
32 | &ld(($b[4])=&NR(1),&QWPw(1,$bp)); | ||
33 | &ld(($a[5])=&NR(1),&QWPw(1,$ap)); | ||
34 | &ld(($b[5])=&NR(1),&QWPw(1,$bp)); | ||
35 | &ld(($a[6])=&NR(1),&QWPw(1,$ap)); | ||
36 | &ld(($b[6])=&NR(1),&QWPw(1,$bp)); | ||
37 | &ld(($a[7])=&NR(1),&QWPw(1,$ap)); &FR($ap); | ||
38 | &ld(($b[7])=&NR(1),&QWPw(1,$bp)); &FR($bp); | ||
39 | |||
40 | ($c0,$c1,$c2)=&NR(3); | ||
41 | &mov("zero",$c2); | ||
42 | &mul($a[0],$b[0],$c0); | ||
43 | &muh($a[0],$b[0],$c1); | ||
44 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR(1); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
49 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR(1); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
55 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
56 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR(1); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); | ||
62 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
63 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
64 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); | ||
65 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR(1); | ||
66 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
67 | &mov("zero",$c2); | ||
68 | |||
69 | &mul_add_c($a[0],$b[4],$c0,$c1,$c2); | ||
70 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); | ||
71 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
72 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); | ||
73 | &mul_add_c($a[4],$b[0],$c0,$c1,$c2); | ||
74 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR(1); | ||
75 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
76 | &mov("zero",$c2); | ||
77 | |||
78 | &mul_add_c($a[0],$b[5],$c0,$c1,$c2); | ||
79 | &mul_add_c($a[1],$b[4],$c0,$c1,$c2); | ||
80 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); | ||
81 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); | ||
82 | &mul_add_c($a[4],$b[1],$c0,$c1,$c2); | ||
83 | &mul_add_c($a[5],$b[0],$c0,$c1,$c2); | ||
84 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR(1); | ||
85 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
86 | &mov("zero",$c2); | ||
87 | |||
88 | &mul_add_c($a[0],$b[6],$c0,$c1,$c2); | ||
89 | &mul_add_c($a[1],$b[5],$c0,$c1,$c2); | ||
90 | &mul_add_c($a[2],$b[4],$c0,$c1,$c2); | ||
91 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); | ||
92 | &mul_add_c($a[4],$b[2],$c0,$c1,$c2); | ||
93 | &mul_add_c($a[5],$b[1],$c0,$c1,$c2); | ||
94 | &mul_add_c($a[6],$b[0],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(6,$rp)); &FR($c0); ($c0)=&NR(1); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &mul_add_c($a[0],$b[7],$c0,$c1,$c2); &FR($a[0]); | ||
100 | &mul_add_c($a[1],$b[6],$c0,$c1,$c2); | ||
101 | &mul_add_c($a[2],$b[5],$c0,$c1,$c2); | ||
102 | &mul_add_c($a[3],$b[4],$c0,$c1,$c2); | ||
103 | &mul_add_c($a[4],$b[3],$c0,$c1,$c2); | ||
104 | &mul_add_c($a[5],$b[2],$c0,$c1,$c2); | ||
105 | &mul_add_c($a[6],$b[1],$c0,$c1,$c2); | ||
106 | &mul_add_c($a[7],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
107 | &st($c0,&QWPw(7,$rp)); &FR($c0); ($c0)=&NR(1); | ||
108 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
109 | &mov("zero",$c2); | ||
110 | |||
111 | &mul_add_c($a[1],$b[7],$c0,$c1,$c2); &FR($a[1]); | ||
112 | &mul_add_c($a[2],$b[6],$c0,$c1,$c2); | ||
113 | &mul_add_c($a[3],$b[5],$c0,$c1,$c2); | ||
114 | &mul_add_c($a[4],$b[4],$c0,$c1,$c2); | ||
115 | &mul_add_c($a[5],$b[3],$c0,$c1,$c2); | ||
116 | &mul_add_c($a[6],$b[2],$c0,$c1,$c2); | ||
117 | &mul_add_c($a[7],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
118 | &st($c0,&QWPw(8,$rp)); &FR($c0); ($c0)=&NR(1); | ||
119 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
120 | &mov("zero",$c2); | ||
121 | |||
122 | &mul_add_c($a[2],$b[7],$c0,$c1,$c2); &FR($a[2]); | ||
123 | &mul_add_c($a[3],$b[6],$c0,$c1,$c2); | ||
124 | &mul_add_c($a[4],$b[5],$c0,$c1,$c2); | ||
125 | &mul_add_c($a[5],$b[4],$c0,$c1,$c2); | ||
126 | &mul_add_c($a[6],$b[3],$c0,$c1,$c2); | ||
127 | &mul_add_c($a[7],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
128 | &st($c0,&QWPw(9,$rp)); &FR($c0); ($c0)=&NR(1); | ||
129 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
130 | &mov("zero",$c2); | ||
131 | |||
132 | &mul_add_c($a[3],$b[7],$c0,$c1,$c2); &FR($a[3]); | ||
133 | &mul_add_c($a[4],$b[6],$c0,$c1,$c2); | ||
134 | &mul_add_c($a[5],$b[5],$c0,$c1,$c2); | ||
135 | &mul_add_c($a[6],$b[4],$c0,$c1,$c2); | ||
136 | &mul_add_c($a[7],$b[3],$c0,$c1,$c2); &FR($b[3]); | ||
137 | &st($c0,&QWPw(10,$rp)); &FR($c0); ($c0)=&NR(1); | ||
138 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
139 | &mov("zero",$c2); | ||
140 | |||
141 | &mul_add_c($a[4],$b[7],$c0,$c1,$c2); &FR($a[4]); | ||
142 | &mul_add_c($a[5],$b[6],$c0,$c1,$c2); | ||
143 | &mul_add_c($a[6],$b[5],$c0,$c1,$c2); | ||
144 | &mul_add_c($a[7],$b[4],$c0,$c1,$c2); &FR($b[4]); | ||
145 | &st($c0,&QWPw(11,$rp)); &FR($c0); ($c0)=&NR(1); | ||
146 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
147 | &mov("zero",$c2); | ||
148 | |||
149 | &mul_add_c($a[5],$b[7],$c0,$c1,$c2); &FR($a[5]); | ||
150 | &mul_add_c($a[6],$b[6],$c0,$c1,$c2); | ||
151 | &mul_add_c($a[7],$b[5],$c0,$c1,$c2); &FR($b[5]); | ||
152 | &st($c0,&QWPw(12,$rp)); &FR($c0); ($c0)=&NR(1); | ||
153 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
154 | &mov("zero",$c2); | ||
155 | |||
156 | &mul_add_c($a[6],$b[7],$c0,$c1,$c2); &FR($a[6]); | ||
157 | &mul_add_c($a[7],$b[6],$c0,$c1,$c2); &FR($b[6]); | ||
158 | &st($c0,&QWPw(13,$rp)); &FR($c0); ($c0)=&NR(1); | ||
159 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
160 | &mov("zero",$c2); | ||
161 | |||
162 | &mul_add_c($a[7],$b[7],$c0,$c1,$c2); &FR($a[7],$b[7]); | ||
163 | &st($c0,&QWPw(14,$rp)); | ||
164 | &st($c1,&QWPw(15,$rp)); | ||
165 | |||
166 | &FR($c0,$c1,$c2); | ||
167 | |||
168 | &ld($reg_s0,&swtmp(0)); | ||
169 | &ld($reg_s1,&swtmp(1)); | ||
170 | &stack_pop(2); | ||
171 | |||
172 | &function_end($name); | ||
173 | |||
174 | &fin_pool; | ||
175 | } | ||
176 | |||
177 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/sqr.pl b/src/lib/libcrypto/bn/asm/alpha/sqr.pl new file mode 100644 index 0000000000..a55b696906 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/sqr.pl | |||
@@ -0,0 +1,113 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(3); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | &sub($count,4,$count); | ||
20 | &mov("zero",$cc); | ||
21 | &br(&label("finish")); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$r0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($r0,&QWPw(0,$rp)); | ||
27 | |||
28 | $a=<<'EOF'; | ||
29 | ########################################################## | ||
30 | &set_label("loop"); | ||
31 | |||
32 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
33 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
34 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
35 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
36 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
37 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
38 | |||
39 | ($o0,$t0)=&NR(2); | ||
40 | &add($a0,$b0,$o0); | ||
41 | &cmpult($o0,$b0,$t0); | ||
42 | &add($o0,$cc,$o0); | ||
43 | &cmpult($o0,$cc,$cc); | ||
44 | &add($cc,$t0,$cc); &FR($t0); | ||
45 | |||
46 | ($t1,$o1)=&NR(2); | ||
47 | |||
48 | &add($a1,$b1,$o1); &FR($a1); | ||
49 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
50 | &add($o1,$cc,$o1); | ||
51 | &cmpult($o1,$cc,$cc); | ||
52 | &add($cc,$t1,$cc); &FR($t1); | ||
53 | |||
54 | ($t2,$o2)=&NR(2); | ||
55 | |||
56 | &add($a2,$b2,$o2); &FR($a2); | ||
57 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
58 | &add($o2,$cc,$o2); | ||
59 | &cmpult($o2,$cc,$cc); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &add($a3,$b3,$o3); &FR($a3); | ||
65 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
66 | &add($o3,$cc,$o3); | ||
67 | &cmpult($o3,$cc,$cc); | ||
68 | &add($cc,$t3,$cc); &FR($t3); | ||
69 | |||
70 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
71 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
72 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
73 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
74 | |||
75 | &sub($count,4,$count); # count-=4 | ||
76 | &add($ap,4*$QWS,$ap); # count+=4 | ||
77 | &add($bp,4*$QWS,$bp); # count+=4 | ||
78 | &add($rp,4*$QWS,$rp); # count+=4 | ||
79 | |||
80 | &blt($count,&label("finish")); | ||
81 | &ld($a0,&QWPw(0,$ap)); | ||
82 | &ld($b0,&QWPw(0,$bp)); | ||
83 | &br(&label("loop")); | ||
84 | EOF | ||
85 | ################################################## | ||
86 | # Do the last 0..3 words | ||
87 | |||
88 | &set_label("last_loop"); | ||
89 | |||
90 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
91 | &mul($a0,$a0,($l0)=&NR(1)); | ||
92 | &add($ap,$QWS,$ap); | ||
93 | &add($rp,2*$QWS,$rp); | ||
94 | &sub($count,1,$count); | ||
95 | &muh($a0,$a0,($h0)=&NR(1)); &FR($a0); | ||
96 | &st($l0,&QWPw(-2,$rp)); &FR($l0); | ||
97 | &st($h0,&QWPw(-1,$rp)); &FR($h0); | ||
98 | |||
99 | &bgt($count,&label("last_loop")); | ||
100 | &function_end_A($name); | ||
101 | |||
102 | ###################################################### | ||
103 | &set_label("finish"); | ||
104 | &add($count,4,$count); | ||
105 | &bgt($count,&label("last_loop")); | ||
106 | |||
107 | &set_label("end"); | ||
108 | &function_end($name); | ||
109 | |||
110 | &fin_pool; | ||
111 | } | ||
112 | |||
113 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/sqr_c4.pl b/src/lib/libcrypto/bn/asm/alpha/sqr_c4.pl new file mode 100644 index 0000000000..bf33f5b503 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/sqr_c4.pl | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub sqr_add_c | ||
5 | { | ||
6 | local($a,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | &mul($a,$a,($l1)=&NR(1)); | ||
10 | &muh($a,$a,($h1)=&NR(1)); | ||
11 | &add($c0,$l1,$c0); | ||
12 | &add($c1,$h1,$c1); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
15 | &add($c1,$t1,$c1); &FR($t1); | ||
16 | &add($c2,$t2,$c2); &FR($t2); | ||
17 | } | ||
18 | |||
19 | sub sqr_add_c2 | ||
20 | { | ||
21 | local($a,$b,$c0,$c1,$c2)=@_; | ||
22 | local($l1,$h1,$t1,$t2); | ||
23 | |||
24 | &mul($a,$b,($l1)=&NR(1)); | ||
25 | &muh($a,$b,($h1)=&NR(1)); | ||
26 | &cmplt($l1,"zero",($lc1)=&NR(1)); | ||
27 | &cmplt($h1,"zero",($hc1)=&NR(1)); | ||
28 | &add($l1,$l1,$l1); | ||
29 | &add($h1,$h1,$h1); | ||
30 | &add($h1,$lc1,$h1); &FR($lc1); | ||
31 | &add($c2,$hc1,$c2); &FR($hc1); | ||
32 | |||
33 | &add($c0,$l1,$c0); | ||
34 | &add($c1,$h1,$c1); | ||
35 | &cmpult($c0,$l1,($lc1)=&NR(1)); &FR($l1); | ||
36 | &cmpult($c1,$h1,($hc1)=&NR(1)); &FR($h1); | ||
37 | |||
38 | &add($c1,$lc1,$c1); &FR($lc1); | ||
39 | &add($c2,$hc1,$c2); &FR($hc1); | ||
40 | } | ||
41 | |||
42 | |||
43 | sub bn_sqr_comba4 | ||
44 | { | ||
45 | local($name)=@_; | ||
46 | local(@a,@b,$r,$c0,$c1,$c2); | ||
47 | |||
48 | $cnt=1; | ||
49 | &init_pool(2); | ||
50 | |||
51 | $rp=&wparam(0); | ||
52 | $ap=&wparam(1); | ||
53 | |||
54 | &function_begin($name,""); | ||
55 | |||
56 | &comment(""); | ||
57 | |||
58 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
59 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
60 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
61 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
62 | |||
63 | ($c0,$c1,$c2)=&NR(3); | ||
64 | |||
65 | &mov("zero",$c2); | ||
66 | &mul($a[0],$a[0],$c0); | ||
67 | &muh($a[0],$a[0],$c1); | ||
68 | &st($c0,&QWPw(0,$rp)); | ||
69 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
70 | &mov("zero",$c2); | ||
71 | |||
72 | &sqr_add_c2($a[0],$a[1],$c0,$c1,$c2); | ||
73 | &st($c0,&QWPw(1,$rp)); | ||
74 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
75 | &mov("zero",$c2); | ||
76 | |||
77 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
79 | &st($c0,&QWPw(2,$rp)); | ||
80 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
81 | &mov("zero",$c2); | ||
82 | |||
83 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
84 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
85 | &st($c0,&QWPw(3,$rp)); | ||
86 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
87 | &mov("zero",$c2); | ||
88 | |||
89 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
90 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
91 | &st($c0,&QWPw(4,$rp)); | ||
92 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
93 | &mov("zero",$c2); | ||
94 | |||
95 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
96 | &st($c0,&QWPw(5,$rp)); | ||
97 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
98 | &mov("zero",$c2); | ||
99 | |||
100 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
101 | &st($c0,&QWPw(6,$rp)); | ||
102 | &st($c1,&QWPw(7,$rp)); | ||
103 | |||
104 | &function_end($name); | ||
105 | |||
106 | &fin_pool; | ||
107 | } | ||
108 | |||
109 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/sqr_c8.pl b/src/lib/libcrypto/bn/asm/alpha/sqr_c8.pl new file mode 100644 index 0000000000..b4afe085f1 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/sqr_c8.pl | |||
@@ -0,0 +1,132 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(2); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | |||
15 | &function_begin($name,""); | ||
16 | |||
17 | &comment(""); | ||
18 | |||
19 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
20 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
21 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
22 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
23 | &ld(($a[4])=&NR(1),&QWPw(4,$ap)); | ||
24 | &ld(($a[5])=&NR(1),&QWPw(5,$ap)); | ||
25 | &ld(($a[6])=&NR(1),&QWPw(6,$ap)); | ||
26 | &ld(($a[7])=&NR(1),&QWPw(7,$ap)); &FR($ap); | ||
27 | |||
28 | ($c0,$c1,$c2)=&NR(3); | ||
29 | |||
30 | &mov("zero",$c2); | ||
31 | &mul($a[0],$a[0],$c0); | ||
32 | &muh($a[0],$a[0],$c1); | ||
33 | &st($c0,&QWPw(0,$rp)); | ||
34 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
35 | &mov("zero",$c2); | ||
36 | |||
37 | &sqr_add_c2($a[1],$a[0],$c0,$c1,$c2); | ||
38 | &st($c0,&QWPw(1,$rp)); | ||
39 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
40 | &mov("zero",$c2); | ||
41 | |||
42 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
43 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
44 | &st($c0,&QWPw(2,$rp)); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
49 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(3,$rp)); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
55 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
56 | &sqr_add_c2($a[4],$a[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(4,$rp)); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
62 | &sqr_add_c2($a[4],$a[1],$c0,$c1,$c2); | ||
63 | &sqr_add_c2($a[5],$a[0],$c0,$c1,$c2); | ||
64 | &st($c0,&QWPw(5,$rp)); | ||
65 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
66 | &mov("zero",$c2); | ||
67 | |||
68 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
69 | &sqr_add_c2($a[4],$a[2],$c0,$c1,$c2); | ||
70 | &sqr_add_c2($a[5],$a[1],$c0,$c1,$c2); | ||
71 | &sqr_add_c2($a[6],$a[0],$c0,$c1,$c2); | ||
72 | &st($c0,&QWPw(6,$rp)); | ||
73 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
74 | &mov("zero",$c2); | ||
75 | |||
76 | &sqr_add_c2($a[4],$a[3],$c0,$c1,$c2); | ||
77 | &sqr_add_c2($a[5],$a[2],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[6],$a[1],$c0,$c1,$c2); | ||
79 | &sqr_add_c2($a[7],$a[0],$c0,$c1,$c2); | ||
80 | &st($c0,&QWPw(7,$rp)); | ||
81 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
82 | &mov("zero",$c2); | ||
83 | |||
84 | &sqr_add_c($a[4],$c0,$c1,$c2); | ||
85 | &sqr_add_c2($a[5],$a[3],$c0,$c1,$c2); | ||
86 | &sqr_add_c2($a[6],$a[2],$c0,$c1,$c2); | ||
87 | &sqr_add_c2($a[7],$a[1],$c0,$c1,$c2); | ||
88 | &st($c0,&QWPw(8,$rp)); | ||
89 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
90 | &mov("zero",$c2); | ||
91 | |||
92 | &sqr_add_c2($a[5],$a[4],$c0,$c1,$c2); | ||
93 | &sqr_add_c2($a[6],$a[3],$c0,$c1,$c2); | ||
94 | &sqr_add_c2($a[7],$a[2],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(9,$rp)); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &sqr_add_c($a[5],$c0,$c1,$c2); | ||
100 | &sqr_add_c2($a[6],$a[4],$c0,$c1,$c2); | ||
101 | &sqr_add_c2($a[7],$a[3],$c0,$c1,$c2); | ||
102 | &st($c0,&QWPw(10,$rp)); | ||
103 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
104 | &mov("zero",$c2); | ||
105 | |||
106 | &sqr_add_c2($a[6],$a[5],$c0,$c1,$c2); | ||
107 | &sqr_add_c2($a[7],$a[4],$c0,$c1,$c2); | ||
108 | &st($c0,&QWPw(11,$rp)); | ||
109 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
110 | &mov("zero",$c2); | ||
111 | |||
112 | &sqr_add_c($a[6],$c0,$c1,$c2); | ||
113 | &sqr_add_c2($a[7],$a[5],$c0,$c1,$c2); | ||
114 | &st($c0,&QWPw(12,$rp)); | ||
115 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
116 | &mov("zero",$c2); | ||
117 | |||
118 | &sqr_add_c2($a[7],$a[6],$c0,$c1,$c2); | ||
119 | &st($c0,&QWPw(13,$rp)); | ||
120 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
121 | &mov("zero",$c2); | ||
122 | |||
123 | &sqr_add_c($a[7],$c0,$c1,$c2); | ||
124 | &st($c0,&QWPw(14,$rp)); | ||
125 | &st($c1,&QWPw(15,$rp)); | ||
126 | |||
127 | &function_end($name); | ||
128 | |||
129 | &fin_pool; | ||
130 | } | ||
131 | |||
132 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/alpha/sub.pl b/src/lib/libcrypto/bn/asm/alpha/sub.pl new file mode 100644 index 0000000000..d998da5c21 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/alpha/sub.pl | |||
@@ -0,0 +1,108 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sub_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$b0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($b0,&QWPw(0,$bp)); | ||
27 | |||
28 | ########################################################## | ||
29 | &set_label("loop"); | ||
30 | |||
31 | ($a1,$tmp,$b1,$a2,$b2,$a3,$b3,$o0)=&NR(8); | ||
32 | &ld($a1,&QWPw(1,$ap)); | ||
33 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
34 | &ld($b1,&QWPw(1,$bp)); | ||
35 | &sub($a0,$b0,$a0); # do the subtract | ||
36 | &ld($a2,&QWPw(2,$ap)); | ||
37 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
38 | &ld($b2,&QWPw(2,$bp)); | ||
39 | &sub($a0,$cc,$o0); # will we borrow? | ||
40 | &ld($a3,&QWPw(3,$ap)); | ||
41 | &add($b0,$tmp,$cc); ($t1,$o1)=&NR(2); &FR($tmp); | ||
42 | |||
43 | &cmpult($a1,$b1,$t1); # will we borrow? | ||
44 | &sub($a1,$b1,$a1); # do the subtract | ||
45 | &ld($b3,&QWPw(3,$bp)); | ||
46 | &cmpult($a1,$cc,$b1); # will we borrow? | ||
47 | &sub($a1,$cc,$o1); # will we borrow? | ||
48 | &add($b1,$t1,$cc); ($tmp,$o2)=&NR(2); &FR($t1,$a1,$b1); | ||
49 | |||
50 | &cmpult($a2,$b2,$tmp); # will we borrow? | ||
51 | &sub($a2,$b2,$a2); # do the subtract | ||
52 | &st($o0,&QWPw(0,$rp)); &FR($o0); # save | ||
53 | &cmpult($a2,$cc,$b2); # will we borrow? | ||
54 | &sub($a2,$cc,$o2); # will we borrow? | ||
55 | &add($b2,$tmp,$cc); ($t3,$o3)=&NR(2); &FR($tmp,$a2,$b2); | ||
56 | |||
57 | &cmpult($a3,$b3,$t3); # will we borrow? | ||
58 | &sub($a3,$b3,$a3); # do the subtract | ||
59 | &st($o1,&QWPw(1,$rp)); &FR($o1); | ||
60 | &cmpult($a3,$cc,$b3); # will we borrow? | ||
61 | &sub($a3,$cc,$o3); # will we borrow? | ||
62 | &add($b3,$t3,$cc); &FR($t3,$a3,$b3); | ||
63 | |||
64 | &st($o2,&QWPw(2,$rp)); &FR($o2); | ||
65 | &sub($count,4,$count); # count-=4 | ||
66 | &st($o3,&QWPw(3,$rp)); &FR($o3); | ||
67 | &add($ap,4*$QWS,$ap); # count+=4 | ||
68 | &add($bp,4*$QWS,$bp); # count+=4 | ||
69 | &add($rp,4*$QWS,$rp); # count+=4 | ||
70 | |||
71 | &blt($count,&label("finish")); | ||
72 | &ld($a0,&QWPw(0,$ap)); | ||
73 | &ld($b0,&QWPw(0,$bp)); | ||
74 | &br(&label("loop")); | ||
75 | ################################################## | ||
76 | # Do the last 0..3 words | ||
77 | |||
78 | &set_label("last_loop"); | ||
79 | |||
80 | &ld($a0,&QWPw(0,$ap)); # get a | ||
81 | &ld($b0,&QWPw(0,$bp)); # get b | ||
82 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
83 | &sub($a0,$b0,$a0); # do the subtract | ||
84 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
85 | &sub($a0,$cc,$a0); # will we borrow? | ||
86 | &st($a0,&QWPw(0,$rp)); # save | ||
87 | &add($b0,$tmp,$cc); # add the borrows | ||
88 | |||
89 | &add($ap,$QWS,$ap); | ||
90 | &add($bp,$QWS,$bp); | ||
91 | &add($rp,$QWS,$rp); | ||
92 | &sub($count,1,$count); | ||
93 | &bgt($count,&label("last_loop")); | ||
94 | &function_end_A($name); | ||
95 | |||
96 | ###################################################### | ||
97 | &set_label("finish"); | ||
98 | &add($count,4,$count); | ||
99 | &bgt($count,&label("last_loop")); | ||
100 | |||
101 | &FR($a0,$b0); | ||
102 | &set_label("end"); | ||
103 | &function_end($name); | ||
104 | |||
105 | &fin_pool; | ||
106 | } | ||
107 | |||
108 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/add.pl b/src/lib/libcrypto/bn/asm/x86/add.pl new file mode 100644 index 0000000000..0b5cf583e3 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/add.pl | |||
@@ -0,0 +1,76 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $a="esi"; | ||
12 | $b="edi"; | ||
13 | $c="eax"; | ||
14 | $r="ebx"; | ||
15 | $tmp1="ecx"; | ||
16 | $tmp2="edx"; | ||
17 | $num="ebp"; | ||
18 | |||
19 | &mov($r,&wparam(0)); # get r | ||
20 | &mov($a,&wparam(1)); # get a | ||
21 | &mov($b,&wparam(2)); # get b | ||
22 | &mov($num,&wparam(3)); # get num | ||
23 | &xor($c,$c); # clear carry | ||
24 | &and($num,0xfffffff8); # num / 8 | ||
25 | |||
26 | &jz(&label("aw_finish")); | ||
27 | |||
28 | &set_label("aw_loop",0); | ||
29 | for ($i=0; $i<8; $i++) | ||
30 | { | ||
31 | &comment("Round $i"); | ||
32 | |||
33 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
34 | &mov($tmp2,&DWP($i*4,$b,"",0)); # *b | ||
35 | &add($tmp1,$c); | ||
36 | &mov($c,0); | ||
37 | &adc($c,$c); | ||
38 | &add($tmp1,$tmp2); | ||
39 | &adc($c,0); | ||
40 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *r | ||
41 | } | ||
42 | |||
43 | &comment(""); | ||
44 | &add($a,32); | ||
45 | &add($b,32); | ||
46 | &add($r,32); | ||
47 | &sub($num,8); | ||
48 | &jnz(&label("aw_loop")); | ||
49 | |||
50 | &set_label("aw_finish",0); | ||
51 | &mov($num,&wparam(3)); # get num | ||
52 | &and($num,7); | ||
53 | &jz(&label("aw_end")); | ||
54 | |||
55 | for ($i=0; $i<7; $i++) | ||
56 | { | ||
57 | &comment("Tail Round $i"); | ||
58 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
59 | &mov($tmp2,&DWP($i*4,$b,"",0));# *b | ||
60 | &add($tmp1,$c); | ||
61 | &mov($c,0); | ||
62 | &adc($c,$c); | ||
63 | &add($tmp1,$tmp2); | ||
64 | &adc($c,0); | ||
65 | &dec($num) if ($i != 6); | ||
66 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *a | ||
67 | &jz(&label("aw_end")) if ($i != 6); | ||
68 | } | ||
69 | &set_label("aw_end",0); | ||
70 | |||
71 | # &mov("eax",$c); # $c is "eax" | ||
72 | |||
73 | &function_end($name); | ||
74 | } | ||
75 | |||
76 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/comba.pl b/src/lib/libcrypto/bn/asm/x86/comba.pl new file mode 100644 index 0000000000..2291253629 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/comba.pl | |||
@@ -0,0 +1,277 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$ai,$b,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; | ||
7 | |||
8 | # pos == -1 if eax and edx are pre-loaded, 0 to load from next | ||
9 | # words, and 1 if load return value | ||
10 | |||
11 | &comment("mul a[$ai]*b[$bi]"); | ||
12 | |||
13 | # "eax" and "edx" will always be pre-loaded. | ||
14 | # &mov("eax",&DWP($ai*4,$a,"",0)) ; | ||
15 | # &mov("edx",&DWP($bi*4,$b,"",0)); | ||
16 | |||
17 | &mul("edx"); | ||
18 | &add($c0,"eax"); | ||
19 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # laod next a | ||
20 | &mov("eax",&wparam(0)) if $pos > 0; # load r[] | ||
21 | ### | ||
22 | &adc($c1,"edx"); | ||
23 | &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0; # laod next b | ||
24 | &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1; # laod next b | ||
25 | ### | ||
26 | &adc($c2,0); | ||
27 | # is pos > 1, it means it is the last loop | ||
28 | &mov(&DWP($i*4,"eax","",0),$c0) if $pos > 0; # save r[]; | ||
29 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # laod next a | ||
30 | } | ||
31 | |||
32 | sub sqr_add_c | ||
33 | { | ||
34 | local($r,$a,$ai,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; | ||
35 | |||
36 | # pos == -1 if eax and edx are pre-loaded, 0 to load from next | ||
37 | # words, and 1 if load return value | ||
38 | |||
39 | &comment("sqr a[$ai]*a[$bi]"); | ||
40 | |||
41 | # "eax" and "edx" will always be pre-loaded. | ||
42 | # &mov("eax",&DWP($ai*4,$a,"",0)) ; | ||
43 | # &mov("edx",&DWP($bi*4,$b,"",0)); | ||
44 | |||
45 | if ($ai == $bi) | ||
46 | { &mul("eax");} | ||
47 | else | ||
48 | { &mul("edx");} | ||
49 | &add($c0,"eax"); | ||
50 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # load next a | ||
51 | ### | ||
52 | &adc($c1,"edx"); | ||
53 | &mov("edx",&DWP(($nb)*4,$a,"",0)) if ($pos == 1) && ($na != $nb); | ||
54 | ### | ||
55 | &adc($c2,0); | ||
56 | # is pos > 1, it means it is the last loop | ||
57 | &mov(&DWP($i*4,$r,"",0),$c0) if $pos > 0; # save r[]; | ||
58 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # load next b | ||
59 | } | ||
60 | |||
61 | sub sqr_add_c2 | ||
62 | { | ||
63 | local($r,$a,$ai,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; | ||
64 | |||
65 | # pos == -1 if eax and edx are pre-loaded, 0 to load from next | ||
66 | # words, and 1 if load return value | ||
67 | |||
68 | &comment("sqr a[$ai]*a[$bi]"); | ||
69 | |||
70 | # "eax" and "edx" will always be pre-loaded. | ||
71 | # &mov("eax",&DWP($ai*4,$a,"",0)) ; | ||
72 | # &mov("edx",&DWP($bi*4,$a,"",0)); | ||
73 | |||
74 | if ($ai == $bi) | ||
75 | { &mul("eax");} | ||
76 | else | ||
77 | { &mul("edx");} | ||
78 | &add("eax","eax"); | ||
79 | ### | ||
80 | &adc("edx","edx"); | ||
81 | ### | ||
82 | &adc($c2,0); | ||
83 | &add($c0,"eax"); | ||
84 | &adc($c1,"edx"); | ||
85 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # load next a | ||
86 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # load next b | ||
87 | &adc($c2,0); | ||
88 | &mov(&DWP($i*4,$r,"",0),$c0) if $pos > 0; # save r[]; | ||
89 | &mov("edx",&DWP(($nb)*4,$a,"",0)) if ($pos <= 1) && ($na != $nb); | ||
90 | ### | ||
91 | } | ||
92 | |||
93 | sub bn_mul_comba | ||
94 | { | ||
95 | local($name,$num)=@_; | ||
96 | local($a,$b,$c0,$c1,$c2); | ||
97 | local($i,$as,$ae,$bs,$be,$ai,$bi); | ||
98 | local($tot,$end); | ||
99 | |||
100 | &function_begin_B($name,""); | ||
101 | |||
102 | $c0="ebx"; | ||
103 | $c1="ecx"; | ||
104 | $c2="ebp"; | ||
105 | $a="esi"; | ||
106 | $b="edi"; | ||
107 | |||
108 | $as=0; | ||
109 | $ae=0; | ||
110 | $bs=0; | ||
111 | $be=0; | ||
112 | $tot=$num+$num-1; | ||
113 | |||
114 | &push("esi"); | ||
115 | &mov($a,&wparam(1)); | ||
116 | &push("edi"); | ||
117 | &mov($b,&wparam(2)); | ||
118 | &push("ebp"); | ||
119 | &push("ebx"); | ||
120 | |||
121 | &xor($c0,$c0); | ||
122 | &mov("eax",&DWP(0,$a,"",0)); # load the first word | ||
123 | &xor($c1,$c1); | ||
124 | &mov("edx",&DWP(0,$b,"",0)); # load the first second | ||
125 | |||
126 | for ($i=0; $i<$tot; $i++) | ||
127 | { | ||
128 | $ai=$as; | ||
129 | $bi=$bs; | ||
130 | $end=$be+1; | ||
131 | |||
132 | &comment("################## Calculate word $i"); | ||
133 | |||
134 | for ($j=$bs; $j<$end; $j++) | ||
135 | { | ||
136 | &xor($c2,$c2) if ($j == $bs); | ||
137 | if (($j+1) == $end) | ||
138 | { | ||
139 | $v=1; | ||
140 | $v=2 if (($i+1) == $tot); | ||
141 | } | ||
142 | else | ||
143 | { $v=0; } | ||
144 | if (($j+1) != $end) | ||
145 | { | ||
146 | $na=($ai-1); | ||
147 | $nb=($bi+1); | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | $na=$as+($i < ($num-1)); | ||
152 | $nb=$bs+($i >= ($num-1)); | ||
153 | } | ||
154 | #printf STDERR "[$ai,$bi] -> [$na,$nb]\n"; | ||
155 | &mul_add_c($a,$ai,$b,$bi,$c0,$c1,$c2,$v,$i,$na,$nb); | ||
156 | if ($v) | ||
157 | { | ||
158 | &comment("saved r[$i]"); | ||
159 | # &mov("eax",&wparam(0)); | ||
160 | # &mov(&DWP($i*4,"eax","",0),$c0); | ||
161 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
162 | } | ||
163 | $ai--; | ||
164 | $bi++; | ||
165 | } | ||
166 | $as++ if ($i < ($num-1)); | ||
167 | $ae++ if ($i >= ($num-1)); | ||
168 | |||
169 | $bs++ if ($i >= ($num-1)); | ||
170 | $be++ if ($i < ($num-1)); | ||
171 | } | ||
172 | &comment("save r[$i]"); | ||
173 | # &mov("eax",&wparam(0)); | ||
174 | &mov(&DWP($i*4,"eax","",0),$c0); | ||
175 | |||
176 | &pop("ebx"); | ||
177 | &pop("ebp"); | ||
178 | &pop("edi"); | ||
179 | &pop("esi"); | ||
180 | &ret(); | ||
181 | &function_end_B($name); | ||
182 | } | ||
183 | |||
184 | sub bn_sqr_comba | ||
185 | { | ||
186 | local($name,$num)=@_; | ||
187 | local($r,$a,$c0,$c1,$c2)=@_; | ||
188 | local($i,$as,$ae,$bs,$be,$ai,$bi); | ||
189 | local($b,$tot,$end,$half); | ||
190 | |||
191 | &function_begin_B($name,""); | ||
192 | |||
193 | $c0="ebx"; | ||
194 | $c1="ecx"; | ||
195 | $c2="ebp"; | ||
196 | $a="esi"; | ||
197 | $r="edi"; | ||
198 | |||
199 | &push("esi"); | ||
200 | &push("edi"); | ||
201 | &push("ebp"); | ||
202 | &push("ebx"); | ||
203 | &mov($r,&wparam(0)); | ||
204 | &mov($a,&wparam(1)); | ||
205 | &xor($c0,$c0); | ||
206 | &xor($c1,$c1); | ||
207 | &mov("eax",&DWP(0,$a,"",0)); # load the first word | ||
208 | |||
209 | $as=0; | ||
210 | $ae=0; | ||
211 | $bs=0; | ||
212 | $be=0; | ||
213 | $tot=$num+$num-1; | ||
214 | |||
215 | for ($i=0; $i<$tot; $i++) | ||
216 | { | ||
217 | $ai=$as; | ||
218 | $bi=$bs; | ||
219 | $end=$be+1; | ||
220 | |||
221 | &comment("############### Calculate word $i"); | ||
222 | for ($j=$bs; $j<$end; $j++) | ||
223 | { | ||
224 | &xor($c2,$c2) if ($j == $bs); | ||
225 | if (($ai-1) < ($bi+1)) | ||
226 | { | ||
227 | $v=1; | ||
228 | $v=2 if ($i+1) == $tot; | ||
229 | } | ||
230 | else | ||
231 | { $v=0; } | ||
232 | if (!$v) | ||
233 | { | ||
234 | $na=$ai-1; | ||
235 | $nb=$bi+1; | ||
236 | } | ||
237 | else | ||
238 | { | ||
239 | $na=$as+($i < ($num-1)); | ||
240 | $nb=$bs+($i >= ($num-1)); | ||
241 | } | ||
242 | if ($ai == $bi) | ||
243 | { | ||
244 | &sqr_add_c($r,$a,$ai,$bi, | ||
245 | $c0,$c1,$c2,$v,$i,$na,$nb); | ||
246 | } | ||
247 | else | ||
248 | { | ||
249 | &sqr_add_c2($r,$a,$ai,$bi, | ||
250 | $c0,$c1,$c2,$v,$i,$na,$nb); | ||
251 | } | ||
252 | if ($v) | ||
253 | { | ||
254 | &comment("saved r[$i]"); | ||
255 | #&mov(&DWP($i*4,$r,"",0),$c0); | ||
256 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
257 | last; | ||
258 | } | ||
259 | $ai--; | ||
260 | $bi++; | ||
261 | } | ||
262 | $as++ if ($i < ($num-1)); | ||
263 | $ae++ if ($i >= ($num-1)); | ||
264 | |||
265 | $bs++ if ($i >= ($num-1)); | ||
266 | $be++ if ($i < ($num-1)); | ||
267 | } | ||
268 | &mov(&DWP($i*4,$r,"",0),$c0); | ||
269 | &pop("ebx"); | ||
270 | &pop("ebp"); | ||
271 | &pop("edi"); | ||
272 | &pop("esi"); | ||
273 | &ret(); | ||
274 | &function_end_B($name); | ||
275 | } | ||
276 | |||
277 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/div.pl b/src/lib/libcrypto/bn/asm/x86/div.pl new file mode 100644 index 0000000000..0e90152caa --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/div.pl | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_div_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | &mov("edx",&wparam(0)); # | ||
10 | &mov("eax",&wparam(1)); # | ||
11 | &mov("ebx",&wparam(2)); # | ||
12 | &div("ebx"); | ||
13 | &function_end($name); | ||
14 | } | ||
15 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/f b/src/lib/libcrypto/bn/asm/x86/f new file mode 100644 index 0000000000..22e4112224 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/f | |||
@@ -0,0 +1,3 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
diff --git a/src/lib/libcrypto/bn/asm/x86/mul.pl b/src/lib/libcrypto/bn/asm/x86/mul.pl new file mode 100644 index 0000000000..674cb9b055 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/mul.pl | |||
@@ -0,0 +1,77 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_mul_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $Low="eax"; | ||
12 | $High="edx"; | ||
13 | $a="ebx"; | ||
14 | $w="ecx"; | ||
15 | $r="edi"; | ||
16 | $c="esi"; | ||
17 | $num="ebp"; | ||
18 | |||
19 | &xor($c,$c); # clear carry | ||
20 | &mov($r,&wparam(0)); # | ||
21 | &mov($a,&wparam(1)); # | ||
22 | &mov($num,&wparam(2)); # | ||
23 | &mov($w,&wparam(3)); # | ||
24 | |||
25 | &and($num,0xfffffff8); # num / 8 | ||
26 | &jz(&label("mw_finish")); | ||
27 | |||
28 | &set_label("mw_loop",0); | ||
29 | for ($i=0; $i<32; $i+=4) | ||
30 | { | ||
31 | &comment("Round $i"); | ||
32 | |||
33 | &mov("eax",&DWP($i,$a,"",0)); # *a | ||
34 | &mul($w); # *a * w | ||
35 | &add("eax",$c); # L(t)+=c | ||
36 | # XXX | ||
37 | |||
38 | &adc("edx",0); # H(t)+=carry | ||
39 | &mov(&DWP($i,$r,"",0),"eax"); # *r= L(t); | ||
40 | |||
41 | &mov($c,"edx"); # c= H(t); | ||
42 | } | ||
43 | |||
44 | &comment(""); | ||
45 | &add($a,32); | ||
46 | &add($r,32); | ||
47 | &sub($num,8); | ||
48 | &jz(&label("mw_finish")); | ||
49 | &jmp(&label("mw_loop")); | ||
50 | |||
51 | &set_label("mw_finish",0); | ||
52 | &mov($num,&wparam(2)); # get num | ||
53 | &and($num,7); | ||
54 | &jnz(&label("mw_finish2")); | ||
55 | &jmp(&label("mw_end")); | ||
56 | |||
57 | &set_label("mw_finish2",1); | ||
58 | for ($i=0; $i<7; $i++) | ||
59 | { | ||
60 | &comment("Tail Round $i"); | ||
61 | &mov("eax",&DWP($i*4,$a,"",0));# *a | ||
62 | &mul($w); # *a * w | ||
63 | &add("eax",$c); # L(t)+=c | ||
64 | # XXX | ||
65 | &adc("edx",0); # H(t)+=carry | ||
66 | &mov(&DWP($i*4,$r,"",0),"eax");# *r= L(t); | ||
67 | &mov($c,"edx"); # c= H(t); | ||
68 | &dec($num) if ($i != 7-1); | ||
69 | &jz(&label("mw_end")) if ($i != 7-1); | ||
70 | } | ||
71 | &set_label("mw_end",0); | ||
72 | &mov("eax",$c); | ||
73 | |||
74 | &function_end($name); | ||
75 | } | ||
76 | |||
77 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/mul_add.pl b/src/lib/libcrypto/bn/asm/x86/mul_add.pl new file mode 100644 index 0000000000..61830d3a90 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/mul_add.pl | |||
@@ -0,0 +1,87 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_mul_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $Low="eax"; | ||
12 | $High="edx"; | ||
13 | $a="ebx"; | ||
14 | $w="ebp"; | ||
15 | $r="edi"; | ||
16 | $c="esi"; | ||
17 | |||
18 | &xor($c,$c); # clear carry | ||
19 | &mov($r,&wparam(0)); # | ||
20 | |||
21 | &mov("ecx",&wparam(2)); # | ||
22 | &mov($a,&wparam(1)); # | ||
23 | |||
24 | &and("ecx",0xfffffff8); # num / 8 | ||
25 | &mov($w,&wparam(3)); # | ||
26 | |||
27 | &push("ecx"); # Up the stack for a tmp variable | ||
28 | |||
29 | &jz(&label("maw_finish")); | ||
30 | |||
31 | &set_label("maw_loop",0); | ||
32 | |||
33 | &mov(&swtmp(0),"ecx"); # | ||
34 | |||
35 | for ($i=0; $i<32; $i+=4) | ||
36 | { | ||
37 | &comment("Round $i"); | ||
38 | |||
39 | &mov("eax",&DWP($i,$a,"",0)); # *a | ||
40 | &mul($w); # *a * w | ||
41 | &add("eax",$c); # L(t)+= *r | ||
42 | &mov($c,&DWP($i,$r,"",0)); # L(t)+= *r | ||
43 | &adc("edx",0); # H(t)+=carry | ||
44 | &add("eax",$c); # L(t)+=c | ||
45 | &adc("edx",0); # H(t)+=carry | ||
46 | &mov(&DWP($i,$r,"",0),"eax"); # *r= L(t); | ||
47 | &mov($c,"edx"); # c= H(t); | ||
48 | } | ||
49 | |||
50 | &comment(""); | ||
51 | &mov("ecx",&swtmp(0)); # | ||
52 | &add($a,32); | ||
53 | &add($r,32); | ||
54 | &sub("ecx",8); | ||
55 | &jnz(&label("maw_loop")); | ||
56 | |||
57 | &set_label("maw_finish",0); | ||
58 | &mov("ecx",&wparam(2)); # get num | ||
59 | &and("ecx",7); | ||
60 | &jnz(&label("maw_finish2")); # helps branch prediction | ||
61 | &jmp(&label("maw_end")); | ||
62 | |||
63 | &set_label("maw_finish2",1); | ||
64 | for ($i=0; $i<7; $i++) | ||
65 | { | ||
66 | &comment("Tail Round $i"); | ||
67 | &mov("eax",&DWP($i*4,$a,"",0));# *a | ||
68 | &mul($w); # *a * w | ||
69 | &add("eax",$c); # L(t)+=c | ||
70 | &mov($c,&DWP($i*4,$r,"",0)); # L(t)+= *r | ||
71 | &adc("edx",0); # H(t)+=carry | ||
72 | &add("eax",$c); | ||
73 | &adc("edx",0); # H(t)+=carry | ||
74 | &dec("ecx") if ($i != 7-1); | ||
75 | &mov(&DWP($i*4,$r,"",0),"eax"); # *r= L(t); | ||
76 | &mov($c,"edx"); # c= H(t); | ||
77 | &jz(&label("maw_end")) if ($i != 7-1); | ||
78 | } | ||
79 | &set_label("maw_end",0); | ||
80 | &mov("eax",$c); | ||
81 | |||
82 | &pop("ecx"); # clear variable from | ||
83 | |||
84 | &function_end($name); | ||
85 | } | ||
86 | |||
87 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/sqr.pl b/src/lib/libcrypto/bn/asm/x86/sqr.pl new file mode 100644 index 0000000000..1f90993cf6 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/sqr.pl | |||
@@ -0,0 +1,60 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_sqr_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $r="esi"; | ||
12 | $a="edi"; | ||
13 | $num="ebx"; | ||
14 | |||
15 | &mov($r,&wparam(0)); # | ||
16 | &mov($a,&wparam(1)); # | ||
17 | &mov($num,&wparam(2)); # | ||
18 | |||
19 | &and($num,0xfffffff8); # num / 8 | ||
20 | &jz(&label("sw_finish")); | ||
21 | |||
22 | &set_label("sw_loop",0); | ||
23 | for ($i=0; $i<32; $i+=4) | ||
24 | { | ||
25 | &comment("Round $i"); | ||
26 | &mov("eax",&DWP($i,$a,"",0)); # *a | ||
27 | # XXX | ||
28 | &mul("eax"); # *a * *a | ||
29 | &mov(&DWP($i*2,$r,"",0),"eax"); # | ||
30 | &mov(&DWP($i*2+4,$r,"",0),"edx");# | ||
31 | } | ||
32 | |||
33 | &comment(""); | ||
34 | &add($a,32); | ||
35 | &add($r,64); | ||
36 | &sub($num,8); | ||
37 | &jnz(&label("sw_loop")); | ||
38 | |||
39 | &set_label("sw_finish",0); | ||
40 | &mov($num,&wparam(2)); # get num | ||
41 | &and($num,7); | ||
42 | &jz(&label("sw_end")); | ||
43 | |||
44 | for ($i=0; $i<7; $i++) | ||
45 | { | ||
46 | &comment("Tail Round $i"); | ||
47 | &mov("eax",&DWP($i*4,$a,"",0)); # *a | ||
48 | # XXX | ||
49 | &mul("eax"); # *a * *a | ||
50 | &mov(&DWP($i*8,$r,"",0),"eax"); # | ||
51 | &dec($num) if ($i != 7-1); | ||
52 | &mov(&DWP($i*8+4,$r,"",0),"edx"); | ||
53 | &jz(&label("sw_end")) if ($i != 7-1); | ||
54 | } | ||
55 | &set_label("sw_end",0); | ||
56 | |||
57 | &function_end($name); | ||
58 | } | ||
59 | |||
60 | 1; | ||
diff --git a/src/lib/libcrypto/bn/asm/x86/sub.pl b/src/lib/libcrypto/bn/asm/x86/sub.pl new file mode 100644 index 0000000000..837b0e1b07 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/x86/sub.pl | |||
@@ -0,0 +1,76 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_sub_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $a="esi"; | ||
12 | $b="edi"; | ||
13 | $c="eax"; | ||
14 | $r="ebx"; | ||
15 | $tmp1="ecx"; | ||
16 | $tmp2="edx"; | ||
17 | $num="ebp"; | ||
18 | |||
19 | &mov($r,&wparam(0)); # get r | ||
20 | &mov($a,&wparam(1)); # get a | ||
21 | &mov($b,&wparam(2)); # get b | ||
22 | &mov($num,&wparam(3)); # get num | ||
23 | &xor($c,$c); # clear carry | ||
24 | &and($num,0xfffffff8); # num / 8 | ||
25 | |||
26 | &jz(&label("aw_finish")); | ||
27 | |||
28 | &set_label("aw_loop",0); | ||
29 | for ($i=0; $i<8; $i++) | ||
30 | { | ||
31 | &comment("Round $i"); | ||
32 | |||
33 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
34 | &mov($tmp2,&DWP($i*4,$b,"",0)); # *b | ||
35 | &sub($tmp1,$c); | ||
36 | &mov($c,0); | ||
37 | &adc($c,$c); | ||
38 | &sub($tmp1,$tmp2); | ||
39 | &adc($c,0); | ||
40 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *r | ||
41 | } | ||
42 | |||
43 | &comment(""); | ||
44 | &add($a,32); | ||
45 | &add($b,32); | ||
46 | &add($r,32); | ||
47 | &sub($num,8); | ||
48 | &jnz(&label("aw_loop")); | ||
49 | |||
50 | &set_label("aw_finish",0); | ||
51 | &mov($num,&wparam(3)); # get num | ||
52 | &and($num,7); | ||
53 | &jz(&label("aw_end")); | ||
54 | |||
55 | for ($i=0; $i<7; $i++) | ||
56 | { | ||
57 | &comment("Tail Round $i"); | ||
58 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
59 | &mov($tmp2,&DWP($i*4,$b,"",0));# *b | ||
60 | &sub($tmp1,$c); | ||
61 | &mov($c,0); | ||
62 | &adc($c,$c); | ||
63 | &sub($tmp1,$tmp2); | ||
64 | &adc($c,0); | ||
65 | &dec($num) if ($i != 6); | ||
66 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *a | ||
67 | &jz(&label("aw_end")) if ($i != 6); | ||
68 | } | ||
69 | &set_label("aw_end",0); | ||
70 | |||
71 | # &mov("eax",$c); # $c is "eax" | ||
72 | |||
73 | &function_end($name); | ||
74 | } | ||
75 | |||
76 | 1; | ||
diff --git a/src/lib/libcrypto/bn/old/b_sqr.c b/src/lib/libcrypto/bn/old/b_sqr.c new file mode 100644 index 0000000000..715cb1c8ab --- /dev/null +++ b/src/lib/libcrypto/bn/old/b_sqr.c | |||
@@ -0,0 +1,199 @@ | |||
1 | /* crypto/bn/bn_mul.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | static int bn_mm(BIGNUM *m,BIGNUM *A,BIGNUM *B, BIGNUM *sk,BN_CTX *ctx); | ||
64 | |||
65 | /* r must be different to a and b */ | ||
66 | /* int BN_mmul(r, a, b) */ | ||
67 | int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b) | ||
68 | { | ||
69 | BN_ULONG *ap,*bp,*rp; | ||
70 | BIGNUM *sk; | ||
71 | int i,n,ret; | ||
72 | int max,al,bl; | ||
73 | BN_CTX ctx; | ||
74 | |||
75 | bn_check_top(a); | ||
76 | bn_check_top(b); | ||
77 | |||
78 | al=a->top; | ||
79 | bl=b->top; | ||
80 | if ((al == 0) || (bl == 0)) | ||
81 | { | ||
82 | r->top=0; | ||
83 | return(1); | ||
84 | } | ||
85 | #ifdef BN_MUL_DEBUG | ||
86 | printf("BN_mul(%d,%d)\n",a->top,b->top); | ||
87 | #endif | ||
88 | |||
89 | if ( (bn_limit_bits > 0) && | ||
90 | (bl > bn_limit_num) && (al > bn_limit_num)) | ||
91 | { | ||
92 | n=(BN_num_bits_word(al|bl)-bn_limit_bits); | ||
93 | n*=2; | ||
94 | sk=(BIGNUM *)Malloc(sizeof(BIGNUM)*n); | ||
95 | memset(sk,0,sizeof(BIGNUM)*n); | ||
96 | memset(&ctx,0,sizeof(ctx)); | ||
97 | |||
98 | ret=bn_mm(r,a,b,&(sk[0]),&ctx); | ||
99 | for (i=0; i<n; i+=2) | ||
100 | { | ||
101 | BN_clear_free(&sk[i]); | ||
102 | BN_clear_free(&sk[i+1]); | ||
103 | } | ||
104 | Free(sk); | ||
105 | return(ret); | ||
106 | } | ||
107 | |||
108 | max=(al+bl); | ||
109 | if (bn_wexpand(r,max) == NULL) return(0); | ||
110 | r->top=max; | ||
111 | r->neg=a->neg^b->neg; | ||
112 | ap=a->d; | ||
113 | bp=b->d; | ||
114 | rp=r->d; | ||
115 | |||
116 | rp[al]=bn_mul_words(rp,ap,al,*(bp++)); | ||
117 | rp++; | ||
118 | for (i=1; i<bl; i++) | ||
119 | { | ||
120 | rp[al]=bn_mul_add_words(rp,ap,al,*(bp++)); | ||
121 | rp++; | ||
122 | } | ||
123 | if ((max > 0) && (r->d[max-1] == 0)) r->top--; | ||
124 | return(1); | ||
125 | } | ||
126 | |||
127 | |||
128 | #define ahal (sk[0]) | ||
129 | #define blbh (sk[1]) | ||
130 | |||
131 | /* r must be different to a and b */ | ||
132 | int bn_mm(BIGNUM *m, BIGNUM *A, BIGNUM *B, BIGNUM *sk, BN_CTX *ctx) | ||
133 | { | ||
134 | int n,num,sqr=0; | ||
135 | int an,bn; | ||
136 | BIGNUM ah,al,bh,bl; | ||
137 | |||
138 | an=A->top; | ||
139 | bn=B->top; | ||
140 | #ifdef BN_MUL_DEBUG | ||
141 | printf("bn_mm(%d,%d)\n",A->top,B->top); | ||
142 | #endif | ||
143 | |||
144 | if (A == B) sqr=1; | ||
145 | num=(an>bn)?an:bn; | ||
146 | n=(num+1)/2; | ||
147 | /* Are going to now chop things into 'num' word chunks. */ | ||
148 | |||
149 | BN_init(&ah); | ||
150 | BN_init(&al); | ||
151 | BN_init(&bh); | ||
152 | BN_init(&bl); | ||
153 | |||
154 | bn_set_low (&al,A,n); | ||
155 | bn_set_high(&ah,A,n); | ||
156 | bn_set_low (&bl,B,n); | ||
157 | bn_set_high(&bh,B,n); | ||
158 | |||
159 | BN_sub(&ahal,&ah,&al); | ||
160 | BN_sub(&blbh,&bl,&bh); | ||
161 | |||
162 | if (num <= (bn_limit_num+bn_limit_num)) | ||
163 | { | ||
164 | BN_mul(m,&ahal,&blbh); | ||
165 | if (sqr) | ||
166 | { | ||
167 | BN_sqr(&ahal,&al,ctx); | ||
168 | BN_sqr(&blbh,&ah,ctx); | ||
169 | } | ||
170 | else | ||
171 | { | ||
172 | BN_mul(&ahal,&al,&bl); | ||
173 | BN_mul(&blbh,&ah,&bh); | ||
174 | } | ||
175 | } | ||
176 | else | ||
177 | { | ||
178 | bn_mm(m,&ahal,&blbh,&(sk[2]),ctx); | ||
179 | bn_mm(&ahal,&al,&bl,&(sk[2]),ctx); | ||
180 | bn_mm(&blbh,&ah,&bh,&(sk[2]),ctx); | ||
181 | } | ||
182 | |||
183 | BN_add(m,m,&ahal); | ||
184 | BN_add(m,m,&blbh); | ||
185 | |||
186 | BN_lshift(m,m,n*BN_BITS2); | ||
187 | BN_lshift(&blbh,&blbh,n*BN_BITS2*2); | ||
188 | |||
189 | BN_add(m,m,&ahal); | ||
190 | BN_add(m,m,&blbh); | ||
191 | |||
192 | m->neg=A->neg^B->neg; | ||
193 | return(1); | ||
194 | } | ||
195 | #undef ahal (sk[0]) | ||
196 | #undef blbh (sk[1]) | ||
197 | |||
198 | #include "bn_low.c" | ||
199 | #include "bn_high.c" | ||
diff --git a/src/lib/libcrypto/bn/old/bn_com.c b/src/lib/libcrypto/bn/old/bn_com.c new file mode 100644 index 0000000000..7666b2304c --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_com.c | |||
@@ -0,0 +1,90 @@ | |||
1 | /* crypto/bn/bn_mulw.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | #ifdef BN_LLONG | ||
64 | |||
65 | ab | ||
66 | 12 | ||
67 | a2 b2 | ||
68 | a1 b1 | ||
69 | |||
70 | abc | ||
71 | 123 | ||
72 | a3 b3 c3 | ||
73 | a2 b2 c2 | ||
74 | a1 b1 c1 | ||
75 | |||
76 | abcd | ||
77 | 1234 | ||
78 | a4 b4 c4 d4 | ||
79 | a3 b3 c3 d3 | ||
80 | a2 b2 c2 d2 | ||
81 | a1 b1 c1 d1 | ||
82 | |||
83 | abcde | ||
84 | 01234 | ||
85 | a5 b5 c5 d5 e5 | ||
86 | a4 b4 c4 d4 e4 | ||
87 | a3 b3 c3 d3 e3 | ||
88 | a2 b2 c2 d2 e2 | ||
89 | a1 b1 c1 d1 e1 | ||
90 | a0 b0 c0 d0 e0 | ||
diff --git a/src/lib/libcrypto/bn/old/bn_high.c b/src/lib/libcrypto/bn/old/bn_high.c new file mode 100644 index 0000000000..763bcb605b --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_high.c | |||
@@ -0,0 +1,135 @@ | |||
1 | #include <stdio.h> | ||
2 | #include "cryptlib.h" | ||
3 | #include "bn_lcl.h" | ||
4 | |||
5 | #undef BN_MUL_HIGH_DEBUG | ||
6 | |||
7 | #ifdef BN_MUL_HIGH_DEBUG | ||
8 | #define debug_BN_print(a,b,c) BN_print_fp(a,b); printf(c); | ||
9 | #else | ||
10 | #define debug_BN_print(a,b,c) | ||
11 | #endif | ||
12 | |||
13 | int BN_mul_high(BIGNUM *r,BIGNUM *a,BIGNUM *b,BIGNUM *low, int words); | ||
14 | |||
15 | #undef t1 | ||
16 | #undef t2 | ||
17 | |||
18 | int BN_mul_high(BIGNUM *r, BIGNUM *a, BIGNUM *b, BIGNUM *low, int words) | ||
19 | { | ||
20 | int w2,borrow=0,full=0; | ||
21 | BIGNUM t1,t2,t3,h,ah,al,bh,bl,m,s0,s1; | ||
22 | BN_ULONG ul1,ul2; | ||
23 | |||
24 | BN_mul(r,a,b); | ||
25 | BN_rshift(r,r,words*BN_BITS2); | ||
26 | return(1); | ||
27 | |||
28 | w2=(words+1)/2; | ||
29 | |||
30 | #ifdef BN_MUL_HIGH_DEBUG | ||
31 | fprintf(stdout,"words=%d w2=%d\n",words,w2); | ||
32 | #endif | ||
33 | debug_BN_print(stdout,a," a\n"); | ||
34 | debug_BN_print(stdout,b," b\n"); | ||
35 | debug_BN_print(stdout,low," low\n"); | ||
36 | BN_init(&al); BN_init(&ah); | ||
37 | BN_init(&bl); BN_init(&bh); | ||
38 | BN_init(&t1); BN_init(&t2); BN_init(&t3); | ||
39 | BN_init(&s0); BN_init(&s1); | ||
40 | BN_init(&h); BN_init(&m); | ||
41 | |||
42 | bn_set_low (&al,a,w2); | ||
43 | bn_set_high(&ah,a,w2); | ||
44 | bn_set_low (&bl,b,w2); | ||
45 | bn_set_high(&bh,b,w2); | ||
46 | |||
47 | bn_set_low(&s0,low,w2); | ||
48 | bn_set_high(&s1,low,w2); | ||
49 | |||
50 | debug_BN_print(stdout,&al," al\n"); | ||
51 | debug_BN_print(stdout,&ah," ah\n"); | ||
52 | debug_BN_print(stdout,&bl," bl\n"); | ||
53 | debug_BN_print(stdout,&bh," bh\n"); | ||
54 | debug_BN_print(stdout,&s0," s0\n"); | ||
55 | debug_BN_print(stdout,&s1," s1\n"); | ||
56 | |||
57 | /* Calculate (al-ah)*(bh-bl) */ | ||
58 | BN_sub(&t1,&al,&ah); | ||
59 | BN_sub(&t2,&bh,&bl); | ||
60 | BN_mul(&m,&t1,&t2); | ||
61 | |||
62 | /* Calculate ah*bh */ | ||
63 | BN_mul(&h,&ah,&bh); | ||
64 | |||
65 | /* s0 == low(al*bl) | ||
66 | * s1 == low(ah*bh)+low((al-ah)*(bh-bl))+low(al*bl)+high(al*bl) | ||
67 | * We know s0 and s1 so the only unknown is high(al*bl) | ||
68 | * high(al*bl) == s1 - low(ah*bh+(al-ah)*(bh-bl)+s0) | ||
69 | */ | ||
70 | BN_add(&m,&m,&h); | ||
71 | BN_add(&t2,&m,&s0); | ||
72 | |||
73 | debug_BN_print(stdout,&t2," middle value\n"); | ||
74 | |||
75 | /* Quick and dirty mask off of high words */ | ||
76 | if (w2 < t2.top) t2.top=w2; | ||
77 | #if 0 | ||
78 | bn_set_low(&t3,&t2,w2); | ||
79 | #endif | ||
80 | |||
81 | debug_BN_print(stdout,&t2," low middle value\n"); | ||
82 | BN_sub(&t1,&s1,&t2); | ||
83 | |||
84 | if (t1.neg) | ||
85 | { | ||
86 | debug_BN_print(stdout,&t1," before\n"); | ||
87 | BN_zero(&t2); | ||
88 | BN_set_bit(&t2,w2*BN_BITS2); | ||
89 | BN_add(&t1,&t2,&t1); | ||
90 | /* BN_mask_bits(&t1,w2*BN_BITS2); */ | ||
91 | /* if (words < t1.top) t1.top=words; */ | ||
92 | debug_BN_print(stdout,&t1," after\n"); | ||
93 | borrow=1; | ||
94 | } | ||
95 | |||
96 | /* XXXXX SPEED THIS UP */ | ||
97 | /* al*bl == high(al*bl)<<words+s0 */ | ||
98 | BN_lshift(&t1,&t1,w2*BN_BITS2); | ||
99 | BN_add(&t1,&t1,&s0); | ||
100 | if (w2*2 < t1.top) t1.top=w2*2; /* This should not happen? */ | ||
101 | |||
102 | /* We now have | ||
103 | * al*bl - t1 | ||
104 | * (al-ah)*(bh-bl)+ah*bh - m | ||
105 | * ah*bh - h | ||
106 | */ | ||
107 | #if 0 | ||
108 | BN_add(&m,&m,&t1); | ||
109 | debug_BN_print(stdout,&t1," s10\n"); | ||
110 | debug_BN_print(stdout,&m," s21\n"); | ||
111 | debug_BN_print(stdout,&h," s32\n"); | ||
112 | BN_lshift(&m,&m,w2*BN_BITS2); | ||
113 | BN_lshift(&h,&h,w2*2*BN_BITS2); | ||
114 | BN_add(r,&m,&t1); | ||
115 | BN_add(r,r,&h); | ||
116 | BN_rshift(r,r,w2*2*BN_BITS2); | ||
117 | #else | ||
118 | BN_add(&m,&m,&t1); /* Do a cmp then +1 if needed? */ | ||
119 | bn_set_high(&t3,&t1,w2); | ||
120 | BN_add(&m,&m,&t3); | ||
121 | bn_set_high(&t3,&m,w2); | ||
122 | BN_add(r,&h,&t3); | ||
123 | #endif | ||
124 | |||
125 | #ifdef BN_MUL_HIGH_DEBUG | ||
126 | printf("carry=%d\n",borrow); | ||
127 | #endif | ||
128 | debug_BN_print(stdout,r," ret\n"); | ||
129 | BN_free(&t1); BN_free(&t2); | ||
130 | BN_free(&m); BN_free(&h); | ||
131 | return(1); | ||
132 | } | ||
133 | |||
134 | |||
135 | |||
diff --git a/src/lib/libcrypto/bn/old/bn_ka.c b/src/lib/libcrypto/bn/old/bn_ka.c new file mode 100644 index 0000000000..378c94dc5a --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_ka.c | |||
@@ -0,0 +1,567 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <strings.h> | ||
4 | #include "bn_lcl.h" | ||
5 | |||
6 | /* r is 2*n2 words in size, | ||
7 | * a and b are both n2 words in size. | ||
8 | * n2 must be a power of 2. | ||
9 | * We multiply and return the result. | ||
10 | * t must be 2*n2 words in size | ||
11 | * We calulate | ||
12 | * a[0]*b[0] | ||
13 | * a[0]*b[0]+a[1]*b[1]+(a[0]-a[1])*(b[1]-b[0]) | ||
14 | * a[1]*b[1] | ||
15 | */ | ||
16 | void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2, | ||
17 | BN_ULONG *t) | ||
18 | { | ||
19 | int n=n2/2; | ||
20 | int neg,zero,c1,c2; | ||
21 | BN_ULONG ln,lo,*p; | ||
22 | |||
23 | #ifdef BN_COUNT | ||
24 | printf(" bn_mul_recursive %d * %d\n",n2,n2); | ||
25 | #endif | ||
26 | if (n2 <= 8) | ||
27 | { | ||
28 | if (n2 == 8) | ||
29 | bn_mul_comba8(r,a,b); | ||
30 | else | ||
31 | bn_mul_normal(r,a,n2,b,n2); | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | if (n2 < BN_MUL_RECURSIVE_SIZE_NORMAL) | ||
36 | { | ||
37 | /* This should not happen */ | ||
38 | /*abort(); */ | ||
39 | bn_mul_normal(r,a,n2,b,n2); | ||
40 | return; | ||
41 | } | ||
42 | /* r=(a[0]-a[1])*(b[1]-b[0]) */ | ||
43 | c1=bn_cmp_words(a,&(a[n]),n); | ||
44 | c2=bn_cmp_words(&(b[n]),b,n); | ||
45 | zero=neg=0; | ||
46 | switch (c1*3+c2) | ||
47 | { | ||
48 | case -4: | ||
49 | bn_sub_words(t, &(a[n]),a, n); /* - */ | ||
50 | bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */ | ||
51 | break; | ||
52 | case -3: | ||
53 | zero=1; | ||
54 | break; | ||
55 | case -2: | ||
56 | bn_sub_words(t, &(a[n]),a, n); /* - */ | ||
57 | bn_sub_words(&(t[n]),&(b[n]),b, n); /* + */ | ||
58 | neg=1; | ||
59 | break; | ||
60 | case -1: | ||
61 | case 0: | ||
62 | case 1: | ||
63 | zero=1; | ||
64 | break; | ||
65 | case 2: | ||
66 | bn_sub_words(t, a, &(a[n]),n); /* + */ | ||
67 | bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */ | ||
68 | neg=1; | ||
69 | break; | ||
70 | case 3: | ||
71 | zero=1; | ||
72 | break; | ||
73 | case 4: | ||
74 | bn_sub_words(t, a, &(a[n]),n); | ||
75 | bn_sub_words(&(t[n]),&(b[n]),b, n); | ||
76 | break; | ||
77 | } | ||
78 | |||
79 | if (n == 8) | ||
80 | { | ||
81 | if (!zero) | ||
82 | bn_mul_comba8(&(t[n2]),t,&(t[n])); | ||
83 | else | ||
84 | memset(&(t[n2]),0,8*sizeof(BN_ULONG)); | ||
85 | |||
86 | bn_mul_comba8(r,a,b); | ||
87 | bn_mul_comba8(&(r[n2]),&(a[n]),&(b[n])); | ||
88 | } | ||
89 | else | ||
90 | { | ||
91 | p= &(t[n2*2]); | ||
92 | if (!zero) | ||
93 | bn_mul_recursive(&(t[n2]),t,&(t[n]),n,p); | ||
94 | else | ||
95 | memset(&(t[n2]),0,n*sizeof(BN_ULONG)); | ||
96 | bn_mul_recursive(r,a,b,n,p); | ||
97 | bn_mul_recursive(&(r[n2]),&(a[n]),&(b[n]),n,p); | ||
98 | } | ||
99 | |||
100 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0]), c1 is the sign | ||
101 | * r[10] holds (a[0]*b[0]) | ||
102 | * r[32] holds (b[1]*b[1]) | ||
103 | */ | ||
104 | |||
105 | c1=bn_add_words(t,r,&(r[n2]),n2); | ||
106 | |||
107 | if (neg) /* if t[32] is negative */ | ||
108 | { | ||
109 | c1-=bn_sub_words(&(t[n2]),t,&(t[n2]),n2); | ||
110 | } | ||
111 | else | ||
112 | { | ||
113 | /* Might have a carry */ | ||
114 | c1+=bn_add_words(&(t[n2]),&(t[n2]),t,n2); | ||
115 | } | ||
116 | |||
117 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0])+(a[0]*b[0])+(a[1]*b[1]) | ||
118 | * r[10] holds (a[0]*b[0]) | ||
119 | * r[32] holds (b[1]*b[1]) | ||
120 | * c1 holds the carry bits | ||
121 | */ | ||
122 | c1+=bn_add_words(&(r[n]),&(r[n]),&(t[n2]),n2); | ||
123 | if (c1) | ||
124 | { | ||
125 | p= &(r[n+n2]); | ||
126 | lo= *p; | ||
127 | ln=(lo+c1)&BN_MASK2; | ||
128 | *p=ln; | ||
129 | |||
130 | /* The overflow will stop before we over write | ||
131 | * words we should not overwrite */ | ||
132 | if (ln < c1) | ||
133 | { | ||
134 | do { | ||
135 | p++; | ||
136 | lo= *p; | ||
137 | ln=(lo+1)&BN_MASK2; | ||
138 | *p=ln; | ||
139 | } while (ln == 0); | ||
140 | } | ||
141 | } | ||
142 | } | ||
143 | |||
144 | /* n+tn is the word length | ||
145 | * t needs to be n*4 is size, as does r */ | ||
146 | void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int tn, | ||
147 | int n, BN_ULONG *t) | ||
148 | { | ||
149 | int n2=n*2,i,j; | ||
150 | int c1; | ||
151 | BN_ULONG ln,lo,*p; | ||
152 | |||
153 | #ifdef BN_COUNT | ||
154 | printf(" bn_mul_part_recursive %d * %d\n",tn+n,tn+n); | ||
155 | #endif | ||
156 | if (n < 8) | ||
157 | { | ||
158 | i=tn+n; | ||
159 | bn_mul_normal(r,a,i,b,i); | ||
160 | return; | ||
161 | } | ||
162 | |||
163 | /* r=(a[0]-a[1])*(b[1]-b[0]) */ | ||
164 | bn_sub_words(t, a, &(a[n]),n); /* + */ | ||
165 | bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */ | ||
166 | |||
167 | if (n == 8) | ||
168 | { | ||
169 | bn_mul_comba8(&(t[n2]),t,&(t[n])); | ||
170 | bn_mul_comba8(r,a,b); | ||
171 | bn_mul_normal(&(r[n2]),&(a[n]),tn,&(b[n]),tn); | ||
172 | memset(&(r[n2+tn*2]),0,sizeof(BN_ULONG)*(n2-tn*2)); | ||
173 | } | ||
174 | else | ||
175 | { | ||
176 | p= &(t[n2*2]); | ||
177 | bn_mul_recursive(&(t[n2]),t,&(t[n]),n,p); | ||
178 | bn_mul_recursive(r,a,b,n,p); | ||
179 | i=n/2; | ||
180 | /* If there is only a bottom half to the number, | ||
181 | * just do it */ | ||
182 | j=tn-i; | ||
183 | if (j == 0) | ||
184 | { | ||
185 | bn_mul_recursive(&(r[n2]),&(a[n]),&(b[n]),i,p); | ||
186 | memset(&(r[n2+i*2]),0,sizeof(BN_ULONG)*(n2-i*2)); | ||
187 | } | ||
188 | else if (j > 0) /* eg, n == 16, i == 8 and tn == 11 */ | ||
189 | { | ||
190 | bn_mul_part_recursive(&(r[n2]),&(a[n]),&(b[n]), | ||
191 | j,i,p); | ||
192 | memset(&(r[n2+tn*2]),0, | ||
193 | sizeof(BN_ULONG)*(n2-tn*2)); | ||
194 | } | ||
195 | else /* (j < 0) eg, n == 16, i == 8 and tn == 5 */ | ||
196 | { | ||
197 | memset(&(r[n2]),0,sizeof(BN_ULONG)*(tn*2)); | ||
198 | for (;;) | ||
199 | { | ||
200 | i/=2; | ||
201 | if (i < tn) | ||
202 | { | ||
203 | bn_mul_part_recursive(&(r[n2]), | ||
204 | &(a[n]),&(b[n]), | ||
205 | tn-i,i,p); | ||
206 | break; | ||
207 | } | ||
208 | else if (i == tn) | ||
209 | { | ||
210 | bn_mul_recursive(&(r[n2]), | ||
211 | &(a[n]),&(b[n]), | ||
212 | i,p); | ||
213 | break; | ||
214 | } | ||
215 | } | ||
216 | } | ||
217 | } | ||
218 | |||
219 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0]), c1 is the sign | ||
220 | * r[10] holds (a[0]*b[0]) | ||
221 | * r[32] holds (b[1]*b[1]) | ||
222 | */ | ||
223 | |||
224 | c1=bn_add_words(t,r,&(r[n2]),n2); | ||
225 | c1-=bn_sub_words(&(t[n2]),t,&(t[n2]),n2); | ||
226 | |||
227 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0])+(a[0]*b[0])+(a[1]*b[1]) | ||
228 | * r[10] holds (a[0]*b[0]) | ||
229 | * r[32] holds (b[1]*b[1]) | ||
230 | * c1 holds the carry bits | ||
231 | */ | ||
232 | c1+=bn_add_words(&(r[n]),&(r[n]),&(t[n2]),n2); | ||
233 | if (c1) | ||
234 | { | ||
235 | p= &(r[n+n2]); | ||
236 | lo= *p; | ||
237 | ln=(lo+c1)&BN_MASK2; | ||
238 | *p=ln; | ||
239 | |||
240 | /* The overflow will stop before we over write | ||
241 | * words we should not overwrite */ | ||
242 | if (ln < c1) | ||
243 | { | ||
244 | do { | ||
245 | p++; | ||
246 | lo= *p; | ||
247 | ln=(lo+1)&BN_MASK2; | ||
248 | *p=ln; | ||
249 | } while (ln == 0); | ||
250 | } | ||
251 | } | ||
252 | } | ||
253 | |||
254 | /* r is 2*n words in size, | ||
255 | * a and b are both n words in size. | ||
256 | * n must be a power of 2. | ||
257 | * We multiply and return the result. | ||
258 | * t must be 2*n words in size | ||
259 | * We calulate | ||
260 | * a[0]*b[0] | ||
261 | * a[0]*b[0]+a[1]*b[1]+(a[0]-a[1])*(b[1]-b[0]) | ||
262 | * a[1]*b[1] | ||
263 | */ | ||
264 | void bn_sqr_recursive(BN_ULONG *r, BN_ULONG *a, int n2, BN_ULONG *t) | ||
265 | { | ||
266 | int n=n2/2; | ||
267 | int zero,c1; | ||
268 | BN_ULONG ln,lo,*p; | ||
269 | |||
270 | #ifdef BN_COUNT | ||
271 | printf(" bn_sqr_recursive %d * %d\n",n2,n2); | ||
272 | #endif | ||
273 | if (n2 == 4) | ||
274 | { | ||
275 | bn_sqr_comba4(r,a); | ||
276 | return; | ||
277 | } | ||
278 | else if (n2 == 8) | ||
279 | { | ||
280 | bn_sqr_comba8(r,a); | ||
281 | return; | ||
282 | } | ||
283 | if (n2 < BN_SQR_RECURSIVE_SIZE_NORMAL) | ||
284 | { | ||
285 | bn_sqr_normal(r,a,n2,t); | ||
286 | return; | ||
287 | abort(); | ||
288 | } | ||
289 | /* r=(a[0]-a[1])*(a[1]-a[0]) */ | ||
290 | c1=bn_cmp_words(a,&(a[n]),n); | ||
291 | zero=0; | ||
292 | if (c1 > 0) | ||
293 | bn_sub_words(t,a,&(a[n]),n); | ||
294 | else if (c1 < 0) | ||
295 | bn_sub_words(t,&(a[n]),a,n); | ||
296 | else | ||
297 | zero=1; | ||
298 | |||
299 | /* The result will always be negative unless it is zero */ | ||
300 | |||
301 | if (n == 8) | ||
302 | { | ||
303 | if (!zero) | ||
304 | bn_sqr_comba8(&(t[n2]),t); | ||
305 | else | ||
306 | memset(&(t[n2]),0,8*sizeof(BN_ULONG)); | ||
307 | |||
308 | bn_sqr_comba8(r,a); | ||
309 | bn_sqr_comba8(&(r[n2]),&(a[n])); | ||
310 | } | ||
311 | else | ||
312 | { | ||
313 | p= &(t[n2*2]); | ||
314 | if (!zero) | ||
315 | bn_sqr_recursive(&(t[n2]),t,n,p); | ||
316 | else | ||
317 | memset(&(t[n2]),0,n*sizeof(BN_ULONG)); | ||
318 | bn_sqr_recursive(r,a,n,p); | ||
319 | bn_sqr_recursive(&(r[n2]),&(a[n]),n,p); | ||
320 | } | ||
321 | |||
322 | /* t[32] holds (a[0]-a[1])*(a[1]-a[0]), it is negative or zero | ||
323 | * r[10] holds (a[0]*b[0]) | ||
324 | * r[32] holds (b[1]*b[1]) | ||
325 | */ | ||
326 | |||
327 | c1=bn_add_words(t,r,&(r[n2]),n2); | ||
328 | |||
329 | /* t[32] is negative */ | ||
330 | c1-=bn_sub_words(&(t[n2]),t,&(t[n2]),n2); | ||
331 | |||
332 | /* t[32] holds (a[0]-a[1])*(a[1]-a[0])+(a[0]*a[0])+(a[1]*a[1]) | ||
333 | * r[10] holds (a[0]*a[0]) | ||
334 | * r[32] holds (a[1]*a[1]) | ||
335 | * c1 holds the carry bits | ||
336 | */ | ||
337 | c1+=bn_add_words(&(r[n]),&(r[n]),&(t[n2]),n2); | ||
338 | if (c1) | ||
339 | { | ||
340 | p= &(r[n+n2]); | ||
341 | lo= *p; | ||
342 | ln=(lo+c1)&BN_MASK2; | ||
343 | *p=ln; | ||
344 | |||
345 | /* The overflow will stop before we over write | ||
346 | * words we should not overwrite */ | ||
347 | if (ln < c1) | ||
348 | { | ||
349 | do { | ||
350 | p++; | ||
351 | lo= *p; | ||
352 | ln=(lo+1)&BN_MASK2; | ||
353 | *p=ln; | ||
354 | } while (ln == 0); | ||
355 | } | ||
356 | } | ||
357 | } | ||
358 | |||
359 | #if 1 | ||
360 | /* a and b must be the same size, which is n2. | ||
361 | * r needs to be n2 words and t needs to be n2*2 | ||
362 | */ | ||
363 | void bn_mul_low_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2, | ||
364 | BN_ULONG *t) | ||
365 | { | ||
366 | int n=n2/2; | ||
367 | |||
368 | #ifdef BN_COUNT | ||
369 | printf(" bn_mul_low_recursive %d * %d\n",n2,n2); | ||
370 | #endif | ||
371 | |||
372 | bn_mul_recursive(r,a,b,n,&(t[0])); | ||
373 | if (n > BN_MUL_LOW_RECURSIVE_SIZE_NORMAL) | ||
374 | { | ||
375 | bn_mul_low_recursive(&(t[0]),&(a[0]),&(b[n]),n,&(t[n2])); | ||
376 | bn_add_words(&(r[n]),&(r[n]),&(t[0]),n); | ||
377 | bn_mul_low_recursive(&(t[0]),&(a[n]),&(b[0]),n,&(t[n2])); | ||
378 | bn_add_words(&(r[n]),&(r[n]),&(t[0]),n); | ||
379 | } | ||
380 | else | ||
381 | { | ||
382 | bn_mul_low_normal(&(t[0]),&(a[0]),&(b[n]),n); | ||
383 | bn_mul_low_normal(&(t[n]),&(a[n]),&(b[0]),n); | ||
384 | bn_add_words(&(r[n]),&(r[n]),&(t[0]),n); | ||
385 | bn_add_words(&(r[n]),&(r[n]),&(t[n]),n); | ||
386 | } | ||
387 | } | ||
388 | |||
389 | /* a and b must be the same size, which is n2. | ||
390 | * r needs to be n2 words and t needs to be n2*2 | ||
391 | * l is the low words of the output. | ||
392 | * t needs to be n2*3 | ||
393 | */ | ||
394 | void bn_mul_high(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, BN_ULONG *l, int n2, | ||
395 | BN_ULONG *t) | ||
396 | { | ||
397 | int j,i,n,c1,c2; | ||
398 | int neg,oneg,zero; | ||
399 | BN_ULONG ll,lc,*lp,*mp; | ||
400 | |||
401 | #ifdef BN_COUNT | ||
402 | printf(" bn_mul_high %d * %d\n",n2,n2); | ||
403 | #endif | ||
404 | n=(n2+1)/2; | ||
405 | |||
406 | /* Calculate (al-ah)*(bh-bl) */ | ||
407 | neg=zero=0; | ||
408 | c1=bn_cmp_words(&(a[0]),&(a[n]),n); | ||
409 | c2=bn_cmp_words(&(b[n]),&(b[0]),n); | ||
410 | switch (c1*3+c2) | ||
411 | { | ||
412 | case -4: | ||
413 | bn_sub_words(&(r[0]),&(a[n]),&(a[0]),n); | ||
414 | bn_sub_words(&(r[n]),&(b[0]),&(b[n]),n); | ||
415 | break; | ||
416 | case -3: | ||
417 | zero=1; | ||
418 | break; | ||
419 | case -2: | ||
420 | bn_sub_words(&(r[0]),&(a[n]),&(a[0]),n); | ||
421 | bn_sub_words(&(r[n]),&(b[n]),&(b[0]),n); | ||
422 | neg=1; | ||
423 | break; | ||
424 | case -1: | ||
425 | case 0: | ||
426 | case 1: | ||
427 | zero=1; | ||
428 | break; | ||
429 | case 2: | ||
430 | bn_sub_words(&(r[0]),&(a[0]),&(a[n]),n); | ||
431 | bn_sub_words(&(r[n]),&(b[0]),&(b[n]),n); | ||
432 | neg=1; | ||
433 | break; | ||
434 | case 3: | ||
435 | zero=1; | ||
436 | break; | ||
437 | case 4: | ||
438 | bn_sub_words(&(r[0]),&(a[0]),&(a[n]),n); | ||
439 | bn_sub_words(&(r[n]),&(b[n]),&(b[0]),n); | ||
440 | break; | ||
441 | } | ||
442 | |||
443 | oneg=neg; | ||
444 | /* t[10] = (a[0]-a[1])*(b[1]-b[0]) */ | ||
445 | bn_mul_recursive(&(t[0]),&(r[0]),&(r[n]),n,&(t[n2])); | ||
446 | /* r[10] = (a[1]*b[1]) */ | ||
447 | bn_mul_recursive(r,&(a[n]),&(b[n]),n,&(t[n2])); | ||
448 | |||
449 | /* s0 == low(al*bl) | ||
450 | * s1 == low(ah*bh)+low((al-ah)*(bh-bl))+low(al*bl)+high(al*bl) | ||
451 | * We know s0 and s1 so the only unknown is high(al*bl) | ||
452 | * high(al*bl) == s1 - low(ah*bh+s0+(al-ah)*(bh-bl)) | ||
453 | * high(al*bl) == s1 - (r[0]+l[0]+t[0]) | ||
454 | */ | ||
455 | if (l != NULL) | ||
456 | { | ||
457 | lp= &(t[n2+n]); | ||
458 | c1=bn_add_words(lp,&(r[0]),&(l[0]),n); | ||
459 | } | ||
460 | else | ||
461 | { | ||
462 | c1=0; | ||
463 | lp= &(r[0]); | ||
464 | } | ||
465 | |||
466 | if (neg) | ||
467 | neg=bn_sub_words(&(t[n2]),lp,&(t[0]),n); | ||
468 | else | ||
469 | { | ||
470 | bn_add_words(&(t[n2]),lp,&(t[0]),n); | ||
471 | neg=0; | ||
472 | } | ||
473 | |||
474 | if (l != NULL) | ||
475 | { | ||
476 | bn_sub_words(&(t[n2+n]),&(l[n]),&(t[n2]),n); | ||
477 | } | ||
478 | else | ||
479 | { | ||
480 | lp= &(t[n2+n]); | ||
481 | mp= &(t[n2]); | ||
482 | for (i=0; i<n; i++) | ||
483 | lp[i]=((~mp[i])+1)&BN_MASK2; | ||
484 | } | ||
485 | |||
486 | /* s[0] = low(al*bl) | ||
487 | * t[3] = high(al*bl) | ||
488 | * t[10] = (a[0]-a[1])*(b[1]-b[0]) neg is the sign | ||
489 | * r[10] = (a[1]*b[1]) | ||
490 | */ | ||
491 | /* R[10] = al*bl | ||
492 | * R[21] = al*bl + ah*bh + (a[0]-a[1])*(b[1]-b[0]) | ||
493 | * R[32] = ah*bh | ||
494 | */ | ||
495 | /* R[1]=t[3]+l[0]+r[0](+-)t[0] (have carry/borrow) | ||
496 | * R[2]=r[0]+t[3]+r[1](+-)t[1] (have carry/borrow) | ||
497 | * R[3]=r[1]+(carry/borrow) | ||
498 | */ | ||
499 | if (l != NULL) | ||
500 | { | ||
501 | lp= &(t[n2]); | ||
502 | c1= bn_add_words(lp,&(t[n2+n]),&(l[0]),n); | ||
503 | } | ||
504 | else | ||
505 | { | ||
506 | lp= &(t[n2+n]); | ||
507 | c1=0; | ||
508 | } | ||
509 | c1+=bn_add_words(&(t[n2]),lp, &(r[0]),n); | ||
510 | if (oneg) | ||
511 | c1-=bn_sub_words(&(t[n2]),&(t[n2]),&(t[0]),n); | ||
512 | else | ||
513 | c1+=bn_add_words(&(t[n2]),&(t[n2]),&(t[0]),n); | ||
514 | |||
515 | c2 =bn_add_words(&(r[0]),&(r[0]),&(t[n2+n]),n); | ||
516 | c2+=bn_add_words(&(r[0]),&(r[0]),&(r[n]),n); | ||
517 | if (oneg) | ||
518 | c2-=bn_sub_words(&(r[0]),&(r[0]),&(t[n]),n); | ||
519 | else | ||
520 | c2+=bn_add_words(&(r[0]),&(r[0]),&(t[n]),n); | ||
521 | |||
522 | if (c1 != 0) /* Add starting at r[0], could be +ve or -ve */ | ||
523 | { | ||
524 | i=0; | ||
525 | if (c1 > 0) | ||
526 | { | ||
527 | lc=c1; | ||
528 | do { | ||
529 | ll=(r[i]+lc)&BN_MASK2; | ||
530 | r[i++]=ll; | ||
531 | lc=(lc > ll); | ||
532 | } while (lc); | ||
533 | } | ||
534 | else | ||
535 | { | ||
536 | lc= -c1; | ||
537 | do { | ||
538 | ll=r[i]; | ||
539 | r[i++]=(ll-lc)&BN_MASK2; | ||
540 | lc=(lc > ll); | ||
541 | } while (lc); | ||
542 | } | ||
543 | } | ||
544 | if (c2 != 0) /* Add starting at r[1] */ | ||
545 | { | ||
546 | i=n; | ||
547 | if (c2 > 0) | ||
548 | { | ||
549 | lc=c2; | ||
550 | do { | ||
551 | ll=(r[i]+lc)&BN_MASK2; | ||
552 | r[i++]=ll; | ||
553 | lc=(lc > ll); | ||
554 | } while (lc); | ||
555 | } | ||
556 | else | ||
557 | { | ||
558 | lc= -c2; | ||
559 | do { | ||
560 | ll=r[i]; | ||
561 | r[i++]=(ll-lc)&BN_MASK2; | ||
562 | lc=(lc > ll); | ||
563 | } while (lc); | ||
564 | } | ||
565 | } | ||
566 | } | ||
567 | #endif | ||
diff --git a/src/lib/libcrypto/bn/old/bn_low.c b/src/lib/libcrypto/bn/old/bn_low.c new file mode 100644 index 0000000000..cbc406751c --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_low.c | |||
@@ -0,0 +1,194 @@ | |||
1 | /* crypto/bn/bn_mul.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | static int bn_mm_low(BIGNUM *m,BIGNUM *A,BIGNUM *B, int num, | ||
64 | BIGNUM *sk,BN_CTX *ctx); | ||
65 | int BN_mul_low(BIGNUM *r, BIGNUM *a, BIGNUM *b,int words); | ||
66 | |||
67 | /* r must be different to a and b */ | ||
68 | int BN_mul_low(BIGNUM *r, BIGNUM *a, BIGNUM *b, int num) | ||
69 | { | ||
70 | BN_ULONG *ap,*bp,*rp; | ||
71 | BIGNUM *sk; | ||
72 | int j,i,n,ret; | ||
73 | int max,al,bl; | ||
74 | BN_CTX ctx; | ||
75 | |||
76 | bn_check_top(a); | ||
77 | bn_check_top(b); | ||
78 | |||
79 | #ifdef BN_MUL_DEBUG | ||
80 | printf("BN_mul_low(%d,%d,%d)\n",a->top,b->top,num); | ||
81 | #endif | ||
82 | |||
83 | al=a->top; | ||
84 | bl=b->top; | ||
85 | if ((al == 0) || (bl == 0)) | ||
86 | { | ||
87 | r->top=0; | ||
88 | return(1); | ||
89 | } | ||
90 | |||
91 | if ((bn_limit_bits_low > 0) && (num > bn_limit_num_low)) | ||
92 | { | ||
93 | n=BN_num_bits_word(num*2)-bn_limit_bits_low; | ||
94 | n*=2; | ||
95 | sk=(BIGNUM *)Malloc(sizeof(BIGNUM)*n); | ||
96 | memset(sk,0,sizeof(BIGNUM)*n); | ||
97 | memset(&ctx,0,sizeof(ctx)); | ||
98 | |||
99 | ret=bn_mm_low(r,a,b,num,&(sk[0]),&ctx); | ||
100 | for (i=0; i<n; i+=2) | ||
101 | { | ||
102 | BN_clear_free(&sk[i]); | ||
103 | BN_clear_free(&sk[i+1]); | ||
104 | } | ||
105 | Free(sk); | ||
106 | return(ret); | ||
107 | } | ||
108 | |||
109 | max=(al+bl); | ||
110 | if (bn_wexpand(r,max) == NULL) return(0); | ||
111 | r->neg=a->neg^b->neg; | ||
112 | ap=a->d; | ||
113 | bp=b->d; | ||
114 | rp=r->d; | ||
115 | r->top=(max > num)?num:max; | ||
116 | |||
117 | rp[al]=bn_mul_words(rp,ap,al,*(bp++)); | ||
118 | rp++; | ||
119 | j=bl; | ||
120 | for (i=1; i<j; i++) | ||
121 | { | ||
122 | if (al >= num--) | ||
123 | { | ||
124 | al--; | ||
125 | if (al <= 0) break; | ||
126 | } | ||
127 | rp[al]=bn_mul_add_words(rp,ap,al,*(bp++)); | ||
128 | rp++; | ||
129 | } | ||
130 | |||
131 | while ((r->top > 0) && (r->d[r->top-1] == 0)) | ||
132 | r->top--; | ||
133 | return(1); | ||
134 | } | ||
135 | |||
136 | |||
137 | #define t1 (sk[0]) | ||
138 | #define t2 (sk[1]) | ||
139 | |||
140 | /* r must be different to a and b */ | ||
141 | int bn_mm_low(BIGNUM *m, BIGNUM *A, BIGNUM *B, int num, BIGNUM *sk, | ||
142 | BN_CTX *ctx) | ||
143 | { | ||
144 | int n; /* ,sqr=0; */ | ||
145 | int an,bn; | ||
146 | BIGNUM ah,al,bh,bl; | ||
147 | |||
148 | bn_wexpand(m,num+3); | ||
149 | an=A->top; | ||
150 | bn=B->top; | ||
151 | |||
152 | #ifdef BN_MUL_DEBUG | ||
153 | printf("bn_mm_low(%d,%d,%d)\n",A->top,B->top,num); | ||
154 | #endif | ||
155 | |||
156 | n=(num+1)/2; | ||
157 | |||
158 | BN_init(&ah); BN_init(&al); BN_init(&bh); BN_init(&bl); | ||
159 | |||
160 | bn_set_low( &al,A,n); | ||
161 | bn_set_high(&ah,A,n); | ||
162 | bn_set_low( &bl,B,n); | ||
163 | bn_set_high(&bh,B,n); | ||
164 | |||
165 | if (num <= (bn_limit_num_low+bn_limit_num_low)) | ||
166 | { | ||
167 | BN_mul(m,&al,&bl); | ||
168 | BN_mul_low(&t1,&al,&bh,n); | ||
169 | BN_mul_low(&t2,&ah,&bl,n); | ||
170 | } | ||
171 | else | ||
172 | { | ||
173 | bn_mm(m ,&al,&bl,&(sk[2]),ctx); | ||
174 | bn_mm_low(&t1,&al,&bh,n,&(sk[2]),ctx); | ||
175 | bn_mm_low(&t2,&ah,&bl,n,&(sk[2]),ctx); | ||
176 | } | ||
177 | |||
178 | BN_add(&t1,&t1,&t2); | ||
179 | |||
180 | /* We will now do an evil hack instead of | ||
181 | * BN_lshift(&t1,&t1,n*BN_BITS2); | ||
182 | * BN_add(m,m,&t1); | ||
183 | * BN_mask_bits(m,num*BN_BITS2); | ||
184 | */ | ||
185 | bn_set_high(&ah,m,n); ah.max=num+2; | ||
186 | BN_add(&ah,&ah,&t1); | ||
187 | m->top=num; | ||
188 | |||
189 | m->neg=A->neg^B->neg; | ||
190 | return(1); | ||
191 | } | ||
192 | |||
193 | #undef t1 (sk[0]) | ||
194 | #undef t2 (sk[1]) | ||
diff --git a/src/lib/libcrypto/bn/old/bn_m.c b/src/lib/libcrypto/bn/old/bn_m.c new file mode 100644 index 0000000000..522beb02bc --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_m.c | |||
@@ -0,0 +1,139 @@ | |||
1 | /* crypto/bn/bn_m.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | /*#include "cryptlib.h"*/ | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | #define limit_bits 5 /* 2^5, or 32 words */ | ||
64 | #define limit_num (1<<limit_bits) | ||
65 | |||
66 | int BN_m(BIGNUM *r, BIGNUM *a, BIGNUM *b) | ||
67 | { | ||
68 | BIGNUM *sk; | ||
69 | int i,n; | ||
70 | |||
71 | n=(BN_num_bits_word(a->top|b->top)-limit_bits); | ||
72 | n*=2; | ||
73 | sk=(BIGNUM *)malloc(sizeof(BIGNUM)*n); | ||
74 | for (i=0; i<n; i++) | ||
75 | BN_init(&(sk[i])); | ||
76 | |||
77 | return(BN_mm(r,a,b,&(sk[0]))); | ||
78 | } | ||
79 | |||
80 | #define ahal (sk[0]) | ||
81 | #define blbh (sk[1]) | ||
82 | |||
83 | /* r must be different to a and b */ | ||
84 | int BN_mm(BIGNUM *m, BIGNUM *A, BIGNUM *B, BIGNUM *sk) | ||
85 | { | ||
86 | int i,num,anum,bnum; | ||
87 | int an,bn; | ||
88 | BIGNUM ah,al,bh,bl; | ||
89 | |||
90 | an=A->top; | ||
91 | bn=B->top; | ||
92 | if ((an <= limit_num) || (bn <= limit_num)) | ||
93 | { | ||
94 | return(BN_mul(m,A,B)); | ||
95 | } | ||
96 | |||
97 | anum=(an>bn)?an:bn; | ||
98 | num=(anum)/2; | ||
99 | |||
100 | /* Are going to now chop things into 'num' word chunks. */ | ||
101 | bnum=num*BN_BITS2; | ||
102 | |||
103 | BN_init(&ahal); | ||
104 | BN_init(&blbh); | ||
105 | BN_init(&ah); | ||
106 | BN_init(&al); | ||
107 | BN_init(&bh); | ||
108 | BN_init(&bl); | ||
109 | |||
110 | al.top=num; | ||
111 | al.d=A->d; | ||
112 | ah.top=A->top-num; | ||
113 | ah.d= &(A->d[num]); | ||
114 | |||
115 | bl.top=num; | ||
116 | bl.d=B->d; | ||
117 | bh.top=B->top-num; | ||
118 | bh.d= &(B->d[num]); | ||
119 | |||
120 | BN_sub(&ahal,&ah,&al); | ||
121 | BN_sub(&blbh,&bl,&bh); | ||
122 | |||
123 | BN_mm(m,&ahal,&blbh,&(sk[2])); | ||
124 | BN_mm(&ahal,&al,&bl,&(sk[2])); | ||
125 | BN_mm(&blbh,&ah,&bh,&(sk[2])); | ||
126 | |||
127 | BN_add(m,m,&ahal); | ||
128 | BN_add(m,m,&blbh); | ||
129 | |||
130 | BN_lshift(m,m,bnum); | ||
131 | BN_add(m,m,&ahal); | ||
132 | |||
133 | BN_lshift(&blbh,&blbh,bnum*2); | ||
134 | BN_add(m,m,&blbh); | ||
135 | |||
136 | m->neg=A->neg^B->neg; | ||
137 | return(1); | ||
138 | } | ||
139 | |||
diff --git a/src/lib/libcrypto/bn/old/bn_mul.c.works b/src/lib/libcrypto/bn/old/bn_mul.c.works new file mode 100644 index 0000000000..6d565d44a2 --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_mul.c.works | |||
@@ -0,0 +1,219 @@ | |||
1 | /* crypto/bn/bn_mul.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | int bn_mm(BIGNUM *m,BIGNUM *A,BIGNUM *B, BIGNUM *sk,BN_CTX *ctx); | ||
64 | |||
65 | /* r must be different to a and b */ | ||
66 | int BN_mul(r, a, b) | ||
67 | BIGNUM *r; | ||
68 | BIGNUM *a; | ||
69 | BIGNUM *b; | ||
70 | { | ||
71 | BN_ULONG *ap,*bp,*rp; | ||
72 | BIGNUM *sk; | ||
73 | int i,n,ret; | ||
74 | int max,al,bl; | ||
75 | BN_CTX ctx; | ||
76 | |||
77 | bn_check_top(a); | ||
78 | bn_check_top(b); | ||
79 | |||
80 | al=a->top; | ||
81 | bl=b->top; | ||
82 | if ((al == 0) || (bl == 0)) | ||
83 | { | ||
84 | r->top=0; | ||
85 | return(1); | ||
86 | } | ||
87 | #ifdef BN_MUL_DEBUG | ||
88 | printf("BN_mul(%d,%d)\n",a->top,b->top); | ||
89 | #endif | ||
90 | |||
91 | #ifdef BN_RECURSION | ||
92 | if ( (bn_limit_bits > 0) && | ||
93 | (bl > bn_limit_num) && (al > bn_limit_num)) | ||
94 | { | ||
95 | n=(BN_num_bits_word(al|bl)-bn_limit_bits); | ||
96 | n*=2; | ||
97 | sk=(BIGNUM *)Malloc(sizeof(BIGNUM)*n); | ||
98 | memset(sk,0,sizeof(BIGNUM)*n); | ||
99 | memset(&ctx,0,sizeof(ctx)); | ||
100 | |||
101 | ret=bn_mm(r,a,b,&(sk[0]),&ctx); | ||
102 | for (i=0; i<n; i+=2) | ||
103 | { | ||
104 | BN_clear_free(&sk[i]); | ||
105 | BN_clear_free(&sk[i+1]); | ||
106 | } | ||
107 | Free(sk); | ||
108 | return(ret); | ||
109 | } | ||
110 | #endif | ||
111 | |||
112 | max=(al+bl); | ||
113 | if (bn_wexpand(r,max) == NULL) return(0); | ||
114 | r->top=max; | ||
115 | r->neg=a->neg^b->neg; | ||
116 | ap=a->d; | ||
117 | bp=b->d; | ||
118 | rp=r->d; | ||
119 | |||
120 | #ifdef BN_RECURSION | ||
121 | if ((al == bl) && (al == 8)) | ||
122 | { | ||
123 | bn_mul_comba8(rp,ap,bp); | ||
124 | } | ||
125 | else | ||
126 | #endif | ||
127 | { | ||
128 | rp[al]=bn_mul_words(rp,ap,al,*(bp++)); | ||
129 | rp++; | ||
130 | for (i=1; i<bl; i++) | ||
131 | { | ||
132 | rp[al]=bn_mul_add_words(rp,ap,al,*(bp++)); | ||
133 | rp++; | ||
134 | } | ||
135 | } | ||
136 | if ((max > 0) && (r->d[max-1] == 0)) r->top--; | ||
137 | return(1); | ||
138 | } | ||
139 | |||
140 | #ifdef BN_RECURSION | ||
141 | |||
142 | #define ahal (sk[0]) | ||
143 | #define blbh (sk[1]) | ||
144 | |||
145 | /* r must be different to a and b */ | ||
146 | int bn_mm(m, A, B, sk,ctx) | ||
147 | BIGNUM *m,*A,*B; | ||
148 | BIGNUM *sk; | ||
149 | BN_CTX *ctx; | ||
150 | { | ||
151 | int n,num,sqr=0; | ||
152 | int an,bn; | ||
153 | BIGNUM ah,al,bh,bl; | ||
154 | |||
155 | an=A->top; | ||
156 | bn=B->top; | ||
157 | #ifdef BN_MUL_DEBUG | ||
158 | printf("bn_mm(%d,%d)\n",A->top,B->top); | ||
159 | #endif | ||
160 | |||
161 | if (A == B) sqr=1; | ||
162 | num=(an>bn)?an:bn; | ||
163 | n=(num+1)/2; | ||
164 | /* Are going to now chop things into 'num' word chunks. */ | ||
165 | |||
166 | BN_init(&ah); | ||
167 | BN_init(&al); | ||
168 | BN_init(&bh); | ||
169 | BN_init(&bl); | ||
170 | |||
171 | bn_set_low (&al,A,n); | ||
172 | bn_set_high(&ah,A,n); | ||
173 | bn_set_low (&bl,B,n); | ||
174 | bn_set_high(&bh,B,n); | ||
175 | |||
176 | BN_sub(&ahal,&ah,&al); | ||
177 | BN_sub(&blbh,&bl,&bh); | ||
178 | |||
179 | if (num <= (bn_limit_num+bn_limit_num)) | ||
180 | { | ||
181 | BN_mul(m,&ahal,&blbh); | ||
182 | if (sqr) | ||
183 | { | ||
184 | BN_sqr(&ahal,&al,ctx); | ||
185 | BN_sqr(&blbh,&ah,ctx); | ||
186 | } | ||
187 | else | ||
188 | { | ||
189 | BN_mul(&ahal,&al,&bl); | ||
190 | BN_mul(&blbh,&ah,&bh); | ||
191 | } | ||
192 | } | ||
193 | else | ||
194 | { | ||
195 | bn_mm(m,&ahal,&blbh,&(sk[2]),ctx); | ||
196 | bn_mm(&ahal,&al,&bl,&(sk[2]),ctx); | ||
197 | bn_mm(&blbh,&ah,&bh,&(sk[2]),ctx); | ||
198 | } | ||
199 | |||
200 | BN_add(m,m,&ahal); | ||
201 | BN_add(m,m,&blbh); | ||
202 | |||
203 | BN_lshift(m,m,n*BN_BITS2); | ||
204 | BN_lshift(&blbh,&blbh,n*BN_BITS2*2); | ||
205 | |||
206 | BN_add(m,m,&ahal); | ||
207 | BN_add(m,m,&blbh); | ||
208 | |||
209 | m->neg=A->neg^B->neg; | ||
210 | return(1); | ||
211 | } | ||
212 | #undef ahal (sk[0]) | ||
213 | #undef blbh (sk[1]) | ||
214 | |||
215 | #include "bn_low.c" | ||
216 | #include "bn_high.c" | ||
217 | #include "f.c" | ||
218 | |||
219 | #endif | ||
diff --git a/src/lib/libcrypto/bn/old/bn_wmul.c b/src/lib/libcrypto/bn/old/bn_wmul.c new file mode 100644 index 0000000000..a467b2f17a --- /dev/null +++ b/src/lib/libcrypto/bn/old/bn_wmul.c | |||
@@ -0,0 +1,173 @@ | |||
1 | #include <stdio.h> | ||
2 | #include "bn_lcl.h" | ||
3 | |||
4 | #if 1 | ||
5 | |||
6 | int bn_mull(BIGNUM *r,BIGNUM *a,BIGNUM *b, BN_CTX *ctx); | ||
7 | |||
8 | int bn_mull(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx) | ||
9 | { | ||
10 | int top,i,j,k,al,bl; | ||
11 | BIGNUM *t; | ||
12 | |||
13 | #ifdef BN_COUNT | ||
14 | printf("bn_mull %d * %d\n",a->top,b->top); | ||
15 | #endif | ||
16 | |||
17 | bn_check_top(a); | ||
18 | bn_check_top(b); | ||
19 | bn_check_top(r); | ||
20 | |||
21 | al=a->top; | ||
22 | bl=b->top; | ||
23 | r->neg=a->neg^b->neg; | ||
24 | |||
25 | top=al+bl; | ||
26 | if ((al < 4) || (bl < 4)) | ||
27 | { | ||
28 | if (bn_wexpand(r,top) == NULL) return(0); | ||
29 | r->top=top; | ||
30 | bn_mul_normal(r->d,a->d,al,b->d,bl); | ||
31 | goto end; | ||
32 | } | ||
33 | else if (al == bl) /* A good start, they are the same size */ | ||
34 | goto symetric; | ||
35 | else | ||
36 | { | ||
37 | i=(al-bl); | ||
38 | if ((i == 1) && !BN_get_flags(b,BN_FLG_STATIC_DATA)) | ||
39 | { | ||
40 | bn_wexpand(b,al); | ||
41 | b->d[bl]=0; | ||
42 | bl++; | ||
43 | goto symetric; | ||
44 | } | ||
45 | else if ((i == -1) && !BN_get_flags(a,BN_FLG_STATIC_DATA)) | ||
46 | { | ||
47 | bn_wexpand(a,bl); | ||
48 | a->d[al]=0; | ||
49 | al++; | ||
50 | goto symetric; | ||
51 | } | ||
52 | } | ||
53 | |||
54 | /* asymetric and >= 4 */ | ||
55 | if (bn_wexpand(r,top) == NULL) return(0); | ||
56 | r->top=top; | ||
57 | bn_mul_normal(r->d,a->d,al,b->d,bl); | ||
58 | |||
59 | if (0) | ||
60 | { | ||
61 | /* symetric and > 4 */ | ||
62 | symetric: | ||
63 | if (al == 4) | ||
64 | { | ||
65 | if (bn_wexpand(r,al*2) == NULL) return(0); | ||
66 | r->top=top; | ||
67 | bn_mul_comba4(r->d,a->d,b->d); | ||
68 | goto end; | ||
69 | } | ||
70 | if (al == 8) | ||
71 | { | ||
72 | if (bn_wexpand(r,al*2) == NULL) return(0); | ||
73 | r->top=top; | ||
74 | bn_mul_comba8(r->d,a->d,b->d); | ||
75 | goto end; | ||
76 | } | ||
77 | if (al <= BN_MULL_NORMAL_SIZE) | ||
78 | { | ||
79 | if (bn_wexpand(r,al*2) == NULL) return(0); | ||
80 | r->top=top; | ||
81 | bn_mul_normal(r->d,a->d,al,b->d,bl); | ||
82 | goto end; | ||
83 | } | ||
84 | /* 16 or larger */ | ||
85 | j=BN_num_bits_word((BN_ULONG)al); | ||
86 | j=1<<(j-1); | ||
87 | k=j+j; | ||
88 | t= &(ctx->bn[ctx->tos]); | ||
89 | if (al == j) /* exact multiple */ | ||
90 | { | ||
91 | bn_wexpand(t,k*2); | ||
92 | bn_wexpand(r,k*2); | ||
93 | bn_mul_recursive(r->d,a->d,b->d,al,t->d); | ||
94 | } | ||
95 | else | ||
96 | { | ||
97 | bn_wexpand(a,k); | ||
98 | bn_wexpand(b,k); | ||
99 | bn_wexpand(t,k*4); | ||
100 | bn_wexpand(r,k*4); | ||
101 | for (i=a->top; i<k; i++) | ||
102 | a->d[i]=0; | ||
103 | for (i=b->top; i<k; i++) | ||
104 | b->d[i]=0; | ||
105 | bn_mul_part_recursive(r->d,a->d,b->d,al-j,j,t->d); | ||
106 | } | ||
107 | r->top=top; | ||
108 | } | ||
109 | end: | ||
110 | bn_fix_top(r); | ||
111 | return(1); | ||
112 | } | ||
113 | #endif | ||
114 | |||
115 | void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb) | ||
116 | { | ||
117 | BN_ULONG *rr; | ||
118 | |||
119 | #ifdef BN_COUNT | ||
120 | printf(" bn_mul_normal %d * %d\n",na,nb); | ||
121 | #endif | ||
122 | |||
123 | if (na < nb) | ||
124 | { | ||
125 | int itmp; | ||
126 | BN_ULONG *ltmp; | ||
127 | |||
128 | itmp=na; na=nb; nb=itmp; | ||
129 | ltmp=a; a=b; b=ltmp; | ||
130 | |||
131 | } | ||
132 | rr= &(r[na]); | ||
133 | rr[0]=bn_mul_words(r,a,na,b[0]); | ||
134 | |||
135 | for (;;) | ||
136 | { | ||
137 | if (--nb <= 0) return; | ||
138 | rr[1]=bn_mul_add_words(&(r[1]),a,na,b[1]); | ||
139 | if (--nb <= 0) return; | ||
140 | rr[2]=bn_mul_add_words(&(r[2]),a,na,b[2]); | ||
141 | if (--nb <= 0) return; | ||
142 | rr[3]=bn_mul_add_words(&(r[3]),a,na,b[3]); | ||
143 | if (--nb <= 0) return; | ||
144 | rr[4]=bn_mul_add_words(&(r[4]),a,na,b[4]); | ||
145 | rr+=4; | ||
146 | r+=4; | ||
147 | b+=4; | ||
148 | } | ||
149 | } | ||
150 | |||
151 | #if 1 | ||
152 | void bn_mul_low_normal(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n) | ||
153 | { | ||
154 | #ifdef BN_COUNT | ||
155 | printf(" bn_mul_low_normal %d * %d\n",n,n); | ||
156 | #endif | ||
157 | bn_mul_words(r,a,n,b[0]); | ||
158 | |||
159 | for (;;) | ||
160 | { | ||
161 | if (--n <= 0) return; | ||
162 | bn_mul_add_words(&(r[1]),a,n,b[1]); | ||
163 | if (--n <= 0) return; | ||
164 | bn_mul_add_words(&(r[2]),a,n,b[2]); | ||
165 | if (--n <= 0) return; | ||
166 | bn_mul_add_words(&(r[3]),a,n,b[3]); | ||
167 | if (--n <= 0) return; | ||
168 | bn_mul_add_words(&(r[4]),a,n,b[4]); | ||
169 | r+=4; | ||
170 | b+=4; | ||
171 | } | ||
172 | } | ||
173 | #endif | ||
diff --git a/src/lib/libcrypto/bn/old/build b/src/lib/libcrypto/bn/old/build new file mode 100644 index 0000000000..8cd99e5f17 --- /dev/null +++ b/src/lib/libcrypto/bn/old/build | |||
@@ -0,0 +1,3 @@ | |||
1 | #!/bin/sh -x | ||
2 | |||
3 | gcc -g -I../../include test.c -L../.. -lcrypto | ||
diff --git a/src/lib/libcrypto/bn/old/info b/src/lib/libcrypto/bn/old/info new file mode 100644 index 0000000000..5ac99c3b23 --- /dev/null +++ b/src/lib/libcrypto/bn/old/info | |||
@@ -0,0 +1,22 @@ | |||
1 | Given A1A0 * B1B0 == S3S2S1S0 | ||
2 | |||
3 | S0= low(A0*B0) | ||
4 | S1= low( (A1-A0)*(B0-B1)) +low( A1*B1) +high(A0*B0) | ||
5 | S2= high((A1-A0)*(B0-B1)) +high(A1*B1) +low( A1*B1) | ||
6 | S3= high(A1*B1); | ||
7 | |||
8 | Assume we know S1 and S0, and can calulate A1*B1 and high((A1-A0)*(B0-B1)) | ||
9 | |||
10 | k0= S0 == low(A0*B0) | ||
11 | k1= S1 | ||
12 | k2= low( A1*B1) | ||
13 | k3= high(A1*B1) | ||
14 | k4= high((A1-A0)*(B0-B1)) | ||
15 | |||
16 | k1= low((A1-A0)*(B0-B1)) +k2 +high(A0*B0) | ||
17 | S2= k4 +k3 +k2 | ||
18 | S3= k3 | ||
19 | |||
20 | S1-k2= low((A1-A0)*(B0-B1)) +high(A0*B0) | ||
21 | |||
22 | We potentially have a carry or a borrow from S1 | ||
diff --git a/src/lib/libcrypto/bn/old/test.works b/src/lib/libcrypto/bn/old/test.works new file mode 100644 index 0000000000..127c7b415d --- /dev/null +++ b/src/lib/libcrypto/bn/old/test.works | |||
@@ -0,0 +1,205 @@ | |||
1 | #include <stdio.h> | ||
2 | #include "cryptlib.h" | ||
3 | #include "bn_lcl.h" | ||
4 | |||
5 | #define SIZE 128 | ||
6 | |||
7 | #define BN_MONT_CTX_set bn_mcs | ||
8 | #define BN_from_montgomery bn_fm | ||
9 | #define BN_mod_mul_montgomery bn_mmm | ||
10 | #undef BN_to_montgomery | ||
11 | #define BN_to_montgomery(r,a,mont,ctx) bn_mmm(\ | ||
12 | r,a,(mont)->RR,(mont),ctx) | ||
13 | |||
14 | main() | ||
15 | { | ||
16 | BIGNUM prime,a,b,r,A,B,R; | ||
17 | BN_MONT_CTX *mont; | ||
18 | BN_CTX *ctx; | ||
19 | int i; | ||
20 | |||
21 | ctx=BN_CTX_new(); | ||
22 | BN_init(&prime); | ||
23 | BN_init(&a); BN_init(&b); BN_init(&r); | ||
24 | BN_init(&A); BN_init(&B); BN_init(&R); | ||
25 | |||
26 | BN_generate_prime(&prime,SIZE,0,NULL,NULL,NULL,NULL); | ||
27 | BN_rand(&A,SIZE,1,0); | ||
28 | BN_rand(&B,SIZE,1,0); | ||
29 | BN_mod(&A,&A,&prime,ctx); | ||
30 | BN_mod(&B,&B,&prime,ctx); | ||
31 | |||
32 | mont=BN_MONT_CTX_new(); | ||
33 | BN_MONT_CTX_set(mont,&prime,ctx); | ||
34 | |||
35 | BN_to_montgomery(&a,&A,mont,ctx); | ||
36 | BN_to_montgomery(&b,&B,mont,ctx); | ||
37 | |||
38 | BN_mul(&r,&a,&b); | ||
39 | BN_print_fp(stdout,&r); printf("\n"); | ||
40 | BN_from_montgomery(&r,&r,mont,ctx); | ||
41 | BN_print_fp(stdout,&r); printf("\n"); | ||
42 | BN_from_montgomery(&r,&r,mont,ctx); | ||
43 | BN_print_fp(stdout,&r); printf("\n"); | ||
44 | |||
45 | BN_mod_mul(&R,&A,&B,&prime,ctx); | ||
46 | |||
47 | BN_print_fp(stdout,&a); printf("\n"); | ||
48 | BN_print_fp(stdout,&b); printf("\n"); | ||
49 | BN_print_fp(stdout,&prime); printf("\n"); | ||
50 | BN_print_fp(stdout,&r); printf("\n\n"); | ||
51 | |||
52 | BN_print_fp(stdout,&A); printf("\n"); | ||
53 | BN_print_fp(stdout,&B); printf("\n"); | ||
54 | BN_print_fp(stdout,&prime); printf("\n"); | ||
55 | BN_print_fp(stdout,&R); printf("\n\n"); | ||
56 | |||
57 | BN_mul(&r,&a,&b); | ||
58 | BN_print_fp(stdout,&r); printf(" <- BA*DC\n"); | ||
59 | BN_copy(&A,&r); | ||
60 | i=SIZE/2; | ||
61 | BN_mask_bits(&A,i*2); | ||
62 | // BN_print_fp(stdout,&A); printf(" <- low(BA*DC)\n"); | ||
63 | bn_do_lower(&r,&a,&b,&A,i); | ||
64 | // BN_print_fp(stdout,&r); printf(" <- low(BA*DC)\n"); | ||
65 | } | ||
66 | |||
67 | int bn_mul_low(r,a,b,low,i) | ||
68 | BIGNUM *r,*a,*b,*low; | ||
69 | int i; | ||
70 | { | ||
71 | int w; | ||
72 | BIGNUM Kh,Km,t1,t2,h,ah,al,bh,bl,l,m,s0,s1; | ||
73 | |||
74 | BN_init(&Kh); BN_init(&Km); BN_init(&t1); BN_init(&t2); BN_init(&l); | ||
75 | BN_init(&ah); BN_init(&al); BN_init(&bh); BN_init(&bl); BN_init(&h); | ||
76 | BN_init(&m); BN_init(&s0); BN_init(&s1); | ||
77 | |||
78 | BN_copy(&al,a); BN_mask_bits(&al,i); BN_rshift(&ah,a,i); | ||
79 | BN_copy(&bl,b); BN_mask_bits(&bl,i); BN_rshift(&bh,b,i); | ||
80 | |||
81 | |||
82 | BN_sub(&t1,&al,&ah); | ||
83 | BN_sub(&t2,&bh,&bl); | ||
84 | BN_mul(&m,&t1,&t2); | ||
85 | BN_mul(&h,&ah,&bh); | ||
86 | |||
87 | BN_copy(&s0,low); BN_mask_bits(&s0,i); | ||
88 | BN_rshift(&s1,low,i); | ||
89 | |||
90 | BN_add(&t1,&h,&m); | ||
91 | BN_add(&t1,&t1,&s0); | ||
92 | |||
93 | BN_copy(&t2,&t1); BN_mask_bits(&t2,i); | ||
94 | BN_sub(&t1,&s1,&t2); | ||
95 | BN_lshift(&t1,&t1,i); | ||
96 | BN_add(&t1,&t1,&s0); | ||
97 | if (t1.neg) | ||
98 | { | ||
99 | BN_lshift(&t2,BN_value_one(),i*2); | ||
100 | BN_add(&t1,&t2,&t1); | ||
101 | BN_mask_bits(&t1,i*2); | ||
102 | } | ||
103 | |||
104 | BN_free(&Kh); BN_free(&Km); BN_free(&t1); BN_free(&t2); | ||
105 | BN_free(&ah); BN_free(&al); BN_free(&bh); BN_free(&bl); | ||
106 | } | ||
107 | |||
108 | int BN_mod_mul_montgomery(r,a,b,mont,ctx) | ||
109 | BIGNUM *r,*a,*b; | ||
110 | BN_MONT_CTX *mont; | ||
111 | BN_CTX *ctx; | ||
112 | { | ||
113 | BIGNUM *tmp; | ||
114 | |||
115 | tmp= &(ctx->bn[ctx->tos++]); | ||
116 | |||
117 | if (a == b) | ||
118 | { | ||
119 | if (!BN_sqr(tmp,a,ctx)) goto err; | ||
120 | } | ||
121 | else | ||
122 | { | ||
123 | if (!BN_mul(tmp,a,b)) goto err; | ||
124 | } | ||
125 | /* reduce from aRR to aR */ | ||
126 | if (!BN_from_montgomery(r,tmp,mont,ctx)) goto err; | ||
127 | ctx->tos--; | ||
128 | return(1); | ||
129 | err: | ||
130 | return(0); | ||
131 | } | ||
132 | |||
133 | int BN_from_montgomery(r,a,mont,ctx) | ||
134 | BIGNUM *r; | ||
135 | BIGNUM *a; | ||
136 | BN_MONT_CTX *mont; | ||
137 | BN_CTX *ctx; | ||
138 | { | ||
139 | BIGNUM z1; | ||
140 | BIGNUM *t1,*t2; | ||
141 | BN_ULONG *ap,*bp,*rp; | ||
142 | int j,i,bl,al; | ||
143 | |||
144 | BN_init(&z1); | ||
145 | t1= &(ctx->bn[ctx->tos]); | ||
146 | t2= &(ctx->bn[ctx->tos+1]); | ||
147 | |||
148 | if (!BN_copy(t1,a)) goto err; | ||
149 | /* can cheat */ | ||
150 | BN_mask_bits(t1,mont->ri); | ||
151 | if (!BN_mul(t2,t1,mont->Ni)) goto err; | ||
152 | BN_mask_bits(t2,mont->ri); | ||
153 | |||
154 | if (!BN_mul(t1,t2,mont->N)) goto err; | ||
155 | if (!BN_add(t2,t1,a)) goto err; | ||
156 | |||
157 | /* At this point, t2 has the bottom ri bits set to zero. | ||
158 | * This means that the bottom ri bits == the 1^ri minus the bottom | ||
159 | * ri bits of a. | ||
160 | * This means that only the bits above 'ri' in a need to be added, | ||
161 | * and XXXXXXXXXXXXXXXXXXXXXXXX | ||
162 | */ | ||
163 | BN_print_fp(stdout,t2); printf("\n"); | ||
164 | BN_rshift(r,t2,mont->ri); | ||
165 | |||
166 | if (BN_ucmp(r,mont->N) >= 0) | ||
167 | bn_qsub(r,r,mont->N); | ||
168 | |||
169 | return(1); | ||
170 | err: | ||
171 | return(0); | ||
172 | } | ||
173 | |||
174 | int BN_MONT_CTX_set(mont,mod,ctx) | ||
175 | BN_MONT_CTX *mont; | ||
176 | BIGNUM *mod; | ||
177 | BN_CTX *ctx; | ||
178 | { | ||
179 | BIGNUM *Ri=NULL,*R=NULL; | ||
180 | |||
181 | if (mont->RR == NULL) mont->RR=BN_new(); | ||
182 | if (mont->N == NULL) mont->N=BN_new(); | ||
183 | |||
184 | R=mont->RR; /* grab RR as a temp */ | ||
185 | BN_copy(mont->N,mod); /* Set N */ | ||
186 | |||
187 | mont->ri=(BN_num_bits(mod)+(BN_BITS2-1))/BN_BITS2*BN_BITS2; | ||
188 | BN_lshift(R,BN_value_one(),mont->ri); /* R */ | ||
189 | if ((Ri=BN_mod_inverse(NULL,R,mod,ctx)) == NULL) goto err;/* Ri */ | ||
190 | BN_lshift(Ri,Ri,mont->ri); /* R*Ri */ | ||
191 | bn_qsub(Ri,Ri,BN_value_one()); /* R*Ri - 1 */ | ||
192 | BN_div(Ri,NULL,Ri,mod,ctx); | ||
193 | if (mont->Ni != NULL) BN_free(mont->Ni); | ||
194 | mont->Ni=Ri; /* Ni=(R*Ri-1)/N */ | ||
195 | |||
196 | /* setup RR for conversions */ | ||
197 | BN_lshift(mont->RR,BN_value_one(),mont->ri*2); | ||
198 | BN_mod(mont->RR,mont->RR,mont->N,ctx); | ||
199 | |||
200 | return(1); | ||
201 | err: | ||
202 | return(0); | ||
203 | } | ||
204 | |||
205 | |||
diff --git a/src/lib/libcrypto/comp/Makefile.ssl b/src/lib/libcrypto/comp/Makefile.ssl new file mode 100644 index 0000000000..d946bcbafa --- /dev/null +++ b/src/lib/libcrypto/comp/Makefile.ssl | |||
@@ -0,0 +1,99 @@ | |||
1 | # | ||
2 | # SSLeay/crypto/comp/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= comp | ||
6 | TOP= ../.. | ||
7 | CC= cc | ||
8 | INCLUDES= -I.. -I../../include | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKE= make -f Makefile.ssl | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | ||
15 | MAKEFILE= Makefile.ssl | ||
16 | AR= ar r | ||
17 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
19 | |||
20 | GENERAL=Makefile | ||
21 | TEST= | ||
22 | APPS= | ||
23 | |||
24 | LIB=$(TOP)/libcrypto.a | ||
25 | LIBSRC= comp_lib.c \ | ||
26 | c_rle.c c_zlib.c | ||
27 | |||
28 | LIBOBJ= comp_lib.o \ | ||
29 | c_rle.o c_zlib.o | ||
30 | |||
31 | SRC= $(LIBSRC) | ||
32 | |||
33 | EXHEADER= comp.h | ||
34 | HEADER= $(EXHEADER) | ||
35 | |||
36 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
37 | |||
38 | top: | ||
39 | (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) | ||
40 | |||
41 | all: lib | ||
42 | |||
43 | lib: $(LIBOBJ) | ||
44 | $(AR) $(LIB) $(LIBOBJ) | ||
45 | $(RANLIB) $(LIB) | ||
46 | @touch lib | ||
47 | |||
48 | files: | ||
49 | $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO | ||
50 | |||
51 | links: | ||
52 | @$(TOP)/util/point.sh Makefile.ssl Makefile | ||
53 | @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) | ||
54 | @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) | ||
55 | @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) | ||
56 | |||
57 | install: | ||
58 | @for i in $(EXHEADER) ; \ | ||
59 | do \ | ||
60 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
61 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
62 | done; | ||
63 | |||
64 | tags: | ||
65 | ctags $(SRC) | ||
66 | |||
67 | tests: | ||
68 | |||
69 | lint: | ||
70 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
71 | |||
72 | depend: | ||
73 | $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(LIBSRC) | ||
74 | |||
75 | dclean: | ||
76 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
77 | mv -f Makefile.new $(MAKEFILE) | ||
78 | |||
79 | clean: | ||
80 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
81 | |||
82 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
83 | |||
84 | c_rle.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
85 | c_rle.o: ../../include/openssl/bn.h ../../include/openssl/comp.h | ||
86 | c_rle.o: ../../include/openssl/crypto.h ../../include/openssl/objects.h | ||
87 | c_rle.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
88 | c_rle.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
89 | c_zlib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
90 | c_zlib.o: ../../include/openssl/bn.h ../../include/openssl/comp.h | ||
91 | c_zlib.o: ../../include/openssl/crypto.h ../../include/openssl/objects.h | ||
92 | c_zlib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
93 | c_zlib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
94 | comp_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
95 | comp_lib.o: ../../include/openssl/bn.h ../../include/openssl/comp.h | ||
96 | comp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/objects.h | ||
97 | comp_lib.o: ../../include/openssl/opensslconf.h | ||
98 | comp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | ||
99 | comp_lib.o: ../../include/openssl/stack.h | ||
diff --git a/src/lib/libcrypto/comp/c_rle.c b/src/lib/libcrypto/comp/c_rle.c new file mode 100644 index 0000000000..1a819e3737 --- /dev/null +++ b/src/lib/libcrypto/comp/c_rle.c | |||
@@ -0,0 +1,61 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <string.h> | ||
4 | #include <openssl/objects.h> | ||
5 | #include <openssl/comp.h> | ||
6 | |||
7 | static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
8 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
9 | static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
10 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
11 | |||
12 | static COMP_METHOD rle_method={ | ||
13 | NID_rle_compression, | ||
14 | LN_rle_compression, | ||
15 | NULL, | ||
16 | NULL, | ||
17 | rle_compress_block, | ||
18 | rle_expand_block, | ||
19 | NULL, | ||
20 | }; | ||
21 | |||
22 | COMP_METHOD *COMP_rle(void) | ||
23 | { | ||
24 | return(&rle_method); | ||
25 | } | ||
26 | |||
27 | static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
28 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
29 | { | ||
30 | /* int i; */ | ||
31 | |||
32 | if (olen < (ilen+1)) | ||
33 | { | ||
34 | /* ZZZZZZZZZZZZZZZZZZZZZZ */ | ||
35 | return(-1); | ||
36 | } | ||
37 | |||
38 | *(out++)=0; | ||
39 | memcpy(out,in,ilen); | ||
40 | return(ilen+1); | ||
41 | } | ||
42 | |||
43 | static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
44 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
45 | { | ||
46 | int i; | ||
47 | |||
48 | if (olen < (ilen-1)) | ||
49 | { | ||
50 | /* ZZZZZZZZZZZZZZZZZZZZZZ */ | ||
51 | return(-1); | ||
52 | } | ||
53 | |||
54 | i= *(in++); | ||
55 | if (i == 0) | ||
56 | { | ||
57 | memcpy(out,in,ilen-1); | ||
58 | } | ||
59 | return(ilen-1); | ||
60 | } | ||
61 | |||
diff --git a/src/lib/libcrypto/comp/c_zlib.c b/src/lib/libcrypto/comp/c_zlib.c new file mode 100644 index 0000000000..6684ab4841 --- /dev/null +++ b/src/lib/libcrypto/comp/c_zlib.c | |||
@@ -0,0 +1,133 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <string.h> | ||
4 | #include <openssl/objects.h> | ||
5 | #include <openssl/comp.h> | ||
6 | |||
7 | COMP_METHOD *COMP_zlib(void ); | ||
8 | |||
9 | #ifndef ZLIB | ||
10 | |||
11 | static COMP_METHOD zlib_method={ | ||
12 | NID_undef, | ||
13 | "(null)", | ||
14 | NULL, | ||
15 | NULL, | ||
16 | NULL, | ||
17 | NULL, | ||
18 | NULL, | ||
19 | }; | ||
20 | |||
21 | #else | ||
22 | |||
23 | #include <zlib.h> | ||
24 | |||
25 | static int zlib_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
26 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
27 | static int zlib_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
28 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
29 | |||
30 | static int zz_uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, | ||
31 | uLong sourceLen); | ||
32 | |||
33 | static COMP_METHOD zlib_method={ | ||
34 | NID_zlib_compression, | ||
35 | LN_zlib_compression, | ||
36 | NULL, | ||
37 | NULL, | ||
38 | zlib_compress_block, | ||
39 | zlib_expand_block, | ||
40 | NULL, | ||
41 | }; | ||
42 | |||
43 | static int zlib_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
44 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
45 | { | ||
46 | unsigned long l; | ||
47 | int i; | ||
48 | int clear=1; | ||
49 | |||
50 | if (ilen > 128) | ||
51 | { | ||
52 | out[0]=1; | ||
53 | l=olen-1; | ||
54 | i=compress(&(out[1]),&l,in,(unsigned long)ilen); | ||
55 | if (i != Z_OK) | ||
56 | return(-1); | ||
57 | if (ilen > l) | ||
58 | { | ||
59 | clear=0; | ||
60 | l++; | ||
61 | } | ||
62 | } | ||
63 | if (clear) | ||
64 | { | ||
65 | out[0]=0; | ||
66 | memcpy(&(out[1]),in,ilen); | ||
67 | l=ilen+1; | ||
68 | } | ||
69 | fprintf(stderr,"compress(%4d)->%4d %s\n",ilen,(int)l,(clear)?"clear":"zlib"); | ||
70 | return((int)l); | ||
71 | } | ||
72 | |||
73 | static int zlib_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
74 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
75 | { | ||
76 | unsigned long l; | ||
77 | int i; | ||
78 | |||
79 | if (in[0]) | ||
80 | { | ||
81 | l=olen; | ||
82 | i=zz_uncompress(out,&l,&(in[1]),(unsigned long)ilen-1); | ||
83 | if (i != Z_OK) | ||
84 | return(-1); | ||
85 | } | ||
86 | else | ||
87 | { | ||
88 | memcpy(out,&(in[1]),ilen-1); | ||
89 | l=ilen-1; | ||
90 | } | ||
91 | fprintf(stderr,"expand (%4d)->%4d %s\n",ilen,(int)l,in[0]?"zlib":"clear"); | ||
92 | return((int)l); | ||
93 | } | ||
94 | |||
95 | static int zz_uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, | ||
96 | uLong sourceLen) | ||
97 | { | ||
98 | z_stream stream; | ||
99 | int err; | ||
100 | |||
101 | stream.next_in = (Bytef*)source; | ||
102 | stream.avail_in = (uInt)sourceLen; | ||
103 | /* Check for source > 64K on 16-bit machine: */ | ||
104 | if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; | ||
105 | |||
106 | stream.next_out = dest; | ||
107 | stream.avail_out = (uInt)*destLen; | ||
108 | if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; | ||
109 | |||
110 | stream.zalloc = (alloc_func)0; | ||
111 | stream.zfree = (free_func)0; | ||
112 | |||
113 | err = inflateInit(&stream); | ||
114 | if (err != Z_OK) return err; | ||
115 | |||
116 | err = inflate(&stream, Z_FINISH); | ||
117 | if (err != Z_STREAM_END) { | ||
118 | inflateEnd(&stream); | ||
119 | return err; | ||
120 | } | ||
121 | *destLen = stream.total_out; | ||
122 | |||
123 | err = inflateEnd(&stream); | ||
124 | return err; | ||
125 | } | ||
126 | |||
127 | #endif | ||
128 | |||
129 | COMP_METHOD *COMP_zlib(void) | ||
130 | { | ||
131 | return(&zlib_method); | ||
132 | } | ||
133 | |||
diff --git a/src/lib/libcrypto/comp/comp.h b/src/lib/libcrypto/comp/comp.h new file mode 100644 index 0000000000..93bd9c34c8 --- /dev/null +++ b/src/lib/libcrypto/comp/comp.h | |||
@@ -0,0 +1,60 @@ | |||
1 | |||
2 | #ifndef HEADER_COMP_H | ||
3 | #define HEADER_COMP_H | ||
4 | |||
5 | #ifdef __cplusplus | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | #include <openssl/crypto.h> | ||
10 | |||
11 | typedef struct comp_method_st | ||
12 | { | ||
13 | int type; /* NID for compression library */ | ||
14 | const char *name; /* A text string to identify the library */ | ||
15 | int (*init)(); | ||
16 | void (*finish)(); | ||
17 | int (*compress)(); | ||
18 | int (*expand)(); | ||
19 | long (*ctrl)(); | ||
20 | } COMP_METHOD; | ||
21 | |||
22 | typedef struct comp_ctx_st | ||
23 | { | ||
24 | COMP_METHOD *meth; | ||
25 | unsigned long compress_in; | ||
26 | unsigned long compress_out; | ||
27 | unsigned long expand_in; | ||
28 | unsigned long expand_out; | ||
29 | |||
30 | CRYPTO_EX_DATA ex_data; | ||
31 | } COMP_CTX; | ||
32 | |||
33 | |||
34 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); | ||
35 | void COMP_CTX_free(COMP_CTX *ctx); | ||
36 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
37 | unsigned char *in, int ilen); | ||
38 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
39 | unsigned char *in, int ilen); | ||
40 | COMP_METHOD *COMP_rle(void ); | ||
41 | #ifdef ZLIB | ||
42 | COMP_METHOD *COMP_zlib(void ); | ||
43 | #endif | ||
44 | |||
45 | /* BEGIN ERROR CODES */ | ||
46 | /* The following lines are auto generated by the script mkerr.pl. Any changes | ||
47 | * made after this point may be overwritten when the script is next run. | ||
48 | */ | ||
49 | |||
50 | /* Error codes for the COMP functions. */ | ||
51 | |||
52 | /* Function codes. */ | ||
53 | |||
54 | /* Reason codes. */ | ||
55 | |||
56 | #ifdef __cplusplus | ||
57 | } | ||
58 | #endif | ||
59 | #endif | ||
60 | |||
diff --git a/src/lib/libcrypto/comp/comp_err.c b/src/lib/libcrypto/comp/comp_err.c new file mode 100644 index 0000000000..77a3f7070c --- /dev/null +++ b/src/lib/libcrypto/comp/comp_err.c | |||
@@ -0,0 +1,91 @@ | |||
1 | /* crypto/comp/comp_err.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions | ||
7 | * are met: | ||
8 | * | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in | ||
14 | * the documentation and/or other materials provided with the | ||
15 | * distribution. | ||
16 | * | ||
17 | * 3. All advertising materials mentioning features or use of this | ||
18 | * software must display the following acknowledgment: | ||
19 | * "This product includes software developed by the OpenSSL Project | ||
20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
21 | * | ||
22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
23 | * endorse or promote products derived from this software without | ||
24 | * prior written permission. For written permission, please contact | ||
25 | * openssl-core@OpenSSL.org. | ||
26 | * | ||
27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
28 | * nor may "OpenSSL" appear in their names without prior written | ||
29 | * permission of the OpenSSL Project. | ||
30 | * | ||
31 | * 6. Redistributions of any form whatsoever must retain the following | ||
32 | * acknowledgment: | ||
33 | * "This product includes software developed by the OpenSSL Project | ||
34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
35 | * | ||
36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
54 | */ | ||
55 | |||
56 | /* NOTE: this file was auto generated by the mkerr.pl script: any changes | ||
57 | * made to it will be overwritten when the script next updates this file. | ||
58 | */ | ||
59 | |||
60 | #include <stdio.h> | ||
61 | #include <openssl/err.h> | ||
62 | #include <openssl/comp.h> | ||
63 | |||
64 | /* BEGIN ERROR CODES */ | ||
65 | #ifndef NO_ERR | ||
66 | static ERR_STRING_DATA COMP_str_functs[]= | ||
67 | { | ||
68 | {0,NULL} | ||
69 | }; | ||
70 | |||
71 | static ERR_STRING_DATA COMP_str_reasons[]= | ||
72 | { | ||
73 | {0,NULL} | ||
74 | }; | ||
75 | |||
76 | #endif | ||
77 | |||
78 | void ERR_load_COMP_strings(void) | ||
79 | { | ||
80 | static int init=1; | ||
81 | |||
82 | if (init) | ||
83 | { | ||
84 | init=0; | ||
85 | #ifndef NO_ERR | ||
86 | ERR_load_strings(ERR_LIB_COMP,COMP_str_functs); | ||
87 | ERR_load_strings(ERR_LIB_COMP,COMP_str_reasons); | ||
88 | #endif | ||
89 | |||
90 | } | ||
91 | } | ||
diff --git a/src/lib/libcrypto/comp/comp_lib.c b/src/lib/libcrypto/comp/comp_lib.c new file mode 100644 index 0000000000..a67ef23bc0 --- /dev/null +++ b/src/lib/libcrypto/comp/comp_lib.c | |||
@@ -0,0 +1,78 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <string.h> | ||
4 | #include <openssl/objects.h> | ||
5 | #include <openssl/comp.h> | ||
6 | |||
7 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth) | ||
8 | { | ||
9 | COMP_CTX *ret; | ||
10 | |||
11 | if ((ret=(COMP_CTX *)Malloc(sizeof(COMP_CTX))) == NULL) | ||
12 | { | ||
13 | /* ZZZZZZZZZZZZZZZZ */ | ||
14 | return(NULL); | ||
15 | } | ||
16 | memset(ret,0,sizeof(COMP_CTX)); | ||
17 | ret->meth=meth; | ||
18 | if ((ret->meth->init != NULL) && !ret->meth->init(ret)) | ||
19 | { | ||
20 | Free(ret); | ||
21 | ret=NULL; | ||
22 | } | ||
23 | #if 0 | ||
24 | else | ||
25 | CRYPTO_new_ex_data(rsa_meth,(char *)ret,&ret->ex_data); | ||
26 | #endif | ||
27 | return(ret); | ||
28 | } | ||
29 | |||
30 | void COMP_CTX_free(COMP_CTX *ctx) | ||
31 | { | ||
32 | /* CRYPTO_free_ex_data(rsa_meth,(char *)ctx,&ctx->ex_data); */ | ||
33 | |||
34 | if(ctx == NULL) | ||
35 | return; | ||
36 | |||
37 | if (ctx->meth->finish != NULL) | ||
38 | ctx->meth->finish(ctx); | ||
39 | |||
40 | Free(ctx); | ||
41 | } | ||
42 | |||
43 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
44 | unsigned char *in, int ilen) | ||
45 | { | ||
46 | int ret; | ||
47 | if (ctx->meth->compress == NULL) | ||
48 | { | ||
49 | /* ZZZZZZZZZZZZZZZZZ */ | ||
50 | return(-1); | ||
51 | } | ||
52 | ret=ctx->meth->compress(ctx,out,olen,in,ilen); | ||
53 | if (ret > 0) | ||
54 | { | ||
55 | ctx->compress_in+=ilen; | ||
56 | ctx->compress_out+=ret; | ||
57 | } | ||
58 | return(ret); | ||
59 | } | ||
60 | |||
61 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
62 | unsigned char *in, int ilen) | ||
63 | { | ||
64 | int ret; | ||
65 | |||
66 | if (ctx->meth->expand == NULL) | ||
67 | { | ||
68 | /* ZZZZZZZZZZZZZZZZZ */ | ||
69 | return(-1); | ||
70 | } | ||
71 | ret=ctx->meth->expand(ctx,out,olen,in,ilen); | ||
72 | if (ret > 0) | ||
73 | { | ||
74 | ctx->expand_in+=ilen; | ||
75 | ctx->expand_out+=ret; | ||
76 | } | ||
77 | return(ret); | ||
78 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/Makefile.ssl b/src/lib/libcrypto/pkcs12/Makefile.ssl new file mode 100644 index 0000000000..ebffab657c --- /dev/null +++ b/src/lib/libcrypto/pkcs12/Makefile.ssl | |||
@@ -0,0 +1,346 @@ | |||
1 | # | ||
2 | # SSLeay/crypto/asn1/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= pkcs12 | ||
6 | TOP= ../.. | ||
7 | CC= cc | ||
8 | INCLUDES= -I.. -I../../include | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKE= make -f Makefile.ssl | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | ||
15 | MAKEFILE= Makefile.ssl | ||
16 | AR= ar r | ||
17 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
19 | |||
20 | GENERAL=Makefile | ||
21 | TEST= | ||
22 | APPS= | ||
23 | |||
24 | LIB=$(TOP)/libcrypto.a | ||
25 | LIBSRC= p12_add.c p12_attr.c p12_bags.c p12_crpt.c p12_crt.c p12_decr.c \ | ||
26 | p12_init.c p12_key.c p12_kiss.c p12_lib.c p12_mac.c p12_mutl.c\ | ||
27 | p12_sbag.c p12_utl.c pk12err.c | ||
28 | LIBOBJ= p12_add.o p12_attr.o p12_bags.o p12_crpt.o p12_crt.o p12_decr.o \ | ||
29 | p12_init.o p12_key.o p12_kiss.o p12_lib.o p12_mac.o p12_mutl.o\ | ||
30 | p12_sbag.o p12_utl.o pk12err.o | ||
31 | |||
32 | SRC= $(LIBSRC) | ||
33 | |||
34 | EXHEADER= pkcs12.h | ||
35 | HEADER= $(EXHEADER) | ||
36 | |||
37 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
38 | |||
39 | top: | ||
40 | (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) | ||
41 | |||
42 | test: | ||
43 | |||
44 | all: lib | ||
45 | |||
46 | lib: $(LIBOBJ) | ||
47 | $(AR) $(LIB) $(LIBOBJ) | ||
48 | $(RANLIB) $(LIB) | ||
49 | @touch lib | ||
50 | |||
51 | files: | ||
52 | $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO | ||
53 | |||
54 | links: | ||
55 | @$(TOP)/util/point.sh Makefile.ssl Makefile | ||
56 | @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) | ||
57 | @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) | ||
58 | @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) | ||
59 | |||
60 | install: | ||
61 | @for i in $(EXHEADER) ; \ | ||
62 | do \ | ||
63 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
64 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
65 | done; | ||
66 | |||
67 | tags: | ||
68 | ctags $(SRC) | ||
69 | |||
70 | tests: | ||
71 | |||
72 | lint: | ||
73 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
74 | |||
75 | depend: | ||
76 | $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(PROGS) $(LIBSRC) | ||
77 | |||
78 | dclean: | ||
79 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
80 | mv -f Makefile.new $(MAKEFILE) | ||
81 | |||
82 | clean: | ||
83 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
84 | |||
85 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
86 | |||
87 | p12_add.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
88 | p12_add.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
89 | p12_add.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
90 | p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
91 | p12_add.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
92 | p12_add.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
93 | p12_add.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
94 | p12_add.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
95 | p12_add.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
96 | p12_add.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
97 | p12_add.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
98 | p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
99 | p12_add.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
100 | p12_add.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
101 | p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
102 | p12_add.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
103 | p12_add.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
104 | p12_attr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
105 | p12_attr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
106 | p12_attr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
107 | p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
108 | p12_attr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
109 | p12_attr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
110 | p12_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
111 | p12_attr.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
112 | p12_attr.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
113 | p12_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
114 | p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
115 | p12_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
116 | p12_attr.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
117 | p12_attr.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
118 | p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
119 | p12_attr.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
120 | p12_attr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
121 | p12_bags.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
122 | p12_bags.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
123 | p12_bags.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
124 | p12_bags.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
125 | p12_bags.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
126 | p12_bags.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
127 | p12_bags.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
128 | p12_bags.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
129 | p12_bags.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
130 | p12_bags.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
131 | p12_bags.o: ../../include/openssl/opensslconf.h | ||
132 | p12_bags.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
133 | p12_bags.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
134 | p12_bags.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
135 | p12_bags.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
136 | p12_bags.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
137 | p12_bags.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
138 | p12_bags.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
139 | p12_crpt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
140 | p12_crpt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
141 | p12_crpt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
142 | p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
143 | p12_crpt.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
144 | p12_crpt.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
145 | p12_crpt.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
146 | p12_crpt.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
147 | p12_crpt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
148 | p12_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
149 | p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
150 | p12_crpt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
151 | p12_crpt.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
152 | p12_crpt.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
153 | p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
154 | p12_crpt.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
155 | p12_crpt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
156 | p12_crt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
157 | p12_crt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
158 | p12_crt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
159 | p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
160 | p12_crt.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
161 | p12_crt.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
162 | p12_crt.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
163 | p12_crt.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
164 | p12_crt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
165 | p12_crt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
166 | p12_crt.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
167 | p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
168 | p12_crt.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
169 | p12_crt.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
170 | p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
171 | p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
172 | p12_crt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
173 | p12_decr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
174 | p12_decr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
175 | p12_decr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
176 | p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
177 | p12_decr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
178 | p12_decr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
179 | p12_decr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
180 | p12_decr.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
181 | p12_decr.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
182 | p12_decr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
183 | p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
184 | p12_decr.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
185 | p12_decr.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
186 | p12_decr.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
187 | p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
188 | p12_decr.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
189 | p12_decr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
190 | p12_init.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
191 | p12_init.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
192 | p12_init.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
193 | p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
194 | p12_init.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
195 | p12_init.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
196 | p12_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
197 | p12_init.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
198 | p12_init.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
199 | p12_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
200 | p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
201 | p12_init.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
202 | p12_init.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
203 | p12_init.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
204 | p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
205 | p12_init.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
206 | p12_init.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
207 | p12_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
208 | p12_key.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
209 | p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
210 | p12_key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
211 | p12_key.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
212 | p12_key.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
213 | p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
214 | p12_key.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
215 | p12_key.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
216 | p12_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
217 | p12_key.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
218 | p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
219 | p12_key.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
220 | p12_key.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
221 | p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
222 | p12_key.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
223 | p12_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
224 | p12_kiss.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
225 | p12_kiss.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
226 | p12_kiss.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
227 | p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
228 | p12_kiss.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
229 | p12_kiss.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
230 | p12_kiss.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
231 | p12_kiss.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
232 | p12_kiss.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
233 | p12_kiss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
234 | p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
235 | p12_kiss.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
236 | p12_kiss.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
237 | p12_kiss.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
238 | p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
239 | p12_kiss.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
240 | p12_kiss.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
241 | p12_lib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
242 | p12_lib.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
243 | p12_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
244 | p12_lib.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
245 | p12_lib.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
246 | p12_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
247 | p12_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
248 | p12_lib.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
249 | p12_lib.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
250 | p12_lib.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
251 | p12_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
252 | p12_lib.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | ||
253 | p12_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | ||
254 | p12_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | ||
255 | p12_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
256 | p12_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
257 | p12_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
258 | p12_lib.o: ../cryptlib.h | ||
259 | p12_mac.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
260 | p12_mac.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
261 | p12_mac.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
262 | p12_mac.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
263 | p12_mac.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
264 | p12_mac.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
265 | p12_mac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
266 | p12_mac.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
267 | p12_mac.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
268 | p12_mac.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
269 | p12_mac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
270 | p12_mac.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | ||
271 | p12_mac.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | ||
272 | p12_mac.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | ||
273 | p12_mac.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
274 | p12_mac.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
275 | p12_mac.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
276 | p12_mac.o: ../cryptlib.h | ||
277 | p12_mutl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
278 | p12_mutl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
279 | p12_mutl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
280 | p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
281 | p12_mutl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
282 | p12_mutl.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
283 | p12_mutl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
284 | p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/idea.h | ||
285 | p12_mutl.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
286 | p12_mutl.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
287 | p12_mutl.o: ../../include/openssl/opensslconf.h | ||
288 | p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
289 | p12_mutl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | ||
290 | p12_mutl.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | ||
291 | p12_mutl.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | ||
292 | p12_mutl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
293 | p12_mutl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
294 | p12_mutl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
295 | p12_mutl.o: ../cryptlib.h | ||
296 | p12_sbag.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
297 | p12_sbag.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
298 | p12_sbag.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
299 | p12_sbag.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
300 | p12_sbag.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
301 | p12_sbag.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
302 | p12_sbag.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
303 | p12_sbag.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
304 | p12_sbag.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
305 | p12_sbag.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
306 | p12_sbag.o: ../../include/openssl/opensslconf.h | ||
307 | p12_sbag.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
308 | p12_sbag.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
309 | p12_sbag.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
310 | p12_sbag.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
311 | p12_sbag.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
312 | p12_sbag.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
313 | p12_sbag.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
314 | p12_utl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
315 | p12_utl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
316 | p12_utl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
317 | p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
318 | p12_utl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
319 | p12_utl.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
320 | p12_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
321 | p12_utl.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
322 | p12_utl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
323 | p12_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
324 | p12_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
325 | p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
326 | p12_utl.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
327 | p12_utl.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
328 | p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
329 | p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
330 | p12_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
331 | pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
332 | pk12err.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
333 | pk12err.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
334 | pk12err.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
335 | pk12err.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | ||
336 | pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
337 | pk12err.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
338 | pk12err.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
339 | pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
340 | pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
341 | pk12err.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
342 | pk12err.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
343 | pk12err.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
344 | pk12err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
345 | pk12err.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
346 | pk12err.o: ../../include/openssl/x509_vfy.h | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_add.c b/src/lib/libcrypto/pkcs12/p12_add.c new file mode 100644 index 0000000000..ae3d9de3b4 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_add.c | |||
@@ -0,0 +1,214 @@ | |||
1 | /* p12_add.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Pack an object into an OCTET STRING and turn into a safebag */ | ||
64 | |||
65 | PKCS12_SAFEBAG *PKCS12_pack_safebag (char *obj, int (*i2d)(), int nid1, | ||
66 | int nid2) | ||
67 | { | ||
68 | PKCS12_BAGS *bag; | ||
69 | PKCS12_SAFEBAG *safebag; | ||
70 | if (!(bag = PKCS12_BAGS_new ())) { | ||
71 | PKCS12err(PKCS12_F_PKCS12_PACK_SAFEBAG, ERR_R_MALLOC_FAILURE); | ||
72 | return NULL; | ||
73 | } | ||
74 | bag->type = OBJ_nid2obj(nid1); | ||
75 | if (!ASN1_pack_string(obj, i2d, &bag->value.octet)) { | ||
76 | PKCS12err(PKCS12_F_PKCS12_PACK_SAFEBAG, ERR_R_MALLOC_FAILURE); | ||
77 | return NULL; | ||
78 | } | ||
79 | if (!(safebag = PKCS12_SAFEBAG_new ())) { | ||
80 | PKCS12err(PKCS12_F_PKCS12_PACK_SAFEBAG, ERR_R_MALLOC_FAILURE); | ||
81 | return NULL; | ||
82 | } | ||
83 | safebag->value.bag = bag; | ||
84 | safebag->type = OBJ_nid2obj(nid2); | ||
85 | return safebag; | ||
86 | } | ||
87 | |||
88 | /* Turn PKCS8 object into a keybag */ | ||
89 | |||
90 | PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG (PKCS8_PRIV_KEY_INFO *p8) | ||
91 | { | ||
92 | PKCS12_SAFEBAG *bag; | ||
93 | if (!(bag = PKCS12_SAFEBAG_new())) { | ||
94 | PKCS12err(PKCS12_F_PKCS12_MAKE_KEYBAG,ERR_R_MALLOC_FAILURE); | ||
95 | return NULL; | ||
96 | } | ||
97 | bag->type = OBJ_nid2obj(NID_keyBag); | ||
98 | bag->value.keybag = p8; | ||
99 | return bag; | ||
100 | } | ||
101 | |||
102 | /* Turn PKCS8 object into a shrouded keybag */ | ||
103 | |||
104 | PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG (int pbe_nid, const char *pass, | ||
105 | int passlen, unsigned char *salt, int saltlen, int iter, | ||
106 | PKCS8_PRIV_KEY_INFO *p8) | ||
107 | { | ||
108 | PKCS12_SAFEBAG *bag; | ||
109 | |||
110 | /* Set up the safe bag */ | ||
111 | if (!(bag = PKCS12_SAFEBAG_new ())) { | ||
112 | PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE); | ||
113 | return NULL; | ||
114 | } | ||
115 | |||
116 | bag->type = OBJ_nid2obj(NID_pkcs8ShroudedKeyBag); | ||
117 | if (!(bag->value.shkeybag = | ||
118 | PKCS8_encrypt(pbe_nid, NULL, pass, passlen, salt, saltlen, iter, | ||
119 | p8))) { | ||
120 | PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE); | ||
121 | return NULL; | ||
122 | } | ||
123 | |||
124 | return bag; | ||
125 | } | ||
126 | |||
127 | /* Turn a stack of SAFEBAGS into a PKCS#7 data Contentinfo */ | ||
128 | PKCS7 *PKCS12_pack_p7data (STACK *sk) | ||
129 | { | ||
130 | PKCS7 *p7; | ||
131 | if (!(p7 = PKCS7_new())) { | ||
132 | PKCS12err(PKCS12_F_PKCS12_PACK_P7DATA, ERR_R_MALLOC_FAILURE); | ||
133 | return NULL; | ||
134 | } | ||
135 | p7->type = OBJ_nid2obj(NID_pkcs7_data); | ||
136 | if (!(p7->d.data = ASN1_OCTET_STRING_new())) { | ||
137 | PKCS12err(PKCS12_F_PKCS12_PACK_P7DATA, ERR_R_MALLOC_FAILURE); | ||
138 | return NULL; | ||
139 | } | ||
140 | |||
141 | if (!ASN1_seq_pack(sk, i2d_PKCS12_SAFEBAG, &p7->d.data->data, | ||
142 | &p7->d.data->length)) { | ||
143 | PKCS12err(PKCS12_F_PKCS12_PACK_P7DATA, PKCS12_R_CANT_PACK_STRUCTURE); | ||
144 | return NULL; | ||
145 | } | ||
146 | return p7; | ||
147 | } | ||
148 | |||
149 | /* Turn a stack of SAFEBAGS into a PKCS#7 encrypted data ContentInfo */ | ||
150 | |||
151 | PKCS7 *PKCS12_pack_p7encdata (int pbe_nid, const char *pass, int passlen, | ||
152 | unsigned char *salt, int saltlen, int iter, STACK *bags) | ||
153 | { | ||
154 | PKCS7 *p7; | ||
155 | X509_ALGOR *pbe; | ||
156 | if (!(p7 = PKCS7_new())) { | ||
157 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); | ||
158 | return NULL; | ||
159 | } | ||
160 | p7->type = OBJ_nid2obj(NID_pkcs7_encrypted); | ||
161 | if (!(p7->d.encrypted = PKCS7_ENCRYPT_new ())) { | ||
162 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); | ||
163 | return NULL; | ||
164 | } | ||
165 | ASN1_INTEGER_set (p7->d.encrypted->version, 0); | ||
166 | p7->d.encrypted->enc_data->content_type = OBJ_nid2obj(NID_pkcs7_data); | ||
167 | if (!(pbe = PKCS5_pbe_set (pbe_nid, iter, salt, saltlen))) { | ||
168 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); | ||
169 | return NULL; | ||
170 | } | ||
171 | X509_ALGOR_free(p7->d.encrypted->enc_data->algorithm); | ||
172 | p7->d.encrypted->enc_data->algorithm = pbe; | ||
173 | ASN1_OCTET_STRING_free(p7->d.encrypted->enc_data->enc_data); | ||
174 | if (!(p7->d.encrypted->enc_data->enc_data = | ||
175 | PKCS12_i2d_encrypt (pbe, i2d_PKCS12_SAFEBAG, pass, passlen, | ||
176 | (char *)bags, 1))) { | ||
177 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, PKCS12_R_ENCRYPT_ERROR); | ||
178 | return NULL; | ||
179 | } | ||
180 | |||
181 | return p7; | ||
182 | } | ||
183 | |||
184 | X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, | ||
185 | const char *pass, int passlen, | ||
186 | unsigned char *salt, int saltlen, int iter, | ||
187 | PKCS8_PRIV_KEY_INFO *p8inf) | ||
188 | { | ||
189 | X509_SIG *p8; | ||
190 | X509_ALGOR *pbe; | ||
191 | |||
192 | if (!(p8 = X509_SIG_new())) { | ||
193 | PKCS12err(PKCS12_F_PKCS8_ENCRYPT, ERR_R_MALLOC_FAILURE); | ||
194 | return NULL; | ||
195 | } | ||
196 | |||
197 | if(pbe_nid == -1) pbe = PKCS5_pbe2_set(cipher, iter, salt, saltlen); | ||
198 | else pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen); | ||
199 | if(!pbe) { | ||
200 | PKCS12err(PKCS12_F_PKCS8_ENCRYPT, ERR_R_MALLOC_FAILURE); | ||
201 | return NULL; | ||
202 | } | ||
203 | X509_ALGOR_free(p8->algor); | ||
204 | p8->algor = pbe; | ||
205 | ASN1_OCTET_STRING_free(p8->digest); | ||
206 | if (!(p8->digest = | ||
207 | PKCS12_i2d_encrypt (pbe, i2d_PKCS8_PRIV_KEY_INFO, pass, passlen, | ||
208 | (char *)p8inf, 0))) { | ||
209 | PKCS12err(PKCS12_F_PKCS8_ENCRYPT, PKCS12_R_ENCRYPT_ERROR); | ||
210 | return NULL; | ||
211 | } | ||
212 | |||
213 | return p8; | ||
214 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_attr.c b/src/lib/libcrypto/pkcs12/p12_attr.c new file mode 100644 index 0000000000..31c9782b77 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_attr.c | |||
@@ -0,0 +1,238 @@ | |||
1 | /* p12_attr.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Add a local keyid to a safebag */ | ||
64 | |||
65 | int PKCS12_add_localkeyid (PKCS12_SAFEBAG *bag, unsigned char *name, | ||
66 | int namelen) | ||
67 | { | ||
68 | X509_ATTRIBUTE *attrib; | ||
69 | ASN1_BMPSTRING *oct; | ||
70 | ASN1_TYPE *keyid; | ||
71 | if (!(keyid = ASN1_TYPE_new ())) { | ||
72 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
73 | return 0; | ||
74 | } | ||
75 | keyid->type = V_ASN1_OCTET_STRING; | ||
76 | if (!(oct = ASN1_OCTET_STRING_new())) { | ||
77 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
78 | return 0; | ||
79 | } | ||
80 | if (!ASN1_OCTET_STRING_set(oct, name, namelen)) { | ||
81 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
82 | return 0; | ||
83 | } | ||
84 | keyid->value.octet_string = oct; | ||
85 | if (!(attrib = X509_ATTRIBUTE_new ())) { | ||
86 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
87 | return 0; | ||
88 | } | ||
89 | attrib->object = OBJ_nid2obj(NID_localKeyID); | ||
90 | if (!(attrib->value.set = sk_ASN1_TYPE_new(NULL))) { | ||
91 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
92 | return 0; | ||
93 | } | ||
94 | sk_ASN1_TYPE_push (attrib->value.set,keyid); | ||
95 | attrib->set = 1; | ||
96 | if (!bag->attrib && !(bag->attrib = sk_X509_ATTRIBUTE_new (NULL))) { | ||
97 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
98 | return 0; | ||
99 | } | ||
100 | sk_X509_ATTRIBUTE_push (bag->attrib, attrib); | ||
101 | return 1; | ||
102 | } | ||
103 | |||
104 | /* Add key usage to PKCS#8 structure */ | ||
105 | |||
106 | int PKCS8_add_keyusage (PKCS8_PRIV_KEY_INFO *p8, int usage) | ||
107 | { | ||
108 | X509_ATTRIBUTE *attrib; | ||
109 | ASN1_BIT_STRING *bstr; | ||
110 | ASN1_TYPE *keyid; | ||
111 | unsigned char us_val; | ||
112 | us_val = (unsigned char) usage; | ||
113 | if (!(keyid = ASN1_TYPE_new ())) { | ||
114 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
115 | return 0; | ||
116 | } | ||
117 | keyid->type = V_ASN1_BIT_STRING; | ||
118 | if (!(bstr = ASN1_BIT_STRING_new())) { | ||
119 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
120 | return 0; | ||
121 | } | ||
122 | if (!ASN1_BIT_STRING_set(bstr, &us_val, 1)) { | ||
123 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
124 | return 0; | ||
125 | } | ||
126 | keyid->value.bit_string = bstr; | ||
127 | if (!(attrib = X509_ATTRIBUTE_new ())) { | ||
128 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
129 | return 0; | ||
130 | } | ||
131 | attrib->object = OBJ_nid2obj(NID_key_usage); | ||
132 | if (!(attrib->value.set = sk_ASN1_TYPE_new(NULL))) { | ||
133 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
134 | return 0; | ||
135 | } | ||
136 | sk_ASN1_TYPE_push (attrib->value.set,keyid); | ||
137 | attrib->set = 1; | ||
138 | if (!p8->attributes | ||
139 | && !(p8->attributes = sk_X509_ATTRIBUTE_new (NULL))) { | ||
140 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
141 | return 0; | ||
142 | } | ||
143 | sk_X509_ATTRIBUTE_push (p8->attributes, attrib); | ||
144 | return 1; | ||
145 | } | ||
146 | |||
147 | /* Add a friendlyname to a safebag */ | ||
148 | |||
149 | int PKCS12_add_friendlyname_asc (PKCS12_SAFEBAG *bag, const char *name, | ||
150 | int namelen) | ||
151 | { | ||
152 | unsigned char *uniname; | ||
153 | int ret, unilen; | ||
154 | if (!asc2uni(name, &uniname, &unilen)) { | ||
155 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC, | ||
156 | ERR_R_MALLOC_FAILURE); | ||
157 | return 0; | ||
158 | } | ||
159 | ret = PKCS12_add_friendlyname_uni (bag, uniname, unilen); | ||
160 | Free(uniname); | ||
161 | return ret; | ||
162 | } | ||
163 | |||
164 | |||
165 | int PKCS12_add_friendlyname_uni (PKCS12_SAFEBAG *bag, | ||
166 | const unsigned char *name, int namelen) | ||
167 | { | ||
168 | X509_ATTRIBUTE *attrib; | ||
169 | ASN1_BMPSTRING *bmp; | ||
170 | ASN1_TYPE *fname; | ||
171 | /* Zap ending double null if included */ | ||
172 | if(!name[namelen - 1] && !name[namelen - 2]) namelen -= 2; | ||
173 | if (!(fname = ASN1_TYPE_new ())) { | ||
174 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
175 | ERR_R_MALLOC_FAILURE); | ||
176 | return 0; | ||
177 | } | ||
178 | fname->type = V_ASN1_BMPSTRING; | ||
179 | if (!(bmp = ASN1_BMPSTRING_new())) { | ||
180 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
181 | ERR_R_MALLOC_FAILURE); | ||
182 | return 0; | ||
183 | } | ||
184 | if (!(bmp->data = Malloc (namelen))) { | ||
185 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
186 | ERR_R_MALLOC_FAILURE); | ||
187 | return 0; | ||
188 | } | ||
189 | memcpy (bmp->data, name, namelen); | ||
190 | bmp->length = namelen; | ||
191 | fname->value.bmpstring = bmp; | ||
192 | if (!(attrib = X509_ATTRIBUTE_new ())) { | ||
193 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
194 | ERR_R_MALLOC_FAILURE); | ||
195 | return 0; | ||
196 | } | ||
197 | attrib->object = OBJ_nid2obj(NID_friendlyName); | ||
198 | if (!(attrib->value.set = sk_ASN1_TYPE_new(NULL))) { | ||
199 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME, | ||
200 | ERR_R_MALLOC_FAILURE); | ||
201 | return 0; | ||
202 | } | ||
203 | sk_ASN1_TYPE_push (attrib->value.set,fname); | ||
204 | attrib->set = 1; | ||
205 | if (!bag->attrib && !(bag->attrib = sk_X509_ATTRIBUTE_new (NULL))) { | ||
206 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
207 | ERR_R_MALLOC_FAILURE); | ||
208 | return 0; | ||
209 | } | ||
210 | sk_X509_ATTRIBUTE_push (bag->attrib, attrib); | ||
211 | return PKCS12_OK; | ||
212 | } | ||
213 | |||
214 | ASN1_TYPE *PKCS12_get_attr_gen (STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid) | ||
215 | { | ||
216 | X509_ATTRIBUTE *attrib; | ||
217 | int i; | ||
218 | if (!attrs) return NULL; | ||
219 | for (i = 0; i < sk_X509_ATTRIBUTE_num (attrs); i++) { | ||
220 | attrib = sk_X509_ATTRIBUTE_value (attrs, i); | ||
221 | if (OBJ_obj2nid (attrib->object) == attr_nid) { | ||
222 | if (sk_ASN1_TYPE_num (attrib->value.set)) | ||
223 | return sk_ASN1_TYPE_value(attrib->value.set, 0); | ||
224 | else return NULL; | ||
225 | } | ||
226 | } | ||
227 | return NULL; | ||
228 | } | ||
229 | |||
230 | char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag) | ||
231 | { | ||
232 | ASN1_TYPE *atype; | ||
233 | if (!(atype = PKCS12_get_attr(bag, NID_friendlyName))) return NULL; | ||
234 | if (atype->type != V_ASN1_BMPSTRING) return NULL; | ||
235 | return uni2asc(atype->value.bmpstring->data, | ||
236 | atype->value.bmpstring->length); | ||
237 | } | ||
238 | |||
diff --git a/src/lib/libcrypto/pkcs12/p12_bags.c b/src/lib/libcrypto/pkcs12/p12_bags.c new file mode 100644 index 0000000000..d6eab92c83 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_bags.c | |||
@@ -0,0 +1,192 @@ | |||
1 | /* p12_bags.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp) | ||
65 | { | ||
66 | int bagnid, v = 0; | ||
67 | M_ASN1_I2D_vars(a); | ||
68 | bagnid = OBJ_obj2nid (a->type); | ||
69 | M_ASN1_I2D_len (a->type, i2d_ASN1_OBJECT); | ||
70 | |||
71 | switch (bagnid) { | ||
72 | |||
73 | case NID_x509Certificate: | ||
74 | M_ASN1_I2D_len_EXP_opt (a->value.x509cert, | ||
75 | i2d_ASN1_OCTET_STRING, 0, v); | ||
76 | break; | ||
77 | |||
78 | case NID_x509Crl: | ||
79 | M_ASN1_I2D_len_EXP_opt (a->value.x509crl, | ||
80 | i2d_ASN1_OCTET_STRING, 0, v); | ||
81 | break; | ||
82 | |||
83 | case NID_sdsiCertificate: | ||
84 | M_ASN1_I2D_len_EXP_opt (a->value.sdsicert, | ||
85 | i2d_ASN1_IA5STRING, 0, v); | ||
86 | break; | ||
87 | |||
88 | default: | ||
89 | M_ASN1_I2D_len_EXP_opt (a->value.other, | ||
90 | i2d_ASN1_TYPE, 0, v); | ||
91 | break; | ||
92 | } | ||
93 | |||
94 | M_ASN1_I2D_seq_total (); | ||
95 | |||
96 | M_ASN1_I2D_put (a->type, i2d_ASN1_OBJECT); | ||
97 | |||
98 | switch (bagnid) { | ||
99 | |||
100 | case NID_x509Certificate: | ||
101 | M_ASN1_I2D_put_EXP_opt (a->value.x509cert, | ||
102 | i2d_ASN1_OCTET_STRING, 0, v); | ||
103 | break; | ||
104 | |||
105 | case NID_x509Crl: | ||
106 | M_ASN1_I2D_put_EXP_opt (a->value.x509crl, | ||
107 | i2d_ASN1_OCTET_STRING, 0, v); | ||
108 | break; | ||
109 | |||
110 | case NID_sdsiCertificate: | ||
111 | M_ASN1_I2D_put_EXP_opt (a->value.sdsicert, | ||
112 | i2d_ASN1_IA5STRING, 0, v); | ||
113 | break; | ||
114 | |||
115 | default: | ||
116 | M_ASN1_I2D_put_EXP_opt (a->value.other, i2d_ASN1_TYPE, 0, v); | ||
117 | break; | ||
118 | } | ||
119 | M_ASN1_I2D_finish(); | ||
120 | } | ||
121 | |||
122 | PKCS12_BAGS *PKCS12_BAGS_new(void) | ||
123 | { | ||
124 | PKCS12_BAGS *ret=NULL; | ||
125 | ASN1_CTX c; | ||
126 | M_ASN1_New_Malloc(ret, PKCS12_BAGS); | ||
127 | ret->type=NULL; | ||
128 | ret->value.other=NULL; | ||
129 | return (ret); | ||
130 | M_ASN1_New_Error(ASN1_F_PKCS12_BAGS_NEW); | ||
131 | } | ||
132 | |||
133 | PKCS12_BAGS *d2i_PKCS12_BAGS(PKCS12_BAGS **a, unsigned char **pp, | ||
134 | long length) | ||
135 | { | ||
136 | int bagnid; | ||
137 | M_ASN1_D2I_vars(a,PKCS12_BAGS *,PKCS12_BAGS_new); | ||
138 | M_ASN1_D2I_Init(); | ||
139 | M_ASN1_D2I_start_sequence(); | ||
140 | M_ASN1_D2I_get (ret->type, d2i_ASN1_OBJECT); | ||
141 | bagnid = OBJ_obj2nid (ret->type); | ||
142 | switch (bagnid) { | ||
143 | |||
144 | case NID_x509Certificate: | ||
145 | M_ASN1_D2I_get_EXP_opt (ret->value.x509cert, | ||
146 | d2i_ASN1_OCTET_STRING, 0); | ||
147 | break; | ||
148 | |||
149 | case NID_x509Crl: | ||
150 | M_ASN1_D2I_get_EXP_opt (ret->value.x509crl, | ||
151 | d2i_ASN1_OCTET_STRING, 0); | ||
152 | break; | ||
153 | |||
154 | case NID_sdsiCertificate: | ||
155 | M_ASN1_D2I_get_EXP_opt (ret->value.sdsicert, | ||
156 | d2i_ASN1_IA5STRING, 0); | ||
157 | break; | ||
158 | |||
159 | default: | ||
160 | M_ASN1_D2I_get_EXP_opt (ret->value.other, | ||
161 | d2i_ASN1_TYPE, 0); | ||
162 | break; | ||
163 | } | ||
164 | |||
165 | M_ASN1_D2I_Finish(a, PKCS12_BAGS_free, ASN1_F_D2I_PKCS12_BAGS); | ||
166 | } | ||
167 | |||
168 | void PKCS12_BAGS_free (PKCS12_BAGS *a) | ||
169 | { | ||
170 | if (a == NULL) return; | ||
171 | switch (OBJ_obj2nid(a->type)) { | ||
172 | |||
173 | case NID_x509Certificate: | ||
174 | ASN1_OCTET_STRING_free (a->value.x509cert); | ||
175 | break; | ||
176 | |||
177 | case NID_x509Crl: | ||
178 | ASN1_OCTET_STRING_free (a->value.x509crl); | ||
179 | break; | ||
180 | |||
181 | case NID_sdsiCertificate: | ||
182 | ASN1_IA5STRING_free (a->value.sdsicert); | ||
183 | break; | ||
184 | |||
185 | default: | ||
186 | ASN1_TYPE_free (a->value.other); | ||
187 | break; | ||
188 | } | ||
189 | |||
190 | ASN1_OBJECT_free (a->type); | ||
191 | Free ((char *)a); | ||
192 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_crpt.c b/src/lib/libcrypto/pkcs12/p12_crpt.c new file mode 100644 index 0000000000..6de6f8128f --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_crpt.c | |||
@@ -0,0 +1,122 @@ | |||
1 | /* p12_crpt.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* PKCS#12 specific PBE functions */ | ||
64 | |||
65 | void PKCS12_PBE_add(void) | ||
66 | { | ||
67 | #ifndef NO_RC4 | ||
68 | EVP_PBE_alg_add(NID_pbe_WithSHA1And128BitRC4, EVP_rc4(), EVP_sha1(), | ||
69 | PKCS12_PBE_keyivgen); | ||
70 | EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC4, EVP_rc4_40(), EVP_sha1(), | ||
71 | PKCS12_PBE_keyivgen); | ||
72 | #endif | ||
73 | EVP_PBE_alg_add(NID_pbe_WithSHA1And3_Key_TripleDES_CBC, | ||
74 | EVP_des_ede3_cbc(), EVP_sha1(), PKCS12_PBE_keyivgen); | ||
75 | EVP_PBE_alg_add(NID_pbe_WithSHA1And2_Key_TripleDES_CBC, | ||
76 | EVP_des_ede_cbc(), EVP_sha1(), PKCS12_PBE_keyivgen); | ||
77 | #ifndef NO_RC2 | ||
78 | EVP_PBE_alg_add(NID_pbe_WithSHA1And128BitRC2_CBC, EVP_rc2_cbc(), | ||
79 | EVP_sha1(), PKCS12_PBE_keyivgen); | ||
80 | EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC2_CBC, EVP_rc2_40_cbc(), | ||
81 | EVP_sha1(), PKCS12_PBE_keyivgen); | ||
82 | #endif | ||
83 | } | ||
84 | |||
85 | int PKCS12_PBE_keyivgen (EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | ||
86 | ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md, int en_de) | ||
87 | { | ||
88 | PBEPARAM *pbe; | ||
89 | int saltlen, iter; | ||
90 | unsigned char *salt, *pbuf; | ||
91 | unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; | ||
92 | |||
93 | /* Extract useful info from parameter */ | ||
94 | pbuf = param->value.sequence->data; | ||
95 | if (!param || (param->type != V_ASN1_SEQUENCE) || | ||
96 | !(pbe = d2i_PBEPARAM (NULL, &pbuf, param->value.sequence->length))) { | ||
97 | EVPerr(PKCS12_F_PKCS12_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); | ||
98 | return 0; | ||
99 | } | ||
100 | |||
101 | if (!pbe->iter) iter = 1; | ||
102 | else iter = ASN1_INTEGER_get (pbe->iter); | ||
103 | salt = pbe->salt->data; | ||
104 | saltlen = pbe->salt->length; | ||
105 | if (!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_KEY_ID, | ||
106 | iter, EVP_CIPHER_key_length(cipher), key, md)) { | ||
107 | PKCS12err(PKCS12_F_PKCS12_PBE_KEYIVGEN,PKCS12_R_KEY_GEN_ERROR); | ||
108 | PBEPARAM_free(pbe); | ||
109 | return 0; | ||
110 | } | ||
111 | if (!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_IV_ID, | ||
112 | iter, EVP_CIPHER_iv_length(cipher), iv, md)) { | ||
113 | PKCS12err(PKCS12_F_PKCS12_PBE_KEYIVGEN,PKCS12_R_IV_GEN_ERROR); | ||
114 | PBEPARAM_free(pbe); | ||
115 | return 0; | ||
116 | } | ||
117 | PBEPARAM_free(pbe); | ||
118 | EVP_CipherInit(ctx, cipher, key, iv, en_de); | ||
119 | memset(key, 0, EVP_MAX_KEY_LENGTH); | ||
120 | memset(iv, 0, EVP_MAX_IV_LENGTH); | ||
121 | return 1; | ||
122 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_crt.c b/src/lib/libcrypto/pkcs12/p12_crt.c new file mode 100644 index 0000000000..56d88b0759 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_crt.c | |||
@@ -0,0 +1,159 @@ | |||
1 | /* p12_crt.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, | ||
64 | STACK *ca, int nid_key, int nid_cert, int iter, int mac_iter, | ||
65 | int keytype) | ||
66 | { | ||
67 | PKCS12 *p12; | ||
68 | STACK *bags, *safes; | ||
69 | PKCS12_SAFEBAG *bag; | ||
70 | PKCS8_PRIV_KEY_INFO *p8; | ||
71 | PKCS7 *authsafe; | ||
72 | X509 *tcert; | ||
73 | int i; | ||
74 | unsigned char keyid[EVP_MAX_MD_SIZE]; | ||
75 | unsigned int keyidlen; | ||
76 | |||
77 | /* Set defaults */ | ||
78 | if(!nid_cert) nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC; | ||
79 | if(!nid_key) nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; | ||
80 | if(!iter) iter = PKCS12_DEFAULT_ITER; | ||
81 | if(!mac_iter) mac_iter = 1; | ||
82 | |||
83 | if(!pkey || !cert) { | ||
84 | PKCS12err(PKCS12_F_PKCS12_CREATE,PKCS12_R_INVALID_NULL_ARGUMENT); | ||
85 | return NULL; | ||
86 | } | ||
87 | |||
88 | if(!(bags = sk_new (NULL))) { | ||
89 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
90 | return NULL; | ||
91 | } | ||
92 | |||
93 | /* Add user certificate */ | ||
94 | if(!(bag = M_PKCS12_x5092certbag(cert))) return NULL; | ||
95 | if(name && !PKCS12_add_friendlyname(bag, name, -1)) return NULL; | ||
96 | X509_digest(cert, EVP_sha1(), keyid, &keyidlen); | ||
97 | if(!PKCS12_add_localkeyid(bag, keyid, keyidlen)) return NULL; | ||
98 | |||
99 | if(!sk_push(bags, (char *)bag)) { | ||
100 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
101 | return NULL; | ||
102 | } | ||
103 | |||
104 | /* Add all other certificates */ | ||
105 | if(ca) { | ||
106 | for(i = 0; i < sk_num(ca); i++) { | ||
107 | tcert = (X509 *)sk_value(ca, i); | ||
108 | if(!(bag = M_PKCS12_x5092certbag(tcert))) return NULL; | ||
109 | if(!sk_push(bags, (char *)bag)) { | ||
110 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
111 | return NULL; | ||
112 | } | ||
113 | } | ||
114 | } | ||
115 | |||
116 | /* Turn certbags into encrypted authsafe */ | ||
117 | authsafe = PKCS12_pack_p7encdata (nid_cert, pass, -1, NULL, 0, | ||
118 | iter, bags); | ||
119 | sk_pop_free(bags, PKCS12_SAFEBAG_free); | ||
120 | |||
121 | if (!authsafe) return NULL; | ||
122 | |||
123 | if(!(safes = sk_new (NULL)) || !sk_push(safes, (char *)authsafe)) { | ||
124 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
125 | return NULL; | ||
126 | } | ||
127 | |||
128 | /* Make a shrouded key bag */ | ||
129 | if(!(p8 = EVP_PKEY2PKCS8 (pkey))) return NULL; | ||
130 | if(keytype && !PKCS8_add_keyusage(p8, keytype)) return NULL; | ||
131 | bag = PKCS12_MAKE_SHKEYBAG (nid_key, pass, -1, NULL, 0, iter, p8); | ||
132 | if(!bag) return NULL; | ||
133 | PKCS8_PRIV_KEY_INFO_free(p8); | ||
134 | if (name && !PKCS12_add_friendlyname (bag, name, -1)) return NULL; | ||
135 | if(!PKCS12_add_localkeyid (bag, keyid, keyidlen)) return NULL; | ||
136 | if(!(bags = sk_new(NULL)) || !sk_push (bags, (char *)bag)) { | ||
137 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
138 | return NULL; | ||
139 | } | ||
140 | /* Turn it into unencrypted safe bag */ | ||
141 | if(!(authsafe = PKCS12_pack_p7data (bags))) return NULL; | ||
142 | sk_pop_free(bags, PKCS12_SAFEBAG_free); | ||
143 | if(!sk_push(safes, (char *)authsafe)) { | ||
144 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
145 | return NULL; | ||
146 | } | ||
147 | |||
148 | if(!(p12 = PKCS12_init (NID_pkcs7_data))) return NULL; | ||
149 | |||
150 | if(!M_PKCS12_pack_authsafes (p12, safes)) return NULL; | ||
151 | |||
152 | sk_pop_free(safes, PKCS7_free); | ||
153 | |||
154 | if(!PKCS12_set_mac (p12, pass, -1, NULL, 0, mac_iter, NULL)) | ||
155 | return NULL; | ||
156 | |||
157 | return p12; | ||
158 | |||
159 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_decr.c b/src/lib/libcrypto/pkcs12/p12_decr.c new file mode 100644 index 0000000000..d3d288e187 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_decr.c | |||
@@ -0,0 +1,185 @@ | |||
1 | /* p12_decr.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Define this to dump decrypted output to files called DERnnn */ | ||
64 | /*#define DEBUG_DECRYPT*/ | ||
65 | |||
66 | |||
67 | /* Encrypt/Decrypt a buffer based on password and algor, result in a | ||
68 | * Malloc'ed buffer | ||
69 | */ | ||
70 | |||
71 | unsigned char * PKCS12_pbe_crypt (X509_ALGOR *algor, const char *pass, | ||
72 | int passlen, unsigned char *in, int inlen, unsigned char **data, | ||
73 | int *datalen, int en_de) | ||
74 | { | ||
75 | unsigned char *out; | ||
76 | int outlen, i; | ||
77 | EVP_CIPHER_CTX ctx; | ||
78 | |||
79 | /* Decrypt data */ | ||
80 | if (!EVP_PBE_CipherInit (algor->algorithm, pass, passlen, | ||
81 | algor->parameter, &ctx, en_de)) { | ||
82 | PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR); | ||
83 | return NULL; | ||
84 | } | ||
85 | |||
86 | if(!(out = Malloc (inlen + EVP_CIPHER_CTX_block_size(&ctx)))) { | ||
87 | PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,ERR_R_MALLOC_FAILURE); | ||
88 | return NULL; | ||
89 | } | ||
90 | |||
91 | EVP_CipherUpdate (&ctx, out, &i, in, inlen); | ||
92 | outlen = i; | ||
93 | if(!EVP_CipherFinal (&ctx, out + i, &i)) { | ||
94 | Free (out); | ||
95 | PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,PKCS12_R_PKCS12_CIPHERFINAL_ERROR); | ||
96 | return NULL; | ||
97 | } | ||
98 | outlen += i; | ||
99 | if (datalen) *datalen = outlen; | ||
100 | if (data) *data = out; | ||
101 | return out; | ||
102 | |||
103 | } | ||
104 | |||
105 | /* Decrypt an OCTET STRING and decode ASN1 structure | ||
106 | * if seq & 1 'obj' is a stack of structures to be encoded | ||
107 | * if seq & 2 zero buffer after use | ||
108 | * as a sequence. | ||
109 | */ | ||
110 | |||
111 | char * PKCS12_decrypt_d2i (X509_ALGOR *algor, char * (*d2i)(), | ||
112 | void (*free_func)(), const char *pass, int passlen, | ||
113 | ASN1_OCTET_STRING *oct, int seq) | ||
114 | { | ||
115 | unsigned char *out, *p; | ||
116 | char *ret; | ||
117 | int outlen; | ||
118 | |||
119 | if (!PKCS12_pbe_crypt (algor, pass, passlen, oct->data, oct->length, | ||
120 | &out, &outlen, 0)) { | ||
121 | PKCS12err(PKCS12_F_PKCS12_DECRYPT_D2I,PKCS12_R_PKCS12_PBE_CRYPT_ERROR); | ||
122 | return NULL; | ||
123 | } | ||
124 | p = out; | ||
125 | #ifdef DEBUG_DECRYPT | ||
126 | { | ||
127 | FILE *op; | ||
128 | |||
129 | char fname[30]; | ||
130 | static int fnm = 1; | ||
131 | sprintf(fname, "DER%d", fnm++); | ||
132 | op = fopen(fname, "wb"); | ||
133 | fwrite (p, 1, outlen, op); | ||
134 | fclose(op); | ||
135 | } | ||
136 | #endif | ||
137 | if (seq & 1) ret = (char *) d2i_ASN1_SET(NULL, &p, outlen, d2i, | ||
138 | free_func, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL); | ||
139 | else ret = d2i(NULL, &p, outlen); | ||
140 | if (seq & 2) memset(out, 0, outlen); | ||
141 | if(!ret) PKCS12err(PKCS12_F_PKCS12_DECRYPT_D2I,PKCS12_R_DECODE_ERROR); | ||
142 | Free (out); | ||
143 | return ret; | ||
144 | } | ||
145 | |||
146 | /* Encode ASN1 structure and encrypt, return OCTET STRING | ||
147 | * if 'seq' is non-zero 'obj' is a stack of structures to be encoded | ||
148 | * as a sequence | ||
149 | */ | ||
150 | |||
151 | ASN1_OCTET_STRING *PKCS12_i2d_encrypt (X509_ALGOR *algor, int (*i2d)(), | ||
152 | const char *pass, int passlen, | ||
153 | char *obj, int seq) | ||
154 | { | ||
155 | ASN1_OCTET_STRING *oct; | ||
156 | unsigned char *in, *p; | ||
157 | int inlen; | ||
158 | if (!(oct = ASN1_OCTET_STRING_new ())) { | ||
159 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE); | ||
160 | return NULL; | ||
161 | } | ||
162 | if (seq) inlen = i2d_ASN1_SET((STACK *)obj, NULL, i2d, V_ASN1_SEQUENCE, | ||
163 | V_ASN1_UNIVERSAL, IS_SEQUENCE); | ||
164 | else inlen = i2d (obj, NULL); | ||
165 | if (!inlen) { | ||
166 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,PKCS12_R_ENCODE_ERROR); | ||
167 | return NULL; | ||
168 | } | ||
169 | if (!(in = Malloc (inlen))) { | ||
170 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE); | ||
171 | return NULL; | ||
172 | } | ||
173 | p = in; | ||
174 | if (seq) i2d_ASN1_SET((STACK *)obj, &p, i2d, V_ASN1_SEQUENCE, | ||
175 | V_ASN1_UNIVERSAL, IS_SEQUENCE); | ||
176 | else i2d (obj, &p); | ||
177 | if (!PKCS12_pbe_crypt (algor, pass, passlen, in, inlen, &oct->data, | ||
178 | &oct->length, 1)) { | ||
179 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,PKCS12_R_ENCRYPT_ERROR); | ||
180 | Free(in); | ||
181 | return NULL; | ||
182 | } | ||
183 | Free (in); | ||
184 | return oct; | ||
185 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_init.c b/src/lib/libcrypto/pkcs12/p12_init.c new file mode 100644 index 0000000000..dc6ab41db8 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_init.c | |||
@@ -0,0 +1,98 @@ | |||
1 | /* p12_init.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Initialise a PKCS12 structure to take data */ | ||
64 | |||
65 | PKCS12 *PKCS12_init (int mode) | ||
66 | { | ||
67 | PKCS12 *pkcs12; | ||
68 | if (!(pkcs12 = PKCS12_new())) { | ||
69 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
70 | return NULL; | ||
71 | } | ||
72 | if (!(pkcs12->version = ASN1_INTEGER_new ())) { | ||
73 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
74 | return NULL; | ||
75 | } | ||
76 | ASN1_INTEGER_set (pkcs12->version, 3); | ||
77 | if (!(pkcs12->authsafes = PKCS7_new())) { | ||
78 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
79 | return NULL; | ||
80 | } | ||
81 | pkcs12->authsafes->type = OBJ_nid2obj(mode); | ||
82 | switch (mode) { | ||
83 | case NID_pkcs7_data: | ||
84 | if (!(pkcs12->authsafes->d.data = | ||
85 | ASN1_OCTET_STRING_new())) { | ||
86 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
87 | return NULL; | ||
88 | } | ||
89 | break; | ||
90 | default: | ||
91 | PKCS12err(PKCS12_F_PKCS12_INIT,PKCS12_R_UNSUPPORTED_PKCS12_MODE); | ||
92 | PKCS12_free(pkcs12); | ||
93 | return NULL; | ||
94 | break; | ||
95 | } | ||
96 | |||
97 | return pkcs12; | ||
98 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_key.c b/src/lib/libcrypto/pkcs12/p12_key.c new file mode 100644 index 0000000000..25d8cdae57 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_key.c | |||
@@ -0,0 +1,182 @@ | |||
1 | /* p12_key.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | |||
64 | /* Uncomment out this line to get debugging info about key generation */ | ||
65 | /*#define DEBUG_KEYGEN*/ | ||
66 | #ifdef DEBUG_KEYGEN | ||
67 | #include <bio.h> | ||
68 | extern BIO *bio_err; | ||
69 | void h__dump (unsigned char *p, int len); | ||
70 | #endif | ||
71 | |||
72 | /* PKCS12 compatible key/IV generation */ | ||
73 | #ifndef min | ||
74 | #define min(a,b) ((a) < (b) ? (a) : (b)) | ||
75 | #endif | ||
76 | |||
77 | int PKCS12_key_gen_asc (const char *pass, int passlen, unsigned char *salt, | ||
78 | int saltlen, int id, int iter, int n, unsigned char *out, | ||
79 | const EVP_MD *md_type) | ||
80 | { | ||
81 | int ret; | ||
82 | unsigned char *unipass; | ||
83 | int uniplen; | ||
84 | if (!asc2uni (pass, &unipass, &uniplen)) { | ||
85 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); | ||
86 | return 0; | ||
87 | } | ||
88 | ret = PKCS12_key_gen_uni (unipass, uniplen, salt, saltlen, | ||
89 | id, iter, n, out, md_type); | ||
90 | memset(unipass, 0, uniplen); /* Clear password from memory */ | ||
91 | Free(unipass); | ||
92 | return ret; | ||
93 | } | ||
94 | |||
95 | int PKCS12_key_gen_uni (unsigned char *pass, int passlen, unsigned char *salt, | ||
96 | int saltlen, int id, int iter, int n, unsigned char *out, | ||
97 | const EVP_MD *md_type) | ||
98 | { | ||
99 | unsigned char *B, *D, *I, *p, *Ai; | ||
100 | int Slen, Plen, Ilen; | ||
101 | int i, j, u, v; | ||
102 | BIGNUM *Ij, *Bpl1; /* These hold Ij and B + 1 */ | ||
103 | EVP_MD_CTX ctx; | ||
104 | #ifdef DEBUG_KEYGEN | ||
105 | unsigned char *tmpout = out; | ||
106 | int tmpn = n; | ||
107 | BIO_printf (bio_err, "KEYGEN DEBUG\n"); | ||
108 | BIO_printf (bio_err, "ID %d, ITER %d\n", id, iter); | ||
109 | BIO_printf (bio_err, "Password (length %d):\n", passlen); | ||
110 | h__dump (pass, passlen); | ||
111 | BIO_printf (bio_err, "Salt (length %d):\n", saltlen); | ||
112 | h__dump (salt, saltlen); | ||
113 | BIO_printf (bio_err, "ID %d, ITER %d\n\n", id, iter); | ||
114 | #endif | ||
115 | v = EVP_MD_block_size (md_type); | ||
116 | u = EVP_MD_size (md_type); | ||
117 | D = Malloc (v); | ||
118 | Ai = Malloc (u); | ||
119 | B = Malloc (v + 1); | ||
120 | Slen = v * ((saltlen+v-1)/v); | ||
121 | Plen = v * ((passlen+v-1)/v); | ||
122 | Ilen = Slen + Plen; | ||
123 | I = Malloc (Ilen); | ||
124 | Ij = BN_new(); | ||
125 | Bpl1 = BN_new(); | ||
126 | if (!D || !Ai || !B || !I || !Ij || !Bpl1) { | ||
127 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_UNI,ERR_R_MALLOC_FAILURE); | ||
128 | return 0; | ||
129 | } | ||
130 | for (i = 0; i < v; i++) D[i] = id; | ||
131 | p = I; | ||
132 | for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen]; | ||
133 | for (i = 0; i < Plen; i++) *p++ = pass[i % passlen]; | ||
134 | for (;;) { | ||
135 | EVP_DigestInit (&ctx, md_type); | ||
136 | EVP_DigestUpdate (&ctx, D, v); | ||
137 | EVP_DigestUpdate (&ctx, I, Ilen); | ||
138 | EVP_DigestFinal (&ctx, Ai, NULL); | ||
139 | for (j = 1; j < iter; j++) { | ||
140 | EVP_DigestInit (&ctx, md_type); | ||
141 | EVP_DigestUpdate (&ctx, Ai, u); | ||
142 | EVP_DigestFinal (&ctx, Ai, NULL); | ||
143 | } | ||
144 | memcpy (out, Ai, min (n, u)); | ||
145 | if (u >= n) { | ||
146 | Free (Ai); | ||
147 | Free (B); | ||
148 | Free (D); | ||
149 | Free (I); | ||
150 | BN_free (Ij); | ||
151 | BN_free (Bpl1); | ||
152 | #ifdef DEBUG_KEYGEN | ||
153 | BIO_printf (bio_err, "Output KEY (length %d)\n", tmpn); | ||
154 | h__dump (tmpout, tmpn); | ||
155 | #endif | ||
156 | return 1; | ||
157 | } | ||
158 | n -= u; | ||
159 | out += u; | ||
160 | for (j = 0; j < v; j++) B[j] = Ai[j % u]; | ||
161 | /* Work out B + 1 first then can use B as tmp space */ | ||
162 | BN_bin2bn (B, v, Bpl1); | ||
163 | BN_add_word (Bpl1, 1); | ||
164 | for (j = 0; j < Ilen ; j+=v) { | ||
165 | BN_bin2bn (I + j, v, Ij); | ||
166 | BN_add (Ij, Ij, Bpl1); | ||
167 | BN_bn2bin (Ij, B); | ||
168 | /* If more than 2^(v*8) - 1 cut off MSB */ | ||
169 | if (BN_num_bytes (Ij) > v) { | ||
170 | BN_bn2bin (Ij, B); | ||
171 | memcpy (I + j, B + 1, v); | ||
172 | } else BN_bn2bin (Ij, I + j); | ||
173 | } | ||
174 | } | ||
175 | } | ||
176 | #ifdef DEBUG_KEYGEN | ||
177 | void h__dump (unsigned char *p, int len) | ||
178 | { | ||
179 | for (; len --; p++) BIO_printf (bio_err, "%02X", *p); | ||
180 | BIO_printf (bio_err, "\n"); | ||
181 | } | ||
182 | #endif | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_kiss.c b/src/lib/libcrypto/pkcs12/p12_kiss.c new file mode 100644 index 0000000000..767e1303da --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_kiss.c | |||
@@ -0,0 +1,238 @@ | |||
1 | /* p12_kiss.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Simplified PKCS#12 routines */ | ||
64 | |||
65 | static int parse_pk12( PKCS12 *p12, const char *pass, int passlen, EVP_PKEY **pkey, X509 **cert, STACK **ca); | ||
66 | static int parse_bags( STACK *bags, const char *pass, int passlen, EVP_PKEY **pkey, X509 **cert, STACK **ca, ASN1_OCTET_STRING **keyid, char *keymatch); | ||
67 | static int parse_bag( PKCS12_SAFEBAG *bag, const char *pass, int passlen, EVP_PKEY **pkey, X509 **cert, STACK **ca, ASN1_OCTET_STRING **keyid, char *keymatch); | ||
68 | /* Parse and decrypt a PKCS#12 structure returning user key, user cert | ||
69 | * and other (CA) certs. Note either ca should be NULL, *ca should be NULL, | ||
70 | * or it should point to a valid STACK structure. pkey and cert can be | ||
71 | * passed unitialised. | ||
72 | */ | ||
73 | |||
74 | int PKCS12_parse (PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, | ||
75 | STACK **ca) | ||
76 | { | ||
77 | |||
78 | /* Check for NULL PKCS12 structure */ | ||
79 | |||
80 | if(!p12) { | ||
81 | PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_INVALID_NULL_PKCS12_POINTER); | ||
82 | return 0; | ||
83 | } | ||
84 | |||
85 | /* Allocate stack for ca certificates if needed */ | ||
86 | if ((ca != NULL) && (*ca == NULL)) { | ||
87 | if (!(*ca = sk_new(NULL))) { | ||
88 | PKCS12err(PKCS12_F_PKCS12_PARSE,ERR_R_MALLOC_FAILURE); | ||
89 | return 0; | ||
90 | } | ||
91 | } | ||
92 | |||
93 | if(pkey) *pkey = NULL; | ||
94 | if(cert) *cert = NULL; | ||
95 | |||
96 | /* Check the mac */ | ||
97 | |||
98 | if (!PKCS12_verify_mac (p12, pass, -1)) { | ||
99 | PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_MAC_VERIFY_FAILURE); | ||
100 | goto err; | ||
101 | } | ||
102 | |||
103 | if (!parse_pk12 (p12, pass, -1, pkey, cert, ca)) { | ||
104 | PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_PARSE_ERROR); | ||
105 | goto err; | ||
106 | } | ||
107 | |||
108 | return 1; | ||
109 | |||
110 | err: | ||
111 | |||
112 | if (pkey && *pkey) EVP_PKEY_free (*pkey); | ||
113 | if (cert && *cert) X509_free (*cert); | ||
114 | if (ca) sk_pop_free (*ca, X509_free); | ||
115 | return 0; | ||
116 | |||
117 | } | ||
118 | |||
119 | /* Parse the outer PKCS#12 structure */ | ||
120 | |||
121 | static int parse_pk12 (PKCS12 *p12, const char *pass, int passlen, | ||
122 | EVP_PKEY **pkey, X509 **cert, STACK **ca) | ||
123 | { | ||
124 | STACK *asafes, *bags; | ||
125 | int i, bagnid; | ||
126 | PKCS7 *p7; | ||
127 | ASN1_OCTET_STRING *keyid = NULL; | ||
128 | char keymatch = 0; | ||
129 | if (!( asafes = M_PKCS12_unpack_authsafes (p12))) return 0; | ||
130 | for (i = 0; i < sk_num (asafes); i++) { | ||
131 | p7 = (PKCS7 *) sk_value (asafes, i); | ||
132 | bagnid = OBJ_obj2nid (p7->type); | ||
133 | if (bagnid == NID_pkcs7_data) { | ||
134 | bags = M_PKCS12_unpack_p7data (p7); | ||
135 | } else if (bagnid == NID_pkcs7_encrypted) { | ||
136 | bags = M_PKCS12_unpack_p7encdata (p7, pass, passlen); | ||
137 | } else continue; | ||
138 | if (!bags) { | ||
139 | sk_pop_free (asafes, PKCS7_free); | ||
140 | return 0; | ||
141 | } | ||
142 | if (!parse_bags (bags, pass, passlen, pkey, cert, ca, | ||
143 | &keyid, &keymatch)) { | ||
144 | sk_pop_free (bags, PKCS12_SAFEBAG_free); | ||
145 | sk_pop_free (asafes, PKCS7_free); | ||
146 | return 0; | ||
147 | } | ||
148 | sk_pop_free (bags, PKCS12_SAFEBAG_free); | ||
149 | } | ||
150 | sk_pop_free (asafes, PKCS7_free); | ||
151 | if (keyid) ASN1_OCTET_STRING_free (keyid); | ||
152 | return 1; | ||
153 | } | ||
154 | |||
155 | |||
156 | static int parse_bags (STACK *bags, const char *pass, int passlen, | ||
157 | EVP_PKEY **pkey, X509 **cert, STACK **ca, | ||
158 | ASN1_OCTET_STRING **keyid, char *keymatch) | ||
159 | { | ||
160 | int i; | ||
161 | for (i = 0; i < sk_num (bags); i++) { | ||
162 | if (!parse_bag ((PKCS12_SAFEBAG *)sk_value (bags, i), | ||
163 | pass, passlen, pkey, cert, ca, keyid, | ||
164 | keymatch)) return 0; | ||
165 | } | ||
166 | return 1; | ||
167 | } | ||
168 | |||
169 | #define MATCH_KEY 0x1 | ||
170 | #define MATCH_CERT 0x2 | ||
171 | #define MATCH_ALL 0x3 | ||
172 | |||
173 | static int parse_bag (PKCS12_SAFEBAG *bag, const char *pass, int passlen, | ||
174 | EVP_PKEY **pkey, X509 **cert, STACK **ca, | ||
175 | ASN1_OCTET_STRING **keyid, | ||
176 | char *keymatch) | ||
177 | { | ||
178 | PKCS8_PRIV_KEY_INFO *p8; | ||
179 | X509 *x509; | ||
180 | ASN1_OCTET_STRING *lkey = NULL; | ||
181 | ASN1_TYPE *attrib; | ||
182 | |||
183 | |||
184 | if ((attrib = PKCS12_get_attr (bag, NID_localKeyID))) | ||
185 | lkey = attrib->value.octet_string; | ||
186 | |||
187 | /* Check for any local key id matching (if needed) */ | ||
188 | if (lkey && ((*keymatch & MATCH_ALL) != MATCH_ALL)) { | ||
189 | if (*keyid) { | ||
190 | if (ASN1_OCTET_STRING_cmp (*keyid, lkey)) lkey = NULL; | ||
191 | } else { | ||
192 | if (!(*keyid = ASN1_OCTET_STRING_dup (lkey))) { | ||
193 | PKCS12err(PKCS12_F_PARSE_BAGS,ERR_R_MALLOC_FAILURE); | ||
194 | return 0; | ||
195 | } | ||
196 | } | ||
197 | } | ||
198 | |||
199 | switch (M_PKCS12_bag_type(bag)) | ||
200 | { | ||
201 | case NID_keyBag: | ||
202 | if (!lkey || !pkey) return 1; | ||
203 | if (!(*pkey = EVP_PKCS82PKEY (bag->value.keybag))) return 0; | ||
204 | *keymatch |= MATCH_KEY; | ||
205 | break; | ||
206 | |||
207 | case NID_pkcs8ShroudedKeyBag: | ||
208 | if (!lkey || !pkey) return 1; | ||
209 | if (!(p8 = M_PKCS12_decrypt_skey (bag, pass, passlen))) | ||
210 | return 0; | ||
211 | *pkey = EVP_PKCS82PKEY (p8); | ||
212 | PKCS8_PRIV_KEY_INFO_free (p8); | ||
213 | if (!(*pkey)) return 0; | ||
214 | *keymatch |= MATCH_KEY; | ||
215 | break; | ||
216 | |||
217 | case NID_certBag: | ||
218 | if (M_PKCS12_cert_bag_type(bag) != NID_x509Certificate ) | ||
219 | return 1; | ||
220 | if (!(x509 = M_PKCS12_certbag2x509(bag))) return 0; | ||
221 | if (lkey) { | ||
222 | *keymatch |= MATCH_CERT; | ||
223 | if (cert) *cert = x509; | ||
224 | } else if (ca) sk_push (*ca, (char *)x509); | ||
225 | break; | ||
226 | |||
227 | case NID_safeContentsBag: | ||
228 | return parse_bags(bag->value.safes, pass, passlen, | ||
229 | pkey, cert, ca, keyid, keymatch); | ||
230 | break; | ||
231 | |||
232 | default: | ||
233 | return 1; | ||
234 | break; | ||
235 | } | ||
236 | return 1; | ||
237 | } | ||
238 | |||
diff --git a/src/lib/libcrypto/pkcs12/p12_lib.c b/src/lib/libcrypto/pkcs12/p12_lib.c new file mode 100644 index 0000000000..00a6695d9b --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_lib.c | |||
@@ -0,0 +1,111 @@ | |||
1 | /* p12_lib.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12(PKCS12 *a, unsigned char **pp) | ||
65 | { | ||
66 | M_ASN1_I2D_vars(a); | ||
67 | |||
68 | M_ASN1_I2D_len (a->version, i2d_ASN1_INTEGER); | ||
69 | M_ASN1_I2D_len (a->authsafes, i2d_PKCS7); | ||
70 | M_ASN1_I2D_len (a->mac, i2d_PKCS12_MAC_DATA); | ||
71 | |||
72 | M_ASN1_I2D_seq_total(); | ||
73 | |||
74 | M_ASN1_I2D_put (a->version, i2d_ASN1_INTEGER); | ||
75 | M_ASN1_I2D_put (a->authsafes, i2d_PKCS7); | ||
76 | M_ASN1_I2D_put (a->mac, i2d_PKCS12_MAC_DATA); | ||
77 | |||
78 | M_ASN1_I2D_finish(); | ||
79 | } | ||
80 | |||
81 | PKCS12 *d2i_PKCS12(PKCS12 **a, unsigned char **pp, long length) | ||
82 | { | ||
83 | M_ASN1_D2I_vars(a,PKCS12 *,PKCS12_new); | ||
84 | M_ASN1_D2I_Init(); | ||
85 | M_ASN1_D2I_start_sequence(); | ||
86 | M_ASN1_D2I_get (ret->version, d2i_ASN1_INTEGER); | ||
87 | M_ASN1_D2I_get (ret->authsafes, d2i_PKCS7); | ||
88 | M_ASN1_D2I_get_opt (ret->mac, d2i_PKCS12_MAC_DATA, V_ASN1_SEQUENCE); | ||
89 | M_ASN1_D2I_Finish(a, PKCS12_free, ASN1_F_D2I_PKCS12); | ||
90 | } | ||
91 | |||
92 | PKCS12 *PKCS12_new(void) | ||
93 | { | ||
94 | PKCS12 *ret=NULL; | ||
95 | ASN1_CTX c; | ||
96 | M_ASN1_New_Malloc(ret, PKCS12); | ||
97 | ret->version=NULL; | ||
98 | ret->mac=NULL; | ||
99 | ret->authsafes=NULL; | ||
100 | return (ret); | ||
101 | M_ASN1_New_Error(ASN1_F_PKCS12_NEW); | ||
102 | } | ||
103 | |||
104 | void PKCS12_free (PKCS12 *a) | ||
105 | { | ||
106 | if (a == NULL) return; | ||
107 | ASN1_INTEGER_free (a->version); | ||
108 | PKCS12_MAC_DATA_free (a->mac); | ||
109 | PKCS7_free (a->authsafes); | ||
110 | Free ((char *)a); | ||
111 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_mac.c b/src/lib/libcrypto/pkcs12/p12_mac.c new file mode 100644 index 0000000000..f163d4cfaa --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_mac.c | |||
@@ -0,0 +1,110 @@ | |||
1 | /* p12_mac.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *a, unsigned char **pp) | ||
65 | { | ||
66 | M_ASN1_I2D_vars(a); | ||
67 | M_ASN1_I2D_len (a->dinfo, i2d_X509_SIG); | ||
68 | M_ASN1_I2D_len (a->salt, i2d_ASN1_OCTET_STRING); | ||
69 | M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER); | ||
70 | |||
71 | M_ASN1_I2D_seq_total(); | ||
72 | |||
73 | M_ASN1_I2D_put (a->dinfo, i2d_X509_SIG); | ||
74 | M_ASN1_I2D_put (a->salt, i2d_ASN1_OCTET_STRING); | ||
75 | M_ASN1_I2D_put (a->iter, i2d_ASN1_INTEGER); | ||
76 | M_ASN1_I2D_finish(); | ||
77 | } | ||
78 | |||
79 | PKCS12_MAC_DATA *PKCS12_MAC_DATA_new(void) | ||
80 | { | ||
81 | PKCS12_MAC_DATA *ret=NULL; | ||
82 | ASN1_CTX c; | ||
83 | M_ASN1_New_Malloc(ret, PKCS12_MAC_DATA); | ||
84 | ret->dinfo = X509_SIG_new(); | ||
85 | ret->salt = ASN1_OCTET_STRING_new(); | ||
86 | ret->iter = NULL; | ||
87 | return (ret); | ||
88 | M_ASN1_New_Error(ASN1_F_PKCS12_MAC_DATA_NEW); | ||
89 | } | ||
90 | |||
91 | PKCS12_MAC_DATA *d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **a, unsigned char **pp, | ||
92 | long length) | ||
93 | { | ||
94 | M_ASN1_D2I_vars(a,PKCS12_MAC_DATA *,PKCS12_MAC_DATA_new); | ||
95 | M_ASN1_D2I_Init(); | ||
96 | M_ASN1_D2I_start_sequence(); | ||
97 | M_ASN1_D2I_get (ret->dinfo, d2i_X509_SIG); | ||
98 | M_ASN1_D2I_get (ret->salt, d2i_ASN1_OCTET_STRING); | ||
99 | M_ASN1_D2I_get_opt (ret->iter, d2i_ASN1_INTEGER, V_ASN1_INTEGER); | ||
100 | M_ASN1_D2I_Finish(a, PKCS12_MAC_DATA_free, ASN1_F_D2I_PKCS12_MAC_DATA); | ||
101 | } | ||
102 | |||
103 | void PKCS12_MAC_DATA_free (PKCS12_MAC_DATA *a) | ||
104 | { | ||
105 | if (a == NULL) return; | ||
106 | X509_SIG_free (a->dinfo); | ||
107 | ASN1_OCTET_STRING_free (a->salt); | ||
108 | ASN1_INTEGER_free (a->iter); | ||
109 | Free ((char *)a); | ||
110 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_mutl.c b/src/lib/libcrypto/pkcs12/p12_mutl.c new file mode 100644 index 0000000000..bac558d6b9 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_mutl.c | |||
@@ -0,0 +1,170 @@ | |||
1 | /* p12_mutl.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #ifndef NO_HMAC | ||
60 | #include <stdio.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include <openssl/hmac.h> | ||
63 | #include <openssl/rand.h> | ||
64 | #include <openssl/pkcs12.h> | ||
65 | |||
66 | /* Generate a MAC */ | ||
67 | int PKCS12_gen_mac (PKCS12 *p12, const char *pass, int passlen, | ||
68 | unsigned char *mac, unsigned int *maclen) | ||
69 | { | ||
70 | const EVP_MD *md_type; | ||
71 | HMAC_CTX hmac; | ||
72 | unsigned char key[PKCS12_MAC_KEY_LENGTH], *salt; | ||
73 | int saltlen, iter; | ||
74 | salt = p12->mac->salt->data; | ||
75 | saltlen = p12->mac->salt->length; | ||
76 | if (!p12->mac->iter) iter = 1; | ||
77 | else iter = ASN1_INTEGER_get (p12->mac->iter); | ||
78 | if(!(md_type = | ||
79 | EVP_get_digestbyobj (p12->mac->dinfo->algor->algorithm))) { | ||
80 | PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_UNKNOWN_DIGEST_ALGORITHM); | ||
81 | return 0; | ||
82 | } | ||
83 | if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, | ||
84 | PKCS12_MAC_KEY_LENGTH, key, md_type)) { | ||
85 | PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR); | ||
86 | return 0; | ||
87 | } | ||
88 | HMAC_Init (&hmac, key, PKCS12_MAC_KEY_LENGTH, md_type); | ||
89 | HMAC_Update (&hmac, p12->authsafes->d.data->data, | ||
90 | p12->authsafes->d.data->length); | ||
91 | HMAC_Final (&hmac, mac, maclen); | ||
92 | return 1; | ||
93 | } | ||
94 | |||
95 | /* Verify the mac */ | ||
96 | int PKCS12_verify_mac (PKCS12 *p12, const char *pass, int passlen) | ||
97 | { | ||
98 | unsigned char mac[EVP_MAX_MD_SIZE]; | ||
99 | unsigned int maclen; | ||
100 | if(p12->mac == NULL) { | ||
101 | PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_ABSENT); | ||
102 | return 0; | ||
103 | } | ||
104 | if (!PKCS12_gen_mac (p12, pass, passlen, mac, &maclen)) { | ||
105 | PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_GENERATION_ERROR); | ||
106 | return 0; | ||
107 | } | ||
108 | if ((maclen != (unsigned int)p12->mac->dinfo->digest->length) | ||
109 | || memcmp (mac, p12->mac->dinfo->digest->data, maclen)) { | ||
110 | PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_VERIFY_ERROR); | ||
111 | return 0; | ||
112 | } | ||
113 | return 1; | ||
114 | } | ||
115 | |||
116 | /* Set a mac */ | ||
117 | |||
118 | int PKCS12_set_mac (PKCS12 *p12, const char *pass, int passlen, | ||
119 | unsigned char *salt, int saltlen, int iter, EVP_MD *md_type) | ||
120 | { | ||
121 | unsigned char mac[EVP_MAX_MD_SIZE]; | ||
122 | unsigned int maclen; | ||
123 | |||
124 | if (!md_type) md_type = EVP_sha1(); | ||
125 | if (PKCS12_setup_mac (p12, iter, salt, saltlen, md_type) == | ||
126 | PKCS12_ERROR) { | ||
127 | PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_SETUP_ERROR); | ||
128 | return 0; | ||
129 | } | ||
130 | if (!PKCS12_gen_mac (p12, pass, passlen, mac, &maclen)) { | ||
131 | PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_GENERATION_ERROR); | ||
132 | return 0; | ||
133 | } | ||
134 | if (!(ASN1_OCTET_STRING_set (p12->mac->dinfo->digest, mac, maclen))) { | ||
135 | PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_STRING_SET_ERROR); | ||
136 | return 0; | ||
137 | } | ||
138 | return 1; | ||
139 | } | ||
140 | |||
141 | /* Set up a mac structure */ | ||
142 | int PKCS12_setup_mac (PKCS12 *p12, int iter, unsigned char *salt, int saltlen, | ||
143 | EVP_MD *md_type) | ||
144 | { | ||
145 | if (!(p12->mac = PKCS12_MAC_DATA_new ())) return PKCS12_ERROR; | ||
146 | if (iter > 1) { | ||
147 | if(!(p12->mac->iter = ASN1_INTEGER_new())) { | ||
148 | PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); | ||
149 | return 0; | ||
150 | } | ||
151 | ASN1_INTEGER_set (p12->mac->iter, iter); | ||
152 | } | ||
153 | if (!saltlen) saltlen = PKCS12_SALT_LEN; | ||
154 | p12->mac->salt->length = saltlen; | ||
155 | if (!(p12->mac->salt->data = Malloc (saltlen))) { | ||
156 | PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); | ||
157 | return 0; | ||
158 | } | ||
159 | if (!salt) RAND_bytes (p12->mac->salt->data, saltlen); | ||
160 | else memcpy (p12->mac->salt->data, salt, saltlen); | ||
161 | p12->mac->dinfo->algor->algorithm = OBJ_nid2obj(EVP_MD_type(md_type)); | ||
162 | if (!(p12->mac->dinfo->algor->parameter = ASN1_TYPE_new())) { | ||
163 | PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); | ||
164 | return 0; | ||
165 | } | ||
166 | p12->mac->dinfo->algor->parameter->type = V_ASN1_NULL; | ||
167 | |||
168 | return 1; | ||
169 | } | ||
170 | #endif | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_sbag.c b/src/lib/libcrypto/pkcs12/p12_sbag.c new file mode 100644 index 0000000000..1b3addece1 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_sbag.c | |||
@@ -0,0 +1,227 @@ | |||
1 | /* p12_sbag.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *a, unsigned char **pp) | ||
65 | { | ||
66 | int bagnid, v = 0; | ||
67 | M_ASN1_I2D_vars(a); | ||
68 | bagnid = OBJ_obj2nid (a->type); | ||
69 | M_ASN1_I2D_len (a->type, i2d_ASN1_OBJECT); | ||
70 | |||
71 | switch (bagnid) { | ||
72 | |||
73 | case NID_keyBag: | ||
74 | M_ASN1_I2D_len_EXP_opt (a->value.keybag, | ||
75 | i2d_PKCS8_PRIV_KEY_INFO, 0, v); | ||
76 | break; | ||
77 | |||
78 | case NID_pkcs8ShroudedKeyBag: | ||
79 | M_ASN1_I2D_len_EXP_opt (a->value.shkeybag, | ||
80 | i2d_X509_SIG, 0, v); | ||
81 | break; | ||
82 | |||
83 | case NID_safeContentsBag: | ||
84 | M_ASN1_I2D_len_EXP_SEQUENCE_opt (a->value.safes, | ||
85 | i2d_PKCS12_SAFEBAG, 0, V_ASN1_SEQUENCE, v); | ||
86 | break; | ||
87 | |||
88 | case NID_certBag: | ||
89 | case NID_crlBag: | ||
90 | case NID_secretBag: | ||
91 | M_ASN1_I2D_len_EXP_opt (a->value.bag, | ||
92 | i2d_PKCS12_BAGS, 0, v); | ||
93 | break; | ||
94 | |||
95 | default: | ||
96 | M_ASN1_I2D_len_EXP_opt (a->value.other, | ||
97 | i2d_ASN1_TYPE, 0, v); | ||
98 | break; | ||
99 | } | ||
100 | |||
101 | M_ASN1_I2D_len_SET_type (X509_ATTRIBUTE,a->attrib, i2d_X509_ATTRIBUTE); | ||
102 | |||
103 | M_ASN1_I2D_seq_total (); | ||
104 | |||
105 | M_ASN1_I2D_put (a->type, i2d_ASN1_OBJECT); | ||
106 | |||
107 | switch (bagnid) { | ||
108 | |||
109 | case NID_keyBag: | ||
110 | M_ASN1_I2D_put_EXP_opt (a->value.keybag, | ||
111 | i2d_PKCS8_PRIV_KEY_INFO, 0, v); | ||
112 | break; | ||
113 | |||
114 | case NID_pkcs8ShroudedKeyBag: | ||
115 | M_ASN1_I2D_put_EXP_opt (a->value.shkeybag, | ||
116 | i2d_X509_SIG, 0, v); | ||
117 | break; | ||
118 | |||
119 | case NID_safeContentsBag: | ||
120 | M_ASN1_I2D_put_EXP_SEQUENCE_opt (a->value.safes, | ||
121 | i2d_PKCS12_SAFEBAG, 0, V_ASN1_SEQUENCE, v); | ||
122 | break; | ||
123 | |||
124 | case NID_certBag: | ||
125 | case NID_crlBag: | ||
126 | case NID_secretBag: | ||
127 | M_ASN1_I2D_put_EXP_opt (a->value.bag, | ||
128 | i2d_PKCS12_BAGS, 0, v); | ||
129 | break; | ||
130 | |||
131 | default: | ||
132 | M_ASN1_I2D_put_EXP_opt (a->value.other, | ||
133 | i2d_ASN1_TYPE, 0, v); | ||
134 | break; | ||
135 | } | ||
136 | |||
137 | M_ASN1_I2D_put_SET_type (X509_ATTRIBUTE, a->attrib, i2d_X509_ATTRIBUTE); | ||
138 | |||
139 | M_ASN1_I2D_finish(); | ||
140 | } | ||
141 | |||
142 | PKCS12_SAFEBAG *PKCS12_SAFEBAG_new(void) | ||
143 | { | ||
144 | PKCS12_SAFEBAG *ret=NULL; | ||
145 | ASN1_CTX c; | ||
146 | M_ASN1_New_Malloc(ret, PKCS12_SAFEBAG); | ||
147 | ret->type=NULL; | ||
148 | ret->value.other=NULL; | ||
149 | M_ASN1_New(ret->attrib, sk_X509_ATTRIBUTE_new_null); | ||
150 | ret->rest=NULL; | ||
151 | return (ret); | ||
152 | M_ASN1_New_Error(ASN1_F_PKCS12_SAFEBAG_NEW); | ||
153 | } | ||
154 | |||
155 | PKCS12_SAFEBAG *d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, unsigned char **pp, | ||
156 | long length) | ||
157 | { | ||
158 | int bagnid; | ||
159 | M_ASN1_D2I_vars(a,PKCS12_SAFEBAG *,PKCS12_SAFEBAG_new); | ||
160 | M_ASN1_D2I_Init(); | ||
161 | M_ASN1_D2I_start_sequence(); | ||
162 | M_ASN1_D2I_get (ret->type, d2i_ASN1_OBJECT); | ||
163 | bagnid = OBJ_obj2nid (ret->type); | ||
164 | |||
165 | switch (bagnid) { | ||
166 | |||
167 | case NID_keyBag: | ||
168 | M_ASN1_D2I_get_EXP_opt (ret->value.keybag, | ||
169 | d2i_PKCS8_PRIV_KEY_INFO, 0); | ||
170 | break; | ||
171 | |||
172 | case NID_pkcs8ShroudedKeyBag: | ||
173 | M_ASN1_D2I_get_EXP_opt (ret->value.shkeybag, | ||
174 | d2i_X509_SIG, 0); | ||
175 | break; | ||
176 | |||
177 | case NID_safeContentsBag: | ||
178 | M_ASN1_D2I_get_EXP_set_opt(ret->value.safes, | ||
179 | d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, | ||
180 | 0, V_ASN1_SEQUENCE); | ||
181 | break; | ||
182 | |||
183 | case NID_certBag: | ||
184 | case NID_crlBag: | ||
185 | case NID_secretBag: | ||
186 | M_ASN1_D2I_get_EXP_opt (ret->value.bag, | ||
187 | d2i_PKCS12_BAGS, 0); | ||
188 | break; | ||
189 | |||
190 | default: | ||
191 | M_ASN1_D2I_get_EXP_opt (ret->value.other, | ||
192 | d2i_ASN1_TYPE, 0); | ||
193 | break; | ||
194 | } | ||
195 | M_ASN1_D2I_get_set_opt_type(X509_ATTRIBUTE,ret->attrib, | ||
196 | d2i_X509_ATTRIBUTE,X509_ATTRIBUTE_free); | ||
197 | M_ASN1_D2I_Finish(a, PKCS12_SAFEBAG_free, ASN1_F_D2I_PKCS12_SAFEBAG); | ||
198 | } | ||
199 | |||
200 | void PKCS12_SAFEBAG_free (PKCS12_SAFEBAG *a) | ||
201 | { | ||
202 | if (a == NULL) return; | ||
203 | switch (OBJ_obj2nid(a->type)) { | ||
204 | |||
205 | case NID_keyBag: | ||
206 | PKCS8_PRIV_KEY_INFO_free (a->value.keybag); | ||
207 | break; | ||
208 | |||
209 | case NID_pkcs8ShroudedKeyBag: | ||
210 | X509_SIG_free (a->value.shkeybag); | ||
211 | break; | ||
212 | |||
213 | case NID_certBag: | ||
214 | case NID_crlBag: | ||
215 | case NID_secretBag: | ||
216 | PKCS12_BAGS_free (a->value.bag); | ||
217 | break; | ||
218 | |||
219 | default: | ||
220 | ASN1_TYPE_free (a->value.other); | ||
221 | break; | ||
222 | } | ||
223 | |||
224 | ASN1_OBJECT_free (a->type); | ||
225 | sk_X509_ATTRIBUTE_pop_free (a->attrib, X509_ATTRIBUTE_free); | ||
226 | Free (a); | ||
227 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/p12_utl.c b/src/lib/libcrypto/pkcs12/p12_utl.c new file mode 100644 index 0000000000..2adcbc95e1 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/p12_utl.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /* p12_utl.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Cheap and nasty Unicode stuff */ | ||
64 | |||
65 | unsigned char *asc2uni (const char *asc, unsigned char **uni, int *unilen) | ||
66 | { | ||
67 | int ulen, i; | ||
68 | unsigned char *unitmp; | ||
69 | ulen = strlen(asc)*2 + 2; | ||
70 | if (!(unitmp = Malloc (ulen))) return NULL; | ||
71 | for (i = 0; i < ulen; i+=2) { | ||
72 | unitmp[i] = 0; | ||
73 | unitmp[i + 1] = asc[i>>1]; | ||
74 | } | ||
75 | if (unilen) *unilen = ulen; | ||
76 | if (uni) *uni = unitmp; | ||
77 | return unitmp; | ||
78 | } | ||
79 | |||
80 | char *uni2asc (unsigned char *uni, int unilen) | ||
81 | { | ||
82 | int asclen, i; | ||
83 | char *asctmp; | ||
84 | asclen = unilen / 2; | ||
85 | /* If no terminating zero allow for one */ | ||
86 | if (uni[unilen - 1]) asclen++; | ||
87 | uni++; | ||
88 | if (!(asctmp = Malloc (asclen))) return NULL; | ||
89 | for (i = 0; i < unilen; i+=2) asctmp[i>>1] = uni[i]; | ||
90 | asctmp[asclen - 1] = 0; | ||
91 | return asctmp; | ||
92 | } | ||
93 | |||
94 | int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12) | ||
95 | { | ||
96 | return ASN1_i2d_bio((int(*)())i2d_PKCS12, bp, (unsigned char *)p12); | ||
97 | } | ||
98 | |||
99 | #ifndef NO_FP_API | ||
100 | int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12) | ||
101 | { | ||
102 | return ASN1_i2d_fp((int(*)())i2d_PKCS12, fp, (unsigned char *)p12); | ||
103 | } | ||
104 | #endif | ||
105 | |||
106 | PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12) | ||
107 | { | ||
108 | return (PKCS12 *)ASN1_d2i_bio((char *(*)())PKCS12_new, | ||
109 | (char *(*)())d2i_PKCS12, bp, (unsigned char **)p12); | ||
110 | } | ||
111 | #ifndef NO_FP_API | ||
112 | PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12) | ||
113 | { | ||
114 | return (PKCS12 *)ASN1_d2i_fp((char *(*)())PKCS12_new, | ||
115 | (char *(*)())d2i_PKCS12, fp, (unsigned char **)(p12)); | ||
116 | } | ||
117 | #endif | ||
118 | |||
diff --git a/src/lib/libcrypto/pkcs12/pk12err.c b/src/lib/libcrypto/pkcs12/pk12err.c new file mode 100644 index 0000000000..38d7be7675 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/pk12err.c | |||
@@ -0,0 +1,136 @@ | |||
1 | /* crypto/pkcs12/pk12err.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions | ||
7 | * are met: | ||
8 | * | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in | ||
14 | * the documentation and/or other materials provided with the | ||
15 | * distribution. | ||
16 | * | ||
17 | * 3. All advertising materials mentioning features or use of this | ||
18 | * software must display the following acknowledgment: | ||
19 | * "This product includes software developed by the OpenSSL Project | ||
20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
21 | * | ||
22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
23 | * endorse or promote products derived from this software without | ||
24 | * prior written permission. For written permission, please contact | ||
25 | * openssl-core@OpenSSL.org. | ||
26 | * | ||
27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
28 | * nor may "OpenSSL" appear in their names without prior written | ||
29 | * permission of the OpenSSL Project. | ||
30 | * | ||
31 | * 6. Redistributions of any form whatsoever must retain the following | ||
32 | * acknowledgment: | ||
33 | * "This product includes software developed by the OpenSSL Project | ||
34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
35 | * | ||
36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
54 | */ | ||
55 | |||
56 | /* NOTE: this file was auto generated by the mkerr.pl script: any changes | ||
57 | * made to it will be overwritten when the script next updates this file. | ||
58 | */ | ||
59 | |||
60 | #include <stdio.h> | ||
61 | #include <openssl/err.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | /* BEGIN ERROR CODES */ | ||
65 | #ifndef NO_ERR | ||
66 | static ERR_STRING_DATA PKCS12_str_functs[]= | ||
67 | { | ||
68 | {ERR_PACK(0,PKCS12_F_PARSE_BAGS,0), "PARSE_BAGS"}, | ||
69 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME,0), "PKCS12_ADD_FRIENDLYNAME"}, | ||
70 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC,0), "PKCS12_add_friendlyname_asc"}, | ||
71 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI,0), "PKCS12_add_friendlyname_uni"}, | ||
72 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_LOCALKEYID,0), "PKCS12_add_localkeyid"}, | ||
73 | {ERR_PACK(0,PKCS12_F_PKCS12_CREATE,0), "PKCS12_create"}, | ||
74 | {ERR_PACK(0,PKCS12_F_PKCS12_DECRYPT_D2I,0), "PKCS12_decrypt_d2i"}, | ||
75 | {ERR_PACK(0,PKCS12_F_PKCS12_GEN_MAC,0), "PKCS12_gen_mac"}, | ||
76 | {ERR_PACK(0,PKCS12_F_PKCS12_I2D_ENCRYPT,0), "PKCS12_i2d_encrypt"}, | ||
77 | {ERR_PACK(0,PKCS12_F_PKCS12_INIT,0), "PKCS12_init"}, | ||
78 | {ERR_PACK(0,PKCS12_F_PKCS12_KEY_GEN_ASC,0), "PKCS12_key_gen_asc"}, | ||
79 | {ERR_PACK(0,PKCS12_F_PKCS12_KEY_GEN_UNI,0), "PKCS12_key_gen_uni"}, | ||
80 | {ERR_PACK(0,PKCS12_F_PKCS12_MAKE_KEYBAG,0), "PKCS12_MAKE_KEYBAG"}, | ||
81 | {ERR_PACK(0,PKCS12_F_PKCS12_MAKE_SHKEYBAG,0), "PKCS12_MAKE_SHKEYBAG"}, | ||
82 | {ERR_PACK(0,PKCS12_F_PKCS12_PACK_P7DATA,0), "PKCS12_pack_p7data"}, | ||
83 | {ERR_PACK(0,PKCS12_F_PKCS12_PACK_P7ENCDATA,0), "PKCS12_pack_p7encdata"}, | ||
84 | {ERR_PACK(0,PKCS12_F_PKCS12_PACK_SAFEBAG,0), "PKCS12_pack_safebag"}, | ||
85 | {ERR_PACK(0,PKCS12_F_PKCS12_PARSE,0), "PKCS12_parse"}, | ||
86 | {ERR_PACK(0,PKCS12_F_PKCS12_PBE_CRYPT,0), "PKCS12_pbe_crypt"}, | ||
87 | {ERR_PACK(0,PKCS12_F_PKCS12_PBE_KEYIVGEN,0), "PKCS12_PBE_keyivgen"}, | ||
88 | {ERR_PACK(0,PKCS12_F_PKCS12_SETUP_MAC,0), "PKCS12_setup_mac"}, | ||
89 | {ERR_PACK(0,PKCS12_F_PKCS12_SET_MAC,0), "PKCS12_set_mac"}, | ||
90 | {ERR_PACK(0,PKCS12_F_PKCS8_ADD_KEYUSAGE,0), "PKCS8_add_keyusage"}, | ||
91 | {ERR_PACK(0,PKCS12_F_PKCS8_ENCRYPT,0), "PKCS8_encrypt"}, | ||
92 | {ERR_PACK(0,PKCS12_F_VERIFY_MAC,0), "VERIFY_MAC"}, | ||
93 | {0,NULL} | ||
94 | }; | ||
95 | |||
96 | static ERR_STRING_DATA PKCS12_str_reasons[]= | ||
97 | { | ||
98 | {PKCS12_R_CANT_PACK_STRUCTURE ,"cant pack structure"}, | ||
99 | {PKCS12_R_DECODE_ERROR ,"decode error"}, | ||
100 | {PKCS12_R_ENCODE_ERROR ,"encode error"}, | ||
101 | {PKCS12_R_ENCRYPT_ERROR ,"encrypt error"}, | ||
102 | {PKCS12_R_INVALID_NULL_ARGUMENT ,"invalid null argument"}, | ||
103 | {PKCS12_R_INVALID_NULL_PKCS12_POINTER ,"invalid null pkcs12 pointer"}, | ||
104 | {PKCS12_R_IV_GEN_ERROR ,"iv gen error"}, | ||
105 | {PKCS12_R_KEY_GEN_ERROR ,"key gen error"}, | ||
106 | {PKCS12_R_MAC_ABSENT ,"mac absent"}, | ||
107 | {PKCS12_R_MAC_GENERATION_ERROR ,"mac generation error"}, | ||
108 | {PKCS12_R_MAC_SETUP_ERROR ,"mac setup error"}, | ||
109 | {PKCS12_R_MAC_STRING_SET_ERROR ,"mac string set error"}, | ||
110 | {PKCS12_R_MAC_VERIFY_ERROR ,"mac verify error"}, | ||
111 | {PKCS12_R_MAC_VERIFY_FAILURE ,"mac verify failure"}, | ||
112 | {PKCS12_R_PARSE_ERROR ,"parse error"}, | ||
113 | {PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR ,"pkcs12 algor cipherinit error"}, | ||
114 | {PKCS12_R_PKCS12_CIPHERFINAL_ERROR ,"pkcs12 cipherfinal error"}, | ||
115 | {PKCS12_R_PKCS12_PBE_CRYPT_ERROR ,"pkcs12 pbe crypt error"}, | ||
116 | {PKCS12_R_UNKNOWN_DIGEST_ALGORITHM ,"unknown digest algorithm"}, | ||
117 | {PKCS12_R_UNSUPPORTED_PKCS12_MODE ,"unsupported pkcs12 mode"}, | ||
118 | {0,NULL} | ||
119 | }; | ||
120 | |||
121 | #endif | ||
122 | |||
123 | void ERR_load_PKCS12_strings(void) | ||
124 | { | ||
125 | static int init=1; | ||
126 | |||
127 | if (init) | ||
128 | { | ||
129 | init=0; | ||
130 | #ifndef NO_ERR | ||
131 | ERR_load_strings(ERR_LIB_PKCS12,PKCS12_str_functs); | ||
132 | ERR_load_strings(ERR_LIB_PKCS12,PKCS12_str_reasons); | ||
133 | #endif | ||
134 | |||
135 | } | ||
136 | } | ||
diff --git a/src/lib/libcrypto/pkcs12/pkcs12.h b/src/lib/libcrypto/pkcs12/pkcs12.h new file mode 100644 index 0000000000..4cfba5e6c6 --- /dev/null +++ b/src/lib/libcrypto/pkcs12/pkcs12.h | |||
@@ -0,0 +1,337 @@ | |||
1 | /* pkcs12.h */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #ifndef HEADER_PKCS12_H | ||
60 | #define HEADER_PKCS12_H | ||
61 | |||
62 | #ifdef __cplusplus | ||
63 | extern "C" { | ||
64 | #endif | ||
65 | |||
66 | #include <openssl/bio.h> | ||
67 | #include <openssl/x509.h> | ||
68 | |||
69 | #define PKCS12_KEY_ID 1 | ||
70 | #define PKCS12_IV_ID 2 | ||
71 | #define PKCS12_MAC_ID 3 | ||
72 | |||
73 | /* Default iteration count */ | ||
74 | #ifndef PKCS12_DEFAULT_ITER | ||
75 | #define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER | ||
76 | #endif | ||
77 | |||
78 | #define PKCS12_MAC_KEY_LENGTH 20 | ||
79 | |||
80 | #define PKCS12_SALT_LEN 8 | ||
81 | |||
82 | /* Uncomment out next line for unicode password and names, otherwise ASCII */ | ||
83 | |||
84 | /*#define PBE_UNICODE*/ | ||
85 | |||
86 | #ifdef PBE_UNICODE | ||
87 | #define PKCS12_key_gen PKCS12_key_gen_uni | ||
88 | #define PKCS12_add_friendlyname PKCS12_add_friendlyname_uni | ||
89 | #else | ||
90 | #define PKCS12_key_gen PKCS12_key_gen_asc | ||
91 | #define PKCS12_add_friendlyname PKCS12_add_friendlyname_asc | ||
92 | #endif | ||
93 | |||
94 | /* MS key usage constants */ | ||
95 | |||
96 | #define KEY_EX 0x10 | ||
97 | #define KEY_SIG 0x80 | ||
98 | |||
99 | typedef struct { | ||
100 | X509_SIG *dinfo; | ||
101 | ASN1_OCTET_STRING *salt; | ||
102 | ASN1_INTEGER *iter; /* defaults to 1 */ | ||
103 | } PKCS12_MAC_DATA; | ||
104 | |||
105 | typedef struct { | ||
106 | ASN1_INTEGER *version; | ||
107 | PKCS12_MAC_DATA *mac; | ||
108 | PKCS7 *authsafes; | ||
109 | } PKCS12; | ||
110 | |||
111 | typedef struct { | ||
112 | ASN1_OBJECT *type; | ||
113 | union { | ||
114 | struct pkcs12_bag_st *bag; /* secret, crl and certbag */ | ||
115 | struct pkcs8_priv_key_info_st *keybag; /* keybag */ | ||
116 | X509_SIG *shkeybag; /* shrouded key bag */ | ||
117 | STACK /* PKCS12_SAFEBAG */ *safes; | ||
118 | ASN1_TYPE *other; | ||
119 | }value; | ||
120 | STACK_OF(X509_ATTRIBUTE) *attrib; | ||
121 | ASN1_TYPE *rest; | ||
122 | } PKCS12_SAFEBAG; | ||
123 | |||
124 | typedef struct pkcs12_bag_st { | ||
125 | ASN1_OBJECT *type; | ||
126 | union { | ||
127 | ASN1_OCTET_STRING *x509cert; | ||
128 | ASN1_OCTET_STRING *x509crl; | ||
129 | ASN1_OCTET_STRING *octet; | ||
130 | ASN1_IA5STRING *sdsicert; | ||
131 | ASN1_TYPE *other; /* Secret or other bag */ | ||
132 | }value; | ||
133 | } PKCS12_BAGS; | ||
134 | |||
135 | #define PKCS12_ERROR 0 | ||
136 | #define PKCS12_OK 1 | ||
137 | |||
138 | #define M_PKCS12_bag_type(bag) OBJ_obj2nid(bag->type) | ||
139 | #define M_PKCS12_cert_bag_type(bag) OBJ_obj2nid(bag->value.bag->type) | ||
140 | #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type | ||
141 | |||
142 | #define M_PKCS12_x5092certbag(x509) \ | ||
143 | PKCS12_pack_safebag ((char *)(x509), i2d_X509, NID_x509Certificate, NID_certBag) | ||
144 | |||
145 | #define M_PKCS12_x509crl2certbag(crl) \ | ||
146 | PKCS12_pack_safebag ((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag) | ||
147 | |||
148 | #define M_PKCS12_certbag2x509(bg) \ | ||
149 | (X509 *) ASN1_unpack_string ((bg)->value.bag->value.octet, \ | ||
150 | (char *(*)())d2i_X509) | ||
151 | |||
152 | #define M_PKCS12_certbag2x509crl(bg) \ | ||
153 | (X509CRL *) ASN1_unpack_string ((bg)->value.bag->value.octet, \ | ||
154 | (char *(*)())d2i_X509CRL) | ||
155 | |||
156 | /*#define M_PKCS12_pkcs82rsa(p8) \ | ||
157 | (RSA *) ASN1_unpack_string ((p8)->pkey, (char *(*)())d2i_RSAPrivateKey)*/ | ||
158 | |||
159 | #define M_PKCS12_unpack_p7data(p7) \ | ||
160 | ASN1_seq_unpack ((p7)->d.data->data, p7->d.data->length, \ | ||
161 | (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free) | ||
162 | |||
163 | #define M_PKCS12_pack_authsafes(p12, safes) \ | ||
164 | ASN1_seq_pack((safes), (int (*)())i2d_PKCS7,\ | ||
165 | &(p12)->authsafes->d.data->data, &(p12)->authsafes->d.data->length) | ||
166 | |||
167 | #define M_PKCS12_unpack_authsafes(p12) \ | ||
168 | ASN1_seq_unpack((p12)->authsafes->d.data->data, \ | ||
169 | (p12)->authsafes->d.data->length, (char *(*)())d2i_PKCS7, \ | ||
170 | PKCS7_free) | ||
171 | |||
172 | #define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \ | ||
173 | (STACK *) PKCS12_decrypt_d2i ((p7)->d.encrypted->enc_data->algorithm,\ | ||
174 | (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, \ | ||
175 | (pass), (passlen), \ | ||
176 | (p7)->d.encrypted->enc_data->enc_data, 3) | ||
177 | |||
178 | #define M_PKCS12_decrypt_skey(bag, pass, passlen) \ | ||
179 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((bag)->value.shkeybag->algor, \ | ||
180 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free, \ | ||
181 | (pass), (passlen), \ | ||
182 | (bag)->value.shkeybag->digest, 2) | ||
183 | |||
184 | #define M_PKCS8_decrypt(p8, pass, passlen) \ | ||
185 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((p8)->algor, \ | ||
186 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free,\ | ||
187 | (pass), (passlen), (p8)->digest, 2) | ||
188 | |||
189 | #define PKCS12_get_attr(bag, attr_nid) \ | ||
190 | PKCS12_get_attr_gen(bag->attrib, attr_nid) | ||
191 | |||
192 | #define PKCS8_get_attr(p8, attr_nid) \ | ||
193 | PKCS12_get_attr_gen(p8->attributes, attr_nid) | ||
194 | |||
195 | #define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0) | ||
196 | |||
197 | |||
198 | PKCS12_SAFEBAG *PKCS12_pack_safebag(char *obj, int (*i2d)(), int nid1, int nid2); | ||
199 | PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8); | ||
200 | X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, | ||
201 | const char *pass, int passlen, | ||
202 | unsigned char *salt, int saltlen, int iter, | ||
203 | PKCS8_PRIV_KEY_INFO *p8); | ||
204 | PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, | ||
205 | int passlen, unsigned char *salt, | ||
206 | int saltlen, int iter, | ||
207 | PKCS8_PRIV_KEY_INFO *p8); | ||
208 | PKCS7 *PKCS12_pack_p7data(STACK *sk); | ||
209 | PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, | ||
210 | unsigned char *salt, int saltlen, int iter, | ||
211 | STACK *bags); | ||
212 | int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen); | ||
213 | int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, | ||
214 | int namelen); | ||
215 | int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, const unsigned char *name, | ||
216 | int namelen); | ||
217 | int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); | ||
218 | ASN1_TYPE *PKCS12_get_attr_gen(STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid); | ||
219 | char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); | ||
220 | unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass, | ||
221 | int passlen, unsigned char *in, int inlen, | ||
222 | unsigned char **data, int *datalen, int en_de); | ||
223 | char *PKCS12_decrypt_d2i(X509_ALGOR *algor, char *(*d2i)(), | ||
224 | void (*free_func)(), const char *pass, int passlen, | ||
225 | ASN1_STRING *oct, int seq); | ||
226 | ASN1_STRING *PKCS12_i2d_encrypt(X509_ALGOR *algor, int (*i2d)(), | ||
227 | const char *pass, int passlen, char *obj, | ||
228 | int seq); | ||
229 | PKCS12 *PKCS12_init(int mode); | ||
230 | int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, | ||
231 | int saltlen, int id, int iter, int n, | ||
232 | unsigned char *out, const EVP_MD *md_type); | ||
233 | int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, int saltlen, int id, int iter, int n, unsigned char *out, const EVP_MD *md_type); | ||
234 | int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | ||
235 | ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md_type, | ||
236 | int en_de); | ||
237 | int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, | ||
238 | unsigned char *mac, unsigned int *maclen); | ||
239 | int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); | ||
240 | int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, | ||
241 | unsigned char *salt, int saltlen, int iter, | ||
242 | EVP_MD *md_type); | ||
243 | int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, | ||
244 | int saltlen, EVP_MD *md_type); | ||
245 | unsigned char *asc2uni(const char *asc, unsigned char **uni, int *unilen); | ||
246 | char *uni2asc(unsigned char *uni, int unilen); | ||
247 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp); | ||
248 | PKCS12_BAGS *PKCS12_BAGS_new(void); | ||
249 | PKCS12_BAGS *d2i_PKCS12_BAGS(PKCS12_BAGS **a, unsigned char **pp, long length); | ||
250 | void PKCS12_BAGS_free(PKCS12_BAGS *a); | ||
251 | int i2d_PKCS12(PKCS12 *a, unsigned char **pp); | ||
252 | PKCS12 *d2i_PKCS12(PKCS12 **a, unsigned char **pp, long length); | ||
253 | PKCS12 *PKCS12_new(void); | ||
254 | void PKCS12_free(PKCS12 *a); | ||
255 | int i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *a, unsigned char **pp); | ||
256 | PKCS12_MAC_DATA *PKCS12_MAC_DATA_new(void); | ||
257 | PKCS12_MAC_DATA *d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **a, unsigned char **pp, | ||
258 | long length); | ||
259 | void PKCS12_MAC_DATA_free(PKCS12_MAC_DATA *a); | ||
260 | int i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *a, unsigned char **pp); | ||
261 | PKCS12_SAFEBAG *PKCS12_SAFEBAG_new(void); | ||
262 | PKCS12_SAFEBAG *d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, unsigned char **pp, | ||
263 | long length); | ||
264 | void PKCS12_SAFEBAG_free(PKCS12_SAFEBAG *a); | ||
265 | void ERR_load_PKCS12_strings(void); | ||
266 | void PKCS12_PBE_add(void); | ||
267 | int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, | ||
268 | STACK **ca); | ||
269 | PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, | ||
270 | STACK *ca, int nid_key, int nid_cert, int iter, | ||
271 | int mac_iter, int keytype); | ||
272 | int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); | ||
273 | int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); | ||
274 | PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); | ||
275 | PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); | ||
276 | |||
277 | /* BEGIN ERROR CODES */ | ||
278 | /* The following lines are auto generated by the script mkerr.pl. Any changes | ||
279 | * made after this point may be overwritten when the script is next run. | ||
280 | */ | ||
281 | |||
282 | /* Error codes for the PKCS12 functions. */ | ||
283 | |||
284 | /* Function codes. */ | ||
285 | #define PKCS12_F_PARSE_BAGS 103 | ||
286 | #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME 100 | ||
287 | #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC 127 | ||
288 | #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI 102 | ||
289 | #define PKCS12_F_PKCS12_ADD_LOCALKEYID 104 | ||
290 | #define PKCS12_F_PKCS12_CREATE 105 | ||
291 | #define PKCS12_F_PKCS12_DECRYPT_D2I 106 | ||
292 | #define PKCS12_F_PKCS12_GEN_MAC 107 | ||
293 | #define PKCS12_F_PKCS12_I2D_ENCRYPT 108 | ||
294 | #define PKCS12_F_PKCS12_INIT 109 | ||
295 | #define PKCS12_F_PKCS12_KEY_GEN_ASC 110 | ||
296 | #define PKCS12_F_PKCS12_KEY_GEN_UNI 111 | ||
297 | #define PKCS12_F_PKCS12_MAKE_KEYBAG 112 | ||
298 | #define PKCS12_F_PKCS12_MAKE_SHKEYBAG 113 | ||
299 | #define PKCS12_F_PKCS12_PACK_P7DATA 114 | ||
300 | #define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 | ||
301 | #define PKCS12_F_PKCS12_PACK_SAFEBAG 117 | ||
302 | #define PKCS12_F_PKCS12_PARSE 118 | ||
303 | #define PKCS12_F_PKCS12_PBE_CRYPT 119 | ||
304 | #define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 | ||
305 | #define PKCS12_F_PKCS12_SETUP_MAC 122 | ||
306 | #define PKCS12_F_PKCS12_SET_MAC 123 | ||
307 | #define PKCS12_F_PKCS8_ADD_KEYUSAGE 124 | ||
308 | #define PKCS12_F_PKCS8_ENCRYPT 125 | ||
309 | #define PKCS12_F_VERIFY_MAC 126 | ||
310 | |||
311 | /* Reason codes. */ | ||
312 | #define PKCS12_R_CANT_PACK_STRUCTURE 100 | ||
313 | #define PKCS12_R_DECODE_ERROR 101 | ||
314 | #define PKCS12_R_ENCODE_ERROR 102 | ||
315 | #define PKCS12_R_ENCRYPT_ERROR 103 | ||
316 | #define PKCS12_R_INVALID_NULL_ARGUMENT 104 | ||
317 | #define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 | ||
318 | #define PKCS12_R_IV_GEN_ERROR 106 | ||
319 | #define PKCS12_R_KEY_GEN_ERROR 107 | ||
320 | #define PKCS12_R_MAC_ABSENT 108 | ||
321 | #define PKCS12_R_MAC_GENERATION_ERROR 109 | ||
322 | #define PKCS12_R_MAC_SETUP_ERROR 110 | ||
323 | #define PKCS12_R_MAC_STRING_SET_ERROR 111 | ||
324 | #define PKCS12_R_MAC_VERIFY_ERROR 112 | ||
325 | #define PKCS12_R_MAC_VERIFY_FAILURE 113 | ||
326 | #define PKCS12_R_PARSE_ERROR 114 | ||
327 | #define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 | ||
328 | #define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 | ||
329 | #define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 | ||
330 | #define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 | ||
331 | #define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 | ||
332 | |||
333 | #ifdef __cplusplus | ||
334 | } | ||
335 | #endif | ||
336 | #endif | ||
337 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/3des.pem b/src/lib/libcrypto/pkcs7/t/3des.pem new file mode 100644 index 0000000000..b2b5081a10 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/3des.pem | |||
@@ -0,0 +1,16 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG | ||
3 | A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
4 | dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD | ||
5 | ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEC2vXI1xQDW6lUHM3zQ | ||
6 | /9uBEBOO5A3TtkrklAXq7v01gsIC21t52qSk36REXY+slhNZ0OQ349tgkTsoETHFLoEwMIHw | ||
7 | AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI | ||
8 | QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU | ||
9 | UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR9MA0G | ||
10 | CSqGSIb3DQEBAQUABEB8ujxbabxXUYJhopuDm3oDq4JNqX6Io4p3ro+ShqfIndsXTZ1v5a2N | ||
11 | WtLLCWlHn/habjBwZ/DgQgcKASbZ7QxNMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA | ||
12 | oAQIbsL5v1wX98KggAQoAaJ4WHm68fXY1WE5OIjfVBIDpO1K+i8dmKhjnAjrjoyZ9Bwc8rDL | ||
13 | lgQg4CXb805h5xl+GfvSwUaHJayte1m2mcOhs3J2YyqbQ+MEIMIiJQccmhO3oDKm36CFvYR8 | ||
14 | 5PjpclVcZyX2ngbwPFMnBAgy0clOAE6UKAAAAAAAAAAAAAA= | ||
15 | -----END PKCS7----- | ||
16 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/3dess.pem b/src/lib/libcrypto/pkcs7/t/3dess.pem new file mode 100644 index 0000000000..23f013516a --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/3dess.pem | |||
@@ -0,0 +1,32 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | 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 | ||
31 | 9CWR6g== | ||
32 | -----END PKCS7----- | ||
diff --git a/src/lib/libcrypto/pkcs7/t/c.pem b/src/lib/libcrypto/pkcs7/t/c.pem new file mode 100644 index 0000000000..a4b55e321a --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/c.pem | |||
@@ -0,0 +1,48 @@ | |||
1 | issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA | ||
2 | subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com | ||
3 | serial :047D | ||
4 | |||
5 | Certificate: | ||
6 | Data: | ||
7 | Version: 3 (0x2) | ||
8 | Serial Number: 1149 (0x47d) | ||
9 | Signature Algorithm: md5withRSAEncryption | ||
10 | Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA | ||
11 | Validity | ||
12 | Not Before: May 13 05:40:58 1998 GMT | ||
13 | Not After : May 12 05:40:58 2000 GMT | ||
14 | Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com | ||
15 | Subject Public Key Info: | ||
16 | Public Key Algorithm: rsaEncryption | ||
17 | Modulus: | ||
18 | 00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: | ||
19 | 73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: | ||
20 | 89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: | ||
21 | fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: | ||
22 | e7:e7:0c:4d:0b | ||
23 | Exponent: 65537 (0x10001) | ||
24 | X509v3 extensions: | ||
25 | Netscape Comment: | ||
26 | Generated with SSLeay | ||
27 | Signature Algorithm: md5withRSAEncryption | ||
28 | 52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: | ||
29 | f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: | ||
30 | d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: | ||
31 | 50:74:ad:92:cb:4e:90:e5:fa:7d | ||
32 | |||
33 | -----BEGIN CERTIFICATE----- | ||
34 | MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV | ||
35 | MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE | ||
36 | ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E | ||
37 | IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw | ||
38 | NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK | ||
39 | UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
40 | dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 | ||
41 | aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG | ||
42 | 9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf | ||
43 | lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB | ||
44 | hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA | ||
45 | UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 | ||
46 | 4A3ZItobUHStkstOkOX6fQ== | ||
47 | -----END CERTIFICATE----- | ||
48 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/ff b/src/lib/libcrypto/pkcs7/t/ff new file mode 100644 index 0000000000..23f013516a --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/ff | |||
@@ -0,0 +1,32 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | 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 | ||
31 | 9CWR6g== | ||
32 | -----END PKCS7----- | ||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-e b/src/lib/libcrypto/pkcs7/t/msie-e new file mode 100644 index 0000000000..aafae69fc9 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-e | |||
@@ -0,0 +1,20 @@ | |||
1 | |||
2 | MIAGCSqGSIb3DQEHA6CAMIACAQAxggHCMIHMAgEAMHYwYjERMA8GA1UEBxMISW50ZXJuZXQxFzAV | ||
3 | BgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytWZXJpU2lnbiBDbGFzcyAxIENBIC0gSW5k | ||
4 | aXZpZHVhbCBTdWJzY3JpYmVyAhBgQJiC3qfbCbjdj5INYLnKMA0GCSqGSIb3DQEBAQUABECMzu8y | ||
5 | wQ/qZbO8cAGMRBF+mPruv3+Dvb9aWNZ2k8njUgqF6mcdhVB2MkGcsG3memRXJBixvMYWVkU3qK4Z | ||
6 | VuKsMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UE | ||
7 | BxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU | ||
8 | UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0GCSqG | ||
9 | SIb3DQEBAQUABEBcWwYFHJbJGhiztt7lzue3Lc9CH5WAbyR+2BZ3uv+JxZfRs1PuaWPOwRa0Vgs3 | ||
10 | YwSJoRfxQj2Gk0wFqG1qt6d1MIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIAoAQI8vRlP/Nx | ||
11 | 2iSggASCAZhR5srxyspy7DfomRJ9ff8eMCtaNwEoEx7G25PZRonC57hBvGoScLtEPU3Wp9FEbPN7 | ||
12 | oJESeC+AqMTyTLNy8aQsyC5s53E9UkoIvg62ekYZBbXZqXsrxx4PhiiX3NH8GVh42phB0Chjw0nK | ||
13 | HZeRDmxGY3Cmk+J+l0uVKxbNIfJIKOguLBnhqmnKH/PrnzDt591u0ULy2aTLqRm+4/1Yat/QPb6J | ||
14 | eoKGwNPBbS9ogBdrCNCp9ZFg3Xar2AtQHzyTQIfYeH3SRQUpKmRm5U5o9p5emgEdT+ZfJm/J4tSH | ||
15 | OmbgAFsbHQakA4MBZ4J5qfDJhOA2g5lWk1hIeu5Dn/AaLRZd0yz3oY0Ieo/erPWx/bCqtBzYbMe9 | ||
16 | qSFTedKlbc9EGe3opOTdBZVzK8KH3w3zsy5luxKdOUG59YYb5F1IZiWGiDyuo/HuacX+griu5LeD | ||
17 | bEzOtZnko+TZXvWIko30fD79j3T4MRRhWXbgj2HKza+4vJ0mzcC/1+GPsJjAEAA/JgIEDU4w6/DI | ||
18 | /HQHhLAO3G+9xKD7MvmrzkoAAAAAAAAAAAAA | ||
19 | |||
20 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-e.pem b/src/lib/libcrypto/pkcs7/t/msie-e.pem new file mode 100644 index 0000000000..a2a5e24e74 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-e.pem | |||
@@ -0,0 +1,22 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIIDkAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ | ||
3 | bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT | ||
4 | aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ | ||
5 | uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQIzO7zLBD+pls7xwAYxEEX6Y+u6/f4O9 | ||
6 | v1pY1naTyeNSCoXqZx2FUHYyQZywbeZ6ZFckGLG8xhZWRTeorhlW4qwwgfACAQAw | ||
7 | gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH | ||
8 | EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT | ||
9 | GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW | ||
10 | QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQFxbBgUclskaGLO23uXO57ctz0If | ||
11 | lYBvJH7YFne6/4nFl9GzU+5pY87BFrRWCzdjBImhF/FCPYaTTAWobWq3p3UwggHD | ||
12 | BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECPL0ZT/zcdokgIIBmFHmyvHK | ||
13 | ynLsN+iZEn19/x4wK1o3ASgTHsbbk9lGicLnuEG8ahJwu0Q9Tdan0URs83ugkRJ4 | ||
14 | L4CoxPJMs3LxpCzILmzncT1SSgi+DrZ6RhkFtdmpeyvHHg+GKJfc0fwZWHjamEHQ | ||
15 | KGPDScodl5EObEZjcKaT4n6XS5UrFs0h8kgo6C4sGeGqacof8+ufMO3n3W7RQvLZ | ||
16 | pMupGb7j/Vhq39A9vol6gobA08FtL2iAF2sI0Kn1kWDddqvYC1AfPJNAh9h4fdJF | ||
17 | BSkqZGblTmj2nl6aAR1P5l8mb8ni1Ic6ZuAAWxsdBqQDgwFngnmp8MmE4DaDmVaT | ||
18 | WEh67kOf8BotFl3TLPehjQh6j96s9bH9sKq0HNhsx72pIVN50qVtz0QZ7eik5N0F | ||
19 | lXMrwoffDfOzLmW7Ep05Qbn1hhvkXUhmJYaIPK6j8e5pxf6CuK7kt4NsTM61meSj | ||
20 | 5Nle9YiSjfR8Pv2PdPgxFGFZduCPYcrNr7i8nSbNwL/X4Y+wmMAQAD8mAgQNTjDr | ||
21 | 8Mj8dAeEsA7cb73EoPsy+avOSgAAAAA= | ||
22 | -----END PKCS7----- | ||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-enc-01 b/src/lib/libcrypto/pkcs7/t/msie-enc-01 new file mode 100644 index 0000000000..2c93ab6462 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-enc-01 | |||
@@ -0,0 +1,62 @@ | |||
1 | |||
2 | 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 | ||
61 | AAAAAAAAAAAA | ||
62 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-enc-01.pem b/src/lib/libcrypto/pkcs7/t/msie-enc-01.pem new file mode 100644 index 0000000000..9abf00b2f2 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-enc-01.pem | |||
@@ -0,0 +1,66 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | 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 | ||
65 | 6RLfsTyyPgJi0GsAAAAA | ||
66 | -----END PKCS7----- | ||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-enc-02 b/src/lib/libcrypto/pkcs7/t/msie-enc-02 new file mode 100644 index 0000000000..7017055965 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-enc-02 | |||
@@ -0,0 +1,90 @@ | |||
1 | |||
2 | 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 | ||
89 | rZgAAAAAAAAAAAAA | ||
90 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-enc-02.pem b/src/lib/libcrypto/pkcs7/t/msie-enc-02.pem new file mode 100644 index 0000000000..279c5d830b --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-enc-02.pem | |||
@@ -0,0 +1,106 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIITQAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ | ||
3 | bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT | ||
4 | aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ | ||
5 | uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQAKvi2eRLO+jdoiUd8ksZt+iQ0JXoWN0 | ||
6 | M/W9CEv6R1c42pwUIR/1F4RMK9oeyUiv9Z6lzmPaGNmx6XOCoueszVkwgfACAQAw | ||
7 | gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH | ||
8 | EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT | ||
9 | GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW | ||
10 | QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQFqcHEo69ShGfcOIVjnmWXLZM+7Y | ||
11 | K/50j8YuvNbqq+dQxk9YY8ZpSU/JYsxmtcnEZdlSJEkpMHAO73V+eh1QQr0wghFz | ||
12 | BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECJsSmRA1jxLjgIIRSIGLVtf+ | ||
13 | pzeB6oXJ9GlfsnIij+DgIOvrYaXC9qywAaUg7zMnln9QMgiih5XpBLgPg5Y/KYp3 | ||
14 | RZeHBwkjTIFwlNYSjE0PbsszsJYUmkDTsCjFUJEdM4+Cbv3g3Kct5w1Q6pVMXJLg | ||
15 | JG4uFUY8CTScVkb9ETbIy3HisCRKJWA57ERLvCr/Fa6gNJKa5Mw1A5Nsp+QQqp0U | ||
16 | uQz93raAPbCdqmHu8qQ88rzbB1k/ysXedRQLlzhqFs2hryD7kHe0gX8nPdlkre8Y | ||
17 | tTQhY76LtbjnV2drXcyCUMONc56KQ2VcuxB0BWjSeyN8a75/rpt6wmiM/PKw0D4g | ||
18 | RmXqA1ZR62X2WKbhKqvG5tQTF1LauZeddeYS4Rb8cLt2VMB5irkKWrHmJ3qyWELY | ||
19 | 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 | ||
105 | FK2YAAAAAA== | ||
106 | -----END PKCS7----- | ||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-s-a-e b/src/lib/libcrypto/pkcs7/t/msie-s-a-e new file mode 100644 index 0000000000..0067794d70 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-s-a-e | |||
@@ -0,0 +1,91 @@ | |||
1 | |||
2 | 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 | ||
89 | 5ify04ua9/t8SGrYZPm/l3MkAAAAAAAAAAAAAA== | ||
90 | |||
91 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/msie-s-a-e.pem b/src/lib/libcrypto/pkcs7/t/msie-s-a-e.pem new file mode 100644 index 0000000000..55dbd8f80b --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/msie-s-a-e.pem | |||
@@ -0,0 +1,106 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIITUAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ | ||
3 | bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT | ||
4 | aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ | ||
5 | uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQKOxxpIbRTb31+qIQCBOpMVAGnwCLrPO | ||
6 | OXnntxVveTrPhBnsJuoGNJcCMtuHl7tLkd38WsVwOfGXUprTqFpUcY8wgfACAQAw | ||
7 | gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH | ||
8 | EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT | ||
9 | GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW | ||
10 | QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQKzIddnXFqK/RRBG86ZVixoXfwAv | ||
11 | ZdfvnDFsKzPn/A6DuDdE/hqJxnFpHiwGiDR/YbWj2ib+G74DSshgX8vj8ZQwghGD | ||
12 | BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECLKM0K58I3HNgIIRWBDP8s+g | ||
13 | l7/6JhZ5PBJ5vPpD1R4pnNDZRabsYu0Qzezdz1IK+maTAhF0SEuNZoEkzIgOIvu3 | ||
14 | UjW8x/2KcHwteABwgRiSk1JyNLwRED0RtvuJ40pIGDvDsHwBMcXEtKUMAOpGChms | ||
15 | HUK1+B/GKancSDFOCeG3JCFnFdbuQFDIVHC6amWslc6ntqVs/sii2Gs4qdzDfQgl | ||
16 | PV/A/FY0wi0j2O5cXRQJtZVKM/MYGjj5c1cy9Q7oymU5ATP/LARD0Tw5kBB7HVnD | ||
17 | 2qrmmmxcHakyxhXmwskaKS6Qxgqq6LPdgr603onxqEtwNSz5UbCq9mLXuCkFOVsQ | ||
18 | /5mZcmmc7re3XJMQHRXkBlxEpZQ6HOUIEzlhRqCo2hhymyZK84rptjORQo6vNakM | ||
19 | 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 | ||
105 | 7OYn8tOLmvf7fEhq2GT5v5dzJAAAAAA= | ||
106 | -----END PKCS7----- | ||
diff --git a/src/lib/libcrypto/pkcs7/t/nav-smime b/src/lib/libcrypto/pkcs7/t/nav-smime new file mode 100644 index 0000000000..6ee4b597a1 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/nav-smime | |||
@@ -0,0 +1,157 @@ | |||
1 | From angela@c2.net.au Thu May 14 13:32:27 1998 | ||
2 | X-UIDL: 83c94dd550e54329bf9571b72038b8c8 | ||
3 | Return-Path: angela@c2.net.au | ||
4 | Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id NAA27838 for <tjh@cryptsoft.com>; Thu, 14 May 1998 13:32:26 +1000 (EST) | ||
5 | Message-ID: <355A6779.4B63E64C@cryptsoft.com> | ||
6 | Date: Thu, 14 May 1998 13:39:37 +1000 | ||
7 | From: Angela van Lent <angela@c2.net.au> | ||
8 | X-Mailer: Mozilla 4.03 [en] (Win95; U) | ||
9 | MIME-Version: 1.0 | ||
10 | To: tjh@cryptsoft.com | ||
11 | Subject: signed | ||
12 | Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms9A58844C95949ECC78A1C54C" | ||
13 | Content-Length: 2604 | ||
14 | Status: OR | ||
15 | |||
16 | This is a cryptographically signed message in MIME format. | ||
17 | |||
18 | --------------ms9A58844C95949ECC78A1C54C | ||
19 | Content-Type: text/plain; charset=us-ascii | ||
20 | Content-Transfer-Encoding: 7bit | ||
21 | |||
22 | signed body | ||
23 | |||
24 | --------------ms9A58844C95949ECC78A1C54C | ||
25 | Content-Type: application/x-pkcs7-signature; name="smime.p7s" | ||
26 | Content-Transfer-Encoding: base64 | ||
27 | Content-Disposition: attachment; filename="smime.p7s" | ||
28 | Content-Description: S/MIME Cryptographic Signature | ||
29 | |||
30 | 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 | ||
59 | 9CWR6g== | ||
60 | --------------ms9A58844C95949ECC78A1C54C-- | ||
61 | |||
62 | |||
63 | From angela@c2.net.au Thu May 14 13:33:16 1998 | ||
64 | X-UIDL: 8f076c44ff7c5967fd5b00c4588a8731 | ||
65 | Return-Path: angela@c2.net.au | ||
66 | Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id NAA27847 for <tjh@cryptsoft.com>; Thu, 14 May 1998 13:33:15 +1000 (EST) | ||
67 | Message-ID: <355A67AB.2AF38806@cryptsoft.com> | ||
68 | Date: Thu, 14 May 1998 13:40:27 +1000 | ||
69 | From: Angela van Lent <angela@c2.net.au> | ||
70 | X-Mailer: Mozilla 4.03 [en] (Win95; U) | ||
71 | MIME-Version: 1.0 | ||
72 | To: tjh@cryptsoft.com | ||
73 | Subject: signed | ||
74 | Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------msD7863B84BD61E02C407F2F5E" | ||
75 | Content-Length: 2679 | ||
76 | Status: OR | ||
77 | |||
78 | This is a cryptographically signed message in MIME format. | ||
79 | |||
80 | --------------msD7863B84BD61E02C407F2F5E | ||
81 | Content-Type: text/plain; charset=us-ascii | ||
82 | Content-Transfer-Encoding: 7bit | ||
83 | |||
84 | signed body 2 | ||
85 | |||
86 | --------------msD7863B84BD61E02C407F2F5E | ||
87 | Content-Type: application/x-pkcs7-signature; name="smime.p7s" | ||
88 | Content-Transfer-Encoding: base64 | ||
89 | Content-Disposition: attachment; filename="smime.p7s" | ||
90 | Content-Description: S/MIME Cryptographic Signature | ||
91 | |||
92 | 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 | ||
122 | Zp8SSVVY | ||
123 | --------------msD7863B84BD61E02C407F2F5E-- | ||
124 | |||
125 | |||
126 | From angela@c2.net.au Thu May 14 14:05:32 1998 | ||
127 | X-UIDL: a7d629b4b9acacaee8b39371b860a32a | ||
128 | Return-Path: angela@c2.net.au | ||
129 | Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id OAA28033 for <tjh@cryptsoft.com>; Thu, 14 May 1998 14:05:32 +1000 (EST) | ||
130 | Message-ID: <355A6F3B.AC385981@cryptsoft.com> | ||
131 | Date: Thu, 14 May 1998 14:12:43 +1000 | ||
132 | From: Angela van Lent <angela@c2.net.au> | ||
133 | X-Mailer: Mozilla 4.03 [en] (Win95; U) | ||
134 | MIME-Version: 1.0 | ||
135 | To: tjh@cryptsoft.com | ||
136 | Subject: encrypted | ||
137 | Content-Type: application/x-pkcs7-mime; name="smime.p7m" | ||
138 | Content-Transfer-Encoding: base64 | ||
139 | Content-Disposition: attachment; filename="smime.p7m" | ||
140 | Content-Description: S/MIME Encrypted Message | ||
141 | Content-Length: 905 | ||
142 | Status: OR | ||
143 | |||
144 | MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG | ||
145 | A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
146 | dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD | ||
147 | ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEA92N29Yk39RUY2tIVd | ||
148 | exGT2MFX3J6H8LB8aDRJjw7843ALgJ5zXpM5+f80QkAWwEN2A6Pl3VxiCeKLi435zXVyMIHw | ||
149 | AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI | ||
150 | QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU | ||
151 | UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0G | ||
152 | CSqGSIb3DQEBAQUABECR9IfyHtvnjFmZ8B2oUCEs1vxMsG0u1kxKE4RMPFyDqDCEARq7zXMg | ||
153 | nzSUI7Wgv5USSKDqcLRJeW+jvYURv/nJMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA | ||
154 | oAQIrLqrij2ZMpeggAQoibtn6reRZWuWk5Iv5IAhgitr8EYE4w4ySQ7EMB6mTlBoFpccUMWX | ||
155 | BwQgQn1UoWCvYAlhDzURdbui64Dc0rS2wtj+kE/InS6y25EEEPe4NUKaF8/UlE+lo3LtILQE | ||
156 | CL3uV8k7m0iqAAAAAAAAAAAAAA== | ||
157 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/s.pem b/src/lib/libcrypto/pkcs7/t/s.pem new file mode 100644 index 0000000000..4fa925b182 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/s.pem | |||
@@ -0,0 +1,57 @@ | |||
1 | -----BEGIN RSA PRIVATE KEY----- | ||
2 | MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 | ||
3 | mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG | ||
4 | fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ | ||
5 | zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 | ||
6 | p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b | ||
7 | bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk | ||
8 | IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG | ||
9 | -----END RSA PRIVATE KEY----- | ||
10 | issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA | ||
11 | subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com | ||
12 | serial :047D | ||
13 | |||
14 | Certificate: | ||
15 | Data: | ||
16 | Version: 3 (0x2) | ||
17 | Serial Number: 1149 (0x47d) | ||
18 | Signature Algorithm: md5withRSAEncryption | ||
19 | Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA | ||
20 | Validity | ||
21 | Not Before: May 13 05:40:58 1998 GMT | ||
22 | Not After : May 12 05:40:58 2000 GMT | ||
23 | Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com | ||
24 | Subject Public Key Info: | ||
25 | Public Key Algorithm: rsaEncryption | ||
26 | Modulus: | ||
27 | 00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: | ||
28 | 73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: | ||
29 | 89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: | ||
30 | fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: | ||
31 | e7:e7:0c:4d:0b | ||
32 | Exponent: 65537 (0x10001) | ||
33 | X509v3 extensions: | ||
34 | Netscape Comment: | ||
35 | Generated with SSLeay | ||
36 | Signature Algorithm: md5withRSAEncryption | ||
37 | 52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: | ||
38 | f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: | ||
39 | d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: | ||
40 | 50:74:ad:92:cb:4e:90:e5:fa:7d | ||
41 | |||
42 | -----BEGIN CERTIFICATE----- | ||
43 | MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV | ||
44 | MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE | ||
45 | ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E | ||
46 | IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw | ||
47 | NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK | ||
48 | UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
49 | dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 | ||
50 | aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG | ||
51 | 9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf | ||
52 | lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB | ||
53 | hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA | ||
54 | UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 | ||
55 | 4A3ZItobUHStkstOkOX6fQ== | ||
56 | -----END CERTIFICATE----- | ||
57 | |||
diff --git a/src/lib/libcrypto/pkcs7/t/server.pem b/src/lib/libcrypto/pkcs7/t/server.pem new file mode 100644 index 0000000000..989baf8709 --- /dev/null +++ b/src/lib/libcrypto/pkcs7/t/server.pem | |||
@@ -0,0 +1,57 @@ | |||
1 | issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA | ||
2 | subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com | ||
3 | serial :047D | ||
4 | |||
5 | Certificate: | ||
6 | Data: | ||
7 | Version: 3 (0x2) | ||
8 | Serial Number: 1149 (0x47d) | ||
9 | Signature Algorithm: md5withRSAEncryption | ||
10 | Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA | ||
11 | Validity | ||
12 | Not Before: May 13 05:40:58 1998 GMT | ||
13 | Not After : May 12 05:40:58 2000 GMT | ||
14 | Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com | ||
15 | Subject Public Key Info: | ||
16 | Public Key Algorithm: rsaEncryption | ||
17 | Modulus: | ||
18 | 00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: | ||
19 | 73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: | ||
20 | 89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: | ||
21 | fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: | ||
22 | e7:e7:0c:4d:0b | ||
23 | Exponent: 65537 (0x10001) | ||
24 | X509v3 extensions: | ||
25 | Netscape Comment: | ||
26 | Generated with SSLeay | ||
27 | Signature Algorithm: md5withRSAEncryption | ||
28 | 52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: | ||
29 | f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: | ||
30 | d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: | ||
31 | 50:74:ad:92:cb:4e:90:e5:fa:7d | ||
32 | |||
33 | -----BEGIN CERTIFICATE----- | ||
34 | MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV | ||
35 | MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE | ||
36 | ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E | ||
37 | IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw | ||
38 | NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK | ||
39 | UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
40 | dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 | ||
41 | aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG | ||
42 | 9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf | ||
43 | lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB | ||
44 | hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA | ||
45 | UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 | ||
46 | 4A3ZItobUHStkstOkOX6fQ== | ||
47 | -----END CERTIFICATE----- | ||
48 | |||
49 | -----BEGIN RSA PRIVATE KEY----- | ||
50 | MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 | ||
51 | mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG | ||
52 | fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ | ||
53 | zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 | ||
54 | p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b | ||
55 | bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk | ||
56 | IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG | ||
57 | -----END RSA PRIVATE KEY----- | ||
diff --git a/src/lib/libssl/src/VMS/TODO b/src/lib/libssl/src/VMS/TODO new file mode 100644 index 0000000000..359e069191 --- /dev/null +++ b/src/lib/libssl/src/VMS/TODO | |||
@@ -0,0 +1,18 @@ | |||
1 | TODO: | ||
2 | ===== | ||
3 | |||
4 | There are a few things that need to be worked out in the VMS version of | ||
5 | OpenSSL, still: | ||
6 | |||
7 | - Description files. ("Makefile's" :-)) | ||
8 | - Script code to link an already compiled build tree. | ||
9 | - A VMSINSTALlable version (way in the future, unless someone else hacks). | ||
10 | - shareable images (DLL for you Windows folks). | ||
11 | |||
12 | There may be other things that I have missed and that may be desirable. | ||
13 | Please send mail to <openssl-users@openssl.org> or to me directly if you | ||
14 | have any ideas. | ||
15 | |||
16 | -- | ||
17 | Richard Levitte <richard@levitte.org> | ||
18 | 1999-05-24 | ||
diff --git a/src/lib/libssl/src/VMS/WISHLIST.TXT b/src/lib/libssl/src/VMS/WISHLIST.TXT new file mode 100644 index 0000000000..c151fc8ea7 --- /dev/null +++ b/src/lib/libssl/src/VMS/WISHLIST.TXT | |||
@@ -0,0 +1,4 @@ | |||
1 | * Have the building procedure contain a LINK-only possibility. | ||
2 | Wished by Mark Daniel <mark.daniel@dsto.defence.gov.au> | ||
3 | |||
4 | One way to enable that is also to go over to DESCRIP.MMS files. | ||
diff --git a/src/lib/libssl/src/VMS/install.com b/src/lib/libssl/src/VMS/install.com new file mode 100644 index 0000000000..d941392c23 --- /dev/null +++ b/src/lib/libssl/src/VMS/install.com | |||
@@ -0,0 +1,71 @@ | |||
1 | $! INSTALL.COM -- Installs the files in a given directory tree | ||
2 | $! | ||
3 | $! Author: Richard Levitte <richard@levitte.org> | ||
4 | $! Time of creation: 23-MAY-1998 19:22 | ||
5 | $! | ||
6 | $! P1 root of the directory tree | ||
7 | $! | ||
8 | $ IF P1 .EQS. "" | ||
9 | $ THEN | ||
10 | $ WRITE SYS$OUTPUT "First argument missing." | ||
11 | $ WRITE SYS$OUTPUT "Should be the directory where you want things installed." | ||
12 | $ EXIT | ||
13 | $ ENDIF | ||
14 | $ | ||
15 | $ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" | ||
16 | $ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") | ||
17 | $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - | ||
18 | - "[000000." - "][" - "[" - "]" | ||
19 | $ ROOT = ROOT_DEV + "[" + ROOT_DIR | ||
20 | $ | ||
21 | $ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC | ||
22 | $ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB] | ||
23 | $ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB] | ||
24 | $ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE] | ||
25 | $ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE] | ||
26 | $ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE] | ||
27 | $ DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS] | ||
28 | $ DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE] | ||
29 | $ | ||
30 | $ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - | ||
31 | CREATE/DIR/LOG WRK_SSLROOT:[000000] | ||
32 | $ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - | ||
33 | CREATE/DIR/LOG WRK_SSLINCLUDE: | ||
34 | $ IF F$PARSE("WRK_SSLROOT:[VMS]") .EQS. "" THEN - | ||
35 | CREATE/DIR/LOG WRK_SSLROOT:[VMS] | ||
36 | $ | ||
37 | $ EXHEADER := vms_idhacks.h | ||
38 | $ | ||
39 | $ COPY 'EXHEADER' WRK_SSLINCLUDE: /LOG | ||
40 | $ | ||
41 | $ OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM | ||
42 | $ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created." | ||
43 | $ WRITE SF "$! Startup file for Openssl 0.9.2-RL 15-Mar-1999" | ||
44 | $ WRITE SF "$!" | ||
45 | $ WRITE SF "$! Do not edit this file, as it will be regenerated during next installation." | ||
46 | $ WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM" | ||
47 | $ WRITE SF "$!" | ||
48 | $ WRITE SF "$! P1 a qualifier to DEFINE. For example ""/SYSTEM"" to get the logical names" | ||
49 | $ WRITE SF "$! defined in the system logical name table." | ||
50 | $ WRITE SF "$!" | ||
51 | $ WRITE SF "$ ARCH = ""VAX""" | ||
52 | $ WRITE SF "$ IF F$GETSYI(""CPU"") .GE. 128 THEN ARCH = ""ALPHA""" | ||
53 | $ WRITE SF "$ DEFINE/NOLOG'P1 SSLROOT ",ROOT,".] /TRANS=CONC" | ||
54 | $ WRITE SF "$ DEFINE/NOLOG'P1 SSLLIB SSLROOT:['ARCH'_LIB]" | ||
55 | $ WRITE SF "$ DEFINE/NOLOG'P1 SSLINCLUDE SSLROOT:[INCLUDE]" | ||
56 | $ WRITE SF "$ DEFINE/NOLOG'P1 SSLEXE SSLROOT:['ARCH'_EXE]" | ||
57 | $ WRITE SF "$ DEFINE/NOLOG'P1 SSLCERTS SSLROOT:[CERTS]" | ||
58 | $ WRITE SF "$ DEFINE/NOLOG'P1 SSLPRIVATE SSLROOT:[PRIVATE]" | ||
59 | $ WRITE SF "$" | ||
60 | $ WRITE SF "$! This is program can include <openssl/{foo}.h>" | ||
61 | $ WRITE SF "$ DEFINE/NOLOG'P1 OPENSSL SSLINCLUDE:" | ||
62 | $ WRITE SF "$" | ||
63 | $ WRITE SF "$ IF F$SEARCH(""SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"") .NES."""" THEN -" | ||
64 | $ WRITE SF " @SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM" | ||
65 | $ WRITE SF "$" | ||
66 | $ WRITE SF "$ EXIT" | ||
67 | $ CLOSE SF | ||
68 | $ | ||
69 | $ COPY OPENSSL_UTILS.COM WRK_SSLROOT:[VMS]/LOG | ||
70 | $ | ||
71 | $ EXIT | ||
diff --git a/src/lib/libssl/src/VMS/multinet_shr.opt b/src/lib/libssl/src/VMS/multinet_shr.opt new file mode 100644 index 0000000000..610f42dddb --- /dev/null +++ b/src/lib/libssl/src/VMS/multinet_shr.opt | |||
@@ -0,0 +1 @@ | |||
multinet:multinet_socket_library.exe/share | |||
diff --git a/src/lib/libssl/src/VMS/openssl_utils.com b/src/lib/libssl/src/VMS/openssl_utils.com new file mode 100644 index 0000000000..ddc107394f --- /dev/null +++ b/src/lib/libssl/src/VMS/openssl_utils.com | |||
@@ -0,0 +1,38 @@ | |||
1 | $! | ||
2 | $! APPS.COM | ||
3 | $! Written By: Robert Byer | ||
4 | $! Vice-President | ||
5 | $! A-Com Computing, Inc. | ||
6 | $! byer@mail.all-net.net | ||
7 | $! | ||
8 | $! | ||
9 | $! Slightly modified by Richard Levitte <richard@levitte.org> | ||
10 | $! | ||
11 | $ OPENSSL :== $SSLEXE:OPENSSL | ||
12 | $ VERIFY :== $SSLEXE:OPENSSL VERIFY | ||
13 | $ ASN1PARSE:== $SSLEXE:OPENSSL ASN1PARS | ||
14 | $ REQ :== $SSLEXE:OPENSSL REQ | ||
15 | $ DGST :== $SSLEXE:OPENSSL DGST | ||
16 | $ DH :== $SSLEXE:OPENSSL DH | ||
17 | $ ENC :== $SSLEXE:OPENSSL ENC | ||
18 | $ GENDH :== $SSLEXE:OPENSSL GENDH | ||
19 | $ ERRSTR :== $SSLEXE:OPENSSL ERRSTR | ||
20 | $ CA :== $SSLEXE:OPENSSL CA | ||
21 | $ CRL :== $SSLEXE:OPENSSL CRL | ||
22 | $ RSA :== $SSLEXE:OPENSSL RSA | ||
23 | $ DSA :== $SSLEXE:OPENSSL DSA | ||
24 | $ DSAPARAM :== $SSLEXE:OPENSSL DSAPARAM | ||
25 | $ X509 :== $SSLEXE:OPENSSL X509 | ||
26 | $ GENRSA :== $SSLEXE:OPENSSL GENRSA | ||
27 | $ GENDSA :== $SSLEXE:OPENSSL GENDSA | ||
28 | $ S_SERVER :== $SSLEXE:OPENSSL S_SERVER | ||
29 | $ S_CLIENT :== $SSLEXE:OPENSSL S_CLIENT | ||
30 | $ SPEED :== $SSLEXE:OPENSSL SPEED | ||
31 | $ S_TIME :== $SSLEXE:OPENSSL S_TIME | ||
32 | $ VERSION :== $SSLEXE:OPENSSL VERSION | ||
33 | $ PKCS7 :== $SSLEXE:OPENSSL PKCS7 | ||
34 | $ CRL2PKCS7:== $SSLEXE:OPENSSL CRL2P7 | ||
35 | $ SESS_ID :== $SSLEXE:OPENSSL SESS_ID | ||
36 | $ CIPHERS :== $SSLEXE:OPENSSL CIPHERS | ||
37 | $ NSEQ :== $SSLEXE:OPENSSL NSEQ | ||
38 | $ PKCS12 :== $SSLEXE:OPENSSL PKCS12 | ||
diff --git a/src/lib/libssl/src/VMS/socketshr_shr.opt b/src/lib/libssl/src/VMS/socketshr_shr.opt new file mode 100644 index 0000000000..f6e3131626 --- /dev/null +++ b/src/lib/libssl/src/VMS/socketshr_shr.opt | |||
@@ -0,0 +1 @@ | |||
socketshr/share | |||
diff --git a/src/lib/libssl/src/VMS/ucx_shr_decc.opt b/src/lib/libssl/src/VMS/ucx_shr_decc.opt new file mode 100644 index 0000000000..28d84f4af6 --- /dev/null +++ b/src/lib/libssl/src/VMS/ucx_shr_decc.opt | |||
@@ -0,0 +1 @@ | |||
sys$share:ucx$ipc_shr.exe/share | |||
diff --git a/src/lib/libssl/src/VMS/ucx_shr_decc_log.opt b/src/lib/libssl/src/VMS/ucx_shr_decc_log.opt new file mode 100644 index 0000000000..c9d9a96d09 --- /dev/null +++ b/src/lib/libssl/src/VMS/ucx_shr_decc_log.opt | |||
@@ -0,0 +1 @@ | |||
ucx$ipc_shr/share | |||
diff --git a/src/lib/libssl/src/VMS/ucx_shr_vaxc.opt b/src/lib/libssl/src/VMS/ucx_shr_vaxc.opt new file mode 100644 index 0000000000..86bfaf0d07 --- /dev/null +++ b/src/lib/libssl/src/VMS/ucx_shr_vaxc.opt | |||
@@ -0,0 +1 @@ | |||
sys$library:ucx$ipc.olb/library | |||
diff --git a/src/lib/libssl/src/VMS/vms_idhacks.h b/src/lib/libssl/src/VMS/vms_idhacks.h new file mode 100644 index 0000000000..8cf9e9c61f --- /dev/null +++ b/src/lib/libssl/src/VMS/vms_idhacks.h | |||
@@ -0,0 +1,126 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in | ||
13 | * the documentation and/or other materials provided with the | ||
14 | * distribution. | ||
15 | * | ||
16 | * 3. All advertising materials mentioning features or use of this | ||
17 | * software must display the following acknowledgment: | ||
18 | * "This product includes software developed by the OpenSSL Project | ||
19 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
20 | * | ||
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
22 | * endorse or promote products derived from this software without | ||
23 | * prior written permission. For written permission, please contact | ||
24 | * openssl-core@openssl.org. | ||
25 | * | ||
26 | * 5. Products derived from this software may not be called "OpenSSL" | ||
27 | * nor may "OpenSSL" appear in their names without prior written | ||
28 | * permission of the OpenSSL Project. | ||
29 | * | ||
30 | * 6. Redistributions of any form whatsoever must retain the following | ||
31 | * acknowledgment: | ||
32 | * "This product includes software developed by the OpenSSL Project | ||
33 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
34 | * | ||
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
46 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
47 | * ==================================================================== | ||
48 | * | ||
49 | * This product includes cryptographic software written by Eric Young | ||
50 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
51 | * Hudson (tjh@cryptsoft.com). | ||
52 | * | ||
53 | */ | ||
54 | |||
55 | #ifndef HEADER_VMS_IDHACKS_H | ||
56 | #define HEADER_VMS_IDHACKS_H | ||
57 | |||
58 | #ifdef VMS | ||
59 | |||
60 | /* Hack the names created with DECLARE_STACK_OF(PKCS7_SIGNER_INFO) */ | ||
61 | #define sk_PKCS7_SIGNER_INFO_new sk_PKCS7_SIGINF_new | ||
62 | #define sk_PKCS7_SIGNER_INFO_new_null sk_PKCS7_SIGINF_new_null | ||
63 | #define sk_PKCS7_SIGNER_INFO_free sk_PKCS7_SIGINF_free | ||
64 | #define sk_PKCS7_SIGNER_INFO_num sk_PKCS7_SIGINF_num | ||
65 | #define sk_PKCS7_SIGNER_INFO_value sk_PKCS7_SIGINF_value | ||
66 | #define sk_PKCS7_SIGNER_INFO_set sk_PKCS7_SIGINF_set | ||
67 | #define sk_PKCS7_SIGNER_INFO_zero sk_PKCS7_SIGINF_zero | ||
68 | #define sk_PKCS7_SIGNER_INFO_push sk_PKCS7_SIGINF_push | ||
69 | #define sk_PKCS7_SIGNER_INFO_unshift sk_PKCS7_SIGINF_unshift | ||
70 | #define sk_PKCS7_SIGNER_INFO_find sk_PKCS7_SIGINF_find | ||
71 | #define sk_PKCS7_SIGNER_INFO_delete sk_PKCS7_SIGINF_delete | ||
72 | #define sk_PKCS7_SIGNER_INFO_delete_ptr sk_PKCS7_SIGINF_delete_ptr | ||
73 | #define sk_PKCS7_SIGNER_INFO_insert sk_PKCS7_SIGINF_insert | ||
74 | #define sk_PKCS7_SIGNER_INFO_set_cmp_func sk_PKCS7_SIGINF_set_cmp_func | ||
75 | #define sk_PKCS7_SIGNER_INFO_dup sk_PKCS7_SIGINF_dup | ||
76 | #define sk_PKCS7_SIGNER_INFO_pop_free sk_PKCS7_SIGINF_pop_free | ||
77 | #define sk_PKCS7_SIGNER_INFO_shift sk_PKCS7_SIGINF_shift | ||
78 | #define sk_PKCS7_SIGNER_INFO_pop sk_PKCS7_SIGINF_pop | ||
79 | #define sk_PKCS7_SIGNER_INFO_sort sk_PKCS7_SIGINF_sort | ||
80 | |||
81 | /* Hack the names created with DECLARE_STACK_OF(PKCS7_RECIP_INFO) */ | ||
82 | #define sk_PKCS7_RECIP_INFO_new sk_PKCS7_RECINF_new | ||
83 | #define sk_PKCS7_RECIP_INFO_new_null sk_PKCS7_RECINF_new_null | ||
84 | #define sk_PKCS7_RECIP_INFO_free sk_PKCS7_RECINF_free | ||
85 | #define sk_PKCS7_RECIP_INFO_num sk_PKCS7_RECINF_num | ||
86 | #define sk_PKCS7_RECIP_INFO_value sk_PKCS7_RECINF_value | ||
87 | #define sk_PKCS7_RECIP_INFO_set sk_PKCS7_RECINF_set | ||
88 | #define sk_PKCS7_RECIP_INFO_zero sk_PKCS7_RECINF_zero | ||
89 | #define sk_PKCS7_RECIP_INFO_push sk_PKCS7_RECINF_push | ||
90 | #define sk_PKCS7_RECIP_INFO_unshift sk_PKCS7_RECINF_unshift | ||
91 | #define sk_PKCS7_RECIP_INFO_find sk_PKCS7_RECINF_find | ||
92 | #define sk_PKCS7_RECIP_INFO_delete sk_PKCS7_RECINF_delete | ||
93 | #define sk_PKCS7_RECIP_INFO_delete_ptr sk_PKCS7_RECINF_delete_ptr | ||
94 | #define sk_PKCS7_RECIP_INFO_insert sk_PKCS7_RECINF_insert | ||
95 | #define sk_PKCS7_RECIP_INFO_set_cmp_func sk_PKCS7_RECINF_set_cmp_func | ||
96 | #define sk_PKCS7_RECIP_INFO_dup sk_PKCS7_RECINF_dup | ||
97 | #define sk_PKCS7_RECIP_INFO_pop_free sk_PKCS7_RECINF_pop_free | ||
98 | #define sk_PKCS7_RECIP_INFO_shift sk_PKCS7_RECINF_shift | ||
99 | #define sk_PKCS7_RECIP_INFO_pop sk_PKCS7_RECINF_pop | ||
100 | #define sk_PKCS7_RECIP_INFO_sort sk_PKCS7_RECINF_sort | ||
101 | |||
102 | /* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) */ | ||
103 | #define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO i2d_ASN1_SET_OF_PKCS7_SIGINF | ||
104 | #define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO d2i_ASN1_SET_OF_PKCS7_SIGINF | ||
105 | |||
106 | /* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) */ | ||
107 | #define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO i2d_ASN1_SET_OF_PKCS7_RECGINF | ||
108 | #define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO d2i_ASN1_SET_OF_PKCS7_RECGINF | ||
109 | |||
110 | /* Hack the names created with DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE) */ | ||
111 | #define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQUENCE | ||
112 | #define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQUENCE | ||
113 | #define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NS_CERT_SEQUENCE | ||
114 | #define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQUENCE | ||
115 | #define PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE PEM_write_cb_bio_NS_CERT_SEQUENCE | ||
116 | |||
117 | /* Hack the names created with DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO) */ | ||
118 | #define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO | ||
119 | #define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO | ||
120 | #define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO | ||
121 | #define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO | ||
122 | #define PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO PEM_write_cb_bio_P8_PRIV_KEY_INFO | ||
123 | |||
124 | #endif /* defined VMS */ | ||
125 | |||
126 | #endif /* ! defined HEADER_VMS_IDHACKS_H */ | ||
diff --git a/src/lib/libssl/src/apps/rsa/01.pem b/src/lib/libssl/src/apps/rsa/01.pem new file mode 100644 index 0000000000..36ec57598e --- /dev/null +++ b/src/lib/libssl/src/apps/rsa/01.pem | |||
@@ -0,0 +1,15 @@ | |||
1 | -----BEGIN CERTIFICATE----- | ||
2 | MIICTjCCAbsCEGiuFKTJn6nzmiPPLxUZs1owDQYJKoZIhvcNAQEEBQAwXzELMAkG | ||
3 | A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD | ||
4 | VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk4 | ||
5 | MDUxODAwMDAwMFoXDTk5MDUxODIzNTk1OVowdTELMAkGA1UEBhMCVVMxETAPBgNV | ||
6 | BAgTCE5ldyBZb3JrMREwDwYDVQQHFAhOZXcgWW9yazEeMBwGA1UEChQVSW5kdXN0 | ||
7 | cmlhbCBQcmVzcyBJbmMuMSAwHgYDVQQDFBd3d3cuaW5kdXN0cmlhbHByZXNzLmNv | ||
8 | bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqiH9xUJNHvqCmaDon27ValJb | ||
9 | qTLymF3yKKWBxbODLWjX7yKjewoqWhotaEARI6jXPqomU87gFU1tH4r/bgwh3FmU | ||
10 | MK3qo92XOsvwNAHzXzWRXQNJmm54g2F1RUt00pgYiOximDse1t9RL5POCDEbfX8D | ||
11 | gugrE/WwkS2FrSoc5/cCAwEAATANBgkqhkiG9w0BAQQFAAN+AIw7fvF0EtEvrNS/ | ||
12 | LYuqAgUw/tH0FLgCkqKLmYYm/yR+Z0hD2eP/UhF+jAwmV8rHtBnaTM7oN23RVW2k | ||
13 | Cf8soiGfr2PYtfufpXtd7azUFa+WJCWnp0N29EG0BR1JOFC0Q/4dh/X9qulM8luq | ||
14 | Pjrmw2eSgbdmmdumWAcNPVbV | ||
15 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/apps/rsa/1.txt b/src/lib/libssl/src/apps/rsa/1.txt new file mode 100644 index 0000000000..95a862e150 --- /dev/null +++ b/src/lib/libssl/src/apps/rsa/1.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | issuer= /C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority | ||
2 | subject=/C=US/ST=New York/L=New York/O=Industrial Press Inc./CN=www.industrialpress.com | ||
3 | Certificate: | ||
4 | Data: | ||
5 | Version: 1 (0x0) | ||
6 | Serial Number: | ||
7 | 68:ae:14:a4:c9:9f:a9:f3:9a:23:cf:2f:15:19:b3:5a | ||
8 | Signature Algorithm: md5WithRSAEncryption | ||
9 | Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority | ||
10 | Validity | ||
11 | Not Before: May 18 00:00:00 1998 GMT | ||
12 | Not After : May 18 23:59:59 1999 GMT | ||
13 | Subject: C=US, ST=New York, L=New York, O=Industrial Press Inc., CN=www.industrialpress.com | ||
14 | Subject Public Key Info: | ||
15 | Public Key Algorithm: rsaEncryption | ||
16 | RSA Public Key: (1024 bit) | ||
17 | Modulus (1024 bit): | ||
18 | 00:aa:21:fd:c5:42:4d:1e:fa:82:99:a0:e8:9f:6e: | ||
19 | d5:6a:52:5b:a9:32:f2:98:5d:f2:28:a5:81:c5:b3: | ||
20 | 83:2d:68:d7:ef:22:a3:7b:0a:2a:5a:1a:2d:68:40: | ||
21 | 11:23:a8:d7:3e:aa:26:53:ce:e0:15:4d:6d:1f:8a: | ||
22 | ff:6e:0c:21:dc:59:94:30:ad:ea:a3:dd:97:3a:cb: | ||
23 | f0:34:01:f3:5f:35:91:5d:03:49:9a:6e:78:83:61: | ||
24 | 75:45:4b:74:d2:98:18:88:ec:62:98:3b:1e:d6:df: | ||
25 | 51:2f:93:ce:08:31:1b:7d:7f:03:82:e8:2b:13:f5: | ||
26 | b0:91:2d:85:ad:2a:1c:e7:f7 | ||
27 | Exponent: 65537 (0x10001) | ||
28 | Signature Algorithm: md5WithRSAEncryption | ||
29 | 8c:3b:7e:f1:74:12:d1:2f:ac:d4:bf:2d:8b:aa:02:05:30:fe: | ||
30 | d1:f4:14:b8:02:92:a2:8b:99:86:26:ff:24:7e:67:48:43:d9: | ||
31 | e3:ff:52:11:7e:8c:0c:26:57:ca:c7:b4:19:da:4c:ce:e8:37: | ||
32 | 6d:d1:55:6d:a4:09:ff:2c:a2:21:9f:af:63:d8:b5:fb:9f:a5: | ||
33 | 7b:5d:ed:ac:d4:15:af:96:24:25:a7:a7:43:76:f4:41:b4:05: | ||
34 | 1d:49:38:50:b4:43:fe:1d:87:f5:fd:aa:e9:4c:f2:5b:aa:3e: | ||
35 | 3a:e6:c3:67:92:81:b7:66:99:db:a6:58:07:0d:3d:56:d5 | ||
36 | -----BEGIN CERTIFICATE----- | ||
37 | MIICTjCCAbsCEGiuFKTJn6nzmiPPLxUZs1owDQYJKoZIhvcNAQEEBQAwXzELMAkG | ||
38 | A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD | ||
39 | VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk4 | ||
40 | MDUxODAwMDAwMFoXDTk5MDUxODIzNTk1OVowdTELMAkGA1UEBhMCVVMxETAPBgNV | ||
41 | BAgTCE5ldyBZb3JrMREwDwYDVQQHFAhOZXcgWW9yazEeMBwGA1UEChQVSW5kdXN0 | ||
42 | cmlhbCBQcmVzcyBJbmMuMSAwHgYDVQQDFBd3d3cuaW5kdXN0cmlhbHByZXNzLmNv | ||
43 | bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqiH9xUJNHvqCmaDon27ValJb | ||
44 | qTLymF3yKKWBxbODLWjX7yKjewoqWhotaEARI6jXPqomU87gFU1tH4r/bgwh3FmU | ||
45 | MK3qo92XOsvwNAHzXzWRXQNJmm54g2F1RUt00pgYiOximDse1t9RL5POCDEbfX8D | ||
46 | gugrE/WwkS2FrSoc5/cCAwEAATANBgkqhkiG9w0BAQQFAAN+AIw7fvF0EtEvrNS/ | ||
47 | LYuqAgUw/tH0FLgCkqKLmYYm/yR+Z0hD2eP/UhF+jAwmV8rHtBnaTM7oN23RVW2k | ||
48 | Cf8soiGfr2PYtfufpXtd7azUFa+WJCWnp0N29EG0BR1JOFC0Q/4dh/X9qulM8luq | ||
49 | Pjrmw2eSgbdmmdumWAcNPVbV | ||
50 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/apps/rsa/SecureServer.pem b/src/lib/libssl/src/apps/rsa/SecureServer.pem new file mode 100644 index 0000000000..7c8ffb2cd8 --- /dev/null +++ b/src/lib/libssl/src/apps/rsa/SecureServer.pem | |||
@@ -0,0 +1,47 @@ | |||
1 | Certificate: | ||
2 | Data: | ||
3 | Version: 1 (0x0) | ||
4 | Serial Number: | ||
5 | 02:ad:66:7e:4e:45:fe:5e:57:6f:3c:98:19:5e:dd:c0 | ||
6 | Signature Algorithm: md2WithRSAEncryption | ||
7 | Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority | ||
8 | Validity | ||
9 | Not Before: Nov 9 00:00:00 1994 GMT | ||
10 | Not After : Jan 7 23:59:59 2010 GMT | ||
11 | Subject: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority | ||
12 | Subject Public Key Info: | ||
13 | Public Key Algorithm: rsaEncryption | ||
14 | RSA Public Key: (1000 bit) | ||
15 | Modulus (1000 bit): | ||
16 | 00:92:ce:7a:c1:ae:83:3e:5a:aa:89:83:57:ac:25: | ||
17 | 01:76:0c:ad:ae:8e:2c:37:ce:eb:35:78:64:54:03: | ||
18 | e5:84:40:51:c9:bf:8f:08:e2:8a:82:08:d2:16:86: | ||
19 | 37:55:e9:b1:21:02:ad:76:68:81:9a:05:a2:4b:c9: | ||
20 | 4b:25:66:22:56:6c:88:07:8f:f7:81:59:6d:84:07: | ||
21 | 65:70:13:71:76:3e:9b:77:4c:e3:50:89:56:98:48: | ||
22 | b9:1d:a7:29:1a:13:2e:4a:11:59:9c:1e:15:d5:49: | ||
23 | 54:2c:73:3a:69:82:b1:97:39:9c:6d:70:67:48:e5: | ||
24 | dd:2d:d6:c8:1e:7b | ||
25 | Exponent: 65537 (0x10001) | ||
26 | Signature Algorithm: md2WithRSAEncryption | ||
27 | 65:dd:7e:e1:b2:ec:b0:e2:3a:e0:ec:71:46:9a:19:11:b8:d3: | ||
28 | c7:a0:b4:03:40:26:02:3e:09:9c:e1:12:b3:d1:5a:f6:37:a5: | ||
29 | b7:61:03:b6:5b:16:69:3b:c6:44:08:0c:88:53:0c:6b:97:49: | ||
30 | c7:3e:35:dc:6c:b9:bb:aa:df:5c:bb:3a:2f:93:60:b6:a9:4b: | ||
31 | 4d:f2:20:f7:cd:5f:7f:64:7b:8e:dc:00:5c:d7:fa:77:ca:39: | ||
32 | 16:59:6f:0e:ea:d3:b5:83:7f:4d:4d:42:56:76:b4:c9:5f:04: | ||
33 | f8:38:f8:eb:d2:5f:75:5f:cd:7b:fc:e5:8e:80:7c:fc:50 | ||
34 | -----BEGIN CERTIFICATE----- | ||
35 | MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG | ||
36 | A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD | ||
37 | VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 | ||
38 | MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV | ||
39 | BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy | ||
40 | dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ | ||
41 | ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII | ||
42 | 0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI | ||
43 | uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI | ||
44 | hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 | ||
45 | YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc | ||
46 | 1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== | ||
47 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/apps/rsa/s.txt b/src/lib/libssl/src/apps/rsa/s.txt new file mode 100644 index 0000000000..7de7e0764f --- /dev/null +++ b/src/lib/libssl/src/apps/rsa/s.txt | |||
@@ -0,0 +1,49 @@ | |||
1 | issuer= /C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority | ||
2 | subject=/C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority | ||
3 | Certificate: | ||
4 | Data: | ||
5 | Version: 1 (0x0) | ||
6 | Serial Number: | ||
7 | 02:ad:66:7e:4e:45:fe:5e:57:6f:3c:98:19:5e:dd:c0 | ||
8 | Signature Algorithm: md2WithRSAEncryption | ||
9 | Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority | ||
10 | Validity | ||
11 | Not Before: Nov 9 00:00:00 1994 GMT | ||
12 | Not After : Jan 7 23:59:59 2010 GMT | ||
13 | Subject: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority | ||
14 | Subject Public Key Info: | ||
15 | Public Key Algorithm: rsaEncryption | ||
16 | RSA Public Key: (1000 bit) | ||
17 | Modulus (1000 bit): | ||
18 | 00:92:ce:7a:c1:ae:83:3e:5a:aa:89:83:57:ac:25: | ||
19 | 01:76:0c:ad:ae:8e:2c:37:ce:eb:35:78:64:54:03: | ||
20 | e5:84:40:51:c9:bf:8f:08:e2:8a:82:08:d2:16:86: | ||
21 | 37:55:e9:b1:21:02:ad:76:68:81:9a:05:a2:4b:c9: | ||
22 | 4b:25:66:22:56:6c:88:07:8f:f7:81:59:6d:84:07: | ||
23 | 65:70:13:71:76:3e:9b:77:4c:e3:50:89:56:98:48: | ||
24 | b9:1d:a7:29:1a:13:2e:4a:11:59:9c:1e:15:d5:49: | ||
25 | 54:2c:73:3a:69:82:b1:97:39:9c:6d:70:67:48:e5: | ||
26 | dd:2d:d6:c8:1e:7b | ||
27 | Exponent: 65537 (0x10001) | ||
28 | Signature Algorithm: md2WithRSAEncryption | ||
29 | 65:dd:7e:e1:b2:ec:b0:e2:3a:e0:ec:71:46:9a:19:11:b8:d3: | ||
30 | c7:a0:b4:03:40:26:02:3e:09:9c:e1:12:b3:d1:5a:f6:37:a5: | ||
31 | b7:61:03:b6:5b:16:69:3b:c6:44:08:0c:88:53:0c:6b:97:49: | ||
32 | c7:3e:35:dc:6c:b9:bb:aa:df:5c:bb:3a:2f:93:60:b6:a9:4b: | ||
33 | 4d:f2:20:f7:cd:5f:7f:64:7b:8e:dc:00:5c:d7:fa:77:ca:39: | ||
34 | 16:59:6f:0e:ea:d3:b5:83:7f:4d:4d:42:56:76:b4:c9:5f:04: | ||
35 | f8:38:f8:eb:d2:5f:75:5f:cd:7b:fc:e5:8e:80:7c:fc:50 | ||
36 | -----BEGIN CERTIFICATE----- | ||
37 | MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG | ||
38 | A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD | ||
39 | VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 | ||
40 | MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV | ||
41 | BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy | ||
42 | dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ | ||
43 | ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII | ||
44 | 0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI | ||
45 | uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI | ||
46 | hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 | ||
47 | YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc | ||
48 | 1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== | ||
49 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/certs/expired/ICE-CA.pem b/src/lib/libssl/src/certs/expired/ICE-CA.pem new file mode 100644 index 0000000000..75652366c2 --- /dev/null +++ b/src/lib/libssl/src/certs/expired/ICE-CA.pem | |||
@@ -0,0 +1,59 @@ | |||
1 | Certificate: | ||
2 | Data: | ||
3 | Version: 3 (0x2) | ||
4 | Serial Number: 1 (0x1) | ||
5 | Signature Algorithm: md5WithRSAEncryption | ||
6 | Issuer: O=European ICE-TEL project, OU=V3-Certification Authority | ||
7 | Validity | ||
8 | Not Before: Apr 2 17:35:53 1997 GMT | ||
9 | Not After : Apr 2 17:35:53 1998 GMT | ||
10 | Subject: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt | ||
11 | Subject Public Key Info: | ||
12 | Public Key Algorithm: rsa | ||
13 | RSA Public Key: (512 bit) | ||
14 | Modulus (512 bit): | ||
15 | 00:82:75:ba:f6:d1:60:b5:f9:15:b3:6a:dd:29:8f: | ||
16 | 8b:a4:6f:1a:88:e0:50:43:40:0b:79:41:d5:d3:16: | ||
17 | 44:7d:74:65:17:42:06:52:0b:e9:50:c8:10:cd:24: | ||
18 | e2:ae:8d:22:30:73:e6:b4:b7:93:1f:e5:6e:a2:ae: | ||
19 | 49:11:a5:c9:45 | ||
20 | Exponent: 65537 (0x10001) | ||
21 | X509v3 extensions: | ||
22 | X509v3 Authority Key Identifier: | ||
23 | 0.........z.."p......e.. | ||
24 | X509v3 Subject Key Identifier: | ||
25 | ..~r..:..B.44fu......3 | ||
26 | X509v3 Key Usage: critical | ||
27 | .... | ||
28 | X509v3 Certificate Policies: critical | ||
29 | 0.0...*... | ||
30 | X509v3 Subject Alternative Name: | ||
31 | 0!..secude-support@darmstadt.gmd.de | ||
32 | X509v3 Issuer Alternative Name: | ||
33 | 0I..ice-tel-ca@darmstadt.gmd.de.*http://www.darmstadt.gmd.de/ice-tel/euroca | ||
34 | X509v3 Basic Constraints: critical | ||
35 | 0.... | ||
36 | X509v3 CRL Distribution Points: | ||
37 | 0200...,.*http://www.darmstadt.gmd.de/ice-tel/euroca | ||
38 | Signature Algorithm: md5WithRSAEncryption | ||
39 | 17:a2:88:b7:99:5a:05:41:e4:13:34:67:e6:1f:3e:26:ec:4b: | ||
40 | 69:f9:3e:28:22:be:9d:1c:ab:41:6f:0c:00:85:fe:45:74:f6: | ||
41 | 98:f0:ce:9b:65:53:4a:50:42:c7:d4:92:bd:d7:a2:a8:3d:98: | ||
42 | 88:73:cd:60:28:79:a3:fc:48:7a | ||
43 | -----BEGIN CERTIFICATE----- | ||
44 | MIICzDCCAnagAwIBAgIBATANBgkqhkiG9w0BAQQFADBIMSEwHwYDVQQKExhFdXJv | ||
45 | cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g | ||
46 | QXV0aG9yaXR5MB4XDTk3MDQwMjE3MzU1M1oXDTk4MDQwMjE3MzU1M1owXDEhMB8G | ||
47 | A1UEChMYRXVyb3BlYW4gSUNFLVRFTCBwcm9qZWN0MSMwIQYDVQQLExpWMy1DZXJ0 | ||
48 | aWZpY2F0aW9uIEF1dGhvcml0eTESMBAGA1UEBxMJRGFybXN0YWR0MFkwCgYEVQgB | ||
49 | AQICAgADSwAwSAJBAIJ1uvbRYLX5FbNq3SmPi6RvGojgUENAC3lB1dMWRH10ZRdC | ||
50 | BlIL6VDIEM0k4q6NIjBz5rS3kx/lbqKuSRGlyUUCAwEAAaOCATgwggE0MB8GA1Ud | ||
51 | IwQYMBaAFIr3yNUOx3ro1yJw4AuJ1bbsZbzPMB0GA1UdDgQWBBR+cvL4OoacQog0 | ||
52 | NGZ1w9T80aIRMzAOBgNVHQ8BAf8EBAMCAfYwFAYDVR0gAQH/BAowCDAGBgQqAwQF | ||
53 | MCoGA1UdEQQjMCGBH3NlY3VkZS1zdXBwb3J0QGRhcm1zdGFkdC5nbWQuZGUwUgYD | ||
54 | VR0SBEswSYEbaWNlLXRlbC1jYUBkYXJtc3RhZHQuZ21kLmRlhipodHRwOi8vd3d3 | ||
55 | LmRhcm1zdGFkdC5nbWQuZGUvaWNlLXRlbC9ldXJvY2EwDwYDVR0TAQH/BAUwAwEB | ||
56 | /zA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vd3d3LmRhcm1zdGFkdC5nbWQuZGUv | ||
57 | aWNlLXRlbC9ldXJvY2EwDQYJKoZIhvcNAQEEBQADQQAXooi3mVoFQeQTNGfmHz4m | ||
58 | 7Etp+T4oIr6dHKtBbwwAhf5FdPaY8M6bZVNKUELH1JK916KoPZiIc81gKHmj/Eh6 | ||
59 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/certs/expired/ICE-root.pem b/src/lib/libssl/src/certs/expired/ICE-root.pem new file mode 100644 index 0000000000..fa991599c9 --- /dev/null +++ b/src/lib/libssl/src/certs/expired/ICE-root.pem | |||
@@ -0,0 +1,48 @@ | |||
1 | Certificate: | ||
2 | Data: | ||
3 | Version: 3 (0x2) | ||
4 | Serial Number: 0 (0x0) | ||
5 | Signature Algorithm: md5WithRSAEncryption | ||
6 | Issuer: O=European ICE-TEL project, OU=V3-Certification Authority | ||
7 | Validity | ||
8 | Not Before: Apr 2 17:33:36 1997 GMT | ||
9 | Not After : Apr 2 17:33:36 1998 GMT | ||
10 | Subject: O=European ICE-TEL project, OU=V3-Certification Authority | ||
11 | Subject Public Key Info: | ||
12 | Public Key Algorithm: rsa | ||
13 | RSA Public Key: (512 bit) | ||
14 | Modulus (512 bit): | ||
15 | 00:80:3e:eb:ae:47:a9:fe:10:54:0b:81:8b:9c:2b: | ||
16 | 82:ab:3a:61:36:65:8b:f3:73:9f:ac:ac:7a:15:a7: | ||
17 | 13:8f:b4:c4:ba:a3:0f:bc:a5:58:8d:cc:b1:93:31: | ||
18 | 9e:81:9e:8c:19:61:86:fa:52:73:54:d1:97:76:22: | ||
19 | e7:c7:9f:41:cd | ||
20 | Exponent: 65537 (0x10001) | ||
21 | X509v3 extensions: | ||
22 | X509v3 Subject Key Identifier: | ||
23 | ........z.."p......e.. | ||
24 | X509v3 Key Usage: critical | ||
25 | .... | ||
26 | X509v3 Subject Alternative Name: | ||
27 | 0I.*http://www.darmstadt.gmd.de/ice-tel/euroca..ice-tel-ca@darmstadt.gmd.de | ||
28 | X509v3 Basic Constraints: critical | ||
29 | 0.... | ||
30 | Signature Algorithm: md5WithRSAEncryption | ||
31 | 76:69:61:db:b7:cf:8b:06:9e:d8:8c:96:53:d2:4d:a8:23:a6: | ||
32 | 03:44:e8:8f:24:a5:c0:84:a8:4b:77:d4:2d:2b:7d:37:91:67: | ||
33 | f2:2c:ce:02:31:4c:6b:cc:ce:f2:68:a6:11:11:ab:7d:88:b8: | ||
34 | 7e:22:9f:25:06:60:bd:79:30:3d | ||
35 | -----BEGIN CERTIFICATE----- | ||
36 | MIICFjCCAcCgAwIBAgIBADANBgkqhkiG9w0BAQQFADBIMSEwHwYDVQQKExhFdXJv | ||
37 | cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g | ||
38 | QXV0aG9yaXR5MB4XDTk3MDQwMjE3MzMzNloXDTk4MDQwMjE3MzMzNlowSDEhMB8G | ||
39 | A1UEChMYRXVyb3BlYW4gSUNFLVRFTCBwcm9qZWN0MSMwIQYDVQQLExpWMy1DZXJ0 | ||
40 | aWZpY2F0aW9uIEF1dGhvcml0eTBZMAoGBFUIAQECAgIAA0sAMEgCQQCAPuuuR6n+ | ||
41 | EFQLgYucK4KrOmE2ZYvzc5+srHoVpxOPtMS6ow+8pViNzLGTMZ6BnowZYYb6UnNU | ||
42 | 0Zd2IufHn0HNAgMBAAGjgZcwgZQwHQYDVR0OBBYEFIr3yNUOx3ro1yJw4AuJ1bbs | ||
43 | ZbzPMA4GA1UdDwEB/wQEAwIB9jBSBgNVHREESzBJhipodHRwOi8vd3d3LmRhcm1z | ||
44 | dGFkdC5nbWQuZGUvaWNlLXRlbC9ldXJvY2GBG2ljZS10ZWwtY2FAZGFybXN0YWR0 | ||
45 | LmdtZC5kZTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA0EAdmlh27fP | ||
46 | iwae2IyWU9JNqCOmA0TojySlwISoS3fULSt9N5Fn8izOAjFMa8zO8mimERGrfYi4 | ||
47 | fiKfJQZgvXkwPQ== | ||
48 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/certs/expired/ICE-user.pem b/src/lib/libssl/src/certs/expired/ICE-user.pem new file mode 100644 index 0000000000..28065fd37d --- /dev/null +++ b/src/lib/libssl/src/certs/expired/ICE-user.pem | |||
@@ -0,0 +1,63 @@ | |||
1 | Certificate: | ||
2 | Data: | ||
3 | Version: 3 (0x2) | ||
4 | Serial Number: 1 (0x1) | ||
5 | Signature Algorithm: md5WithRSAEncryption | ||
6 | Issuer: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt | ||
7 | Validity | ||
8 | Not Before: Apr 2 17:35:59 1997 GMT | ||
9 | Not After : Apr 2 17:35:59 1998 GMT | ||
10 | Subject: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt, CN=USER | ||
11 | Subject Public Key Info: | ||
12 | Public Key Algorithm: rsa | ||
13 | RSA Public Key: (512 bit) | ||
14 | Modulus (512 bit): | ||
15 | 00:a8:a8:53:63:49:1b:93:c3:c3:0b:6c:88:11:55: | ||
16 | de:7e:6a:e2:f9:52:a0:dc:69:25:c4:c8:bf:55:e1: | ||
17 | 31:a8:ce:e4:a9:29:85:99:8a:15:9a:de:f6:2f:e1: | ||
18 | b4:50:5f:5e:04:75:a6:f4:76:dc:3c:0e:39:dc:3a: | ||
19 | be:3e:a4:61:8b | ||
20 | Exponent: 65537 (0x10001) | ||
21 | X509v3 extensions: | ||
22 | X509v3 Authority Key Identifier: | ||
23 | 0...~r..:..B.44fu......3 | ||
24 | X509v3 Subject Key Identifier: | ||
25 | ...... .*...1.*....... | ||
26 | X509v3 Key Usage: critical | ||
27 | .... | ||
28 | X509v3 Certificate Policies: critical | ||
29 | 0.0...*...0....... | ||
30 | X509v3 Subject Alternative Name: | ||
31 | 0:..user@darmstadt.gmd.de.!http://www.darmstadt.gmd.de/~user | ||
32 | X509v3 Issuer Alternative Name: | ||
33 | 0....gmdca@gmd.de..http://www.gmd.de..saturn.darmstadt.gmd.de.\1!0...U. | ||
34 | ..European ICE-TEL project1#0!..U....V3-Certification Authority1.0...U....Darmstadt..141.12.62.26 | ||
35 | X509v3 Basic Constraints: critical | ||
36 | 0. | ||
37 | X509v3 CRL Distribution Points: | ||
38 | 0.0.......gmdca@gmd.de | ||
39 | Signature Algorithm: md5WithRSAEncryption | ||
40 | 69:0c:e1:b7:a7:f2:d8:fb:e8:69:c0:13:cd:37:ad:21:06:22: | ||
41 | 4d:e8:c6:db:f1:04:0b:b7:e0:b3:d6:0c:81:03:ce:c3:6a:3e: | ||
42 | c7:e7:24:24:a4:92:64:c2:83:83:06:42:53:0e:6f:09:1e:84: | ||
43 | 9a:f7:6f:63:9b:94:99:83:d6:a4 | ||
44 | -----BEGIN CERTIFICATE----- | ||
45 | MIIDTzCCAvmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBcMSEwHwYDVQQKExhFdXJv | ||
46 | cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g | ||
47 | QXV0aG9yaXR5MRIwEAYDVQQHEwlEYXJtc3RhZHQwHhcNOTcwNDAyMTczNTU5WhcN | ||
48 | OTgwNDAyMTczNTU5WjBrMSEwHwYDVQQKExhFdXJvcGVhbiBJQ0UtVEVMIHByb2pl | ||
49 | Y3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24gQXV0aG9yaXR5MRIwEAYDVQQH | ||
50 | EwlEYXJtc3RhZHQxDTALBgNVBAMTBFVTRVIwWTAKBgRVCAEBAgICAANLADBIAkEA | ||
51 | qKhTY0kbk8PDC2yIEVXefmri+VKg3GklxMi/VeExqM7kqSmFmYoVmt72L+G0UF9e | ||
52 | BHWm9HbcPA453Dq+PqRhiwIDAQABo4IBmDCCAZQwHwYDVR0jBBgwFoAUfnLy+DqG | ||
53 | nEKINDRmdcPU/NGiETMwHQYDVR0OBBYEFJfc4B8gjSoRmLUx4Sq/ucIYiMrPMA4G | ||
54 | A1UdDwEB/wQEAwIB8DAcBgNVHSABAf8EEjAQMAYGBCoDBAUwBgYECQgHBjBDBgNV | ||
55 | HREEPDA6gRV1c2VyQGRhcm1zdGFkdC5nbWQuZGWGIWh0dHA6Ly93d3cuZGFybXN0 | ||
56 | YWR0LmdtZC5kZS9+dXNlcjCBsQYDVR0SBIGpMIGmgQxnbWRjYUBnbWQuZGWGEWh0 | ||
57 | dHA6Ly93d3cuZ21kLmRlghdzYXR1cm4uZGFybXN0YWR0LmdtZC5kZaRcMSEwHwYD | ||
58 | VQQKExhFdXJvcGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRp | ||
59 | ZmljYXRpb24gQXV0aG9yaXR5MRIwEAYDVQQHEwlEYXJtc3RhZHSHDDE0MS4xMi42 | ||
60 | Mi4yNjAMBgNVHRMBAf8EAjAAMB0GA1UdHwQWMBQwEqAQoA6BDGdtZGNhQGdtZC5k | ||
61 | ZTANBgkqhkiG9w0BAQQFAANBAGkM4ben8tj76GnAE803rSEGIk3oxtvxBAu34LPW | ||
62 | DIEDzsNqPsfnJCSkkmTCg4MGQlMObwkehJr3b2OblJmD1qQ= | ||
63 | -----END CERTIFICATE----- | ||
diff --git a/src/lib/libssl/src/certs/expired/ICE.crl b/src/lib/libssl/src/certs/expired/ICE.crl new file mode 100644 index 0000000000..21939e8cc4 --- /dev/null +++ b/src/lib/libssl/src/certs/expired/ICE.crl | |||
@@ -0,0 +1,9 @@ | |||
1 | -----BEGIN X509 CRL----- | ||
2 | MIIBNDCBnjANBgkqhkiG9w0BAQIFADBFMSEwHwYDVQQKExhFdXJvcGVhbiBJQ0Ut | ||
3 | VEVMIFByb2plY3QxIDAeBgNVBAsTF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05 | ||
4 | NzA2MDkxNDQyNDNaFw05NzA3MDkxNDQyNDNaMCgwEgIBChcNOTcwMzAzMTQ0MjU0 | ||
5 | WjASAgEJFw05NjEwMDIxMjI5MjdaMA0GCSqGSIb3DQEBAgUAA4GBAH4vgWo2Tej/ | ||
6 | i7kbiw4Imd30If91iosjClNpBFwvwUDBclPEeMuYimHbLOk4H8Nofc0fw11+U/IO | ||
7 | KSNouUDcqG7B64oY7c4SXKn+i1MWOb5OJiWeodX3TehHjBlyWzoNMWCnYA8XqFP1 | ||
8 | mOKp8Jla1BibEZf14+/HqCi2hnZUiEXh | ||
9 | -----END X509 CRL----- | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/add.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/add.pl new file mode 100644 index 0000000000..4dc76e6b69 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/add.pl | |||
@@ -0,0 +1,119 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &br(&label("finish")); | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0,$b0)=&NR(2); | ||
26 | &ld($a0,&QWPw(0,$ap)); | ||
27 | &ld($b0,&QWPw(0,$bp)); | ||
28 | |||
29 | ########################################################## | ||
30 | &set_label("loop"); | ||
31 | |||
32 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
33 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
34 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
35 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
36 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
37 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
38 | |||
39 | ($o0,$t0)=&NR(2); | ||
40 | &add($a0,$b0,$o0); | ||
41 | &cmpult($o0,$b0,$t0); | ||
42 | &add($o0,$cc,$o0); | ||
43 | &cmpult($o0,$cc,$cc); | ||
44 | &add($cc,$t0,$cc); &FR($t0); | ||
45 | |||
46 | ($t1,$o1)=&NR(2); | ||
47 | |||
48 | &add($a1,$b1,$o1); &FR($a1); | ||
49 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
50 | &add($o1,$cc,$o1); | ||
51 | &cmpult($o1,$cc,$cc); | ||
52 | &add($cc,$t1,$cc); &FR($t1); | ||
53 | |||
54 | ($t2,$o2)=&NR(2); | ||
55 | |||
56 | &add($a2,$b2,$o2); &FR($a2); | ||
57 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
58 | &add($o2,$cc,$o2); | ||
59 | &cmpult($o2,$cc,$cc); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &add($a3,$b3,$o3); &FR($a3); | ||
65 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
66 | &add($o3,$cc,$o3); | ||
67 | &cmpult($o3,$cc,$cc); | ||
68 | &add($cc,$t3,$cc); &FR($t3); | ||
69 | |||
70 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
71 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
72 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
73 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
74 | |||
75 | &sub($count,4,$count); # count-=4 | ||
76 | &add($ap,4*$QWS,$ap); # count+=4 | ||
77 | &add($bp,4*$QWS,$bp); # count+=4 | ||
78 | &add($rp,4*$QWS,$rp); # count+=4 | ||
79 | |||
80 | &blt($count,&label("finish")); | ||
81 | &ld($a0,&QWPw(0,$ap)); | ||
82 | &ld($b0,&QWPw(0,$bp)); | ||
83 | &br(&label("loop")); | ||
84 | ################################################## | ||
85 | # Do the last 0..3 words | ||
86 | |||
87 | ($t0,$o0)=&NR(2); | ||
88 | &set_label("last_loop"); | ||
89 | |||
90 | &ld($a0,&QWPw(0,$ap)); # get a | ||
91 | &ld($b0,&QWPw(0,$bp)); # get b | ||
92 | |||
93 | &add($a0,$b0,$o0); | ||
94 | &cmpult($o0,$b0,$t0); # will we borrow? | ||
95 | &add($o0,$cc,$o0); # will we borrow? | ||
96 | &cmpult($o0,$cc,$cc); # will we borrow? | ||
97 | &add($cc,$t0,$cc); # add the borrows | ||
98 | &st($o0,&QWPw(0,$rp)); # save | ||
99 | |||
100 | &add($ap,$QWS,$ap); | ||
101 | &add($bp,$QWS,$bp); | ||
102 | &add($rp,$QWS,$rp); | ||
103 | &sub($count,1,$count); | ||
104 | &bgt($count,&label("last_loop")); | ||
105 | &function_end_A($name); | ||
106 | |||
107 | ###################################################### | ||
108 | &set_label("finish"); | ||
109 | &add($count,4,$count); | ||
110 | &bgt($count,&label("last_loop")); | ||
111 | |||
112 | &FR($o0,$t0,$a0,$b0); | ||
113 | &set_label("end"); | ||
114 | &function_end($name); | ||
115 | |||
116 | &fin_pool; | ||
117 | } | ||
118 | |||
119 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/div.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/div.pl new file mode 100644 index 0000000000..7ec144377f --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/div.pl | |||
@@ -0,0 +1,144 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | |||
3 | sub bn_div64 | ||
4 | { | ||
5 | local($data)=<<'EOF'; | ||
6 | # | ||
7 | # What follows was taken directly from the C compiler with a few | ||
8 | # hacks to redo the lables. | ||
9 | # | ||
10 | .text | ||
11 | .set noreorder | ||
12 | .set volatile | ||
13 | .align 3 | ||
14 | .globl bn_div64 | ||
15 | .ent bn_div64 | ||
16 | bn_div64: | ||
17 | ldgp $29,0($27) | ||
18 | bn_div64..ng: | ||
19 | lda $30,-48($30) | ||
20 | .frame $30,48,$26,0 | ||
21 | stq $26,0($30) | ||
22 | stq $9,8($30) | ||
23 | stq $10,16($30) | ||
24 | stq $11,24($30) | ||
25 | stq $12,32($30) | ||
26 | stq $13,40($30) | ||
27 | .mask 0x4003e00,-48 | ||
28 | .prologue 1 | ||
29 | bis $16,$16,$9 | ||
30 | bis $17,$17,$10 | ||
31 | bis $18,$18,$11 | ||
32 | bis $31,$31,$13 | ||
33 | bis $31,2,$12 | ||
34 | bne $11,$9119 | ||
35 | lda $0,-1 | ||
36 | br $31,$9136 | ||
37 | .align 4 | ||
38 | $9119: | ||
39 | bis $11,$11,$16 | ||
40 | jsr $26,BN_num_bits_word | ||
41 | ldgp $29,0($26) | ||
42 | subq $0,64,$1 | ||
43 | beq $1,$9120 | ||
44 | bis $31,1,$1 | ||
45 | sll $1,$0,$1 | ||
46 | cmpule $9,$1,$1 | ||
47 | bne $1,$9120 | ||
48 | # lda $16,_IO_stderr_ | ||
49 | # lda $17,$C32 | ||
50 | # bis $0,$0,$18 | ||
51 | # jsr $26,fprintf | ||
52 | # ldgp $29,0($26) | ||
53 | jsr $26,abort | ||
54 | ldgp $29,0($26) | ||
55 | .align 4 | ||
56 | $9120: | ||
57 | bis $31,64,$3 | ||
58 | cmpult $9,$11,$2 | ||
59 | subq $3,$0,$1 | ||
60 | addl $1,$31,$0 | ||
61 | subq $9,$11,$1 | ||
62 | cmoveq $2,$1,$9 | ||
63 | beq $0,$9122 | ||
64 | zapnot $0,15,$2 | ||
65 | subq $3,$0,$1 | ||
66 | sll $11,$2,$11 | ||
67 | sll $9,$2,$3 | ||
68 | srl $10,$1,$1 | ||
69 | sll $10,$2,$10 | ||
70 | bis $3,$1,$9 | ||
71 | $9122: | ||
72 | srl $11,32,$5 | ||
73 | zapnot $11,15,$6 | ||
74 | lda $7,-1 | ||
75 | .align 5 | ||
76 | $9123: | ||
77 | srl $9,32,$1 | ||
78 | subq $1,$5,$1 | ||
79 | bne $1,$9126 | ||
80 | zapnot $7,15,$27 | ||
81 | br $31,$9127 | ||
82 | .align 4 | ||
83 | $9126: | ||
84 | bis $9,$9,$24 | ||
85 | bis $5,$5,$25 | ||
86 | divqu $24,$25,$27 | ||
87 | $9127: | ||
88 | srl $10,32,$4 | ||
89 | .align 5 | ||
90 | $9128: | ||
91 | mulq $27,$5,$1 | ||
92 | subq $9,$1,$3 | ||
93 | zapnot $3,240,$1 | ||
94 | bne $1,$9129 | ||
95 | mulq $6,$27,$2 | ||
96 | sll $3,32,$1 | ||
97 | addq $1,$4,$1 | ||
98 | cmpule $2,$1,$2 | ||
99 | bne $2,$9129 | ||
100 | subq $27,1,$27 | ||
101 | br $31,$9128 | ||
102 | .align 4 | ||
103 | $9129: | ||
104 | mulq $27,$6,$1 | ||
105 | mulq $27,$5,$4 | ||
106 | srl $1,32,$3 | ||
107 | sll $1,32,$1 | ||
108 | addq $4,$3,$4 | ||
109 | cmpult $10,$1,$2 | ||
110 | subq $10,$1,$10 | ||
111 | addq $2,$4,$2 | ||
112 | cmpult $9,$2,$1 | ||
113 | bis $2,$2,$4 | ||
114 | beq $1,$9134 | ||
115 | addq $9,$11,$9 | ||
116 | subq $27,1,$27 | ||
117 | $9134: | ||
118 | subl $12,1,$12 | ||
119 | subq $9,$4,$9 | ||
120 | beq $12,$9124 | ||
121 | sll $27,32,$13 | ||
122 | sll $9,32,$2 | ||
123 | srl $10,32,$1 | ||
124 | sll $10,32,$10 | ||
125 | bis $2,$1,$9 | ||
126 | br $31,$9123 | ||
127 | .align 4 | ||
128 | $9124: | ||
129 | bis $13,$27,$0 | ||
130 | $9136: | ||
131 | ldq $26,0($30) | ||
132 | ldq $9,8($30) | ||
133 | ldq $10,16($30) | ||
134 | ldq $11,24($30) | ||
135 | ldq $12,32($30) | ||
136 | ldq $13,40($30) | ||
137 | addq $30,48,$30 | ||
138 | ret $31,($26),1 | ||
139 | .end bn_div64 | ||
140 | EOF | ||
141 | &asm_add($data); | ||
142 | } | ||
143 | |||
144 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul.pl new file mode 100644 index 0000000000..b182bae452 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul.pl | |||
@@ -0,0 +1,116 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &br(&label("finish")); | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0,$r0)=&NR(2); | ||
26 | &ld($a0,&QWPw(0,$ap)); | ||
27 | &ld($r0,&QWPw(0,$rp)); | ||
28 | |||
29 | $a=<<'EOF'; | ||
30 | ########################################################## | ||
31 | &set_label("loop"); | ||
32 | |||
33 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
34 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
35 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
36 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
37 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
38 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
39 | |||
40 | ($o0,$t0)=&NR(2); | ||
41 | &add($a0,$b0,$o0); | ||
42 | &cmpult($o0,$b0,$t0); | ||
43 | &add($o0,$cc,$o0); | ||
44 | &cmpult($o0,$cc,$cc); | ||
45 | &add($cc,$t0,$cc); &FR($t0); | ||
46 | |||
47 | ($t1,$o1)=&NR(2); | ||
48 | |||
49 | &add($a1,$b1,$o1); &FR($a1); | ||
50 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
51 | &add($o1,$cc,$o1); | ||
52 | &cmpult($o1,$cc,$cc); | ||
53 | &add($cc,$t1,$cc); &FR($t1); | ||
54 | |||
55 | ($t2,$o2)=&NR(2); | ||
56 | |||
57 | &add($a2,$b2,$o2); &FR($a2); | ||
58 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
59 | &add($o2,$cc,$o2); | ||
60 | &cmpult($o2,$cc,$cc); | ||
61 | &add($cc,$t2,$cc); &FR($t2); | ||
62 | |||
63 | ($t3,$o3)=&NR(2); | ||
64 | |||
65 | &add($a3,$b3,$o3); &FR($a3); | ||
66 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
67 | &add($o3,$cc,$o3); | ||
68 | &cmpult($o3,$cc,$cc); | ||
69 | &add($cc,$t3,$cc); &FR($t3); | ||
70 | |||
71 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
72 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
73 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
74 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
75 | |||
76 | &sub($count,4,$count); # count-=4 | ||
77 | &add($ap,4*$QWS,$ap); # count+=4 | ||
78 | &add($bp,4*$QWS,$bp); # count+=4 | ||
79 | &add($rp,4*$QWS,$rp); # count+=4 | ||
80 | |||
81 | &blt($count,&label("finish")); | ||
82 | &ld($a0,&QWPw(0,$ap)); | ||
83 | &ld($b0,&QWPw(0,$bp)); | ||
84 | &br(&label("loop")); | ||
85 | EOF | ||
86 | ################################################## | ||
87 | # Do the last 0..3 words | ||
88 | |||
89 | &set_label("last_loop"); | ||
90 | |||
91 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
92 | &mul($a0,$word,($l0)=&NR(1)); | ||
93 | &add($ap,$QWS,$ap); | ||
94 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
95 | &add($l0,$cc,$l0); | ||
96 | &add($rp,$QWS,$rp); | ||
97 | &sub($count,1,$count); | ||
98 | &cmpult($l0,$cc,$cc); | ||
99 | &st($l0,&QWPw(-1,$rp)); &FR($l0); | ||
100 | &add($h0,$cc,$cc); &FR($h0); | ||
101 | |||
102 | &bgt($count,&label("last_loop")); | ||
103 | &function_end_A($name); | ||
104 | |||
105 | ###################################################### | ||
106 | &set_label("finish"); | ||
107 | &add($count,4,$count); | ||
108 | &bgt($count,&label("last_loop")); | ||
109 | |||
110 | &set_label("end"); | ||
111 | &function_end($name); | ||
112 | |||
113 | &fin_pool; | ||
114 | } | ||
115 | |||
116 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_add.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_add.pl new file mode 100644 index 0000000000..e37f6315fb --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_add.pl | |||
@@ -0,0 +1,120 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &br(&label("finish")); | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0,$r0)=&NR(2); | ||
26 | &ld($a0,&QWPw(0,$ap)); | ||
27 | &ld($r0,&QWPw(0,$rp)); | ||
28 | |||
29 | $a=<<'EOF'; | ||
30 | ########################################################## | ||
31 | &set_label("loop"); | ||
32 | |||
33 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
34 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
35 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
36 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
37 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
38 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
39 | |||
40 | ($o0,$t0)=&NR(2); | ||
41 | &add($a0,$b0,$o0); | ||
42 | &cmpult($o0,$b0,$t0); | ||
43 | &add($o0,$cc,$o0); | ||
44 | &cmpult($o0,$cc,$cc); | ||
45 | &add($cc,$t0,$cc); &FR($t0); | ||
46 | |||
47 | ($t1,$o1)=&NR(2); | ||
48 | |||
49 | &add($a1,$b1,$o1); &FR($a1); | ||
50 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
51 | &add($o1,$cc,$o1); | ||
52 | &cmpult($o1,$cc,$cc); | ||
53 | &add($cc,$t1,$cc); &FR($t1); | ||
54 | |||
55 | ($t2,$o2)=&NR(2); | ||
56 | |||
57 | &add($a2,$b2,$o2); &FR($a2); | ||
58 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
59 | &add($o2,$cc,$o2); | ||
60 | &cmpult($o2,$cc,$cc); | ||
61 | &add($cc,$t2,$cc); &FR($t2); | ||
62 | |||
63 | ($t3,$o3)=&NR(2); | ||
64 | |||
65 | &add($a3,$b3,$o3); &FR($a3); | ||
66 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
67 | &add($o3,$cc,$o3); | ||
68 | &cmpult($o3,$cc,$cc); | ||
69 | &add($cc,$t3,$cc); &FR($t3); | ||
70 | |||
71 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
72 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
73 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
74 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
75 | |||
76 | &sub($count,4,$count); # count-=4 | ||
77 | &add($ap,4*$QWS,$ap); # count+=4 | ||
78 | &add($bp,4*$QWS,$bp); # count+=4 | ||
79 | &add($rp,4*$QWS,$rp); # count+=4 | ||
80 | |||
81 | &blt($count,&label("finish")); | ||
82 | &ld($a0,&QWPw(0,$ap)); | ||
83 | &ld($b0,&QWPw(0,$bp)); | ||
84 | &br(&label("loop")); | ||
85 | EOF | ||
86 | ################################################## | ||
87 | # Do the last 0..3 words | ||
88 | |||
89 | &set_label("last_loop"); | ||
90 | |||
91 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
92 | &ld(($r0)=&NR(1),&QWPw(0,$rp)); # get b | ||
93 | &mul($a0,$word,($l0)=&NR(1)); | ||
94 | &sub($count,1,$count); | ||
95 | &add($ap,$QWS,$ap); | ||
96 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
97 | &add($r0,$l0,$r0); | ||
98 | &add($rp,$QWS,$rp); | ||
99 | &cmpult($r0,$l0,($t0)=&NR(1)); &FR($l0); | ||
100 | &add($r0,$cc,$r0); | ||
101 | &add($h0,$t0,$h0); &FR($t0); | ||
102 | &cmpult($r0,$cc,$cc); | ||
103 | &st($r0,&QWPw(-1,$rp)); &FR($r0); | ||
104 | &add($h0,$cc,$cc); &FR($h0); | ||
105 | |||
106 | &bgt($count,&label("last_loop")); | ||
107 | &function_end_A($name); | ||
108 | |||
109 | ###################################################### | ||
110 | &set_label("finish"); | ||
111 | &add($count,4,$count); | ||
112 | &bgt($count,&label("last_loop")); | ||
113 | |||
114 | &set_label("end"); | ||
115 | &function_end($name); | ||
116 | |||
117 | &fin_pool; | ||
118 | } | ||
119 | |||
120 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c4.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c4.pl new file mode 100644 index 0000000000..5efd201281 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c4.pl | |||
@@ -0,0 +1,213 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$b,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | &mul($a,$b,($l1)=&NR(1)); | ||
10 | &muh($a,$b,($h1)=&NR(1)); | ||
11 | &add($c0,$l1,$c0); | ||
12 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
13 | &add($t1,$h1,$h1); &FR($t1); | ||
14 | &add($c1,$h1,$c1); | ||
15 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
16 | &add($c2,$t2,$c2); &FR($t2); | ||
17 | } | ||
18 | |||
19 | sub bn_mul_comba4 | ||
20 | { | ||
21 | local($name)=@_; | ||
22 | local(@a,@b,$r,$c0,$c1,$c2); | ||
23 | |||
24 | $cnt=1; | ||
25 | &init_pool(3); | ||
26 | |||
27 | $rp=&wparam(0); | ||
28 | $ap=&wparam(1); | ||
29 | $bp=&wparam(2); | ||
30 | |||
31 | &function_begin($name,""); | ||
32 | |||
33 | &comment(""); | ||
34 | |||
35 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
36 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
37 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
38 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
39 | &mul($a[0],$b[0],($r00)=&NR(1)); | ||
40 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
41 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
42 | &muh($a[0],$b[0],($r01)=&NR(1)); | ||
43 | &FR($ap); &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
44 | &FR($bp); &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
45 | &mul($a[0],$b[1],($r02)=&NR(1)); | ||
46 | |||
47 | ($R,$H1,$H2)=&NR(3); | ||
48 | |||
49 | &st($r00,&QWPw(0,$rp)); &FR($r00); | ||
50 | |||
51 | &mov("zero",$R); | ||
52 | &mul($a[1],$b[0],($r03)=&NR(1)); | ||
53 | |||
54 | &mov("zero",$H1); | ||
55 | &mov("zero",$H0); | ||
56 | &add($R,$r01,$R); | ||
57 | &muh($a[0],$b[1],($r04)=&NR(1)); | ||
58 | &cmpult($R,$r01,($t01)=&NR(1)); &FR($r01); | ||
59 | &add($R,$r02,$R); | ||
60 | &add($H1,$t01,$H1) &FR($t01); | ||
61 | &muh($a[1],$b[0],($r05)=&NR(1)); | ||
62 | &cmpult($R,$r02,($t02)=&NR(1)); &FR($r02); | ||
63 | &add($R,$r03,$R); | ||
64 | &add($H2,$t02,$H2) &FR($t02); | ||
65 | &mul($a[0],$b[2],($r06)=&NR(1)); | ||
66 | &cmpult($R,$r03,($t03)=&NR(1)); &FR($r03); | ||
67 | &add($H1,$t03,$H1) &FR($t03); | ||
68 | &st($R,&QWPw(1,$rp)); | ||
69 | &add($H1,$H2,$R); | ||
70 | |||
71 | &mov("zero",$H1); | ||
72 | &add($R,$r04,$R); | ||
73 | &mov("zero",$H2); | ||
74 | &mul($a[1],$b[1],($r07)=&NR(1)); | ||
75 | &cmpult($R,$r04,($t04)=&NR(1)); &FR($r04); | ||
76 | &add($R,$r05,$R); | ||
77 | &add($H1,$t04,$H1) &FR($t04); | ||
78 | &mul($a[2],$b[0],($r08)=&NR(1)); | ||
79 | &cmpult($R,$r05,($t05)=&NR(1)); &FR($r05); | ||
80 | &add($R,$r01,$R); | ||
81 | &add($H2,$t05,$H2) &FR($t05); | ||
82 | &muh($a[0],$b[2],($r09)=&NR(1)); | ||
83 | &cmpult($R,$r06,($t06)=&NR(1)); &FR($r06); | ||
84 | &add($R,$r07,$R); | ||
85 | &add($H1,$t06,$H1) &FR($t06); | ||
86 | &muh($a[1],$b[1],($r10)=&NR(1)); | ||
87 | &cmpult($R,$r07,($t07)=&NR(1)); &FR($r07); | ||
88 | &add($R,$r08,$R); | ||
89 | &add($H2,$t07,$H2) &FR($t07); | ||
90 | &muh($a[2],$b[0],($r11)=&NR(1)); | ||
91 | &cmpult($R,$r08,($t08)=&NR(1)); &FR($r08); | ||
92 | &add($H1,$t08,$H1) &FR($t08); | ||
93 | &st($R,&QWPw(2,$rp)); | ||
94 | &add($H1,$H2,$R); | ||
95 | |||
96 | &mov("zero",$H1); | ||
97 | &add($R,$r09,$R); | ||
98 | &mov("zero",$H2); | ||
99 | &mul($a[0],$b[3],($r12)=&NR(1)); | ||
100 | &cmpult($R,$r09,($t09)=&NR(1)); &FR($r09); | ||
101 | &add($R,$r10,$R); | ||
102 | &add($H1,$t09,$H1) &FR($t09); | ||
103 | &mul($a[1],$b[2],($r13)=&NR(1)); | ||
104 | &cmpult($R,$r10,($t10)=&NR(1)); &FR($r10); | ||
105 | &add($R,$r11,$R); | ||
106 | &add($H1,$t10,$H1) &FR($t10); | ||
107 | &mul($a[2],$b[1],($r14)=&NR(1)); | ||
108 | &cmpult($R,$r11,($t11)=&NR(1)); &FR($r11); | ||
109 | &add($R,$r12,$R); | ||
110 | &add($H1,$t11,$H1) &FR($t11); | ||
111 | &mul($a[3],$b[0],($r15)=&NR(1)); | ||
112 | &cmpult($R,$r12,($t12)=&NR(1)); &FR($r12); | ||
113 | &add($R,$r13,$R); | ||
114 | &add($H1,$t12,$H1) &FR($t12); | ||
115 | &muh($a[0],$b[3],($r16)=&NR(1)); | ||
116 | &cmpult($R,$r13,($t13)=&NR(1)); &FR($r13); | ||
117 | &add($R,$r14,$R); | ||
118 | &add($H1,$t13,$H1) &FR($t13); | ||
119 | &muh($a[1],$b[2],($r17)=&NR(1)); | ||
120 | &cmpult($R,$r14,($t14)=&NR(1)); &FR($r14); | ||
121 | &add($R,$r15,$R); | ||
122 | &add($H1,$t14,$H1) &FR($t14); | ||
123 | &muh($a[2],$b[1],($r18)=&NR(1)); | ||
124 | &cmpult($R,$r15,($t15)=&NR(1)); &FR($r15); | ||
125 | &add($H1,$t15,$H1) &FR($t15); | ||
126 | &st($R,&QWPw(3,$rp)); | ||
127 | &add($H1,$H2,$R); | ||
128 | |||
129 | &mov("zero",$H1); | ||
130 | &add($R,$r16,$R); | ||
131 | &mov("zero",$H2); | ||
132 | &muh($a[3],$b[0],($r19)=&NR(1)); | ||
133 | &cmpult($R,$r16,($t16)=&NR(1)); &FR($r16); | ||
134 | &add($R,$r17,$R); | ||
135 | &add($H1,$t16,$H1) &FR($t16); | ||
136 | &mul($a[1],$b[3],($r20)=&NR(1)); | ||
137 | &cmpult($R,$r17,($t17)=&NR(1)); &FR($r17); | ||
138 | &add($R,$r18,$R); | ||
139 | &add($H1,$t17,$H1) &FR($t17); | ||
140 | &mul($a[2],$b[2],($r21)=&NR(1)); | ||
141 | &cmpult($R,$r18,($t18)=&NR(1)); &FR($r18); | ||
142 | &add($R,$r19,$R); | ||
143 | &add($H1,$t18,$H1) &FR($t18); | ||
144 | &mul($a[3],$b[1],($r22)=&NR(1)); | ||
145 | &cmpult($R,$r19,($t19)=&NR(1)); &FR($r19); | ||
146 | &add($R,$r20,$R); | ||
147 | &add($H1,$t19,$H1) &FR($t19); | ||
148 | &muh($a[1],$b[3],($r23)=&NR(1)); | ||
149 | &cmpult($R,$r20,($t20)=&NR(1)); &FR($r20); | ||
150 | &add($R,$r21,$R); | ||
151 | &add($H1,$t20,$H1) &FR($t20); | ||
152 | &muh($a[2],$b[2],($r24)=&NR(1)); | ||
153 | &cmpult($R,$r21,($t21)=&NR(1)); &FR($r21); | ||
154 | &add($R,$r22,$R); | ||
155 | &add($H1,$t21,$H1) &FR($t21); | ||
156 | &muh($a[3],$b[1],($r25)=&NR(1)); | ||
157 | &cmpult($R,$r22,($t22)=&NR(1)); &FR($r22); | ||
158 | &add($H1,$t22,$H1) &FR($t22); | ||
159 | &st($R,&QWPw(4,$rp)); | ||
160 | &add($H1,$H2,$R); | ||
161 | |||
162 | &mov("zero",$H1); | ||
163 | &add($R,$r23,$R); | ||
164 | &mov("zero",$H2); | ||
165 | &mul($a[2],$b[3],($r26)=&NR(1)); | ||
166 | &cmpult($R,$r23,($t23)=&NR(1)); &FR($r23); | ||
167 | &add($R,$r24,$R); | ||
168 | &add($H1,$t23,$H1) &FR($t23); | ||
169 | &mul($a[3],$b[2],($r27)=&NR(1)); | ||
170 | &cmpult($R,$r24,($t24)=&NR(1)); &FR($r24); | ||
171 | &add($R,$r25,$R); | ||
172 | &add($H1,$t24,$H1) &FR($t24); | ||
173 | &muh($a[2],$b[3],($r28)=&NR(1)); | ||
174 | &cmpult($R,$r25,($t25)=&NR(1)); &FR($r25); | ||
175 | &add($R,$r26,$R); | ||
176 | &add($H1,$t25,$H1) &FR($t25); | ||
177 | &muh($a[3],$b[2],($r29)=&NR(1)); | ||
178 | &cmpult($R,$r26,($t26)=&NR(1)); &FR($r26); | ||
179 | &add($R,$r27,$R); | ||
180 | &add($H1,$t26,$H1) &FR($t26); | ||
181 | &mul($a[3],$b[3],($r30)=&NR(1)); | ||
182 | &cmpult($R,$r27,($t27)=&NR(1)); &FR($r27); | ||
183 | &add($H1,$t27,$H1) &FR($t27); | ||
184 | &st($R,&QWPw(5,$rp)); | ||
185 | &add($H1,$H2,$R); | ||
186 | |||
187 | &mov("zero",$H1); | ||
188 | &add($R,$r28,$R); | ||
189 | &mov("zero",$H2); | ||
190 | &muh($a[3],$b[3],($r31)=&NR(1)); | ||
191 | &cmpult($R,$r28,($t28)=&NR(1)); &FR($r28); | ||
192 | &add($R,$r29,$R); | ||
193 | &add($H1,$t28,$H1) &FR($t28); | ||
194 | ############ | ||
195 | &cmpult($R,$r29,($t29)=&NR(1)); &FR($r29); | ||
196 | &add($R,$r30,$R); | ||
197 | &add($H1,$t29,$H1) &FR($t29); | ||
198 | ############ | ||
199 | &cmpult($R,$r30,($t30)=&NR(1)); &FR($r30); | ||
200 | &add($H1,$t30,$H1) &FR($t30); | ||
201 | &st($R,&QWPw(6,$rp)); | ||
202 | &add($H1,$H2,$R); | ||
203 | |||
204 | &add($R,$r31,$R); &FR($r31); | ||
205 | &st($R,&QWPw(7,$rp)); | ||
206 | |||
207 | &FR($R,$H1,$H2); | ||
208 | &function_end($name); | ||
209 | |||
210 | &fin_pool; | ||
211 | } | ||
212 | |||
213 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c4.works.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c4.works.pl new file mode 100644 index 0000000000..79d86dd25c --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c4.works.pl | |||
@@ -0,0 +1,98 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$b,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | print STDERR "count=$cnt\n"; $cnt++; | ||
10 | &mul($a,$b,($l1)=&NR(1)); | ||
11 | &muh($a,$b,($h1)=&NR(1)); | ||
12 | &add($c0,$l1,$c0); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &add($t1,$h1,$h1); &FR($t1); | ||
15 | &add($c1,$h1,$c1); | ||
16 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
17 | &add($c2,$t2,$c2); &FR($t2); | ||
18 | } | ||
19 | |||
20 | sub bn_mul_comba4 | ||
21 | { | ||
22 | local($name)=@_; | ||
23 | local(@a,@b,$r,$c0,$c1,$c2); | ||
24 | |||
25 | $cnt=1; | ||
26 | &init_pool(3); | ||
27 | |||
28 | $rp=&wparam(0); | ||
29 | $ap=&wparam(1); | ||
30 | $bp=&wparam(2); | ||
31 | |||
32 | &function_begin($name,""); | ||
33 | |||
34 | &comment(""); | ||
35 | |||
36 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
37 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
38 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
39 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
40 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
41 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
42 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
43 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); &FR($bp); | ||
44 | |||
45 | ($c0,$c1,$c2)=&NR(3); | ||
46 | &mov("zero",$c2); | ||
47 | &mul($a[0],$b[0],$c0); | ||
48 | &muh($a[0],$b[0],$c1); | ||
49 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
50 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
51 | &mov("zero",$c2); | ||
52 | |||
53 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
54 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
55 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
56 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
57 | &mov("zero",$c2); | ||
58 | |||
59 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
60 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
61 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
62 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
63 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
64 | &mov("zero",$c2); | ||
65 | |||
66 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); &FR($a[0]); | ||
67 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
68 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
69 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
70 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
71 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
72 | &mov("zero",$c2); | ||
73 | |||
74 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); &FR($a[1]); | ||
75 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
76 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
77 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
78 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
79 | &mov("zero",$c2); | ||
80 | |||
81 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); &FR($a[2]); | ||
82 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
83 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
84 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
85 | &mov("zero",$c2); | ||
86 | |||
87 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); &FR($a[3],$b[3]); | ||
88 | &st($c0,&QWPw(6,$rp)); | ||
89 | &st($c1,&QWPw(7,$rp)); | ||
90 | |||
91 | &FR($c0,$c1,$c2); | ||
92 | |||
93 | &function_end($name); | ||
94 | |||
95 | &fin_pool; | ||
96 | } | ||
97 | |||
98 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c8.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c8.pl new file mode 100644 index 0000000000..525ca7494b --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/mul_c8.pl | |||
@@ -0,0 +1,177 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(3); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | |||
20 | &stack_push(2); | ||
21 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
22 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
23 | &st($reg_s0,&swtmp(0)); &FR($reg_s0); | ||
24 | &st($reg_s1,&swtmp(1)); &FR($reg_s1); | ||
25 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
26 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
27 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
28 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
29 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
30 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
31 | &ld(($a[4])=&NR(1),&QWPw(1,$ap)); | ||
32 | &ld(($b[4])=&NR(1),&QWPw(1,$bp)); | ||
33 | &ld(($a[5])=&NR(1),&QWPw(1,$ap)); | ||
34 | &ld(($b[5])=&NR(1),&QWPw(1,$bp)); | ||
35 | &ld(($a[6])=&NR(1),&QWPw(1,$ap)); | ||
36 | &ld(($b[6])=&NR(1),&QWPw(1,$bp)); | ||
37 | &ld(($a[7])=&NR(1),&QWPw(1,$ap)); &FR($ap); | ||
38 | &ld(($b[7])=&NR(1),&QWPw(1,$bp)); &FR($bp); | ||
39 | |||
40 | ($c0,$c1,$c2)=&NR(3); | ||
41 | &mov("zero",$c2); | ||
42 | &mul($a[0],$b[0],$c0); | ||
43 | &muh($a[0],$b[0],$c1); | ||
44 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR(1); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
49 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR(1); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
55 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
56 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR(1); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); | ||
62 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
63 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
64 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); | ||
65 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR(1); | ||
66 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
67 | &mov("zero",$c2); | ||
68 | |||
69 | &mul_add_c($a[0],$b[4],$c0,$c1,$c2); | ||
70 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); | ||
71 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
72 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); | ||
73 | &mul_add_c($a[4],$b[0],$c0,$c1,$c2); | ||
74 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR(1); | ||
75 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
76 | &mov("zero",$c2); | ||
77 | |||
78 | &mul_add_c($a[0],$b[5],$c0,$c1,$c2); | ||
79 | &mul_add_c($a[1],$b[4],$c0,$c1,$c2); | ||
80 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); | ||
81 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); | ||
82 | &mul_add_c($a[4],$b[1],$c0,$c1,$c2); | ||
83 | &mul_add_c($a[5],$b[0],$c0,$c1,$c2); | ||
84 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR(1); | ||
85 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
86 | &mov("zero",$c2); | ||
87 | |||
88 | &mul_add_c($a[0],$b[6],$c0,$c1,$c2); | ||
89 | &mul_add_c($a[1],$b[5],$c0,$c1,$c2); | ||
90 | &mul_add_c($a[2],$b[4],$c0,$c1,$c2); | ||
91 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); | ||
92 | &mul_add_c($a[4],$b[2],$c0,$c1,$c2); | ||
93 | &mul_add_c($a[5],$b[1],$c0,$c1,$c2); | ||
94 | &mul_add_c($a[6],$b[0],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(6,$rp)); &FR($c0); ($c0)=&NR(1); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &mul_add_c($a[0],$b[7],$c0,$c1,$c2); &FR($a[0]); | ||
100 | &mul_add_c($a[1],$b[6],$c0,$c1,$c2); | ||
101 | &mul_add_c($a[2],$b[5],$c0,$c1,$c2); | ||
102 | &mul_add_c($a[3],$b[4],$c0,$c1,$c2); | ||
103 | &mul_add_c($a[4],$b[3],$c0,$c1,$c2); | ||
104 | &mul_add_c($a[5],$b[2],$c0,$c1,$c2); | ||
105 | &mul_add_c($a[6],$b[1],$c0,$c1,$c2); | ||
106 | &mul_add_c($a[7],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
107 | &st($c0,&QWPw(7,$rp)); &FR($c0); ($c0)=&NR(1); | ||
108 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
109 | &mov("zero",$c2); | ||
110 | |||
111 | &mul_add_c($a[1],$b[7],$c0,$c1,$c2); &FR($a[1]); | ||
112 | &mul_add_c($a[2],$b[6],$c0,$c1,$c2); | ||
113 | &mul_add_c($a[3],$b[5],$c0,$c1,$c2); | ||
114 | &mul_add_c($a[4],$b[4],$c0,$c1,$c2); | ||
115 | &mul_add_c($a[5],$b[3],$c0,$c1,$c2); | ||
116 | &mul_add_c($a[6],$b[2],$c0,$c1,$c2); | ||
117 | &mul_add_c($a[7],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
118 | &st($c0,&QWPw(8,$rp)); &FR($c0); ($c0)=&NR(1); | ||
119 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
120 | &mov("zero",$c2); | ||
121 | |||
122 | &mul_add_c($a[2],$b[7],$c0,$c1,$c2); &FR($a[2]); | ||
123 | &mul_add_c($a[3],$b[6],$c0,$c1,$c2); | ||
124 | &mul_add_c($a[4],$b[5],$c0,$c1,$c2); | ||
125 | &mul_add_c($a[5],$b[4],$c0,$c1,$c2); | ||
126 | &mul_add_c($a[6],$b[3],$c0,$c1,$c2); | ||
127 | &mul_add_c($a[7],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
128 | &st($c0,&QWPw(9,$rp)); &FR($c0); ($c0)=&NR(1); | ||
129 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
130 | &mov("zero",$c2); | ||
131 | |||
132 | &mul_add_c($a[3],$b[7],$c0,$c1,$c2); &FR($a[3]); | ||
133 | &mul_add_c($a[4],$b[6],$c0,$c1,$c2); | ||
134 | &mul_add_c($a[5],$b[5],$c0,$c1,$c2); | ||
135 | &mul_add_c($a[6],$b[4],$c0,$c1,$c2); | ||
136 | &mul_add_c($a[7],$b[3],$c0,$c1,$c2); &FR($b[3]); | ||
137 | &st($c0,&QWPw(10,$rp)); &FR($c0); ($c0)=&NR(1); | ||
138 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
139 | &mov("zero",$c2); | ||
140 | |||
141 | &mul_add_c($a[4],$b[7],$c0,$c1,$c2); &FR($a[4]); | ||
142 | &mul_add_c($a[5],$b[6],$c0,$c1,$c2); | ||
143 | &mul_add_c($a[6],$b[5],$c0,$c1,$c2); | ||
144 | &mul_add_c($a[7],$b[4],$c0,$c1,$c2); &FR($b[4]); | ||
145 | &st($c0,&QWPw(11,$rp)); &FR($c0); ($c0)=&NR(1); | ||
146 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
147 | &mov("zero",$c2); | ||
148 | |||
149 | &mul_add_c($a[5],$b[7],$c0,$c1,$c2); &FR($a[5]); | ||
150 | &mul_add_c($a[6],$b[6],$c0,$c1,$c2); | ||
151 | &mul_add_c($a[7],$b[5],$c0,$c1,$c2); &FR($b[5]); | ||
152 | &st($c0,&QWPw(12,$rp)); &FR($c0); ($c0)=&NR(1); | ||
153 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
154 | &mov("zero",$c2); | ||
155 | |||
156 | &mul_add_c($a[6],$b[7],$c0,$c1,$c2); &FR($a[6]); | ||
157 | &mul_add_c($a[7],$b[6],$c0,$c1,$c2); &FR($b[6]); | ||
158 | &st($c0,&QWPw(13,$rp)); &FR($c0); ($c0)=&NR(1); | ||
159 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
160 | &mov("zero",$c2); | ||
161 | |||
162 | &mul_add_c($a[7],$b[7],$c0,$c1,$c2); &FR($a[7],$b[7]); | ||
163 | &st($c0,&QWPw(14,$rp)); | ||
164 | &st($c1,&QWPw(15,$rp)); | ||
165 | |||
166 | &FR($c0,$c1,$c2); | ||
167 | |||
168 | &ld($reg_s0,&swtmp(0)); | ||
169 | &ld($reg_s1,&swtmp(1)); | ||
170 | &stack_pop(2); | ||
171 | |||
172 | &function_end($name); | ||
173 | |||
174 | &fin_pool; | ||
175 | } | ||
176 | |||
177 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr.pl new file mode 100644 index 0000000000..a55b696906 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr.pl | |||
@@ -0,0 +1,113 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(3); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | &sub($count,4,$count); | ||
20 | &mov("zero",$cc); | ||
21 | &br(&label("finish")); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$r0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($r0,&QWPw(0,$rp)); | ||
27 | |||
28 | $a=<<'EOF'; | ||
29 | ########################################################## | ||
30 | &set_label("loop"); | ||
31 | |||
32 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
33 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
34 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
35 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
36 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
37 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
38 | |||
39 | ($o0,$t0)=&NR(2); | ||
40 | &add($a0,$b0,$o0); | ||
41 | &cmpult($o0,$b0,$t0); | ||
42 | &add($o0,$cc,$o0); | ||
43 | &cmpult($o0,$cc,$cc); | ||
44 | &add($cc,$t0,$cc); &FR($t0); | ||
45 | |||
46 | ($t1,$o1)=&NR(2); | ||
47 | |||
48 | &add($a1,$b1,$o1); &FR($a1); | ||
49 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
50 | &add($o1,$cc,$o1); | ||
51 | &cmpult($o1,$cc,$cc); | ||
52 | &add($cc,$t1,$cc); &FR($t1); | ||
53 | |||
54 | ($t2,$o2)=&NR(2); | ||
55 | |||
56 | &add($a2,$b2,$o2); &FR($a2); | ||
57 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
58 | &add($o2,$cc,$o2); | ||
59 | &cmpult($o2,$cc,$cc); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &add($a3,$b3,$o3); &FR($a3); | ||
65 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
66 | &add($o3,$cc,$o3); | ||
67 | &cmpult($o3,$cc,$cc); | ||
68 | &add($cc,$t3,$cc); &FR($t3); | ||
69 | |||
70 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
71 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
72 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
73 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
74 | |||
75 | &sub($count,4,$count); # count-=4 | ||
76 | &add($ap,4*$QWS,$ap); # count+=4 | ||
77 | &add($bp,4*$QWS,$bp); # count+=4 | ||
78 | &add($rp,4*$QWS,$rp); # count+=4 | ||
79 | |||
80 | &blt($count,&label("finish")); | ||
81 | &ld($a0,&QWPw(0,$ap)); | ||
82 | &ld($b0,&QWPw(0,$bp)); | ||
83 | &br(&label("loop")); | ||
84 | EOF | ||
85 | ################################################## | ||
86 | # Do the last 0..3 words | ||
87 | |||
88 | &set_label("last_loop"); | ||
89 | |||
90 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
91 | &mul($a0,$a0,($l0)=&NR(1)); | ||
92 | &add($ap,$QWS,$ap); | ||
93 | &add($rp,2*$QWS,$rp); | ||
94 | &sub($count,1,$count); | ||
95 | &muh($a0,$a0,($h0)=&NR(1)); &FR($a0); | ||
96 | &st($l0,&QWPw(-2,$rp)); &FR($l0); | ||
97 | &st($h0,&QWPw(-1,$rp)); &FR($h0); | ||
98 | |||
99 | &bgt($count,&label("last_loop")); | ||
100 | &function_end_A($name); | ||
101 | |||
102 | ###################################################### | ||
103 | &set_label("finish"); | ||
104 | &add($count,4,$count); | ||
105 | &bgt($count,&label("last_loop")); | ||
106 | |||
107 | &set_label("end"); | ||
108 | &function_end($name); | ||
109 | |||
110 | &fin_pool; | ||
111 | } | ||
112 | |||
113 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr_c4.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr_c4.pl new file mode 100644 index 0000000000..bf33f5b503 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr_c4.pl | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub sqr_add_c | ||
5 | { | ||
6 | local($a,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | &mul($a,$a,($l1)=&NR(1)); | ||
10 | &muh($a,$a,($h1)=&NR(1)); | ||
11 | &add($c0,$l1,$c0); | ||
12 | &add($c1,$h1,$c1); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
15 | &add($c1,$t1,$c1); &FR($t1); | ||
16 | &add($c2,$t2,$c2); &FR($t2); | ||
17 | } | ||
18 | |||
19 | sub sqr_add_c2 | ||
20 | { | ||
21 | local($a,$b,$c0,$c1,$c2)=@_; | ||
22 | local($l1,$h1,$t1,$t2); | ||
23 | |||
24 | &mul($a,$b,($l1)=&NR(1)); | ||
25 | &muh($a,$b,($h1)=&NR(1)); | ||
26 | &cmplt($l1,"zero",($lc1)=&NR(1)); | ||
27 | &cmplt($h1,"zero",($hc1)=&NR(1)); | ||
28 | &add($l1,$l1,$l1); | ||
29 | &add($h1,$h1,$h1); | ||
30 | &add($h1,$lc1,$h1); &FR($lc1); | ||
31 | &add($c2,$hc1,$c2); &FR($hc1); | ||
32 | |||
33 | &add($c0,$l1,$c0); | ||
34 | &add($c1,$h1,$c1); | ||
35 | &cmpult($c0,$l1,($lc1)=&NR(1)); &FR($l1); | ||
36 | &cmpult($c1,$h1,($hc1)=&NR(1)); &FR($h1); | ||
37 | |||
38 | &add($c1,$lc1,$c1); &FR($lc1); | ||
39 | &add($c2,$hc1,$c2); &FR($hc1); | ||
40 | } | ||
41 | |||
42 | |||
43 | sub bn_sqr_comba4 | ||
44 | { | ||
45 | local($name)=@_; | ||
46 | local(@a,@b,$r,$c0,$c1,$c2); | ||
47 | |||
48 | $cnt=1; | ||
49 | &init_pool(2); | ||
50 | |||
51 | $rp=&wparam(0); | ||
52 | $ap=&wparam(1); | ||
53 | |||
54 | &function_begin($name,""); | ||
55 | |||
56 | &comment(""); | ||
57 | |||
58 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
59 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
60 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
61 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
62 | |||
63 | ($c0,$c1,$c2)=&NR(3); | ||
64 | |||
65 | &mov("zero",$c2); | ||
66 | &mul($a[0],$a[0],$c0); | ||
67 | &muh($a[0],$a[0],$c1); | ||
68 | &st($c0,&QWPw(0,$rp)); | ||
69 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
70 | &mov("zero",$c2); | ||
71 | |||
72 | &sqr_add_c2($a[0],$a[1],$c0,$c1,$c2); | ||
73 | &st($c0,&QWPw(1,$rp)); | ||
74 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
75 | &mov("zero",$c2); | ||
76 | |||
77 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
79 | &st($c0,&QWPw(2,$rp)); | ||
80 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
81 | &mov("zero",$c2); | ||
82 | |||
83 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
84 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
85 | &st($c0,&QWPw(3,$rp)); | ||
86 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
87 | &mov("zero",$c2); | ||
88 | |||
89 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
90 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
91 | &st($c0,&QWPw(4,$rp)); | ||
92 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
93 | &mov("zero",$c2); | ||
94 | |||
95 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
96 | &st($c0,&QWPw(5,$rp)); | ||
97 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
98 | &mov("zero",$c2); | ||
99 | |||
100 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
101 | &st($c0,&QWPw(6,$rp)); | ||
102 | &st($c1,&QWPw(7,$rp)); | ||
103 | |||
104 | &function_end($name); | ||
105 | |||
106 | &fin_pool; | ||
107 | } | ||
108 | |||
109 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr_c8.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr_c8.pl new file mode 100644 index 0000000000..b4afe085f1 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sqr_c8.pl | |||
@@ -0,0 +1,132 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(2); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | |||
15 | &function_begin($name,""); | ||
16 | |||
17 | &comment(""); | ||
18 | |||
19 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
20 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
21 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
22 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
23 | &ld(($a[4])=&NR(1),&QWPw(4,$ap)); | ||
24 | &ld(($a[5])=&NR(1),&QWPw(5,$ap)); | ||
25 | &ld(($a[6])=&NR(1),&QWPw(6,$ap)); | ||
26 | &ld(($a[7])=&NR(1),&QWPw(7,$ap)); &FR($ap); | ||
27 | |||
28 | ($c0,$c1,$c2)=&NR(3); | ||
29 | |||
30 | &mov("zero",$c2); | ||
31 | &mul($a[0],$a[0],$c0); | ||
32 | &muh($a[0],$a[0],$c1); | ||
33 | &st($c0,&QWPw(0,$rp)); | ||
34 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
35 | &mov("zero",$c2); | ||
36 | |||
37 | &sqr_add_c2($a[1],$a[0],$c0,$c1,$c2); | ||
38 | &st($c0,&QWPw(1,$rp)); | ||
39 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
40 | &mov("zero",$c2); | ||
41 | |||
42 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
43 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
44 | &st($c0,&QWPw(2,$rp)); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
49 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(3,$rp)); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
55 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
56 | &sqr_add_c2($a[4],$a[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(4,$rp)); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
62 | &sqr_add_c2($a[4],$a[1],$c0,$c1,$c2); | ||
63 | &sqr_add_c2($a[5],$a[0],$c0,$c1,$c2); | ||
64 | &st($c0,&QWPw(5,$rp)); | ||
65 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
66 | &mov("zero",$c2); | ||
67 | |||
68 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
69 | &sqr_add_c2($a[4],$a[2],$c0,$c1,$c2); | ||
70 | &sqr_add_c2($a[5],$a[1],$c0,$c1,$c2); | ||
71 | &sqr_add_c2($a[6],$a[0],$c0,$c1,$c2); | ||
72 | &st($c0,&QWPw(6,$rp)); | ||
73 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
74 | &mov("zero",$c2); | ||
75 | |||
76 | &sqr_add_c2($a[4],$a[3],$c0,$c1,$c2); | ||
77 | &sqr_add_c2($a[5],$a[2],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[6],$a[1],$c0,$c1,$c2); | ||
79 | &sqr_add_c2($a[7],$a[0],$c0,$c1,$c2); | ||
80 | &st($c0,&QWPw(7,$rp)); | ||
81 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
82 | &mov("zero",$c2); | ||
83 | |||
84 | &sqr_add_c($a[4],$c0,$c1,$c2); | ||
85 | &sqr_add_c2($a[5],$a[3],$c0,$c1,$c2); | ||
86 | &sqr_add_c2($a[6],$a[2],$c0,$c1,$c2); | ||
87 | &sqr_add_c2($a[7],$a[1],$c0,$c1,$c2); | ||
88 | &st($c0,&QWPw(8,$rp)); | ||
89 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
90 | &mov("zero",$c2); | ||
91 | |||
92 | &sqr_add_c2($a[5],$a[4],$c0,$c1,$c2); | ||
93 | &sqr_add_c2($a[6],$a[3],$c0,$c1,$c2); | ||
94 | &sqr_add_c2($a[7],$a[2],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(9,$rp)); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &sqr_add_c($a[5],$c0,$c1,$c2); | ||
100 | &sqr_add_c2($a[6],$a[4],$c0,$c1,$c2); | ||
101 | &sqr_add_c2($a[7],$a[3],$c0,$c1,$c2); | ||
102 | &st($c0,&QWPw(10,$rp)); | ||
103 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
104 | &mov("zero",$c2); | ||
105 | |||
106 | &sqr_add_c2($a[6],$a[5],$c0,$c1,$c2); | ||
107 | &sqr_add_c2($a[7],$a[4],$c0,$c1,$c2); | ||
108 | &st($c0,&QWPw(11,$rp)); | ||
109 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
110 | &mov("zero",$c2); | ||
111 | |||
112 | &sqr_add_c($a[6],$c0,$c1,$c2); | ||
113 | &sqr_add_c2($a[7],$a[5],$c0,$c1,$c2); | ||
114 | &st($c0,&QWPw(12,$rp)); | ||
115 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
116 | &mov("zero",$c2); | ||
117 | |||
118 | &sqr_add_c2($a[7],$a[6],$c0,$c1,$c2); | ||
119 | &st($c0,&QWPw(13,$rp)); | ||
120 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
121 | &mov("zero",$c2); | ||
122 | |||
123 | &sqr_add_c($a[7],$c0,$c1,$c2); | ||
124 | &st($c0,&QWPw(14,$rp)); | ||
125 | &st($c1,&QWPw(15,$rp)); | ||
126 | |||
127 | &function_end($name); | ||
128 | |||
129 | &fin_pool; | ||
130 | } | ||
131 | |||
132 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha.works/sub.pl b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sub.pl new file mode 100644 index 0000000000..d998da5c21 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha.works/sub.pl | |||
@@ -0,0 +1,108 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sub_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$b0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($b0,&QWPw(0,$bp)); | ||
27 | |||
28 | ########################################################## | ||
29 | &set_label("loop"); | ||
30 | |||
31 | ($a1,$tmp,$b1,$a2,$b2,$a3,$b3,$o0)=&NR(8); | ||
32 | &ld($a1,&QWPw(1,$ap)); | ||
33 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
34 | &ld($b1,&QWPw(1,$bp)); | ||
35 | &sub($a0,$b0,$a0); # do the subtract | ||
36 | &ld($a2,&QWPw(2,$ap)); | ||
37 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
38 | &ld($b2,&QWPw(2,$bp)); | ||
39 | &sub($a0,$cc,$o0); # will we borrow? | ||
40 | &ld($a3,&QWPw(3,$ap)); | ||
41 | &add($b0,$tmp,$cc); ($t1,$o1)=&NR(2); &FR($tmp); | ||
42 | |||
43 | &cmpult($a1,$b1,$t1); # will we borrow? | ||
44 | &sub($a1,$b1,$a1); # do the subtract | ||
45 | &ld($b3,&QWPw(3,$bp)); | ||
46 | &cmpult($a1,$cc,$b1); # will we borrow? | ||
47 | &sub($a1,$cc,$o1); # will we borrow? | ||
48 | &add($b1,$t1,$cc); ($tmp,$o2)=&NR(2); &FR($t1,$a1,$b1); | ||
49 | |||
50 | &cmpult($a2,$b2,$tmp); # will we borrow? | ||
51 | &sub($a2,$b2,$a2); # do the subtract | ||
52 | &st($o0,&QWPw(0,$rp)); &FR($o0); # save | ||
53 | &cmpult($a2,$cc,$b2); # will we borrow? | ||
54 | &sub($a2,$cc,$o2); # will we borrow? | ||
55 | &add($b2,$tmp,$cc); ($t3,$o3)=&NR(2); &FR($tmp,$a2,$b2); | ||
56 | |||
57 | &cmpult($a3,$b3,$t3); # will we borrow? | ||
58 | &sub($a3,$b3,$a3); # do the subtract | ||
59 | &st($o1,&QWPw(1,$rp)); &FR($o1); | ||
60 | &cmpult($a3,$cc,$b3); # will we borrow? | ||
61 | &sub($a3,$cc,$o3); # will we borrow? | ||
62 | &add($b3,$t3,$cc); &FR($t3,$a3,$b3); | ||
63 | |||
64 | &st($o2,&QWPw(2,$rp)); &FR($o2); | ||
65 | &sub($count,4,$count); # count-=4 | ||
66 | &st($o3,&QWPw(3,$rp)); &FR($o3); | ||
67 | &add($ap,4*$QWS,$ap); # count+=4 | ||
68 | &add($bp,4*$QWS,$bp); # count+=4 | ||
69 | &add($rp,4*$QWS,$rp); # count+=4 | ||
70 | |||
71 | &blt($count,&label("finish")); | ||
72 | &ld($a0,&QWPw(0,$ap)); | ||
73 | &ld($b0,&QWPw(0,$bp)); | ||
74 | &br(&label("loop")); | ||
75 | ################################################## | ||
76 | # Do the last 0..3 words | ||
77 | |||
78 | &set_label("last_loop"); | ||
79 | |||
80 | &ld($a0,&QWPw(0,$ap)); # get a | ||
81 | &ld($b0,&QWPw(0,$bp)); # get b | ||
82 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
83 | &sub($a0,$b0,$a0); # do the subtract | ||
84 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
85 | &sub($a0,$cc,$a0); # will we borrow? | ||
86 | &st($a0,&QWPw(0,$rp)); # save | ||
87 | &add($b0,$tmp,$cc); # add the borrows | ||
88 | |||
89 | &add($ap,$QWS,$ap); | ||
90 | &add($bp,$QWS,$bp); | ||
91 | &add($rp,$QWS,$rp); | ||
92 | &sub($count,1,$count); | ||
93 | &bgt($count,&label("last_loop")); | ||
94 | &function_end_A($name); | ||
95 | |||
96 | ###################################################### | ||
97 | &set_label("finish"); | ||
98 | &add($count,4,$count); | ||
99 | &bgt($count,&label("last_loop")); | ||
100 | |||
101 | &FR($a0,$b0); | ||
102 | &set_label("end"); | ||
103 | &function_end($name); | ||
104 | |||
105 | &fin_pool; | ||
106 | } | ||
107 | |||
108 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/add.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/add.pl new file mode 100644 index 0000000000..13bf516428 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/add.pl | |||
@@ -0,0 +1,118 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$b0)=&NR(2); | ||
25 | |||
26 | ########################################################## | ||
27 | &set_label("loop"); | ||
28 | |||
29 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); | ||
30 | &ld(($b0)=&NR(1),&QWPw(0,$bp)); | ||
31 | &ld(($a1)=&NR(1),&QWPw(1,$ap)); | ||
32 | &ld(($b1)=&NR(1),&QWPw(1,$bp)); | ||
33 | |||
34 | ($o0,$t0)=&NR(2); | ||
35 | &add($a0,$b0,$o0); | ||
36 | &ld(($a2)=&NR(1),&QWPw(2,$ap)); | ||
37 | &cmpult($o0,$b0,$t0); | ||
38 | &add($o0,$cc,$o0); | ||
39 | &cmpult($o0,$cc,$cc); | ||
40 | &ld(($b2)=&NR(1),&QWPw(2,$bp)); | ||
41 | &add($cc,$t0,$cc); &FR($t0); | ||
42 | |||
43 | ($t1,$o1)=&NR(2); | ||
44 | |||
45 | &add($a1,$b1,$o1); &FR($a1); | ||
46 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
47 | &add($o1,$cc,$o1); | ||
48 | &cmpult($o1,$cc,$cc); | ||
49 | &ld(($a3)=&NR(1),&QWPw(3,$ap)); | ||
50 | &add($cc,$t1,$cc); &FR($t1); | ||
51 | |||
52 | ($t2,$o2)=&NR(2); | ||
53 | |||
54 | &add($a2,$b2,$o2); &FR($a2); | ||
55 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
56 | &add($o2,$cc,$o2); | ||
57 | &cmpult($o2,$cc,$cc); | ||
58 | &ld(($b3)=&NR(1),&QWPw(3,$bp)); | ||
59 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
65 | &add($a3,$b3,$o3); &FR($a3); | ||
66 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
67 | &add($o3,$cc,$o3); | ||
68 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
69 | &cmpult($o3,$cc,$cc); | ||
70 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
71 | &add($cc,$t3,$cc); &FR($t3); | ||
72 | |||
73 | |||
74 | &sub($count,4,$count); # count-=4 | ||
75 | &add($ap,4*$QWS,$ap); # count+=4 | ||
76 | &add($bp,4*$QWS,$bp); # count+=4 | ||
77 | &add($rp,4*$QWS,$rp); # count+=4 | ||
78 | |||
79 | ### | ||
80 | &bge($count,&label("loop")); | ||
81 | ### | ||
82 | &br(&label("finish")); | ||
83 | ################################################## | ||
84 | # Do the last 0..3 words | ||
85 | |||
86 | ($t0,$o0)=&NR(2); | ||
87 | &set_label("last_loop"); | ||
88 | |||
89 | &ld($a0,&QWPw(0,$ap)); # get a | ||
90 | &ld($b0,&QWPw(0,$bp)); # get b | ||
91 | &add($ap,$QWS,$ap); | ||
92 | &add($bp,$QWS,$bp); | ||
93 | &add($a0,$b0,$o0); | ||
94 | &sub($count,1,$count); | ||
95 | &cmpult($o0,$b0,$t0); # will we borrow? | ||
96 | &add($o0,$cc,$o0); # will we borrow? | ||
97 | &cmpult($o0,$cc,$cc); # will we borrow? | ||
98 | &add($rp,$QWS,$rp); | ||
99 | &st($o0,&QWPw(-1,$rp)); # save | ||
100 | &add($cc,$t0,$cc); # add the borrows | ||
101 | |||
102 | ### | ||
103 | &bgt($count,&label("last_loop")); | ||
104 | &function_end_A($name); | ||
105 | |||
106 | ###################################################### | ||
107 | &set_label("finish"); | ||
108 | &add($count,4,$count); | ||
109 | &bgt($count,&label("last_loop")); | ||
110 | |||
111 | &FR($o0,$t0,$a0,$b0); | ||
112 | &set_label("end"); | ||
113 | &function_end($name); | ||
114 | |||
115 | &fin_pool; | ||
116 | } | ||
117 | |||
118 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/div.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/div.pl new file mode 100644 index 0000000000..e9e680897a --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/div.pl | |||
@@ -0,0 +1,144 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | |||
3 | sub bn_div_words | ||
4 | { | ||
5 | local($data)=<<'EOF'; | ||
6 | # | ||
7 | # What follows was taken directly from the C compiler with a few | ||
8 | # hacks to redo the lables. | ||
9 | # | ||
10 | .text | ||
11 | .set noreorder | ||
12 | .set volatile | ||
13 | .align 3 | ||
14 | .globl bn_div_words | ||
15 | .ent bn_div_words | ||
16 | bn_div_words | ||
17 | ldgp $29,0($27) | ||
18 | bn_div_words.ng: | ||
19 | lda $30,-48($30) | ||
20 | .frame $30,48,$26,0 | ||
21 | stq $26,0($30) | ||
22 | stq $9,8($30) | ||
23 | stq $10,16($30) | ||
24 | stq $11,24($30) | ||
25 | stq $12,32($30) | ||
26 | stq $13,40($30) | ||
27 | .mask 0x4003e00,-48 | ||
28 | .prologue 1 | ||
29 | bis $16,$16,$9 | ||
30 | bis $17,$17,$10 | ||
31 | bis $18,$18,$11 | ||
32 | bis $31,$31,$13 | ||
33 | bis $31,2,$12 | ||
34 | bne $11,$9119 | ||
35 | lda $0,-1 | ||
36 | br $31,$9136 | ||
37 | .align 4 | ||
38 | $9119: | ||
39 | bis $11,$11,$16 | ||
40 | jsr $26,BN_num_bits_word | ||
41 | ldgp $29,0($26) | ||
42 | subq $0,64,$1 | ||
43 | beq $1,$9120 | ||
44 | bis $31,1,$1 | ||
45 | sll $1,$0,$1 | ||
46 | cmpule $9,$1,$1 | ||
47 | bne $1,$9120 | ||
48 | # lda $16,_IO_stderr_ | ||
49 | # lda $17,$C32 | ||
50 | # bis $0,$0,$18 | ||
51 | # jsr $26,fprintf | ||
52 | # ldgp $29,0($26) | ||
53 | jsr $26,abort | ||
54 | ldgp $29,0($26) | ||
55 | .align 4 | ||
56 | $9120: | ||
57 | bis $31,64,$3 | ||
58 | cmpult $9,$11,$2 | ||
59 | subq $3,$0,$1 | ||
60 | addl $1,$31,$0 | ||
61 | subq $9,$11,$1 | ||
62 | cmoveq $2,$1,$9 | ||
63 | beq $0,$9122 | ||
64 | zapnot $0,15,$2 | ||
65 | subq $3,$0,$1 | ||
66 | sll $11,$2,$11 | ||
67 | sll $9,$2,$3 | ||
68 | srl $10,$1,$1 | ||
69 | sll $10,$2,$10 | ||
70 | bis $3,$1,$9 | ||
71 | $9122: | ||
72 | srl $11,32,$5 | ||
73 | zapnot $11,15,$6 | ||
74 | lda $7,-1 | ||
75 | .align 5 | ||
76 | $9123: | ||
77 | srl $9,32,$1 | ||
78 | subq $1,$5,$1 | ||
79 | bne $1,$9126 | ||
80 | zapnot $7,15,$27 | ||
81 | br $31,$9127 | ||
82 | .align 4 | ||
83 | $9126: | ||
84 | bis $9,$9,$24 | ||
85 | bis $5,$5,$25 | ||
86 | divqu $24,$25,$27 | ||
87 | $9127: | ||
88 | srl $10,32,$4 | ||
89 | .align 5 | ||
90 | $9128: | ||
91 | mulq $27,$5,$1 | ||
92 | subq $9,$1,$3 | ||
93 | zapnot $3,240,$1 | ||
94 | bne $1,$9129 | ||
95 | mulq $6,$27,$2 | ||
96 | sll $3,32,$1 | ||
97 | addq $1,$4,$1 | ||
98 | cmpule $2,$1,$2 | ||
99 | bne $2,$9129 | ||
100 | subq $27,1,$27 | ||
101 | br $31,$9128 | ||
102 | .align 4 | ||
103 | $9129: | ||
104 | mulq $27,$6,$1 | ||
105 | mulq $27,$5,$4 | ||
106 | srl $1,32,$3 | ||
107 | sll $1,32,$1 | ||
108 | addq $4,$3,$4 | ||
109 | cmpult $10,$1,$2 | ||
110 | subq $10,$1,$10 | ||
111 | addq $2,$4,$2 | ||
112 | cmpult $9,$2,$1 | ||
113 | bis $2,$2,$4 | ||
114 | beq $1,$9134 | ||
115 | addq $9,$11,$9 | ||
116 | subq $27,1,$27 | ||
117 | $9134: | ||
118 | subl $12,1,$12 | ||
119 | subq $9,$4,$9 | ||
120 | beq $12,$9124 | ||
121 | sll $27,32,$13 | ||
122 | sll $9,32,$2 | ||
123 | srl $10,32,$1 | ||
124 | sll $10,32,$10 | ||
125 | bis $2,$1,$9 | ||
126 | br $31,$9123 | ||
127 | .align 4 | ||
128 | $9124: | ||
129 | bis $13,$27,$0 | ||
130 | $9136: | ||
131 | ldq $26,0($30) | ||
132 | ldq $9,8($30) | ||
133 | ldq $10,16($30) | ||
134 | ldq $11,24($30) | ||
135 | ldq $12,32($30) | ||
136 | ldq $13,40($30) | ||
137 | addq $30,48,$30 | ||
138 | ret $31,($26),1 | ||
139 | .end bn_div_words | ||
140 | EOF | ||
141 | &asm_add($data); | ||
142 | } | ||
143 | |||
144 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/mul.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/mul.pl new file mode 100644 index 0000000000..76c926566c --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/mul.pl | |||
@@ -0,0 +1,104 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | ### | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | ($a0)=&NR(1); &ld($a0,&QWPw(0,$ap)); | ||
26 | |||
27 | &set_label("loop"); | ||
28 | |||
29 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
30 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
31 | |||
32 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
33 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
34 | ### wait 8 | ||
35 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0); | ||
36 | ### wait 8 | ||
37 | &muh($a1,$word,($h1)=&NR(1)); &FR($a1); | ||
38 | &add($l0,$cc,$l0); ### wait 8 | ||
39 | &mul($a1,$word,($l1)=&NR(1)); &FR($a1); | ||
40 | &cmpult($l0,$cc,$cc); ### wait 8 | ||
41 | &muh($a2,$word,($h2)=&NR(1)); &FR($a2); | ||
42 | &add($h0,$cc,$cc); &FR($h0); ### wait 8 | ||
43 | &mul($a2,$word,($l2)=&NR(1)); &FR($a2); | ||
44 | &add($l1,$cc,$l1); ### wait 8 | ||
45 | &st($l0,&QWPw(0,$rp)); &FR($l0); | ||
46 | &cmpult($l1,$cc,$cc); ### wait 8 | ||
47 | &muh($a3,$word,($h3)=&NR(1)); &FR($a3); | ||
48 | &add($h1,$cc,$cc); &FR($h1); | ||
49 | &mul($a3,$word,($l3)=&NR(1)); &FR($a3); | ||
50 | &add($l2,$cc,$l2); | ||
51 | &st($l1,&QWPw(1,$rp)); &FR($l1); | ||
52 | &cmpult($l2,$cc,$cc); | ||
53 | &add($h2,$cc,$cc); &FR($h2); | ||
54 | &sub($count,4,$count); # count-=4 | ||
55 | &st($l2,&QWPw(2,$rp)); &FR($l2); | ||
56 | &add($l3,$cc,$l3); | ||
57 | &cmpult($l3,$cc,$cc); | ||
58 | &add($bp,4*$QWS,$bp); # count+=4 | ||
59 | &add($h3,$cc,$cc); &FR($h3); | ||
60 | &add($ap,4*$QWS,$ap); # count+=4 | ||
61 | &st($l3,&QWPw(3,$rp)); &FR($l3); | ||
62 | &add($rp,4*$QWS,$rp); # count+=4 | ||
63 | ### | ||
64 | &blt($count,&label("finish")); | ||
65 | ($a0)=&NR(1); &ld($a0,&QWPw(0,$ap)); | ||
66 | &br(&label("finish")); | ||
67 | ################################################## | ||
68 | |||
69 | ################################################## | ||
70 | # Do the last 0..3 words | ||
71 | |||
72 | &set_label("last_loop"); | ||
73 | |||
74 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
75 | ### | ||
76 | ### | ||
77 | ### | ||
78 | &muh($a0,$word,($h0)=&NR(1)); | ||
79 | ### Wait 8 for next mul issue | ||
80 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0) | ||
81 | &add($ap,$QWS,$ap); | ||
82 | ### Loose 12 until result is available | ||
83 | &add($rp,$QWS,$rp); | ||
84 | &sub($count,1,$count); | ||
85 | &add($l0,$cc,$l0); | ||
86 | ### | ||
87 | &st($l0,&QWPw(-1,$rp)); &FR($l0); | ||
88 | &cmpult($l0,$cc,$cc); | ||
89 | &add($h0,$cc,$cc); &FR($h0); | ||
90 | &bgt($count,&label("last_loop")); | ||
91 | &function_end_A($name); | ||
92 | |||
93 | ###################################################### | ||
94 | &set_label("finish"); | ||
95 | &add($count,4,$count); | ||
96 | &bgt($count,&label("last_loop")); | ||
97 | |||
98 | &set_label("end"); | ||
99 | &function_end($name); | ||
100 | |||
101 | &fin_pool; | ||
102 | } | ||
103 | |||
104 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/mul_add.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_add.pl new file mode 100644 index 0000000000..0d6df69bc4 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_add.pl | |||
@@ -0,0 +1,123 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | $word=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | ### | ||
23 | &blt($count,&label("finish")); | ||
24 | |||
25 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); | ||
26 | |||
27 | $a=<<'EOF'; | ||
28 | ########################################################## | ||
29 | &set_label("loop"); | ||
30 | |||
31 | &ld(($r0)=&NR(1),&QWPw(0,$rp)); | ||
32 | &ld(($a1)=&NR(1),&QWPw(1,$ap)); | ||
33 | &muh($a0,$word,($h0)=&NR(1)); | ||
34 | &ld(($r1)=&NR(1),&QWPw(1,$rp)); | ||
35 | &ld(($a2)=&NR(1),&QWPw(2,$ap)); | ||
36 | ### | ||
37 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0); | ||
38 | &ld(($r2)=&NR(1),&QWPw(2,$rp)); | ||
39 | &muh($a1,$word,($h1)=&NR(1)); | ||
40 | &ld(($a3)=&NR(1),&QWPw(3,$ap)); | ||
41 | &mul($a1,$word,($l1)=&NR(1)); &FR($a1); | ||
42 | &ld(($r3)=&NR(1),&QWPw(3,$rp)); | ||
43 | &add($r0,$l0,$r0); | ||
44 | &add($r1,$l1,$r1); | ||
45 | &cmpult($r0,$l0,($t0)=&NR(1)); &FR($l0); | ||
46 | &cmpult($r1,$l1,($t1)=&NR(1)); &FR($l1); | ||
47 | &muh($a2,$word,($h2)=&NR(1)); | ||
48 | &add($r0,$cc,$r0); | ||
49 | &add($h0,$t0,$h0); &FR($t0); | ||
50 | &cmpult($r0,$cc,$cc); | ||
51 | &add($h1,$t1,$h1); &FR($t1); | ||
52 | &add($h0,$cc,$cc); &FR($h0); | ||
53 | &mul($a2,$word,($l2)=&NR(1)); &FR($a2); | ||
54 | &add($r1,$cc,$r1); | ||
55 | &cmpult($r1,$cc,$cc); | ||
56 | &add($r2,$l2,$r2); | ||
57 | &add($h1,$cc,$cc); &FR($h1); | ||
58 | &cmpult($r2,$l2,($t2)=&NR(1)); &FR($l2); | ||
59 | &muh($a3,$word,($h3)=&NR(1)); | ||
60 | &add($r2,$cc,$r2); | ||
61 | &st($r0,&QWPw(0,$rp)); &FR($r0); | ||
62 | &add($h2,$t2,$h2); &FR($t2); | ||
63 | &st($r1,&QWPw(1,$rp)); &FR($r1); | ||
64 | &cmpult($r2,$cc,$cc); | ||
65 | &mul($a3,$word,($l3)=&NR(1)); &FR($a3); | ||
66 | &add($h2,$cc,$cc); &FR($h2); | ||
67 | &st($r2,&QWPw(2,$rp)); &FR($r2); | ||
68 | &sub($count,4,$count); # count-=4 | ||
69 | &add($rp,4*$QWS,$rp); # count+=4 | ||
70 | &add($r3,$l3,$r3); | ||
71 | &add($ap,4*$QWS,$ap); # count+=4 | ||
72 | &cmpult($r3,$l3,($t3)=&NR(1)); &FR($l3); | ||
73 | &add($r3,$cc,$r3); | ||
74 | &add($h3,$t3,$h3); &FR($t3); | ||
75 | &cmpult($r3,$cc,$cc); | ||
76 | &st($r3,&QWPw(-1,$rp)); &FR($r3); | ||
77 | &add($h3,$cc,$cc); &FR($h3); | ||
78 | |||
79 | ### | ||
80 | &blt($count,&label("finish")); | ||
81 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); | ||
82 | &br(&label("loop")); | ||
83 | EOF | ||
84 | ################################################## | ||
85 | # Do the last 0..3 words | ||
86 | |||
87 | &set_label("last_loop"); | ||
88 | |||
89 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
90 | &ld(($r0)=&NR(1),&QWPw(0,$rp)); # get b | ||
91 | ### | ||
92 | ### | ||
93 | &muh($a0,$word,($h0)=&NR(1)); &FR($a0); | ||
94 | ### wait 8 | ||
95 | &mul($a0,$word,($l0)=&NR(1)); &FR($a0); | ||
96 | &add($rp,$QWS,$rp); | ||
97 | &add($ap,$QWS,$ap); | ||
98 | &sub($count,1,$count); | ||
99 | ### wait 3 until l0 is available | ||
100 | &add($r0,$l0,$r0); | ||
101 | ### | ||
102 | &cmpult($r0,$l0,($t0)=&NR(1)); &FR($l0); | ||
103 | &add($r0,$cc,$r0); | ||
104 | &add($h0,$t0,$h0); &FR($t0); | ||
105 | &cmpult($r0,$cc,$cc); | ||
106 | &add($h0,$cc,$cc); &FR($h0); | ||
107 | |||
108 | &st($r0,&QWPw(-1,$rp)); &FR($r0); | ||
109 | &bgt($count,&label("last_loop")); | ||
110 | &function_end_A($name); | ||
111 | |||
112 | ###################################################### | ||
113 | &set_label("finish"); | ||
114 | &add($count,4,$count); | ||
115 | &bgt($count,&label("last_loop")); | ||
116 | |||
117 | &set_label("end"); | ||
118 | &function_end($name); | ||
119 | |||
120 | &fin_pool; | ||
121 | } | ||
122 | |||
123 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c4.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c4.pl new file mode 100644 index 0000000000..9cc876ded4 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c4.pl | |||
@@ -0,0 +1,215 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | # upto | ||
5 | |||
6 | sub mul_add_c | ||
7 | { | ||
8 | local($a,$b,$c0,$c1,$c2)=@_; | ||
9 | local($l1,$h1,$t1,$t2); | ||
10 | |||
11 | &mul($a,$b,($l1)=&NR(1)); | ||
12 | &muh($a,$b,($h1)=&NR(1)); | ||
13 | &add($c0,$l1,$c0); | ||
14 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
15 | &add($t1,$h1,$h1); &FR($t1); | ||
16 | &add($c1,$h1,$c1); | ||
17 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
18 | &add($c2,$t2,$c2); &FR($t2); | ||
19 | } | ||
20 | |||
21 | sub bn_mul_comba4 | ||
22 | { | ||
23 | local($name)=@_; | ||
24 | local(@a,@b,$r,$c0,$c1,$c2); | ||
25 | |||
26 | $cnt=1; | ||
27 | &init_pool(3); | ||
28 | |||
29 | $rp=&wparam(0); | ||
30 | $ap=&wparam(1); | ||
31 | $bp=&wparam(2); | ||
32 | |||
33 | &function_begin($name,""); | ||
34 | |||
35 | &comment(""); | ||
36 | |||
37 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
38 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
39 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
40 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
41 | &mul($a[0],$b[0],($r00)=&NR(1)); | ||
42 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
43 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
44 | &muh($a[0],$b[0],($r01)=&NR(1)); | ||
45 | &FR($ap); &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
46 | &FR($bp); &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
47 | &mul($a[0],$b[1],($r02)=&NR(1)); | ||
48 | |||
49 | ($R,$H1,$H2)=&NR(3); | ||
50 | |||
51 | &st($r00,&QWPw(0,$rp)); &FR($r00); | ||
52 | |||
53 | &mov("zero",$R); | ||
54 | &mul($a[1],$b[0],($r03)=&NR(1)); | ||
55 | |||
56 | &mov("zero",$H1); | ||
57 | &mov("zero",$H0); | ||
58 | &add($R,$r01,$R); | ||
59 | &muh($a[0],$b[1],($r04)=&NR(1)); | ||
60 | &cmpult($R,$r01,($t01)=&NR(1)); &FR($r01); | ||
61 | &add($R,$r02,$R); | ||
62 | &add($H1,$t01,$H1) &FR($t01); | ||
63 | &muh($a[1],$b[0],($r05)=&NR(1)); | ||
64 | &cmpult($R,$r02,($t02)=&NR(1)); &FR($r02); | ||
65 | &add($R,$r03,$R); | ||
66 | &add($H2,$t02,$H2) &FR($t02); | ||
67 | &mul($a[0],$b[2],($r06)=&NR(1)); | ||
68 | &cmpult($R,$r03,($t03)=&NR(1)); &FR($r03); | ||
69 | &add($H1,$t03,$H1) &FR($t03); | ||
70 | &st($R,&QWPw(1,$rp)); | ||
71 | &add($H1,$H2,$R); | ||
72 | |||
73 | &mov("zero",$H1); | ||
74 | &add($R,$r04,$R); | ||
75 | &mov("zero",$H2); | ||
76 | &mul($a[1],$b[1],($r07)=&NR(1)); | ||
77 | &cmpult($R,$r04,($t04)=&NR(1)); &FR($r04); | ||
78 | &add($R,$r05,$R); | ||
79 | &add($H1,$t04,$H1) &FR($t04); | ||
80 | &mul($a[2],$b[0],($r08)=&NR(1)); | ||
81 | &cmpult($R,$r05,($t05)=&NR(1)); &FR($r05); | ||
82 | &add($R,$r01,$R); | ||
83 | &add($H2,$t05,$H2) &FR($t05); | ||
84 | &muh($a[0],$b[2],($r09)=&NR(1)); | ||
85 | &cmpult($R,$r06,($t06)=&NR(1)); &FR($r06); | ||
86 | &add($R,$r07,$R); | ||
87 | &add($H1,$t06,$H1) &FR($t06); | ||
88 | &muh($a[1],$b[1],($r10)=&NR(1)); | ||
89 | &cmpult($R,$r07,($t07)=&NR(1)); &FR($r07); | ||
90 | &add($R,$r08,$R); | ||
91 | &add($H2,$t07,$H2) &FR($t07); | ||
92 | &muh($a[2],$b[0],($r11)=&NR(1)); | ||
93 | &cmpult($R,$r08,($t08)=&NR(1)); &FR($r08); | ||
94 | &add($H1,$t08,$H1) &FR($t08); | ||
95 | &st($R,&QWPw(2,$rp)); | ||
96 | &add($H1,$H2,$R); | ||
97 | |||
98 | &mov("zero",$H1); | ||
99 | &add($R,$r09,$R); | ||
100 | &mov("zero",$H2); | ||
101 | &mul($a[0],$b[3],($r12)=&NR(1)); | ||
102 | &cmpult($R,$r09,($t09)=&NR(1)); &FR($r09); | ||
103 | &add($R,$r10,$R); | ||
104 | &add($H1,$t09,$H1) &FR($t09); | ||
105 | &mul($a[1],$b[2],($r13)=&NR(1)); | ||
106 | &cmpult($R,$r10,($t10)=&NR(1)); &FR($r10); | ||
107 | &add($R,$r11,$R); | ||
108 | &add($H1,$t10,$H1) &FR($t10); | ||
109 | &mul($a[2],$b[1],($r14)=&NR(1)); | ||
110 | &cmpult($R,$r11,($t11)=&NR(1)); &FR($r11); | ||
111 | &add($R,$r12,$R); | ||
112 | &add($H1,$t11,$H1) &FR($t11); | ||
113 | &mul($a[3],$b[0],($r15)=&NR(1)); | ||
114 | &cmpult($R,$r12,($t12)=&NR(1)); &FR($r12); | ||
115 | &add($R,$r13,$R); | ||
116 | &add($H1,$t12,$H1) &FR($t12); | ||
117 | &muh($a[0],$b[3],($r16)=&NR(1)); | ||
118 | &cmpult($R,$r13,($t13)=&NR(1)); &FR($r13); | ||
119 | &add($R,$r14,$R); | ||
120 | &add($H1,$t13,$H1) &FR($t13); | ||
121 | &muh($a[1],$b[2],($r17)=&NR(1)); | ||
122 | &cmpult($R,$r14,($t14)=&NR(1)); &FR($r14); | ||
123 | &add($R,$r15,$R); | ||
124 | &add($H1,$t14,$H1) &FR($t14); | ||
125 | &muh($a[2],$b[1],($r18)=&NR(1)); | ||
126 | &cmpult($R,$r15,($t15)=&NR(1)); &FR($r15); | ||
127 | &add($H1,$t15,$H1) &FR($t15); | ||
128 | &st($R,&QWPw(3,$rp)); | ||
129 | &add($H1,$H2,$R); | ||
130 | |||
131 | &mov("zero",$H1); | ||
132 | &add($R,$r16,$R); | ||
133 | &mov("zero",$H2); | ||
134 | &muh($a[3],$b[0],($r19)=&NR(1)); | ||
135 | &cmpult($R,$r16,($t16)=&NR(1)); &FR($r16); | ||
136 | &add($R,$r17,$R); | ||
137 | &add($H1,$t16,$H1) &FR($t16); | ||
138 | &mul($a[1],$b[3],($r20)=&NR(1)); | ||
139 | &cmpult($R,$r17,($t17)=&NR(1)); &FR($r17); | ||
140 | &add($R,$r18,$R); | ||
141 | &add($H1,$t17,$H1) &FR($t17); | ||
142 | &mul($a[2],$b[2],($r21)=&NR(1)); | ||
143 | &cmpult($R,$r18,($t18)=&NR(1)); &FR($r18); | ||
144 | &add($R,$r19,$R); | ||
145 | &add($H1,$t18,$H1) &FR($t18); | ||
146 | &mul($a[3],$b[1],($r22)=&NR(1)); | ||
147 | &cmpult($R,$r19,($t19)=&NR(1)); &FR($r19); | ||
148 | &add($R,$r20,$R); | ||
149 | &add($H1,$t19,$H1) &FR($t19); | ||
150 | &muh($a[1],$b[3],($r23)=&NR(1)); | ||
151 | &cmpult($R,$r20,($t20)=&NR(1)); &FR($r20); | ||
152 | &add($R,$r21,$R); | ||
153 | &add($H1,$t20,$H1) &FR($t20); | ||
154 | &muh($a[2],$b[2],($r24)=&NR(1)); | ||
155 | &cmpult($R,$r21,($t21)=&NR(1)); &FR($r21); | ||
156 | &add($R,$r22,$R); | ||
157 | &add($H1,$t21,$H1) &FR($t21); | ||
158 | &muh($a[3],$b[1],($r25)=&NR(1)); | ||
159 | &cmpult($R,$r22,($t22)=&NR(1)); &FR($r22); | ||
160 | &add($H1,$t22,$H1) &FR($t22); | ||
161 | &st($R,&QWPw(4,$rp)); | ||
162 | &add($H1,$H2,$R); | ||
163 | |||
164 | &mov("zero",$H1); | ||
165 | &add($R,$r23,$R); | ||
166 | &mov("zero",$H2); | ||
167 | &mul($a[2],$b[3],($r26)=&NR(1)); | ||
168 | &cmpult($R,$r23,($t23)=&NR(1)); &FR($r23); | ||
169 | &add($R,$r24,$R); | ||
170 | &add($H1,$t23,$H1) &FR($t23); | ||
171 | &mul($a[3],$b[2],($r27)=&NR(1)); | ||
172 | &cmpult($R,$r24,($t24)=&NR(1)); &FR($r24); | ||
173 | &add($R,$r25,$R); | ||
174 | &add($H1,$t24,$H1) &FR($t24); | ||
175 | &muh($a[2],$b[3],($r28)=&NR(1)); | ||
176 | &cmpult($R,$r25,($t25)=&NR(1)); &FR($r25); | ||
177 | &add($R,$r26,$R); | ||
178 | &add($H1,$t25,$H1) &FR($t25); | ||
179 | &muh($a[3],$b[2],($r29)=&NR(1)); | ||
180 | &cmpult($R,$r26,($t26)=&NR(1)); &FR($r26); | ||
181 | &add($R,$r27,$R); | ||
182 | &add($H1,$t26,$H1) &FR($t26); | ||
183 | &mul($a[3],$b[3],($r30)=&NR(1)); | ||
184 | &cmpult($R,$r27,($t27)=&NR(1)); &FR($r27); | ||
185 | &add($H1,$t27,$H1) &FR($t27); | ||
186 | &st($R,&QWPw(5,$rp)); | ||
187 | &add($H1,$H2,$R); | ||
188 | |||
189 | &mov("zero",$H1); | ||
190 | &add($R,$r28,$R); | ||
191 | &mov("zero",$H2); | ||
192 | &muh($a[3],$b[3],($r31)=&NR(1)); | ||
193 | &cmpult($R,$r28,($t28)=&NR(1)); &FR($r28); | ||
194 | &add($R,$r29,$R); | ||
195 | &add($H1,$t28,$H1) &FR($t28); | ||
196 | ############ | ||
197 | &cmpult($R,$r29,($t29)=&NR(1)); &FR($r29); | ||
198 | &add($R,$r30,$R); | ||
199 | &add($H1,$t29,$H1) &FR($t29); | ||
200 | ############ | ||
201 | &cmpult($R,$r30,($t30)=&NR(1)); &FR($r30); | ||
202 | &add($H1,$t30,$H1) &FR($t30); | ||
203 | &st($R,&QWPw(6,$rp)); | ||
204 | &add($H1,$H2,$R); | ||
205 | |||
206 | &add($R,$r31,$R); &FR($r31); | ||
207 | &st($R,&QWPw(7,$rp)); | ||
208 | |||
209 | &FR($R,$H1,$H2); | ||
210 | &function_end($name); | ||
211 | |||
212 | &fin_pool; | ||
213 | } | ||
214 | |||
215 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c4.works.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c4.works.pl new file mode 100644 index 0000000000..79d86dd25c --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c4.works.pl | |||
@@ -0,0 +1,98 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$b,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | print STDERR "count=$cnt\n"; $cnt++; | ||
10 | &mul($a,$b,($l1)=&NR(1)); | ||
11 | &muh($a,$b,($h1)=&NR(1)); | ||
12 | &add($c0,$l1,$c0); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &add($t1,$h1,$h1); &FR($t1); | ||
15 | &add($c1,$h1,$c1); | ||
16 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
17 | &add($c2,$t2,$c2); &FR($t2); | ||
18 | } | ||
19 | |||
20 | sub bn_mul_comba4 | ||
21 | { | ||
22 | local($name)=@_; | ||
23 | local(@a,@b,$r,$c0,$c1,$c2); | ||
24 | |||
25 | $cnt=1; | ||
26 | &init_pool(3); | ||
27 | |||
28 | $rp=&wparam(0); | ||
29 | $ap=&wparam(1); | ||
30 | $bp=&wparam(2); | ||
31 | |||
32 | &function_begin($name,""); | ||
33 | |||
34 | &comment(""); | ||
35 | |||
36 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
37 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
38 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
39 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
40 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
41 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
42 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
43 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); &FR($bp); | ||
44 | |||
45 | ($c0,$c1,$c2)=&NR(3); | ||
46 | &mov("zero",$c2); | ||
47 | &mul($a[0],$b[0],$c0); | ||
48 | &muh($a[0],$b[0],$c1); | ||
49 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
50 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
51 | &mov("zero",$c2); | ||
52 | |||
53 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
54 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
55 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
56 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
57 | &mov("zero",$c2); | ||
58 | |||
59 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
60 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
61 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
62 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
63 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
64 | &mov("zero",$c2); | ||
65 | |||
66 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); &FR($a[0]); | ||
67 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
68 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
69 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
70 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
71 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
72 | &mov("zero",$c2); | ||
73 | |||
74 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); &FR($a[1]); | ||
75 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
76 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
77 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
78 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
79 | &mov("zero",$c2); | ||
80 | |||
81 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); &FR($a[2]); | ||
82 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
83 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR($c0); | ||
84 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
85 | &mov("zero",$c2); | ||
86 | |||
87 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); &FR($a[3],$b[3]); | ||
88 | &st($c0,&QWPw(6,$rp)); | ||
89 | &st($c1,&QWPw(7,$rp)); | ||
90 | |||
91 | &FR($c0,$c1,$c2); | ||
92 | |||
93 | &function_end($name); | ||
94 | |||
95 | &fin_pool; | ||
96 | } | ||
97 | |||
98 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c8.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c8.pl new file mode 100644 index 0000000000..525ca7494b --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/mul_c8.pl | |||
@@ -0,0 +1,177 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_mul_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(3); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | |||
20 | &stack_push(2); | ||
21 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
22 | &ld(($b[0])=&NR(1),&QWPw(0,$bp)); | ||
23 | &st($reg_s0,&swtmp(0)); &FR($reg_s0); | ||
24 | &st($reg_s1,&swtmp(1)); &FR($reg_s1); | ||
25 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
26 | &ld(($b[1])=&NR(1),&QWPw(1,$bp)); | ||
27 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
28 | &ld(($b[2])=&NR(1),&QWPw(2,$bp)); | ||
29 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
30 | &ld(($b[3])=&NR(1),&QWPw(3,$bp)); | ||
31 | &ld(($a[4])=&NR(1),&QWPw(1,$ap)); | ||
32 | &ld(($b[4])=&NR(1),&QWPw(1,$bp)); | ||
33 | &ld(($a[5])=&NR(1),&QWPw(1,$ap)); | ||
34 | &ld(($b[5])=&NR(1),&QWPw(1,$bp)); | ||
35 | &ld(($a[6])=&NR(1),&QWPw(1,$ap)); | ||
36 | &ld(($b[6])=&NR(1),&QWPw(1,$bp)); | ||
37 | &ld(($a[7])=&NR(1),&QWPw(1,$ap)); &FR($ap); | ||
38 | &ld(($b[7])=&NR(1),&QWPw(1,$bp)); &FR($bp); | ||
39 | |||
40 | ($c0,$c1,$c2)=&NR(3); | ||
41 | &mov("zero",$c2); | ||
42 | &mul($a[0],$b[0],$c0); | ||
43 | &muh($a[0],$b[0],$c1); | ||
44 | &st($c0,&QWPw(0,$rp)); &FR($c0); ($c0)=&NR(1); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &mul_add_c($a[0],$b[1],$c0,$c1,$c2); | ||
49 | &mul_add_c($a[1],$b[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(1,$rp)); &FR($c0); ($c0)=&NR(1); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &mul_add_c($a[0],$b[2],$c0,$c1,$c2); | ||
55 | &mul_add_c($a[1],$b[1],$c0,$c1,$c2); | ||
56 | &mul_add_c($a[2],$b[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(2,$rp)); &FR($c0); ($c0)=&NR(1); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &mul_add_c($a[0],$b[3],$c0,$c1,$c2); | ||
62 | &mul_add_c($a[1],$b[2],$c0,$c1,$c2); | ||
63 | &mul_add_c($a[2],$b[1],$c0,$c1,$c2); | ||
64 | &mul_add_c($a[3],$b[0],$c0,$c1,$c2); | ||
65 | &st($c0,&QWPw(3,$rp)); &FR($c0); ($c0)=&NR(1); | ||
66 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
67 | &mov("zero",$c2); | ||
68 | |||
69 | &mul_add_c($a[0],$b[4],$c0,$c1,$c2); | ||
70 | &mul_add_c($a[1],$b[3],$c0,$c1,$c2); | ||
71 | &mul_add_c($a[2],$b[2],$c0,$c1,$c2); | ||
72 | &mul_add_c($a[3],$b[1],$c0,$c1,$c2); | ||
73 | &mul_add_c($a[4],$b[0],$c0,$c1,$c2); | ||
74 | &st($c0,&QWPw(4,$rp)); &FR($c0); ($c0)=&NR(1); | ||
75 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
76 | &mov("zero",$c2); | ||
77 | |||
78 | &mul_add_c($a[0],$b[5],$c0,$c1,$c2); | ||
79 | &mul_add_c($a[1],$b[4],$c0,$c1,$c2); | ||
80 | &mul_add_c($a[2],$b[3],$c0,$c1,$c2); | ||
81 | &mul_add_c($a[3],$b[2],$c0,$c1,$c2); | ||
82 | &mul_add_c($a[4],$b[1],$c0,$c1,$c2); | ||
83 | &mul_add_c($a[5],$b[0],$c0,$c1,$c2); | ||
84 | &st($c0,&QWPw(5,$rp)); &FR($c0); ($c0)=&NR(1); | ||
85 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
86 | &mov("zero",$c2); | ||
87 | |||
88 | &mul_add_c($a[0],$b[6],$c0,$c1,$c2); | ||
89 | &mul_add_c($a[1],$b[5],$c0,$c1,$c2); | ||
90 | &mul_add_c($a[2],$b[4],$c0,$c1,$c2); | ||
91 | &mul_add_c($a[3],$b[3],$c0,$c1,$c2); | ||
92 | &mul_add_c($a[4],$b[2],$c0,$c1,$c2); | ||
93 | &mul_add_c($a[5],$b[1],$c0,$c1,$c2); | ||
94 | &mul_add_c($a[6],$b[0],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(6,$rp)); &FR($c0); ($c0)=&NR(1); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &mul_add_c($a[0],$b[7],$c0,$c1,$c2); &FR($a[0]); | ||
100 | &mul_add_c($a[1],$b[6],$c0,$c1,$c2); | ||
101 | &mul_add_c($a[2],$b[5],$c0,$c1,$c2); | ||
102 | &mul_add_c($a[3],$b[4],$c0,$c1,$c2); | ||
103 | &mul_add_c($a[4],$b[3],$c0,$c1,$c2); | ||
104 | &mul_add_c($a[5],$b[2],$c0,$c1,$c2); | ||
105 | &mul_add_c($a[6],$b[1],$c0,$c1,$c2); | ||
106 | &mul_add_c($a[7],$b[0],$c0,$c1,$c2); &FR($b[0]); | ||
107 | &st($c0,&QWPw(7,$rp)); &FR($c0); ($c0)=&NR(1); | ||
108 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
109 | &mov("zero",$c2); | ||
110 | |||
111 | &mul_add_c($a[1],$b[7],$c0,$c1,$c2); &FR($a[1]); | ||
112 | &mul_add_c($a[2],$b[6],$c0,$c1,$c2); | ||
113 | &mul_add_c($a[3],$b[5],$c0,$c1,$c2); | ||
114 | &mul_add_c($a[4],$b[4],$c0,$c1,$c2); | ||
115 | &mul_add_c($a[5],$b[3],$c0,$c1,$c2); | ||
116 | &mul_add_c($a[6],$b[2],$c0,$c1,$c2); | ||
117 | &mul_add_c($a[7],$b[1],$c0,$c1,$c2); &FR($b[1]); | ||
118 | &st($c0,&QWPw(8,$rp)); &FR($c0); ($c0)=&NR(1); | ||
119 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
120 | &mov("zero",$c2); | ||
121 | |||
122 | &mul_add_c($a[2],$b[7],$c0,$c1,$c2); &FR($a[2]); | ||
123 | &mul_add_c($a[3],$b[6],$c0,$c1,$c2); | ||
124 | &mul_add_c($a[4],$b[5],$c0,$c1,$c2); | ||
125 | &mul_add_c($a[5],$b[4],$c0,$c1,$c2); | ||
126 | &mul_add_c($a[6],$b[3],$c0,$c1,$c2); | ||
127 | &mul_add_c($a[7],$b[2],$c0,$c1,$c2); &FR($b[2]); | ||
128 | &st($c0,&QWPw(9,$rp)); &FR($c0); ($c0)=&NR(1); | ||
129 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
130 | &mov("zero",$c2); | ||
131 | |||
132 | &mul_add_c($a[3],$b[7],$c0,$c1,$c2); &FR($a[3]); | ||
133 | &mul_add_c($a[4],$b[6],$c0,$c1,$c2); | ||
134 | &mul_add_c($a[5],$b[5],$c0,$c1,$c2); | ||
135 | &mul_add_c($a[6],$b[4],$c0,$c1,$c2); | ||
136 | &mul_add_c($a[7],$b[3],$c0,$c1,$c2); &FR($b[3]); | ||
137 | &st($c0,&QWPw(10,$rp)); &FR($c0); ($c0)=&NR(1); | ||
138 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
139 | &mov("zero",$c2); | ||
140 | |||
141 | &mul_add_c($a[4],$b[7],$c0,$c1,$c2); &FR($a[4]); | ||
142 | &mul_add_c($a[5],$b[6],$c0,$c1,$c2); | ||
143 | &mul_add_c($a[6],$b[5],$c0,$c1,$c2); | ||
144 | &mul_add_c($a[7],$b[4],$c0,$c1,$c2); &FR($b[4]); | ||
145 | &st($c0,&QWPw(11,$rp)); &FR($c0); ($c0)=&NR(1); | ||
146 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
147 | &mov("zero",$c2); | ||
148 | |||
149 | &mul_add_c($a[5],$b[7],$c0,$c1,$c2); &FR($a[5]); | ||
150 | &mul_add_c($a[6],$b[6],$c0,$c1,$c2); | ||
151 | &mul_add_c($a[7],$b[5],$c0,$c1,$c2); &FR($b[5]); | ||
152 | &st($c0,&QWPw(12,$rp)); &FR($c0); ($c0)=&NR(1); | ||
153 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
154 | &mov("zero",$c2); | ||
155 | |||
156 | &mul_add_c($a[6],$b[7],$c0,$c1,$c2); &FR($a[6]); | ||
157 | &mul_add_c($a[7],$b[6],$c0,$c1,$c2); &FR($b[6]); | ||
158 | &st($c0,&QWPw(13,$rp)); &FR($c0); ($c0)=&NR(1); | ||
159 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
160 | &mov("zero",$c2); | ||
161 | |||
162 | &mul_add_c($a[7],$b[7],$c0,$c1,$c2); &FR($a[7],$b[7]); | ||
163 | &st($c0,&QWPw(14,$rp)); | ||
164 | &st($c1,&QWPw(15,$rp)); | ||
165 | |||
166 | &FR($c0,$c1,$c2); | ||
167 | |||
168 | &ld($reg_s0,&swtmp(0)); | ||
169 | &ld($reg_s1,&swtmp(1)); | ||
170 | &stack_pop(2); | ||
171 | |||
172 | &function_end($name); | ||
173 | |||
174 | &fin_pool; | ||
175 | } | ||
176 | |||
177 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/sqr.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/sqr.pl new file mode 100644 index 0000000000..a55b696906 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/sqr.pl | |||
@@ -0,0 +1,113 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r,$couny); | ||
8 | |||
9 | &init_pool(3); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $count=&wparam(2); | ||
15 | |||
16 | &function_begin($name,""); | ||
17 | |||
18 | &comment(""); | ||
19 | &sub($count,4,$count); | ||
20 | &mov("zero",$cc); | ||
21 | &br(&label("finish")); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$r0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($r0,&QWPw(0,$rp)); | ||
27 | |||
28 | $a=<<'EOF'; | ||
29 | ########################################################## | ||
30 | &set_label("loop"); | ||
31 | |||
32 | ($a1)=&NR(1); &ld($a1,&QWPw(1,$ap)); | ||
33 | ($b1)=&NR(1); &ld($b1,&QWPw(1,$bp)); | ||
34 | ($a2)=&NR(1); &ld($a2,&QWPw(2,$ap)); | ||
35 | ($b2)=&NR(1); &ld($b2,&QWPw(2,$bp)); | ||
36 | ($a3)=&NR(1); &ld($a3,&QWPw(3,$ap)); | ||
37 | ($b3)=&NR(1); &ld($b3,&QWPw(3,$bp)); | ||
38 | |||
39 | ($o0,$t0)=&NR(2); | ||
40 | &add($a0,$b0,$o0); | ||
41 | &cmpult($o0,$b0,$t0); | ||
42 | &add($o0,$cc,$o0); | ||
43 | &cmpult($o0,$cc,$cc); | ||
44 | &add($cc,$t0,$cc); &FR($t0); | ||
45 | |||
46 | ($t1,$o1)=&NR(2); | ||
47 | |||
48 | &add($a1,$b1,$o1); &FR($a1); | ||
49 | &cmpult($o1,$b1,$t1); &FR($b1); | ||
50 | &add($o1,$cc,$o1); | ||
51 | &cmpult($o1,$cc,$cc); | ||
52 | &add($cc,$t1,$cc); &FR($t1); | ||
53 | |||
54 | ($t2,$o2)=&NR(2); | ||
55 | |||
56 | &add($a2,$b2,$o2); &FR($a2); | ||
57 | &cmpult($o2,$b2,$t2); &FR($b2); | ||
58 | &add($o2,$cc,$o2); | ||
59 | &cmpult($o2,$cc,$cc); | ||
60 | &add($cc,$t2,$cc); &FR($t2); | ||
61 | |||
62 | ($t3,$o3)=&NR(2); | ||
63 | |||
64 | &add($a3,$b3,$o3); &FR($a3); | ||
65 | &cmpult($o3,$b3,$t3); &FR($b3); | ||
66 | &add($o3,$cc,$o3); | ||
67 | &cmpult($o3,$cc,$cc); | ||
68 | &add($cc,$t3,$cc); &FR($t3); | ||
69 | |||
70 | &st($o0,&QWPw(0,$rp)); &FR($o0); | ||
71 | &st($o1,&QWPw(0,$rp)); &FR($o1); | ||
72 | &st($o2,&QWPw(0,$rp)); &FR($o2); | ||
73 | &st($o3,&QWPw(0,$rp)); &FR($o3); | ||
74 | |||
75 | &sub($count,4,$count); # count-=4 | ||
76 | &add($ap,4*$QWS,$ap); # count+=4 | ||
77 | &add($bp,4*$QWS,$bp); # count+=4 | ||
78 | &add($rp,4*$QWS,$rp); # count+=4 | ||
79 | |||
80 | &blt($count,&label("finish")); | ||
81 | &ld($a0,&QWPw(0,$ap)); | ||
82 | &ld($b0,&QWPw(0,$bp)); | ||
83 | &br(&label("loop")); | ||
84 | EOF | ||
85 | ################################################## | ||
86 | # Do the last 0..3 words | ||
87 | |||
88 | &set_label("last_loop"); | ||
89 | |||
90 | &ld(($a0)=&NR(1),&QWPw(0,$ap)); # get a | ||
91 | &mul($a0,$a0,($l0)=&NR(1)); | ||
92 | &add($ap,$QWS,$ap); | ||
93 | &add($rp,2*$QWS,$rp); | ||
94 | &sub($count,1,$count); | ||
95 | &muh($a0,$a0,($h0)=&NR(1)); &FR($a0); | ||
96 | &st($l0,&QWPw(-2,$rp)); &FR($l0); | ||
97 | &st($h0,&QWPw(-1,$rp)); &FR($h0); | ||
98 | |||
99 | &bgt($count,&label("last_loop")); | ||
100 | &function_end_A($name); | ||
101 | |||
102 | ###################################################### | ||
103 | &set_label("finish"); | ||
104 | &add($count,4,$count); | ||
105 | &bgt($count,&label("last_loop")); | ||
106 | |||
107 | &set_label("end"); | ||
108 | &function_end($name); | ||
109 | |||
110 | &fin_pool; | ||
111 | } | ||
112 | |||
113 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/sqr_c4.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/sqr_c4.pl new file mode 100644 index 0000000000..bf33f5b503 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/sqr_c4.pl | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub sqr_add_c | ||
5 | { | ||
6 | local($a,$c0,$c1,$c2)=@_; | ||
7 | local($l1,$h1,$t1,$t2); | ||
8 | |||
9 | &mul($a,$a,($l1)=&NR(1)); | ||
10 | &muh($a,$a,($h1)=&NR(1)); | ||
11 | &add($c0,$l1,$c0); | ||
12 | &add($c1,$h1,$c1); | ||
13 | &cmpult($c0,$l1,($t1)=&NR(1)); &FR($l1); | ||
14 | &cmpult($c1,$h1,($t2)=&NR(1)); &FR($h1); | ||
15 | &add($c1,$t1,$c1); &FR($t1); | ||
16 | &add($c2,$t2,$c2); &FR($t2); | ||
17 | } | ||
18 | |||
19 | sub sqr_add_c2 | ||
20 | { | ||
21 | local($a,$b,$c0,$c1,$c2)=@_; | ||
22 | local($l1,$h1,$t1,$t2); | ||
23 | |||
24 | &mul($a,$b,($l1)=&NR(1)); | ||
25 | &muh($a,$b,($h1)=&NR(1)); | ||
26 | &cmplt($l1,"zero",($lc1)=&NR(1)); | ||
27 | &cmplt($h1,"zero",($hc1)=&NR(1)); | ||
28 | &add($l1,$l1,$l1); | ||
29 | &add($h1,$h1,$h1); | ||
30 | &add($h1,$lc1,$h1); &FR($lc1); | ||
31 | &add($c2,$hc1,$c2); &FR($hc1); | ||
32 | |||
33 | &add($c0,$l1,$c0); | ||
34 | &add($c1,$h1,$c1); | ||
35 | &cmpult($c0,$l1,($lc1)=&NR(1)); &FR($l1); | ||
36 | &cmpult($c1,$h1,($hc1)=&NR(1)); &FR($h1); | ||
37 | |||
38 | &add($c1,$lc1,$c1); &FR($lc1); | ||
39 | &add($c2,$hc1,$c2); &FR($hc1); | ||
40 | } | ||
41 | |||
42 | |||
43 | sub bn_sqr_comba4 | ||
44 | { | ||
45 | local($name)=@_; | ||
46 | local(@a,@b,$r,$c0,$c1,$c2); | ||
47 | |||
48 | $cnt=1; | ||
49 | &init_pool(2); | ||
50 | |||
51 | $rp=&wparam(0); | ||
52 | $ap=&wparam(1); | ||
53 | |||
54 | &function_begin($name,""); | ||
55 | |||
56 | &comment(""); | ||
57 | |||
58 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
59 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
60 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
61 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); &FR($ap); | ||
62 | |||
63 | ($c0,$c1,$c2)=&NR(3); | ||
64 | |||
65 | &mov("zero",$c2); | ||
66 | &mul($a[0],$a[0],$c0); | ||
67 | &muh($a[0],$a[0],$c1); | ||
68 | &st($c0,&QWPw(0,$rp)); | ||
69 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
70 | &mov("zero",$c2); | ||
71 | |||
72 | &sqr_add_c2($a[0],$a[1],$c0,$c1,$c2); | ||
73 | &st($c0,&QWPw(1,$rp)); | ||
74 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
75 | &mov("zero",$c2); | ||
76 | |||
77 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
79 | &st($c0,&QWPw(2,$rp)); | ||
80 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
81 | &mov("zero",$c2); | ||
82 | |||
83 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
84 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
85 | &st($c0,&QWPw(3,$rp)); | ||
86 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
87 | &mov("zero",$c2); | ||
88 | |||
89 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
90 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
91 | &st($c0,&QWPw(4,$rp)); | ||
92 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
93 | &mov("zero",$c2); | ||
94 | |||
95 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
96 | &st($c0,&QWPw(5,$rp)); | ||
97 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
98 | &mov("zero",$c2); | ||
99 | |||
100 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
101 | &st($c0,&QWPw(6,$rp)); | ||
102 | &st($c1,&QWPw(7,$rp)); | ||
103 | |||
104 | &function_end($name); | ||
105 | |||
106 | &fin_pool; | ||
107 | } | ||
108 | |||
109 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/sqr_c8.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/sqr_c8.pl new file mode 100644 index 0000000000..b4afe085f1 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/sqr_c8.pl | |||
@@ -0,0 +1,132 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sqr_comba8 | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local(@a,@b,$r,$c0,$c1,$c2); | ||
8 | |||
9 | $cnt=1; | ||
10 | &init_pool(2); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | |||
15 | &function_begin($name,""); | ||
16 | |||
17 | &comment(""); | ||
18 | |||
19 | &ld(($a[0])=&NR(1),&QWPw(0,$ap)); | ||
20 | &ld(($a[1])=&NR(1),&QWPw(1,$ap)); | ||
21 | &ld(($a[2])=&NR(1),&QWPw(2,$ap)); | ||
22 | &ld(($a[3])=&NR(1),&QWPw(3,$ap)); | ||
23 | &ld(($a[4])=&NR(1),&QWPw(4,$ap)); | ||
24 | &ld(($a[5])=&NR(1),&QWPw(5,$ap)); | ||
25 | &ld(($a[6])=&NR(1),&QWPw(6,$ap)); | ||
26 | &ld(($a[7])=&NR(1),&QWPw(7,$ap)); &FR($ap); | ||
27 | |||
28 | ($c0,$c1,$c2)=&NR(3); | ||
29 | |||
30 | &mov("zero",$c2); | ||
31 | &mul($a[0],$a[0],$c0); | ||
32 | &muh($a[0],$a[0],$c1); | ||
33 | &st($c0,&QWPw(0,$rp)); | ||
34 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
35 | &mov("zero",$c2); | ||
36 | |||
37 | &sqr_add_c2($a[1],$a[0],$c0,$c1,$c2); | ||
38 | &st($c0,&QWPw(1,$rp)); | ||
39 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
40 | &mov("zero",$c2); | ||
41 | |||
42 | &sqr_add_c($a[1],$c0,$c1,$c2); | ||
43 | &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2); | ||
44 | &st($c0,&QWPw(2,$rp)); | ||
45 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
46 | &mov("zero",$c2); | ||
47 | |||
48 | &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2); | ||
49 | &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2); | ||
50 | &st($c0,&QWPw(3,$rp)); | ||
51 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
52 | &mov("zero",$c2); | ||
53 | |||
54 | &sqr_add_c($a[2],$c0,$c1,$c2); | ||
55 | &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2); | ||
56 | &sqr_add_c2($a[4],$a[0],$c0,$c1,$c2); | ||
57 | &st($c0,&QWPw(4,$rp)); | ||
58 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
59 | &mov("zero",$c2); | ||
60 | |||
61 | &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2); | ||
62 | &sqr_add_c2($a[4],$a[1],$c0,$c1,$c2); | ||
63 | &sqr_add_c2($a[5],$a[0],$c0,$c1,$c2); | ||
64 | &st($c0,&QWPw(5,$rp)); | ||
65 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
66 | &mov("zero",$c2); | ||
67 | |||
68 | &sqr_add_c($a[3],$c0,$c1,$c2); | ||
69 | &sqr_add_c2($a[4],$a[2],$c0,$c1,$c2); | ||
70 | &sqr_add_c2($a[5],$a[1],$c0,$c1,$c2); | ||
71 | &sqr_add_c2($a[6],$a[0],$c0,$c1,$c2); | ||
72 | &st($c0,&QWPw(6,$rp)); | ||
73 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
74 | &mov("zero",$c2); | ||
75 | |||
76 | &sqr_add_c2($a[4],$a[3],$c0,$c1,$c2); | ||
77 | &sqr_add_c2($a[5],$a[2],$c0,$c1,$c2); | ||
78 | &sqr_add_c2($a[6],$a[1],$c0,$c1,$c2); | ||
79 | &sqr_add_c2($a[7],$a[0],$c0,$c1,$c2); | ||
80 | &st($c0,&QWPw(7,$rp)); | ||
81 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
82 | &mov("zero",$c2); | ||
83 | |||
84 | &sqr_add_c($a[4],$c0,$c1,$c2); | ||
85 | &sqr_add_c2($a[5],$a[3],$c0,$c1,$c2); | ||
86 | &sqr_add_c2($a[6],$a[2],$c0,$c1,$c2); | ||
87 | &sqr_add_c2($a[7],$a[1],$c0,$c1,$c2); | ||
88 | &st($c0,&QWPw(8,$rp)); | ||
89 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
90 | &mov("zero",$c2); | ||
91 | |||
92 | &sqr_add_c2($a[5],$a[4],$c0,$c1,$c2); | ||
93 | &sqr_add_c2($a[6],$a[3],$c0,$c1,$c2); | ||
94 | &sqr_add_c2($a[7],$a[2],$c0,$c1,$c2); | ||
95 | &st($c0,&QWPw(9,$rp)); | ||
96 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
97 | &mov("zero",$c2); | ||
98 | |||
99 | &sqr_add_c($a[5],$c0,$c1,$c2); | ||
100 | &sqr_add_c2($a[6],$a[4],$c0,$c1,$c2); | ||
101 | &sqr_add_c2($a[7],$a[3],$c0,$c1,$c2); | ||
102 | &st($c0,&QWPw(10,$rp)); | ||
103 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
104 | &mov("zero",$c2); | ||
105 | |||
106 | &sqr_add_c2($a[6],$a[5],$c0,$c1,$c2); | ||
107 | &sqr_add_c2($a[7],$a[4],$c0,$c1,$c2); | ||
108 | &st($c0,&QWPw(11,$rp)); | ||
109 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
110 | &mov("zero",$c2); | ||
111 | |||
112 | &sqr_add_c($a[6],$c0,$c1,$c2); | ||
113 | &sqr_add_c2($a[7],$a[5],$c0,$c1,$c2); | ||
114 | &st($c0,&QWPw(12,$rp)); | ||
115 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
116 | &mov("zero",$c2); | ||
117 | |||
118 | &sqr_add_c2($a[7],$a[6],$c0,$c1,$c2); | ||
119 | &st($c0,&QWPw(13,$rp)); | ||
120 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
121 | &mov("zero",$c2); | ||
122 | |||
123 | &sqr_add_c($a[7],$c0,$c1,$c2); | ||
124 | &st($c0,&QWPw(14,$rp)); | ||
125 | &st($c1,&QWPw(15,$rp)); | ||
126 | |||
127 | &function_end($name); | ||
128 | |||
129 | &fin_pool; | ||
130 | } | ||
131 | |||
132 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/alpha/sub.pl b/src/lib/libssl/src/crypto/bn/asm/alpha/sub.pl new file mode 100644 index 0000000000..d998da5c21 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/alpha/sub.pl | |||
@@ -0,0 +1,108 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # alpha assember | ||
3 | |||
4 | sub bn_sub_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | local($cc,$a,$b,$r); | ||
8 | |||
9 | &init_pool(4); | ||
10 | ($cc)=GR("r0"); | ||
11 | |||
12 | $rp=&wparam(0); | ||
13 | $ap=&wparam(1); | ||
14 | $bp=&wparam(2); | ||
15 | $count=&wparam(3); | ||
16 | |||
17 | &function_begin($name,""); | ||
18 | |||
19 | &comment(""); | ||
20 | &sub($count,4,$count); | ||
21 | &mov("zero",$cc); | ||
22 | &blt($count,&label("finish")); | ||
23 | |||
24 | ($a0,$b0)=&NR(2); | ||
25 | &ld($a0,&QWPw(0,$ap)); | ||
26 | &ld($b0,&QWPw(0,$bp)); | ||
27 | |||
28 | ########################################################## | ||
29 | &set_label("loop"); | ||
30 | |||
31 | ($a1,$tmp,$b1,$a2,$b2,$a3,$b3,$o0)=&NR(8); | ||
32 | &ld($a1,&QWPw(1,$ap)); | ||
33 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
34 | &ld($b1,&QWPw(1,$bp)); | ||
35 | &sub($a0,$b0,$a0); # do the subtract | ||
36 | &ld($a2,&QWPw(2,$ap)); | ||
37 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
38 | &ld($b2,&QWPw(2,$bp)); | ||
39 | &sub($a0,$cc,$o0); # will we borrow? | ||
40 | &ld($a3,&QWPw(3,$ap)); | ||
41 | &add($b0,$tmp,$cc); ($t1,$o1)=&NR(2); &FR($tmp); | ||
42 | |||
43 | &cmpult($a1,$b1,$t1); # will we borrow? | ||
44 | &sub($a1,$b1,$a1); # do the subtract | ||
45 | &ld($b3,&QWPw(3,$bp)); | ||
46 | &cmpult($a1,$cc,$b1); # will we borrow? | ||
47 | &sub($a1,$cc,$o1); # will we borrow? | ||
48 | &add($b1,$t1,$cc); ($tmp,$o2)=&NR(2); &FR($t1,$a1,$b1); | ||
49 | |||
50 | &cmpult($a2,$b2,$tmp); # will we borrow? | ||
51 | &sub($a2,$b2,$a2); # do the subtract | ||
52 | &st($o0,&QWPw(0,$rp)); &FR($o0); # save | ||
53 | &cmpult($a2,$cc,$b2); # will we borrow? | ||
54 | &sub($a2,$cc,$o2); # will we borrow? | ||
55 | &add($b2,$tmp,$cc); ($t3,$o3)=&NR(2); &FR($tmp,$a2,$b2); | ||
56 | |||
57 | &cmpult($a3,$b3,$t3); # will we borrow? | ||
58 | &sub($a3,$b3,$a3); # do the subtract | ||
59 | &st($o1,&QWPw(1,$rp)); &FR($o1); | ||
60 | &cmpult($a3,$cc,$b3); # will we borrow? | ||
61 | &sub($a3,$cc,$o3); # will we borrow? | ||
62 | &add($b3,$t3,$cc); &FR($t3,$a3,$b3); | ||
63 | |||
64 | &st($o2,&QWPw(2,$rp)); &FR($o2); | ||
65 | &sub($count,4,$count); # count-=4 | ||
66 | &st($o3,&QWPw(3,$rp)); &FR($o3); | ||
67 | &add($ap,4*$QWS,$ap); # count+=4 | ||
68 | &add($bp,4*$QWS,$bp); # count+=4 | ||
69 | &add($rp,4*$QWS,$rp); # count+=4 | ||
70 | |||
71 | &blt($count,&label("finish")); | ||
72 | &ld($a0,&QWPw(0,$ap)); | ||
73 | &ld($b0,&QWPw(0,$bp)); | ||
74 | &br(&label("loop")); | ||
75 | ################################################## | ||
76 | # Do the last 0..3 words | ||
77 | |||
78 | &set_label("last_loop"); | ||
79 | |||
80 | &ld($a0,&QWPw(0,$ap)); # get a | ||
81 | &ld($b0,&QWPw(0,$bp)); # get b | ||
82 | &cmpult($a0,$b0,$tmp); # will we borrow? | ||
83 | &sub($a0,$b0,$a0); # do the subtract | ||
84 | &cmpult($a0,$cc,$b0); # will we borrow? | ||
85 | &sub($a0,$cc,$a0); # will we borrow? | ||
86 | &st($a0,&QWPw(0,$rp)); # save | ||
87 | &add($b0,$tmp,$cc); # add the borrows | ||
88 | |||
89 | &add($ap,$QWS,$ap); | ||
90 | &add($bp,$QWS,$bp); | ||
91 | &add($rp,$QWS,$rp); | ||
92 | &sub($count,1,$count); | ||
93 | &bgt($count,&label("last_loop")); | ||
94 | &function_end_A($name); | ||
95 | |||
96 | ###################################################### | ||
97 | &set_label("finish"); | ||
98 | &add($count,4,$count); | ||
99 | &bgt($count,&label("last_loop")); | ||
100 | |||
101 | &FR($a0,$b0); | ||
102 | &set_label("end"); | ||
103 | &function_end($name); | ||
104 | |||
105 | &fin_pool; | ||
106 | } | ||
107 | |||
108 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/add.pl b/src/lib/libssl/src/crypto/bn/asm/x86/add.pl new file mode 100644 index 0000000000..0b5cf583e3 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/add.pl | |||
@@ -0,0 +1,76 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $a="esi"; | ||
12 | $b="edi"; | ||
13 | $c="eax"; | ||
14 | $r="ebx"; | ||
15 | $tmp1="ecx"; | ||
16 | $tmp2="edx"; | ||
17 | $num="ebp"; | ||
18 | |||
19 | &mov($r,&wparam(0)); # get r | ||
20 | &mov($a,&wparam(1)); # get a | ||
21 | &mov($b,&wparam(2)); # get b | ||
22 | &mov($num,&wparam(3)); # get num | ||
23 | &xor($c,$c); # clear carry | ||
24 | &and($num,0xfffffff8); # num / 8 | ||
25 | |||
26 | &jz(&label("aw_finish")); | ||
27 | |||
28 | &set_label("aw_loop",0); | ||
29 | for ($i=0; $i<8; $i++) | ||
30 | { | ||
31 | &comment("Round $i"); | ||
32 | |||
33 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
34 | &mov($tmp2,&DWP($i*4,$b,"",0)); # *b | ||
35 | &add($tmp1,$c); | ||
36 | &mov($c,0); | ||
37 | &adc($c,$c); | ||
38 | &add($tmp1,$tmp2); | ||
39 | &adc($c,0); | ||
40 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *r | ||
41 | } | ||
42 | |||
43 | &comment(""); | ||
44 | &add($a,32); | ||
45 | &add($b,32); | ||
46 | &add($r,32); | ||
47 | &sub($num,8); | ||
48 | &jnz(&label("aw_loop")); | ||
49 | |||
50 | &set_label("aw_finish",0); | ||
51 | &mov($num,&wparam(3)); # get num | ||
52 | &and($num,7); | ||
53 | &jz(&label("aw_end")); | ||
54 | |||
55 | for ($i=0; $i<7; $i++) | ||
56 | { | ||
57 | &comment("Tail Round $i"); | ||
58 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
59 | &mov($tmp2,&DWP($i*4,$b,"",0));# *b | ||
60 | &add($tmp1,$c); | ||
61 | &mov($c,0); | ||
62 | &adc($c,$c); | ||
63 | &add($tmp1,$tmp2); | ||
64 | &adc($c,0); | ||
65 | &dec($num) if ($i != 6); | ||
66 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *a | ||
67 | &jz(&label("aw_end")) if ($i != 6); | ||
68 | } | ||
69 | &set_label("aw_end",0); | ||
70 | |||
71 | # &mov("eax",$c); # $c is "eax" | ||
72 | |||
73 | &function_end($name); | ||
74 | } | ||
75 | |||
76 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/comba.pl b/src/lib/libssl/src/crypto/bn/asm/x86/comba.pl new file mode 100644 index 0000000000..2291253629 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/comba.pl | |||
@@ -0,0 +1,277 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub mul_add_c | ||
5 | { | ||
6 | local($a,$ai,$b,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; | ||
7 | |||
8 | # pos == -1 if eax and edx are pre-loaded, 0 to load from next | ||
9 | # words, and 1 if load return value | ||
10 | |||
11 | &comment("mul a[$ai]*b[$bi]"); | ||
12 | |||
13 | # "eax" and "edx" will always be pre-loaded. | ||
14 | # &mov("eax",&DWP($ai*4,$a,"",0)) ; | ||
15 | # &mov("edx",&DWP($bi*4,$b,"",0)); | ||
16 | |||
17 | &mul("edx"); | ||
18 | &add($c0,"eax"); | ||
19 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # laod next a | ||
20 | &mov("eax",&wparam(0)) if $pos > 0; # load r[] | ||
21 | ### | ||
22 | &adc($c1,"edx"); | ||
23 | &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0; # laod next b | ||
24 | &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1; # laod next b | ||
25 | ### | ||
26 | &adc($c2,0); | ||
27 | # is pos > 1, it means it is the last loop | ||
28 | &mov(&DWP($i*4,"eax","",0),$c0) if $pos > 0; # save r[]; | ||
29 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # laod next a | ||
30 | } | ||
31 | |||
32 | sub sqr_add_c | ||
33 | { | ||
34 | local($r,$a,$ai,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; | ||
35 | |||
36 | # pos == -1 if eax and edx are pre-loaded, 0 to load from next | ||
37 | # words, and 1 if load return value | ||
38 | |||
39 | &comment("sqr a[$ai]*a[$bi]"); | ||
40 | |||
41 | # "eax" and "edx" will always be pre-loaded. | ||
42 | # &mov("eax",&DWP($ai*4,$a,"",0)) ; | ||
43 | # &mov("edx",&DWP($bi*4,$b,"",0)); | ||
44 | |||
45 | if ($ai == $bi) | ||
46 | { &mul("eax");} | ||
47 | else | ||
48 | { &mul("edx");} | ||
49 | &add($c0,"eax"); | ||
50 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # load next a | ||
51 | ### | ||
52 | &adc($c1,"edx"); | ||
53 | &mov("edx",&DWP(($nb)*4,$a,"",0)) if ($pos == 1) && ($na != $nb); | ||
54 | ### | ||
55 | &adc($c2,0); | ||
56 | # is pos > 1, it means it is the last loop | ||
57 | &mov(&DWP($i*4,$r,"",0),$c0) if $pos > 0; # save r[]; | ||
58 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # load next b | ||
59 | } | ||
60 | |||
61 | sub sqr_add_c2 | ||
62 | { | ||
63 | local($r,$a,$ai,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; | ||
64 | |||
65 | # pos == -1 if eax and edx are pre-loaded, 0 to load from next | ||
66 | # words, and 1 if load return value | ||
67 | |||
68 | &comment("sqr a[$ai]*a[$bi]"); | ||
69 | |||
70 | # "eax" and "edx" will always be pre-loaded. | ||
71 | # &mov("eax",&DWP($ai*4,$a,"",0)) ; | ||
72 | # &mov("edx",&DWP($bi*4,$a,"",0)); | ||
73 | |||
74 | if ($ai == $bi) | ||
75 | { &mul("eax");} | ||
76 | else | ||
77 | { &mul("edx");} | ||
78 | &add("eax","eax"); | ||
79 | ### | ||
80 | &adc("edx","edx"); | ||
81 | ### | ||
82 | &adc($c2,0); | ||
83 | &add($c0,"eax"); | ||
84 | &adc($c1,"edx"); | ||
85 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # load next a | ||
86 | &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # load next b | ||
87 | &adc($c2,0); | ||
88 | &mov(&DWP($i*4,$r,"",0),$c0) if $pos > 0; # save r[]; | ||
89 | &mov("edx",&DWP(($nb)*4,$a,"",0)) if ($pos <= 1) && ($na != $nb); | ||
90 | ### | ||
91 | } | ||
92 | |||
93 | sub bn_mul_comba | ||
94 | { | ||
95 | local($name,$num)=@_; | ||
96 | local($a,$b,$c0,$c1,$c2); | ||
97 | local($i,$as,$ae,$bs,$be,$ai,$bi); | ||
98 | local($tot,$end); | ||
99 | |||
100 | &function_begin_B($name,""); | ||
101 | |||
102 | $c0="ebx"; | ||
103 | $c1="ecx"; | ||
104 | $c2="ebp"; | ||
105 | $a="esi"; | ||
106 | $b="edi"; | ||
107 | |||
108 | $as=0; | ||
109 | $ae=0; | ||
110 | $bs=0; | ||
111 | $be=0; | ||
112 | $tot=$num+$num-1; | ||
113 | |||
114 | &push("esi"); | ||
115 | &mov($a,&wparam(1)); | ||
116 | &push("edi"); | ||
117 | &mov($b,&wparam(2)); | ||
118 | &push("ebp"); | ||
119 | &push("ebx"); | ||
120 | |||
121 | &xor($c0,$c0); | ||
122 | &mov("eax",&DWP(0,$a,"",0)); # load the first word | ||
123 | &xor($c1,$c1); | ||
124 | &mov("edx",&DWP(0,$b,"",0)); # load the first second | ||
125 | |||
126 | for ($i=0; $i<$tot; $i++) | ||
127 | { | ||
128 | $ai=$as; | ||
129 | $bi=$bs; | ||
130 | $end=$be+1; | ||
131 | |||
132 | &comment("################## Calculate word $i"); | ||
133 | |||
134 | for ($j=$bs; $j<$end; $j++) | ||
135 | { | ||
136 | &xor($c2,$c2) if ($j == $bs); | ||
137 | if (($j+1) == $end) | ||
138 | { | ||
139 | $v=1; | ||
140 | $v=2 if (($i+1) == $tot); | ||
141 | } | ||
142 | else | ||
143 | { $v=0; } | ||
144 | if (($j+1) != $end) | ||
145 | { | ||
146 | $na=($ai-1); | ||
147 | $nb=($bi+1); | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | $na=$as+($i < ($num-1)); | ||
152 | $nb=$bs+($i >= ($num-1)); | ||
153 | } | ||
154 | #printf STDERR "[$ai,$bi] -> [$na,$nb]\n"; | ||
155 | &mul_add_c($a,$ai,$b,$bi,$c0,$c1,$c2,$v,$i,$na,$nb); | ||
156 | if ($v) | ||
157 | { | ||
158 | &comment("saved r[$i]"); | ||
159 | # &mov("eax",&wparam(0)); | ||
160 | # &mov(&DWP($i*4,"eax","",0),$c0); | ||
161 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
162 | } | ||
163 | $ai--; | ||
164 | $bi++; | ||
165 | } | ||
166 | $as++ if ($i < ($num-1)); | ||
167 | $ae++ if ($i >= ($num-1)); | ||
168 | |||
169 | $bs++ if ($i >= ($num-1)); | ||
170 | $be++ if ($i < ($num-1)); | ||
171 | } | ||
172 | &comment("save r[$i]"); | ||
173 | # &mov("eax",&wparam(0)); | ||
174 | &mov(&DWP($i*4,"eax","",0),$c0); | ||
175 | |||
176 | &pop("ebx"); | ||
177 | &pop("ebp"); | ||
178 | &pop("edi"); | ||
179 | &pop("esi"); | ||
180 | &ret(); | ||
181 | &function_end_B($name); | ||
182 | } | ||
183 | |||
184 | sub bn_sqr_comba | ||
185 | { | ||
186 | local($name,$num)=@_; | ||
187 | local($r,$a,$c0,$c1,$c2)=@_; | ||
188 | local($i,$as,$ae,$bs,$be,$ai,$bi); | ||
189 | local($b,$tot,$end,$half); | ||
190 | |||
191 | &function_begin_B($name,""); | ||
192 | |||
193 | $c0="ebx"; | ||
194 | $c1="ecx"; | ||
195 | $c2="ebp"; | ||
196 | $a="esi"; | ||
197 | $r="edi"; | ||
198 | |||
199 | &push("esi"); | ||
200 | &push("edi"); | ||
201 | &push("ebp"); | ||
202 | &push("ebx"); | ||
203 | &mov($r,&wparam(0)); | ||
204 | &mov($a,&wparam(1)); | ||
205 | &xor($c0,$c0); | ||
206 | &xor($c1,$c1); | ||
207 | &mov("eax",&DWP(0,$a,"",0)); # load the first word | ||
208 | |||
209 | $as=0; | ||
210 | $ae=0; | ||
211 | $bs=0; | ||
212 | $be=0; | ||
213 | $tot=$num+$num-1; | ||
214 | |||
215 | for ($i=0; $i<$tot; $i++) | ||
216 | { | ||
217 | $ai=$as; | ||
218 | $bi=$bs; | ||
219 | $end=$be+1; | ||
220 | |||
221 | &comment("############### Calculate word $i"); | ||
222 | for ($j=$bs; $j<$end; $j++) | ||
223 | { | ||
224 | &xor($c2,$c2) if ($j == $bs); | ||
225 | if (($ai-1) < ($bi+1)) | ||
226 | { | ||
227 | $v=1; | ||
228 | $v=2 if ($i+1) == $tot; | ||
229 | } | ||
230 | else | ||
231 | { $v=0; } | ||
232 | if (!$v) | ||
233 | { | ||
234 | $na=$ai-1; | ||
235 | $nb=$bi+1; | ||
236 | } | ||
237 | else | ||
238 | { | ||
239 | $na=$as+($i < ($num-1)); | ||
240 | $nb=$bs+($i >= ($num-1)); | ||
241 | } | ||
242 | if ($ai == $bi) | ||
243 | { | ||
244 | &sqr_add_c($r,$a,$ai,$bi, | ||
245 | $c0,$c1,$c2,$v,$i,$na,$nb); | ||
246 | } | ||
247 | else | ||
248 | { | ||
249 | &sqr_add_c2($r,$a,$ai,$bi, | ||
250 | $c0,$c1,$c2,$v,$i,$na,$nb); | ||
251 | } | ||
252 | if ($v) | ||
253 | { | ||
254 | &comment("saved r[$i]"); | ||
255 | #&mov(&DWP($i*4,$r,"",0),$c0); | ||
256 | ($c0,$c1,$c2)=($c1,$c2,$c0); | ||
257 | last; | ||
258 | } | ||
259 | $ai--; | ||
260 | $bi++; | ||
261 | } | ||
262 | $as++ if ($i < ($num-1)); | ||
263 | $ae++ if ($i >= ($num-1)); | ||
264 | |||
265 | $bs++ if ($i >= ($num-1)); | ||
266 | $be++ if ($i < ($num-1)); | ||
267 | } | ||
268 | &mov(&DWP($i*4,$r,"",0),$c0); | ||
269 | &pop("ebx"); | ||
270 | &pop("ebp"); | ||
271 | &pop("edi"); | ||
272 | &pop("esi"); | ||
273 | &ret(); | ||
274 | &function_end_B($name); | ||
275 | } | ||
276 | |||
277 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/div.pl b/src/lib/libssl/src/crypto/bn/asm/x86/div.pl new file mode 100644 index 0000000000..0e90152caa --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/div.pl | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_div_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | &mov("edx",&wparam(0)); # | ||
10 | &mov("eax",&wparam(1)); # | ||
11 | &mov("ebx",&wparam(2)); # | ||
12 | &div("ebx"); | ||
13 | &function_end($name); | ||
14 | } | ||
15 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/f b/src/lib/libssl/src/crypto/bn/asm/x86/f new file mode 100644 index 0000000000..22e4112224 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/f | |||
@@ -0,0 +1,3 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/mul.pl b/src/lib/libssl/src/crypto/bn/asm/x86/mul.pl new file mode 100644 index 0000000000..674cb9b055 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/mul.pl | |||
@@ -0,0 +1,77 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_mul_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $Low="eax"; | ||
12 | $High="edx"; | ||
13 | $a="ebx"; | ||
14 | $w="ecx"; | ||
15 | $r="edi"; | ||
16 | $c="esi"; | ||
17 | $num="ebp"; | ||
18 | |||
19 | &xor($c,$c); # clear carry | ||
20 | &mov($r,&wparam(0)); # | ||
21 | &mov($a,&wparam(1)); # | ||
22 | &mov($num,&wparam(2)); # | ||
23 | &mov($w,&wparam(3)); # | ||
24 | |||
25 | &and($num,0xfffffff8); # num / 8 | ||
26 | &jz(&label("mw_finish")); | ||
27 | |||
28 | &set_label("mw_loop",0); | ||
29 | for ($i=0; $i<32; $i+=4) | ||
30 | { | ||
31 | &comment("Round $i"); | ||
32 | |||
33 | &mov("eax",&DWP($i,$a,"",0)); # *a | ||
34 | &mul($w); # *a * w | ||
35 | &add("eax",$c); # L(t)+=c | ||
36 | # XXX | ||
37 | |||
38 | &adc("edx",0); # H(t)+=carry | ||
39 | &mov(&DWP($i,$r,"",0),"eax"); # *r= L(t); | ||
40 | |||
41 | &mov($c,"edx"); # c= H(t); | ||
42 | } | ||
43 | |||
44 | &comment(""); | ||
45 | &add($a,32); | ||
46 | &add($r,32); | ||
47 | &sub($num,8); | ||
48 | &jz(&label("mw_finish")); | ||
49 | &jmp(&label("mw_loop")); | ||
50 | |||
51 | &set_label("mw_finish",0); | ||
52 | &mov($num,&wparam(2)); # get num | ||
53 | &and($num,7); | ||
54 | &jnz(&label("mw_finish2")); | ||
55 | &jmp(&label("mw_end")); | ||
56 | |||
57 | &set_label("mw_finish2",1); | ||
58 | for ($i=0; $i<7; $i++) | ||
59 | { | ||
60 | &comment("Tail Round $i"); | ||
61 | &mov("eax",&DWP($i*4,$a,"",0));# *a | ||
62 | &mul($w); # *a * w | ||
63 | &add("eax",$c); # L(t)+=c | ||
64 | # XXX | ||
65 | &adc("edx",0); # H(t)+=carry | ||
66 | &mov(&DWP($i*4,$r,"",0),"eax");# *r= L(t); | ||
67 | &mov($c,"edx"); # c= H(t); | ||
68 | &dec($num) if ($i != 7-1); | ||
69 | &jz(&label("mw_end")) if ($i != 7-1); | ||
70 | } | ||
71 | &set_label("mw_end",0); | ||
72 | &mov("eax",$c); | ||
73 | |||
74 | &function_end($name); | ||
75 | } | ||
76 | |||
77 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/mul_add.pl b/src/lib/libssl/src/crypto/bn/asm/x86/mul_add.pl new file mode 100644 index 0000000000..61830d3a90 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/mul_add.pl | |||
@@ -0,0 +1,87 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_mul_add_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $Low="eax"; | ||
12 | $High="edx"; | ||
13 | $a="ebx"; | ||
14 | $w="ebp"; | ||
15 | $r="edi"; | ||
16 | $c="esi"; | ||
17 | |||
18 | &xor($c,$c); # clear carry | ||
19 | &mov($r,&wparam(0)); # | ||
20 | |||
21 | &mov("ecx",&wparam(2)); # | ||
22 | &mov($a,&wparam(1)); # | ||
23 | |||
24 | &and("ecx",0xfffffff8); # num / 8 | ||
25 | &mov($w,&wparam(3)); # | ||
26 | |||
27 | &push("ecx"); # Up the stack for a tmp variable | ||
28 | |||
29 | &jz(&label("maw_finish")); | ||
30 | |||
31 | &set_label("maw_loop",0); | ||
32 | |||
33 | &mov(&swtmp(0),"ecx"); # | ||
34 | |||
35 | for ($i=0; $i<32; $i+=4) | ||
36 | { | ||
37 | &comment("Round $i"); | ||
38 | |||
39 | &mov("eax",&DWP($i,$a,"",0)); # *a | ||
40 | &mul($w); # *a * w | ||
41 | &add("eax",$c); # L(t)+= *r | ||
42 | &mov($c,&DWP($i,$r,"",0)); # L(t)+= *r | ||
43 | &adc("edx",0); # H(t)+=carry | ||
44 | &add("eax",$c); # L(t)+=c | ||
45 | &adc("edx",0); # H(t)+=carry | ||
46 | &mov(&DWP($i,$r,"",0),"eax"); # *r= L(t); | ||
47 | &mov($c,"edx"); # c= H(t); | ||
48 | } | ||
49 | |||
50 | &comment(""); | ||
51 | &mov("ecx",&swtmp(0)); # | ||
52 | &add($a,32); | ||
53 | &add($r,32); | ||
54 | &sub("ecx",8); | ||
55 | &jnz(&label("maw_loop")); | ||
56 | |||
57 | &set_label("maw_finish",0); | ||
58 | &mov("ecx",&wparam(2)); # get num | ||
59 | &and("ecx",7); | ||
60 | &jnz(&label("maw_finish2")); # helps branch prediction | ||
61 | &jmp(&label("maw_end")); | ||
62 | |||
63 | &set_label("maw_finish2",1); | ||
64 | for ($i=0; $i<7; $i++) | ||
65 | { | ||
66 | &comment("Tail Round $i"); | ||
67 | &mov("eax",&DWP($i*4,$a,"",0));# *a | ||
68 | &mul($w); # *a * w | ||
69 | &add("eax",$c); # L(t)+=c | ||
70 | &mov($c,&DWP($i*4,$r,"",0)); # L(t)+= *r | ||
71 | &adc("edx",0); # H(t)+=carry | ||
72 | &add("eax",$c); | ||
73 | &adc("edx",0); # H(t)+=carry | ||
74 | &dec("ecx") if ($i != 7-1); | ||
75 | &mov(&DWP($i*4,$r,"",0),"eax"); # *r= L(t); | ||
76 | &mov($c,"edx"); # c= H(t); | ||
77 | &jz(&label("maw_end")) if ($i != 7-1); | ||
78 | } | ||
79 | &set_label("maw_end",0); | ||
80 | &mov("eax",$c); | ||
81 | |||
82 | &pop("ecx"); # clear variable from | ||
83 | |||
84 | &function_end($name); | ||
85 | } | ||
86 | |||
87 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/sqr.pl b/src/lib/libssl/src/crypto/bn/asm/x86/sqr.pl new file mode 100644 index 0000000000..1f90993cf6 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/sqr.pl | |||
@@ -0,0 +1,60 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_sqr_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $r="esi"; | ||
12 | $a="edi"; | ||
13 | $num="ebx"; | ||
14 | |||
15 | &mov($r,&wparam(0)); # | ||
16 | &mov($a,&wparam(1)); # | ||
17 | &mov($num,&wparam(2)); # | ||
18 | |||
19 | &and($num,0xfffffff8); # num / 8 | ||
20 | &jz(&label("sw_finish")); | ||
21 | |||
22 | &set_label("sw_loop",0); | ||
23 | for ($i=0; $i<32; $i+=4) | ||
24 | { | ||
25 | &comment("Round $i"); | ||
26 | &mov("eax",&DWP($i,$a,"",0)); # *a | ||
27 | # XXX | ||
28 | &mul("eax"); # *a * *a | ||
29 | &mov(&DWP($i*2,$r,"",0),"eax"); # | ||
30 | &mov(&DWP($i*2+4,$r,"",0),"edx");# | ||
31 | } | ||
32 | |||
33 | &comment(""); | ||
34 | &add($a,32); | ||
35 | &add($r,64); | ||
36 | &sub($num,8); | ||
37 | &jnz(&label("sw_loop")); | ||
38 | |||
39 | &set_label("sw_finish",0); | ||
40 | &mov($num,&wparam(2)); # get num | ||
41 | &and($num,7); | ||
42 | &jz(&label("sw_end")); | ||
43 | |||
44 | for ($i=0; $i<7; $i++) | ||
45 | { | ||
46 | &comment("Tail Round $i"); | ||
47 | &mov("eax",&DWP($i*4,$a,"",0)); # *a | ||
48 | # XXX | ||
49 | &mul("eax"); # *a * *a | ||
50 | &mov(&DWP($i*8,$r,"",0),"eax"); # | ||
51 | &dec($num) if ($i != 7-1); | ||
52 | &mov(&DWP($i*8+4,$r,"",0),"edx"); | ||
53 | &jz(&label("sw_end")) if ($i != 7-1); | ||
54 | } | ||
55 | &set_label("sw_end",0); | ||
56 | |||
57 | &function_end($name); | ||
58 | } | ||
59 | |||
60 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86/sub.pl b/src/lib/libssl/src/crypto/bn/asm/x86/sub.pl new file mode 100644 index 0000000000..837b0e1b07 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/asm/x86/sub.pl | |||
@@ -0,0 +1,76 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | # x86 assember | ||
3 | |||
4 | sub bn_sub_words | ||
5 | { | ||
6 | local($name)=@_; | ||
7 | |||
8 | &function_begin($name,""); | ||
9 | |||
10 | &comment(""); | ||
11 | $a="esi"; | ||
12 | $b="edi"; | ||
13 | $c="eax"; | ||
14 | $r="ebx"; | ||
15 | $tmp1="ecx"; | ||
16 | $tmp2="edx"; | ||
17 | $num="ebp"; | ||
18 | |||
19 | &mov($r,&wparam(0)); # get r | ||
20 | &mov($a,&wparam(1)); # get a | ||
21 | &mov($b,&wparam(2)); # get b | ||
22 | &mov($num,&wparam(3)); # get num | ||
23 | &xor($c,$c); # clear carry | ||
24 | &and($num,0xfffffff8); # num / 8 | ||
25 | |||
26 | &jz(&label("aw_finish")); | ||
27 | |||
28 | &set_label("aw_loop",0); | ||
29 | for ($i=0; $i<8; $i++) | ||
30 | { | ||
31 | &comment("Round $i"); | ||
32 | |||
33 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
34 | &mov($tmp2,&DWP($i*4,$b,"",0)); # *b | ||
35 | &sub($tmp1,$c); | ||
36 | &mov($c,0); | ||
37 | &adc($c,$c); | ||
38 | &sub($tmp1,$tmp2); | ||
39 | &adc($c,0); | ||
40 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *r | ||
41 | } | ||
42 | |||
43 | &comment(""); | ||
44 | &add($a,32); | ||
45 | &add($b,32); | ||
46 | &add($r,32); | ||
47 | &sub($num,8); | ||
48 | &jnz(&label("aw_loop")); | ||
49 | |||
50 | &set_label("aw_finish",0); | ||
51 | &mov($num,&wparam(3)); # get num | ||
52 | &and($num,7); | ||
53 | &jz(&label("aw_end")); | ||
54 | |||
55 | for ($i=0; $i<7; $i++) | ||
56 | { | ||
57 | &comment("Tail Round $i"); | ||
58 | &mov($tmp1,&DWP($i*4,$a,"",0)); # *a | ||
59 | &mov($tmp2,&DWP($i*4,$b,"",0));# *b | ||
60 | &sub($tmp1,$c); | ||
61 | &mov($c,0); | ||
62 | &adc($c,$c); | ||
63 | &sub($tmp1,$tmp2); | ||
64 | &adc($c,0); | ||
65 | &dec($num) if ($i != 6); | ||
66 | &mov(&DWP($i*4,$r,"",0),$tmp1); # *a | ||
67 | &jz(&label("aw_end")) if ($i != 6); | ||
68 | } | ||
69 | &set_label("aw_end",0); | ||
70 | |||
71 | # &mov("eax",$c); # $c is "eax" | ||
72 | |||
73 | &function_end($name); | ||
74 | } | ||
75 | |||
76 | 1; | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/b_sqr.c b/src/lib/libssl/src/crypto/bn/old/b_sqr.c new file mode 100644 index 0000000000..715cb1c8ab --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/b_sqr.c | |||
@@ -0,0 +1,199 @@ | |||
1 | /* crypto/bn/bn_mul.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | static int bn_mm(BIGNUM *m,BIGNUM *A,BIGNUM *B, BIGNUM *sk,BN_CTX *ctx); | ||
64 | |||
65 | /* r must be different to a and b */ | ||
66 | /* int BN_mmul(r, a, b) */ | ||
67 | int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b) | ||
68 | { | ||
69 | BN_ULONG *ap,*bp,*rp; | ||
70 | BIGNUM *sk; | ||
71 | int i,n,ret; | ||
72 | int max,al,bl; | ||
73 | BN_CTX ctx; | ||
74 | |||
75 | bn_check_top(a); | ||
76 | bn_check_top(b); | ||
77 | |||
78 | al=a->top; | ||
79 | bl=b->top; | ||
80 | if ((al == 0) || (bl == 0)) | ||
81 | { | ||
82 | r->top=0; | ||
83 | return(1); | ||
84 | } | ||
85 | #ifdef BN_MUL_DEBUG | ||
86 | printf("BN_mul(%d,%d)\n",a->top,b->top); | ||
87 | #endif | ||
88 | |||
89 | if ( (bn_limit_bits > 0) && | ||
90 | (bl > bn_limit_num) && (al > bn_limit_num)) | ||
91 | { | ||
92 | n=(BN_num_bits_word(al|bl)-bn_limit_bits); | ||
93 | n*=2; | ||
94 | sk=(BIGNUM *)Malloc(sizeof(BIGNUM)*n); | ||
95 | memset(sk,0,sizeof(BIGNUM)*n); | ||
96 | memset(&ctx,0,sizeof(ctx)); | ||
97 | |||
98 | ret=bn_mm(r,a,b,&(sk[0]),&ctx); | ||
99 | for (i=0; i<n; i+=2) | ||
100 | { | ||
101 | BN_clear_free(&sk[i]); | ||
102 | BN_clear_free(&sk[i+1]); | ||
103 | } | ||
104 | Free(sk); | ||
105 | return(ret); | ||
106 | } | ||
107 | |||
108 | max=(al+bl); | ||
109 | if (bn_wexpand(r,max) == NULL) return(0); | ||
110 | r->top=max; | ||
111 | r->neg=a->neg^b->neg; | ||
112 | ap=a->d; | ||
113 | bp=b->d; | ||
114 | rp=r->d; | ||
115 | |||
116 | rp[al]=bn_mul_words(rp,ap,al,*(bp++)); | ||
117 | rp++; | ||
118 | for (i=1; i<bl; i++) | ||
119 | { | ||
120 | rp[al]=bn_mul_add_words(rp,ap,al,*(bp++)); | ||
121 | rp++; | ||
122 | } | ||
123 | if ((max > 0) && (r->d[max-1] == 0)) r->top--; | ||
124 | return(1); | ||
125 | } | ||
126 | |||
127 | |||
128 | #define ahal (sk[0]) | ||
129 | #define blbh (sk[1]) | ||
130 | |||
131 | /* r must be different to a and b */ | ||
132 | int bn_mm(BIGNUM *m, BIGNUM *A, BIGNUM *B, BIGNUM *sk, BN_CTX *ctx) | ||
133 | { | ||
134 | int n,num,sqr=0; | ||
135 | int an,bn; | ||
136 | BIGNUM ah,al,bh,bl; | ||
137 | |||
138 | an=A->top; | ||
139 | bn=B->top; | ||
140 | #ifdef BN_MUL_DEBUG | ||
141 | printf("bn_mm(%d,%d)\n",A->top,B->top); | ||
142 | #endif | ||
143 | |||
144 | if (A == B) sqr=1; | ||
145 | num=(an>bn)?an:bn; | ||
146 | n=(num+1)/2; | ||
147 | /* Are going to now chop things into 'num' word chunks. */ | ||
148 | |||
149 | BN_init(&ah); | ||
150 | BN_init(&al); | ||
151 | BN_init(&bh); | ||
152 | BN_init(&bl); | ||
153 | |||
154 | bn_set_low (&al,A,n); | ||
155 | bn_set_high(&ah,A,n); | ||
156 | bn_set_low (&bl,B,n); | ||
157 | bn_set_high(&bh,B,n); | ||
158 | |||
159 | BN_sub(&ahal,&ah,&al); | ||
160 | BN_sub(&blbh,&bl,&bh); | ||
161 | |||
162 | if (num <= (bn_limit_num+bn_limit_num)) | ||
163 | { | ||
164 | BN_mul(m,&ahal,&blbh); | ||
165 | if (sqr) | ||
166 | { | ||
167 | BN_sqr(&ahal,&al,ctx); | ||
168 | BN_sqr(&blbh,&ah,ctx); | ||
169 | } | ||
170 | else | ||
171 | { | ||
172 | BN_mul(&ahal,&al,&bl); | ||
173 | BN_mul(&blbh,&ah,&bh); | ||
174 | } | ||
175 | } | ||
176 | else | ||
177 | { | ||
178 | bn_mm(m,&ahal,&blbh,&(sk[2]),ctx); | ||
179 | bn_mm(&ahal,&al,&bl,&(sk[2]),ctx); | ||
180 | bn_mm(&blbh,&ah,&bh,&(sk[2]),ctx); | ||
181 | } | ||
182 | |||
183 | BN_add(m,m,&ahal); | ||
184 | BN_add(m,m,&blbh); | ||
185 | |||
186 | BN_lshift(m,m,n*BN_BITS2); | ||
187 | BN_lshift(&blbh,&blbh,n*BN_BITS2*2); | ||
188 | |||
189 | BN_add(m,m,&ahal); | ||
190 | BN_add(m,m,&blbh); | ||
191 | |||
192 | m->neg=A->neg^B->neg; | ||
193 | return(1); | ||
194 | } | ||
195 | #undef ahal (sk[0]) | ||
196 | #undef blbh (sk[1]) | ||
197 | |||
198 | #include "bn_low.c" | ||
199 | #include "bn_high.c" | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_com.c b/src/lib/libssl/src/crypto/bn/old/bn_com.c new file mode 100644 index 0000000000..7666b2304c --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_com.c | |||
@@ -0,0 +1,90 @@ | |||
1 | /* crypto/bn/bn_mulw.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | #ifdef BN_LLONG | ||
64 | |||
65 | ab | ||
66 | 12 | ||
67 | a2 b2 | ||
68 | a1 b1 | ||
69 | |||
70 | abc | ||
71 | 123 | ||
72 | a3 b3 c3 | ||
73 | a2 b2 c2 | ||
74 | a1 b1 c1 | ||
75 | |||
76 | abcd | ||
77 | 1234 | ||
78 | a4 b4 c4 d4 | ||
79 | a3 b3 c3 d3 | ||
80 | a2 b2 c2 d2 | ||
81 | a1 b1 c1 d1 | ||
82 | |||
83 | abcde | ||
84 | 01234 | ||
85 | a5 b5 c5 d5 e5 | ||
86 | a4 b4 c4 d4 e4 | ||
87 | a3 b3 c3 d3 e3 | ||
88 | a2 b2 c2 d2 e2 | ||
89 | a1 b1 c1 d1 e1 | ||
90 | a0 b0 c0 d0 e0 | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_high.c b/src/lib/libssl/src/crypto/bn/old/bn_high.c new file mode 100644 index 0000000000..763bcb605b --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_high.c | |||
@@ -0,0 +1,135 @@ | |||
1 | #include <stdio.h> | ||
2 | #include "cryptlib.h" | ||
3 | #include "bn_lcl.h" | ||
4 | |||
5 | #undef BN_MUL_HIGH_DEBUG | ||
6 | |||
7 | #ifdef BN_MUL_HIGH_DEBUG | ||
8 | #define debug_BN_print(a,b,c) BN_print_fp(a,b); printf(c); | ||
9 | #else | ||
10 | #define debug_BN_print(a,b,c) | ||
11 | #endif | ||
12 | |||
13 | int BN_mul_high(BIGNUM *r,BIGNUM *a,BIGNUM *b,BIGNUM *low, int words); | ||
14 | |||
15 | #undef t1 | ||
16 | #undef t2 | ||
17 | |||
18 | int BN_mul_high(BIGNUM *r, BIGNUM *a, BIGNUM *b, BIGNUM *low, int words) | ||
19 | { | ||
20 | int w2,borrow=0,full=0; | ||
21 | BIGNUM t1,t2,t3,h,ah,al,bh,bl,m,s0,s1; | ||
22 | BN_ULONG ul1,ul2; | ||
23 | |||
24 | BN_mul(r,a,b); | ||
25 | BN_rshift(r,r,words*BN_BITS2); | ||
26 | return(1); | ||
27 | |||
28 | w2=(words+1)/2; | ||
29 | |||
30 | #ifdef BN_MUL_HIGH_DEBUG | ||
31 | fprintf(stdout,"words=%d w2=%d\n",words,w2); | ||
32 | #endif | ||
33 | debug_BN_print(stdout,a," a\n"); | ||
34 | debug_BN_print(stdout,b," b\n"); | ||
35 | debug_BN_print(stdout,low," low\n"); | ||
36 | BN_init(&al); BN_init(&ah); | ||
37 | BN_init(&bl); BN_init(&bh); | ||
38 | BN_init(&t1); BN_init(&t2); BN_init(&t3); | ||
39 | BN_init(&s0); BN_init(&s1); | ||
40 | BN_init(&h); BN_init(&m); | ||
41 | |||
42 | bn_set_low (&al,a,w2); | ||
43 | bn_set_high(&ah,a,w2); | ||
44 | bn_set_low (&bl,b,w2); | ||
45 | bn_set_high(&bh,b,w2); | ||
46 | |||
47 | bn_set_low(&s0,low,w2); | ||
48 | bn_set_high(&s1,low,w2); | ||
49 | |||
50 | debug_BN_print(stdout,&al," al\n"); | ||
51 | debug_BN_print(stdout,&ah," ah\n"); | ||
52 | debug_BN_print(stdout,&bl," bl\n"); | ||
53 | debug_BN_print(stdout,&bh," bh\n"); | ||
54 | debug_BN_print(stdout,&s0," s0\n"); | ||
55 | debug_BN_print(stdout,&s1," s1\n"); | ||
56 | |||
57 | /* Calculate (al-ah)*(bh-bl) */ | ||
58 | BN_sub(&t1,&al,&ah); | ||
59 | BN_sub(&t2,&bh,&bl); | ||
60 | BN_mul(&m,&t1,&t2); | ||
61 | |||
62 | /* Calculate ah*bh */ | ||
63 | BN_mul(&h,&ah,&bh); | ||
64 | |||
65 | /* s0 == low(al*bl) | ||
66 | * s1 == low(ah*bh)+low((al-ah)*(bh-bl))+low(al*bl)+high(al*bl) | ||
67 | * We know s0 and s1 so the only unknown is high(al*bl) | ||
68 | * high(al*bl) == s1 - low(ah*bh+(al-ah)*(bh-bl)+s0) | ||
69 | */ | ||
70 | BN_add(&m,&m,&h); | ||
71 | BN_add(&t2,&m,&s0); | ||
72 | |||
73 | debug_BN_print(stdout,&t2," middle value\n"); | ||
74 | |||
75 | /* Quick and dirty mask off of high words */ | ||
76 | if (w2 < t2.top) t2.top=w2; | ||
77 | #if 0 | ||
78 | bn_set_low(&t3,&t2,w2); | ||
79 | #endif | ||
80 | |||
81 | debug_BN_print(stdout,&t2," low middle value\n"); | ||
82 | BN_sub(&t1,&s1,&t2); | ||
83 | |||
84 | if (t1.neg) | ||
85 | { | ||
86 | debug_BN_print(stdout,&t1," before\n"); | ||
87 | BN_zero(&t2); | ||
88 | BN_set_bit(&t2,w2*BN_BITS2); | ||
89 | BN_add(&t1,&t2,&t1); | ||
90 | /* BN_mask_bits(&t1,w2*BN_BITS2); */ | ||
91 | /* if (words < t1.top) t1.top=words; */ | ||
92 | debug_BN_print(stdout,&t1," after\n"); | ||
93 | borrow=1; | ||
94 | } | ||
95 | |||
96 | /* XXXXX SPEED THIS UP */ | ||
97 | /* al*bl == high(al*bl)<<words+s0 */ | ||
98 | BN_lshift(&t1,&t1,w2*BN_BITS2); | ||
99 | BN_add(&t1,&t1,&s0); | ||
100 | if (w2*2 < t1.top) t1.top=w2*2; /* This should not happen? */ | ||
101 | |||
102 | /* We now have | ||
103 | * al*bl - t1 | ||
104 | * (al-ah)*(bh-bl)+ah*bh - m | ||
105 | * ah*bh - h | ||
106 | */ | ||
107 | #if 0 | ||
108 | BN_add(&m,&m,&t1); | ||
109 | debug_BN_print(stdout,&t1," s10\n"); | ||
110 | debug_BN_print(stdout,&m," s21\n"); | ||
111 | debug_BN_print(stdout,&h," s32\n"); | ||
112 | BN_lshift(&m,&m,w2*BN_BITS2); | ||
113 | BN_lshift(&h,&h,w2*2*BN_BITS2); | ||
114 | BN_add(r,&m,&t1); | ||
115 | BN_add(r,r,&h); | ||
116 | BN_rshift(r,r,w2*2*BN_BITS2); | ||
117 | #else | ||
118 | BN_add(&m,&m,&t1); /* Do a cmp then +1 if needed? */ | ||
119 | bn_set_high(&t3,&t1,w2); | ||
120 | BN_add(&m,&m,&t3); | ||
121 | bn_set_high(&t3,&m,w2); | ||
122 | BN_add(r,&h,&t3); | ||
123 | #endif | ||
124 | |||
125 | #ifdef BN_MUL_HIGH_DEBUG | ||
126 | printf("carry=%d\n",borrow); | ||
127 | #endif | ||
128 | debug_BN_print(stdout,r," ret\n"); | ||
129 | BN_free(&t1); BN_free(&t2); | ||
130 | BN_free(&m); BN_free(&h); | ||
131 | return(1); | ||
132 | } | ||
133 | |||
134 | |||
135 | |||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_ka.c b/src/lib/libssl/src/crypto/bn/old/bn_ka.c new file mode 100644 index 0000000000..378c94dc5a --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_ka.c | |||
@@ -0,0 +1,567 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <strings.h> | ||
4 | #include "bn_lcl.h" | ||
5 | |||
6 | /* r is 2*n2 words in size, | ||
7 | * a and b are both n2 words in size. | ||
8 | * n2 must be a power of 2. | ||
9 | * We multiply and return the result. | ||
10 | * t must be 2*n2 words in size | ||
11 | * We calulate | ||
12 | * a[0]*b[0] | ||
13 | * a[0]*b[0]+a[1]*b[1]+(a[0]-a[1])*(b[1]-b[0]) | ||
14 | * a[1]*b[1] | ||
15 | */ | ||
16 | void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2, | ||
17 | BN_ULONG *t) | ||
18 | { | ||
19 | int n=n2/2; | ||
20 | int neg,zero,c1,c2; | ||
21 | BN_ULONG ln,lo,*p; | ||
22 | |||
23 | #ifdef BN_COUNT | ||
24 | printf(" bn_mul_recursive %d * %d\n",n2,n2); | ||
25 | #endif | ||
26 | if (n2 <= 8) | ||
27 | { | ||
28 | if (n2 == 8) | ||
29 | bn_mul_comba8(r,a,b); | ||
30 | else | ||
31 | bn_mul_normal(r,a,n2,b,n2); | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | if (n2 < BN_MUL_RECURSIVE_SIZE_NORMAL) | ||
36 | { | ||
37 | /* This should not happen */ | ||
38 | /*abort(); */ | ||
39 | bn_mul_normal(r,a,n2,b,n2); | ||
40 | return; | ||
41 | } | ||
42 | /* r=(a[0]-a[1])*(b[1]-b[0]) */ | ||
43 | c1=bn_cmp_words(a,&(a[n]),n); | ||
44 | c2=bn_cmp_words(&(b[n]),b,n); | ||
45 | zero=neg=0; | ||
46 | switch (c1*3+c2) | ||
47 | { | ||
48 | case -4: | ||
49 | bn_sub_words(t, &(a[n]),a, n); /* - */ | ||
50 | bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */ | ||
51 | break; | ||
52 | case -3: | ||
53 | zero=1; | ||
54 | break; | ||
55 | case -2: | ||
56 | bn_sub_words(t, &(a[n]),a, n); /* - */ | ||
57 | bn_sub_words(&(t[n]),&(b[n]),b, n); /* + */ | ||
58 | neg=1; | ||
59 | break; | ||
60 | case -1: | ||
61 | case 0: | ||
62 | case 1: | ||
63 | zero=1; | ||
64 | break; | ||
65 | case 2: | ||
66 | bn_sub_words(t, a, &(a[n]),n); /* + */ | ||
67 | bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */ | ||
68 | neg=1; | ||
69 | break; | ||
70 | case 3: | ||
71 | zero=1; | ||
72 | break; | ||
73 | case 4: | ||
74 | bn_sub_words(t, a, &(a[n]),n); | ||
75 | bn_sub_words(&(t[n]),&(b[n]),b, n); | ||
76 | break; | ||
77 | } | ||
78 | |||
79 | if (n == 8) | ||
80 | { | ||
81 | if (!zero) | ||
82 | bn_mul_comba8(&(t[n2]),t,&(t[n])); | ||
83 | else | ||
84 | memset(&(t[n2]),0,8*sizeof(BN_ULONG)); | ||
85 | |||
86 | bn_mul_comba8(r,a,b); | ||
87 | bn_mul_comba8(&(r[n2]),&(a[n]),&(b[n])); | ||
88 | } | ||
89 | else | ||
90 | { | ||
91 | p= &(t[n2*2]); | ||
92 | if (!zero) | ||
93 | bn_mul_recursive(&(t[n2]),t,&(t[n]),n,p); | ||
94 | else | ||
95 | memset(&(t[n2]),0,n*sizeof(BN_ULONG)); | ||
96 | bn_mul_recursive(r,a,b,n,p); | ||
97 | bn_mul_recursive(&(r[n2]),&(a[n]),&(b[n]),n,p); | ||
98 | } | ||
99 | |||
100 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0]), c1 is the sign | ||
101 | * r[10] holds (a[0]*b[0]) | ||
102 | * r[32] holds (b[1]*b[1]) | ||
103 | */ | ||
104 | |||
105 | c1=bn_add_words(t,r,&(r[n2]),n2); | ||
106 | |||
107 | if (neg) /* if t[32] is negative */ | ||
108 | { | ||
109 | c1-=bn_sub_words(&(t[n2]),t,&(t[n2]),n2); | ||
110 | } | ||
111 | else | ||
112 | { | ||
113 | /* Might have a carry */ | ||
114 | c1+=bn_add_words(&(t[n2]),&(t[n2]),t,n2); | ||
115 | } | ||
116 | |||
117 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0])+(a[0]*b[0])+(a[1]*b[1]) | ||
118 | * r[10] holds (a[0]*b[0]) | ||
119 | * r[32] holds (b[1]*b[1]) | ||
120 | * c1 holds the carry bits | ||
121 | */ | ||
122 | c1+=bn_add_words(&(r[n]),&(r[n]),&(t[n2]),n2); | ||
123 | if (c1) | ||
124 | { | ||
125 | p= &(r[n+n2]); | ||
126 | lo= *p; | ||
127 | ln=(lo+c1)&BN_MASK2; | ||
128 | *p=ln; | ||
129 | |||
130 | /* The overflow will stop before we over write | ||
131 | * words we should not overwrite */ | ||
132 | if (ln < c1) | ||
133 | { | ||
134 | do { | ||
135 | p++; | ||
136 | lo= *p; | ||
137 | ln=(lo+1)&BN_MASK2; | ||
138 | *p=ln; | ||
139 | } while (ln == 0); | ||
140 | } | ||
141 | } | ||
142 | } | ||
143 | |||
144 | /* n+tn is the word length | ||
145 | * t needs to be n*4 is size, as does r */ | ||
146 | void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int tn, | ||
147 | int n, BN_ULONG *t) | ||
148 | { | ||
149 | int n2=n*2,i,j; | ||
150 | int c1; | ||
151 | BN_ULONG ln,lo,*p; | ||
152 | |||
153 | #ifdef BN_COUNT | ||
154 | printf(" bn_mul_part_recursive %d * %d\n",tn+n,tn+n); | ||
155 | #endif | ||
156 | if (n < 8) | ||
157 | { | ||
158 | i=tn+n; | ||
159 | bn_mul_normal(r,a,i,b,i); | ||
160 | return; | ||
161 | } | ||
162 | |||
163 | /* r=(a[0]-a[1])*(b[1]-b[0]) */ | ||
164 | bn_sub_words(t, a, &(a[n]),n); /* + */ | ||
165 | bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */ | ||
166 | |||
167 | if (n == 8) | ||
168 | { | ||
169 | bn_mul_comba8(&(t[n2]),t,&(t[n])); | ||
170 | bn_mul_comba8(r,a,b); | ||
171 | bn_mul_normal(&(r[n2]),&(a[n]),tn,&(b[n]),tn); | ||
172 | memset(&(r[n2+tn*2]),0,sizeof(BN_ULONG)*(n2-tn*2)); | ||
173 | } | ||
174 | else | ||
175 | { | ||
176 | p= &(t[n2*2]); | ||
177 | bn_mul_recursive(&(t[n2]),t,&(t[n]),n,p); | ||
178 | bn_mul_recursive(r,a,b,n,p); | ||
179 | i=n/2; | ||
180 | /* If there is only a bottom half to the number, | ||
181 | * just do it */ | ||
182 | j=tn-i; | ||
183 | if (j == 0) | ||
184 | { | ||
185 | bn_mul_recursive(&(r[n2]),&(a[n]),&(b[n]),i,p); | ||
186 | memset(&(r[n2+i*2]),0,sizeof(BN_ULONG)*(n2-i*2)); | ||
187 | } | ||
188 | else if (j > 0) /* eg, n == 16, i == 8 and tn == 11 */ | ||
189 | { | ||
190 | bn_mul_part_recursive(&(r[n2]),&(a[n]),&(b[n]), | ||
191 | j,i,p); | ||
192 | memset(&(r[n2+tn*2]),0, | ||
193 | sizeof(BN_ULONG)*(n2-tn*2)); | ||
194 | } | ||
195 | else /* (j < 0) eg, n == 16, i == 8 and tn == 5 */ | ||
196 | { | ||
197 | memset(&(r[n2]),0,sizeof(BN_ULONG)*(tn*2)); | ||
198 | for (;;) | ||
199 | { | ||
200 | i/=2; | ||
201 | if (i < tn) | ||
202 | { | ||
203 | bn_mul_part_recursive(&(r[n2]), | ||
204 | &(a[n]),&(b[n]), | ||
205 | tn-i,i,p); | ||
206 | break; | ||
207 | } | ||
208 | else if (i == tn) | ||
209 | { | ||
210 | bn_mul_recursive(&(r[n2]), | ||
211 | &(a[n]),&(b[n]), | ||
212 | i,p); | ||
213 | break; | ||
214 | } | ||
215 | } | ||
216 | } | ||
217 | } | ||
218 | |||
219 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0]), c1 is the sign | ||
220 | * r[10] holds (a[0]*b[0]) | ||
221 | * r[32] holds (b[1]*b[1]) | ||
222 | */ | ||
223 | |||
224 | c1=bn_add_words(t,r,&(r[n2]),n2); | ||
225 | c1-=bn_sub_words(&(t[n2]),t,&(t[n2]),n2); | ||
226 | |||
227 | /* t[32] holds (a[0]-a[1])*(b[1]-b[0])+(a[0]*b[0])+(a[1]*b[1]) | ||
228 | * r[10] holds (a[0]*b[0]) | ||
229 | * r[32] holds (b[1]*b[1]) | ||
230 | * c1 holds the carry bits | ||
231 | */ | ||
232 | c1+=bn_add_words(&(r[n]),&(r[n]),&(t[n2]),n2); | ||
233 | if (c1) | ||
234 | { | ||
235 | p= &(r[n+n2]); | ||
236 | lo= *p; | ||
237 | ln=(lo+c1)&BN_MASK2; | ||
238 | *p=ln; | ||
239 | |||
240 | /* The overflow will stop before we over write | ||
241 | * words we should not overwrite */ | ||
242 | if (ln < c1) | ||
243 | { | ||
244 | do { | ||
245 | p++; | ||
246 | lo= *p; | ||
247 | ln=(lo+1)&BN_MASK2; | ||
248 | *p=ln; | ||
249 | } while (ln == 0); | ||
250 | } | ||
251 | } | ||
252 | } | ||
253 | |||
254 | /* r is 2*n words in size, | ||
255 | * a and b are both n words in size. | ||
256 | * n must be a power of 2. | ||
257 | * We multiply and return the result. | ||
258 | * t must be 2*n words in size | ||
259 | * We calulate | ||
260 | * a[0]*b[0] | ||
261 | * a[0]*b[0]+a[1]*b[1]+(a[0]-a[1])*(b[1]-b[0]) | ||
262 | * a[1]*b[1] | ||
263 | */ | ||
264 | void bn_sqr_recursive(BN_ULONG *r, BN_ULONG *a, int n2, BN_ULONG *t) | ||
265 | { | ||
266 | int n=n2/2; | ||
267 | int zero,c1; | ||
268 | BN_ULONG ln,lo,*p; | ||
269 | |||
270 | #ifdef BN_COUNT | ||
271 | printf(" bn_sqr_recursive %d * %d\n",n2,n2); | ||
272 | #endif | ||
273 | if (n2 == 4) | ||
274 | { | ||
275 | bn_sqr_comba4(r,a); | ||
276 | return; | ||
277 | } | ||
278 | else if (n2 == 8) | ||
279 | { | ||
280 | bn_sqr_comba8(r,a); | ||
281 | return; | ||
282 | } | ||
283 | if (n2 < BN_SQR_RECURSIVE_SIZE_NORMAL) | ||
284 | { | ||
285 | bn_sqr_normal(r,a,n2,t); | ||
286 | return; | ||
287 | abort(); | ||
288 | } | ||
289 | /* r=(a[0]-a[1])*(a[1]-a[0]) */ | ||
290 | c1=bn_cmp_words(a,&(a[n]),n); | ||
291 | zero=0; | ||
292 | if (c1 > 0) | ||
293 | bn_sub_words(t,a,&(a[n]),n); | ||
294 | else if (c1 < 0) | ||
295 | bn_sub_words(t,&(a[n]),a,n); | ||
296 | else | ||
297 | zero=1; | ||
298 | |||
299 | /* The result will always be negative unless it is zero */ | ||
300 | |||
301 | if (n == 8) | ||
302 | { | ||
303 | if (!zero) | ||
304 | bn_sqr_comba8(&(t[n2]),t); | ||
305 | else | ||
306 | memset(&(t[n2]),0,8*sizeof(BN_ULONG)); | ||
307 | |||
308 | bn_sqr_comba8(r,a); | ||
309 | bn_sqr_comba8(&(r[n2]),&(a[n])); | ||
310 | } | ||
311 | else | ||
312 | { | ||
313 | p= &(t[n2*2]); | ||
314 | if (!zero) | ||
315 | bn_sqr_recursive(&(t[n2]),t,n,p); | ||
316 | else | ||
317 | memset(&(t[n2]),0,n*sizeof(BN_ULONG)); | ||
318 | bn_sqr_recursive(r,a,n,p); | ||
319 | bn_sqr_recursive(&(r[n2]),&(a[n]),n,p); | ||
320 | } | ||
321 | |||
322 | /* t[32] holds (a[0]-a[1])*(a[1]-a[0]), it is negative or zero | ||
323 | * r[10] holds (a[0]*b[0]) | ||
324 | * r[32] holds (b[1]*b[1]) | ||
325 | */ | ||
326 | |||
327 | c1=bn_add_words(t,r,&(r[n2]),n2); | ||
328 | |||
329 | /* t[32] is negative */ | ||
330 | c1-=bn_sub_words(&(t[n2]),t,&(t[n2]),n2); | ||
331 | |||
332 | /* t[32] holds (a[0]-a[1])*(a[1]-a[0])+(a[0]*a[0])+(a[1]*a[1]) | ||
333 | * r[10] holds (a[0]*a[0]) | ||
334 | * r[32] holds (a[1]*a[1]) | ||
335 | * c1 holds the carry bits | ||
336 | */ | ||
337 | c1+=bn_add_words(&(r[n]),&(r[n]),&(t[n2]),n2); | ||
338 | if (c1) | ||
339 | { | ||
340 | p= &(r[n+n2]); | ||
341 | lo= *p; | ||
342 | ln=(lo+c1)&BN_MASK2; | ||
343 | *p=ln; | ||
344 | |||
345 | /* The overflow will stop before we over write | ||
346 | * words we should not overwrite */ | ||
347 | if (ln < c1) | ||
348 | { | ||
349 | do { | ||
350 | p++; | ||
351 | lo= *p; | ||
352 | ln=(lo+1)&BN_MASK2; | ||
353 | *p=ln; | ||
354 | } while (ln == 0); | ||
355 | } | ||
356 | } | ||
357 | } | ||
358 | |||
359 | #if 1 | ||
360 | /* a and b must be the same size, which is n2. | ||
361 | * r needs to be n2 words and t needs to be n2*2 | ||
362 | */ | ||
363 | void bn_mul_low_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2, | ||
364 | BN_ULONG *t) | ||
365 | { | ||
366 | int n=n2/2; | ||
367 | |||
368 | #ifdef BN_COUNT | ||
369 | printf(" bn_mul_low_recursive %d * %d\n",n2,n2); | ||
370 | #endif | ||
371 | |||
372 | bn_mul_recursive(r,a,b,n,&(t[0])); | ||
373 | if (n > BN_MUL_LOW_RECURSIVE_SIZE_NORMAL) | ||
374 | { | ||
375 | bn_mul_low_recursive(&(t[0]),&(a[0]),&(b[n]),n,&(t[n2])); | ||
376 | bn_add_words(&(r[n]),&(r[n]),&(t[0]),n); | ||
377 | bn_mul_low_recursive(&(t[0]),&(a[n]),&(b[0]),n,&(t[n2])); | ||
378 | bn_add_words(&(r[n]),&(r[n]),&(t[0]),n); | ||
379 | } | ||
380 | else | ||
381 | { | ||
382 | bn_mul_low_normal(&(t[0]),&(a[0]),&(b[n]),n); | ||
383 | bn_mul_low_normal(&(t[n]),&(a[n]),&(b[0]),n); | ||
384 | bn_add_words(&(r[n]),&(r[n]),&(t[0]),n); | ||
385 | bn_add_words(&(r[n]),&(r[n]),&(t[n]),n); | ||
386 | } | ||
387 | } | ||
388 | |||
389 | /* a and b must be the same size, which is n2. | ||
390 | * r needs to be n2 words and t needs to be n2*2 | ||
391 | * l is the low words of the output. | ||
392 | * t needs to be n2*3 | ||
393 | */ | ||
394 | void bn_mul_high(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, BN_ULONG *l, int n2, | ||
395 | BN_ULONG *t) | ||
396 | { | ||
397 | int j,i,n,c1,c2; | ||
398 | int neg,oneg,zero; | ||
399 | BN_ULONG ll,lc,*lp,*mp; | ||
400 | |||
401 | #ifdef BN_COUNT | ||
402 | printf(" bn_mul_high %d * %d\n",n2,n2); | ||
403 | #endif | ||
404 | n=(n2+1)/2; | ||
405 | |||
406 | /* Calculate (al-ah)*(bh-bl) */ | ||
407 | neg=zero=0; | ||
408 | c1=bn_cmp_words(&(a[0]),&(a[n]),n); | ||
409 | c2=bn_cmp_words(&(b[n]),&(b[0]),n); | ||
410 | switch (c1*3+c2) | ||
411 | { | ||
412 | case -4: | ||
413 | bn_sub_words(&(r[0]),&(a[n]),&(a[0]),n); | ||
414 | bn_sub_words(&(r[n]),&(b[0]),&(b[n]),n); | ||
415 | break; | ||
416 | case -3: | ||
417 | zero=1; | ||
418 | break; | ||
419 | case -2: | ||
420 | bn_sub_words(&(r[0]),&(a[n]),&(a[0]),n); | ||
421 | bn_sub_words(&(r[n]),&(b[n]),&(b[0]),n); | ||
422 | neg=1; | ||
423 | break; | ||
424 | case -1: | ||
425 | case 0: | ||
426 | case 1: | ||
427 | zero=1; | ||
428 | break; | ||
429 | case 2: | ||
430 | bn_sub_words(&(r[0]),&(a[0]),&(a[n]),n); | ||
431 | bn_sub_words(&(r[n]),&(b[0]),&(b[n]),n); | ||
432 | neg=1; | ||
433 | break; | ||
434 | case 3: | ||
435 | zero=1; | ||
436 | break; | ||
437 | case 4: | ||
438 | bn_sub_words(&(r[0]),&(a[0]),&(a[n]),n); | ||
439 | bn_sub_words(&(r[n]),&(b[n]),&(b[0]),n); | ||
440 | break; | ||
441 | } | ||
442 | |||
443 | oneg=neg; | ||
444 | /* t[10] = (a[0]-a[1])*(b[1]-b[0]) */ | ||
445 | bn_mul_recursive(&(t[0]),&(r[0]),&(r[n]),n,&(t[n2])); | ||
446 | /* r[10] = (a[1]*b[1]) */ | ||
447 | bn_mul_recursive(r,&(a[n]),&(b[n]),n,&(t[n2])); | ||
448 | |||
449 | /* s0 == low(al*bl) | ||
450 | * s1 == low(ah*bh)+low((al-ah)*(bh-bl))+low(al*bl)+high(al*bl) | ||
451 | * We know s0 and s1 so the only unknown is high(al*bl) | ||
452 | * high(al*bl) == s1 - low(ah*bh+s0+(al-ah)*(bh-bl)) | ||
453 | * high(al*bl) == s1 - (r[0]+l[0]+t[0]) | ||
454 | */ | ||
455 | if (l != NULL) | ||
456 | { | ||
457 | lp= &(t[n2+n]); | ||
458 | c1=bn_add_words(lp,&(r[0]),&(l[0]),n); | ||
459 | } | ||
460 | else | ||
461 | { | ||
462 | c1=0; | ||
463 | lp= &(r[0]); | ||
464 | } | ||
465 | |||
466 | if (neg) | ||
467 | neg=bn_sub_words(&(t[n2]),lp,&(t[0]),n); | ||
468 | else | ||
469 | { | ||
470 | bn_add_words(&(t[n2]),lp,&(t[0]),n); | ||
471 | neg=0; | ||
472 | } | ||
473 | |||
474 | if (l != NULL) | ||
475 | { | ||
476 | bn_sub_words(&(t[n2+n]),&(l[n]),&(t[n2]),n); | ||
477 | } | ||
478 | else | ||
479 | { | ||
480 | lp= &(t[n2+n]); | ||
481 | mp= &(t[n2]); | ||
482 | for (i=0; i<n; i++) | ||
483 | lp[i]=((~mp[i])+1)&BN_MASK2; | ||
484 | } | ||
485 | |||
486 | /* s[0] = low(al*bl) | ||
487 | * t[3] = high(al*bl) | ||
488 | * t[10] = (a[0]-a[1])*(b[1]-b[0]) neg is the sign | ||
489 | * r[10] = (a[1]*b[1]) | ||
490 | */ | ||
491 | /* R[10] = al*bl | ||
492 | * R[21] = al*bl + ah*bh + (a[0]-a[1])*(b[1]-b[0]) | ||
493 | * R[32] = ah*bh | ||
494 | */ | ||
495 | /* R[1]=t[3]+l[0]+r[0](+-)t[0] (have carry/borrow) | ||
496 | * R[2]=r[0]+t[3]+r[1](+-)t[1] (have carry/borrow) | ||
497 | * R[3]=r[1]+(carry/borrow) | ||
498 | */ | ||
499 | if (l != NULL) | ||
500 | { | ||
501 | lp= &(t[n2]); | ||
502 | c1= bn_add_words(lp,&(t[n2+n]),&(l[0]),n); | ||
503 | } | ||
504 | else | ||
505 | { | ||
506 | lp= &(t[n2+n]); | ||
507 | c1=0; | ||
508 | } | ||
509 | c1+=bn_add_words(&(t[n2]),lp, &(r[0]),n); | ||
510 | if (oneg) | ||
511 | c1-=bn_sub_words(&(t[n2]),&(t[n2]),&(t[0]),n); | ||
512 | else | ||
513 | c1+=bn_add_words(&(t[n2]),&(t[n2]),&(t[0]),n); | ||
514 | |||
515 | c2 =bn_add_words(&(r[0]),&(r[0]),&(t[n2+n]),n); | ||
516 | c2+=bn_add_words(&(r[0]),&(r[0]),&(r[n]),n); | ||
517 | if (oneg) | ||
518 | c2-=bn_sub_words(&(r[0]),&(r[0]),&(t[n]),n); | ||
519 | else | ||
520 | c2+=bn_add_words(&(r[0]),&(r[0]),&(t[n]),n); | ||
521 | |||
522 | if (c1 != 0) /* Add starting at r[0], could be +ve or -ve */ | ||
523 | { | ||
524 | i=0; | ||
525 | if (c1 > 0) | ||
526 | { | ||
527 | lc=c1; | ||
528 | do { | ||
529 | ll=(r[i]+lc)&BN_MASK2; | ||
530 | r[i++]=ll; | ||
531 | lc=(lc > ll); | ||
532 | } while (lc); | ||
533 | } | ||
534 | else | ||
535 | { | ||
536 | lc= -c1; | ||
537 | do { | ||
538 | ll=r[i]; | ||
539 | r[i++]=(ll-lc)&BN_MASK2; | ||
540 | lc=(lc > ll); | ||
541 | } while (lc); | ||
542 | } | ||
543 | } | ||
544 | if (c2 != 0) /* Add starting at r[1] */ | ||
545 | { | ||
546 | i=n; | ||
547 | if (c2 > 0) | ||
548 | { | ||
549 | lc=c2; | ||
550 | do { | ||
551 | ll=(r[i]+lc)&BN_MASK2; | ||
552 | r[i++]=ll; | ||
553 | lc=(lc > ll); | ||
554 | } while (lc); | ||
555 | } | ||
556 | else | ||
557 | { | ||
558 | lc= -c2; | ||
559 | do { | ||
560 | ll=r[i]; | ||
561 | r[i++]=(ll-lc)&BN_MASK2; | ||
562 | lc=(lc > ll); | ||
563 | } while (lc); | ||
564 | } | ||
565 | } | ||
566 | } | ||
567 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_low.c b/src/lib/libssl/src/crypto/bn/old/bn_low.c new file mode 100644 index 0000000000..cbc406751c --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_low.c | |||
@@ -0,0 +1,194 @@ | |||
1 | /* crypto/bn/bn_mul.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | static int bn_mm_low(BIGNUM *m,BIGNUM *A,BIGNUM *B, int num, | ||
64 | BIGNUM *sk,BN_CTX *ctx); | ||
65 | int BN_mul_low(BIGNUM *r, BIGNUM *a, BIGNUM *b,int words); | ||
66 | |||
67 | /* r must be different to a and b */ | ||
68 | int BN_mul_low(BIGNUM *r, BIGNUM *a, BIGNUM *b, int num) | ||
69 | { | ||
70 | BN_ULONG *ap,*bp,*rp; | ||
71 | BIGNUM *sk; | ||
72 | int j,i,n,ret; | ||
73 | int max,al,bl; | ||
74 | BN_CTX ctx; | ||
75 | |||
76 | bn_check_top(a); | ||
77 | bn_check_top(b); | ||
78 | |||
79 | #ifdef BN_MUL_DEBUG | ||
80 | printf("BN_mul_low(%d,%d,%d)\n",a->top,b->top,num); | ||
81 | #endif | ||
82 | |||
83 | al=a->top; | ||
84 | bl=b->top; | ||
85 | if ((al == 0) || (bl == 0)) | ||
86 | { | ||
87 | r->top=0; | ||
88 | return(1); | ||
89 | } | ||
90 | |||
91 | if ((bn_limit_bits_low > 0) && (num > bn_limit_num_low)) | ||
92 | { | ||
93 | n=BN_num_bits_word(num*2)-bn_limit_bits_low; | ||
94 | n*=2; | ||
95 | sk=(BIGNUM *)Malloc(sizeof(BIGNUM)*n); | ||
96 | memset(sk,0,sizeof(BIGNUM)*n); | ||
97 | memset(&ctx,0,sizeof(ctx)); | ||
98 | |||
99 | ret=bn_mm_low(r,a,b,num,&(sk[0]),&ctx); | ||
100 | for (i=0; i<n; i+=2) | ||
101 | { | ||
102 | BN_clear_free(&sk[i]); | ||
103 | BN_clear_free(&sk[i+1]); | ||
104 | } | ||
105 | Free(sk); | ||
106 | return(ret); | ||
107 | } | ||
108 | |||
109 | max=(al+bl); | ||
110 | if (bn_wexpand(r,max) == NULL) return(0); | ||
111 | r->neg=a->neg^b->neg; | ||
112 | ap=a->d; | ||
113 | bp=b->d; | ||
114 | rp=r->d; | ||
115 | r->top=(max > num)?num:max; | ||
116 | |||
117 | rp[al]=bn_mul_words(rp,ap,al,*(bp++)); | ||
118 | rp++; | ||
119 | j=bl; | ||
120 | for (i=1; i<j; i++) | ||
121 | { | ||
122 | if (al >= num--) | ||
123 | { | ||
124 | al--; | ||
125 | if (al <= 0) break; | ||
126 | } | ||
127 | rp[al]=bn_mul_add_words(rp,ap,al,*(bp++)); | ||
128 | rp++; | ||
129 | } | ||
130 | |||
131 | while ((r->top > 0) && (r->d[r->top-1] == 0)) | ||
132 | r->top--; | ||
133 | return(1); | ||
134 | } | ||
135 | |||
136 | |||
137 | #define t1 (sk[0]) | ||
138 | #define t2 (sk[1]) | ||
139 | |||
140 | /* r must be different to a and b */ | ||
141 | int bn_mm_low(BIGNUM *m, BIGNUM *A, BIGNUM *B, int num, BIGNUM *sk, | ||
142 | BN_CTX *ctx) | ||
143 | { | ||
144 | int n; /* ,sqr=0; */ | ||
145 | int an,bn; | ||
146 | BIGNUM ah,al,bh,bl; | ||
147 | |||
148 | bn_wexpand(m,num+3); | ||
149 | an=A->top; | ||
150 | bn=B->top; | ||
151 | |||
152 | #ifdef BN_MUL_DEBUG | ||
153 | printf("bn_mm_low(%d,%d,%d)\n",A->top,B->top,num); | ||
154 | #endif | ||
155 | |||
156 | n=(num+1)/2; | ||
157 | |||
158 | BN_init(&ah); BN_init(&al); BN_init(&bh); BN_init(&bl); | ||
159 | |||
160 | bn_set_low( &al,A,n); | ||
161 | bn_set_high(&ah,A,n); | ||
162 | bn_set_low( &bl,B,n); | ||
163 | bn_set_high(&bh,B,n); | ||
164 | |||
165 | if (num <= (bn_limit_num_low+bn_limit_num_low)) | ||
166 | { | ||
167 | BN_mul(m,&al,&bl); | ||
168 | BN_mul_low(&t1,&al,&bh,n); | ||
169 | BN_mul_low(&t2,&ah,&bl,n); | ||
170 | } | ||
171 | else | ||
172 | { | ||
173 | bn_mm(m ,&al,&bl,&(sk[2]),ctx); | ||
174 | bn_mm_low(&t1,&al,&bh,n,&(sk[2]),ctx); | ||
175 | bn_mm_low(&t2,&ah,&bl,n,&(sk[2]),ctx); | ||
176 | } | ||
177 | |||
178 | BN_add(&t1,&t1,&t2); | ||
179 | |||
180 | /* We will now do an evil hack instead of | ||
181 | * BN_lshift(&t1,&t1,n*BN_BITS2); | ||
182 | * BN_add(m,m,&t1); | ||
183 | * BN_mask_bits(m,num*BN_BITS2); | ||
184 | */ | ||
185 | bn_set_high(&ah,m,n); ah.max=num+2; | ||
186 | BN_add(&ah,&ah,&t1); | ||
187 | m->top=num; | ||
188 | |||
189 | m->neg=A->neg^B->neg; | ||
190 | return(1); | ||
191 | } | ||
192 | |||
193 | #undef t1 (sk[0]) | ||
194 | #undef t2 (sk[1]) | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_m.c b/src/lib/libssl/src/crypto/bn/old/bn_m.c new file mode 100644 index 0000000000..522beb02bc --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_m.c | |||
@@ -0,0 +1,139 @@ | |||
1 | /* crypto/bn/bn_m.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | /*#include "cryptlib.h"*/ | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | #define limit_bits 5 /* 2^5, or 32 words */ | ||
64 | #define limit_num (1<<limit_bits) | ||
65 | |||
66 | int BN_m(BIGNUM *r, BIGNUM *a, BIGNUM *b) | ||
67 | { | ||
68 | BIGNUM *sk; | ||
69 | int i,n; | ||
70 | |||
71 | n=(BN_num_bits_word(a->top|b->top)-limit_bits); | ||
72 | n*=2; | ||
73 | sk=(BIGNUM *)malloc(sizeof(BIGNUM)*n); | ||
74 | for (i=0; i<n; i++) | ||
75 | BN_init(&(sk[i])); | ||
76 | |||
77 | return(BN_mm(r,a,b,&(sk[0]))); | ||
78 | } | ||
79 | |||
80 | #define ahal (sk[0]) | ||
81 | #define blbh (sk[1]) | ||
82 | |||
83 | /* r must be different to a and b */ | ||
84 | int BN_mm(BIGNUM *m, BIGNUM *A, BIGNUM *B, BIGNUM *sk) | ||
85 | { | ||
86 | int i,num,anum,bnum; | ||
87 | int an,bn; | ||
88 | BIGNUM ah,al,bh,bl; | ||
89 | |||
90 | an=A->top; | ||
91 | bn=B->top; | ||
92 | if ((an <= limit_num) || (bn <= limit_num)) | ||
93 | { | ||
94 | return(BN_mul(m,A,B)); | ||
95 | } | ||
96 | |||
97 | anum=(an>bn)?an:bn; | ||
98 | num=(anum)/2; | ||
99 | |||
100 | /* Are going to now chop things into 'num' word chunks. */ | ||
101 | bnum=num*BN_BITS2; | ||
102 | |||
103 | BN_init(&ahal); | ||
104 | BN_init(&blbh); | ||
105 | BN_init(&ah); | ||
106 | BN_init(&al); | ||
107 | BN_init(&bh); | ||
108 | BN_init(&bl); | ||
109 | |||
110 | al.top=num; | ||
111 | al.d=A->d; | ||
112 | ah.top=A->top-num; | ||
113 | ah.d= &(A->d[num]); | ||
114 | |||
115 | bl.top=num; | ||
116 | bl.d=B->d; | ||
117 | bh.top=B->top-num; | ||
118 | bh.d= &(B->d[num]); | ||
119 | |||
120 | BN_sub(&ahal,&ah,&al); | ||
121 | BN_sub(&blbh,&bl,&bh); | ||
122 | |||
123 | BN_mm(m,&ahal,&blbh,&(sk[2])); | ||
124 | BN_mm(&ahal,&al,&bl,&(sk[2])); | ||
125 | BN_mm(&blbh,&ah,&bh,&(sk[2])); | ||
126 | |||
127 | BN_add(m,m,&ahal); | ||
128 | BN_add(m,m,&blbh); | ||
129 | |||
130 | BN_lshift(m,m,bnum); | ||
131 | BN_add(m,m,&ahal); | ||
132 | |||
133 | BN_lshift(&blbh,&blbh,bnum*2); | ||
134 | BN_add(m,m,&blbh); | ||
135 | |||
136 | m->neg=A->neg^B->neg; | ||
137 | return(1); | ||
138 | } | ||
139 | |||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_mul.c.works b/src/lib/libssl/src/crypto/bn/old/bn_mul.c.works new file mode 100644 index 0000000000..6d565d44a2 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_mul.c.works | |||
@@ -0,0 +1,219 @@ | |||
1 | /* crypto/bn/bn_mul.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include "bn_lcl.h" | ||
62 | |||
63 | int bn_mm(BIGNUM *m,BIGNUM *A,BIGNUM *B, BIGNUM *sk,BN_CTX *ctx); | ||
64 | |||
65 | /* r must be different to a and b */ | ||
66 | int BN_mul(r, a, b) | ||
67 | BIGNUM *r; | ||
68 | BIGNUM *a; | ||
69 | BIGNUM *b; | ||
70 | { | ||
71 | BN_ULONG *ap,*bp,*rp; | ||
72 | BIGNUM *sk; | ||
73 | int i,n,ret; | ||
74 | int max,al,bl; | ||
75 | BN_CTX ctx; | ||
76 | |||
77 | bn_check_top(a); | ||
78 | bn_check_top(b); | ||
79 | |||
80 | al=a->top; | ||
81 | bl=b->top; | ||
82 | if ((al == 0) || (bl == 0)) | ||
83 | { | ||
84 | r->top=0; | ||
85 | return(1); | ||
86 | } | ||
87 | #ifdef BN_MUL_DEBUG | ||
88 | printf("BN_mul(%d,%d)\n",a->top,b->top); | ||
89 | #endif | ||
90 | |||
91 | #ifdef BN_RECURSION | ||
92 | if ( (bn_limit_bits > 0) && | ||
93 | (bl > bn_limit_num) && (al > bn_limit_num)) | ||
94 | { | ||
95 | n=(BN_num_bits_word(al|bl)-bn_limit_bits); | ||
96 | n*=2; | ||
97 | sk=(BIGNUM *)Malloc(sizeof(BIGNUM)*n); | ||
98 | memset(sk,0,sizeof(BIGNUM)*n); | ||
99 | memset(&ctx,0,sizeof(ctx)); | ||
100 | |||
101 | ret=bn_mm(r,a,b,&(sk[0]),&ctx); | ||
102 | for (i=0; i<n; i+=2) | ||
103 | { | ||
104 | BN_clear_free(&sk[i]); | ||
105 | BN_clear_free(&sk[i+1]); | ||
106 | } | ||
107 | Free(sk); | ||
108 | return(ret); | ||
109 | } | ||
110 | #endif | ||
111 | |||
112 | max=(al+bl); | ||
113 | if (bn_wexpand(r,max) == NULL) return(0); | ||
114 | r->top=max; | ||
115 | r->neg=a->neg^b->neg; | ||
116 | ap=a->d; | ||
117 | bp=b->d; | ||
118 | rp=r->d; | ||
119 | |||
120 | #ifdef BN_RECURSION | ||
121 | if ((al == bl) && (al == 8)) | ||
122 | { | ||
123 | bn_mul_comba8(rp,ap,bp); | ||
124 | } | ||
125 | else | ||
126 | #endif | ||
127 | { | ||
128 | rp[al]=bn_mul_words(rp,ap,al,*(bp++)); | ||
129 | rp++; | ||
130 | for (i=1; i<bl; i++) | ||
131 | { | ||
132 | rp[al]=bn_mul_add_words(rp,ap,al,*(bp++)); | ||
133 | rp++; | ||
134 | } | ||
135 | } | ||
136 | if ((max > 0) && (r->d[max-1] == 0)) r->top--; | ||
137 | return(1); | ||
138 | } | ||
139 | |||
140 | #ifdef BN_RECURSION | ||
141 | |||
142 | #define ahal (sk[0]) | ||
143 | #define blbh (sk[1]) | ||
144 | |||
145 | /* r must be different to a and b */ | ||
146 | int bn_mm(m, A, B, sk,ctx) | ||
147 | BIGNUM *m,*A,*B; | ||
148 | BIGNUM *sk; | ||
149 | BN_CTX *ctx; | ||
150 | { | ||
151 | int n,num,sqr=0; | ||
152 | int an,bn; | ||
153 | BIGNUM ah,al,bh,bl; | ||
154 | |||
155 | an=A->top; | ||
156 | bn=B->top; | ||
157 | #ifdef BN_MUL_DEBUG | ||
158 | printf("bn_mm(%d,%d)\n",A->top,B->top); | ||
159 | #endif | ||
160 | |||
161 | if (A == B) sqr=1; | ||
162 | num=(an>bn)?an:bn; | ||
163 | n=(num+1)/2; | ||
164 | /* Are going to now chop things into 'num' word chunks. */ | ||
165 | |||
166 | BN_init(&ah); | ||
167 | BN_init(&al); | ||
168 | BN_init(&bh); | ||
169 | BN_init(&bl); | ||
170 | |||
171 | bn_set_low (&al,A,n); | ||
172 | bn_set_high(&ah,A,n); | ||
173 | bn_set_low (&bl,B,n); | ||
174 | bn_set_high(&bh,B,n); | ||
175 | |||
176 | BN_sub(&ahal,&ah,&al); | ||
177 | BN_sub(&blbh,&bl,&bh); | ||
178 | |||
179 | if (num <= (bn_limit_num+bn_limit_num)) | ||
180 | { | ||
181 | BN_mul(m,&ahal,&blbh); | ||
182 | if (sqr) | ||
183 | { | ||
184 | BN_sqr(&ahal,&al,ctx); | ||
185 | BN_sqr(&blbh,&ah,ctx); | ||
186 | } | ||
187 | else | ||
188 | { | ||
189 | BN_mul(&ahal,&al,&bl); | ||
190 | BN_mul(&blbh,&ah,&bh); | ||
191 | } | ||
192 | } | ||
193 | else | ||
194 | { | ||
195 | bn_mm(m,&ahal,&blbh,&(sk[2]),ctx); | ||
196 | bn_mm(&ahal,&al,&bl,&(sk[2]),ctx); | ||
197 | bn_mm(&blbh,&ah,&bh,&(sk[2]),ctx); | ||
198 | } | ||
199 | |||
200 | BN_add(m,m,&ahal); | ||
201 | BN_add(m,m,&blbh); | ||
202 | |||
203 | BN_lshift(m,m,n*BN_BITS2); | ||
204 | BN_lshift(&blbh,&blbh,n*BN_BITS2*2); | ||
205 | |||
206 | BN_add(m,m,&ahal); | ||
207 | BN_add(m,m,&blbh); | ||
208 | |||
209 | m->neg=A->neg^B->neg; | ||
210 | return(1); | ||
211 | } | ||
212 | #undef ahal (sk[0]) | ||
213 | #undef blbh (sk[1]) | ||
214 | |||
215 | #include "bn_low.c" | ||
216 | #include "bn_high.c" | ||
217 | #include "f.c" | ||
218 | |||
219 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/bn_wmul.c b/src/lib/libssl/src/crypto/bn/old/bn_wmul.c new file mode 100644 index 0000000000..a467b2f17a --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/bn_wmul.c | |||
@@ -0,0 +1,173 @@ | |||
1 | #include <stdio.h> | ||
2 | #include "bn_lcl.h" | ||
3 | |||
4 | #if 1 | ||
5 | |||
6 | int bn_mull(BIGNUM *r,BIGNUM *a,BIGNUM *b, BN_CTX *ctx); | ||
7 | |||
8 | int bn_mull(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx) | ||
9 | { | ||
10 | int top,i,j,k,al,bl; | ||
11 | BIGNUM *t; | ||
12 | |||
13 | #ifdef BN_COUNT | ||
14 | printf("bn_mull %d * %d\n",a->top,b->top); | ||
15 | #endif | ||
16 | |||
17 | bn_check_top(a); | ||
18 | bn_check_top(b); | ||
19 | bn_check_top(r); | ||
20 | |||
21 | al=a->top; | ||
22 | bl=b->top; | ||
23 | r->neg=a->neg^b->neg; | ||
24 | |||
25 | top=al+bl; | ||
26 | if ((al < 4) || (bl < 4)) | ||
27 | { | ||
28 | if (bn_wexpand(r,top) == NULL) return(0); | ||
29 | r->top=top; | ||
30 | bn_mul_normal(r->d,a->d,al,b->d,bl); | ||
31 | goto end; | ||
32 | } | ||
33 | else if (al == bl) /* A good start, they are the same size */ | ||
34 | goto symetric; | ||
35 | else | ||
36 | { | ||
37 | i=(al-bl); | ||
38 | if ((i == 1) && !BN_get_flags(b,BN_FLG_STATIC_DATA)) | ||
39 | { | ||
40 | bn_wexpand(b,al); | ||
41 | b->d[bl]=0; | ||
42 | bl++; | ||
43 | goto symetric; | ||
44 | } | ||
45 | else if ((i == -1) && !BN_get_flags(a,BN_FLG_STATIC_DATA)) | ||
46 | { | ||
47 | bn_wexpand(a,bl); | ||
48 | a->d[al]=0; | ||
49 | al++; | ||
50 | goto symetric; | ||
51 | } | ||
52 | } | ||
53 | |||
54 | /* asymetric and >= 4 */ | ||
55 | if (bn_wexpand(r,top) == NULL) return(0); | ||
56 | r->top=top; | ||
57 | bn_mul_normal(r->d,a->d,al,b->d,bl); | ||
58 | |||
59 | if (0) | ||
60 | { | ||
61 | /* symetric and > 4 */ | ||
62 | symetric: | ||
63 | if (al == 4) | ||
64 | { | ||
65 | if (bn_wexpand(r,al*2) == NULL) return(0); | ||
66 | r->top=top; | ||
67 | bn_mul_comba4(r->d,a->d,b->d); | ||
68 | goto end; | ||
69 | } | ||
70 | if (al == 8) | ||
71 | { | ||
72 | if (bn_wexpand(r,al*2) == NULL) return(0); | ||
73 | r->top=top; | ||
74 | bn_mul_comba8(r->d,a->d,b->d); | ||
75 | goto end; | ||
76 | } | ||
77 | if (al <= BN_MULL_NORMAL_SIZE) | ||
78 | { | ||
79 | if (bn_wexpand(r,al*2) == NULL) return(0); | ||
80 | r->top=top; | ||
81 | bn_mul_normal(r->d,a->d,al,b->d,bl); | ||
82 | goto end; | ||
83 | } | ||
84 | /* 16 or larger */ | ||
85 | j=BN_num_bits_word((BN_ULONG)al); | ||
86 | j=1<<(j-1); | ||
87 | k=j+j; | ||
88 | t= &(ctx->bn[ctx->tos]); | ||
89 | if (al == j) /* exact multiple */ | ||
90 | { | ||
91 | bn_wexpand(t,k*2); | ||
92 | bn_wexpand(r,k*2); | ||
93 | bn_mul_recursive(r->d,a->d,b->d,al,t->d); | ||
94 | } | ||
95 | else | ||
96 | { | ||
97 | bn_wexpand(a,k); | ||
98 | bn_wexpand(b,k); | ||
99 | bn_wexpand(t,k*4); | ||
100 | bn_wexpand(r,k*4); | ||
101 | for (i=a->top; i<k; i++) | ||
102 | a->d[i]=0; | ||
103 | for (i=b->top; i<k; i++) | ||
104 | b->d[i]=0; | ||
105 | bn_mul_part_recursive(r->d,a->d,b->d,al-j,j,t->d); | ||
106 | } | ||
107 | r->top=top; | ||
108 | } | ||
109 | end: | ||
110 | bn_fix_top(r); | ||
111 | return(1); | ||
112 | } | ||
113 | #endif | ||
114 | |||
115 | void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb) | ||
116 | { | ||
117 | BN_ULONG *rr; | ||
118 | |||
119 | #ifdef BN_COUNT | ||
120 | printf(" bn_mul_normal %d * %d\n",na,nb); | ||
121 | #endif | ||
122 | |||
123 | if (na < nb) | ||
124 | { | ||
125 | int itmp; | ||
126 | BN_ULONG *ltmp; | ||
127 | |||
128 | itmp=na; na=nb; nb=itmp; | ||
129 | ltmp=a; a=b; b=ltmp; | ||
130 | |||
131 | } | ||
132 | rr= &(r[na]); | ||
133 | rr[0]=bn_mul_words(r,a,na,b[0]); | ||
134 | |||
135 | for (;;) | ||
136 | { | ||
137 | if (--nb <= 0) return; | ||
138 | rr[1]=bn_mul_add_words(&(r[1]),a,na,b[1]); | ||
139 | if (--nb <= 0) return; | ||
140 | rr[2]=bn_mul_add_words(&(r[2]),a,na,b[2]); | ||
141 | if (--nb <= 0) return; | ||
142 | rr[3]=bn_mul_add_words(&(r[3]),a,na,b[3]); | ||
143 | if (--nb <= 0) return; | ||
144 | rr[4]=bn_mul_add_words(&(r[4]),a,na,b[4]); | ||
145 | rr+=4; | ||
146 | r+=4; | ||
147 | b+=4; | ||
148 | } | ||
149 | } | ||
150 | |||
151 | #if 1 | ||
152 | void bn_mul_low_normal(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n) | ||
153 | { | ||
154 | #ifdef BN_COUNT | ||
155 | printf(" bn_mul_low_normal %d * %d\n",n,n); | ||
156 | #endif | ||
157 | bn_mul_words(r,a,n,b[0]); | ||
158 | |||
159 | for (;;) | ||
160 | { | ||
161 | if (--n <= 0) return; | ||
162 | bn_mul_add_words(&(r[1]),a,n,b[1]); | ||
163 | if (--n <= 0) return; | ||
164 | bn_mul_add_words(&(r[2]),a,n,b[2]); | ||
165 | if (--n <= 0) return; | ||
166 | bn_mul_add_words(&(r[3]),a,n,b[3]); | ||
167 | if (--n <= 0) return; | ||
168 | bn_mul_add_words(&(r[4]),a,n,b[4]); | ||
169 | r+=4; | ||
170 | b+=4; | ||
171 | } | ||
172 | } | ||
173 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/build b/src/lib/libssl/src/crypto/bn/old/build new file mode 100644 index 0000000000..8cd99e5f17 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/build | |||
@@ -0,0 +1,3 @@ | |||
1 | #!/bin/sh -x | ||
2 | |||
3 | gcc -g -I../../include test.c -L../.. -lcrypto | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/info b/src/lib/libssl/src/crypto/bn/old/info new file mode 100644 index 0000000000..5ac99c3b23 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/info | |||
@@ -0,0 +1,22 @@ | |||
1 | Given A1A0 * B1B0 == S3S2S1S0 | ||
2 | |||
3 | S0= low(A0*B0) | ||
4 | S1= low( (A1-A0)*(B0-B1)) +low( A1*B1) +high(A0*B0) | ||
5 | S2= high((A1-A0)*(B0-B1)) +high(A1*B1) +low( A1*B1) | ||
6 | S3= high(A1*B1); | ||
7 | |||
8 | Assume we know S1 and S0, and can calulate A1*B1 and high((A1-A0)*(B0-B1)) | ||
9 | |||
10 | k0= S0 == low(A0*B0) | ||
11 | k1= S1 | ||
12 | k2= low( A1*B1) | ||
13 | k3= high(A1*B1) | ||
14 | k4= high((A1-A0)*(B0-B1)) | ||
15 | |||
16 | k1= low((A1-A0)*(B0-B1)) +k2 +high(A0*B0) | ||
17 | S2= k4 +k3 +k2 | ||
18 | S3= k3 | ||
19 | |||
20 | S1-k2= low((A1-A0)*(B0-B1)) +high(A0*B0) | ||
21 | |||
22 | We potentially have a carry or a borrow from S1 | ||
diff --git a/src/lib/libssl/src/crypto/bn/old/test.works b/src/lib/libssl/src/crypto/bn/old/test.works new file mode 100644 index 0000000000..127c7b415d --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/old/test.works | |||
@@ -0,0 +1,205 @@ | |||
1 | #include <stdio.h> | ||
2 | #include "cryptlib.h" | ||
3 | #include "bn_lcl.h" | ||
4 | |||
5 | #define SIZE 128 | ||
6 | |||
7 | #define BN_MONT_CTX_set bn_mcs | ||
8 | #define BN_from_montgomery bn_fm | ||
9 | #define BN_mod_mul_montgomery bn_mmm | ||
10 | #undef BN_to_montgomery | ||
11 | #define BN_to_montgomery(r,a,mont,ctx) bn_mmm(\ | ||
12 | r,a,(mont)->RR,(mont),ctx) | ||
13 | |||
14 | main() | ||
15 | { | ||
16 | BIGNUM prime,a,b,r,A,B,R; | ||
17 | BN_MONT_CTX *mont; | ||
18 | BN_CTX *ctx; | ||
19 | int i; | ||
20 | |||
21 | ctx=BN_CTX_new(); | ||
22 | BN_init(&prime); | ||
23 | BN_init(&a); BN_init(&b); BN_init(&r); | ||
24 | BN_init(&A); BN_init(&B); BN_init(&R); | ||
25 | |||
26 | BN_generate_prime(&prime,SIZE,0,NULL,NULL,NULL,NULL); | ||
27 | BN_rand(&A,SIZE,1,0); | ||
28 | BN_rand(&B,SIZE,1,0); | ||
29 | BN_mod(&A,&A,&prime,ctx); | ||
30 | BN_mod(&B,&B,&prime,ctx); | ||
31 | |||
32 | mont=BN_MONT_CTX_new(); | ||
33 | BN_MONT_CTX_set(mont,&prime,ctx); | ||
34 | |||
35 | BN_to_montgomery(&a,&A,mont,ctx); | ||
36 | BN_to_montgomery(&b,&B,mont,ctx); | ||
37 | |||
38 | BN_mul(&r,&a,&b); | ||
39 | BN_print_fp(stdout,&r); printf("\n"); | ||
40 | BN_from_montgomery(&r,&r,mont,ctx); | ||
41 | BN_print_fp(stdout,&r); printf("\n"); | ||
42 | BN_from_montgomery(&r,&r,mont,ctx); | ||
43 | BN_print_fp(stdout,&r); printf("\n"); | ||
44 | |||
45 | BN_mod_mul(&R,&A,&B,&prime,ctx); | ||
46 | |||
47 | BN_print_fp(stdout,&a); printf("\n"); | ||
48 | BN_print_fp(stdout,&b); printf("\n"); | ||
49 | BN_print_fp(stdout,&prime); printf("\n"); | ||
50 | BN_print_fp(stdout,&r); printf("\n\n"); | ||
51 | |||
52 | BN_print_fp(stdout,&A); printf("\n"); | ||
53 | BN_print_fp(stdout,&B); printf("\n"); | ||
54 | BN_print_fp(stdout,&prime); printf("\n"); | ||
55 | BN_print_fp(stdout,&R); printf("\n\n"); | ||
56 | |||
57 | BN_mul(&r,&a,&b); | ||
58 | BN_print_fp(stdout,&r); printf(" <- BA*DC\n"); | ||
59 | BN_copy(&A,&r); | ||
60 | i=SIZE/2; | ||
61 | BN_mask_bits(&A,i*2); | ||
62 | // BN_print_fp(stdout,&A); printf(" <- low(BA*DC)\n"); | ||
63 | bn_do_lower(&r,&a,&b,&A,i); | ||
64 | // BN_print_fp(stdout,&r); printf(" <- low(BA*DC)\n"); | ||
65 | } | ||
66 | |||
67 | int bn_mul_low(r,a,b,low,i) | ||
68 | BIGNUM *r,*a,*b,*low; | ||
69 | int i; | ||
70 | { | ||
71 | int w; | ||
72 | BIGNUM Kh,Km,t1,t2,h,ah,al,bh,bl,l,m,s0,s1; | ||
73 | |||
74 | BN_init(&Kh); BN_init(&Km); BN_init(&t1); BN_init(&t2); BN_init(&l); | ||
75 | BN_init(&ah); BN_init(&al); BN_init(&bh); BN_init(&bl); BN_init(&h); | ||
76 | BN_init(&m); BN_init(&s0); BN_init(&s1); | ||
77 | |||
78 | BN_copy(&al,a); BN_mask_bits(&al,i); BN_rshift(&ah,a,i); | ||
79 | BN_copy(&bl,b); BN_mask_bits(&bl,i); BN_rshift(&bh,b,i); | ||
80 | |||
81 | |||
82 | BN_sub(&t1,&al,&ah); | ||
83 | BN_sub(&t2,&bh,&bl); | ||
84 | BN_mul(&m,&t1,&t2); | ||
85 | BN_mul(&h,&ah,&bh); | ||
86 | |||
87 | BN_copy(&s0,low); BN_mask_bits(&s0,i); | ||
88 | BN_rshift(&s1,low,i); | ||
89 | |||
90 | BN_add(&t1,&h,&m); | ||
91 | BN_add(&t1,&t1,&s0); | ||
92 | |||
93 | BN_copy(&t2,&t1); BN_mask_bits(&t2,i); | ||
94 | BN_sub(&t1,&s1,&t2); | ||
95 | BN_lshift(&t1,&t1,i); | ||
96 | BN_add(&t1,&t1,&s0); | ||
97 | if (t1.neg) | ||
98 | { | ||
99 | BN_lshift(&t2,BN_value_one(),i*2); | ||
100 | BN_add(&t1,&t2,&t1); | ||
101 | BN_mask_bits(&t1,i*2); | ||
102 | } | ||
103 | |||
104 | BN_free(&Kh); BN_free(&Km); BN_free(&t1); BN_free(&t2); | ||
105 | BN_free(&ah); BN_free(&al); BN_free(&bh); BN_free(&bl); | ||
106 | } | ||
107 | |||
108 | int BN_mod_mul_montgomery(r,a,b,mont,ctx) | ||
109 | BIGNUM *r,*a,*b; | ||
110 | BN_MONT_CTX *mont; | ||
111 | BN_CTX *ctx; | ||
112 | { | ||
113 | BIGNUM *tmp; | ||
114 | |||
115 | tmp= &(ctx->bn[ctx->tos++]); | ||
116 | |||
117 | if (a == b) | ||
118 | { | ||
119 | if (!BN_sqr(tmp,a,ctx)) goto err; | ||
120 | } | ||
121 | else | ||
122 | { | ||
123 | if (!BN_mul(tmp,a,b)) goto err; | ||
124 | } | ||
125 | /* reduce from aRR to aR */ | ||
126 | if (!BN_from_montgomery(r,tmp,mont,ctx)) goto err; | ||
127 | ctx->tos--; | ||
128 | return(1); | ||
129 | err: | ||
130 | return(0); | ||
131 | } | ||
132 | |||
133 | int BN_from_montgomery(r,a,mont,ctx) | ||
134 | BIGNUM *r; | ||
135 | BIGNUM *a; | ||
136 | BN_MONT_CTX *mont; | ||
137 | BN_CTX *ctx; | ||
138 | { | ||
139 | BIGNUM z1; | ||
140 | BIGNUM *t1,*t2; | ||
141 | BN_ULONG *ap,*bp,*rp; | ||
142 | int j,i,bl,al; | ||
143 | |||
144 | BN_init(&z1); | ||
145 | t1= &(ctx->bn[ctx->tos]); | ||
146 | t2= &(ctx->bn[ctx->tos+1]); | ||
147 | |||
148 | if (!BN_copy(t1,a)) goto err; | ||
149 | /* can cheat */ | ||
150 | BN_mask_bits(t1,mont->ri); | ||
151 | if (!BN_mul(t2,t1,mont->Ni)) goto err; | ||
152 | BN_mask_bits(t2,mont->ri); | ||
153 | |||
154 | if (!BN_mul(t1,t2,mont->N)) goto err; | ||
155 | if (!BN_add(t2,t1,a)) goto err; | ||
156 | |||
157 | /* At this point, t2 has the bottom ri bits set to zero. | ||
158 | * This means that the bottom ri bits == the 1^ri minus the bottom | ||
159 | * ri bits of a. | ||
160 | * This means that only the bits above 'ri' in a need to be added, | ||
161 | * and XXXXXXXXXXXXXXXXXXXXXXXX | ||
162 | */ | ||
163 | BN_print_fp(stdout,t2); printf("\n"); | ||
164 | BN_rshift(r,t2,mont->ri); | ||
165 | |||
166 | if (BN_ucmp(r,mont->N) >= 0) | ||
167 | bn_qsub(r,r,mont->N); | ||
168 | |||
169 | return(1); | ||
170 | err: | ||
171 | return(0); | ||
172 | } | ||
173 | |||
174 | int BN_MONT_CTX_set(mont,mod,ctx) | ||
175 | BN_MONT_CTX *mont; | ||
176 | BIGNUM *mod; | ||
177 | BN_CTX *ctx; | ||
178 | { | ||
179 | BIGNUM *Ri=NULL,*R=NULL; | ||
180 | |||
181 | if (mont->RR == NULL) mont->RR=BN_new(); | ||
182 | if (mont->N == NULL) mont->N=BN_new(); | ||
183 | |||
184 | R=mont->RR; /* grab RR as a temp */ | ||
185 | BN_copy(mont->N,mod); /* Set N */ | ||
186 | |||
187 | mont->ri=(BN_num_bits(mod)+(BN_BITS2-1))/BN_BITS2*BN_BITS2; | ||
188 | BN_lshift(R,BN_value_one(),mont->ri); /* R */ | ||
189 | if ((Ri=BN_mod_inverse(NULL,R,mod,ctx)) == NULL) goto err;/* Ri */ | ||
190 | BN_lshift(Ri,Ri,mont->ri); /* R*Ri */ | ||
191 | bn_qsub(Ri,Ri,BN_value_one()); /* R*Ri - 1 */ | ||
192 | BN_div(Ri,NULL,Ri,mod,ctx); | ||
193 | if (mont->Ni != NULL) BN_free(mont->Ni); | ||
194 | mont->Ni=Ri; /* Ni=(R*Ri-1)/N */ | ||
195 | |||
196 | /* setup RR for conversions */ | ||
197 | BN_lshift(mont->RR,BN_value_one(),mont->ri*2); | ||
198 | BN_mod(mont->RR,mont->RR,mont->N,ctx); | ||
199 | |||
200 | return(1); | ||
201 | err: | ||
202 | return(0); | ||
203 | } | ||
204 | |||
205 | |||
diff --git a/src/lib/libssl/src/crypto/comp/Makefile.ssl b/src/lib/libssl/src/crypto/comp/Makefile.ssl new file mode 100644 index 0000000000..d946bcbafa --- /dev/null +++ b/src/lib/libssl/src/crypto/comp/Makefile.ssl | |||
@@ -0,0 +1,99 @@ | |||
1 | # | ||
2 | # SSLeay/crypto/comp/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= comp | ||
6 | TOP= ../.. | ||
7 | CC= cc | ||
8 | INCLUDES= -I.. -I../../include | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKE= make -f Makefile.ssl | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | ||
15 | MAKEFILE= Makefile.ssl | ||
16 | AR= ar r | ||
17 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
19 | |||
20 | GENERAL=Makefile | ||
21 | TEST= | ||
22 | APPS= | ||
23 | |||
24 | LIB=$(TOP)/libcrypto.a | ||
25 | LIBSRC= comp_lib.c \ | ||
26 | c_rle.c c_zlib.c | ||
27 | |||
28 | LIBOBJ= comp_lib.o \ | ||
29 | c_rle.o c_zlib.o | ||
30 | |||
31 | SRC= $(LIBSRC) | ||
32 | |||
33 | EXHEADER= comp.h | ||
34 | HEADER= $(EXHEADER) | ||
35 | |||
36 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
37 | |||
38 | top: | ||
39 | (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) | ||
40 | |||
41 | all: lib | ||
42 | |||
43 | lib: $(LIBOBJ) | ||
44 | $(AR) $(LIB) $(LIBOBJ) | ||
45 | $(RANLIB) $(LIB) | ||
46 | @touch lib | ||
47 | |||
48 | files: | ||
49 | $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO | ||
50 | |||
51 | links: | ||
52 | @$(TOP)/util/point.sh Makefile.ssl Makefile | ||
53 | @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) | ||
54 | @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) | ||
55 | @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) | ||
56 | |||
57 | install: | ||
58 | @for i in $(EXHEADER) ; \ | ||
59 | do \ | ||
60 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
61 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
62 | done; | ||
63 | |||
64 | tags: | ||
65 | ctags $(SRC) | ||
66 | |||
67 | tests: | ||
68 | |||
69 | lint: | ||
70 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
71 | |||
72 | depend: | ||
73 | $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(LIBSRC) | ||
74 | |||
75 | dclean: | ||
76 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
77 | mv -f Makefile.new $(MAKEFILE) | ||
78 | |||
79 | clean: | ||
80 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
81 | |||
82 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
83 | |||
84 | c_rle.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
85 | c_rle.o: ../../include/openssl/bn.h ../../include/openssl/comp.h | ||
86 | c_rle.o: ../../include/openssl/crypto.h ../../include/openssl/objects.h | ||
87 | c_rle.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
88 | c_rle.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
89 | c_zlib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
90 | c_zlib.o: ../../include/openssl/bn.h ../../include/openssl/comp.h | ||
91 | c_zlib.o: ../../include/openssl/crypto.h ../../include/openssl/objects.h | ||
92 | c_zlib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
93 | c_zlib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
94 | comp_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
95 | comp_lib.o: ../../include/openssl/bn.h ../../include/openssl/comp.h | ||
96 | comp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/objects.h | ||
97 | comp_lib.o: ../../include/openssl/opensslconf.h | ||
98 | comp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | ||
99 | comp_lib.o: ../../include/openssl/stack.h | ||
diff --git a/src/lib/libssl/src/crypto/comp/c_rle.c b/src/lib/libssl/src/crypto/comp/c_rle.c new file mode 100644 index 0000000000..1a819e3737 --- /dev/null +++ b/src/lib/libssl/src/crypto/comp/c_rle.c | |||
@@ -0,0 +1,61 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <string.h> | ||
4 | #include <openssl/objects.h> | ||
5 | #include <openssl/comp.h> | ||
6 | |||
7 | static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
8 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
9 | static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
10 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
11 | |||
12 | static COMP_METHOD rle_method={ | ||
13 | NID_rle_compression, | ||
14 | LN_rle_compression, | ||
15 | NULL, | ||
16 | NULL, | ||
17 | rle_compress_block, | ||
18 | rle_expand_block, | ||
19 | NULL, | ||
20 | }; | ||
21 | |||
22 | COMP_METHOD *COMP_rle(void) | ||
23 | { | ||
24 | return(&rle_method); | ||
25 | } | ||
26 | |||
27 | static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
28 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
29 | { | ||
30 | /* int i; */ | ||
31 | |||
32 | if (olen < (ilen+1)) | ||
33 | { | ||
34 | /* ZZZZZZZZZZZZZZZZZZZZZZ */ | ||
35 | return(-1); | ||
36 | } | ||
37 | |||
38 | *(out++)=0; | ||
39 | memcpy(out,in,ilen); | ||
40 | return(ilen+1); | ||
41 | } | ||
42 | |||
43 | static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
44 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
45 | { | ||
46 | int i; | ||
47 | |||
48 | if (olen < (ilen-1)) | ||
49 | { | ||
50 | /* ZZZZZZZZZZZZZZZZZZZZZZ */ | ||
51 | return(-1); | ||
52 | } | ||
53 | |||
54 | i= *(in++); | ||
55 | if (i == 0) | ||
56 | { | ||
57 | memcpy(out,in,ilen-1); | ||
58 | } | ||
59 | return(ilen-1); | ||
60 | } | ||
61 | |||
diff --git a/src/lib/libssl/src/crypto/comp/c_zlib.c b/src/lib/libssl/src/crypto/comp/c_zlib.c new file mode 100644 index 0000000000..6684ab4841 --- /dev/null +++ b/src/lib/libssl/src/crypto/comp/c_zlib.c | |||
@@ -0,0 +1,133 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <string.h> | ||
4 | #include <openssl/objects.h> | ||
5 | #include <openssl/comp.h> | ||
6 | |||
7 | COMP_METHOD *COMP_zlib(void ); | ||
8 | |||
9 | #ifndef ZLIB | ||
10 | |||
11 | static COMP_METHOD zlib_method={ | ||
12 | NID_undef, | ||
13 | "(null)", | ||
14 | NULL, | ||
15 | NULL, | ||
16 | NULL, | ||
17 | NULL, | ||
18 | NULL, | ||
19 | }; | ||
20 | |||
21 | #else | ||
22 | |||
23 | #include <zlib.h> | ||
24 | |||
25 | static int zlib_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
26 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
27 | static int zlib_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
28 | unsigned int olen, unsigned char *in, unsigned int ilen); | ||
29 | |||
30 | static int zz_uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, | ||
31 | uLong sourceLen); | ||
32 | |||
33 | static COMP_METHOD zlib_method={ | ||
34 | NID_zlib_compression, | ||
35 | LN_zlib_compression, | ||
36 | NULL, | ||
37 | NULL, | ||
38 | zlib_compress_block, | ||
39 | zlib_expand_block, | ||
40 | NULL, | ||
41 | }; | ||
42 | |||
43 | static int zlib_compress_block(COMP_CTX *ctx, unsigned char *out, | ||
44 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
45 | { | ||
46 | unsigned long l; | ||
47 | int i; | ||
48 | int clear=1; | ||
49 | |||
50 | if (ilen > 128) | ||
51 | { | ||
52 | out[0]=1; | ||
53 | l=olen-1; | ||
54 | i=compress(&(out[1]),&l,in,(unsigned long)ilen); | ||
55 | if (i != Z_OK) | ||
56 | return(-1); | ||
57 | if (ilen > l) | ||
58 | { | ||
59 | clear=0; | ||
60 | l++; | ||
61 | } | ||
62 | } | ||
63 | if (clear) | ||
64 | { | ||
65 | out[0]=0; | ||
66 | memcpy(&(out[1]),in,ilen); | ||
67 | l=ilen+1; | ||
68 | } | ||
69 | fprintf(stderr,"compress(%4d)->%4d %s\n",ilen,(int)l,(clear)?"clear":"zlib"); | ||
70 | return((int)l); | ||
71 | } | ||
72 | |||
73 | static int zlib_expand_block(COMP_CTX *ctx, unsigned char *out, | ||
74 | unsigned int olen, unsigned char *in, unsigned int ilen) | ||
75 | { | ||
76 | unsigned long l; | ||
77 | int i; | ||
78 | |||
79 | if (in[0]) | ||
80 | { | ||
81 | l=olen; | ||
82 | i=zz_uncompress(out,&l,&(in[1]),(unsigned long)ilen-1); | ||
83 | if (i != Z_OK) | ||
84 | return(-1); | ||
85 | } | ||
86 | else | ||
87 | { | ||
88 | memcpy(out,&(in[1]),ilen-1); | ||
89 | l=ilen-1; | ||
90 | } | ||
91 | fprintf(stderr,"expand (%4d)->%4d %s\n",ilen,(int)l,in[0]?"zlib":"clear"); | ||
92 | return((int)l); | ||
93 | } | ||
94 | |||
95 | static int zz_uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, | ||
96 | uLong sourceLen) | ||
97 | { | ||
98 | z_stream stream; | ||
99 | int err; | ||
100 | |||
101 | stream.next_in = (Bytef*)source; | ||
102 | stream.avail_in = (uInt)sourceLen; | ||
103 | /* Check for source > 64K on 16-bit machine: */ | ||
104 | if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; | ||
105 | |||
106 | stream.next_out = dest; | ||
107 | stream.avail_out = (uInt)*destLen; | ||
108 | if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; | ||
109 | |||
110 | stream.zalloc = (alloc_func)0; | ||
111 | stream.zfree = (free_func)0; | ||
112 | |||
113 | err = inflateInit(&stream); | ||
114 | if (err != Z_OK) return err; | ||
115 | |||
116 | err = inflate(&stream, Z_FINISH); | ||
117 | if (err != Z_STREAM_END) { | ||
118 | inflateEnd(&stream); | ||
119 | return err; | ||
120 | } | ||
121 | *destLen = stream.total_out; | ||
122 | |||
123 | err = inflateEnd(&stream); | ||
124 | return err; | ||
125 | } | ||
126 | |||
127 | #endif | ||
128 | |||
129 | COMP_METHOD *COMP_zlib(void) | ||
130 | { | ||
131 | return(&zlib_method); | ||
132 | } | ||
133 | |||
diff --git a/src/lib/libssl/src/crypto/comp/comp.h b/src/lib/libssl/src/crypto/comp/comp.h new file mode 100644 index 0000000000..93bd9c34c8 --- /dev/null +++ b/src/lib/libssl/src/crypto/comp/comp.h | |||
@@ -0,0 +1,60 @@ | |||
1 | |||
2 | #ifndef HEADER_COMP_H | ||
3 | #define HEADER_COMP_H | ||
4 | |||
5 | #ifdef __cplusplus | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | #include <openssl/crypto.h> | ||
10 | |||
11 | typedef struct comp_method_st | ||
12 | { | ||
13 | int type; /* NID for compression library */ | ||
14 | const char *name; /* A text string to identify the library */ | ||
15 | int (*init)(); | ||
16 | void (*finish)(); | ||
17 | int (*compress)(); | ||
18 | int (*expand)(); | ||
19 | long (*ctrl)(); | ||
20 | } COMP_METHOD; | ||
21 | |||
22 | typedef struct comp_ctx_st | ||
23 | { | ||
24 | COMP_METHOD *meth; | ||
25 | unsigned long compress_in; | ||
26 | unsigned long compress_out; | ||
27 | unsigned long expand_in; | ||
28 | unsigned long expand_out; | ||
29 | |||
30 | CRYPTO_EX_DATA ex_data; | ||
31 | } COMP_CTX; | ||
32 | |||
33 | |||
34 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); | ||
35 | void COMP_CTX_free(COMP_CTX *ctx); | ||
36 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
37 | unsigned char *in, int ilen); | ||
38 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
39 | unsigned char *in, int ilen); | ||
40 | COMP_METHOD *COMP_rle(void ); | ||
41 | #ifdef ZLIB | ||
42 | COMP_METHOD *COMP_zlib(void ); | ||
43 | #endif | ||
44 | |||
45 | /* BEGIN ERROR CODES */ | ||
46 | /* The following lines are auto generated by the script mkerr.pl. Any changes | ||
47 | * made after this point may be overwritten when the script is next run. | ||
48 | */ | ||
49 | |||
50 | /* Error codes for the COMP functions. */ | ||
51 | |||
52 | /* Function codes. */ | ||
53 | |||
54 | /* Reason codes. */ | ||
55 | |||
56 | #ifdef __cplusplus | ||
57 | } | ||
58 | #endif | ||
59 | #endif | ||
60 | |||
diff --git a/src/lib/libssl/src/crypto/comp/comp_err.c b/src/lib/libssl/src/crypto/comp/comp_err.c new file mode 100644 index 0000000000..77a3f7070c --- /dev/null +++ b/src/lib/libssl/src/crypto/comp/comp_err.c | |||
@@ -0,0 +1,91 @@ | |||
1 | /* crypto/comp/comp_err.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions | ||
7 | * are met: | ||
8 | * | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in | ||
14 | * the documentation and/or other materials provided with the | ||
15 | * distribution. | ||
16 | * | ||
17 | * 3. All advertising materials mentioning features or use of this | ||
18 | * software must display the following acknowledgment: | ||
19 | * "This product includes software developed by the OpenSSL Project | ||
20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
21 | * | ||
22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
23 | * endorse or promote products derived from this software without | ||
24 | * prior written permission. For written permission, please contact | ||
25 | * openssl-core@OpenSSL.org. | ||
26 | * | ||
27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
28 | * nor may "OpenSSL" appear in their names without prior written | ||
29 | * permission of the OpenSSL Project. | ||
30 | * | ||
31 | * 6. Redistributions of any form whatsoever must retain the following | ||
32 | * acknowledgment: | ||
33 | * "This product includes software developed by the OpenSSL Project | ||
34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
35 | * | ||
36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
54 | */ | ||
55 | |||
56 | /* NOTE: this file was auto generated by the mkerr.pl script: any changes | ||
57 | * made to it will be overwritten when the script next updates this file. | ||
58 | */ | ||
59 | |||
60 | #include <stdio.h> | ||
61 | #include <openssl/err.h> | ||
62 | #include <openssl/comp.h> | ||
63 | |||
64 | /* BEGIN ERROR CODES */ | ||
65 | #ifndef NO_ERR | ||
66 | static ERR_STRING_DATA COMP_str_functs[]= | ||
67 | { | ||
68 | {0,NULL} | ||
69 | }; | ||
70 | |||
71 | static ERR_STRING_DATA COMP_str_reasons[]= | ||
72 | { | ||
73 | {0,NULL} | ||
74 | }; | ||
75 | |||
76 | #endif | ||
77 | |||
78 | void ERR_load_COMP_strings(void) | ||
79 | { | ||
80 | static int init=1; | ||
81 | |||
82 | if (init) | ||
83 | { | ||
84 | init=0; | ||
85 | #ifndef NO_ERR | ||
86 | ERR_load_strings(ERR_LIB_COMP,COMP_str_functs); | ||
87 | ERR_load_strings(ERR_LIB_COMP,COMP_str_reasons); | ||
88 | #endif | ||
89 | |||
90 | } | ||
91 | } | ||
diff --git a/src/lib/libssl/src/crypto/comp/comp_lib.c b/src/lib/libssl/src/crypto/comp/comp_lib.c new file mode 100644 index 0000000000..a67ef23bc0 --- /dev/null +++ b/src/lib/libssl/src/crypto/comp/comp_lib.c | |||
@@ -0,0 +1,78 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <string.h> | ||
4 | #include <openssl/objects.h> | ||
5 | #include <openssl/comp.h> | ||
6 | |||
7 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth) | ||
8 | { | ||
9 | COMP_CTX *ret; | ||
10 | |||
11 | if ((ret=(COMP_CTX *)Malloc(sizeof(COMP_CTX))) == NULL) | ||
12 | { | ||
13 | /* ZZZZZZZZZZZZZZZZ */ | ||
14 | return(NULL); | ||
15 | } | ||
16 | memset(ret,0,sizeof(COMP_CTX)); | ||
17 | ret->meth=meth; | ||
18 | if ((ret->meth->init != NULL) && !ret->meth->init(ret)) | ||
19 | { | ||
20 | Free(ret); | ||
21 | ret=NULL; | ||
22 | } | ||
23 | #if 0 | ||
24 | else | ||
25 | CRYPTO_new_ex_data(rsa_meth,(char *)ret,&ret->ex_data); | ||
26 | #endif | ||
27 | return(ret); | ||
28 | } | ||
29 | |||
30 | void COMP_CTX_free(COMP_CTX *ctx) | ||
31 | { | ||
32 | /* CRYPTO_free_ex_data(rsa_meth,(char *)ctx,&ctx->ex_data); */ | ||
33 | |||
34 | if(ctx == NULL) | ||
35 | return; | ||
36 | |||
37 | if (ctx->meth->finish != NULL) | ||
38 | ctx->meth->finish(ctx); | ||
39 | |||
40 | Free(ctx); | ||
41 | } | ||
42 | |||
43 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
44 | unsigned char *in, int ilen) | ||
45 | { | ||
46 | int ret; | ||
47 | if (ctx->meth->compress == NULL) | ||
48 | { | ||
49 | /* ZZZZZZZZZZZZZZZZZ */ | ||
50 | return(-1); | ||
51 | } | ||
52 | ret=ctx->meth->compress(ctx,out,olen,in,ilen); | ||
53 | if (ret > 0) | ||
54 | { | ||
55 | ctx->compress_in+=ilen; | ||
56 | ctx->compress_out+=ret; | ||
57 | } | ||
58 | return(ret); | ||
59 | } | ||
60 | |||
61 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, | ||
62 | unsigned char *in, int ilen) | ||
63 | { | ||
64 | int ret; | ||
65 | |||
66 | if (ctx->meth->expand == NULL) | ||
67 | { | ||
68 | /* ZZZZZZZZZZZZZZZZZ */ | ||
69 | return(-1); | ||
70 | } | ||
71 | ret=ctx->meth->expand(ctx,out,olen,in,ilen); | ||
72 | if (ret > 0) | ||
73 | { | ||
74 | ctx->expand_in+=ilen; | ||
75 | ctx->expand_out+=ret; | ||
76 | } | ||
77 | return(ret); | ||
78 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl b/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl new file mode 100644 index 0000000000..ebffab657c --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl | |||
@@ -0,0 +1,346 @@ | |||
1 | # | ||
2 | # SSLeay/crypto/asn1/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= pkcs12 | ||
6 | TOP= ../.. | ||
7 | CC= cc | ||
8 | INCLUDES= -I.. -I../../include | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKE= make -f Makefile.ssl | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | ||
15 | MAKEFILE= Makefile.ssl | ||
16 | AR= ar r | ||
17 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
19 | |||
20 | GENERAL=Makefile | ||
21 | TEST= | ||
22 | APPS= | ||
23 | |||
24 | LIB=$(TOP)/libcrypto.a | ||
25 | LIBSRC= p12_add.c p12_attr.c p12_bags.c p12_crpt.c p12_crt.c p12_decr.c \ | ||
26 | p12_init.c p12_key.c p12_kiss.c p12_lib.c p12_mac.c p12_mutl.c\ | ||
27 | p12_sbag.c p12_utl.c pk12err.c | ||
28 | LIBOBJ= p12_add.o p12_attr.o p12_bags.o p12_crpt.o p12_crt.o p12_decr.o \ | ||
29 | p12_init.o p12_key.o p12_kiss.o p12_lib.o p12_mac.o p12_mutl.o\ | ||
30 | p12_sbag.o p12_utl.o pk12err.o | ||
31 | |||
32 | SRC= $(LIBSRC) | ||
33 | |||
34 | EXHEADER= pkcs12.h | ||
35 | HEADER= $(EXHEADER) | ||
36 | |||
37 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
38 | |||
39 | top: | ||
40 | (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) | ||
41 | |||
42 | test: | ||
43 | |||
44 | all: lib | ||
45 | |||
46 | lib: $(LIBOBJ) | ||
47 | $(AR) $(LIB) $(LIBOBJ) | ||
48 | $(RANLIB) $(LIB) | ||
49 | @touch lib | ||
50 | |||
51 | files: | ||
52 | $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO | ||
53 | |||
54 | links: | ||
55 | @$(TOP)/util/point.sh Makefile.ssl Makefile | ||
56 | @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) | ||
57 | @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) | ||
58 | @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) | ||
59 | |||
60 | install: | ||
61 | @for i in $(EXHEADER) ; \ | ||
62 | do \ | ||
63 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
64 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
65 | done; | ||
66 | |||
67 | tags: | ||
68 | ctags $(SRC) | ||
69 | |||
70 | tests: | ||
71 | |||
72 | lint: | ||
73 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
74 | |||
75 | depend: | ||
76 | $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(PROGS) $(LIBSRC) | ||
77 | |||
78 | dclean: | ||
79 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
80 | mv -f Makefile.new $(MAKEFILE) | ||
81 | |||
82 | clean: | ||
83 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
84 | |||
85 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
86 | |||
87 | p12_add.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
88 | p12_add.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
89 | p12_add.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
90 | p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
91 | p12_add.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
92 | p12_add.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
93 | p12_add.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
94 | p12_add.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
95 | p12_add.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
96 | p12_add.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
97 | p12_add.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
98 | p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
99 | p12_add.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
100 | p12_add.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
101 | p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
102 | p12_add.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
103 | p12_add.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
104 | p12_attr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
105 | p12_attr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
106 | p12_attr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
107 | p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
108 | p12_attr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
109 | p12_attr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
110 | p12_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
111 | p12_attr.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
112 | p12_attr.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
113 | p12_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
114 | p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
115 | p12_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
116 | p12_attr.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
117 | p12_attr.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
118 | p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
119 | p12_attr.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
120 | p12_attr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
121 | p12_bags.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
122 | p12_bags.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
123 | p12_bags.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
124 | p12_bags.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
125 | p12_bags.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
126 | p12_bags.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
127 | p12_bags.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
128 | p12_bags.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
129 | p12_bags.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
130 | p12_bags.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
131 | p12_bags.o: ../../include/openssl/opensslconf.h | ||
132 | p12_bags.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
133 | p12_bags.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
134 | p12_bags.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
135 | p12_bags.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
136 | p12_bags.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
137 | p12_bags.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
138 | p12_bags.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
139 | p12_crpt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
140 | p12_crpt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
141 | p12_crpt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
142 | p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
143 | p12_crpt.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
144 | p12_crpt.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
145 | p12_crpt.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
146 | p12_crpt.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
147 | p12_crpt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
148 | p12_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
149 | p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
150 | p12_crpt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
151 | p12_crpt.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
152 | p12_crpt.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
153 | p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
154 | p12_crpt.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
155 | p12_crpt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
156 | p12_crt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
157 | p12_crt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
158 | p12_crt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
159 | p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
160 | p12_crt.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
161 | p12_crt.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
162 | p12_crt.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
163 | p12_crt.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
164 | p12_crt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
165 | p12_crt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
166 | p12_crt.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
167 | p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
168 | p12_crt.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
169 | p12_crt.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
170 | p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
171 | p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
172 | p12_crt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
173 | p12_decr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
174 | p12_decr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
175 | p12_decr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
176 | p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
177 | p12_decr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
178 | p12_decr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
179 | p12_decr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
180 | p12_decr.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
181 | p12_decr.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
182 | p12_decr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
183 | p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
184 | p12_decr.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
185 | p12_decr.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
186 | p12_decr.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
187 | p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
188 | p12_decr.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
189 | p12_decr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
190 | p12_init.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
191 | p12_init.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
192 | p12_init.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
193 | p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
194 | p12_init.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
195 | p12_init.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
196 | p12_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
197 | p12_init.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
198 | p12_init.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
199 | p12_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
200 | p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
201 | p12_init.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
202 | p12_init.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
203 | p12_init.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
204 | p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
205 | p12_init.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
206 | p12_init.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
207 | p12_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
208 | p12_key.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
209 | p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
210 | p12_key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
211 | p12_key.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
212 | p12_key.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
213 | p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
214 | p12_key.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
215 | p12_key.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
216 | p12_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
217 | p12_key.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
218 | p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
219 | p12_key.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
220 | p12_key.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
221 | p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
222 | p12_key.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
223 | p12_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
224 | p12_kiss.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
225 | p12_kiss.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
226 | p12_kiss.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
227 | p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
228 | p12_kiss.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
229 | p12_kiss.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
230 | p12_kiss.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
231 | p12_kiss.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
232 | p12_kiss.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
233 | p12_kiss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
234 | p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
235 | p12_kiss.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
236 | p12_kiss.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
237 | p12_kiss.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
238 | p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
239 | p12_kiss.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
240 | p12_kiss.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
241 | p12_lib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
242 | p12_lib.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
243 | p12_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
244 | p12_lib.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
245 | p12_lib.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
246 | p12_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
247 | p12_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
248 | p12_lib.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
249 | p12_lib.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
250 | p12_lib.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
251 | p12_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
252 | p12_lib.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | ||
253 | p12_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | ||
254 | p12_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | ||
255 | p12_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
256 | p12_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
257 | p12_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
258 | p12_lib.o: ../cryptlib.h | ||
259 | p12_mac.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
260 | p12_mac.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
261 | p12_mac.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
262 | p12_mac.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
263 | p12_mac.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
264 | p12_mac.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
265 | p12_mac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
266 | p12_mac.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
267 | p12_mac.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
268 | p12_mac.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
269 | p12_mac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
270 | p12_mac.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | ||
271 | p12_mac.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | ||
272 | p12_mac.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | ||
273 | p12_mac.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
274 | p12_mac.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
275 | p12_mac.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
276 | p12_mac.o: ../cryptlib.h | ||
277 | p12_mutl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
278 | p12_mutl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
279 | p12_mutl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
280 | p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
281 | p12_mutl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
282 | p12_mutl.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
283 | p12_mutl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
284 | p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/idea.h | ||
285 | p12_mutl.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
286 | p12_mutl.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
287 | p12_mutl.o: ../../include/openssl/opensslconf.h | ||
288 | p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
289 | p12_mutl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | ||
290 | p12_mutl.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | ||
291 | p12_mutl.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | ||
292 | p12_mutl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
293 | p12_mutl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
294 | p12_mutl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
295 | p12_mutl.o: ../cryptlib.h | ||
296 | p12_sbag.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h | ||
297 | p12_sbag.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | ||
298 | p12_sbag.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
299 | p12_sbag.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
300 | p12_sbag.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
301 | p12_sbag.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h | ||
302 | p12_sbag.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
303 | p12_sbag.o: ../../include/openssl/evp.h ../../include/openssl/idea.h | ||
304 | p12_sbag.o: ../../include/openssl/md2.h ../../include/openssl/md5.h | ||
305 | p12_sbag.o: ../../include/openssl/mdc2.h ../../include/openssl/objects.h | ||
306 | p12_sbag.o: ../../include/openssl/opensslconf.h | ||
307 | p12_sbag.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
308 | p12_sbag.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
309 | p12_sbag.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
310 | p12_sbag.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
311 | p12_sbag.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
312 | p12_sbag.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
313 | p12_sbag.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
314 | p12_utl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
315 | p12_utl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
316 | p12_utl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h | ||
317 | p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
318 | p12_utl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
319 | p12_utl.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | ||
320 | p12_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
321 | p12_utl.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
322 | p12_utl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
323 | p12_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
324 | p12_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
325 | p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
326 | p12_utl.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
327 | p12_utl.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
328 | p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
329 | p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
330 | p12_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h | ||
331 | pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
332 | pk12err.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | ||
333 | pk12err.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
334 | pk12err.o: ../../include/openssl/des.h ../../include/openssl/dh.h | ||
335 | pk12err.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | ||
336 | pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
337 | pk12err.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
338 | pk12err.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
339 | pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | ||
340 | pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs12.h | ||
341 | pk12err.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h | ||
342 | pk12err.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | ||
343 | pk12err.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | ||
344 | pk12err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
345 | pk12err.o: ../../include/openssl/stack.h ../../include/openssl/x509.h | ||
346 | pk12err.o: ../../include/openssl/x509_vfy.h | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_add.c b/src/lib/libssl/src/crypto/pkcs12/p12_add.c new file mode 100644 index 0000000000..ae3d9de3b4 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_add.c | |||
@@ -0,0 +1,214 @@ | |||
1 | /* p12_add.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Pack an object into an OCTET STRING and turn into a safebag */ | ||
64 | |||
65 | PKCS12_SAFEBAG *PKCS12_pack_safebag (char *obj, int (*i2d)(), int nid1, | ||
66 | int nid2) | ||
67 | { | ||
68 | PKCS12_BAGS *bag; | ||
69 | PKCS12_SAFEBAG *safebag; | ||
70 | if (!(bag = PKCS12_BAGS_new ())) { | ||
71 | PKCS12err(PKCS12_F_PKCS12_PACK_SAFEBAG, ERR_R_MALLOC_FAILURE); | ||
72 | return NULL; | ||
73 | } | ||
74 | bag->type = OBJ_nid2obj(nid1); | ||
75 | if (!ASN1_pack_string(obj, i2d, &bag->value.octet)) { | ||
76 | PKCS12err(PKCS12_F_PKCS12_PACK_SAFEBAG, ERR_R_MALLOC_FAILURE); | ||
77 | return NULL; | ||
78 | } | ||
79 | if (!(safebag = PKCS12_SAFEBAG_new ())) { | ||
80 | PKCS12err(PKCS12_F_PKCS12_PACK_SAFEBAG, ERR_R_MALLOC_FAILURE); | ||
81 | return NULL; | ||
82 | } | ||
83 | safebag->value.bag = bag; | ||
84 | safebag->type = OBJ_nid2obj(nid2); | ||
85 | return safebag; | ||
86 | } | ||
87 | |||
88 | /* Turn PKCS8 object into a keybag */ | ||
89 | |||
90 | PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG (PKCS8_PRIV_KEY_INFO *p8) | ||
91 | { | ||
92 | PKCS12_SAFEBAG *bag; | ||
93 | if (!(bag = PKCS12_SAFEBAG_new())) { | ||
94 | PKCS12err(PKCS12_F_PKCS12_MAKE_KEYBAG,ERR_R_MALLOC_FAILURE); | ||
95 | return NULL; | ||
96 | } | ||
97 | bag->type = OBJ_nid2obj(NID_keyBag); | ||
98 | bag->value.keybag = p8; | ||
99 | return bag; | ||
100 | } | ||
101 | |||
102 | /* Turn PKCS8 object into a shrouded keybag */ | ||
103 | |||
104 | PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG (int pbe_nid, const char *pass, | ||
105 | int passlen, unsigned char *salt, int saltlen, int iter, | ||
106 | PKCS8_PRIV_KEY_INFO *p8) | ||
107 | { | ||
108 | PKCS12_SAFEBAG *bag; | ||
109 | |||
110 | /* Set up the safe bag */ | ||
111 | if (!(bag = PKCS12_SAFEBAG_new ())) { | ||
112 | PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE); | ||
113 | return NULL; | ||
114 | } | ||
115 | |||
116 | bag->type = OBJ_nid2obj(NID_pkcs8ShroudedKeyBag); | ||
117 | if (!(bag->value.shkeybag = | ||
118 | PKCS8_encrypt(pbe_nid, NULL, pass, passlen, salt, saltlen, iter, | ||
119 | p8))) { | ||
120 | PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE); | ||
121 | return NULL; | ||
122 | } | ||
123 | |||
124 | return bag; | ||
125 | } | ||
126 | |||
127 | /* Turn a stack of SAFEBAGS into a PKCS#7 data Contentinfo */ | ||
128 | PKCS7 *PKCS12_pack_p7data (STACK *sk) | ||
129 | { | ||
130 | PKCS7 *p7; | ||
131 | if (!(p7 = PKCS7_new())) { | ||
132 | PKCS12err(PKCS12_F_PKCS12_PACK_P7DATA, ERR_R_MALLOC_FAILURE); | ||
133 | return NULL; | ||
134 | } | ||
135 | p7->type = OBJ_nid2obj(NID_pkcs7_data); | ||
136 | if (!(p7->d.data = ASN1_OCTET_STRING_new())) { | ||
137 | PKCS12err(PKCS12_F_PKCS12_PACK_P7DATA, ERR_R_MALLOC_FAILURE); | ||
138 | return NULL; | ||
139 | } | ||
140 | |||
141 | if (!ASN1_seq_pack(sk, i2d_PKCS12_SAFEBAG, &p7->d.data->data, | ||
142 | &p7->d.data->length)) { | ||
143 | PKCS12err(PKCS12_F_PKCS12_PACK_P7DATA, PKCS12_R_CANT_PACK_STRUCTURE); | ||
144 | return NULL; | ||
145 | } | ||
146 | return p7; | ||
147 | } | ||
148 | |||
149 | /* Turn a stack of SAFEBAGS into a PKCS#7 encrypted data ContentInfo */ | ||
150 | |||
151 | PKCS7 *PKCS12_pack_p7encdata (int pbe_nid, const char *pass, int passlen, | ||
152 | unsigned char *salt, int saltlen, int iter, STACK *bags) | ||
153 | { | ||
154 | PKCS7 *p7; | ||
155 | X509_ALGOR *pbe; | ||
156 | if (!(p7 = PKCS7_new())) { | ||
157 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); | ||
158 | return NULL; | ||
159 | } | ||
160 | p7->type = OBJ_nid2obj(NID_pkcs7_encrypted); | ||
161 | if (!(p7->d.encrypted = PKCS7_ENCRYPT_new ())) { | ||
162 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); | ||
163 | return NULL; | ||
164 | } | ||
165 | ASN1_INTEGER_set (p7->d.encrypted->version, 0); | ||
166 | p7->d.encrypted->enc_data->content_type = OBJ_nid2obj(NID_pkcs7_data); | ||
167 | if (!(pbe = PKCS5_pbe_set (pbe_nid, iter, salt, saltlen))) { | ||
168 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); | ||
169 | return NULL; | ||
170 | } | ||
171 | X509_ALGOR_free(p7->d.encrypted->enc_data->algorithm); | ||
172 | p7->d.encrypted->enc_data->algorithm = pbe; | ||
173 | ASN1_OCTET_STRING_free(p7->d.encrypted->enc_data->enc_data); | ||
174 | if (!(p7->d.encrypted->enc_data->enc_data = | ||
175 | PKCS12_i2d_encrypt (pbe, i2d_PKCS12_SAFEBAG, pass, passlen, | ||
176 | (char *)bags, 1))) { | ||
177 | PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, PKCS12_R_ENCRYPT_ERROR); | ||
178 | return NULL; | ||
179 | } | ||
180 | |||
181 | return p7; | ||
182 | } | ||
183 | |||
184 | X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, | ||
185 | const char *pass, int passlen, | ||
186 | unsigned char *salt, int saltlen, int iter, | ||
187 | PKCS8_PRIV_KEY_INFO *p8inf) | ||
188 | { | ||
189 | X509_SIG *p8; | ||
190 | X509_ALGOR *pbe; | ||
191 | |||
192 | if (!(p8 = X509_SIG_new())) { | ||
193 | PKCS12err(PKCS12_F_PKCS8_ENCRYPT, ERR_R_MALLOC_FAILURE); | ||
194 | return NULL; | ||
195 | } | ||
196 | |||
197 | if(pbe_nid == -1) pbe = PKCS5_pbe2_set(cipher, iter, salt, saltlen); | ||
198 | else pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen); | ||
199 | if(!pbe) { | ||
200 | PKCS12err(PKCS12_F_PKCS8_ENCRYPT, ERR_R_MALLOC_FAILURE); | ||
201 | return NULL; | ||
202 | } | ||
203 | X509_ALGOR_free(p8->algor); | ||
204 | p8->algor = pbe; | ||
205 | ASN1_OCTET_STRING_free(p8->digest); | ||
206 | if (!(p8->digest = | ||
207 | PKCS12_i2d_encrypt (pbe, i2d_PKCS8_PRIV_KEY_INFO, pass, passlen, | ||
208 | (char *)p8inf, 0))) { | ||
209 | PKCS12err(PKCS12_F_PKCS8_ENCRYPT, PKCS12_R_ENCRYPT_ERROR); | ||
210 | return NULL; | ||
211 | } | ||
212 | |||
213 | return p8; | ||
214 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_attr.c b/src/lib/libssl/src/crypto/pkcs12/p12_attr.c new file mode 100644 index 0000000000..31c9782b77 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_attr.c | |||
@@ -0,0 +1,238 @@ | |||
1 | /* p12_attr.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Add a local keyid to a safebag */ | ||
64 | |||
65 | int PKCS12_add_localkeyid (PKCS12_SAFEBAG *bag, unsigned char *name, | ||
66 | int namelen) | ||
67 | { | ||
68 | X509_ATTRIBUTE *attrib; | ||
69 | ASN1_BMPSTRING *oct; | ||
70 | ASN1_TYPE *keyid; | ||
71 | if (!(keyid = ASN1_TYPE_new ())) { | ||
72 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
73 | return 0; | ||
74 | } | ||
75 | keyid->type = V_ASN1_OCTET_STRING; | ||
76 | if (!(oct = ASN1_OCTET_STRING_new())) { | ||
77 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
78 | return 0; | ||
79 | } | ||
80 | if (!ASN1_OCTET_STRING_set(oct, name, namelen)) { | ||
81 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
82 | return 0; | ||
83 | } | ||
84 | keyid->value.octet_string = oct; | ||
85 | if (!(attrib = X509_ATTRIBUTE_new ())) { | ||
86 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
87 | return 0; | ||
88 | } | ||
89 | attrib->object = OBJ_nid2obj(NID_localKeyID); | ||
90 | if (!(attrib->value.set = sk_ASN1_TYPE_new(NULL))) { | ||
91 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
92 | return 0; | ||
93 | } | ||
94 | sk_ASN1_TYPE_push (attrib->value.set,keyid); | ||
95 | attrib->set = 1; | ||
96 | if (!bag->attrib && !(bag->attrib = sk_X509_ATTRIBUTE_new (NULL))) { | ||
97 | PKCS12err(PKCS12_F_PKCS12_ADD_LOCALKEYID, ERR_R_MALLOC_FAILURE); | ||
98 | return 0; | ||
99 | } | ||
100 | sk_X509_ATTRIBUTE_push (bag->attrib, attrib); | ||
101 | return 1; | ||
102 | } | ||
103 | |||
104 | /* Add key usage to PKCS#8 structure */ | ||
105 | |||
106 | int PKCS8_add_keyusage (PKCS8_PRIV_KEY_INFO *p8, int usage) | ||
107 | { | ||
108 | X509_ATTRIBUTE *attrib; | ||
109 | ASN1_BIT_STRING *bstr; | ||
110 | ASN1_TYPE *keyid; | ||
111 | unsigned char us_val; | ||
112 | us_val = (unsigned char) usage; | ||
113 | if (!(keyid = ASN1_TYPE_new ())) { | ||
114 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
115 | return 0; | ||
116 | } | ||
117 | keyid->type = V_ASN1_BIT_STRING; | ||
118 | if (!(bstr = ASN1_BIT_STRING_new())) { | ||
119 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
120 | return 0; | ||
121 | } | ||
122 | if (!ASN1_BIT_STRING_set(bstr, &us_val, 1)) { | ||
123 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
124 | return 0; | ||
125 | } | ||
126 | keyid->value.bit_string = bstr; | ||
127 | if (!(attrib = X509_ATTRIBUTE_new ())) { | ||
128 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
129 | return 0; | ||
130 | } | ||
131 | attrib->object = OBJ_nid2obj(NID_key_usage); | ||
132 | if (!(attrib->value.set = sk_ASN1_TYPE_new(NULL))) { | ||
133 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
134 | return 0; | ||
135 | } | ||
136 | sk_ASN1_TYPE_push (attrib->value.set,keyid); | ||
137 | attrib->set = 1; | ||
138 | if (!p8->attributes | ||
139 | && !(p8->attributes = sk_X509_ATTRIBUTE_new (NULL))) { | ||
140 | PKCS12err(PKCS12_F_PKCS8_ADD_KEYUSAGE, ERR_R_MALLOC_FAILURE); | ||
141 | return 0; | ||
142 | } | ||
143 | sk_X509_ATTRIBUTE_push (p8->attributes, attrib); | ||
144 | return 1; | ||
145 | } | ||
146 | |||
147 | /* Add a friendlyname to a safebag */ | ||
148 | |||
149 | int PKCS12_add_friendlyname_asc (PKCS12_SAFEBAG *bag, const char *name, | ||
150 | int namelen) | ||
151 | { | ||
152 | unsigned char *uniname; | ||
153 | int ret, unilen; | ||
154 | if (!asc2uni(name, &uniname, &unilen)) { | ||
155 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC, | ||
156 | ERR_R_MALLOC_FAILURE); | ||
157 | return 0; | ||
158 | } | ||
159 | ret = PKCS12_add_friendlyname_uni (bag, uniname, unilen); | ||
160 | Free(uniname); | ||
161 | return ret; | ||
162 | } | ||
163 | |||
164 | |||
165 | int PKCS12_add_friendlyname_uni (PKCS12_SAFEBAG *bag, | ||
166 | const unsigned char *name, int namelen) | ||
167 | { | ||
168 | X509_ATTRIBUTE *attrib; | ||
169 | ASN1_BMPSTRING *bmp; | ||
170 | ASN1_TYPE *fname; | ||
171 | /* Zap ending double null if included */ | ||
172 | if(!name[namelen - 1] && !name[namelen - 2]) namelen -= 2; | ||
173 | if (!(fname = ASN1_TYPE_new ())) { | ||
174 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
175 | ERR_R_MALLOC_FAILURE); | ||
176 | return 0; | ||
177 | } | ||
178 | fname->type = V_ASN1_BMPSTRING; | ||
179 | if (!(bmp = ASN1_BMPSTRING_new())) { | ||
180 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
181 | ERR_R_MALLOC_FAILURE); | ||
182 | return 0; | ||
183 | } | ||
184 | if (!(bmp->data = Malloc (namelen))) { | ||
185 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
186 | ERR_R_MALLOC_FAILURE); | ||
187 | return 0; | ||
188 | } | ||
189 | memcpy (bmp->data, name, namelen); | ||
190 | bmp->length = namelen; | ||
191 | fname->value.bmpstring = bmp; | ||
192 | if (!(attrib = X509_ATTRIBUTE_new ())) { | ||
193 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
194 | ERR_R_MALLOC_FAILURE); | ||
195 | return 0; | ||
196 | } | ||
197 | attrib->object = OBJ_nid2obj(NID_friendlyName); | ||
198 | if (!(attrib->value.set = sk_ASN1_TYPE_new(NULL))) { | ||
199 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME, | ||
200 | ERR_R_MALLOC_FAILURE); | ||
201 | return 0; | ||
202 | } | ||
203 | sk_ASN1_TYPE_push (attrib->value.set,fname); | ||
204 | attrib->set = 1; | ||
205 | if (!bag->attrib && !(bag->attrib = sk_X509_ATTRIBUTE_new (NULL))) { | ||
206 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI, | ||
207 | ERR_R_MALLOC_FAILURE); | ||
208 | return 0; | ||
209 | } | ||
210 | sk_X509_ATTRIBUTE_push (bag->attrib, attrib); | ||
211 | return PKCS12_OK; | ||
212 | } | ||
213 | |||
214 | ASN1_TYPE *PKCS12_get_attr_gen (STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid) | ||
215 | { | ||
216 | X509_ATTRIBUTE *attrib; | ||
217 | int i; | ||
218 | if (!attrs) return NULL; | ||
219 | for (i = 0; i < sk_X509_ATTRIBUTE_num (attrs); i++) { | ||
220 | attrib = sk_X509_ATTRIBUTE_value (attrs, i); | ||
221 | if (OBJ_obj2nid (attrib->object) == attr_nid) { | ||
222 | if (sk_ASN1_TYPE_num (attrib->value.set)) | ||
223 | return sk_ASN1_TYPE_value(attrib->value.set, 0); | ||
224 | else return NULL; | ||
225 | } | ||
226 | } | ||
227 | return NULL; | ||
228 | } | ||
229 | |||
230 | char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag) | ||
231 | { | ||
232 | ASN1_TYPE *atype; | ||
233 | if (!(atype = PKCS12_get_attr(bag, NID_friendlyName))) return NULL; | ||
234 | if (atype->type != V_ASN1_BMPSTRING) return NULL; | ||
235 | return uni2asc(atype->value.bmpstring->data, | ||
236 | atype->value.bmpstring->length); | ||
237 | } | ||
238 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_bags.c b/src/lib/libssl/src/crypto/pkcs12/p12_bags.c new file mode 100644 index 0000000000..d6eab92c83 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_bags.c | |||
@@ -0,0 +1,192 @@ | |||
1 | /* p12_bags.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp) | ||
65 | { | ||
66 | int bagnid, v = 0; | ||
67 | M_ASN1_I2D_vars(a); | ||
68 | bagnid = OBJ_obj2nid (a->type); | ||
69 | M_ASN1_I2D_len (a->type, i2d_ASN1_OBJECT); | ||
70 | |||
71 | switch (bagnid) { | ||
72 | |||
73 | case NID_x509Certificate: | ||
74 | M_ASN1_I2D_len_EXP_opt (a->value.x509cert, | ||
75 | i2d_ASN1_OCTET_STRING, 0, v); | ||
76 | break; | ||
77 | |||
78 | case NID_x509Crl: | ||
79 | M_ASN1_I2D_len_EXP_opt (a->value.x509crl, | ||
80 | i2d_ASN1_OCTET_STRING, 0, v); | ||
81 | break; | ||
82 | |||
83 | case NID_sdsiCertificate: | ||
84 | M_ASN1_I2D_len_EXP_opt (a->value.sdsicert, | ||
85 | i2d_ASN1_IA5STRING, 0, v); | ||
86 | break; | ||
87 | |||
88 | default: | ||
89 | M_ASN1_I2D_len_EXP_opt (a->value.other, | ||
90 | i2d_ASN1_TYPE, 0, v); | ||
91 | break; | ||
92 | } | ||
93 | |||
94 | M_ASN1_I2D_seq_total (); | ||
95 | |||
96 | M_ASN1_I2D_put (a->type, i2d_ASN1_OBJECT); | ||
97 | |||
98 | switch (bagnid) { | ||
99 | |||
100 | case NID_x509Certificate: | ||
101 | M_ASN1_I2D_put_EXP_opt (a->value.x509cert, | ||
102 | i2d_ASN1_OCTET_STRING, 0, v); | ||
103 | break; | ||
104 | |||
105 | case NID_x509Crl: | ||
106 | M_ASN1_I2D_put_EXP_opt (a->value.x509crl, | ||
107 | i2d_ASN1_OCTET_STRING, 0, v); | ||
108 | break; | ||
109 | |||
110 | case NID_sdsiCertificate: | ||
111 | M_ASN1_I2D_put_EXP_opt (a->value.sdsicert, | ||
112 | i2d_ASN1_IA5STRING, 0, v); | ||
113 | break; | ||
114 | |||
115 | default: | ||
116 | M_ASN1_I2D_put_EXP_opt (a->value.other, i2d_ASN1_TYPE, 0, v); | ||
117 | break; | ||
118 | } | ||
119 | M_ASN1_I2D_finish(); | ||
120 | } | ||
121 | |||
122 | PKCS12_BAGS *PKCS12_BAGS_new(void) | ||
123 | { | ||
124 | PKCS12_BAGS *ret=NULL; | ||
125 | ASN1_CTX c; | ||
126 | M_ASN1_New_Malloc(ret, PKCS12_BAGS); | ||
127 | ret->type=NULL; | ||
128 | ret->value.other=NULL; | ||
129 | return (ret); | ||
130 | M_ASN1_New_Error(ASN1_F_PKCS12_BAGS_NEW); | ||
131 | } | ||
132 | |||
133 | PKCS12_BAGS *d2i_PKCS12_BAGS(PKCS12_BAGS **a, unsigned char **pp, | ||
134 | long length) | ||
135 | { | ||
136 | int bagnid; | ||
137 | M_ASN1_D2I_vars(a,PKCS12_BAGS *,PKCS12_BAGS_new); | ||
138 | M_ASN1_D2I_Init(); | ||
139 | M_ASN1_D2I_start_sequence(); | ||
140 | M_ASN1_D2I_get (ret->type, d2i_ASN1_OBJECT); | ||
141 | bagnid = OBJ_obj2nid (ret->type); | ||
142 | switch (bagnid) { | ||
143 | |||
144 | case NID_x509Certificate: | ||
145 | M_ASN1_D2I_get_EXP_opt (ret->value.x509cert, | ||
146 | d2i_ASN1_OCTET_STRING, 0); | ||
147 | break; | ||
148 | |||
149 | case NID_x509Crl: | ||
150 | M_ASN1_D2I_get_EXP_opt (ret->value.x509crl, | ||
151 | d2i_ASN1_OCTET_STRING, 0); | ||
152 | break; | ||
153 | |||
154 | case NID_sdsiCertificate: | ||
155 | M_ASN1_D2I_get_EXP_opt (ret->value.sdsicert, | ||
156 | d2i_ASN1_IA5STRING, 0); | ||
157 | break; | ||
158 | |||
159 | default: | ||
160 | M_ASN1_D2I_get_EXP_opt (ret->value.other, | ||
161 | d2i_ASN1_TYPE, 0); | ||
162 | break; | ||
163 | } | ||
164 | |||
165 | M_ASN1_D2I_Finish(a, PKCS12_BAGS_free, ASN1_F_D2I_PKCS12_BAGS); | ||
166 | } | ||
167 | |||
168 | void PKCS12_BAGS_free (PKCS12_BAGS *a) | ||
169 | { | ||
170 | if (a == NULL) return; | ||
171 | switch (OBJ_obj2nid(a->type)) { | ||
172 | |||
173 | case NID_x509Certificate: | ||
174 | ASN1_OCTET_STRING_free (a->value.x509cert); | ||
175 | break; | ||
176 | |||
177 | case NID_x509Crl: | ||
178 | ASN1_OCTET_STRING_free (a->value.x509crl); | ||
179 | break; | ||
180 | |||
181 | case NID_sdsiCertificate: | ||
182 | ASN1_IA5STRING_free (a->value.sdsicert); | ||
183 | break; | ||
184 | |||
185 | default: | ||
186 | ASN1_TYPE_free (a->value.other); | ||
187 | break; | ||
188 | } | ||
189 | |||
190 | ASN1_OBJECT_free (a->type); | ||
191 | Free ((char *)a); | ||
192 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c b/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c new file mode 100644 index 0000000000..6de6f8128f --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c | |||
@@ -0,0 +1,122 @@ | |||
1 | /* p12_crpt.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* PKCS#12 specific PBE functions */ | ||
64 | |||
65 | void PKCS12_PBE_add(void) | ||
66 | { | ||
67 | #ifndef NO_RC4 | ||
68 | EVP_PBE_alg_add(NID_pbe_WithSHA1And128BitRC4, EVP_rc4(), EVP_sha1(), | ||
69 | PKCS12_PBE_keyivgen); | ||
70 | EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC4, EVP_rc4_40(), EVP_sha1(), | ||
71 | PKCS12_PBE_keyivgen); | ||
72 | #endif | ||
73 | EVP_PBE_alg_add(NID_pbe_WithSHA1And3_Key_TripleDES_CBC, | ||
74 | EVP_des_ede3_cbc(), EVP_sha1(), PKCS12_PBE_keyivgen); | ||
75 | EVP_PBE_alg_add(NID_pbe_WithSHA1And2_Key_TripleDES_CBC, | ||
76 | EVP_des_ede_cbc(), EVP_sha1(), PKCS12_PBE_keyivgen); | ||
77 | #ifndef NO_RC2 | ||
78 | EVP_PBE_alg_add(NID_pbe_WithSHA1And128BitRC2_CBC, EVP_rc2_cbc(), | ||
79 | EVP_sha1(), PKCS12_PBE_keyivgen); | ||
80 | EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC2_CBC, EVP_rc2_40_cbc(), | ||
81 | EVP_sha1(), PKCS12_PBE_keyivgen); | ||
82 | #endif | ||
83 | } | ||
84 | |||
85 | int PKCS12_PBE_keyivgen (EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | ||
86 | ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md, int en_de) | ||
87 | { | ||
88 | PBEPARAM *pbe; | ||
89 | int saltlen, iter; | ||
90 | unsigned char *salt, *pbuf; | ||
91 | unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; | ||
92 | |||
93 | /* Extract useful info from parameter */ | ||
94 | pbuf = param->value.sequence->data; | ||
95 | if (!param || (param->type != V_ASN1_SEQUENCE) || | ||
96 | !(pbe = d2i_PBEPARAM (NULL, &pbuf, param->value.sequence->length))) { | ||
97 | EVPerr(PKCS12_F_PKCS12_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); | ||
98 | return 0; | ||
99 | } | ||
100 | |||
101 | if (!pbe->iter) iter = 1; | ||
102 | else iter = ASN1_INTEGER_get (pbe->iter); | ||
103 | salt = pbe->salt->data; | ||
104 | saltlen = pbe->salt->length; | ||
105 | if (!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_KEY_ID, | ||
106 | iter, EVP_CIPHER_key_length(cipher), key, md)) { | ||
107 | PKCS12err(PKCS12_F_PKCS12_PBE_KEYIVGEN,PKCS12_R_KEY_GEN_ERROR); | ||
108 | PBEPARAM_free(pbe); | ||
109 | return 0; | ||
110 | } | ||
111 | if (!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_IV_ID, | ||
112 | iter, EVP_CIPHER_iv_length(cipher), iv, md)) { | ||
113 | PKCS12err(PKCS12_F_PKCS12_PBE_KEYIVGEN,PKCS12_R_IV_GEN_ERROR); | ||
114 | PBEPARAM_free(pbe); | ||
115 | return 0; | ||
116 | } | ||
117 | PBEPARAM_free(pbe); | ||
118 | EVP_CipherInit(ctx, cipher, key, iv, en_de); | ||
119 | memset(key, 0, EVP_MAX_KEY_LENGTH); | ||
120 | memset(iv, 0, EVP_MAX_IV_LENGTH); | ||
121 | return 1; | ||
122 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_crt.c b/src/lib/libssl/src/crypto/pkcs12/p12_crt.c new file mode 100644 index 0000000000..56d88b0759 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_crt.c | |||
@@ -0,0 +1,159 @@ | |||
1 | /* p12_crt.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, | ||
64 | STACK *ca, int nid_key, int nid_cert, int iter, int mac_iter, | ||
65 | int keytype) | ||
66 | { | ||
67 | PKCS12 *p12; | ||
68 | STACK *bags, *safes; | ||
69 | PKCS12_SAFEBAG *bag; | ||
70 | PKCS8_PRIV_KEY_INFO *p8; | ||
71 | PKCS7 *authsafe; | ||
72 | X509 *tcert; | ||
73 | int i; | ||
74 | unsigned char keyid[EVP_MAX_MD_SIZE]; | ||
75 | unsigned int keyidlen; | ||
76 | |||
77 | /* Set defaults */ | ||
78 | if(!nid_cert) nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC; | ||
79 | if(!nid_key) nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; | ||
80 | if(!iter) iter = PKCS12_DEFAULT_ITER; | ||
81 | if(!mac_iter) mac_iter = 1; | ||
82 | |||
83 | if(!pkey || !cert) { | ||
84 | PKCS12err(PKCS12_F_PKCS12_CREATE,PKCS12_R_INVALID_NULL_ARGUMENT); | ||
85 | return NULL; | ||
86 | } | ||
87 | |||
88 | if(!(bags = sk_new (NULL))) { | ||
89 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
90 | return NULL; | ||
91 | } | ||
92 | |||
93 | /* Add user certificate */ | ||
94 | if(!(bag = M_PKCS12_x5092certbag(cert))) return NULL; | ||
95 | if(name && !PKCS12_add_friendlyname(bag, name, -1)) return NULL; | ||
96 | X509_digest(cert, EVP_sha1(), keyid, &keyidlen); | ||
97 | if(!PKCS12_add_localkeyid(bag, keyid, keyidlen)) return NULL; | ||
98 | |||
99 | if(!sk_push(bags, (char *)bag)) { | ||
100 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
101 | return NULL; | ||
102 | } | ||
103 | |||
104 | /* Add all other certificates */ | ||
105 | if(ca) { | ||
106 | for(i = 0; i < sk_num(ca); i++) { | ||
107 | tcert = (X509 *)sk_value(ca, i); | ||
108 | if(!(bag = M_PKCS12_x5092certbag(tcert))) return NULL; | ||
109 | if(!sk_push(bags, (char *)bag)) { | ||
110 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
111 | return NULL; | ||
112 | } | ||
113 | } | ||
114 | } | ||
115 | |||
116 | /* Turn certbags into encrypted authsafe */ | ||
117 | authsafe = PKCS12_pack_p7encdata (nid_cert, pass, -1, NULL, 0, | ||
118 | iter, bags); | ||
119 | sk_pop_free(bags, PKCS12_SAFEBAG_free); | ||
120 | |||
121 | if (!authsafe) return NULL; | ||
122 | |||
123 | if(!(safes = sk_new (NULL)) || !sk_push(safes, (char *)authsafe)) { | ||
124 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
125 | return NULL; | ||
126 | } | ||
127 | |||
128 | /* Make a shrouded key bag */ | ||
129 | if(!(p8 = EVP_PKEY2PKCS8 (pkey))) return NULL; | ||
130 | if(keytype && !PKCS8_add_keyusage(p8, keytype)) return NULL; | ||
131 | bag = PKCS12_MAKE_SHKEYBAG (nid_key, pass, -1, NULL, 0, iter, p8); | ||
132 | if(!bag) return NULL; | ||
133 | PKCS8_PRIV_KEY_INFO_free(p8); | ||
134 | if (name && !PKCS12_add_friendlyname (bag, name, -1)) return NULL; | ||
135 | if(!PKCS12_add_localkeyid (bag, keyid, keyidlen)) return NULL; | ||
136 | if(!(bags = sk_new(NULL)) || !sk_push (bags, (char *)bag)) { | ||
137 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
138 | return NULL; | ||
139 | } | ||
140 | /* Turn it into unencrypted safe bag */ | ||
141 | if(!(authsafe = PKCS12_pack_p7data (bags))) return NULL; | ||
142 | sk_pop_free(bags, PKCS12_SAFEBAG_free); | ||
143 | if(!sk_push(safes, (char *)authsafe)) { | ||
144 | PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE); | ||
145 | return NULL; | ||
146 | } | ||
147 | |||
148 | if(!(p12 = PKCS12_init (NID_pkcs7_data))) return NULL; | ||
149 | |||
150 | if(!M_PKCS12_pack_authsafes (p12, safes)) return NULL; | ||
151 | |||
152 | sk_pop_free(safes, PKCS7_free); | ||
153 | |||
154 | if(!PKCS12_set_mac (p12, pass, -1, NULL, 0, mac_iter, NULL)) | ||
155 | return NULL; | ||
156 | |||
157 | return p12; | ||
158 | |||
159 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_decr.c b/src/lib/libssl/src/crypto/pkcs12/p12_decr.c new file mode 100644 index 0000000000..d3d288e187 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_decr.c | |||
@@ -0,0 +1,185 @@ | |||
1 | /* p12_decr.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Define this to dump decrypted output to files called DERnnn */ | ||
64 | /*#define DEBUG_DECRYPT*/ | ||
65 | |||
66 | |||
67 | /* Encrypt/Decrypt a buffer based on password and algor, result in a | ||
68 | * Malloc'ed buffer | ||
69 | */ | ||
70 | |||
71 | unsigned char * PKCS12_pbe_crypt (X509_ALGOR *algor, const char *pass, | ||
72 | int passlen, unsigned char *in, int inlen, unsigned char **data, | ||
73 | int *datalen, int en_de) | ||
74 | { | ||
75 | unsigned char *out; | ||
76 | int outlen, i; | ||
77 | EVP_CIPHER_CTX ctx; | ||
78 | |||
79 | /* Decrypt data */ | ||
80 | if (!EVP_PBE_CipherInit (algor->algorithm, pass, passlen, | ||
81 | algor->parameter, &ctx, en_de)) { | ||
82 | PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR); | ||
83 | return NULL; | ||
84 | } | ||
85 | |||
86 | if(!(out = Malloc (inlen + EVP_CIPHER_CTX_block_size(&ctx)))) { | ||
87 | PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,ERR_R_MALLOC_FAILURE); | ||
88 | return NULL; | ||
89 | } | ||
90 | |||
91 | EVP_CipherUpdate (&ctx, out, &i, in, inlen); | ||
92 | outlen = i; | ||
93 | if(!EVP_CipherFinal (&ctx, out + i, &i)) { | ||
94 | Free (out); | ||
95 | PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,PKCS12_R_PKCS12_CIPHERFINAL_ERROR); | ||
96 | return NULL; | ||
97 | } | ||
98 | outlen += i; | ||
99 | if (datalen) *datalen = outlen; | ||
100 | if (data) *data = out; | ||
101 | return out; | ||
102 | |||
103 | } | ||
104 | |||
105 | /* Decrypt an OCTET STRING and decode ASN1 structure | ||
106 | * if seq & 1 'obj' is a stack of structures to be encoded | ||
107 | * if seq & 2 zero buffer after use | ||
108 | * as a sequence. | ||
109 | */ | ||
110 | |||
111 | char * PKCS12_decrypt_d2i (X509_ALGOR *algor, char * (*d2i)(), | ||
112 | void (*free_func)(), const char *pass, int passlen, | ||
113 | ASN1_OCTET_STRING *oct, int seq) | ||
114 | { | ||
115 | unsigned char *out, *p; | ||
116 | char *ret; | ||
117 | int outlen; | ||
118 | |||
119 | if (!PKCS12_pbe_crypt (algor, pass, passlen, oct->data, oct->length, | ||
120 | &out, &outlen, 0)) { | ||
121 | PKCS12err(PKCS12_F_PKCS12_DECRYPT_D2I,PKCS12_R_PKCS12_PBE_CRYPT_ERROR); | ||
122 | return NULL; | ||
123 | } | ||
124 | p = out; | ||
125 | #ifdef DEBUG_DECRYPT | ||
126 | { | ||
127 | FILE *op; | ||
128 | |||
129 | char fname[30]; | ||
130 | static int fnm = 1; | ||
131 | sprintf(fname, "DER%d", fnm++); | ||
132 | op = fopen(fname, "wb"); | ||
133 | fwrite (p, 1, outlen, op); | ||
134 | fclose(op); | ||
135 | } | ||
136 | #endif | ||
137 | if (seq & 1) ret = (char *) d2i_ASN1_SET(NULL, &p, outlen, d2i, | ||
138 | free_func, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL); | ||
139 | else ret = d2i(NULL, &p, outlen); | ||
140 | if (seq & 2) memset(out, 0, outlen); | ||
141 | if(!ret) PKCS12err(PKCS12_F_PKCS12_DECRYPT_D2I,PKCS12_R_DECODE_ERROR); | ||
142 | Free (out); | ||
143 | return ret; | ||
144 | } | ||
145 | |||
146 | /* Encode ASN1 structure and encrypt, return OCTET STRING | ||
147 | * if 'seq' is non-zero 'obj' is a stack of structures to be encoded | ||
148 | * as a sequence | ||
149 | */ | ||
150 | |||
151 | ASN1_OCTET_STRING *PKCS12_i2d_encrypt (X509_ALGOR *algor, int (*i2d)(), | ||
152 | const char *pass, int passlen, | ||
153 | char *obj, int seq) | ||
154 | { | ||
155 | ASN1_OCTET_STRING *oct; | ||
156 | unsigned char *in, *p; | ||
157 | int inlen; | ||
158 | if (!(oct = ASN1_OCTET_STRING_new ())) { | ||
159 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE); | ||
160 | return NULL; | ||
161 | } | ||
162 | if (seq) inlen = i2d_ASN1_SET((STACK *)obj, NULL, i2d, V_ASN1_SEQUENCE, | ||
163 | V_ASN1_UNIVERSAL, IS_SEQUENCE); | ||
164 | else inlen = i2d (obj, NULL); | ||
165 | if (!inlen) { | ||
166 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,PKCS12_R_ENCODE_ERROR); | ||
167 | return NULL; | ||
168 | } | ||
169 | if (!(in = Malloc (inlen))) { | ||
170 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE); | ||
171 | return NULL; | ||
172 | } | ||
173 | p = in; | ||
174 | if (seq) i2d_ASN1_SET((STACK *)obj, &p, i2d, V_ASN1_SEQUENCE, | ||
175 | V_ASN1_UNIVERSAL, IS_SEQUENCE); | ||
176 | else i2d (obj, &p); | ||
177 | if (!PKCS12_pbe_crypt (algor, pass, passlen, in, inlen, &oct->data, | ||
178 | &oct->length, 1)) { | ||
179 | PKCS12err(PKCS12_F_PKCS12_I2D_ENCRYPT,PKCS12_R_ENCRYPT_ERROR); | ||
180 | Free(in); | ||
181 | return NULL; | ||
182 | } | ||
183 | Free (in); | ||
184 | return oct; | ||
185 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_init.c b/src/lib/libssl/src/crypto/pkcs12/p12_init.c new file mode 100644 index 0000000000..dc6ab41db8 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_init.c | |||
@@ -0,0 +1,98 @@ | |||
1 | /* p12_init.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Initialise a PKCS12 structure to take data */ | ||
64 | |||
65 | PKCS12 *PKCS12_init (int mode) | ||
66 | { | ||
67 | PKCS12 *pkcs12; | ||
68 | if (!(pkcs12 = PKCS12_new())) { | ||
69 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
70 | return NULL; | ||
71 | } | ||
72 | if (!(pkcs12->version = ASN1_INTEGER_new ())) { | ||
73 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
74 | return NULL; | ||
75 | } | ||
76 | ASN1_INTEGER_set (pkcs12->version, 3); | ||
77 | if (!(pkcs12->authsafes = PKCS7_new())) { | ||
78 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
79 | return NULL; | ||
80 | } | ||
81 | pkcs12->authsafes->type = OBJ_nid2obj(mode); | ||
82 | switch (mode) { | ||
83 | case NID_pkcs7_data: | ||
84 | if (!(pkcs12->authsafes->d.data = | ||
85 | ASN1_OCTET_STRING_new())) { | ||
86 | PKCS12err(PKCS12_F_PKCS12_INIT,ERR_R_MALLOC_FAILURE); | ||
87 | return NULL; | ||
88 | } | ||
89 | break; | ||
90 | default: | ||
91 | PKCS12err(PKCS12_F_PKCS12_INIT,PKCS12_R_UNSUPPORTED_PKCS12_MODE); | ||
92 | PKCS12_free(pkcs12); | ||
93 | return NULL; | ||
94 | break; | ||
95 | } | ||
96 | |||
97 | return pkcs12; | ||
98 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_key.c b/src/lib/libssl/src/crypto/pkcs12/p12_key.c new file mode 100644 index 0000000000..25d8cdae57 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_key.c | |||
@@ -0,0 +1,182 @@ | |||
1 | /* p12_key.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | |||
64 | /* Uncomment out this line to get debugging info about key generation */ | ||
65 | /*#define DEBUG_KEYGEN*/ | ||
66 | #ifdef DEBUG_KEYGEN | ||
67 | #include <bio.h> | ||
68 | extern BIO *bio_err; | ||
69 | void h__dump (unsigned char *p, int len); | ||
70 | #endif | ||
71 | |||
72 | /* PKCS12 compatible key/IV generation */ | ||
73 | #ifndef min | ||
74 | #define min(a,b) ((a) < (b) ? (a) : (b)) | ||
75 | #endif | ||
76 | |||
77 | int PKCS12_key_gen_asc (const char *pass, int passlen, unsigned char *salt, | ||
78 | int saltlen, int id, int iter, int n, unsigned char *out, | ||
79 | const EVP_MD *md_type) | ||
80 | { | ||
81 | int ret; | ||
82 | unsigned char *unipass; | ||
83 | int uniplen; | ||
84 | if (!asc2uni (pass, &unipass, &uniplen)) { | ||
85 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); | ||
86 | return 0; | ||
87 | } | ||
88 | ret = PKCS12_key_gen_uni (unipass, uniplen, salt, saltlen, | ||
89 | id, iter, n, out, md_type); | ||
90 | memset(unipass, 0, uniplen); /* Clear password from memory */ | ||
91 | Free(unipass); | ||
92 | return ret; | ||
93 | } | ||
94 | |||
95 | int PKCS12_key_gen_uni (unsigned char *pass, int passlen, unsigned char *salt, | ||
96 | int saltlen, int id, int iter, int n, unsigned char *out, | ||
97 | const EVP_MD *md_type) | ||
98 | { | ||
99 | unsigned char *B, *D, *I, *p, *Ai; | ||
100 | int Slen, Plen, Ilen; | ||
101 | int i, j, u, v; | ||
102 | BIGNUM *Ij, *Bpl1; /* These hold Ij and B + 1 */ | ||
103 | EVP_MD_CTX ctx; | ||
104 | #ifdef DEBUG_KEYGEN | ||
105 | unsigned char *tmpout = out; | ||
106 | int tmpn = n; | ||
107 | BIO_printf (bio_err, "KEYGEN DEBUG\n"); | ||
108 | BIO_printf (bio_err, "ID %d, ITER %d\n", id, iter); | ||
109 | BIO_printf (bio_err, "Password (length %d):\n", passlen); | ||
110 | h__dump (pass, passlen); | ||
111 | BIO_printf (bio_err, "Salt (length %d):\n", saltlen); | ||
112 | h__dump (salt, saltlen); | ||
113 | BIO_printf (bio_err, "ID %d, ITER %d\n\n", id, iter); | ||
114 | #endif | ||
115 | v = EVP_MD_block_size (md_type); | ||
116 | u = EVP_MD_size (md_type); | ||
117 | D = Malloc (v); | ||
118 | Ai = Malloc (u); | ||
119 | B = Malloc (v + 1); | ||
120 | Slen = v * ((saltlen+v-1)/v); | ||
121 | Plen = v * ((passlen+v-1)/v); | ||
122 | Ilen = Slen + Plen; | ||
123 | I = Malloc (Ilen); | ||
124 | Ij = BN_new(); | ||
125 | Bpl1 = BN_new(); | ||
126 | if (!D || !Ai || !B || !I || !Ij || !Bpl1) { | ||
127 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_UNI,ERR_R_MALLOC_FAILURE); | ||
128 | return 0; | ||
129 | } | ||
130 | for (i = 0; i < v; i++) D[i] = id; | ||
131 | p = I; | ||
132 | for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen]; | ||
133 | for (i = 0; i < Plen; i++) *p++ = pass[i % passlen]; | ||
134 | for (;;) { | ||
135 | EVP_DigestInit (&ctx, md_type); | ||
136 | EVP_DigestUpdate (&ctx, D, v); | ||
137 | EVP_DigestUpdate (&ctx, I, Ilen); | ||
138 | EVP_DigestFinal (&ctx, Ai, NULL); | ||
139 | for (j = 1; j < iter; j++) { | ||
140 | EVP_DigestInit (&ctx, md_type); | ||
141 | EVP_DigestUpdate (&ctx, Ai, u); | ||
142 | EVP_DigestFinal (&ctx, Ai, NULL); | ||
143 | } | ||
144 | memcpy (out, Ai, min (n, u)); | ||
145 | if (u >= n) { | ||
146 | Free (Ai); | ||
147 | Free (B); | ||
148 | Free (D); | ||
149 | Free (I); | ||
150 | BN_free (Ij); | ||
151 | BN_free (Bpl1); | ||
152 | #ifdef DEBUG_KEYGEN | ||
153 | BIO_printf (bio_err, "Output KEY (length %d)\n", tmpn); | ||
154 | h__dump (tmpout, tmpn); | ||
155 | #endif | ||
156 | return 1; | ||
157 | } | ||
158 | n -= u; | ||
159 | out += u; | ||
160 | for (j = 0; j < v; j++) B[j] = Ai[j % u]; | ||
161 | /* Work out B + 1 first then can use B as tmp space */ | ||
162 | BN_bin2bn (B, v, Bpl1); | ||
163 | BN_add_word (Bpl1, 1); | ||
164 | for (j = 0; j < Ilen ; j+=v) { | ||
165 | BN_bin2bn (I + j, v, Ij); | ||
166 | BN_add (Ij, Ij, Bpl1); | ||
167 | BN_bn2bin (Ij, B); | ||
168 | /* If more than 2^(v*8) - 1 cut off MSB */ | ||
169 | if (BN_num_bytes (Ij) > v) { | ||
170 | BN_bn2bin (Ij, B); | ||
171 | memcpy (I + j, B + 1, v); | ||
172 | } else BN_bn2bin (Ij, I + j); | ||
173 | } | ||
174 | } | ||
175 | } | ||
176 | #ifdef DEBUG_KEYGEN | ||
177 | void h__dump (unsigned char *p, int len) | ||
178 | { | ||
179 | for (; len --; p++) BIO_printf (bio_err, "%02X", *p); | ||
180 | BIO_printf (bio_err, "\n"); | ||
181 | } | ||
182 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c b/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c new file mode 100644 index 0000000000..767e1303da --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c | |||
@@ -0,0 +1,238 @@ | |||
1 | /* p12_kiss.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Simplified PKCS#12 routines */ | ||
64 | |||
65 | static int parse_pk12( PKCS12 *p12, const char *pass, int passlen, EVP_PKEY **pkey, X509 **cert, STACK **ca); | ||
66 | static int parse_bags( STACK *bags, const char *pass, int passlen, EVP_PKEY **pkey, X509 **cert, STACK **ca, ASN1_OCTET_STRING **keyid, char *keymatch); | ||
67 | static int parse_bag( PKCS12_SAFEBAG *bag, const char *pass, int passlen, EVP_PKEY **pkey, X509 **cert, STACK **ca, ASN1_OCTET_STRING **keyid, char *keymatch); | ||
68 | /* Parse and decrypt a PKCS#12 structure returning user key, user cert | ||
69 | * and other (CA) certs. Note either ca should be NULL, *ca should be NULL, | ||
70 | * or it should point to a valid STACK structure. pkey and cert can be | ||
71 | * passed unitialised. | ||
72 | */ | ||
73 | |||
74 | int PKCS12_parse (PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, | ||
75 | STACK **ca) | ||
76 | { | ||
77 | |||
78 | /* Check for NULL PKCS12 structure */ | ||
79 | |||
80 | if(!p12) { | ||
81 | PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_INVALID_NULL_PKCS12_POINTER); | ||
82 | return 0; | ||
83 | } | ||
84 | |||
85 | /* Allocate stack for ca certificates if needed */ | ||
86 | if ((ca != NULL) && (*ca == NULL)) { | ||
87 | if (!(*ca = sk_new(NULL))) { | ||
88 | PKCS12err(PKCS12_F_PKCS12_PARSE,ERR_R_MALLOC_FAILURE); | ||
89 | return 0; | ||
90 | } | ||
91 | } | ||
92 | |||
93 | if(pkey) *pkey = NULL; | ||
94 | if(cert) *cert = NULL; | ||
95 | |||
96 | /* Check the mac */ | ||
97 | |||
98 | if (!PKCS12_verify_mac (p12, pass, -1)) { | ||
99 | PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_MAC_VERIFY_FAILURE); | ||
100 | goto err; | ||
101 | } | ||
102 | |||
103 | if (!parse_pk12 (p12, pass, -1, pkey, cert, ca)) { | ||
104 | PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_PARSE_ERROR); | ||
105 | goto err; | ||
106 | } | ||
107 | |||
108 | return 1; | ||
109 | |||
110 | err: | ||
111 | |||
112 | if (pkey && *pkey) EVP_PKEY_free (*pkey); | ||
113 | if (cert && *cert) X509_free (*cert); | ||
114 | if (ca) sk_pop_free (*ca, X509_free); | ||
115 | return 0; | ||
116 | |||
117 | } | ||
118 | |||
119 | /* Parse the outer PKCS#12 structure */ | ||
120 | |||
121 | static int parse_pk12 (PKCS12 *p12, const char *pass, int passlen, | ||
122 | EVP_PKEY **pkey, X509 **cert, STACK **ca) | ||
123 | { | ||
124 | STACK *asafes, *bags; | ||
125 | int i, bagnid; | ||
126 | PKCS7 *p7; | ||
127 | ASN1_OCTET_STRING *keyid = NULL; | ||
128 | char keymatch = 0; | ||
129 | if (!( asafes = M_PKCS12_unpack_authsafes (p12))) return 0; | ||
130 | for (i = 0; i < sk_num (asafes); i++) { | ||
131 | p7 = (PKCS7 *) sk_value (asafes, i); | ||
132 | bagnid = OBJ_obj2nid (p7->type); | ||
133 | if (bagnid == NID_pkcs7_data) { | ||
134 | bags = M_PKCS12_unpack_p7data (p7); | ||
135 | } else if (bagnid == NID_pkcs7_encrypted) { | ||
136 | bags = M_PKCS12_unpack_p7encdata (p7, pass, passlen); | ||
137 | } else continue; | ||
138 | if (!bags) { | ||
139 | sk_pop_free (asafes, PKCS7_free); | ||
140 | return 0; | ||
141 | } | ||
142 | if (!parse_bags (bags, pass, passlen, pkey, cert, ca, | ||
143 | &keyid, &keymatch)) { | ||
144 | sk_pop_free (bags, PKCS12_SAFEBAG_free); | ||
145 | sk_pop_free (asafes, PKCS7_free); | ||
146 | return 0; | ||
147 | } | ||
148 | sk_pop_free (bags, PKCS12_SAFEBAG_free); | ||
149 | } | ||
150 | sk_pop_free (asafes, PKCS7_free); | ||
151 | if (keyid) ASN1_OCTET_STRING_free (keyid); | ||
152 | return 1; | ||
153 | } | ||
154 | |||
155 | |||
156 | static int parse_bags (STACK *bags, const char *pass, int passlen, | ||
157 | EVP_PKEY **pkey, X509 **cert, STACK **ca, | ||
158 | ASN1_OCTET_STRING **keyid, char *keymatch) | ||
159 | { | ||
160 | int i; | ||
161 | for (i = 0; i < sk_num (bags); i++) { | ||
162 | if (!parse_bag ((PKCS12_SAFEBAG *)sk_value (bags, i), | ||
163 | pass, passlen, pkey, cert, ca, keyid, | ||
164 | keymatch)) return 0; | ||
165 | } | ||
166 | return 1; | ||
167 | } | ||
168 | |||
169 | #define MATCH_KEY 0x1 | ||
170 | #define MATCH_CERT 0x2 | ||
171 | #define MATCH_ALL 0x3 | ||
172 | |||
173 | static int parse_bag (PKCS12_SAFEBAG *bag, const char *pass, int passlen, | ||
174 | EVP_PKEY **pkey, X509 **cert, STACK **ca, | ||
175 | ASN1_OCTET_STRING **keyid, | ||
176 | char *keymatch) | ||
177 | { | ||
178 | PKCS8_PRIV_KEY_INFO *p8; | ||
179 | X509 *x509; | ||
180 | ASN1_OCTET_STRING *lkey = NULL; | ||
181 | ASN1_TYPE *attrib; | ||
182 | |||
183 | |||
184 | if ((attrib = PKCS12_get_attr (bag, NID_localKeyID))) | ||
185 | lkey = attrib->value.octet_string; | ||
186 | |||
187 | /* Check for any local key id matching (if needed) */ | ||
188 | if (lkey && ((*keymatch & MATCH_ALL) != MATCH_ALL)) { | ||
189 | if (*keyid) { | ||
190 | if (ASN1_OCTET_STRING_cmp (*keyid, lkey)) lkey = NULL; | ||
191 | } else { | ||
192 | if (!(*keyid = ASN1_OCTET_STRING_dup (lkey))) { | ||
193 | PKCS12err(PKCS12_F_PARSE_BAGS,ERR_R_MALLOC_FAILURE); | ||
194 | return 0; | ||
195 | } | ||
196 | } | ||
197 | } | ||
198 | |||
199 | switch (M_PKCS12_bag_type(bag)) | ||
200 | { | ||
201 | case NID_keyBag: | ||
202 | if (!lkey || !pkey) return 1; | ||
203 | if (!(*pkey = EVP_PKCS82PKEY (bag->value.keybag))) return 0; | ||
204 | *keymatch |= MATCH_KEY; | ||
205 | break; | ||
206 | |||
207 | case NID_pkcs8ShroudedKeyBag: | ||
208 | if (!lkey || !pkey) return 1; | ||
209 | if (!(p8 = M_PKCS12_decrypt_skey (bag, pass, passlen))) | ||
210 | return 0; | ||
211 | *pkey = EVP_PKCS82PKEY (p8); | ||
212 | PKCS8_PRIV_KEY_INFO_free (p8); | ||
213 | if (!(*pkey)) return 0; | ||
214 | *keymatch |= MATCH_KEY; | ||
215 | break; | ||
216 | |||
217 | case NID_certBag: | ||
218 | if (M_PKCS12_cert_bag_type(bag) != NID_x509Certificate ) | ||
219 | return 1; | ||
220 | if (!(x509 = M_PKCS12_certbag2x509(bag))) return 0; | ||
221 | if (lkey) { | ||
222 | *keymatch |= MATCH_CERT; | ||
223 | if (cert) *cert = x509; | ||
224 | } else if (ca) sk_push (*ca, (char *)x509); | ||
225 | break; | ||
226 | |||
227 | case NID_safeContentsBag: | ||
228 | return parse_bags(bag->value.safes, pass, passlen, | ||
229 | pkey, cert, ca, keyid, keymatch); | ||
230 | break; | ||
231 | |||
232 | default: | ||
233 | return 1; | ||
234 | break; | ||
235 | } | ||
236 | return 1; | ||
237 | } | ||
238 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_lib.c b/src/lib/libssl/src/crypto/pkcs12/p12_lib.c new file mode 100644 index 0000000000..00a6695d9b --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_lib.c | |||
@@ -0,0 +1,111 @@ | |||
1 | /* p12_lib.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12(PKCS12 *a, unsigned char **pp) | ||
65 | { | ||
66 | M_ASN1_I2D_vars(a); | ||
67 | |||
68 | M_ASN1_I2D_len (a->version, i2d_ASN1_INTEGER); | ||
69 | M_ASN1_I2D_len (a->authsafes, i2d_PKCS7); | ||
70 | M_ASN1_I2D_len (a->mac, i2d_PKCS12_MAC_DATA); | ||
71 | |||
72 | M_ASN1_I2D_seq_total(); | ||
73 | |||
74 | M_ASN1_I2D_put (a->version, i2d_ASN1_INTEGER); | ||
75 | M_ASN1_I2D_put (a->authsafes, i2d_PKCS7); | ||
76 | M_ASN1_I2D_put (a->mac, i2d_PKCS12_MAC_DATA); | ||
77 | |||
78 | M_ASN1_I2D_finish(); | ||
79 | } | ||
80 | |||
81 | PKCS12 *d2i_PKCS12(PKCS12 **a, unsigned char **pp, long length) | ||
82 | { | ||
83 | M_ASN1_D2I_vars(a,PKCS12 *,PKCS12_new); | ||
84 | M_ASN1_D2I_Init(); | ||
85 | M_ASN1_D2I_start_sequence(); | ||
86 | M_ASN1_D2I_get (ret->version, d2i_ASN1_INTEGER); | ||
87 | M_ASN1_D2I_get (ret->authsafes, d2i_PKCS7); | ||
88 | M_ASN1_D2I_get_opt (ret->mac, d2i_PKCS12_MAC_DATA, V_ASN1_SEQUENCE); | ||
89 | M_ASN1_D2I_Finish(a, PKCS12_free, ASN1_F_D2I_PKCS12); | ||
90 | } | ||
91 | |||
92 | PKCS12 *PKCS12_new(void) | ||
93 | { | ||
94 | PKCS12 *ret=NULL; | ||
95 | ASN1_CTX c; | ||
96 | M_ASN1_New_Malloc(ret, PKCS12); | ||
97 | ret->version=NULL; | ||
98 | ret->mac=NULL; | ||
99 | ret->authsafes=NULL; | ||
100 | return (ret); | ||
101 | M_ASN1_New_Error(ASN1_F_PKCS12_NEW); | ||
102 | } | ||
103 | |||
104 | void PKCS12_free (PKCS12 *a) | ||
105 | { | ||
106 | if (a == NULL) return; | ||
107 | ASN1_INTEGER_free (a->version); | ||
108 | PKCS12_MAC_DATA_free (a->mac); | ||
109 | PKCS7_free (a->authsafes); | ||
110 | Free ((char *)a); | ||
111 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_mac.c b/src/lib/libssl/src/crypto/pkcs12/p12_mac.c new file mode 100644 index 0000000000..f163d4cfaa --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_mac.c | |||
@@ -0,0 +1,110 @@ | |||
1 | /* p12_mac.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *a, unsigned char **pp) | ||
65 | { | ||
66 | M_ASN1_I2D_vars(a); | ||
67 | M_ASN1_I2D_len (a->dinfo, i2d_X509_SIG); | ||
68 | M_ASN1_I2D_len (a->salt, i2d_ASN1_OCTET_STRING); | ||
69 | M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER); | ||
70 | |||
71 | M_ASN1_I2D_seq_total(); | ||
72 | |||
73 | M_ASN1_I2D_put (a->dinfo, i2d_X509_SIG); | ||
74 | M_ASN1_I2D_put (a->salt, i2d_ASN1_OCTET_STRING); | ||
75 | M_ASN1_I2D_put (a->iter, i2d_ASN1_INTEGER); | ||
76 | M_ASN1_I2D_finish(); | ||
77 | } | ||
78 | |||
79 | PKCS12_MAC_DATA *PKCS12_MAC_DATA_new(void) | ||
80 | { | ||
81 | PKCS12_MAC_DATA *ret=NULL; | ||
82 | ASN1_CTX c; | ||
83 | M_ASN1_New_Malloc(ret, PKCS12_MAC_DATA); | ||
84 | ret->dinfo = X509_SIG_new(); | ||
85 | ret->salt = ASN1_OCTET_STRING_new(); | ||
86 | ret->iter = NULL; | ||
87 | return (ret); | ||
88 | M_ASN1_New_Error(ASN1_F_PKCS12_MAC_DATA_NEW); | ||
89 | } | ||
90 | |||
91 | PKCS12_MAC_DATA *d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **a, unsigned char **pp, | ||
92 | long length) | ||
93 | { | ||
94 | M_ASN1_D2I_vars(a,PKCS12_MAC_DATA *,PKCS12_MAC_DATA_new); | ||
95 | M_ASN1_D2I_Init(); | ||
96 | M_ASN1_D2I_start_sequence(); | ||
97 | M_ASN1_D2I_get (ret->dinfo, d2i_X509_SIG); | ||
98 | M_ASN1_D2I_get (ret->salt, d2i_ASN1_OCTET_STRING); | ||
99 | M_ASN1_D2I_get_opt (ret->iter, d2i_ASN1_INTEGER, V_ASN1_INTEGER); | ||
100 | M_ASN1_D2I_Finish(a, PKCS12_MAC_DATA_free, ASN1_F_D2I_PKCS12_MAC_DATA); | ||
101 | } | ||
102 | |||
103 | void PKCS12_MAC_DATA_free (PKCS12_MAC_DATA *a) | ||
104 | { | ||
105 | if (a == NULL) return; | ||
106 | X509_SIG_free (a->dinfo); | ||
107 | ASN1_OCTET_STRING_free (a->salt); | ||
108 | ASN1_INTEGER_free (a->iter); | ||
109 | Free ((char *)a); | ||
110 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c b/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c new file mode 100644 index 0000000000..bac558d6b9 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c | |||
@@ -0,0 +1,170 @@ | |||
1 | /* p12_mutl.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #ifndef NO_HMAC | ||
60 | #include <stdio.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include <openssl/hmac.h> | ||
63 | #include <openssl/rand.h> | ||
64 | #include <openssl/pkcs12.h> | ||
65 | |||
66 | /* Generate a MAC */ | ||
67 | int PKCS12_gen_mac (PKCS12 *p12, const char *pass, int passlen, | ||
68 | unsigned char *mac, unsigned int *maclen) | ||
69 | { | ||
70 | const EVP_MD *md_type; | ||
71 | HMAC_CTX hmac; | ||
72 | unsigned char key[PKCS12_MAC_KEY_LENGTH], *salt; | ||
73 | int saltlen, iter; | ||
74 | salt = p12->mac->salt->data; | ||
75 | saltlen = p12->mac->salt->length; | ||
76 | if (!p12->mac->iter) iter = 1; | ||
77 | else iter = ASN1_INTEGER_get (p12->mac->iter); | ||
78 | if(!(md_type = | ||
79 | EVP_get_digestbyobj (p12->mac->dinfo->algor->algorithm))) { | ||
80 | PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_UNKNOWN_DIGEST_ALGORITHM); | ||
81 | return 0; | ||
82 | } | ||
83 | if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, | ||
84 | PKCS12_MAC_KEY_LENGTH, key, md_type)) { | ||
85 | PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR); | ||
86 | return 0; | ||
87 | } | ||
88 | HMAC_Init (&hmac, key, PKCS12_MAC_KEY_LENGTH, md_type); | ||
89 | HMAC_Update (&hmac, p12->authsafes->d.data->data, | ||
90 | p12->authsafes->d.data->length); | ||
91 | HMAC_Final (&hmac, mac, maclen); | ||
92 | return 1; | ||
93 | } | ||
94 | |||
95 | /* Verify the mac */ | ||
96 | int PKCS12_verify_mac (PKCS12 *p12, const char *pass, int passlen) | ||
97 | { | ||
98 | unsigned char mac[EVP_MAX_MD_SIZE]; | ||
99 | unsigned int maclen; | ||
100 | if(p12->mac == NULL) { | ||
101 | PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_ABSENT); | ||
102 | return 0; | ||
103 | } | ||
104 | if (!PKCS12_gen_mac (p12, pass, passlen, mac, &maclen)) { | ||
105 | PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_GENERATION_ERROR); | ||
106 | return 0; | ||
107 | } | ||
108 | if ((maclen != (unsigned int)p12->mac->dinfo->digest->length) | ||
109 | || memcmp (mac, p12->mac->dinfo->digest->data, maclen)) { | ||
110 | PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_VERIFY_ERROR); | ||
111 | return 0; | ||
112 | } | ||
113 | return 1; | ||
114 | } | ||
115 | |||
116 | /* Set a mac */ | ||
117 | |||
118 | int PKCS12_set_mac (PKCS12 *p12, const char *pass, int passlen, | ||
119 | unsigned char *salt, int saltlen, int iter, EVP_MD *md_type) | ||
120 | { | ||
121 | unsigned char mac[EVP_MAX_MD_SIZE]; | ||
122 | unsigned int maclen; | ||
123 | |||
124 | if (!md_type) md_type = EVP_sha1(); | ||
125 | if (PKCS12_setup_mac (p12, iter, salt, saltlen, md_type) == | ||
126 | PKCS12_ERROR) { | ||
127 | PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_SETUP_ERROR); | ||
128 | return 0; | ||
129 | } | ||
130 | if (!PKCS12_gen_mac (p12, pass, passlen, mac, &maclen)) { | ||
131 | PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_GENERATION_ERROR); | ||
132 | return 0; | ||
133 | } | ||
134 | if (!(ASN1_OCTET_STRING_set (p12->mac->dinfo->digest, mac, maclen))) { | ||
135 | PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_STRING_SET_ERROR); | ||
136 | return 0; | ||
137 | } | ||
138 | return 1; | ||
139 | } | ||
140 | |||
141 | /* Set up a mac structure */ | ||
142 | int PKCS12_setup_mac (PKCS12 *p12, int iter, unsigned char *salt, int saltlen, | ||
143 | EVP_MD *md_type) | ||
144 | { | ||
145 | if (!(p12->mac = PKCS12_MAC_DATA_new ())) return PKCS12_ERROR; | ||
146 | if (iter > 1) { | ||
147 | if(!(p12->mac->iter = ASN1_INTEGER_new())) { | ||
148 | PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); | ||
149 | return 0; | ||
150 | } | ||
151 | ASN1_INTEGER_set (p12->mac->iter, iter); | ||
152 | } | ||
153 | if (!saltlen) saltlen = PKCS12_SALT_LEN; | ||
154 | p12->mac->salt->length = saltlen; | ||
155 | if (!(p12->mac->salt->data = Malloc (saltlen))) { | ||
156 | PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); | ||
157 | return 0; | ||
158 | } | ||
159 | if (!salt) RAND_bytes (p12->mac->salt->data, saltlen); | ||
160 | else memcpy (p12->mac->salt->data, salt, saltlen); | ||
161 | p12->mac->dinfo->algor->algorithm = OBJ_nid2obj(EVP_MD_type(md_type)); | ||
162 | if (!(p12->mac->dinfo->algor->parameter = ASN1_TYPE_new())) { | ||
163 | PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); | ||
164 | return 0; | ||
165 | } | ||
166 | p12->mac->dinfo->algor->parameter->type = V_ASN1_NULL; | ||
167 | |||
168 | return 1; | ||
169 | } | ||
170 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_sbag.c b/src/lib/libssl/src/crypto/pkcs12/p12_sbag.c new file mode 100644 index 0000000000..1b3addece1 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_sbag.c | |||
@@ -0,0 +1,227 @@ | |||
1 | /* p12_sbag.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/asn1_mac.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | int i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *a, unsigned char **pp) | ||
65 | { | ||
66 | int bagnid, v = 0; | ||
67 | M_ASN1_I2D_vars(a); | ||
68 | bagnid = OBJ_obj2nid (a->type); | ||
69 | M_ASN1_I2D_len (a->type, i2d_ASN1_OBJECT); | ||
70 | |||
71 | switch (bagnid) { | ||
72 | |||
73 | case NID_keyBag: | ||
74 | M_ASN1_I2D_len_EXP_opt (a->value.keybag, | ||
75 | i2d_PKCS8_PRIV_KEY_INFO, 0, v); | ||
76 | break; | ||
77 | |||
78 | case NID_pkcs8ShroudedKeyBag: | ||
79 | M_ASN1_I2D_len_EXP_opt (a->value.shkeybag, | ||
80 | i2d_X509_SIG, 0, v); | ||
81 | break; | ||
82 | |||
83 | case NID_safeContentsBag: | ||
84 | M_ASN1_I2D_len_EXP_SEQUENCE_opt (a->value.safes, | ||
85 | i2d_PKCS12_SAFEBAG, 0, V_ASN1_SEQUENCE, v); | ||
86 | break; | ||
87 | |||
88 | case NID_certBag: | ||
89 | case NID_crlBag: | ||
90 | case NID_secretBag: | ||
91 | M_ASN1_I2D_len_EXP_opt (a->value.bag, | ||
92 | i2d_PKCS12_BAGS, 0, v); | ||
93 | break; | ||
94 | |||
95 | default: | ||
96 | M_ASN1_I2D_len_EXP_opt (a->value.other, | ||
97 | i2d_ASN1_TYPE, 0, v); | ||
98 | break; | ||
99 | } | ||
100 | |||
101 | M_ASN1_I2D_len_SET_type (X509_ATTRIBUTE,a->attrib, i2d_X509_ATTRIBUTE); | ||
102 | |||
103 | M_ASN1_I2D_seq_total (); | ||
104 | |||
105 | M_ASN1_I2D_put (a->type, i2d_ASN1_OBJECT); | ||
106 | |||
107 | switch (bagnid) { | ||
108 | |||
109 | case NID_keyBag: | ||
110 | M_ASN1_I2D_put_EXP_opt (a->value.keybag, | ||
111 | i2d_PKCS8_PRIV_KEY_INFO, 0, v); | ||
112 | break; | ||
113 | |||
114 | case NID_pkcs8ShroudedKeyBag: | ||
115 | M_ASN1_I2D_put_EXP_opt (a->value.shkeybag, | ||
116 | i2d_X509_SIG, 0, v); | ||
117 | break; | ||
118 | |||
119 | case NID_safeContentsBag: | ||
120 | M_ASN1_I2D_put_EXP_SEQUENCE_opt (a->value.safes, | ||
121 | i2d_PKCS12_SAFEBAG, 0, V_ASN1_SEQUENCE, v); | ||
122 | break; | ||
123 | |||
124 | case NID_certBag: | ||
125 | case NID_crlBag: | ||
126 | case NID_secretBag: | ||
127 | M_ASN1_I2D_put_EXP_opt (a->value.bag, | ||
128 | i2d_PKCS12_BAGS, 0, v); | ||
129 | break; | ||
130 | |||
131 | default: | ||
132 | M_ASN1_I2D_put_EXP_opt (a->value.other, | ||
133 | i2d_ASN1_TYPE, 0, v); | ||
134 | break; | ||
135 | } | ||
136 | |||
137 | M_ASN1_I2D_put_SET_type (X509_ATTRIBUTE, a->attrib, i2d_X509_ATTRIBUTE); | ||
138 | |||
139 | M_ASN1_I2D_finish(); | ||
140 | } | ||
141 | |||
142 | PKCS12_SAFEBAG *PKCS12_SAFEBAG_new(void) | ||
143 | { | ||
144 | PKCS12_SAFEBAG *ret=NULL; | ||
145 | ASN1_CTX c; | ||
146 | M_ASN1_New_Malloc(ret, PKCS12_SAFEBAG); | ||
147 | ret->type=NULL; | ||
148 | ret->value.other=NULL; | ||
149 | M_ASN1_New(ret->attrib, sk_X509_ATTRIBUTE_new_null); | ||
150 | ret->rest=NULL; | ||
151 | return (ret); | ||
152 | M_ASN1_New_Error(ASN1_F_PKCS12_SAFEBAG_NEW); | ||
153 | } | ||
154 | |||
155 | PKCS12_SAFEBAG *d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, unsigned char **pp, | ||
156 | long length) | ||
157 | { | ||
158 | int bagnid; | ||
159 | M_ASN1_D2I_vars(a,PKCS12_SAFEBAG *,PKCS12_SAFEBAG_new); | ||
160 | M_ASN1_D2I_Init(); | ||
161 | M_ASN1_D2I_start_sequence(); | ||
162 | M_ASN1_D2I_get (ret->type, d2i_ASN1_OBJECT); | ||
163 | bagnid = OBJ_obj2nid (ret->type); | ||
164 | |||
165 | switch (bagnid) { | ||
166 | |||
167 | case NID_keyBag: | ||
168 | M_ASN1_D2I_get_EXP_opt (ret->value.keybag, | ||
169 | d2i_PKCS8_PRIV_KEY_INFO, 0); | ||
170 | break; | ||
171 | |||
172 | case NID_pkcs8ShroudedKeyBag: | ||
173 | M_ASN1_D2I_get_EXP_opt (ret->value.shkeybag, | ||
174 | d2i_X509_SIG, 0); | ||
175 | break; | ||
176 | |||
177 | case NID_safeContentsBag: | ||
178 | M_ASN1_D2I_get_EXP_set_opt(ret->value.safes, | ||
179 | d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, | ||
180 | 0, V_ASN1_SEQUENCE); | ||
181 | break; | ||
182 | |||
183 | case NID_certBag: | ||
184 | case NID_crlBag: | ||
185 | case NID_secretBag: | ||
186 | M_ASN1_D2I_get_EXP_opt (ret->value.bag, | ||
187 | d2i_PKCS12_BAGS, 0); | ||
188 | break; | ||
189 | |||
190 | default: | ||
191 | M_ASN1_D2I_get_EXP_opt (ret->value.other, | ||
192 | d2i_ASN1_TYPE, 0); | ||
193 | break; | ||
194 | } | ||
195 | M_ASN1_D2I_get_set_opt_type(X509_ATTRIBUTE,ret->attrib, | ||
196 | d2i_X509_ATTRIBUTE,X509_ATTRIBUTE_free); | ||
197 | M_ASN1_D2I_Finish(a, PKCS12_SAFEBAG_free, ASN1_F_D2I_PKCS12_SAFEBAG); | ||
198 | } | ||
199 | |||
200 | void PKCS12_SAFEBAG_free (PKCS12_SAFEBAG *a) | ||
201 | { | ||
202 | if (a == NULL) return; | ||
203 | switch (OBJ_obj2nid(a->type)) { | ||
204 | |||
205 | case NID_keyBag: | ||
206 | PKCS8_PRIV_KEY_INFO_free (a->value.keybag); | ||
207 | break; | ||
208 | |||
209 | case NID_pkcs8ShroudedKeyBag: | ||
210 | X509_SIG_free (a->value.shkeybag); | ||
211 | break; | ||
212 | |||
213 | case NID_certBag: | ||
214 | case NID_crlBag: | ||
215 | case NID_secretBag: | ||
216 | PKCS12_BAGS_free (a->value.bag); | ||
217 | break; | ||
218 | |||
219 | default: | ||
220 | ASN1_TYPE_free (a->value.other); | ||
221 | break; | ||
222 | } | ||
223 | |||
224 | ASN1_OBJECT_free (a->type); | ||
225 | sk_X509_ATTRIBUTE_pop_free (a->attrib, X509_ATTRIBUTE_free); | ||
226 | Free (a); | ||
227 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_utl.c b/src/lib/libssl/src/crypto/pkcs12/p12_utl.c new file mode 100644 index 0000000000..2adcbc95e1 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/p12_utl.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /* p12_utl.c */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/pkcs12.h> | ||
62 | |||
63 | /* Cheap and nasty Unicode stuff */ | ||
64 | |||
65 | unsigned char *asc2uni (const char *asc, unsigned char **uni, int *unilen) | ||
66 | { | ||
67 | int ulen, i; | ||
68 | unsigned char *unitmp; | ||
69 | ulen = strlen(asc)*2 + 2; | ||
70 | if (!(unitmp = Malloc (ulen))) return NULL; | ||
71 | for (i = 0; i < ulen; i+=2) { | ||
72 | unitmp[i] = 0; | ||
73 | unitmp[i + 1] = asc[i>>1]; | ||
74 | } | ||
75 | if (unilen) *unilen = ulen; | ||
76 | if (uni) *uni = unitmp; | ||
77 | return unitmp; | ||
78 | } | ||
79 | |||
80 | char *uni2asc (unsigned char *uni, int unilen) | ||
81 | { | ||
82 | int asclen, i; | ||
83 | char *asctmp; | ||
84 | asclen = unilen / 2; | ||
85 | /* If no terminating zero allow for one */ | ||
86 | if (uni[unilen - 1]) asclen++; | ||
87 | uni++; | ||
88 | if (!(asctmp = Malloc (asclen))) return NULL; | ||
89 | for (i = 0; i < unilen; i+=2) asctmp[i>>1] = uni[i]; | ||
90 | asctmp[asclen - 1] = 0; | ||
91 | return asctmp; | ||
92 | } | ||
93 | |||
94 | int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12) | ||
95 | { | ||
96 | return ASN1_i2d_bio((int(*)())i2d_PKCS12, bp, (unsigned char *)p12); | ||
97 | } | ||
98 | |||
99 | #ifndef NO_FP_API | ||
100 | int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12) | ||
101 | { | ||
102 | return ASN1_i2d_fp((int(*)())i2d_PKCS12, fp, (unsigned char *)p12); | ||
103 | } | ||
104 | #endif | ||
105 | |||
106 | PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12) | ||
107 | { | ||
108 | return (PKCS12 *)ASN1_d2i_bio((char *(*)())PKCS12_new, | ||
109 | (char *(*)())d2i_PKCS12, bp, (unsigned char **)p12); | ||
110 | } | ||
111 | #ifndef NO_FP_API | ||
112 | PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12) | ||
113 | { | ||
114 | return (PKCS12 *)ASN1_d2i_fp((char *(*)())PKCS12_new, | ||
115 | (char *(*)())d2i_PKCS12, fp, (unsigned char **)(p12)); | ||
116 | } | ||
117 | #endif | ||
118 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs12/pk12err.c b/src/lib/libssl/src/crypto/pkcs12/pk12err.c new file mode 100644 index 0000000000..38d7be7675 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/pk12err.c | |||
@@ -0,0 +1,136 @@ | |||
1 | /* crypto/pkcs12/pk12err.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions | ||
7 | * are met: | ||
8 | * | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in | ||
14 | * the documentation and/or other materials provided with the | ||
15 | * distribution. | ||
16 | * | ||
17 | * 3. All advertising materials mentioning features or use of this | ||
18 | * software must display the following acknowledgment: | ||
19 | * "This product includes software developed by the OpenSSL Project | ||
20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
21 | * | ||
22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
23 | * endorse or promote products derived from this software without | ||
24 | * prior written permission. For written permission, please contact | ||
25 | * openssl-core@OpenSSL.org. | ||
26 | * | ||
27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
28 | * nor may "OpenSSL" appear in their names without prior written | ||
29 | * permission of the OpenSSL Project. | ||
30 | * | ||
31 | * 6. Redistributions of any form whatsoever must retain the following | ||
32 | * acknowledgment: | ||
33 | * "This product includes software developed by the OpenSSL Project | ||
34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
35 | * | ||
36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
54 | */ | ||
55 | |||
56 | /* NOTE: this file was auto generated by the mkerr.pl script: any changes | ||
57 | * made to it will be overwritten when the script next updates this file. | ||
58 | */ | ||
59 | |||
60 | #include <stdio.h> | ||
61 | #include <openssl/err.h> | ||
62 | #include <openssl/pkcs12.h> | ||
63 | |||
64 | /* BEGIN ERROR CODES */ | ||
65 | #ifndef NO_ERR | ||
66 | static ERR_STRING_DATA PKCS12_str_functs[]= | ||
67 | { | ||
68 | {ERR_PACK(0,PKCS12_F_PARSE_BAGS,0), "PARSE_BAGS"}, | ||
69 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME,0), "PKCS12_ADD_FRIENDLYNAME"}, | ||
70 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC,0), "PKCS12_add_friendlyname_asc"}, | ||
71 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI,0), "PKCS12_add_friendlyname_uni"}, | ||
72 | {ERR_PACK(0,PKCS12_F_PKCS12_ADD_LOCALKEYID,0), "PKCS12_add_localkeyid"}, | ||
73 | {ERR_PACK(0,PKCS12_F_PKCS12_CREATE,0), "PKCS12_create"}, | ||
74 | {ERR_PACK(0,PKCS12_F_PKCS12_DECRYPT_D2I,0), "PKCS12_decrypt_d2i"}, | ||
75 | {ERR_PACK(0,PKCS12_F_PKCS12_GEN_MAC,0), "PKCS12_gen_mac"}, | ||
76 | {ERR_PACK(0,PKCS12_F_PKCS12_I2D_ENCRYPT,0), "PKCS12_i2d_encrypt"}, | ||
77 | {ERR_PACK(0,PKCS12_F_PKCS12_INIT,0), "PKCS12_init"}, | ||
78 | {ERR_PACK(0,PKCS12_F_PKCS12_KEY_GEN_ASC,0), "PKCS12_key_gen_asc"}, | ||
79 | {ERR_PACK(0,PKCS12_F_PKCS12_KEY_GEN_UNI,0), "PKCS12_key_gen_uni"}, | ||
80 | {ERR_PACK(0,PKCS12_F_PKCS12_MAKE_KEYBAG,0), "PKCS12_MAKE_KEYBAG"}, | ||
81 | {ERR_PACK(0,PKCS12_F_PKCS12_MAKE_SHKEYBAG,0), "PKCS12_MAKE_SHKEYBAG"}, | ||
82 | {ERR_PACK(0,PKCS12_F_PKCS12_PACK_P7DATA,0), "PKCS12_pack_p7data"}, | ||
83 | {ERR_PACK(0,PKCS12_F_PKCS12_PACK_P7ENCDATA,0), "PKCS12_pack_p7encdata"}, | ||
84 | {ERR_PACK(0,PKCS12_F_PKCS12_PACK_SAFEBAG,0), "PKCS12_pack_safebag"}, | ||
85 | {ERR_PACK(0,PKCS12_F_PKCS12_PARSE,0), "PKCS12_parse"}, | ||
86 | {ERR_PACK(0,PKCS12_F_PKCS12_PBE_CRYPT,0), "PKCS12_pbe_crypt"}, | ||
87 | {ERR_PACK(0,PKCS12_F_PKCS12_PBE_KEYIVGEN,0), "PKCS12_PBE_keyivgen"}, | ||
88 | {ERR_PACK(0,PKCS12_F_PKCS12_SETUP_MAC,0), "PKCS12_setup_mac"}, | ||
89 | {ERR_PACK(0,PKCS12_F_PKCS12_SET_MAC,0), "PKCS12_set_mac"}, | ||
90 | {ERR_PACK(0,PKCS12_F_PKCS8_ADD_KEYUSAGE,0), "PKCS8_add_keyusage"}, | ||
91 | {ERR_PACK(0,PKCS12_F_PKCS8_ENCRYPT,0), "PKCS8_encrypt"}, | ||
92 | {ERR_PACK(0,PKCS12_F_VERIFY_MAC,0), "VERIFY_MAC"}, | ||
93 | {0,NULL} | ||
94 | }; | ||
95 | |||
96 | static ERR_STRING_DATA PKCS12_str_reasons[]= | ||
97 | { | ||
98 | {PKCS12_R_CANT_PACK_STRUCTURE ,"cant pack structure"}, | ||
99 | {PKCS12_R_DECODE_ERROR ,"decode error"}, | ||
100 | {PKCS12_R_ENCODE_ERROR ,"encode error"}, | ||
101 | {PKCS12_R_ENCRYPT_ERROR ,"encrypt error"}, | ||
102 | {PKCS12_R_INVALID_NULL_ARGUMENT ,"invalid null argument"}, | ||
103 | {PKCS12_R_INVALID_NULL_PKCS12_POINTER ,"invalid null pkcs12 pointer"}, | ||
104 | {PKCS12_R_IV_GEN_ERROR ,"iv gen error"}, | ||
105 | {PKCS12_R_KEY_GEN_ERROR ,"key gen error"}, | ||
106 | {PKCS12_R_MAC_ABSENT ,"mac absent"}, | ||
107 | {PKCS12_R_MAC_GENERATION_ERROR ,"mac generation error"}, | ||
108 | {PKCS12_R_MAC_SETUP_ERROR ,"mac setup error"}, | ||
109 | {PKCS12_R_MAC_STRING_SET_ERROR ,"mac string set error"}, | ||
110 | {PKCS12_R_MAC_VERIFY_ERROR ,"mac verify error"}, | ||
111 | {PKCS12_R_MAC_VERIFY_FAILURE ,"mac verify failure"}, | ||
112 | {PKCS12_R_PARSE_ERROR ,"parse error"}, | ||
113 | {PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR ,"pkcs12 algor cipherinit error"}, | ||
114 | {PKCS12_R_PKCS12_CIPHERFINAL_ERROR ,"pkcs12 cipherfinal error"}, | ||
115 | {PKCS12_R_PKCS12_PBE_CRYPT_ERROR ,"pkcs12 pbe crypt error"}, | ||
116 | {PKCS12_R_UNKNOWN_DIGEST_ALGORITHM ,"unknown digest algorithm"}, | ||
117 | {PKCS12_R_UNSUPPORTED_PKCS12_MODE ,"unsupported pkcs12 mode"}, | ||
118 | {0,NULL} | ||
119 | }; | ||
120 | |||
121 | #endif | ||
122 | |||
123 | void ERR_load_PKCS12_strings(void) | ||
124 | { | ||
125 | static int init=1; | ||
126 | |||
127 | if (init) | ||
128 | { | ||
129 | init=0; | ||
130 | #ifndef NO_ERR | ||
131 | ERR_load_strings(ERR_LIB_PKCS12,PKCS12_str_functs); | ||
132 | ERR_load_strings(ERR_LIB_PKCS12,PKCS12_str_reasons); | ||
133 | #endif | ||
134 | |||
135 | } | ||
136 | } | ||
diff --git a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h new file mode 100644 index 0000000000..4cfba5e6c6 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h | |||
@@ -0,0 +1,337 @@ | |||
1 | /* pkcs12.h */ | ||
2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | ||
3 | * project 1999. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #ifndef HEADER_PKCS12_H | ||
60 | #define HEADER_PKCS12_H | ||
61 | |||
62 | #ifdef __cplusplus | ||
63 | extern "C" { | ||
64 | #endif | ||
65 | |||
66 | #include <openssl/bio.h> | ||
67 | #include <openssl/x509.h> | ||
68 | |||
69 | #define PKCS12_KEY_ID 1 | ||
70 | #define PKCS12_IV_ID 2 | ||
71 | #define PKCS12_MAC_ID 3 | ||
72 | |||
73 | /* Default iteration count */ | ||
74 | #ifndef PKCS12_DEFAULT_ITER | ||
75 | #define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER | ||
76 | #endif | ||
77 | |||
78 | #define PKCS12_MAC_KEY_LENGTH 20 | ||
79 | |||
80 | #define PKCS12_SALT_LEN 8 | ||
81 | |||
82 | /* Uncomment out next line for unicode password and names, otherwise ASCII */ | ||
83 | |||
84 | /*#define PBE_UNICODE*/ | ||
85 | |||
86 | #ifdef PBE_UNICODE | ||
87 | #define PKCS12_key_gen PKCS12_key_gen_uni | ||
88 | #define PKCS12_add_friendlyname PKCS12_add_friendlyname_uni | ||
89 | #else | ||
90 | #define PKCS12_key_gen PKCS12_key_gen_asc | ||
91 | #define PKCS12_add_friendlyname PKCS12_add_friendlyname_asc | ||
92 | #endif | ||
93 | |||
94 | /* MS key usage constants */ | ||
95 | |||
96 | #define KEY_EX 0x10 | ||
97 | #define KEY_SIG 0x80 | ||
98 | |||
99 | typedef struct { | ||
100 | X509_SIG *dinfo; | ||
101 | ASN1_OCTET_STRING *salt; | ||
102 | ASN1_INTEGER *iter; /* defaults to 1 */ | ||
103 | } PKCS12_MAC_DATA; | ||
104 | |||
105 | typedef struct { | ||
106 | ASN1_INTEGER *version; | ||
107 | PKCS12_MAC_DATA *mac; | ||
108 | PKCS7 *authsafes; | ||
109 | } PKCS12; | ||
110 | |||
111 | typedef struct { | ||
112 | ASN1_OBJECT *type; | ||
113 | union { | ||
114 | struct pkcs12_bag_st *bag; /* secret, crl and certbag */ | ||
115 | struct pkcs8_priv_key_info_st *keybag; /* keybag */ | ||
116 | X509_SIG *shkeybag; /* shrouded key bag */ | ||
117 | STACK /* PKCS12_SAFEBAG */ *safes; | ||
118 | ASN1_TYPE *other; | ||
119 | }value; | ||
120 | STACK_OF(X509_ATTRIBUTE) *attrib; | ||
121 | ASN1_TYPE *rest; | ||
122 | } PKCS12_SAFEBAG; | ||
123 | |||
124 | typedef struct pkcs12_bag_st { | ||
125 | ASN1_OBJECT *type; | ||
126 | union { | ||
127 | ASN1_OCTET_STRING *x509cert; | ||
128 | ASN1_OCTET_STRING *x509crl; | ||
129 | ASN1_OCTET_STRING *octet; | ||
130 | ASN1_IA5STRING *sdsicert; | ||
131 | ASN1_TYPE *other; /* Secret or other bag */ | ||
132 | }value; | ||
133 | } PKCS12_BAGS; | ||
134 | |||
135 | #define PKCS12_ERROR 0 | ||
136 | #define PKCS12_OK 1 | ||
137 | |||
138 | #define M_PKCS12_bag_type(bag) OBJ_obj2nid(bag->type) | ||
139 | #define M_PKCS12_cert_bag_type(bag) OBJ_obj2nid(bag->value.bag->type) | ||
140 | #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type | ||
141 | |||
142 | #define M_PKCS12_x5092certbag(x509) \ | ||
143 | PKCS12_pack_safebag ((char *)(x509), i2d_X509, NID_x509Certificate, NID_certBag) | ||
144 | |||
145 | #define M_PKCS12_x509crl2certbag(crl) \ | ||
146 | PKCS12_pack_safebag ((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag) | ||
147 | |||
148 | #define M_PKCS12_certbag2x509(bg) \ | ||
149 | (X509 *) ASN1_unpack_string ((bg)->value.bag->value.octet, \ | ||
150 | (char *(*)())d2i_X509) | ||
151 | |||
152 | #define M_PKCS12_certbag2x509crl(bg) \ | ||
153 | (X509CRL *) ASN1_unpack_string ((bg)->value.bag->value.octet, \ | ||
154 | (char *(*)())d2i_X509CRL) | ||
155 | |||
156 | /*#define M_PKCS12_pkcs82rsa(p8) \ | ||
157 | (RSA *) ASN1_unpack_string ((p8)->pkey, (char *(*)())d2i_RSAPrivateKey)*/ | ||
158 | |||
159 | #define M_PKCS12_unpack_p7data(p7) \ | ||
160 | ASN1_seq_unpack ((p7)->d.data->data, p7->d.data->length, \ | ||
161 | (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free) | ||
162 | |||
163 | #define M_PKCS12_pack_authsafes(p12, safes) \ | ||
164 | ASN1_seq_pack((safes), (int (*)())i2d_PKCS7,\ | ||
165 | &(p12)->authsafes->d.data->data, &(p12)->authsafes->d.data->length) | ||
166 | |||
167 | #define M_PKCS12_unpack_authsafes(p12) \ | ||
168 | ASN1_seq_unpack((p12)->authsafes->d.data->data, \ | ||
169 | (p12)->authsafes->d.data->length, (char *(*)())d2i_PKCS7, \ | ||
170 | PKCS7_free) | ||
171 | |||
172 | #define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \ | ||
173 | (STACK *) PKCS12_decrypt_d2i ((p7)->d.encrypted->enc_data->algorithm,\ | ||
174 | (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, \ | ||
175 | (pass), (passlen), \ | ||
176 | (p7)->d.encrypted->enc_data->enc_data, 3) | ||
177 | |||
178 | #define M_PKCS12_decrypt_skey(bag, pass, passlen) \ | ||
179 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((bag)->value.shkeybag->algor, \ | ||
180 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free, \ | ||
181 | (pass), (passlen), \ | ||
182 | (bag)->value.shkeybag->digest, 2) | ||
183 | |||
184 | #define M_PKCS8_decrypt(p8, pass, passlen) \ | ||
185 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((p8)->algor, \ | ||
186 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free,\ | ||
187 | (pass), (passlen), (p8)->digest, 2) | ||
188 | |||
189 | #define PKCS12_get_attr(bag, attr_nid) \ | ||
190 | PKCS12_get_attr_gen(bag->attrib, attr_nid) | ||
191 | |||
192 | #define PKCS8_get_attr(p8, attr_nid) \ | ||
193 | PKCS12_get_attr_gen(p8->attributes, attr_nid) | ||
194 | |||
195 | #define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0) | ||
196 | |||
197 | |||
198 | PKCS12_SAFEBAG *PKCS12_pack_safebag(char *obj, int (*i2d)(), int nid1, int nid2); | ||
199 | PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8); | ||
200 | X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, | ||
201 | const char *pass, int passlen, | ||
202 | unsigned char *salt, int saltlen, int iter, | ||
203 | PKCS8_PRIV_KEY_INFO *p8); | ||
204 | PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, | ||
205 | int passlen, unsigned char *salt, | ||
206 | int saltlen, int iter, | ||
207 | PKCS8_PRIV_KEY_INFO *p8); | ||
208 | PKCS7 *PKCS12_pack_p7data(STACK *sk); | ||
209 | PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, | ||
210 | unsigned char *salt, int saltlen, int iter, | ||
211 | STACK *bags); | ||
212 | int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen); | ||
213 | int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, | ||
214 | int namelen); | ||
215 | int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, const unsigned char *name, | ||
216 | int namelen); | ||
217 | int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); | ||
218 | ASN1_TYPE *PKCS12_get_attr_gen(STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid); | ||
219 | char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); | ||
220 | unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass, | ||
221 | int passlen, unsigned char *in, int inlen, | ||
222 | unsigned char **data, int *datalen, int en_de); | ||
223 | char *PKCS12_decrypt_d2i(X509_ALGOR *algor, char *(*d2i)(), | ||
224 | void (*free_func)(), const char *pass, int passlen, | ||
225 | ASN1_STRING *oct, int seq); | ||
226 | ASN1_STRING *PKCS12_i2d_encrypt(X509_ALGOR *algor, int (*i2d)(), | ||
227 | const char *pass, int passlen, char *obj, | ||
228 | int seq); | ||
229 | PKCS12 *PKCS12_init(int mode); | ||
230 | int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, | ||
231 | int saltlen, int id, int iter, int n, | ||
232 | unsigned char *out, const EVP_MD *md_type); | ||
233 | int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, int saltlen, int id, int iter, int n, unsigned char *out, const EVP_MD *md_type); | ||
234 | int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | ||
235 | ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md_type, | ||
236 | int en_de); | ||
237 | int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, | ||
238 | unsigned char *mac, unsigned int *maclen); | ||
239 | int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); | ||
240 | int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, | ||
241 | unsigned char *salt, int saltlen, int iter, | ||
242 | EVP_MD *md_type); | ||
243 | int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, | ||
244 | int saltlen, EVP_MD *md_type); | ||
245 | unsigned char *asc2uni(const char *asc, unsigned char **uni, int *unilen); | ||
246 | char *uni2asc(unsigned char *uni, int unilen); | ||
247 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp); | ||
248 | PKCS12_BAGS *PKCS12_BAGS_new(void); | ||
249 | PKCS12_BAGS *d2i_PKCS12_BAGS(PKCS12_BAGS **a, unsigned char **pp, long length); | ||
250 | void PKCS12_BAGS_free(PKCS12_BAGS *a); | ||
251 | int i2d_PKCS12(PKCS12 *a, unsigned char **pp); | ||
252 | PKCS12 *d2i_PKCS12(PKCS12 **a, unsigned char **pp, long length); | ||
253 | PKCS12 *PKCS12_new(void); | ||
254 | void PKCS12_free(PKCS12 *a); | ||
255 | int i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *a, unsigned char **pp); | ||
256 | PKCS12_MAC_DATA *PKCS12_MAC_DATA_new(void); | ||
257 | PKCS12_MAC_DATA *d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **a, unsigned char **pp, | ||
258 | long length); | ||
259 | void PKCS12_MAC_DATA_free(PKCS12_MAC_DATA *a); | ||
260 | int i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *a, unsigned char **pp); | ||
261 | PKCS12_SAFEBAG *PKCS12_SAFEBAG_new(void); | ||
262 | PKCS12_SAFEBAG *d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, unsigned char **pp, | ||
263 | long length); | ||
264 | void PKCS12_SAFEBAG_free(PKCS12_SAFEBAG *a); | ||
265 | void ERR_load_PKCS12_strings(void); | ||
266 | void PKCS12_PBE_add(void); | ||
267 | int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, | ||
268 | STACK **ca); | ||
269 | PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, | ||
270 | STACK *ca, int nid_key, int nid_cert, int iter, | ||
271 | int mac_iter, int keytype); | ||
272 | int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); | ||
273 | int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); | ||
274 | PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); | ||
275 | PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); | ||
276 | |||
277 | /* BEGIN ERROR CODES */ | ||
278 | /* The following lines are auto generated by the script mkerr.pl. Any changes | ||
279 | * made after this point may be overwritten when the script is next run. | ||
280 | */ | ||
281 | |||
282 | /* Error codes for the PKCS12 functions. */ | ||
283 | |||
284 | /* Function codes. */ | ||
285 | #define PKCS12_F_PARSE_BAGS 103 | ||
286 | #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME 100 | ||
287 | #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC 127 | ||
288 | #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI 102 | ||
289 | #define PKCS12_F_PKCS12_ADD_LOCALKEYID 104 | ||
290 | #define PKCS12_F_PKCS12_CREATE 105 | ||
291 | #define PKCS12_F_PKCS12_DECRYPT_D2I 106 | ||
292 | #define PKCS12_F_PKCS12_GEN_MAC 107 | ||
293 | #define PKCS12_F_PKCS12_I2D_ENCRYPT 108 | ||
294 | #define PKCS12_F_PKCS12_INIT 109 | ||
295 | #define PKCS12_F_PKCS12_KEY_GEN_ASC 110 | ||
296 | #define PKCS12_F_PKCS12_KEY_GEN_UNI 111 | ||
297 | #define PKCS12_F_PKCS12_MAKE_KEYBAG 112 | ||
298 | #define PKCS12_F_PKCS12_MAKE_SHKEYBAG 113 | ||
299 | #define PKCS12_F_PKCS12_PACK_P7DATA 114 | ||
300 | #define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 | ||
301 | #define PKCS12_F_PKCS12_PACK_SAFEBAG 117 | ||
302 | #define PKCS12_F_PKCS12_PARSE 118 | ||
303 | #define PKCS12_F_PKCS12_PBE_CRYPT 119 | ||
304 | #define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 | ||
305 | #define PKCS12_F_PKCS12_SETUP_MAC 122 | ||
306 | #define PKCS12_F_PKCS12_SET_MAC 123 | ||
307 | #define PKCS12_F_PKCS8_ADD_KEYUSAGE 124 | ||
308 | #define PKCS12_F_PKCS8_ENCRYPT 125 | ||
309 | #define PKCS12_F_VERIFY_MAC 126 | ||
310 | |||
311 | /* Reason codes. */ | ||
312 | #define PKCS12_R_CANT_PACK_STRUCTURE 100 | ||
313 | #define PKCS12_R_DECODE_ERROR 101 | ||
314 | #define PKCS12_R_ENCODE_ERROR 102 | ||
315 | #define PKCS12_R_ENCRYPT_ERROR 103 | ||
316 | #define PKCS12_R_INVALID_NULL_ARGUMENT 104 | ||
317 | #define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 | ||
318 | #define PKCS12_R_IV_GEN_ERROR 106 | ||
319 | #define PKCS12_R_KEY_GEN_ERROR 107 | ||
320 | #define PKCS12_R_MAC_ABSENT 108 | ||
321 | #define PKCS12_R_MAC_GENERATION_ERROR 109 | ||
322 | #define PKCS12_R_MAC_SETUP_ERROR 110 | ||
323 | #define PKCS12_R_MAC_STRING_SET_ERROR 111 | ||
324 | #define PKCS12_R_MAC_VERIFY_ERROR 112 | ||
325 | #define PKCS12_R_MAC_VERIFY_FAILURE 113 | ||
326 | #define PKCS12_R_PARSE_ERROR 114 | ||
327 | #define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 | ||
328 | #define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 | ||
329 | #define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 | ||
330 | #define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 | ||
331 | #define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 | ||
332 | |||
333 | #ifdef __cplusplus | ||
334 | } | ||
335 | #endif | ||
336 | #endif | ||
337 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/3des.pem b/src/lib/libssl/src/crypto/pkcs7/t/3des.pem new file mode 100644 index 0000000000..b2b5081a10 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/3des.pem | |||
@@ -0,0 +1,16 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG | ||
3 | A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
4 | dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD | ||
5 | ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEC2vXI1xQDW6lUHM3zQ | ||
6 | /9uBEBOO5A3TtkrklAXq7v01gsIC21t52qSk36REXY+slhNZ0OQ349tgkTsoETHFLoEwMIHw | ||
7 | AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI | ||
8 | QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU | ||
9 | UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR9MA0G | ||
10 | CSqGSIb3DQEBAQUABEB8ujxbabxXUYJhopuDm3oDq4JNqX6Io4p3ro+ShqfIndsXTZ1v5a2N | ||
11 | WtLLCWlHn/habjBwZ/DgQgcKASbZ7QxNMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA | ||
12 | oAQIbsL5v1wX98KggAQoAaJ4WHm68fXY1WE5OIjfVBIDpO1K+i8dmKhjnAjrjoyZ9Bwc8rDL | ||
13 | lgQg4CXb805h5xl+GfvSwUaHJayte1m2mcOhs3J2YyqbQ+MEIMIiJQccmhO3oDKm36CFvYR8 | ||
14 | 5PjpclVcZyX2ngbwPFMnBAgy0clOAE6UKAAAAAAAAAAAAAA= | ||
15 | -----END PKCS7----- | ||
16 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/3dess.pem b/src/lib/libssl/src/crypto/pkcs7/t/3dess.pem new file mode 100644 index 0000000000..23f013516a --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/3dess.pem | |||
@@ -0,0 +1,32 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | 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 | ||
31 | 9CWR6g== | ||
32 | -----END PKCS7----- | ||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/c.pem b/src/lib/libssl/src/crypto/pkcs7/t/c.pem new file mode 100644 index 0000000000..a4b55e321a --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/c.pem | |||
@@ -0,0 +1,48 @@ | |||
1 | issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA | ||
2 | subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com | ||
3 | serial :047D | ||
4 | |||
5 | Certificate: | ||
6 | Data: | ||
7 | Version: 3 (0x2) | ||
8 | Serial Number: 1149 (0x47d) | ||
9 | Signature Algorithm: md5withRSAEncryption | ||
10 | Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA | ||
11 | Validity | ||
12 | Not Before: May 13 05:40:58 1998 GMT | ||
13 | Not After : May 12 05:40:58 2000 GMT | ||
14 | Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com | ||
15 | Subject Public Key Info: | ||
16 | Public Key Algorithm: rsaEncryption | ||
17 | Modulus: | ||
18 | 00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: | ||
19 | 73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: | ||
20 | 89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: | ||
21 | fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: | ||
22 | e7:e7:0c:4d:0b | ||
23 | Exponent: 65537 (0x10001) | ||
24 | X509v3 extensions: | ||
25 | Netscape Comment: | ||
26 | Generated with SSLeay | ||
27 | Signature Algorithm: md5withRSAEncryption | ||
28 | 52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: | ||
29 | f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: | ||
30 | d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: | ||
31 | 50:74:ad:92:cb:4e:90:e5:fa:7d | ||
32 | |||
33 | -----BEGIN CERTIFICATE----- | ||
34 | MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV | ||
35 | MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE | ||
36 | ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E | ||
37 | IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw | ||
38 | NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK | ||
39 | UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
40 | dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 | ||
41 | aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG | ||
42 | 9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf | ||
43 | lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB | ||
44 | hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA | ||
45 | UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 | ||
46 | 4A3ZItobUHStkstOkOX6fQ== | ||
47 | -----END CERTIFICATE----- | ||
48 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/ff b/src/lib/libssl/src/crypto/pkcs7/t/ff new file mode 100644 index 0000000000..23f013516a --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/ff | |||
@@ -0,0 +1,32 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIIGHgYJKoZIhvcNAQcCoIIGDzCCBgsCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCC | ||
3 | BGswggJTMIIB/aADAgECAgIEfjANBgkqhkiG9w0BAQQFADCBkjELMAkGA1UEBhMCQVUxEzAR | ||
4 | BgNVBAgTClF1ZWVuc2xhbmQxETAPBgNVBAcTCEJyaXNiYW5lMRowGAYDVQQKExFDcnlwdHNv | ||
5 | ZnQgUHR5IEx0ZDEiMCAGA1UECxMZREVNT05TVFJBVElPTiBBTkQgVEVTVElORzEbMBkGA1UE | ||
6 | AxMSREVNTyBaRVJPIFZBTFVFIENBMB4XDTk4MDUxMzA2MjY1NloXDTAwMDUxMjA2MjY1Nlow | ||
7 | gaUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFu | ||
8 | ZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxEjAQBgNVBAsTCVNNSU1FIDAwMzEZMBcG | ||
9 | A1UEAxMQQW5nZWxhIHZhbiBMZWVudDEjMCEGCSqGSIb3DQEJARYUYW5nZWxhQGNyeXB0c29m | ||
10 | dC5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAuC3+7dAb2LhuO7gt2cTM8vsNjhG5JfDh | ||
11 | hX1Vl/wVGbKEEj0MA6vWEolvefQlxB+EzwCtR0YZ7eEC/T/4JoCyeQIDAQABoygwJjAkBglg | ||
12 | hkgBhvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EAUnSP | ||
13 | igs6TMFISTjw8cBtJYb98czgAVkVFjKyJQwYMH8FbDnCyx6NocM555nsyDstaw8fKR11Khds | ||
14 | syd3ikkrhDCCAhAwggG6AgEDMA0GCSqGSIb3DQEBBAUAMIGSMQswCQYDVQQGEwJBVTETMBEG | ||
15 | A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
16 | dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD | ||
17 | ExJERU1PIFpFUk8gVkFMVUUgQ0EwHhcNOTgwMzAzMDc0MTMyWhcNMDgwMjI5MDc0MTMyWjCB | ||
18 | kjELMAkGA1UEBhMCQVUxEzARBgNVBAgTClF1ZWVuc2xhbmQxETAPBgNVBAcTCEJyaXNiYW5l | ||
19 | MRowGAYDVQQKExFDcnlwdHNvZnQgUHR5IEx0ZDEiMCAGA1UECxMZREVNT05TVFJBVElPTiBB | ||
20 | TkQgVEVTVElORzEbMBkGA1UEAxMSREVNTyBaRVJPIFZBTFVFIENBMFwwDQYJKoZIhvcNAQEB | ||
21 | BQADSwAwSAJBAL+0E2fLej3FSCwe2A2iRnMuC3z12qHIp6Ky1wo2zZcxft7AI+RfkrWrSGtf | ||
22 | mfzBEuPrLdfulncC5Y1pNcM8RTUCAwEAATANBgkqhkiG9w0BAQQFAANBAGSbLMphL6F5pp3s | ||
23 | 8o0Xyh86FHFdpVOwYx09ELLkuG17V/P9pgIc0Eo/gDMbN+KT3IdgECf8S//pCRA6RrNjcXIx | ||
24 | ggF7MIIBdwIBATCBmTCBkjELMAkGA1UEBhMCQVUxEzARBgNVBAgTClF1ZWVuc2xhbmQxETAP | ||
25 | BgNVBAcTCEJyaXNiYW5lMRowGAYDVQQKExFDcnlwdHNvZnQgUHR5IEx0ZDEiMCAGA1UECxMZ | ||
26 | REVNT05TVFJBVElPTiBBTkQgVEVTVElORzEbMBkGA1UEAxMSREVNTyBaRVJPIFZBTFVFIENB | ||
27 | AgIEfjAJBgUrDgMCGgUAoHowGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAbBgkqhkiG9w0B | ||
28 | CQ8xDjAMMAoGCCqGSIb3DQMHMBwGCSqGSIb3DQEJBTEPFw05ODA1MTQwMzM5MzdaMCMGCSqG | ||
29 | SIb3DQEJBDEWBBQstNMnSV26ba8PapQEDhO21yNFrjANBgkqhkiG9w0BAQEFAARAW9Xb9YXv | ||
30 | BfcNkutgFX9Gr8iXhBVsNtGEVrjrpkQwpKa7jHI8SjAlLhk/4RFwDHf+ISB9Np3Z1WDWnLcA | ||
31 | 9CWR6g== | ||
32 | -----END PKCS7----- | ||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-e b/src/lib/libssl/src/crypto/pkcs7/t/msie-e new file mode 100644 index 0000000000..aafae69fc9 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-e | |||
@@ -0,0 +1,20 @@ | |||
1 | |||
2 | MIAGCSqGSIb3DQEHA6CAMIACAQAxggHCMIHMAgEAMHYwYjERMA8GA1UEBxMISW50ZXJuZXQxFzAV | ||
3 | BgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytWZXJpU2lnbiBDbGFzcyAxIENBIC0gSW5k | ||
4 | aXZpZHVhbCBTdWJzY3JpYmVyAhBgQJiC3qfbCbjdj5INYLnKMA0GCSqGSIb3DQEBAQUABECMzu8y | ||
5 | wQ/qZbO8cAGMRBF+mPruv3+Dvb9aWNZ2k8njUgqF6mcdhVB2MkGcsG3memRXJBixvMYWVkU3qK4Z | ||
6 | VuKsMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UE | ||
7 | BxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU | ||
8 | UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0GCSqG | ||
9 | SIb3DQEBAQUABEBcWwYFHJbJGhiztt7lzue3Lc9CH5WAbyR+2BZ3uv+JxZfRs1PuaWPOwRa0Vgs3 | ||
10 | YwSJoRfxQj2Gk0wFqG1qt6d1MIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIAoAQI8vRlP/Nx | ||
11 | 2iSggASCAZhR5srxyspy7DfomRJ9ff8eMCtaNwEoEx7G25PZRonC57hBvGoScLtEPU3Wp9FEbPN7 | ||
12 | oJESeC+AqMTyTLNy8aQsyC5s53E9UkoIvg62ekYZBbXZqXsrxx4PhiiX3NH8GVh42phB0Chjw0nK | ||
13 | HZeRDmxGY3Cmk+J+l0uVKxbNIfJIKOguLBnhqmnKH/PrnzDt591u0ULy2aTLqRm+4/1Yat/QPb6J | ||
14 | eoKGwNPBbS9ogBdrCNCp9ZFg3Xar2AtQHzyTQIfYeH3SRQUpKmRm5U5o9p5emgEdT+ZfJm/J4tSH | ||
15 | OmbgAFsbHQakA4MBZ4J5qfDJhOA2g5lWk1hIeu5Dn/AaLRZd0yz3oY0Ieo/erPWx/bCqtBzYbMe9 | ||
16 | qSFTedKlbc9EGe3opOTdBZVzK8KH3w3zsy5luxKdOUG59YYb5F1IZiWGiDyuo/HuacX+griu5LeD | ||
17 | bEzOtZnko+TZXvWIko30fD79j3T4MRRhWXbgj2HKza+4vJ0mzcC/1+GPsJjAEAA/JgIEDU4w6/DI | ||
18 | /HQHhLAO3G+9xKD7MvmrzkoAAAAAAAAAAAAA | ||
19 | |||
20 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-e.pem b/src/lib/libssl/src/crypto/pkcs7/t/msie-e.pem new file mode 100644 index 0000000000..a2a5e24e74 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-e.pem | |||
@@ -0,0 +1,22 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIIDkAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ | ||
3 | bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT | ||
4 | aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ | ||
5 | uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQIzO7zLBD+pls7xwAYxEEX6Y+u6/f4O9 | ||
6 | v1pY1naTyeNSCoXqZx2FUHYyQZywbeZ6ZFckGLG8xhZWRTeorhlW4qwwgfACAQAw | ||
7 | gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH | ||
8 | EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT | ||
9 | GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW | ||
10 | QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQFxbBgUclskaGLO23uXO57ctz0If | ||
11 | lYBvJH7YFne6/4nFl9GzU+5pY87BFrRWCzdjBImhF/FCPYaTTAWobWq3p3UwggHD | ||
12 | BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECPL0ZT/zcdokgIIBmFHmyvHK | ||
13 | ynLsN+iZEn19/x4wK1o3ASgTHsbbk9lGicLnuEG8ahJwu0Q9Tdan0URs83ugkRJ4 | ||
14 | L4CoxPJMs3LxpCzILmzncT1SSgi+DrZ6RhkFtdmpeyvHHg+GKJfc0fwZWHjamEHQ | ||
15 | KGPDScodl5EObEZjcKaT4n6XS5UrFs0h8kgo6C4sGeGqacof8+ufMO3n3W7RQvLZ | ||
16 | pMupGb7j/Vhq39A9vol6gobA08FtL2iAF2sI0Kn1kWDddqvYC1AfPJNAh9h4fdJF | ||
17 | BSkqZGblTmj2nl6aAR1P5l8mb8ni1Ic6ZuAAWxsdBqQDgwFngnmp8MmE4DaDmVaT | ||
18 | WEh67kOf8BotFl3TLPehjQh6j96s9bH9sKq0HNhsx72pIVN50qVtz0QZ7eik5N0F | ||
19 | lXMrwoffDfOzLmW7Ep05Qbn1hhvkXUhmJYaIPK6j8e5pxf6CuK7kt4NsTM61meSj | ||
20 | 5Nle9YiSjfR8Pv2PdPgxFGFZduCPYcrNr7i8nSbNwL/X4Y+wmMAQAD8mAgQNTjDr | ||
21 | 8Mj8dAeEsA7cb73EoPsy+avOSgAAAAA= | ||
22 | -----END PKCS7----- | ||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-01 b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-01 new file mode 100644 index 0000000000..2c93ab6462 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-01 | |||
@@ -0,0 +1,62 @@ | |||
1 | |||
2 | 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 | ||
61 | AAAAAAAAAAAA | ||
62 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-01.pem b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-01.pem new file mode 100644 index 0000000000..9abf00b2f2 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-01.pem | |||
@@ -0,0 +1,66 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | 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 | ||
65 | 6RLfsTyyPgJi0GsAAAAA | ||
66 | -----END PKCS7----- | ||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-02 b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-02 new file mode 100644 index 0000000000..7017055965 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-02 | |||
@@ -0,0 +1,90 @@ | |||
1 | |||
2 | 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 | ||
89 | rZgAAAAAAAAAAAAA | ||
90 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-02.pem b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-02.pem new file mode 100644 index 0000000000..279c5d830b --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-enc-02.pem | |||
@@ -0,0 +1,106 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIITQAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ | ||
3 | bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT | ||
4 | aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ | ||
5 | uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQAKvi2eRLO+jdoiUd8ksZt+iQ0JXoWN0 | ||
6 | M/W9CEv6R1c42pwUIR/1F4RMK9oeyUiv9Z6lzmPaGNmx6XOCoueszVkwgfACAQAw | ||
7 | gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH | ||
8 | EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT | ||
9 | GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW | ||
10 | QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQFqcHEo69ShGfcOIVjnmWXLZM+7Y | ||
11 | K/50j8YuvNbqq+dQxk9YY8ZpSU/JYsxmtcnEZdlSJEkpMHAO73V+eh1QQr0wghFz | ||
12 | BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECJsSmRA1jxLjgIIRSIGLVtf+ | ||
13 | pzeB6oXJ9GlfsnIij+DgIOvrYaXC9qywAaUg7zMnln9QMgiih5XpBLgPg5Y/KYp3 | ||
14 | RZeHBwkjTIFwlNYSjE0PbsszsJYUmkDTsCjFUJEdM4+Cbv3g3Kct5w1Q6pVMXJLg | ||
15 | JG4uFUY8CTScVkb9ETbIy3HisCRKJWA57ERLvCr/Fa6gNJKa5Mw1A5Nsp+QQqp0U | ||
16 | uQz93raAPbCdqmHu8qQ88rzbB1k/ysXedRQLlzhqFs2hryD7kHe0gX8nPdlkre8Y | ||
17 | tTQhY76LtbjnV2drXcyCUMONc56KQ2VcuxB0BWjSeyN8a75/rpt6wmiM/PKw0D4g | ||
18 | RmXqA1ZR62X2WKbhKqvG5tQTF1LauZeddeYS4Rb8cLt2VMB5irkKWrHmJ3qyWELY | ||
19 | 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 | ||
105 | FK2YAAAAAA== | ||
106 | -----END PKCS7----- | ||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-s-a-e b/src/lib/libssl/src/crypto/pkcs7/t/msie-s-a-e new file mode 100644 index 0000000000..0067794d70 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-s-a-e | |||
@@ -0,0 +1,91 @@ | |||
1 | |||
2 | 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 | ||
89 | 5ify04ua9/t8SGrYZPm/l3MkAAAAAAAAAAAAAA== | ||
90 | |||
91 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/msie-s-a-e.pem b/src/lib/libssl/src/crypto/pkcs7/t/msie-s-a-e.pem new file mode 100644 index 0000000000..55dbd8f80b --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/msie-s-a-e.pem | |||
@@ -0,0 +1,106 @@ | |||
1 | -----BEGIN PKCS7----- | ||
2 | MIAGCSqGSIb3DQEHA6CAMIITUAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ | ||
3 | bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT | ||
4 | aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ | ||
5 | uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQKOxxpIbRTb31+qIQCBOpMVAGnwCLrPO | ||
6 | OXnntxVveTrPhBnsJuoGNJcCMtuHl7tLkd38WsVwOfGXUprTqFpUcY8wgfACAQAw | ||
7 | gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH | ||
8 | EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT | ||
9 | GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW | ||
10 | QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQKzIddnXFqK/RRBG86ZVixoXfwAv | ||
11 | ZdfvnDFsKzPn/A6DuDdE/hqJxnFpHiwGiDR/YbWj2ib+G74DSshgX8vj8ZQwghGD | ||
12 | BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECLKM0K58I3HNgIIRWBDP8s+g | ||
13 | l7/6JhZ5PBJ5vPpD1R4pnNDZRabsYu0Qzezdz1IK+maTAhF0SEuNZoEkzIgOIvu3 | ||
14 | UjW8x/2KcHwteABwgRiSk1JyNLwRED0RtvuJ40pIGDvDsHwBMcXEtKUMAOpGChms | ||
15 | HUK1+B/GKancSDFOCeG3JCFnFdbuQFDIVHC6amWslc6ntqVs/sii2Gs4qdzDfQgl | ||
16 | PV/A/FY0wi0j2O5cXRQJtZVKM/MYGjj5c1cy9Q7oymU5ATP/LARD0Tw5kBB7HVnD | ||
17 | 2qrmmmxcHakyxhXmwskaKS6Qxgqq6LPdgr603onxqEtwNSz5UbCq9mLXuCkFOVsQ | ||
18 | /5mZcmmc7re3XJMQHRXkBlxEpZQ6HOUIEzlhRqCo2hhymyZK84rptjORQo6vNakM | ||
19 | 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 | ||
105 | 7OYn8tOLmvf7fEhq2GT5v5dzJAAAAAA= | ||
106 | -----END PKCS7----- | ||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/nav-smime b/src/lib/libssl/src/crypto/pkcs7/t/nav-smime new file mode 100644 index 0000000000..6ee4b597a1 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/nav-smime | |||
@@ -0,0 +1,157 @@ | |||
1 | From angela@c2.net.au Thu May 14 13:32:27 1998 | ||
2 | X-UIDL: 83c94dd550e54329bf9571b72038b8c8 | ||
3 | Return-Path: angela@c2.net.au | ||
4 | Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id NAA27838 for <tjh@cryptsoft.com>; Thu, 14 May 1998 13:32:26 +1000 (EST) | ||
5 | Message-ID: <355A6779.4B63E64C@cryptsoft.com> | ||
6 | Date: Thu, 14 May 1998 13:39:37 +1000 | ||
7 | From: Angela van Lent <angela@c2.net.au> | ||
8 | X-Mailer: Mozilla 4.03 [en] (Win95; U) | ||
9 | MIME-Version: 1.0 | ||
10 | To: tjh@cryptsoft.com | ||
11 | Subject: signed | ||
12 | Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms9A58844C95949ECC78A1C54C" | ||
13 | Content-Length: 2604 | ||
14 | Status: OR | ||
15 | |||
16 | This is a cryptographically signed message in MIME format. | ||
17 | |||
18 | --------------ms9A58844C95949ECC78A1C54C | ||
19 | Content-Type: text/plain; charset=us-ascii | ||
20 | Content-Transfer-Encoding: 7bit | ||
21 | |||
22 | signed body | ||
23 | |||
24 | --------------ms9A58844C95949ECC78A1C54C | ||
25 | Content-Type: application/x-pkcs7-signature; name="smime.p7s" | ||
26 | Content-Transfer-Encoding: base64 | ||
27 | Content-Disposition: attachment; filename="smime.p7s" | ||
28 | Content-Description: S/MIME Cryptographic Signature | ||
29 | |||
30 | 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 | ||
59 | 9CWR6g== | ||
60 | --------------ms9A58844C95949ECC78A1C54C-- | ||
61 | |||
62 | |||
63 | From angela@c2.net.au Thu May 14 13:33:16 1998 | ||
64 | X-UIDL: 8f076c44ff7c5967fd5b00c4588a8731 | ||
65 | Return-Path: angela@c2.net.au | ||
66 | Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id NAA27847 for <tjh@cryptsoft.com>; Thu, 14 May 1998 13:33:15 +1000 (EST) | ||
67 | Message-ID: <355A67AB.2AF38806@cryptsoft.com> | ||
68 | Date: Thu, 14 May 1998 13:40:27 +1000 | ||
69 | From: Angela van Lent <angela@c2.net.au> | ||
70 | X-Mailer: Mozilla 4.03 [en] (Win95; U) | ||
71 | MIME-Version: 1.0 | ||
72 | To: tjh@cryptsoft.com | ||
73 | Subject: signed | ||
74 | Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------msD7863B84BD61E02C407F2F5E" | ||
75 | Content-Length: 2679 | ||
76 | Status: OR | ||
77 | |||
78 | This is a cryptographically signed message in MIME format. | ||
79 | |||
80 | --------------msD7863B84BD61E02C407F2F5E | ||
81 | Content-Type: text/plain; charset=us-ascii | ||
82 | Content-Transfer-Encoding: 7bit | ||
83 | |||
84 | signed body 2 | ||
85 | |||
86 | --------------msD7863B84BD61E02C407F2F5E | ||
87 | Content-Type: application/x-pkcs7-signature; name="smime.p7s" | ||
88 | Content-Transfer-Encoding: base64 | ||
89 | Content-Disposition: attachment; filename="smime.p7s" | ||
90 | Content-Description: S/MIME Cryptographic Signature | ||
91 | |||
92 | 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 | ||
122 | Zp8SSVVY | ||
123 | --------------msD7863B84BD61E02C407F2F5E-- | ||
124 | |||
125 | |||
126 | From angela@c2.net.au Thu May 14 14:05:32 1998 | ||
127 | X-UIDL: a7d629b4b9acacaee8b39371b860a32a | ||
128 | Return-Path: angela@c2.net.au | ||
129 | Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id OAA28033 for <tjh@cryptsoft.com>; Thu, 14 May 1998 14:05:32 +1000 (EST) | ||
130 | Message-ID: <355A6F3B.AC385981@cryptsoft.com> | ||
131 | Date: Thu, 14 May 1998 14:12:43 +1000 | ||
132 | From: Angela van Lent <angela@c2.net.au> | ||
133 | X-Mailer: Mozilla 4.03 [en] (Win95; U) | ||
134 | MIME-Version: 1.0 | ||
135 | To: tjh@cryptsoft.com | ||
136 | Subject: encrypted | ||
137 | Content-Type: application/x-pkcs7-mime; name="smime.p7m" | ||
138 | Content-Transfer-Encoding: base64 | ||
139 | Content-Disposition: attachment; filename="smime.p7m" | ||
140 | Content-Description: S/MIME Encrypted Message | ||
141 | Content-Length: 905 | ||
142 | Status: OR | ||
143 | |||
144 | MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG | ||
145 | A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
146 | dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD | ||
147 | ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEA92N29Yk39RUY2tIVd | ||
148 | exGT2MFX3J6H8LB8aDRJjw7843ALgJ5zXpM5+f80QkAWwEN2A6Pl3VxiCeKLi435zXVyMIHw | ||
149 | AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI | ||
150 | QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU | ||
151 | UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0G | ||
152 | CSqGSIb3DQEBAQUABECR9IfyHtvnjFmZ8B2oUCEs1vxMsG0u1kxKE4RMPFyDqDCEARq7zXMg | ||
153 | nzSUI7Wgv5USSKDqcLRJeW+jvYURv/nJMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA | ||
154 | oAQIrLqrij2ZMpeggAQoibtn6reRZWuWk5Iv5IAhgitr8EYE4w4ySQ7EMB6mTlBoFpccUMWX | ||
155 | BwQgQn1UoWCvYAlhDzURdbui64Dc0rS2wtj+kE/InS6y25EEEPe4NUKaF8/UlE+lo3LtILQE | ||
156 | CL3uV8k7m0iqAAAAAAAAAAAAAA== | ||
157 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/s.pem b/src/lib/libssl/src/crypto/pkcs7/t/s.pem new file mode 100644 index 0000000000..4fa925b182 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/s.pem | |||
@@ -0,0 +1,57 @@ | |||
1 | -----BEGIN RSA PRIVATE KEY----- | ||
2 | MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 | ||
3 | mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG | ||
4 | fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ | ||
5 | zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 | ||
6 | p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b | ||
7 | bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk | ||
8 | IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG | ||
9 | -----END RSA PRIVATE KEY----- | ||
10 | issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA | ||
11 | subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com | ||
12 | serial :047D | ||
13 | |||
14 | Certificate: | ||
15 | Data: | ||
16 | Version: 3 (0x2) | ||
17 | Serial Number: 1149 (0x47d) | ||
18 | Signature Algorithm: md5withRSAEncryption | ||
19 | Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA | ||
20 | Validity | ||
21 | Not Before: May 13 05:40:58 1998 GMT | ||
22 | Not After : May 12 05:40:58 2000 GMT | ||
23 | Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com | ||
24 | Subject Public Key Info: | ||
25 | Public Key Algorithm: rsaEncryption | ||
26 | Modulus: | ||
27 | 00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: | ||
28 | 73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: | ||
29 | 89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: | ||
30 | fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: | ||
31 | e7:e7:0c:4d:0b | ||
32 | Exponent: 65537 (0x10001) | ||
33 | X509v3 extensions: | ||
34 | Netscape Comment: | ||
35 | Generated with SSLeay | ||
36 | Signature Algorithm: md5withRSAEncryption | ||
37 | 52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: | ||
38 | f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: | ||
39 | d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: | ||
40 | 50:74:ad:92:cb:4e:90:e5:fa:7d | ||
41 | |||
42 | -----BEGIN CERTIFICATE----- | ||
43 | MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV | ||
44 | MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE | ||
45 | ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E | ||
46 | IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw | ||
47 | NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK | ||
48 | UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
49 | dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 | ||
50 | aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG | ||
51 | 9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf | ||
52 | lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB | ||
53 | hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA | ||
54 | UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 | ||
55 | 4A3ZItobUHStkstOkOX6fQ== | ||
56 | -----END CERTIFICATE----- | ||
57 | |||
diff --git a/src/lib/libssl/src/crypto/pkcs7/t/server.pem b/src/lib/libssl/src/crypto/pkcs7/t/server.pem new file mode 100644 index 0000000000..989baf8709 --- /dev/null +++ b/src/lib/libssl/src/crypto/pkcs7/t/server.pem | |||
@@ -0,0 +1,57 @@ | |||
1 | issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA | ||
2 | subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com | ||
3 | serial :047D | ||
4 | |||
5 | Certificate: | ||
6 | Data: | ||
7 | Version: 3 (0x2) | ||
8 | Serial Number: 1149 (0x47d) | ||
9 | Signature Algorithm: md5withRSAEncryption | ||
10 | Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA | ||
11 | Validity | ||
12 | Not Before: May 13 05:40:58 1998 GMT | ||
13 | Not After : May 12 05:40:58 2000 GMT | ||
14 | Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com | ||
15 | Subject Public Key Info: | ||
16 | Public Key Algorithm: rsaEncryption | ||
17 | Modulus: | ||
18 | 00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: | ||
19 | 73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: | ||
20 | 89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: | ||
21 | fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: | ||
22 | e7:e7:0c:4d:0b | ||
23 | Exponent: 65537 (0x10001) | ||
24 | X509v3 extensions: | ||
25 | Netscape Comment: | ||
26 | Generated with SSLeay | ||
27 | Signature Algorithm: md5withRSAEncryption | ||
28 | 52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: | ||
29 | f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: | ||
30 | d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: | ||
31 | 50:74:ad:92:cb:4e:90:e5:fa:7d | ||
32 | |||
33 | -----BEGIN CERTIFICATE----- | ||
34 | MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV | ||
35 | MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE | ||
36 | ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E | ||
37 | IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw | ||
38 | NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK | ||
39 | UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m | ||
40 | dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 | ||
41 | aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG | ||
42 | 9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf | ||
43 | lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB | ||
44 | hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA | ||
45 | UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 | ||
46 | 4A3ZItobUHStkstOkOX6fQ== | ||
47 | -----END CERTIFICATE----- | ||
48 | |||
49 | -----BEGIN RSA PRIVATE KEY----- | ||
50 | MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 | ||
51 | mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG | ||
52 | fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ | ||
53 | zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 | ||
54 | p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b | ||
55 | bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk | ||
56 | IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG | ||
57 | -----END RSA PRIVATE KEY----- | ||
diff --git a/src/lib/libssl/src/demos/eay/Makefile b/src/lib/libssl/src/demos/eay/Makefile new file mode 100644 index 0000000000..2d22eaca56 --- /dev/null +++ b/src/lib/libssl/src/demos/eay/Makefile | |||
@@ -0,0 +1,24 @@ | |||
1 | CC=cc | ||
2 | CFLAGS= -g -I../../include | ||
3 | #LIBS= -L../.. -lcrypto -lssl | ||
4 | LIBS= -L../.. ../../libssl.a ../../libcrypto.a | ||
5 | |||
6 | # the file conn.c requires a file "proxy.h" which I couldn't find... | ||
7 | #EXAMPLES=base64 conn loadrsa | ||
8 | EXAMPLES=base64 loadrsa | ||
9 | |||
10 | all: $(EXAMPLES) | ||
11 | |||
12 | base64: base64.o | ||
13 | $(CC) -o base64 base64.o $(LIBS) | ||
14 | # | ||
15 | # sorry... can't find "proxy.h" | ||
16 | #conn: conn.o | ||
17 | # $(CC) -o conn conn.o $(LIBS) | ||
18 | |||
19 | loadrsa: loadrsa.o | ||
20 | $(CC) -o loadrsa loadrsa.o $(LIBS) | ||
21 | |||
22 | clean: | ||
23 | rm -f $(EXAMPLES) *.o | ||
24 | |||
diff --git a/src/lib/libssl/src/demos/eay/base64.c b/src/lib/libssl/src/demos/eay/base64.c new file mode 100644 index 0000000000..4b8b0627d1 --- /dev/null +++ b/src/lib/libssl/src/demos/eay/base64.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* This is a simple example of using the base64 BIO to a memory BIO and then | ||
2 | * getting the data. | ||
3 | */ | ||
4 | #include <stdio.h> | ||
5 | #include <openssl/bio.h> | ||
6 | #include <openssl/evp.h> | ||
7 | |||
8 | main() | ||
9 | { | ||
10 | int i; | ||
11 | BIO *mbio,*b64bio,*bio; | ||
12 | char buf[512]; | ||
13 | char *p; | ||
14 | |||
15 | mbio=BIO_new(BIO_s_mem()); | ||
16 | b64bio=BIO_new(BIO_f_base64()); | ||
17 | |||
18 | bio=BIO_push(b64bio,mbio); | ||
19 | /* We now have bio pointing at b64->mem, the base64 bio encodes on | ||
20 | * write and decodes on read */ | ||
21 | |||
22 | for (;;) | ||
23 | { | ||
24 | i=fread(buf,1,512,stdin); | ||
25 | if (i <= 0) break; | ||
26 | BIO_write(bio,buf,i); | ||
27 | } | ||
28 | /* We need to 'flush' things to push out the encoding of the | ||
29 | * last few bytes. There is special encoding if it is not a | ||
30 | * multiple of 3 | ||
31 | */ | ||
32 | BIO_flush(bio); | ||
33 | |||
34 | printf("We have %d bytes available\n",BIO_pending(mbio)); | ||
35 | |||
36 | /* We will now get a pointer to the data and the number of elements. */ | ||
37 | /* hmm... this one was not defined by a macro in bio.h, it will be for | ||
38 | * 0.9.1. The other option is too just read from the memory bio. | ||
39 | */ | ||
40 | i=(int)BIO_ctrl(mbio,BIO_CTRL_INFO,0,(char *)&p); | ||
41 | |||
42 | printf("%d\n",i); | ||
43 | fwrite("---\n",1,4,stdout); | ||
44 | fwrite(p,1,i,stdout); | ||
45 | fwrite("---\n",1,4,stdout); | ||
46 | |||
47 | /* This call will walk the chain freeing all the BIOs */ | ||
48 | BIO_free_all(bio); | ||
49 | } | ||
diff --git a/src/lib/libssl/src/demos/eay/conn.c b/src/lib/libssl/src/demos/eay/conn.c new file mode 100644 index 0000000000..c4b8f5163e --- /dev/null +++ b/src/lib/libssl/src/demos/eay/conn.c | |||
@@ -0,0 +1,105 @@ | |||
1 | /* NOCW */ | ||
2 | /* demos/eay/conn.c */ | ||
3 | |||
4 | /* A minimal program to connect to a port using the sock4a protocol. | ||
5 | * | ||
6 | * cc -I../../include conn.c -L../.. -lcrypto | ||
7 | */ | ||
8 | #include <stdio.h> | ||
9 | #include <stdlib.h> | ||
10 | #include <openssl/err.h> | ||
11 | #include <openssl/bio.h> | ||
12 | /* #include "proxy.h" */ | ||
13 | |||
14 | extern int errno; | ||
15 | |||
16 | int main(argc,argv) | ||
17 | int argc; | ||
18 | char *argv[]; | ||
19 | { | ||
20 | PROXY *pxy; | ||
21 | char *host; | ||
22 | char buf[1024*10],*p; | ||
23 | BIO *bio; | ||
24 | int i,len,off,ret=1; | ||
25 | |||
26 | if (argc <= 1) | ||
27 | host="localhost:4433"; | ||
28 | else | ||
29 | host=argv[1]; | ||
30 | |||
31 | /* Lets get nice error messages */ | ||
32 | ERR_load_crypto_strings(); | ||
33 | |||
34 | /* First, configure proxy settings */ | ||
35 | pxy=PROXY_new(); | ||
36 | PROXY_add_server(pxy,PROXY_PROTOCOL_SOCKS,"gromit:1080"); | ||
37 | |||
38 | bio=BIO_new(BIO_s_socks4a_connect()); | ||
39 | |||
40 | BIO_set_conn_hostname(bio,host); | ||
41 | BIO_set_proxies(bio,pxy); | ||
42 | BIO_set_socks_userid(bio,"eay"); | ||
43 | BIO_set_nbio(bio,1); | ||
44 | |||
45 | p="GET / HTTP/1.0\r\n\r\n"; | ||
46 | len=strlen(p); | ||
47 | |||
48 | off=0; | ||
49 | for (;;) | ||
50 | { | ||
51 | i=BIO_write(bio,&(p[off]),len); | ||
52 | if (i <= 0) | ||
53 | { | ||
54 | if (BIO_should_retry(bio)) | ||
55 | { | ||
56 | fprintf(stderr,"write DELAY\n"); | ||
57 | sleep(1); | ||
58 | continue; | ||
59 | } | ||
60 | else | ||
61 | { | ||
62 | goto err; | ||
63 | } | ||
64 | } | ||
65 | off+=i; | ||
66 | len-=i; | ||
67 | if (len <= 0) break; | ||
68 | } | ||
69 | |||
70 | for (;;) | ||
71 | { | ||
72 | i=BIO_read(bio,buf,sizeof(buf)); | ||
73 | if (i == 0) break; | ||
74 | if (i < 0) | ||
75 | { | ||
76 | if (BIO_should_retry(bio)) | ||
77 | { | ||
78 | fprintf(stderr,"read DELAY\n"); | ||
79 | sleep(1); | ||
80 | continue; | ||
81 | } | ||
82 | goto err; | ||
83 | } | ||
84 | fwrite(buf,1,i,stdout); | ||
85 | } | ||
86 | |||
87 | ret=1; | ||
88 | |||
89 | if (0) | ||
90 | { | ||
91 | err: | ||
92 | if (ERR_peek_error() == 0) /* system call error */ | ||
93 | { | ||
94 | fprintf(stderr,"errno=%d ",errno); | ||
95 | perror("error"); | ||
96 | } | ||
97 | else | ||
98 | ERR_print_errors_fp(stderr); | ||
99 | } | ||
100 | BIO_free_all(bio); | ||
101 | if (pxy != NULL) PROXY_free(pxy); | ||
102 | exit(!ret); | ||
103 | return(ret); | ||
104 | } | ||
105 | |||
diff --git a/src/lib/libssl/src/demos/eay/loadrsa.c b/src/lib/libssl/src/demos/eay/loadrsa.c new file mode 100644 index 0000000000..79f1885ca4 --- /dev/null +++ b/src/lib/libssl/src/demos/eay/loadrsa.c | |||
@@ -0,0 +1,53 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <openssl/rsa.h> | ||
3 | |||
4 | /* This is a simple program to generate an RSA private key. It then | ||
5 | * saves both the public and private key into a char array, then | ||
6 | * re-reads them. It saves them as DER encoded binary data. | ||
7 | */ | ||
8 | |||
9 | void callback(stage,count,arg) | ||
10 | int stage,count; | ||
11 | char *arg; | ||
12 | { | ||
13 | FILE *out; | ||
14 | |||
15 | out=(FILE *)arg; | ||
16 | fprintf(out,"%d",stage); | ||
17 | if (stage == 3) | ||
18 | fprintf(out,"\n"); | ||
19 | fflush(out); | ||
20 | } | ||
21 | |||
22 | main() | ||
23 | { | ||
24 | RSA *rsa,*pub_rsa,*priv_rsa; | ||
25 | int len; | ||
26 | unsigned char buf[1024],*p; | ||
27 | |||
28 | rsa=RSA_generate_key(512,RSA_F4,callback,(char *)stdout); | ||
29 | |||
30 | p=buf; | ||
31 | |||
32 | /* Save the public key into buffer, we know it will be big enough | ||
33 | * but we should really check how much space we need by calling the | ||
34 | * i2d functions with a NULL second parameter */ | ||
35 | len=i2d_RSAPublicKey(rsa,&p); | ||
36 | len+=i2d_RSAPrivateKey(rsa,&p); | ||
37 | |||
38 | printf("The public and private key are now both in a char array\n"); | ||
39 | printf("and are taking up %d bytes\n",len); | ||
40 | |||
41 | RSA_free(rsa); | ||
42 | |||
43 | p=buf; | ||
44 | pub_rsa=d2i_RSAPublicKey(NULL,&p,(long)len); | ||
45 | len-=(p-buf); | ||
46 | priv_rsa=d2i_RSAPrivateKey(NULL,&p,(long)len); | ||
47 | |||
48 | if ((pub_rsa == NULL) || (priv_rsa == NULL)) | ||
49 | ERR_print_errors_fp(stderr); | ||
50 | |||
51 | RSA_free(pub_rsa); | ||
52 | RSA_free(priv_rsa); | ||
53 | } | ||
diff --git a/src/lib/libssl/src/perl/t/01-use.t b/src/lib/libssl/src/perl/t/01-use.t new file mode 100644 index 0000000000..e24fd1f504 --- /dev/null +++ b/src/lib/libssl/src/perl/t/01-use.t | |||
@@ -0,0 +1,13 @@ | |||
1 | |||
2 | BEGIN { | ||
3 | $| = 1; | ||
4 | print "1..1\n"; | ||
5 | } | ||
6 | END { | ||
7 | print "not ok 1\n" unless $loaded; | ||
8 | } | ||
9 | use OpenSSL; | ||
10 | $loaded = 1; | ||
11 | print "ok 1\n"; | ||
12 | |||
13 | |||
diff --git a/src/lib/libssl/src/perl/t/02-version.t b/src/lib/libssl/src/perl/t/02-version.t new file mode 100644 index 0000000000..8b5f6a0c97 --- /dev/null +++ b/src/lib/libssl/src/perl/t/02-version.t | |||
@@ -0,0 +1,10 @@ | |||
1 | |||
2 | print "1..1\n"; | ||
3 | use OpenSSL; | ||
4 | if ($OpenSSL::VERSION ne '') { | ||
5 | print "ok 1\n"; | ||
6 | } | ||
7 | else { | ||
8 | print "not ok 1\n"; | ||
9 | } | ||
10 | |||
diff --git a/src/lib/libssl/src/perl/t/03-bio.t b/src/lib/libssl/src/perl/t/03-bio.t new file mode 100644 index 0000000000..e3ed7ed842 --- /dev/null +++ b/src/lib/libssl/src/perl/t/03-bio.t | |||
@@ -0,0 +1,16 @@ | |||
1 | |||
2 | BEGIN { | ||
3 | $| = 1; | ||
4 | print "1..1\n"; | ||
5 | } | ||
6 | END { | ||
7 | print "not ok 1\n" unless $ok; | ||
8 | } | ||
9 | |||
10 | use OpenSSL; | ||
11 | my $bio = OpenSSL::BIO::new("mem") || die; | ||
12 | undef $bio; | ||
13 | |||
14 | $ok = 1; | ||
15 | print "ok 1\n"; | ||
16 | |||
diff --git a/src/lib/libssl/src/rsaref/Makefile.ssl b/src/lib/libssl/src/rsaref/Makefile.ssl new file mode 100644 index 0000000000..165b2b8036 --- /dev/null +++ b/src/lib/libssl/src/rsaref/Makefile.ssl | |||
@@ -0,0 +1,98 @@ | |||
1 | # | ||
2 | # SSLeay/rsaref/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= rsaref | ||
6 | TOP= .. | ||
7 | CC= cc | ||
8 | INCLUDES= -I../crypto -I../include | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKE= make -f Makefile.ssl | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | ||
15 | MAKEFILE= Makefile.ssl | ||
16 | AR= ar r | ||
17 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
19 | |||
20 | GENERAL=Makefile rsaref-lib.com install.com | ||
21 | TEST= | ||
22 | APPS= | ||
23 | |||
24 | LIB=$(TOP)/libRSAglue.a | ||
25 | LIBSRC= rsaref.c rsar_err.c | ||
26 | LIBOBJ= rsaref.o rsar_err.o | ||
27 | |||
28 | SRC= $(LIBSRC) | ||
29 | |||
30 | EXHEADER= rsaref.h | ||
31 | HEADER= $(EXHEADER) | ||
32 | |||
33 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
34 | |||
35 | top: | ||
36 | (cd ..; $(MAKE) DIRS=rsaref all) | ||
37 | |||
38 | all: lib | ||
39 | |||
40 | lib: $(LIBOBJ) | ||
41 | $(AR) $(LIB) $(LIBOBJ) | ||
42 | $(RANLIB) $(LIB) | ||
43 | @touch lib | ||
44 | |||
45 | files: | ||
46 | $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO | ||
47 | |||
48 | links: | ||
49 | @$(TOP)/util/point.sh Makefile.ssl Makefile | ||
50 | @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER) | ||
51 | @$(PERL) $(TOP)/util/mklink.pl ../test $(TEST) | ||
52 | @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS) | ||
53 | |||
54 | install: | ||
55 | -@if [ "x`echo x $(EX_LIBS) | grep RSAglue`" != x ]; then \ | ||
56 | echo "installing libRSAglue.a"; \ | ||
57 | cp $(LIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \ | ||
58 | $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \ | ||
59 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \ | ||
60 | fi | ||
61 | |||
62 | # @for i in $(EXHEADER) ; \ | ||
63 | # do \ | ||
64 | # (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
65 | # chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
66 | # done; | ||
67 | |||
68 | tags: | ||
69 | ctags $(SRC) | ||
70 | |||
71 | tests: | ||
72 | |||
73 | lint: | ||
74 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
75 | |||
76 | depend: | ||
77 | $(MAKEDEPEND) $(INCLUDES) $(PROGS) $(LIBSRC) | ||
78 | |||
79 | dclean: | ||
80 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
81 | mv -f Makefile.new $(MAKEFILE) | ||
82 | |||
83 | clean: | ||
84 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
85 | |||
86 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
87 | |||
88 | rsar_err.o: ../include/openssl/bn.h ../include/openssl/crypto.h | ||
89 | rsar_err.o: ../include/openssl/err.h ../include/openssl/opensslconf.h | ||
90 | rsar_err.o: ../include/openssl/opensslv.h ../include/openssl/rsa.h | ||
91 | rsar_err.o: ../include/openssl/rsaref.h ../include/openssl/stack.h | ||
92 | rsaref.o: ../crypto/cryptlib.h ../include/openssl/bio.h ../include/openssl/bn.h | ||
93 | rsaref.o: ../include/openssl/buffer.h ../include/openssl/crypto.h | ||
94 | rsaref.o: ../include/openssl/e_os.h ../include/openssl/e_os2.h | ||
95 | rsaref.o: ../include/openssl/err.h ../include/openssl/opensslconf.h | ||
96 | rsaref.o: ../include/openssl/opensslv.h ../include/openssl/rand.h | ||
97 | rsaref.o: ../include/openssl/rsa.h ../include/openssl/rsaref.h | ||
98 | rsaref.o: ../include/openssl/stack.h | ||
diff --git a/src/lib/libssl/src/rsaref/install.com b/src/lib/libssl/src/rsaref/install.com new file mode 100644 index 0000000000..c32cea5da8 --- /dev/null +++ b/src/lib/libssl/src/rsaref/install.com | |||
@@ -0,0 +1,69 @@ | |||
1 | $! INSTALL.COM -- Installs the files in a given directory tree | ||
2 | $! | ||
3 | $! Author: Richard Levitte <richard@levitte.org> | ||
4 | $! Time of creation: 22-MAY-1998 10:13 | ||
5 | $! | ||
6 | $! P1 root of the directory tree | ||
7 | $! | ||
8 | $ IF P1 .EQS. "" | ||
9 | $ THEN | ||
10 | $ WRITE SYS$OUTPUT "First argument missing." | ||
11 | $ WRITE SYS$OUTPUT "Should be the directory where you want things installed." | ||
12 | $ EXIT | ||
13 | $ ENDIF | ||
14 | $ | ||
15 | $ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" | ||
16 | $ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") | ||
17 | $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - | ||
18 | - "[000000." - "][" - "[" - "]" | ||
19 | $ ROOT = ROOT_DEV + "[" + ROOT_DIR | ||
20 | $ | ||
21 | $ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC | ||
22 | $ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB] | ||
23 | $ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB] | ||
24 | $ | ||
25 | $ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - | ||
26 | CREATE/DIR/LOG WRK_SSLROOT:[000000] | ||
27 | $ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN - | ||
28 | CREATE/DIR/LOG WRK_SSLVLIB: | ||
29 | $ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN - | ||
30 | CREATE/DIR/LOG WRK_SSLALIB: | ||
31 | $ | ||
32 | $ LIBS := LIBRSAGLUE | ||
33 | $ | ||
34 | $ VEXE_DIR := [-.VAX.EXE.CRYPTO] | ||
35 | $ AEXE_DIR := [-.AXP.EXE.CRYPTO] | ||
36 | $ | ||
37 | $ I = 0 | ||
38 | $ LOOP_LIB: | ||
39 | $ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM") | ||
40 | $ I = I + 1 | ||
41 | $ IF E .EQS. "," THEN GOTO LOOP_LIB_END | ||
42 | $ SET NOON | ||
43 | $ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. "" | ||
44 | $ THEN | ||
45 | $ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log | ||
46 | $ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB | ||
47 | $ ENDIF | ||
48 | $ ! Preparing for the time when we have shareable images | ||
49 | $ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. "" | ||
50 | $ THEN | ||
51 | $ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log | ||
52 | $ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE | ||
53 | $ ENDIF | ||
54 | $ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. "" | ||
55 | $ THEN | ||
56 | $ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log | ||
57 | $ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB | ||
58 | $ ENDIF | ||
59 | $ ! Preparing for the time when we have shareable images | ||
60 | $ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. "" | ||
61 | $ THEN | ||
62 | $ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log | ||
63 | $ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE | ||
64 | $ ENDIF | ||
65 | $ SET ON | ||
66 | $ GOTO LOOP_LIB | ||
67 | $ LOOP_LIB_END: | ||
68 | $ | ||
69 | $ EXIT | ||
diff --git a/src/lib/libssl/src/rsaref/rsar_err.c b/src/lib/libssl/src/rsaref/rsar_err.c new file mode 100644 index 0000000000..d2eb3a2b01 --- /dev/null +++ b/src/lib/libssl/src/rsaref/rsar_err.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /* rsaref/rsar_err.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions | ||
7 | * are met: | ||
8 | * | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in | ||
14 | * the documentation and/or other materials provided with the | ||
15 | * distribution. | ||
16 | * | ||
17 | * 3. All advertising materials mentioning features or use of this | ||
18 | * software must display the following acknowledgment: | ||
19 | * "This product includes software developed by the OpenSSL Project | ||
20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
21 | * | ||
22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
23 | * endorse or promote products derived from this software without | ||
24 | * prior written permission. For written permission, please contact | ||
25 | * openssl-core@OpenSSL.org. | ||
26 | * | ||
27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
28 | * nor may "OpenSSL" appear in their names without prior written | ||
29 | * permission of the OpenSSL Project. | ||
30 | * | ||
31 | * 6. Redistributions of any form whatsoever must retain the following | ||
32 | * acknowledgment: | ||
33 | * "This product includes software developed by the OpenSSL Project | ||
34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
35 | * | ||
36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
54 | */ | ||
55 | |||
56 | /* NOTE: this file was auto generated by the mkerr.pl script: any changes | ||
57 | * made to it will be overwritten when the script next updates this file. | ||
58 | */ | ||
59 | |||
60 | #include <stdio.h> | ||
61 | #include <openssl/err.h> | ||
62 | #include <openssl/rsaref.h> | ||
63 | |||
64 | /* BEGIN ERROR CODES */ | ||
65 | #ifndef NO_ERR | ||
66 | static ERR_STRING_DATA RSAREF_str_functs[]= | ||
67 | { | ||
68 | {ERR_PACK(0,RSAREF_F_BN_REF_MOD_EXP,0), "BN_REF_MOD_EXP"}, | ||
69 | {ERR_PACK(0,RSAREF_F_RSAREF_BN2BIN,0), "RSAREF_BN2BIN"}, | ||
70 | {ERR_PACK(0,RSAREF_F_RSA_BN2BIN,0), "RSA_BN2BIN"}, | ||
71 | {ERR_PACK(0,RSAREF_F_RSA_PRIVATE_DECRYPT,0), "RSA_private_decrypt"}, | ||
72 | {ERR_PACK(0,RSAREF_F_RSA_PRIVATE_ENCRYPT,0), "RSA_private_encrypt"}, | ||
73 | {ERR_PACK(0,RSAREF_F_RSA_PUBLIC_DECRYPT,0), "RSA_public_decrypt"}, | ||
74 | {ERR_PACK(0,RSAREF_F_RSA_PUBLIC_ENCRYPT,0), "RSA_public_encrypt"}, | ||
75 | {ERR_PACK(0,RSAREF_F_RSA_REF_BN2BIN,0), "RSA_REF_BN2BIN"}, | ||
76 | {ERR_PACK(0,RSAREF_F_RSA_REF_MOD_EXP,0), "RSA_REF_MOD_EXP"}, | ||
77 | {ERR_PACK(0,RSAREF_F_RSA_REF_PRIVATE_DECRYPT,0), "RSA_REF_PRIVATE_DECRYPT"}, | ||
78 | {ERR_PACK(0,RSAREF_F_RSA_REF_PRIVATE_ENCRYPT,0), "RSA_REF_PRIVATE_ENCRYPT"}, | ||
79 | {ERR_PACK(0,RSAREF_F_RSA_REF_PUBLIC_DECRYPT,0), "RSA_REF_PUBLIC_DECRYPT"}, | ||
80 | {ERR_PACK(0,RSAREF_F_RSA_REF_PUBLIC_ENCRYPT,0), "RSA_REF_PUBLIC_ENCRYPT"}, | ||
81 | {0,NULL} | ||
82 | }; | ||
83 | |||
84 | static ERR_STRING_DATA RSAREF_str_reasons[]= | ||
85 | { | ||
86 | {RSAREF_R_CONTENT_ENCODING ,"content encoding"}, | ||
87 | {RSAREF_R_DATA ,"data"}, | ||
88 | {RSAREF_R_DIGEST_ALGORITHM ,"digest algorithm"}, | ||
89 | {RSAREF_R_ENCODING ,"encoding"}, | ||
90 | {RSAREF_R_ENCRYPTION_ALGORITHM ,"encryption algorithm"}, | ||
91 | {RSAREF_R_KEY ,"key"}, | ||
92 | {RSAREF_R_KEY_ENCODING ,"key encoding"}, | ||
93 | {RSAREF_R_LEN ,"len"}, | ||
94 | {RSAREF_R_MODULUS_LEN ,"modulus len"}, | ||
95 | {RSAREF_R_NEED_RANDOM ,"need random"}, | ||
96 | {RSAREF_R_PRIVATE_KEY ,"private key"}, | ||
97 | {RSAREF_R_PUBLIC_KEY ,"public key"}, | ||
98 | {RSAREF_R_SIGNATURE ,"signature"}, | ||
99 | {RSAREF_R_SIGNATURE_ENCODING ,"signature encoding"}, | ||
100 | {0,NULL} | ||
101 | }; | ||
102 | |||
103 | #endif | ||
104 | |||
105 | void ERR_load_RSAREF_strings(void) | ||
106 | { | ||
107 | static int init=1; | ||
108 | |||
109 | if (init) | ||
110 | { | ||
111 | init=0; | ||
112 | #ifndef NO_ERR | ||
113 | ERR_load_strings(ERR_LIB_RSAREF,RSAREF_str_functs); | ||
114 | ERR_load_strings(ERR_LIB_RSAREF,RSAREF_str_reasons); | ||
115 | #endif | ||
116 | |||
117 | } | ||
118 | } | ||
diff --git a/src/lib/libssl/src/rsaref/rsaref-lib.com b/src/lib/libssl/src/rsaref/rsaref-lib.com new file mode 100644 index 0000000000..53193720b6 --- /dev/null +++ b/src/lib/libssl/src/rsaref/rsaref-lib.com | |||
@@ -0,0 +1,902 @@ | |||
1 | $! | ||
2 | $! RSAREF-LIB.COM | ||
3 | $! Written By: Robert Byer | ||
4 | $! Vice-President | ||
5 | $! A-Com Computing, Inc. | ||
6 | $! byer@mail.all-net.net | ||
7 | $! | ||
8 | $! Changes by Richard Levitte <richard@levitte.org> | ||
9 | $! | ||
10 | $! This command files compiles and creates the "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB" | ||
11 | $! library. The "xxx" denotes the machine architecture of AXP or VAX. | ||
12 | $! | ||
13 | $! Specify one of the following to build just that part or "ALL" to | ||
14 | $! just build everything. | ||
15 | $! | ||
16 | $! ALL To Just Build "Everything". | ||
17 | $! LIBRARY To Just Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library. | ||
18 | $! DHDEMO To Just Build The [.xxx.EXE.RSAREF]DHDEMO.EXE Program. | ||
19 | $! RDEMO To Just Build The [.xxx.EXE.RSAREF]RDEMO.EXE Program. | ||
20 | $! | ||
21 | $! Specify DEBUG or NODEBUG as P2 to compile with or without debugging | ||
22 | $! information. | ||
23 | $! | ||
24 | $! Specify which compiler at P3 to try to compile under. | ||
25 | $! | ||
26 | $! VAXC For VAX C. | ||
27 | $! DECC For DEC C. | ||
28 | $! GNUC For GNU C. | ||
29 | $! | ||
30 | $! If you don't speficy a compiler, it will prompt you for one. | ||
31 | $! | ||
32 | $! P4, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up) | ||
33 | $! | ||
34 | $! | ||
35 | $! Check Which Architecture We Are Using. | ||
36 | $! | ||
37 | $ IF (F$GETSYI("CPU").GE.128) | ||
38 | $ THEN | ||
39 | $! | ||
40 | $! The Architecture Is AXP | ||
41 | $! | ||
42 | $ ARCH := AXP | ||
43 | $! | ||
44 | $! Else... | ||
45 | $! | ||
46 | $ ELSE | ||
47 | $! | ||
48 | $! The Architecture Is VAX. | ||
49 | $! | ||
50 | $ ARCH := VAX | ||
51 | $! | ||
52 | $! End The Architecture Check. | ||
53 | $! | ||
54 | $ ENDIF | ||
55 | $! | ||
56 | $! Check To Make Sure We Have Valid Command Line Parameters. | ||
57 | $! | ||
58 | $ GOSUB CHECK_OPTIONS | ||
59 | $! | ||
60 | $! Initialise logical names and such | ||
61 | $! | ||
62 | $ GOSUB INITIALISE | ||
63 | $! | ||
64 | $! Tell The User What Kind of Machine We Run On. | ||
65 | $! | ||
66 | $ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." | ||
67 | $! | ||
68 | $! Define The OBJ Directory Name. | ||
69 | $! | ||
70 | $ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.RSAREF] | ||
71 | $! | ||
72 | $! Check To See If The Architecture Specific OBJ Directory Exists. | ||
73 | $! | ||
74 | $ IF (F$PARSE(OBJ_DIR).EQS."") | ||
75 | $ THEN | ||
76 | $! | ||
77 | $! It Dosen't Exist, So Create It. | ||
78 | $! | ||
79 | $ CREATE/DIR 'OBJ_DIR' | ||
80 | $! | ||
81 | $! End The Architecture Specific OBJ Directory Check. | ||
82 | $! | ||
83 | $ ENDIF | ||
84 | $! | ||
85 | $! Define The EXE Directory Name. | ||
86 | $! | ||
87 | $ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.RSAREF] | ||
88 | $! | ||
89 | $! Check To See If The Architecture Specific EXE Directory Exists. | ||
90 | $! | ||
91 | $ IF (F$PARSE(EXE_DIR).EQS."") | ||
92 | $ THEN | ||
93 | $! | ||
94 | $! It Dosen't Exist, So Create It. | ||
95 | $! | ||
96 | $ CREATE/DIR 'EXE_DIR' | ||
97 | $! | ||
98 | $! End The Architecture Specific EXE Directory Check. | ||
99 | $! | ||
100 | $ ENDIF | ||
101 | $! | ||
102 | $! Define The Library Name. | ||
103 | $! | ||
104 | $ LIB_NAME := 'EXE_DIR'LIBRSAGLUE.OLB | ||
105 | $! | ||
106 | $! Check To See What We Are To Do. | ||
107 | $! | ||
108 | $ IF (BUILDALL.EQS."TRUE") | ||
109 | $ THEN | ||
110 | $! | ||
111 | $! Since Nothing Special Was Specified, Do Everything. | ||
112 | $! | ||
113 | $ GOSUB LIBRARY | ||
114 | $ GOSUB DHDEMO | ||
115 | $ GOSUB RDEMO | ||
116 | $! | ||
117 | $! Else... | ||
118 | $! | ||
119 | $ ELSE | ||
120 | $! | ||
121 | $! Build Just What The User Wants Us To Build. | ||
122 | $! | ||
123 | $ GOSUB 'BUILDALL' | ||
124 | $! | ||
125 | $! End The BUILDALL Check. | ||
126 | $! | ||
127 | $ ENDIF | ||
128 | $! | ||
129 | $! Time To EXIT. | ||
130 | $! | ||
131 | $ EXIT: | ||
132 | $ GOSUB CLEANUP | ||
133 | $ EXIT | ||
134 | $! | ||
135 | $ LIBRARY: | ||
136 | $! | ||
137 | $! Tell The User That We Are Compiling. | ||
138 | $! | ||
139 | $ WRITE SYS$OUTPUT "Compiling The ",LIB_NAME," Files." | ||
140 | $! | ||
141 | $! Check To See If We Already Have A "LIBRSAGLUE.OLB" Library... | ||
142 | $! | ||
143 | $ IF (F$SEARCH(LIB_NAME).EQS."") | ||
144 | $ THEN | ||
145 | $! | ||
146 | $! Guess Not, Create The Library. | ||
147 | $! | ||
148 | $ LIBRARY/CREATE/OBJECT 'LIB_NAME' | ||
149 | $! | ||
150 | $! End The Library Exist Check. | ||
151 | $! | ||
152 | $ ENDIF | ||
153 | $! | ||
154 | $! Define The RSAREF Library Files. | ||
155 | $! | ||
156 | $ LIB_RSAREF = "DESC,DIGIT,MD2C,MD5C,NN,PRIME,RSA,R_DH,R_ENCODE,R_ENHANC," + - | ||
157 | "R_KEYGEN,R_RANDOM,R_STDLIB" | ||
158 | $! | ||
159 | $! Define A File Counter And Set It To "0". | ||
160 | $! | ||
161 | $ FILE_COUNTER = 0 | ||
162 | $! | ||
163 | $! Top Of The File Loop. | ||
164 | $! | ||
165 | $ NEXT_FILE: | ||
166 | $! | ||
167 | $! O.K, Extract The File Name From The File List. | ||
168 | $! | ||
169 | $ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",LIB_RSAREF) | ||
170 | $! | ||
171 | $! Check To See If We Are At The End Of The File List. | ||
172 | $! | ||
173 | $ IF (FILE_NAME.EQS.",") THEN GOTO FILE_DONE | ||
174 | $! | ||
175 | $! Increment The Counter. | ||
176 | $! | ||
177 | $ FILE_COUNTER = FILE_COUNTER + 1 | ||
178 | $! | ||
179 | $! Create The Source File Name. | ||
180 | $! | ||
181 | $ SOURCE_FILE = "SYS$DISK:[.SOURCE]" + FILE_NAME + ".C" | ||
182 | $! | ||
183 | $! Tell The User We Are Compiling The Source File. | ||
184 | $! | ||
185 | $ WRITE SYS$OUTPUT " ",FILE_NAME,".C" | ||
186 | $! | ||
187 | $! Create The Object File Name. | ||
188 | $! | ||
189 | $ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ" | ||
190 | $ ON WARNING THEN GOTO NEXT_FILE | ||
191 | $! | ||
192 | $! Check To See If The File We Want To Compile Actually Exists. | ||
193 | $! | ||
194 | $ IF (F$SEARCH(SOURCE_FILE).EQS."") | ||
195 | $ THEN | ||
196 | $! | ||
197 | $! Tell The User That The File Dosen't Exist. | ||
198 | $! | ||
199 | $ WRITE SYS$OUTPUT "" | ||
200 | $ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist." | ||
201 | $ WRITE SYS$OUTPUT "" | ||
202 | $! | ||
203 | $! Exit The Build. | ||
204 | $! | ||
205 | $ EXIT | ||
206 | $! | ||
207 | $! End The File Exist Check. | ||
208 | $! | ||
209 | $ ENDIF | ||
210 | $! | ||
211 | $! Compile The File. | ||
212 | $! | ||
213 | $ ON ERROR THEN GOTO NEXT_FILE | ||
214 | $ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE' | ||
215 | $! | ||
216 | $! Add It To The Library. | ||
217 | $! | ||
218 | $ LIBRARY/REPLACE/OBJECT 'LIB_NAME' 'OBJECT_FILE' | ||
219 | $! | ||
220 | $! Time To Clean Up The Object File. | ||
221 | $! | ||
222 | $ DELETE 'OBJECT_FILE';* | ||
223 | $! | ||
224 | $! Go Back And Do It Again. | ||
225 | $! | ||
226 | $ GOTO NEXT_FILE | ||
227 | $! | ||
228 | $! All Done With This Library Part. | ||
229 | $! | ||
230 | $ FILE_DONE: | ||
231 | $! | ||
232 | $! Tell The User That We Are All Done. | ||
233 | $! | ||
234 | $ WRITE SYS$OUTPUT "Library ",LIB_NAME," Built." | ||
235 | $! | ||
236 | $! All Done, Time To Return. | ||
237 | $! | ||
238 | $ RETURN | ||
239 | $! | ||
240 | $! Compile The [.xxx.EXE.RSAREF]DHDEMO Program. | ||
241 | $! | ||
242 | $ DHDEMO: | ||
243 | $! | ||
244 | $! Check To See If We Have The Proper Libraries. | ||
245 | $! | ||
246 | $ GOSUB LIB_CHECK | ||
247 | $! | ||
248 | $! Check To See If We Have A Linker Option File. | ||
249 | $! | ||
250 | $ GOSUB CHECK_OPT_FILE | ||
251 | $! | ||
252 | $! Check To See If The File We Want To Compile Actually Exists. | ||
253 | $! | ||
254 | $ IF (F$SEARCH("SYS$DISK:[.RDEMO]DHDEMO.C").EQS."") | ||
255 | $ THEN | ||
256 | $! | ||
257 | $! Tell The User That The File Dosen't Exist. | ||
258 | $! | ||
259 | $ WRITE SYS$OUTPUT "" | ||
260 | $ WRITE SYS$OUTPUT "The File [.RDEMO]DHDEMO.C Dosen't Exist." | ||
261 | $ WRITE SYS$OUTPUT "" | ||
262 | $! | ||
263 | $! Exit The Build. | ||
264 | $! | ||
265 | $ EXIT | ||
266 | $! | ||
267 | $! End The [.RDEMO]DHDEMO.C File Check. | ||
268 | $! | ||
269 | $ ENDIF | ||
270 | $! | ||
271 | $! Tell The User What We Are Building. | ||
272 | $! | ||
273 | $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"DHDEMO.EXE" | ||
274 | $! | ||
275 | $! Compile The DHDEMO Program. | ||
276 | $! | ||
277 | $ CC/OBJECT='OBJ_DIR'DHDEMO.OBJ SYS$DISK:[.RDEMO]DHDEMO.C | ||
278 | $! | ||
279 | $! Link The DHDEMO Program. | ||
280 | $! | ||
281 | $ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS - | ||
282 | /EXE='EXE_DIR'DHDEMO.EXE 'OBJ_DIR'DHDEMO.OBJ, - | ||
283 | 'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION | ||
284 | $! | ||
285 | $! All Done, Time To Return. | ||
286 | $! | ||
287 | $ RETURN | ||
288 | $! | ||
289 | $! Compile The RDEMO Program. | ||
290 | $! | ||
291 | $ RDEMO: | ||
292 | $! | ||
293 | $! Check To See If We Have The Proper Libraries. | ||
294 | $! | ||
295 | $ GOSUB LIB_CHECK | ||
296 | $! | ||
297 | $! Check To See If We Have A Linker Option File. | ||
298 | $! | ||
299 | $ GOSUB CHECK_OPT_FILE | ||
300 | $! | ||
301 | $! Check To See If The File We Want To Compile Actually Exists. | ||
302 | $! | ||
303 | $ IF (F$SEARCH("SYS$DISK:[.RDEMO]RDEMO.C").EQS."") | ||
304 | $ THEN | ||
305 | $! | ||
306 | $! Tell The User That The File Dosen't Exist. | ||
307 | $! | ||
308 | $ WRITE SYS$OUTPUT "" | ||
309 | $ WRITE SYS$OUTPUT "The File [.RDEMO]RDEMO.C Dosen't Exist." | ||
310 | $ WRITE SYS$OUTPUT "" | ||
311 | $! | ||
312 | $! Exit The Build. | ||
313 | $! | ||
314 | $ EXIT | ||
315 | $! | ||
316 | $! End The [.RDEMO]RDEMO.C File Check. | ||
317 | $! | ||
318 | $ ENDIF | ||
319 | $! | ||
320 | $! Tell The User What We Are Building. | ||
321 | $! | ||
322 | $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"RDEMO.EXE" | ||
323 | $! | ||
324 | $! Compile The RDEMO Program. | ||
325 | $! | ||
326 | $ CC/OBJECT='OBJ_DIR'RDEMO.OBJ SYS$DISK:[.RDEMO]RDEMO.C | ||
327 | $! | ||
328 | $! Link The RDEMO Program. | ||
329 | $! | ||
330 | $ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS - | ||
331 | /EXE='EXE_DIR'RDEMO.EXE 'OBJ_DIR'RDEMO.OBJ, - | ||
332 | 'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION | ||
333 | $! | ||
334 | $! All Done, Time To Return. | ||
335 | $! | ||
336 | $ RETURN | ||
337 | $! | ||
338 | $! Check For The Link Option FIle. | ||
339 | $! | ||
340 | $ CHECK_OPT_FILE: | ||
341 | $! | ||
342 | $! Check To See If We Need To Make A VAX C Option File. | ||
343 | $! | ||
344 | $ IF (COMPILER.EQS."VAXC") | ||
345 | $ THEN | ||
346 | $! | ||
347 | $! Check To See If We Already Have A VAX C Linker Option File. | ||
348 | $! | ||
349 | $ IF (F$SEARCH(OPT_FILE).EQS."") | ||
350 | $ THEN | ||
351 | $! | ||
352 | $! We Need A VAX C Linker Option File. | ||
353 | $! | ||
354 | $ CREATE 'OPT_FILE' | ||
355 | $DECK | ||
356 | ! | ||
357 | ! Default System Options File To Link Agianst | ||
358 | ! The Sharable VAX C Runtime Library. | ||
359 | ! | ||
360 | SYS$SHARE:VAXCRTL.EXE/SHARE | ||
361 | $EOD | ||
362 | $! | ||
363 | $! End The Option File Check. | ||
364 | $! | ||
365 | $ ENDIF | ||
366 | $! | ||
367 | $! End The VAXC Check. | ||
368 | $! | ||
369 | $ ENDIF | ||
370 | $! | ||
371 | $! Check To See If We Need A GNU C Option File. | ||
372 | $! | ||
373 | $ IF (COMPILER.EQS."GNUC") | ||
374 | $ THEN | ||
375 | $! | ||
376 | $! Check To See If We Already Have A GNU C Linker Option File. | ||
377 | $! | ||
378 | $ IF (F$SEARCH(OPT_FILE).EQS."") | ||
379 | $ THEN | ||
380 | $! | ||
381 | $! We Need A GNU C Linker Option File. | ||
382 | $! | ||
383 | $ CREATE 'OPT_FILE' | ||
384 | $DECK | ||
385 | ! | ||
386 | ! Default System Options File To Link Agianst | ||
387 | ! The Sharable C Runtime Library. | ||
388 | ! | ||
389 | GNU_CC:[000000]GCCLIB/LIBRARY | ||
390 | SYS$SHARE:VAXCRTL/SHARE | ||
391 | $EOD | ||
392 | $! | ||
393 | $! End The Option File Check. | ||
394 | $! | ||
395 | $ ENDIF | ||
396 | $! | ||
397 | $! End The GNU C Check. | ||
398 | $! | ||
399 | $ ENDIF | ||
400 | $! | ||
401 | $! Check To See If We Need A DEC C Option File. | ||
402 | $! | ||
403 | $ IF (COMPILER.EQS."DECC") | ||
404 | $ THEN | ||
405 | $! | ||
406 | $! Check To See If We Already Have A DEC C Linker Option File. | ||
407 | $! | ||
408 | $ IF (F$SEARCH(OPT_FILE).EQS."") | ||
409 | $ THEN | ||
410 | $! | ||
411 | $! Figure Out If We Need An AXP Or A VAX Linker Option File. | ||
412 | $! | ||
413 | $ IF (ARCH.EQS."VAX") | ||
414 | $ THEN | ||
415 | $! | ||
416 | $! We Need A DEC C Linker Option File For VAX. | ||
417 | $! | ||
418 | $ CREATE 'OPT_FILE' | ||
419 | $DECK | ||
420 | ! | ||
421 | ! Default System Options File To Link Agianst | ||
422 | ! The Sharable DEC C Runtime Library. | ||
423 | ! | ||
424 | SYS$SHARE:DECC$SHR.EXE/SHARE | ||
425 | $EOD | ||
426 | $! | ||
427 | $! Else... | ||
428 | $! | ||
429 | $ ELSE | ||
430 | $! | ||
431 | $! Create The AXP Linker Option File. | ||
432 | $! | ||
433 | $ CREATE 'OPT_FILE' | ||
434 | $DECK | ||
435 | ! | ||
436 | ! Default System Options File For AXP To Link Agianst | ||
437 | ! The Sharable C Runtime Library. | ||
438 | ! | ||
439 | SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE | ||
440 | SYS$SHARE:CMA$OPEN_RTL/SHARE | ||
441 | $EOD | ||
442 | $! | ||
443 | $! End The VAX/AXP DEC C Option File Check. | ||
444 | $! | ||
445 | $ ENDIF | ||
446 | $! | ||
447 | $! End The Option File Search. | ||
448 | $! | ||
449 | $ ENDIF | ||
450 | $! | ||
451 | $! End The DEC C Check. | ||
452 | $! | ||
453 | $ ENDIF | ||
454 | $! | ||
455 | $! Tell The User What Linker Option File We Are Using. | ||
456 | $! | ||
457 | $ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"." | ||
458 | $! | ||
459 | $! Time To RETURN. | ||
460 | $! | ||
461 | $ RETURN | ||
462 | $ LIB_CHECK: | ||
463 | $! | ||
464 | $! Look For The Library LIBRSAGLUE.OLB. | ||
465 | $! | ||
466 | $ IF (F$SEARCH(LIB_NAME).EQS."") | ||
467 | $ THEN | ||
468 | $! | ||
469 | $! Tell The User We Can't Find The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library. | ||
470 | $! | ||
471 | $ WRITE SYS$OUTPUT "" | ||
472 | $ WRITE SYS$OUTPUT "Can't Find The Library ",LIB_NAME,"." | ||
473 | $ WRITE SYS$OUTPUT "We Can't Link Without It." | ||
474 | $ WRITE SYS$OUTPUT "" | ||
475 | $! | ||
476 | $! And Ask If They Would Like To Build It. | ||
477 | $! | ||
478 | $ INQUIRE YESNO "Would You Like To Build The Library Now (Y/N)?" | ||
479 | $! | ||
480 | $! Check The Answer. | ||
481 | $! | ||
482 | $ IF (YESNO.EQS."Y").OR.(YESNO.EQS."y") | ||
483 | $ THEN | ||
484 | $! | ||
485 | $! Then Build The Library. | ||
486 | $! | ||
487 | $ GOSUB LIBRARY | ||
488 | $! | ||
489 | $! When Done With That, RETURN To Finish What Ever We Were Doing | ||
490 | $! That Needed The Library. | ||
491 | $! | ||
492 | $ RETURN | ||
493 | $! | ||
494 | $! Else... | ||
495 | $! | ||
496 | $ ELSE | ||
497 | $! | ||
498 | $! Since We Can't Link Without It, Exit. | ||
499 | $! | ||
500 | $ EXIT | ||
501 | $! | ||
502 | $! End The Answer Check. | ||
503 | $! | ||
504 | $ ENDIF | ||
505 | $! | ||
506 | $! End The Library Check. | ||
507 | $! | ||
508 | $ ENDIF | ||
509 | $! | ||
510 | $! Time To Return. | ||
511 | $! | ||
512 | $ RETURN | ||
513 | $! | ||
514 | $! Check The User's Options. | ||
515 | $! | ||
516 | $ CHECK_OPTIONS: | ||
517 | $! | ||
518 | $! Check To See If P1 Is Blank. | ||
519 | $! | ||
520 | $ IF (P1.EQS."ALL") | ||
521 | $ THEN | ||
522 | $! | ||
523 | $! P1 Is Blank, So Build Everything. | ||
524 | $! | ||
525 | $ BUILDALL = "TRUE" | ||
526 | $! | ||
527 | $! Else... | ||
528 | $! | ||
529 | $ ELSE | ||
530 | $! | ||
531 | $! Else, Check To See If P1 Has A Valid Arguement. | ||
532 | $! | ||
533 | $ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DHDEMO").OR.(P1.EQS."RDEMO") | ||
534 | $ THEN | ||
535 | $! | ||
536 | $! A Valid Arguement. | ||
537 | $! | ||
538 | $ BUILDALL = P1 | ||
539 | $! | ||
540 | $! Else.... | ||
541 | $! | ||
542 | $ ELSE | ||
543 | $! | ||
544 | $! Tell The User We Don't Know What They Want. | ||
545 | $! | ||
546 | $ WRITE SYS$OUTPUT "" | ||
547 | $ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:" | ||
548 | $ WRITE SYS$OUTPUT "" | ||
549 | $ WRITE SYS$OUTPUT " ALL : To Just Build Everything." | ||
550 | $ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library." | ||
551 | $ WRITE SYS$OUTPUT " DHDEMO : To Compile Just The [.xxx.EXE.RSAREF]DHDEMO Program." | ||
552 | $ WRITE SYS$OUTPUT " RDEMO : To Compile Just The [.xxx.EXE.RSAREF]RDEMO Program. | ||
553 | $ WRITE SYS$OUTPUT "" | ||
554 | $ WRITE SYS$OUTPUT " Where 'xxx' Stands For:" | ||
555 | $ WRITE SYS$OUTPUT "" | ||
556 | $ WRITE SYS$OUTPUT " AXP : Alpha Architecture." | ||
557 | $ WRITE SYS$OUTPUT " VAX : VAX Architecture." | ||
558 | $ WRITE SYS$OUTPUT "" | ||
559 | $! | ||
560 | $! Time To EXIT. | ||
561 | $! | ||
562 | $ EXIT | ||
563 | $! | ||
564 | $! End The Valid Arguement Check. | ||
565 | $! | ||
566 | $ ENDIF | ||
567 | $! | ||
568 | $! End The P1 Check. | ||
569 | $! | ||
570 | $ ENDIF | ||
571 | $! | ||
572 | $! Check To See If P2 Is Blank. | ||
573 | $! | ||
574 | $ IF (P2.EQS."NODEBUG") | ||
575 | $ THEN | ||
576 | $! | ||
577 | $! P2 Is "NODEBUG" So Compile Without Debugger Information. | ||
578 | $! | ||
579 | $ DEBUGGER = "NODEBUG" | ||
580 | $ TRACEBACK = "NOTRACEBACK" | ||
581 | $ GCC_OPTIMIZE = "OPTIMIZE" | ||
582 | $ CC_OPTIMIZE = "OPTIMIZE" | ||
583 | $ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile." | ||
584 | $ WRITE SYS$OUTPUT "Compiling With Compiler Optimization." | ||
585 | $ ELSE | ||
586 | $! | ||
587 | $! Check To See If We Are To Compile With Debugger Information. | ||
588 | $! | ||
589 | $ IF (P2.EQS."DEBUG") | ||
590 | $ THEN | ||
591 | $! | ||
592 | $! Compile With Debugger Information. | ||
593 | $! | ||
594 | $ DEBUGGER = "DEBUG" | ||
595 | $ TRACEBACK = "TRACEBACK" | ||
596 | $ GCC_OPTIMIZE = "NOOPTIMIZE" | ||
597 | $ CC_OPTIMIZE = "NOOPTIMIZE" | ||
598 | $ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile." | ||
599 | $ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization." | ||
600 | $ ELSE | ||
601 | $! | ||
602 | $! Tell The User Entered An Invalid Option.. | ||
603 | $! | ||
604 | $ WRITE SYS$OUTPUT "" | ||
605 | $ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:" | ||
606 | $ WRITE SYS$OUTPUT "" | ||
607 | $ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information." | ||
608 | $ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information." | ||
609 | $ WRITE SYS$OUTPUT "" | ||
610 | $! | ||
611 | $! Time To EXIT. | ||
612 | $! | ||
613 | $ EXIT | ||
614 | $! | ||
615 | $! End The Valid Arguement Check. | ||
616 | $! | ||
617 | $ ENDIF | ||
618 | $! | ||
619 | $! End The P2 Check. | ||
620 | $! | ||
621 | $ ENDIF | ||
622 | $! | ||
623 | $! Special Threads For OpenVMS v7.1 Or Later. | ||
624 | $! | ||
625 | $! Written By: Richard Levitte | ||
626 | $! richard@levitte.org | ||
627 | $! | ||
628 | $! | ||
629 | $! Check To See If We Have A Option For P4. | ||
630 | $! | ||
631 | $ IF (P4.EQS."") | ||
632 | $ THEN | ||
633 | $! | ||
634 | $! Get The Version Of VMS We Are Using. | ||
635 | $! | ||
636 | $ ISSEVEN := | ||
637 | $ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION"))) | ||
638 | $ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP)) | ||
639 | $! | ||
640 | $! Check To See If The VMS Version Is v7.1 Or Later. | ||
641 | $! | ||
642 | $ IF (TMP.GE.71) | ||
643 | $ THEN | ||
644 | $! | ||
645 | $! We Have OpenVMS v7.1 Or Later, So Use The Special Threads. | ||
646 | $! | ||
647 | $ ISSEVEN := ,PTHREAD_USE_D4 | ||
648 | $! | ||
649 | $! End The VMS Version Check. | ||
650 | $! | ||
651 | $ ENDIF | ||
652 | $! | ||
653 | $! End The P4 Check. | ||
654 | $! | ||
655 | $ ENDIF | ||
656 | $! | ||
657 | $! Check To See If P3 Is Blank. | ||
658 | $! | ||
659 | $ IF (P3.EQS."") | ||
660 | $ THEN | ||
661 | $! | ||
662 | $! O.K., The User Didn't Specify A Compiler, Let's Try To | ||
663 | $! Find Out Which One To Use. | ||
664 | $! | ||
665 | $! Check To See If We Have GNU C. | ||
666 | $! | ||
667 | $ IF (F$TRNLNM("GNU_CC").NES."") | ||
668 | $ THEN | ||
669 | $! | ||
670 | $! Looks Like GNUC, Set To Use GNUC. | ||
671 | $! | ||
672 | $ COMPILER = "GNUC" | ||
673 | $! | ||
674 | $! End The GNU C Compiler Check. | ||
675 | $! | ||
676 | $ ELSE | ||
677 | $! | ||
678 | $! Check To See If We Have VAXC Or DECC. | ||
679 | $! | ||
680 | $ IF (ARCH.EQS."ALPHA").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") | ||
681 | $ THEN | ||
682 | $! | ||
683 | $! Looks Like DECC, Set To Use DECC. | ||
684 | $! | ||
685 | $ COMPILER = "DECC" | ||
686 | $! | ||
687 | $! Tell The User We Are Using DECC. | ||
688 | $! | ||
689 | $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler." | ||
690 | $! | ||
691 | $! Else... | ||
692 | $! | ||
693 | $ ELSE | ||
694 | $! | ||
695 | $! Looks Like VAXC, Set To Use VAXC. | ||
696 | $! | ||
697 | $ COMPILER = "VAXC" | ||
698 | $! | ||
699 | $! End The VAXC Compiler Check. | ||
700 | $! | ||
701 | $ ENDIF | ||
702 | $! | ||
703 | $! End The DECC & VAXC Compiler Check. | ||
704 | $! | ||
705 | $ ENDIF | ||
706 | $! | ||
707 | $! End The Compiler Check. | ||
708 | $! | ||
709 | $ ENDIF | ||
710 | $! | ||
711 | $! Set Up Initial CC Definitions, Possibly With User Ones | ||
712 | $! | ||
713 | $ CCDEFS = "VMS=1" | ||
714 | $ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS | ||
715 | $ CCEXTRAFLAGS = "" | ||
716 | $ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS | ||
717 | $ CCDISABLEWARNINGS = "" | ||
718 | $ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - | ||
719 | CCDISABLEWARNINGS = USER_CCDISABLEWARNINGS | ||
720 | $! | ||
721 | $! Check To See If The User Entered A Valid Paramter. | ||
722 | $! | ||
723 | $ IF (P3.EQS."VAXC").OR.(P3.EQS."DECC").OR.(P3.EQS."GNUC") | ||
724 | $ THEN | ||
725 | $! | ||
726 | $! Check To See If The User Wanted DECC. | ||
727 | $! | ||
728 | $ IF (P3.EQS."DECC") | ||
729 | $ THEN | ||
730 | $! | ||
731 | $! Looks Like DECC, Set To Use DECC. | ||
732 | $! | ||
733 | $ COMPILER = "DECC" | ||
734 | $! | ||
735 | $! Tell The User We Are Using DECC. | ||
736 | $! | ||
737 | $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler." | ||
738 | $! | ||
739 | $! Use DECC... | ||
740 | $! | ||
741 | $ CC = "CC" | ||
742 | $ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" - | ||
743 | THEN CC = "CC/DECC" | ||
744 | $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + - | ||
745 | "/NOLIST/PREFIX=ALL" + - | ||
746 | "/INCLUDE=(SYS$DISK:[-.CRYPTO],SYS$DISK:[.SOURCE])" + CCEXTRAFLAGS | ||
747 | $! | ||
748 | $! Define The Linker Options File Name. | ||
749 | $! | ||
750 | $ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" | ||
751 | $! | ||
752 | $! End DECC Check. | ||
753 | $! | ||
754 | $ ENDIF | ||
755 | $! | ||
756 | $! Check To See If We Are To Use VAXC. | ||
757 | $! | ||
758 | $ IF (P3.EQS."VAXC") | ||
759 | $ THEN | ||
760 | $! | ||
761 | $! Looks Like VAXC, Set To Use VAXC. | ||
762 | $! | ||
763 | $ COMPILER = "VAXC" | ||
764 | $! | ||
765 | $! Tell The User We Are Using VAX C. | ||
766 | $! | ||
767 | $ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler." | ||
768 | $! | ||
769 | $! Compile Using VAXC. | ||
770 | $! | ||
771 | $ CC = "CC" | ||
772 | $ IF ARCH.EQS."AXP" | ||
773 | $ THEN | ||
774 | $ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" | ||
775 | $ EXIT | ||
776 | $ ENDIF | ||
777 | $ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" | ||
778 | $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - | ||
779 | "/INCLUDE=(SYS$DISK:[-.CRYPTO],SYS$DISK:[.SOURCE])" + CCEXTRAFLAGS | ||
780 | $ CCDEFS = CCDEFS + ",""VAXC""" | ||
781 | $! | ||
782 | $! Define <sys> As SYS$COMMON:[SYSLIB] | ||
783 | $! | ||
784 | $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB] | ||
785 | $! | ||
786 | $! Define The Linker Options File Name. | ||
787 | $! | ||
788 | $ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" | ||
789 | $! | ||
790 | $! End VAXC Check | ||
791 | $! | ||
792 | $ ENDIF | ||
793 | $! | ||
794 | $! Check To See If We Are To Use GNU C. | ||
795 | $! | ||
796 | $ IF (P3.EQS."GNUC") | ||
797 | $ THEN | ||
798 | $! | ||
799 | $! Looks Like GNUC, Set To Use GNUC. | ||
800 | $! | ||
801 | $ COMPILER = "GNUC" | ||
802 | $! | ||
803 | $! Tell The User We Are Using GNUC. | ||
804 | $! | ||
805 | $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler." | ||
806 | $! | ||
807 | $! Use GNU C... | ||
808 | $! | ||
809 | $ IF F$TYPE(GCC) .EQS. "" THEN GCC := GCC | ||
810 | $ CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - | ||
811 | "/INCLUDE=(SYS$DISK:[-.CRYPTO],SYS$DISK:[.SOURCE])" + CCEXTRAFLAGS | ||
812 | $! | ||
813 | $! Define The Linker Options File Name. | ||
814 | $! | ||
815 | $ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" | ||
816 | $! | ||
817 | $! End The GNU C Check. | ||
818 | $! | ||
819 | $ ENDIF | ||
820 | $! | ||
821 | $! Set up default defines | ||
822 | $! | ||
823 | $ CCDEFS = """FLAT_INC=1""," + CCDEFS | ||
824 | $ CCDEFS = CCDEFS + ",""RSAref=1""" | ||
825 | $! | ||
826 | $! Finish up the definition of CC. | ||
827 | $! | ||
828 | $ IF COMPILER .EQS. "DECC" | ||
829 | $ THEN | ||
830 | $ IF CCDISABLEWARNINGS .NES. "" | ||
831 | $ THEN | ||
832 | $ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))" | ||
833 | $ ENDIF | ||
834 | $ ELSE | ||
835 | $ CCDISABLEWARNINGS = "" | ||
836 | $ ENDIF | ||
837 | $ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS | ||
838 | $! | ||
839 | $! Show user the result | ||
840 | $! | ||
841 | $ WRITE SYS$OUTPUT "Main Compiling Command: ",CC | ||
842 | $! | ||
843 | $! Else The User Entered An Invalid Arguement. | ||
844 | $! | ||
845 | $ ELSE | ||
846 | $! | ||
847 | $! Tell The User We Don't Know What They Want. | ||
848 | $! | ||
849 | $ WRITE SYS$OUTPUT "" | ||
850 | $ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:" | ||
851 | $ WRITE SYS$OUTPUT "" | ||
852 | $ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C." | ||
853 | $ WRITE SYS$OUTPUT " DECC : To Compile With DEC C." | ||
854 | $ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C." | ||
855 | $ WRITE SYS$OUTPUT "" | ||
856 | $! | ||
857 | $! Time To EXIT. | ||
858 | $! | ||
859 | $ EXIT | ||
860 | $! | ||
861 | $! End The P3 Check. | ||
862 | $! | ||
863 | $ ENDIF | ||
864 | $! | ||
865 | $! Time To RETURN... | ||
866 | $! | ||
867 | $ RETURN | ||
868 | $! | ||
869 | $ INITIALISE: | ||
870 | $! | ||
871 | $! Save old value of the logical name OPENSSL | ||
872 | $! | ||
873 | $ __SAVE_OPENSSL = F$TRNLNM("OPENSSL","LNM$PROCESS_TABLE") | ||
874 | $! | ||
875 | $! Save directory information | ||
876 | $! | ||
877 | $ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;" | ||
878 | $ __TOP = __HERE - "RSAREF]" | ||
879 | $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]" | ||
880 | $! | ||
881 | $! Set up the logical name OPENSSL to point at the include directory | ||
882 | $! | ||
883 | $ DEFINE OPENSSL/NOLOG '__INCLUDE' | ||
884 | $! | ||
885 | $! Done | ||
886 | $! | ||
887 | $ RETURN | ||
888 | $! | ||
889 | $ CLEANUP: | ||
890 | $! | ||
891 | $! Restore the logical name OPENSSL if it had a value | ||
892 | $! | ||
893 | $ IF __SAVE_OPENSSL .EQS. "" | ||
894 | $ THEN | ||
895 | $ DEASSIGN OPENSSL | ||
896 | $ ELSE | ||
897 | $ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL' | ||
898 | $ ENDIF | ||
899 | $! | ||
900 | $! Done | ||
901 | $! | ||
902 | $ RETURN | ||
diff --git a/src/lib/libssl/src/rsaref/rsaref.c b/src/lib/libssl/src/rsaref/rsaref.c new file mode 100644 index 0000000000..7677eb9fce --- /dev/null +++ b/src/lib/libssl/src/rsaref/rsaref.c | |||
@@ -0,0 +1,301 @@ | |||
1 | /* rsaref/rsaref.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #ifndef NO_RSA | ||
60 | #include <stdio.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include <openssl/bn.h> | ||
63 | #include <openssl/rsa.h> | ||
64 | #include <openssl/rsaref.h> | ||
65 | #include <openssl/rand.h> | ||
66 | |||
67 | static int RSAref_bn2bin(BIGNUM * from, unsigned char* to, int max); | ||
68 | #ifdef undef | ||
69 | static BIGNUM* RSAref_bin2bn(unsigned char* from, BIGNUM * to, int max); | ||
70 | #endif | ||
71 | static int RSAref_Public_eay2ref(RSA * from, RSArefPublicKey * to); | ||
72 | static int RSAref_Private_eay2ref(RSA * from, RSArefPrivateKey * to); | ||
73 | int RSA_ref_private_decrypt(int len, unsigned char *from, | ||
74 | unsigned char *to, RSA *rsa, int padding); | ||
75 | int RSA_ref_private_encrypt(int len, unsigned char *from, | ||
76 | unsigned char *to, RSA *rsa, int padding); | ||
77 | int RSA_ref_public_encrypt(int len, unsigned char *from, | ||
78 | unsigned char *to, RSA *rsa, int padding); | ||
79 | int RSA_ref_public_decrypt(int len, unsigned char *from, | ||
80 | unsigned char *to, RSA *rsa, int padding); | ||
81 | static int BN_ref_mod_exp(BIGNUM *r,BIGNUM *a,const BIGNUM *p,const BIGNUM *m, | ||
82 | BN_CTX *ctx, BN_MONT_CTX *m_ctx); | ||
83 | static int RSA_ref_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa); | ||
84 | static RSA_METHOD rsa_pkcs1_ref_meth={ | ||
85 | "RSAref PKCS#1 RSA", | ||
86 | RSA_ref_public_encrypt, | ||
87 | RSA_ref_public_decrypt, | ||
88 | RSA_ref_private_encrypt, | ||
89 | RSA_ref_private_decrypt, | ||
90 | RSA_ref_mod_exp, | ||
91 | BN_ref_mod_exp, | ||
92 | NULL, | ||
93 | NULL, | ||
94 | 0, | ||
95 | NULL, | ||
96 | }; | ||
97 | |||
98 | RSA_METHOD *RSA_PKCS1_RSAref(void) | ||
99 | { | ||
100 | return(&rsa_pkcs1_ref_meth); | ||
101 | } | ||
102 | |||
103 | static int RSA_ref_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa) | ||
104 | { | ||
105 | RSAREFerr(RSAREF_F_RSA_REF_MOD_EXP,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | ||
106 | return(0); | ||
107 | } | ||
108 | |||
109 | static int BN_ref_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, | ||
110 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) | ||
111 | { | ||
112 | RSAREFerr(RSAREF_F_BN_REF_MOD_EXP,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | ||
113 | return(0); | ||
114 | } | ||
115 | |||
116 | /* unsigned char *to: [max] */ | ||
117 | static int RSAref_bn2bin(BIGNUM *from, unsigned char *to, int max) | ||
118 | { | ||
119 | int i; | ||
120 | |||
121 | i=BN_num_bytes(from); | ||
122 | if (i > max) | ||
123 | { | ||
124 | RSAREFerr(RSAREF_F_RSAREF_BN2BIN,RSAREF_R_LEN); | ||
125 | return(0); | ||
126 | } | ||
127 | |||
128 | memset(to,0,(unsigned int)max); | ||
129 | if (!BN_bn2bin(from,&(to[max-i]))) | ||
130 | return(0); | ||
131 | return(1); | ||
132 | } | ||
133 | |||
134 | #ifdef undef | ||
135 | /* unsigned char *from: [max] */ | ||
136 | static BIGNUM *RSAref_bin2bn(unsigned char *from, BIGNUM *to, int max) | ||
137 | { | ||
138 | int i; | ||
139 | BIGNUM *ret; | ||
140 | |||
141 | for (i=0; i<max; i++) | ||
142 | if (from[i]) break; | ||
143 | |||
144 | ret=BN_bin2bn(&(from[i]),max-i,to); | ||
145 | return(ret); | ||
146 | } | ||
147 | |||
148 | static int RSAref_Public_ref2eay(RSArefPublicKey *from, RSA *to) | ||
149 | { | ||
150 | to->n=RSAref_bin2bn(from->m,NULL,RSAref_MAX_LEN); | ||
151 | to->e=RSAref_bin2bn(from->e,NULL,RSAref_MAX_LEN); | ||
152 | if ((to->n == NULL) || (to->e == NULL)) return(0); | ||
153 | return(1); | ||
154 | } | ||
155 | #endif | ||
156 | |||
157 | static int RSAref_Public_eay2ref(RSA *from, RSArefPublicKey *to) | ||
158 | { | ||
159 | to->bits=BN_num_bits(from->n); | ||
160 | if (!RSAref_bn2bin(from->n,to->m,RSAref_MAX_LEN)) return(0); | ||
161 | if (!RSAref_bn2bin(from->e,to->e,RSAref_MAX_LEN)) return(0); | ||
162 | return(1); | ||
163 | } | ||
164 | |||
165 | #ifdef undef | ||
166 | static int RSAref_Private_ref2eay(RSArefPrivateKey *from, RSA *to) | ||
167 | { | ||
168 | if ((to->n=RSAref_bin2bn(from->m,NULL,RSAref_MAX_LEN)) == NULL) | ||
169 | return(0); | ||
170 | if ((to->e=RSAref_bin2bn(from->e,NULL,RSAref_MAX_LEN)) == NULL) | ||
171 | return(0); | ||
172 | if ((to->d=RSAref_bin2bn(from->d,NULL,RSAref_MAX_LEN)) == NULL) | ||
173 | return(0); | ||
174 | if ((to->p=RSAref_bin2bn(from->prime[0],NULL,RSAref_MAX_PLEN)) == NULL) | ||
175 | return(0); | ||
176 | if ((to->q=RSAref_bin2bn(from->prime[1],NULL,RSAref_MAX_PLEN)) == NULL) | ||
177 | return(0); | ||
178 | if ((to->dmp1=RSAref_bin2bn(from->pexp[0],NULL,RSAref_MAX_PLEN)) | ||
179 | == NULL) | ||
180 | return(0); | ||
181 | if ((to->dmq1=RSAref_bin2bn(from->pexp[1],NULL,RSAref_MAX_PLEN)) | ||
182 | == NULL) | ||
183 | return(0); | ||
184 | if ((to->iqmp=RSAref_bin2bn(from->coef,NULL,RSAref_MAX_PLEN)) == NULL) | ||
185 | return(0); | ||
186 | return(1); | ||
187 | } | ||
188 | #endif | ||
189 | |||
190 | static int RSAref_Private_eay2ref(RSA *from, RSArefPrivateKey *to) | ||
191 | { | ||
192 | to->bits=BN_num_bits(from->n); | ||
193 | if (!RSAref_bn2bin(from->n,to->m,RSAref_MAX_LEN)) return(0); | ||
194 | if (!RSAref_bn2bin(from->e,to->e,RSAref_MAX_LEN)) return(0); | ||
195 | if (!RSAref_bn2bin(from->d,to->d,RSAref_MAX_LEN)) return(0); | ||
196 | if (!RSAref_bn2bin(from->p,to->prime[0],RSAref_MAX_PLEN)) return(0); | ||
197 | if (!RSAref_bn2bin(from->q,to->prime[1],RSAref_MAX_PLEN)) return(0); | ||
198 | if (!RSAref_bn2bin(from->dmp1,to->pexp[0],RSAref_MAX_PLEN)) return(0); | ||
199 | if (!RSAref_bn2bin(from->dmq1,to->pexp[1],RSAref_MAX_PLEN)) return(0); | ||
200 | if (!RSAref_bn2bin(from->iqmp,to->coef,RSAref_MAX_PLEN)) return(0); | ||
201 | return(1); | ||
202 | } | ||
203 | |||
204 | int RSA_ref_private_decrypt(int len, unsigned char *from, unsigned char *to, | ||
205 | RSA *rsa, int padding) | ||
206 | { | ||
207 | int i,outlen= -1; | ||
208 | RSArefPrivateKey RSAkey; | ||
209 | |||
210 | if (!RSAref_Private_eay2ref(rsa,&RSAkey)) | ||
211 | goto err; | ||
212 | if ((i=RSAPrivateDecrypt(to,&outlen,from,len,&RSAkey)) != 0) | ||
213 | { | ||
214 | RSAREFerr(RSAREF_F_RSA_REF_PRIVATE_DECRYPT,i); | ||
215 | outlen= -1; | ||
216 | } | ||
217 | err: | ||
218 | memset(&RSAkey,0,sizeof(RSAkey)); | ||
219 | return(outlen); | ||
220 | } | ||
221 | |||
222 | int RSA_ref_private_encrypt(int len, unsigned char *from, unsigned char *to, | ||
223 | RSA *rsa, int padding) | ||
224 | { | ||
225 | int i,outlen= -1; | ||
226 | RSArefPrivateKey RSAkey; | ||
227 | |||
228 | if (padding != RSA_PKCS1_PADDING) | ||
229 | { | ||
230 | RSAREFerr(RSAREF_F_RSA_REF_PRIVATE_ENCRYPT, RSA_R_UNKNOWN_PADDING_TYPE); | ||
231 | goto err; | ||
232 | } | ||
233 | if (!RSAref_Private_eay2ref(rsa,&RSAkey)) | ||
234 | goto err; | ||
235 | if ((i=RSAPrivateEncrypt(to,&outlen,from,len,&RSAkey)) != 0) | ||
236 | { | ||
237 | RSAREFerr(RSAREF_F_RSA_REF_PRIVATE_ENCRYPT,i); | ||
238 | outlen= -1; | ||
239 | } | ||
240 | err: | ||
241 | memset(&RSAkey,0,sizeof(RSAkey)); | ||
242 | return(outlen); | ||
243 | } | ||
244 | |||
245 | int RSA_ref_public_decrypt(int len, unsigned char *from, unsigned char *to, | ||
246 | RSA *rsa, int padding) | ||
247 | { | ||
248 | int i,outlen= -1; | ||
249 | RSArefPublicKey RSAkey; | ||
250 | |||
251 | if (!RSAref_Public_eay2ref(rsa,&RSAkey)) | ||
252 | goto err; | ||
253 | if ((i=RSAPublicDecrypt(to,&outlen,from,len,&RSAkey)) != 0) | ||
254 | { | ||
255 | RSAREFerr(RSAREF_F_RSA_REF_PUBLIC_DECRYPT,i); | ||
256 | outlen= -1; | ||
257 | } | ||
258 | err: | ||
259 | memset(&RSAkey,0,sizeof(RSAkey)); | ||
260 | return(outlen); | ||
261 | } | ||
262 | |||
263 | int RSA_ref_public_encrypt(int len, unsigned char *from, unsigned char *to, | ||
264 | RSA *rsa, int padding) | ||
265 | { | ||
266 | int outlen= -1; | ||
267 | int i; | ||
268 | RSArefPublicKey RSAkey; | ||
269 | RSARandomState rnd; | ||
270 | unsigned char buf[16]; | ||
271 | |||
272 | if (padding != RSA_PKCS1_PADDING && padding != RSA_SSLV23_PADDING) | ||
273 | { | ||
274 | RSAREFerr(RSAREF_F_RSA_REF_PUBLIC_ENCRYPT, RSA_R_UNKNOWN_PADDING_TYPE); | ||
275 | goto err; | ||
276 | } | ||
277 | |||
278 | R_RandomInit(&rnd); | ||
279 | R_GetRandomBytesNeeded((unsigned int *)&i,&rnd); | ||
280 | while (i > 0) | ||
281 | { | ||
282 | RAND_bytes(buf,16); | ||
283 | R_RandomUpdate(&rnd,buf,(unsigned int)((i>16)?16:i)); | ||
284 | i-=16; | ||
285 | } | ||
286 | |||
287 | if (!RSAref_Public_eay2ref(rsa,&RSAkey)) | ||
288 | goto err; | ||
289 | if ((i=RSAPublicEncrypt(to,&outlen,from,len,&RSAkey,&rnd)) != 0) | ||
290 | { | ||
291 | RSAREFerr(RSAREF_F_RSA_REF_PUBLIC_ENCRYPT,i); | ||
292 | outlen= -1; | ||
293 | goto err; | ||
294 | } | ||
295 | err: | ||
296 | memset(&RSAkey,0,sizeof(RSAkey)); | ||
297 | R_RandomFinal(&rnd); | ||
298 | memset(&rnd,0,sizeof(rnd)); | ||
299 | return(outlen); | ||
300 | } | ||
301 | #endif | ||
diff --git a/src/lib/libssl/src/rsaref/rsaref.h b/src/lib/libssl/src/rsaref/rsaref.h new file mode 100644 index 0000000000..15f65dd94f --- /dev/null +++ b/src/lib/libssl/src/rsaref/rsaref.h | |||
@@ -0,0 +1,180 @@ | |||
1 | /* rsaref/rsaref.h */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #ifndef HEADER_RSAREF_H | ||
60 | #define HEADER_RSAREF_H | ||
61 | |||
62 | #ifdef __cplusplus | ||
63 | extern "C" { | ||
64 | #endif | ||
65 | |||
66 | #ifndef NO_RSA | ||
67 | #include <openssl/rsa.h> | ||
68 | |||
69 | /* RSAeuro */ | ||
70 | /*#define RSAref_MAX_BITS 2048*/ | ||
71 | |||
72 | /* RSAref */ | ||
73 | #define RSAref_MAX_BITS 1024 | ||
74 | |||
75 | #define RSAref_MIN_BITS 508 | ||
76 | #define RSAref_MAX_LEN ((RSAref_MAX_BITS+7)/8) | ||
77 | #define RSAref_MAX_PBITS (RSAref_MAX_BITS+1)/2 | ||
78 | #define RSAref_MAX_PLEN ((RSAref_MAX_PBITS+7)/8) | ||
79 | |||
80 | typedef struct RSArefPublicKey_st | ||
81 | { | ||
82 | unsigned int bits; | ||
83 | unsigned char m[RSAref_MAX_LEN]; | ||
84 | unsigned char e[RSAref_MAX_LEN]; | ||
85 | } RSArefPublicKey; | ||
86 | |||
87 | typedef struct RSArefPrivateKey_st | ||
88 | { | ||
89 | unsigned int bits; | ||
90 | unsigned char m[RSAref_MAX_LEN]; | ||
91 | unsigned char e[RSAref_MAX_LEN]; | ||
92 | unsigned char d[RSAref_MAX_LEN]; | ||
93 | unsigned char prime[2][RSAref_MAX_PLEN];/* p & q */ | ||
94 | unsigned char pexp[2][RSAref_MAX_PLEN]; /* dmp1 & dmq1 */ | ||
95 | unsigned char coef[RSAref_MAX_PLEN]; /* iqmp */ | ||
96 | } RSArefPrivateKey; | ||
97 | |||
98 | typedef struct RSARandomState_st | ||
99 | { | ||
100 | unsigned int needed; | ||
101 | unsigned char state[16]; | ||
102 | unsigned int outputnum; | ||
103 | unsigned char output[16]; | ||
104 | } RSARandomState; | ||
105 | |||
106 | #define RE_CONTENT_ENCODING 0x0400 | ||
107 | #define RE_DATA 0x0401 | ||
108 | #define RE_DIGEST_ALGORITHM 0x0402 | ||
109 | #define RE_ENCODING 0x0403 | ||
110 | #define RE_KEY 0x0404 | ||
111 | #define RE_KEY_ENCODING 0x0405 | ||
112 | #define RE_LEN 0x0406 | ||
113 | #define RE_MODULUS_LEN 0x0407 | ||
114 | #define RE_NEED_RANDOM 0x0408 | ||
115 | #define RE_PRIVATE_KEY 0x0409 | ||
116 | #define RE_PUBLIC_KEY 0x040a | ||
117 | #define RE_SIGNATURE 0x040b | ||
118 | #define RE_SIGNATURE_ENCODING 0x040c | ||
119 | #define RE_ENCRYPTION_ALGORITHM 0x040d | ||
120 | |||
121 | int RSAPrivateDecrypt(unsigned char *to, int *outlen, unsigned char *from, | ||
122 | int len, RSArefPrivateKey *RSAkey); | ||
123 | int RSAPrivateEncrypt(unsigned char *to, int *outlen, unsigned char *from, | ||
124 | int len, RSArefPrivateKey *RSAkey); | ||
125 | int RSAPublicDecrypt(unsigned char *to, int *outlen, unsigned char *from, | ||
126 | int len, RSArefPublicKey *RSAkey); | ||
127 | int RSAPublicEncrypt(unsigned char *to, int *outlen, unsigned char *from, | ||
128 | int len, RSArefPublicKey *RSAkey,RSARandomState *rnd); | ||
129 | int R_RandomInit(RSARandomState *rnd); | ||
130 | int R_GetRandomBytesNeeded(unsigned int *,RSARandomState *rnd); | ||
131 | int R_RandomUpdate(RSARandomState *rnd, unsigned char *data, unsigned int n); | ||
132 | int R_RandomFinal(RSARandomState *rnd); | ||
133 | |||
134 | void ERR_load_RSAREF_strings(void ); | ||
135 | RSA_METHOD *RSA_PKCS1_RSAref(void ); | ||
136 | #endif | ||
137 | |||
138 | /* BEGIN ERROR CODES */ | ||
139 | /* The following lines are auto generated by the script mkerr.pl. Any changes | ||
140 | * made after this point may be overwritten when the script is next run. | ||
141 | */ | ||
142 | |||
143 | /* Error codes for the RSAREF functions. */ | ||
144 | |||
145 | /* Function codes. */ | ||
146 | #define RSAREF_F_BN_REF_MOD_EXP 100 | ||
147 | #define RSAREF_F_RSAREF_BN2BIN 101 | ||
148 | #define RSAREF_F_RSA_BN2BIN 102 | ||
149 | #define RSAREF_F_RSA_PRIVATE_DECRYPT 103 | ||
150 | #define RSAREF_F_RSA_PRIVATE_ENCRYPT 104 | ||
151 | #define RSAREF_F_RSA_PUBLIC_DECRYPT 105 | ||
152 | #define RSAREF_F_RSA_PUBLIC_ENCRYPT 106 | ||
153 | #define RSAREF_F_RSA_REF_BN2BIN 107 | ||
154 | #define RSAREF_F_RSA_REF_MOD_EXP 108 | ||
155 | #define RSAREF_F_RSA_REF_PRIVATE_DECRYPT 109 | ||
156 | #define RSAREF_F_RSA_REF_PRIVATE_ENCRYPT 110 | ||
157 | #define RSAREF_F_RSA_REF_PUBLIC_DECRYPT 111 | ||
158 | #define RSAREF_F_RSA_REF_PUBLIC_ENCRYPT 112 | ||
159 | |||
160 | /* Reason codes. */ | ||
161 | #define RSAREF_R_CONTENT_ENCODING 0x0400 | ||
162 | #define RSAREF_R_DATA 0x0401 | ||
163 | #define RSAREF_R_DIGEST_ALGORITHM 0x0402 | ||
164 | #define RSAREF_R_ENCODING 0x0403 | ||
165 | #define RSAREF_R_ENCRYPTION_ALGORITHM 0x040d | ||
166 | #define RSAREF_R_KEY 0x0404 | ||
167 | #define RSAREF_R_KEY_ENCODING 0x0405 | ||
168 | #define RSAREF_R_LEN 0x0406 | ||
169 | #define RSAREF_R_MODULUS_LEN 0x0407 | ||
170 | #define RSAREF_R_NEED_RANDOM 0x0408 | ||
171 | #define RSAREF_R_PRIVATE_KEY 0x0409 | ||
172 | #define RSAREF_R_PUBLIC_KEY 0x040a | ||
173 | #define RSAREF_R_SIGNATURE 0x040b | ||
174 | #define RSAREF_R_SIGNATURE_ENCODING 0x040c | ||
175 | |||
176 | #ifdef __cplusplus | ||
177 | } | ||
178 | #endif | ||
179 | #endif | ||
180 | |||
diff --git a/src/lib/libssl/src/times/091/486-50.nt b/src/lib/libssl/src/times/091/486-50.nt new file mode 100644 index 0000000000..84820d9c65 --- /dev/null +++ b/src/lib/libssl/src/times/091/486-50.nt | |||
@@ -0,0 +1,30 @@ | |||
1 | 486-50 NT 4.0 | ||
2 | |||
3 | SSLeay 0.9.1a 06-Jul-1998 | ||
4 | built on Sat Jul 18 18:03:20 EST 1998 | ||
5 | options:bn(64,32) md2(int) rc4(idx,int) des(idx,cisc,4,long) idea(int) blowfish(ptr2) | ||
6 | C flags:cl /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DWIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM /Fdout32 | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 28.77k 80.30k 108.50k 118.98k 122.47k | ||
10 | mdc2 51.52k 54.06k 54.54k 54.65k 54.62k | ||
11 | md5 304.39k 1565.04k 3061.54k 3996.10k 4240.10k | ||
12 | hmac(md5) 119.53k 793.23k 2061.29k 3454.95k 4121.76k | ||
13 | sha1 127.51k 596.93k 1055.54k 1313.84k 1413.18k | ||
14 | rmd160 128.50k 572.49k 1001.03k 1248.01k 1323.63k | ||
15 | rc4 1224.40k 1545.11k 1590.29k 1600.20k 1576.90k | ||
16 | des cbc 448.19k 503.45k 512.30k 513.30k 508.23k | ||
17 | des ede3 148.66k 162.48k 163.68k 163.94k 164.24k | ||
18 | idea cbc 194.18k 211.10k 212.99k 213.18k 212.64k | ||
19 | rc2 cbc 245.78k 271.01k 274.12k 274.38k 273.52k | ||
20 | rc5-32/12 cbc 1252.48k 1625.20k 1700.03k 1711.12k 1677.18k | ||
21 | blowfish cbc 725.16k 828.26k 850.01k 846.99k 833.79k | ||
22 | cast cbc 643.30k 717.22k 739.48k 741.57k 735.33k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0904s 0.0104s 11.1 96.2 | ||
25 | rsa 1024 bits 0.5968s 0.0352s 1.7 28.4 | ||
26 | rsa 2048 bits 3.8860s 0.1017s 0.3 9.8 | ||
27 | sign verify sign/s verify/s | ||
28 | dsa 512 bits 0.1006s 0.1249s 9.9 8.0 | ||
29 | dsa 1024 bits 0.3306s 0.4093s 3.0 2.4 | ||
30 | dsa 2048 bits 0.9454s 1.1707s 1.1 0.9 | ||
diff --git a/src/lib/libssl/src/times/091/586-100.lnx b/src/lib/libssl/src/times/091/586-100.lnx new file mode 100644 index 0000000000..92892a672d --- /dev/null +++ b/src/lib/libssl/src/times/091/586-100.lnx | |||
@@ -0,0 +1,32 @@ | |||
1 | Pentium 100mhz, linux | ||
2 | |||
3 | SSLeay 0.9.0a 14-Apr-1998 | ||
4 | built on Fri Apr 17 08:47:07 EST 1998 | ||
5 | options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(ptr2) | ||
6 | C flags:gcc -DL_ENDIAN -DTERMIO -DBN_ASM -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 56.65k 153.88k 208.47k 229.03k 237.57k | ||
10 | mdc2 189.59k 204.95k 206.93k 208.90k 209.56k | ||
11 | md5 1019.48k 5882.41k 12085.42k 16376.49k 18295.47k | ||
12 | hmac(md5) 415.86k 2887.85k 7891.29k 13894.66k 17446.23k | ||
13 | sha1 540.68k 2791.96k 5289.30k 6813.01k 7432.87k | ||
14 | rmd160 298.37k 1846.87k 3869.10k 5273.94k 5892.78k | ||
15 | rc4 7870.87k 10438.10k 10857.13k 10729.47k 10788.86k | ||
16 | des cbc 1960.60k 2226.37k 2241.88k 2054.83k 2181.80k | ||
17 | des ede3 734.44k 739.69k 779.43k 750.25k 772.78k | ||
18 | idea cbc 654.07k 711.00k 716.89k 718.51k 720.90k | ||
19 | rc2 cbc 648.83k 701.91k 708.61k 708.95k 709.97k | ||
20 | rc5-32/12 cbc 3504.71k 4054.76k 4131.41k 4105.56k 4134.23k | ||
21 | blowfish cbc 3762.25k 4313.79k 4460.54k 4356.78k 4317.18k | ||
22 | cast cbc 2755.01k 3038.91k 3076.44k 3027.63k 2998.27k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0195s 0.0019s 51.4 519.9 | ||
25 | rsa 1024 bits 0.1000s 0.0059s 10.0 168.2 | ||
26 | rsa 2048 bits 0.6406s 0.0209s 1.6 47.8 | ||
27 | rsa 4096 bits 4.6100s 0.0787s 0.2 12.7 | ||
28 | sign verify sign/s verify/s | ||
29 | dsa 512 bits 0.0188s 0.0360s 53.1 27.8 | ||
30 | dsa 1024 bits 0.0570s 0.1126s 17.5 8.9 | ||
31 | dsa 2048 bits 0.1990s 0.3954s 5.0 2.5 | ||
32 | |||
diff --git a/src/lib/libssl/src/times/091/68000.bsd b/src/lib/libssl/src/times/091/68000.bsd new file mode 100644 index 0000000000..a3a14e8087 --- /dev/null +++ b/src/lib/libssl/src/times/091/68000.bsd | |||
@@ -0,0 +1,32 @@ | |||
1 | Motorolla 68020 20mhz, NetBSD | ||
2 | |||
3 | SSLeay 0.9.0t 29-May-1998 | ||
4 | built on Fri Jun 5 12:42:23 EST 1998 | ||
5 | options:bn(64,32) md2(char) rc4(idx,int) des(idx,cisc,16,long) idea(int) blowfish(idx) | ||
6 | C flags:gcc -DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 2176.00 5994.67 8079.73 8845.18 9077.01 | ||
10 | mdc2 5730.67 6122.67 6167.66 6176.51 6174.87 | ||
11 | md5 29.10k 127.31k 209.66k 250.50k 263.99k | ||
12 | hmac(md5) 12.33k 73.02k 160.17k 228.04k 261.15k | ||
13 | sha1 11.27k 49.37k 84.31k 102.40k 109.23k | ||
14 | rmd160 11.69k 48.62k 78.76k 93.15k 98.41k | ||
15 | rc4 117.96k 148.94k 152.57k 153.09k 152.92k | ||
16 | des cbc 27.13k 30.06k 30.38k 30.38k 30.53k | ||
17 | des ede3 10.51k 10.94k 11.01k 11.01k 11.01k | ||
18 | idea cbc 26.74k 29.23k 29.45k 29.60k 29.74k | ||
19 | rc2 cbc 34.27k 39.39k 40.03k 40.07k 40.16k | ||
20 | rc5-32/12 cbc 64.31k 83.18k 85.70k 86.70k 87.09k | ||
21 | blowfish cbc 48.86k 59.18k 60.07k 60.42k 60.78k | ||
22 | cast cbc 42.67k 50.01k 50.86k 51.20k 51.37k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.7738s 0.0774s 1.3 12.9 | ||
25 | rsa 1024 bits 4.3967s 0.2615s 0.2 3.8 | ||
26 | rsa 2048 bits 29.5200s 0.9664s 0.0 1.0 | ||
27 | sign verify sign/s verify/s | ||
28 | dsa 512 bits 0.7862s 0.9709s 1.3 1.0 | ||
29 | dsa 1024 bits 2.5375s 3.1625s 0.4 0.3 | ||
30 | dsa 2048 bits 9.2150s 11.8200s 0.1 0.1 | ||
31 | |||
32 | |||
diff --git a/src/lib/libssl/src/times/091/686-200.lnx b/src/lib/libssl/src/times/091/686-200.lnx new file mode 100644 index 0000000000..bb857d48d0 --- /dev/null +++ b/src/lib/libssl/src/times/091/686-200.lnx | |||
@@ -0,0 +1,32 @@ | |||
1 | Pentium Pro 200mhz, linux | ||
2 | |||
3 | SSLeay 0.9.0d 26-Apr-1998 | ||
4 | built on Sun Apr 26 10:25:33 EST 1998 | ||
5 | options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(ptr2) | ||
6 | C flags:gcc -DL_ENDIAN -DTERMIO -DBN_ASM -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 130.58k 364.54k 499.24k 545.79k 561.66k | ||
10 | mdc2 526.68k 579.72k 588.37k 588.80k 589.82k | ||
11 | md5 1917.71k 11434.69k 22512.21k 29495.30k 32677.89k | ||
12 | hmac(md5) 749.18k 5264.83k 14227.20k 25018.71k 31760.38k | ||
13 | sha1 1343.83k 6436.29k 11702.78k 14664.70k 15829.67k | ||
14 | rmd160 1038.05k 5138.77k 8985.51k 10985.13k 11799.21k | ||
15 | rc4 14891.04k 21334.06k 22376.79k 22579.54k 22574.42k | ||
16 | des cbc 4131.97k 4568.31k 4645.29k 4631.21k 4572.73k | ||
17 | des ede3 1567.17k 1631.13k 1657.32k 1653.08k 1643.86k | ||
18 | idea cbc 2427.23k 2671.21k 2716.67k 2723.84k 2733.40k | ||
19 | rc2 cbc 1629.90k 1767.38k 1788.50k 1797.12k 1799.51k | ||
20 | rc5-32/12 cbc 10290.55k 13161.60k 13744.55k 14011.73k 14123.01k | ||
21 | blowfish cbc 5896.42k 6920.77k 7122.01k 7151.62k 7146.15k | ||
22 | cast cbc 6037.71k 6935.19k 7101.35k 7145.81k 7116.12k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0070s 0.0007s 142.6 1502.9 | ||
25 | rsa 1024 bits 0.0340s 0.0019s 29.4 513.3 | ||
26 | rsa 2048 bits 0.2087s 0.0066s 4.8 151.3 | ||
27 | rsa 4096 bits 1.4700s 0.0242s 0.7 41.2 | ||
28 | sign verify sign/s verify/s | ||
29 | dsa 512 bits 0.0064s 0.0121s 156.1 82.9 | ||
30 | dsa 1024 bits 0.0184s 0.0363s 54.4 27.5 | ||
31 | dsa 2048 bits 0.0629s 0.1250s 15.9 8.0 | ||
32 | |||
diff --git a/src/lib/libssl/src/times/091/alpha064.osf b/src/lib/libssl/src/times/091/alpha064.osf new file mode 100644 index 0000000000..a8e7fdfd61 --- /dev/null +++ b/src/lib/libssl/src/times/091/alpha064.osf | |||
@@ -0,0 +1,32 @@ | |||
1 | Alpha EV4.5 (21064) 275mhz, OSF1 V4.0 | ||
2 | SSLeay 0.9.0g 01-May-1998 | ||
3 | built on Mon May 4 17:26:09 CST 1998 | ||
4 | options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,4,long) idea(int) blowfish(idx) | ||
5 | C flags:cc -tune host -O4 -readonly_strings | ||
6 | The 'numbers' are in 1000s of bytes per second processed. | ||
7 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
8 | md2 119.58k 327.48k 443.28k 480.09k 495.16k | ||
9 | mdc2 436.67k 456.35k 465.42k 466.57k 469.01k | ||
10 | md5 1459.34k 6566.46k 11111.91k 13375.30k 14072.60k | ||
11 | hmac(md5) 597.90k 3595.45k 8180.88k 12099.49k 13884.46k | ||
12 | sha1 707.01k 3253.09k 6131.73k 7798.23k 8439.67k | ||
13 | rmd160 618.57k 2729.07k 4711.33k 5825.16k 6119.23k | ||
14 | rc4 8796.43k 9393.62k 9548.88k 9378.77k 9472.57k | ||
15 | des cbc 2165.97k 2514.90k 2586.27k 2572.93k 2639.08k | ||
16 | des ede3 945.44k 1004.03k 1005.96k 1017.33k 1020.85k | ||
17 | idea cbc 1498.81k 1629.11k 1637.28k 1625.50k 1641.11k | ||
18 | rc2 cbc 1866.00k 2044.92k 2067.12k 2064.00k 2068.96k | ||
19 | rc5-32/12 cbc 4366.97k 5521.32k 5687.50k 5729.16k 5736.96k | ||
20 | blowfish cbc 3997.31k 4790.60k 4937.84k 4954.56k 5024.85k | ||
21 | cast cbc 2900.19k 3673.30k 3803.73k 3823.93k 3890.25k | ||
22 | sign verify sign/s verify/s | ||
23 | rsa 512 bits 0.0069s 0.0006s 144.2 1545.8 | ||
24 | rsa 1024 bits 0.0304s 0.0018s 32.9 552.6 | ||
25 | rsa 2048 bits 0.1887s 0.0062s 5.3 161.4 | ||
26 | rsa 4096 bits 1.3667s 0.0233s 0.7 42.9 | ||
27 | sign verify sign/s verify/s | ||
28 | dsa 512 bits 0.0067s 0.0123s 149.6 81.1 | ||
29 | dsa 1024 bits 0.0177s 0.0332s 56.6 30.1 | ||
30 | dsa 2048 bits 0.0590s 0.1162s 16.9 8.6 | ||
31 | |||
32 | |||
diff --git a/src/lib/libssl/src/times/091/alpha164.lnx b/src/lib/libssl/src/times/091/alpha164.lnx new file mode 100644 index 0000000000..c994662698 --- /dev/null +++ b/src/lib/libssl/src/times/091/alpha164.lnx | |||
@@ -0,0 +1,32 @@ | |||
1 | Alpha EV5.6 (21164A) 533mhz, Linux 2.0.32 | ||
2 | |||
3 | SSLeay 0.9.0p 22-May-1998 | ||
4 | built on Sun May 27 14:23:38 GMT 2018 | ||
5 | options:bn(64,64) md2(int) rc4(ptr,int) des(idx,risc1,16,long) idea(int) blowfish(idx) | ||
6 | C flags:gcc -O3 | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 295.78k 825.34k 1116.42k 1225.10k 1262.65k | ||
10 | mdc2 918.16k 1017.55k 1032.18k 1034.24k 1035.60k | ||
11 | md5 3574.93k 15517.05k 25482.67k 30434.31k 32210.51k | ||
12 | hmac(md5) 1261.54k 7757.15k 18025.46k 27081.21k 31653.27k | ||
13 | sha1 2251.89k 10056.84k 16990.19k 20651.04k 21973.29k | ||
14 | rmd160 1615.49k 7017.13k 11601.11k 13875.62k 14690.31k | ||
15 | rc4 22435.16k 24476.40k 24349.95k 23042.36k 24581.53k | ||
16 | des cbc 5198.38k 6559.04k 6775.43k 6827.87k 6875.82k | ||
17 | des ede3 2257.73k 2602.18k 2645.60k 2657.12k 2670.59k | ||
18 | idea cbc 3694.42k 4125.61k 4180.74k 4193.28k 4192.94k | ||
19 | rc2 cbc 4642.47k 5323.85k 5415.42k 5435.86k 5434.03k | ||
20 | rc5-32/12 cbc 9705.26k 13277.79k 13843.46k 13989.66k 13987.57k | ||
21 | blowfish cbc 7861.28k 10852.34k 11447.98k 11616.97k 11667.54k | ||
22 | cast cbc 6718.13k 8599.98k 8967.17k 9070.81k 9099.28k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0018s 0.0002s 555.9 6299.5 | ||
25 | rsa 1024 bits 0.0081s 0.0005s 123.3 2208.7 | ||
26 | rsa 2048 bits 0.0489s 0.0015s 20.4 648.5 | ||
27 | rsa 4096 bits 0.3402s 0.0057s 2.9 174.7 | ||
28 | sign verify sign/s verify/s | ||
29 | dsa 512 bits 0.0019s 0.0032s 529.0 310.2 | ||
30 | dsa 1024 bits 0.0047s 0.0086s 214.1 115.7 | ||
31 | dsa 2048 bits 0.0150s 0.0289s 66.7 34.6 | ||
32 | |||
diff --git a/src/lib/libssl/src/times/091/alpha164.osf b/src/lib/libssl/src/times/091/alpha164.osf new file mode 100644 index 0000000000..df712c689f --- /dev/null +++ b/src/lib/libssl/src/times/091/alpha164.osf | |||
@@ -0,0 +1,31 @@ | |||
1 | Alpha EV5.6 (21164A) 400mhz, OSF1 V4.0 | ||
2 | |||
3 | SSLeay 0.9.0 10-Apr-1998 | ||
4 | built on Sun Apr 19 07:54:37 EST 1998 | ||
5 | options:bn(64,64) md2(int) rc4(ptr,int) des(ptr,risc2,4,int) idea(int) blowfish(idx) | ||
6 | C flags:cc -O4 -tune host -fast | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 276.30k 762.07k 1034.35k 1134.07k 1160.53k | ||
10 | mdc2 814.99k 845.83k 849.09k 850.33k 849.24k | ||
11 | md5 2468.43k 10945.27k 17963.48k 21430.89k 22544.38k | ||
12 | hmac(md5) 1002.48k 6023.98k 13430.99k 19344.17k 22351.80k | ||
13 | sha1 1984.93k 8882.47k 14856.47k 17878.70k 18955.10k | ||
14 | rmd160 1286.96k 5595.52k 9167.00k 10957.74k 11582.30k | ||
15 | rc4 15948.15k 16710.29k 16793.20k 17929.50k 18474.56k | ||
16 | des cbc 3416.04k 4149.37k 4296.25k 4328.89k 4327.57k | ||
17 | des ede3 1540.14k 1683.36k 1691.14k 1705.90k 1705.22k | ||
18 | idea cbc 2795.87k 3192.93k 3238.13k 3238.17k 3256.66k | ||
19 | rc2 cbc 3529.00k 4069.93k 4135.79k 4135.25k 4160.07k | ||
20 | rc5-32/12 cbc 7212.35k 9849.71k 10260.91k 10423.38k 10439.99k | ||
21 | blowfish cbc 6061.75k 8363.50k 8706.80k 8779.40k 8784.55k | ||
22 | cast cbc 5401.75k 6433.31k 6638.18k 6662.40k 6702.80k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0022s 0.0002s 449.6 4916.2 | ||
25 | rsa 1024 bits 0.0105s 0.0006s 95.3 1661.2 | ||
26 | rsa 2048 bits 0.0637s 0.0020s 15.7 495.6 | ||
27 | rsa 4096 bits 0.4457s 0.0075s 2.2 132.7 | ||
28 | sign verify sign/s verify/s | ||
29 | dsa 512 bits 0.0028s 0.0048s 362.2 210.4 | ||
30 | dsa 1024 bits 0.0064s 0.0123s 155.2 81.6 | ||
31 | dsa 2048 bits 0.0201s 0.0394s 49.7 25.4 | ||
diff --git a/src/lib/libssl/src/times/091/mips-rel.pl b/src/lib/libssl/src/times/091/mips-rel.pl new file mode 100644 index 0000000000..4b2509315a --- /dev/null +++ b/src/lib/libssl/src/times/091/mips-rel.pl | |||
@@ -0,0 +1,21 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | |||
3 | &doit(100,"Pentium 100 32",0.0195,0.1000,0.6406,4.6100); # pentium-100 | ||
4 | &doit(200,"PPro 200 32",0.0070,0.0340,0.2087,1.4700); # pentium-100 | ||
5 | &doit( 25,"R3000 25 32",0.0860,0.4825,3.2417,23.8833); # R3000-25 | ||
6 | &doit(200,"R4400 200 32",0.0137,0.0717,0.4730,3.4367); # R4400 32bit | ||
7 | &doit(180,"R10000 180 32",0.0061,0.0311,0.1955,1.3871); # R10000 32bit | ||
8 | &doit(180,"R10000 180 64",0.0034,0.0149,0.0880,0.5933); # R10000 64bit | ||
9 | &doit(400,"DEC 21164 400 64",0.0022,0.0105,0.0637,0.4457); # R10000 64bit | ||
10 | |||
11 | sub doit | ||
12 | { | ||
13 | local($mhz,$label,@data)=@_; | ||
14 | |||
15 | for ($i=0; $i <= $#data; $i++) | ||
16 | { | ||
17 | $data[$i]=1/$data[$i]*200/$mhz; | ||
18 | } | ||
19 | printf("%s %6.1f %6.1f %6.1f %6.1f\n",$label,@data); | ||
20 | } | ||
21 | |||
diff --git a/src/lib/libssl/src/times/091/r10000.irx b/src/lib/libssl/src/times/091/r10000.irx new file mode 100644 index 0000000000..237ee5d192 --- /dev/null +++ b/src/lib/libssl/src/times/091/r10000.irx | |||
@@ -0,0 +1,37 @@ | |||
1 | MIPS R10000 32kI+32kD 180mhz, IRIX 6.4 | ||
2 | |||
3 | Using crypto/bn/mips3.s | ||
4 | |||
5 | This is built for n32, which is faster for all benchmarks than the n64 | ||
6 | compilation model | ||
7 | |||
8 | SSLeay 0.9.0b 19-Apr-1998 | ||
9 | built on Sat Apr 25 12:43:14 EST 1998 | ||
10 | options:bn(64,64) md2(int) rc4(ptr,int) des(ptr,risc2,16,long) idea(int) blowfish(ptr) | ||
11 | C flags:cc -use_readonly_const -O2 -DTERMIOS -DB_ENDIAN | ||
12 | The 'numbers' are in 1000s of bytes per second processed. | ||
13 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
14 | md2 126.38k 349.38k 472.67k 517.01k 529.81k | ||
15 | mdc2 501.64k 545.87k 551.80k 553.64k 554.41k | ||
16 | md5 1825.77k 7623.64k 12630.47k 15111.74k 16012.09k | ||
17 | hmac(md5) 780.81k 4472.86k 9667.22k 13802.67k 15777.89k | ||
18 | sha1 1375.52k 6213.91k 11037.30k 13682.01k 14714.09k | ||
19 | rmd160 856.72k 3454.40k 5598.33k 6689.94k 7073.48k | ||
20 | rc4 11260.93k 13311.50k 13360.05k 13322.17k 13364.39k | ||
21 | des cbc 2770.78k 3055.42k 3095.18k 3092.48k 3103.03k | ||
22 | des ede3 1023.22k 1060.58k 1063.81k 1070.37k 1064.54k | ||
23 | idea cbc 3029.09k 3334.30k 3375.29k 3375.65k 3380.64k | ||
24 | rc2 cbc 2307.45k 2470.72k 2501.25k 2500.68k 2500.55k | ||
25 | rc5-32/12 cbc 6770.91k 8629.89k 8909.58k 9009.64k 9044.95k | ||
26 | blowfish cbc 4796.53k 5598.20k 5717.14k 5755.11k 5749.86k | ||
27 | cast cbc 3986.20k 4426.17k 4465.04k 4476.84k 4475.08k | ||
28 | sign verify sign/s verify/s | ||
29 | rsa 512 bits 0.0034s 0.0003s 296.1 3225.4 | ||
30 | rsa 1024 bits 0.0139s 0.0008s 71.8 1221.8 | ||
31 | rsa 2048 bits 0.0815s 0.0026s 12.3 380.3 | ||
32 | rsa 4096 bits 0.5656s 0.0096s 1.8 103.7 | ||
33 | sign verify sign/s verify/s | ||
34 | dsa 512 bits 0.0034s 0.0061s 290.8 164.9 | ||
35 | dsa 1024 bits 0.0084s 0.0161s 119.1 62.3 | ||
36 | dsa 2048 bits 0.0260s 0.0515s 38.5 19.4 | ||
37 | |||
diff --git a/src/lib/libssl/src/times/091/r3000.ult b/src/lib/libssl/src/times/091/r3000.ult new file mode 100644 index 0000000000..ecd33908bb --- /dev/null +++ b/src/lib/libssl/src/times/091/r3000.ult | |||
@@ -0,0 +1,32 @@ | |||
1 | MIPS R3000 64kI+64kD 25mhz, ultrix 4.3 | ||
2 | |||
3 | SSLeay 0.9.0b 19-Apr-1998 | ||
4 | built on Thu Apr 23 07:22:31 EST 1998 | ||
5 | options:bn(32,32) md2(int) rc4(ptr,int) des(ptr,risc2,16,long) idea(int) blowfish(idx) | ||
6 | C flags:cc -O2 -DL_ENDIAN -DNOPROTO -DNOCONST | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 14.63k 40.65k 54.70k 60.07k 61.78k | ||
10 | mdc2 29.43k 37.27k 38.23k 38.57k 38.60k | ||
11 | md5 140.04k 676.59k 1283.84k 1654.10k 1802.24k | ||
12 | hmac(md5) 60.51k 378.90k 937.82k 1470.46k 1766.74k | ||
13 | sha1 60.77k 296.79k 525.40k 649.90k 699.05k | ||
14 | rmd160 48.82k 227.16k 417.19k 530.31k 572.05k | ||
15 | rc4 904.76k 996.20k 1007.53k 1015.65k 1010.35k | ||
16 | des cbc 178.87k 209.39k 213.42k 215.55k 214.53k | ||
17 | des ede3 74.25k 79.30k 80.40k 80.21k 80.14k | ||
18 | idea cbc 181.02k 209.37k 214.44k 214.36k 213.83k | ||
19 | rc2 cbc 161.52k 184.98k 187.99k 188.76k 189.05k | ||
20 | rc5-32/12 cbc 398.99k 582.91k 614.66k 626.07k 621.87k | ||
21 | blowfish cbc 296.38k 387.69k 405.50k 412.57k 410.05k | ||
22 | cast cbc 214.76k 260.63k 266.92k 268.63k 258.26k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0870s 0.0089s 11.5 112.4 | ||
25 | rsa 1024 bits 0.4881s 0.0295s 2.0 33.9 | ||
26 | rsa 2048 bits 3.2750s 0.1072s 0.3 9.3 | ||
27 | rsa 4096 bits 23.9833s 0.4093s 0.0 2.4 | ||
28 | sign verify sign/s verify/s | ||
29 | dsa 512 bits 0.0898s 0.1706s 11.1 5.9 | ||
30 | dsa 1024 bits 0.2847s 0.5565s 3.5 1.8 | ||
31 | dsa 2048 bits 1.0267s 2.0433s 1.0 0.5 | ||
32 | |||
diff --git a/src/lib/libssl/src/times/091/r4400.irx b/src/lib/libssl/src/times/091/r4400.irx new file mode 100644 index 0000000000..9b96ca110a --- /dev/null +++ b/src/lib/libssl/src/times/091/r4400.irx | |||
@@ -0,0 +1,32 @@ | |||
1 | R4400 16kI+16kD 200mhz, Irix 5.3 | ||
2 | |||
3 | SSLeay 0.9.0e 27-Apr-1998 | ||
4 | built on Sun Apr 26 07:26:05 PDT 1998 | ||
5 | options:bn(64,32) md2(int) rc4(ptr,int) des(ptr,risc2,16,long) idea(int) blowfish(ptr) | ||
6 | C flags:cc -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN | ||
7 | The 'numbers' are in 1000s of bytes per second processed. | ||
8 | type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | ||
9 | md2 79.80k 220.59k 298.01k 327.06k 338.60k | ||
10 | mdc2 262.74k 285.30k 289.16k 288.36k 288.49k | ||
11 | md5 930.35k 4167.13k 7167.91k 8678.23k 9235.86k | ||
12 | hmac(md5) 399.44k 2367.57k 5370.74k 7884.28k 9076.98k | ||
13 | sha1 550.96k 2488.17k 4342.76k 5362.50k 5745.40k | ||
14 | rmd160 424.58k 1752.83k 2909.67k 3486.08k 3702.89k | ||
15 | rc4 6687.79k 7834.63k 7962.61k 8035.65k 7915.28k | ||
16 | des cbc 1544.20k 1725.94k 1748.35k 1758.17k 1745.61k | ||
17 | des ede3 587.29k 637.75k 645.93k 643.17k 646.01k | ||
18 | idea cbc 1575.52k 1719.75k 1732.41k 1736.69k 1740.11k | ||
19 | rc2 cbc 1496.21k 1629.90k 1643.19k 1652.14k 1646.62k | ||
20 | rc5-32/12 cbc 3452.48k 4276.47k 4390.74k 4405.25k 4400.12k | ||
21 | blowfish cbc 2354.58k 3242.36k 3401.11k 3433.65k 3383.65k | ||
22 | cast cbc 1942.22k 2152.28k 2187.51k 2185.67k 2177.20k | ||
23 | sign verify sign/s verify/s | ||
24 | rsa 512 bits 0.0130s 0.0014s 76.9 729.8 | ||
25 | rsa 1024 bits 0.0697s 0.0043s 14.4 233.9 | ||
26 | rsa 2048 bits 0.4664s 0.0156s 2.1 64.0 | ||
27 | rsa 4096 bits 3.4067s 0.0586s 0.3 17.1 | ||
28 | sign verify sign/s verify/s | ||
29 | dsa 512 bits 0.0140s 0.0261s 71.4 38.4 | ||
30 | dsa 1024 bits 0.0417s 0.0794s 24.0 12.6 | ||
31 | dsa 2048 bits 0.1478s 0.2929s 6.8 3.4 | ||
32 | |||