Compare commits
2106 Commits
OpenSSL_0_
...
OpenSSL_1_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e614ec4769 | ||
|
|
a6b03f4138 | ||
|
|
809fa4cc59 | ||
|
|
463f448595 | ||
|
|
5cd0cf8cce | ||
|
|
49cb959494 | ||
|
|
783a73c47f | ||
|
|
99bf516908 | ||
|
|
a26c372cfc | ||
|
|
ed5ac22e5b | ||
|
|
3d11b8f896 | ||
|
|
70b2186e24 | ||
|
|
64ecdaeca9 | ||
|
|
4e74239df1 | ||
|
|
aaf35f11d7 | ||
|
|
093f5d2c15 | ||
|
|
7f1c086b21 | ||
|
|
77ea8c3002 | ||
|
|
ddcfc25a6d | ||
|
|
4d7b7c62c3 | ||
|
|
dd009fe655 | ||
|
|
73ba116e96 | ||
|
|
80b2ff978d | ||
|
|
7ce8c95d58 | ||
|
|
38b6e6c07b | ||
|
|
e4e949192b | ||
|
|
4e52b9845e | ||
|
|
e22b864846 | ||
|
|
b6af2c7e3e | ||
|
|
57db09906b | ||
|
|
4c78bc05c4 | ||
|
|
ef8e772805 | ||
|
|
54571ba004 | ||
|
|
237d7b6cae | ||
|
|
854a225a27 | ||
|
|
e39acc1c90 | ||
|
|
a0b76569b2 | ||
|
|
78625cac82 | ||
|
|
c28a9165f2 | ||
|
|
617298dca3 | ||
|
|
33ab2e31f3 | ||
|
|
bb7ccdfbe2 | ||
|
|
c836f8ef73 | ||
|
|
4df100935f | ||
|
|
2a0ff7ad20 | ||
|
|
c2a548a884 | ||
|
|
77202a85a0 | ||
|
|
73bfcf2226 | ||
|
|
2121f15daf | ||
|
|
b2cf7c6452 | ||
|
|
7587347bc4 | ||
|
|
ae3b4f2336 | ||
|
|
605b04f661 | ||
|
|
97132a0f8e | ||
|
|
30e5e39a3d | ||
|
|
2c618ab993 | ||
|
|
b5d5c0a21f | ||
|
|
f8ea4757cc | ||
|
|
0ed6b52687 | ||
|
|
a63bf2c53c | ||
|
|
b3f3407850 | ||
|
|
477fd4596f | ||
|
|
30b1b28aff | ||
|
|
46400c97a9 | ||
|
|
c558c99fd8 | ||
|
|
13c3a1defa | ||
|
|
aaa29f9e83 | ||
|
|
ede6ef5e08 | ||
|
|
0f529cbdc3 | ||
|
|
eb55b9fc19 | ||
|
|
7012d2a8fa | ||
|
|
8626230a02 | ||
|
|
c23632d3f1 | ||
|
|
3859d7ee78 | ||
|
|
d615bceb2d | ||
|
|
7ca1cfbac3 | ||
|
|
d8e8fc4803 | ||
|
|
57f39cc826 | ||
|
|
6489573224 | ||
|
|
079e00e646 | ||
|
|
5871ddb016 | ||
|
|
c7ba21493a | ||
|
|
8bf5001612 | ||
|
|
6ed9dfb23a | ||
|
|
7f62532030 | ||
|
|
c2c99e2860 | ||
|
|
8125d9f99c | ||
|
|
8e6925b0cd | ||
|
|
d7ecd42255 | ||
|
|
41b7619596 | ||
|
|
211655fcdd | ||
|
|
363bd0b48e | ||
|
|
60aee6ce15 | ||
|
|
bab534057b | ||
|
|
cec2af7510 | ||
|
|
6de3683908 | ||
|
|
fceac0bc74 | ||
|
|
792bbc2374 | ||
|
|
4a94003a51 | ||
|
|
ab4d689832 | ||
|
|
23b973e600 | ||
|
|
b3b201b6f7 | ||
|
|
d41c785d69 | ||
|
|
a370537bde | ||
|
|
2bd45dc94c | ||
|
|
121f9e743c | ||
|
|
0eab41fb78 | ||
|
|
8aa02e97a7 | ||
|
|
a68c7b9171 | ||
|
|
5cabcf96e7 | ||
|
|
85e878f224 | ||
|
|
fe1c7fecf1 | ||
|
|
0e941da6fa | ||
|
|
2d1cbc85c8 | ||
|
|
d195d60a5f | ||
|
|
e81695205e | ||
|
|
fe150ac25d | ||
|
|
bec45a35bb | ||
|
|
3b0ee0d2bf | ||
|
|
dde5b979d2 | ||
|
|
57a6ac7c4f | ||
|
|
9b9cb004f7 | ||
|
|
6ba71a7173 | ||
|
|
4ded7b44a8 | ||
|
|
1457619e13 | ||
|
|
ccf529928f | ||
|
|
5ceb595dfa | ||
|
|
44390fadc0 | ||
|
|
974d05a323 | ||
|
|
0f76640fba | ||
|
|
a11974180f | ||
|
|
5d48a66a6a | ||
|
|
63fc7f848d | ||
|
|
830457ce4f | ||
|
|
ea4d5005d9 | ||
|
|
9f03d0fc04 | ||
|
|
2140659b00 | ||
|
|
e527201f6b | ||
|
|
70531c147c | ||
|
|
75bbf6e14c | ||
|
|
702e742515 | ||
|
|
be01f79d3d | ||
|
|
bf785c9849 | ||
|
|
4db4882402 | ||
|
|
6786f52ada | ||
|
|
2e6a7b3efc | ||
|
|
63461b8db1 | ||
|
|
e77228ba11 | ||
|
|
5c60b1637a | ||
|
|
26397d2e8c | ||
|
|
85b2c0ce7f | ||
|
|
f826bf7798 | ||
|
|
3ebbe8853f | ||
|
|
ac71d81e84 | ||
|
|
a9dbe71ee0 | ||
|
|
ecd3370ba0 | ||
|
|
19d300d07c | ||
|
|
071920d9f6 | ||
|
|
1f6e9bce21 | ||
|
|
434ba03ca9 | ||
|
|
d88d941c87 | ||
|
|
9d44cd1642 | ||
|
|
1d4e879106 | ||
|
|
ae381fef5c | ||
|
|
48114ec952 | ||
|
|
7a76219774 | ||
|
|
2900fc8ae1 | ||
|
|
e9afa08cd1 | ||
|
|
bcaa36fd11 | ||
|
|
71702f7ed0 | ||
|
|
fd252de312 | ||
|
|
349e78e2e8 | ||
|
|
79bd20fd17 | ||
|
|
d0c3628834 | ||
|
|
31636a3ed1 | ||
|
|
f3b7bdadbc | ||
|
|
ad7159ea84 | ||
|
|
0b0dbb2cac | ||
|
|
12bf56c017 | ||
|
|
93c4ba07d7 | ||
|
|
36d46234c7 | ||
|
|
774b2fe700 | ||
|
|
6c901ae8c1 | ||
|
|
90c65a9838 | ||
|
|
5eba1ab346 | ||
|
|
4e50072d56 | ||
|
|
dd9557a8ba | ||
|
|
ed551cddf7 | ||
|
|
5aca224ecd | ||
|
|
dab6293482 | ||
|
|
1416aec60d | ||
|
|
aa8f38e49b | ||
|
|
8525377265 | ||
|
|
2fbc8a2aad | ||
|
|
6343829a39 | ||
|
|
2401debe83 | ||
|
|
5c61111bff | ||
|
|
bc645199c0 | ||
|
|
0a8c9f7de1 | ||
|
|
7b808412c9 | ||
|
|
706c5a4d35 | ||
|
|
0afc9f5bc0 | ||
|
|
2e5975285e | ||
|
|
5947ca0409 | ||
|
|
d40a1b865f | ||
|
|
f80921b6a6 | ||
|
|
9be5481297 | ||
|
|
8fe8bae15a | ||
|
|
f2c0230518 | ||
|
|
e6e0c9018c | ||
|
|
9619b730b4 | ||
|
|
2766515fca | ||
|
|
87d52468aa | ||
|
|
70d71f6185 | ||
|
|
5ee92a5ec1 | ||
|
|
c76fd290be | ||
|
|
d0a20cafa1 | ||
|
|
8da07655ee | ||
|
|
befe1fbc29 | ||
|
|
5e4430e70d | ||
|
|
4d6e1e4f29 | ||
|
|
122396f2db | ||
|
|
09a60c9833 | ||
|
|
b444ac3e6f | ||
|
|
f768be81d8 | ||
|
|
91173829db | ||
|
|
bfaead2b12 | ||
|
|
e6b4578540 | ||
|
|
0dd4850ee0 | ||
|
|
c650168a4f | ||
|
|
ea71ec1b11 | ||
|
|
f1455b3063 | ||
|
|
b764f82c64 | ||
|
|
436bdcff4e | ||
|
|
27f864e8ac | ||
|
|
80aa9cc985 | ||
|
|
ab7e09f59b | ||
|
|
e9eda23ae6 | ||
|
|
6caa4edd3e | ||
|
|
ac786241a2 | ||
|
|
df0681e554 | ||
|
|
e19106f5fb | ||
|
|
ae7ec4c71d | ||
|
|
020d67fb89 | ||
|
|
3fdc6c11aa | ||
|
|
dcf6b3e9b6 | ||
|
|
606f6c477a | ||
|
|
1581f82243 | ||
|
|
0d6f9c7181 | ||
|
|
640b86cb24 | ||
|
|
111a6e2a23 | ||
|
|
d764e7edb8 | ||
|
|
aff8259510 | ||
|
|
256b3e9c5f | ||
|
|
762a2e3cab | ||
|
|
28b6d5020e | ||
|
|
d5bbead449 | ||
|
|
0f7efbc859 | ||
|
|
a7ae4abfd9 | ||
|
|
30661b1b01 | ||
|
|
1ea6472e60 | ||
|
|
b8dfde2a36 | ||
|
|
570006f3a2 | ||
|
|
babb379849 | ||
|
|
6665ef303e | ||
|
|
7e7af0bc51 | ||
|
|
87d3a0cd90 | ||
|
|
1e369b375e | ||
|
|
6bf24568bc | ||
|
|
837f2fc7a4 | ||
|
|
1a489c9af1 | ||
|
|
8c864e5466 | ||
|
|
be5707c820 | ||
|
|
4a4f3071ec | ||
|
|
d7235a9d68 | ||
|
|
fa0f834c20 | ||
|
|
96562f2fb3 | ||
|
|
b9790c1cd4 | ||
|
|
fcbdde0dfe | ||
|
|
51ec776b7d | ||
|
|
e65bcbcef0 | ||
|
|
e710de12ce | ||
|
|
db99c52509 | ||
|
|
f8d6be3f81 | ||
|
|
d493899579 | ||
|
|
492279f6f3 | ||
|
|
3ad74edce8 | ||
|
|
2b7b1cad10 | ||
|
|
43048d13c8 | ||
|
|
e8da6a1d0f | ||
|
|
305514000c | ||
|
|
0702150f53 | ||
|
|
a0ee081515 | ||
|
|
d43c4497ce | ||
|
|
4b96839f06 | ||
|
|
249a77f5fb | ||
|
|
d0fff69dc9 | ||
|
|
8c9bd89338 | ||
|
|
2e415778f2 | ||
|
|
1cbf663a6c | ||
|
|
9be8035b11 | ||
|
|
2ecd2edede | ||
|
|
9d84d4ed5e | ||
|
|
2e0c7db950 | ||
|
|
002e66c0e8 | ||
|
|
e9746e03ee | ||
|
|
ab9c689ad3 | ||
|
|
4c3296960d | ||
|
|
96826bfc84 | ||
|
|
eb1aa135d8 | ||
|
|
99649b5990 | ||
|
|
6d6c47980e | ||
|
|
474b3b1cc8 | ||
|
|
3e727a3b37 | ||
|
|
a9ff742e42 | ||
|
|
787287af40 | ||
|
|
5cbd203302 | ||
|
|
592a207b94 | ||
|
|
6bcbac0abb | ||
|
|
4c048211f1 | ||
|
|
b94551e823 | ||
|
|
9b634c9b37 | ||
|
|
5b331ab77a | ||
|
|
dd6f479ea8 | ||
|
|
87facba376 | ||
|
|
e4662fdb62 | ||
|
|
efa73a77e4 | ||
|
|
89778b7f3f | ||
|
|
c79c5a256b | ||
|
|
9960bdc6fa | ||
|
|
23dcb447ff | ||
|
|
39c63e162c | ||
|
|
34d05a4023 | ||
|
|
dcc0c29876 | ||
|
|
db50661fce | ||
|
|
f9afd9f861 | ||
|
|
d4cdbab99b | ||
|
|
5f834ab123 | ||
|
|
8528128b2a | ||
|
|
a0f3679b52 | ||
|
|
8228fd89fc | ||
|
|
869eb9e767 | ||
|
|
6c2878344f | ||
|
|
2836cb3816 | ||
|
|
46d4782888 | ||
|
|
a01a351cc2 | ||
|
|
adb92d56eb | ||
|
|
ce04f91951 | ||
|
|
6cb9fca70d | ||
|
|
ec0bfca7e7 | ||
|
|
1cd504e7be | ||
|
|
11f3cee93b | ||
|
|
6bf79e30ea | ||
|
|
7555c9337f | ||
|
|
ffc2b3e927 | ||
|
|
9ab89286a2 | ||
|
|
5329130333 | ||
|
|
e1451bb51d | ||
|
|
0b44c26d78 | ||
|
|
4db9677bac | ||
|
|
1381bf90f4 | ||
|
|
e0f7b87227 | ||
|
|
985de86340 | ||
|
|
b814c01a76 | ||
|
|
c07a126fb2 | ||
|
|
09a6e19431 | ||
|
|
863d447e0b | ||
|
|
5ce278a77b | ||
|
|
37cf49a3df | ||
|
|
f79262e94b | ||
|
|
7d537d4fc7 | ||
|
|
ca89fc1fb4 | ||
|
|
59d2d48f64 | ||
|
|
b3c8dd4eab | ||
|
|
45d3767d28 | ||
|
|
8671b89860 | ||
|
|
4f7f411719 | ||
|
|
eac442ddd3 | ||
|
|
55bef26d8a | ||
|
|
2aa2a5775f | ||
|
|
c451bd828f | ||
|
|
8ecfbedd85 | ||
|
|
c173fce4e2 | ||
|
|
953174f46e | ||
|
|
c621c7e432 | ||
|
|
2bbe8f9129 | ||
|
|
4be0a5d429 | ||
|
|
bdfe932dca | ||
|
|
3fc59c8406 | ||
|
|
c61915c659 | ||
|
|
368888bcb6 | ||
|
|
eafd6e5110 | ||
|
|
05935c47b2 | ||
|
|
d8bd55a364 | ||
|
|
841c91d6e4 | ||
|
|
a4792168ec | ||
|
|
90b96776cd | ||
|
|
408f906592 | ||
|
|
7a18ecb2df | ||
|
|
174c86a216 | ||
|
|
c6ddacf7f8 | ||
|
|
ab3eafd5b5 | ||
|
|
dd043cd501 | ||
|
|
a75c662fd1 | ||
|
|
83574cf808 | ||
|
|
2cd81830ef | ||
|
|
e194fe8f47 | ||
|
|
40a706286f | ||
|
|
c6f6c380c7 | ||
|
|
8f395e0f4d | ||
|
|
595852f3b5 | ||
|
|
0a56761f19 | ||
|
|
220903f92e | ||
|
|
3c1d6bbc92 | ||
|
|
cab14b9803 | ||
|
|
17a4a4dff8 | ||
|
|
c2c2e7a438 | ||
|
|
d18ef847f4 | ||
|
|
5c0d90a699 | ||
|
|
f434730524 | ||
|
|
65fd877515 | ||
|
|
64ddafc6b6 | ||
|
|
781f0a9bb5 | ||
|
|
3de5a7745f | ||
|
|
94fd382f8b | ||
|
|
4bd4afa34e | ||
|
|
148bb9515c | ||
|
|
51e00db226 | ||
|
|
a92ebf2290 | ||
|
|
f49c687507 | ||
|
|
8b99c79fae | ||
|
|
718f8f7a9e | ||
|
|
e718520cc5 | ||
|
|
4f46934269 | ||
|
|
fabe640f5e | ||
|
|
19048b5c8d | ||
|
|
156ee88285 | ||
|
|
c386f8ac38 | ||
|
|
4a954b56c9 | ||
|
|
d05a474556 | ||
|
|
8a2062fefe | ||
|
|
2f63ad5b35 | ||
|
|
c78bba2343 | ||
|
|
d26c905c67 | ||
|
|
8fcc9caecc | ||
|
|
e7b097f558 | ||
|
|
5ee6f96cea | ||
|
|
dc634aff25 | ||
|
|
8e3b2dbb31 | ||
|
|
ba6f95e81b | ||
|
|
281066cb03 | ||
|
|
830b8877ba | ||
|
|
9912ab6770 | ||
|
|
299ab428ce | ||
|
|
e6ef05d5f3 | ||
|
|
0f401ff08b | ||
|
|
5558128541 | ||
|
|
e33c72dfc6 | ||
|
|
44a877aa88 | ||
|
|
6b6fe3d8e4 | ||
|
|
4c1a6e004a | ||
|
|
6e6ada18c6 | ||
|
|
b35a131069 | ||
|
|
1728756255 | ||
|
|
a12a6b9962 | ||
|
|
852bd35065 | ||
|
|
a5db50d005 | ||
|
|
f3eba36c4c | ||
|
|
529d329ce1 | ||
|
|
47a6d388c7 | ||
|
|
c02b6b6b21 | ||
|
|
3b28bc9910 | ||
|
|
fc003bcecb | ||
|
|
38d3a73808 | ||
|
|
73b3c2d861 | ||
|
|
4670e00ff5 | ||
|
|
287df2fe49 | ||
|
|
e0fbd07309 | ||
|
|
eaee098e1f | ||
|
|
43d9e9d07f | ||
|
|
c420fab52b | ||
|
|
6469a1fda3 | ||
|
|
7f50d9a4b0 | ||
|
|
da6ea110b5 | ||
|
|
fb777e1f79 | ||
|
|
360bb61d86 | ||
|
|
847e551f39 | ||
|
|
d4122504a2 | ||
|
|
2c4226c42b | ||
|
|
86173db853 | ||
|
|
9034c56c6c | ||
|
|
e33ffaca12 | ||
|
|
853eae51e0 | ||
|
|
b4be380889 | ||
|
|
ff80280b01 | ||
|
|
e45641bd17 | ||
|
|
d5a37b0293 | ||
|
|
6819050722 | ||
|
|
88db4e6b9e | ||
|
|
be86dd85e4 | ||
|
|
3df9357103 | ||
|
|
992e92a46e | ||
|
|
3247812e34 | ||
|
|
a5cdb7d5bd | ||
|
|
4a6bb116c4 | ||
|
|
2819ffb520 | ||
|
|
964c7e8f6d | ||
|
|
f6a45ac5ac | ||
|
|
2e86f0d8d7 | ||
|
|
e2a29d49ca | ||
|
|
b99674103d | ||
|
|
41f81a0143 | ||
|
|
36309aa2be | ||
|
|
eb9d8d8cd4 | ||
|
|
f7ccba3edf | ||
|
|
eb77ebe26c | ||
|
|
f5e2354c9d | ||
|
|
f4cc56f494 | ||
|
|
be86c7fc87 | ||
|
|
6205171362 | ||
|
|
ab568a17cf | ||
|
|
fe591284be | ||
|
|
7122aafce5 | ||
|
|
5ffba305c8 | ||
|
|
ceee538af5 | ||
|
|
054307e7ed | ||
|
|
8cd358bef8 | ||
|
|
eeb9cdfc94 | ||
|
|
16fe5f8b50 | ||
|
|
041e7f2eee | ||
|
|
ab12438030 | ||
|
|
c220e58f9e | ||
|
|
6bd05ad472 | ||
|
|
90ec4c0af0 | ||
|
|
52e9196d7e | ||
|
|
f7e85c371e | ||
|
|
f5cbf8fbe1 | ||
|
|
7d7e640e0b | ||
|
|
e4f0e40eac | ||
|
|
6e3bc4f073 | ||
|
|
c36e936b60 | ||
|
|
761ffa729f | ||
|
|
1e26a8baed | ||
|
|
7c337e00d2 | ||
|
|
7e8481afd1 | ||
|
|
1266cec2fe | ||
|
|
3667a6f5b3 | ||
|
|
deb21fbae9 | ||
|
|
057039f782 | ||
|
|
d7c738a09a | ||
|
|
a981e2adbc | ||
|
|
88fce8539f | ||
|
|
4f1aa191b3 | ||
|
|
e540d1cd77 | ||
|
|
fd47c36136 | ||
|
|
d9f5f07e28 | ||
|
|
b31db9ee96 | ||
|
|
1021f9aa5e | ||
|
|
320bfc1be7 | ||
|
|
b820455c6e | ||
|
|
5c4436c977 | ||
|
|
a78a03744d | ||
|
|
a329fdde51 | ||
|
|
31d3c84422 | ||
|
|
afff52a3ba | ||
|
|
8931b30d84 | ||
|
|
27dc105f51 | ||
|
|
3964038fe6 | ||
|
|
b510d77535 | ||
|
|
56c7754cab | ||
|
|
92e2c81aff | ||
|
|
a70a49a018 | ||
|
|
61b05a0025 | ||
|
|
7c9882eb24 | ||
|
|
0d7f6fc76a | ||
|
|
a9e96d724d | ||
|
|
d9e427f09c | ||
|
|
a23e3dbee1 | ||
|
|
400ca0e467 | ||
|
|
9536b85c07 | ||
|
|
4d318c79b2 | ||
|
|
1ad90a916b | ||
|
|
8ab9025e31 | ||
|
|
9e5df8e448 | ||
|
|
96d13fe62b | ||
|
|
089458b096 | ||
|
|
7c1722c60d | ||
|
|
c020c3213e | ||
|
|
930875ef77 | ||
|
|
3b979c5450 | ||
|
|
339ad7ce73 | ||
|
|
676517e08e | ||
|
|
52108cecc0 | ||
|
|
addd641f3a | ||
|
|
f63e4be392 | ||
|
|
ca55d11f84 | ||
|
|
abe7f8b457 | ||
|
|
a078befcbe | ||
|
|
f12797a447 | ||
|
|
fa8e921f66 | ||
|
|
4287ade5b4 | ||
|
|
7398053149 | ||
|
|
4d1f3f7a6c | ||
|
|
aff686df91 | ||
|
|
637f90621d | ||
|
|
6d0624aca3 | ||
|
|
085ea80371 | ||
|
|
ab0ff06205 | ||
|
|
79eeb47031 | ||
|
|
9911b7496f | ||
|
|
3dbd453f41 | ||
|
|
731339627f | ||
|
|
26e71a1850 | ||
|
|
db01bad30f | ||
|
|
6ff28e017d | ||
|
|
4664eb5230 | ||
|
|
744ecaa5b6 | ||
|
|
76d761ccd3 | ||
|
|
eef0c1f34c | ||
|
|
82a2431327 | ||
|
|
96fc37f145 | ||
|
|
3a87756fed | ||
|
|
c8ec4a1b0b | ||
|
|
699e1a3a82 | ||
|
|
64214a2183 | ||
|
|
0fcb905b0d | ||
|
|
4be63cfb55 | ||
|
|
ca64056836 | ||
|
|
df77428443 | ||
|
|
3e583572b3 | ||
|
|
43d8f27dca | ||
|
|
b045299113 | ||
|
|
13baedc55b | ||
|
|
9400d9ac83 | ||
|
|
341e18b497 | ||
|
|
339a1820fd | ||
|
|
cec2538ca9 | ||
|
|
28f7e60d47 | ||
|
|
544b82e493 | ||
|
|
8789af8db8 | ||
|
|
1ad6a1b5e9 | ||
|
|
6e150083bb | ||
|
|
98d8baabbd | ||
|
|
c1d2e00ec5 | ||
|
|
ad8bd4ece8 | ||
|
|
2f0550c4c1 | ||
|
|
98057eba77 | ||
|
|
097f9d8c52 | ||
|
|
60447e59ef | ||
|
|
94e6ae7a69 | ||
|
|
f670738987 | ||
|
|
b6a338cb29 | ||
|
|
4726fcfc25 | ||
|
|
15bd07e923 | ||
|
|
fdf355878c | ||
|
|
da989402f2 | ||
|
|
10f0c85cfc | ||
|
|
70ba4ee5d5 | ||
|
|
31f528b15d | ||
|
|
86140095b5 | ||
|
|
8e1d3ba50e | ||
|
|
37210fe7e2 | ||
|
|
0e1dba934f | ||
|
|
11d01d371f | ||
|
|
76c3ef7446 | ||
|
|
659f7f3168 | ||
|
|
3d3bf9c730 | ||
|
|
4017e8706c | ||
|
|
3ce54f35b3 | ||
|
|
ebc06fba67 | ||
|
|
e979c039f9 | ||
|
|
90acf770b5 | ||
|
|
0d89e45690 | ||
|
|
1948c7e6dd | ||
|
|
a6db6a0070 | ||
|
|
fdb2fe6dc2 | ||
|
|
a2115c5d17 | ||
|
|
4fe55663df | ||
|
|
ae1552ee99 | ||
|
|
debf380122 | ||
|
|
ddb038d349 | ||
|
|
b7cc9dffac | ||
|
|
e1b81fed33 | ||
|
|
5d58f1bbfe | ||
|
|
fcd1cb666c | ||
|
|
4f19a9cb9f | ||
|
|
0023adb47a | ||
|
|
81fe8dcfe1 | ||
|
|
d527834a1d | ||
|
|
89c333e3e5 | ||
|
|
0d97d00b6c | ||
|
|
e7adda52b3 | ||
|
|
7432d073af | ||
|
|
04e2ab2c02 | ||
|
|
b7fcc08976 | ||
|
|
7722e53f12 | ||
|
|
2c3ee16272 | ||
|
|
19112771d6 | ||
|
|
4c7c5ff667 | ||
|
|
d7e915616d | ||
|
|
67c8e7f414 | ||
|
|
74eb3e0914 | ||
|
|
79fe664f19 | ||
|
|
5f0477f47b | ||
|
|
7bbce69721 | ||
|
|
870d6541f2 | ||
|
|
02c27b113c | ||
|
|
86d4bc3aea | ||
|
|
761772d7e1 | ||
|
|
54ef01b54b | ||
|
|
9311c4421a | ||
|
|
aaa4f448cf | ||
|
|
5f8b524619 | ||
|
|
08111768a2 | ||
|
|
1b827d7b6f | ||
|
|
a005fb019f | ||
|
|
b5e5760d01 | ||
|
|
cf2bc94e5c | ||
|
|
26f0cf69d3 | ||
|
|
61836c1b70 | ||
|
|
2a1b0c8d65 | ||
|
|
75a8e30f4f | ||
|
|
716b87a026 | ||
|
|
08b229e13f | ||
|
|
a529a80108 | ||
|
|
c81898cbc4 | ||
|
|
330591fdfc | ||
|
|
c7503f5240 | ||
|
|
eff371c866 | ||
|
|
8dc899dee4 | ||
|
|
cc3d7bd0fc | ||
|
|
7df4c86bdd | ||
|
|
c313e32a8b | ||
|
|
77519b51db | ||
|
|
1a01868e35 | ||
|
|
563d3e5948 | ||
|
|
1187ee7dad | ||
|
|
7c5921e736 | ||
|
|
399f94bfb4 | ||
|
|
1fa29843fa | ||
|
|
ee0449b17c | ||
|
|
e28eddc51f | ||
|
|
d82a612a90 | ||
|
|
e7e8f4b333 | ||
|
|
a6fbcb4220 | ||
|
|
8164032a2e | ||
|
|
a5804a750b | ||
|
|
81025661a9 | ||
|
|
4ece7eb6f4 | ||
|
|
0bb01b7df0 | ||
|
|
1c56e95e28 | ||
|
|
446124a258 | ||
|
|
583b0b67ab | ||
|
|
584502d4a0 | ||
|
|
d8803d5ae6 | ||
|
|
acfb4b5b9f | ||
|
|
0ddd3ea217 | ||
|
|
6a8517f274 | ||
|
|
94d511cdbd | ||
|
|
ec5d747328 | ||
|
|
c6880b2533 | ||
|
|
eb6eb3e630 | ||
|
|
ae4eb3c9ac | ||
|
|
ba0e826d83 | ||
|
|
f3fef74b09 | ||
|
|
014f62b649 | ||
|
|
55eab3b74b | ||
|
|
dc0fcb98df | ||
|
|
d24a9c8f5a | ||
|
|
42fe218b9f | ||
|
|
956006b741 | ||
|
|
167066fed4 | ||
|
|
525de5d335 | ||
|
|
367eb1f125 | ||
|
|
3444961787 | ||
|
|
710069c19e | ||
|
|
ddd3a617ca | ||
|
|
6434abbfc6 | ||
|
|
e45c100762 | ||
|
|
5a22a8e7f9 | ||
|
|
d6c764573c | ||
|
|
9d35d08ab6 | ||
|
|
f7b61702a0 | ||
|
|
983180bb8b | ||
|
|
cdb0392159 | ||
|
|
1891f5b395 | ||
|
|
a3963619f6 | ||
|
|
34994068a4 | ||
|
|
afaad0ada6 | ||
|
|
05f9cb3b77 | ||
|
|
1988a456a7 | ||
|
|
69216cc5a5 | ||
|
|
2cf6fa4c8b | ||
|
|
a61710b868 | ||
|
|
20f7563f3d | ||
|
|
3df2eff4bd | ||
|
|
a415ebd026 | ||
|
|
52ee3d01ae | ||
|
|
e59f992be6 | ||
|
|
8bae7722a2 | ||
|
|
0d7dba92c8 | ||
|
|
ce1390aedc | ||
|
|
287a9ee76e | ||
|
|
96b0f6c16d | ||
|
|
e1612ea59d | ||
|
|
71f4ea44eb | ||
|
|
35295bdbee | ||
|
|
aa8d6f3e86 | ||
|
|
62aa5dd415 | ||
|
|
673c55a2fe | ||
|
|
949ce10e88 | ||
|
|
8dee823e61 | ||
|
|
5d86336746 | ||
|
|
5b89f78a89 | ||
|
|
85a5668dba | ||
|
|
c943ca5404 | ||
|
|
1c7f8707fd | ||
|
|
a21c46e70b | ||
|
|
f3c26535ad | ||
|
|
2329694222 | ||
|
|
206a975752 | ||
|
|
9677bf0f30 | ||
|
|
6d6496ed52 | ||
|
|
7d9cf7c0bb | ||
|
|
55525742f4 | ||
|
|
c693b5a55c | ||
|
|
6b6443dead | ||
|
|
54b5fd537f | ||
|
|
0b99d4f1d1 | ||
|
|
3c07d3a3d3 | ||
|
|
1d1a64653c | ||
|
|
297e6f1917 | ||
|
|
b948e2c59e | ||
|
|
18096abb29 | ||
|
|
0aa08a2e34 | ||
|
|
f20af72312 | ||
|
|
7ef643360d | ||
|
|
76c828c627 | ||
|
|
281cfff026 | ||
|
|
64a5c5d1be | ||
|
|
7b8b797375 | ||
|
|
a1a382dbc9 | ||
|
|
19f6c524bf | ||
|
|
8dbdf6314c | ||
|
|
9c54e18bf0 | ||
|
|
9aba74e55a | ||
|
|
e4317d2031 | ||
|
|
61775daf00 | ||
|
|
86d8f3ee19 | ||
|
|
cb1fbf9f63 | ||
|
|
3005764c18 | ||
|
|
b1e8b4e65d | ||
|
|
c6149e2f02 | ||
|
|
aa5c99fa01 | ||
|
|
9c200f5471 | ||
|
|
ec06417d52 | ||
|
|
a4346646f1 | ||
|
|
a70c09e2a2 | ||
|
|
0f9e0abbee | ||
|
|
e77dbf325f | ||
|
|
f03620ea15 | ||
|
|
47b2e238e5 | ||
|
|
ad35cdac74 | ||
|
|
4eba5d8c86 | ||
|
|
e69adea539 | ||
|
|
9660cbcd6b | ||
|
|
9c9c83ccb9 | ||
|
|
1d42fb5f4a | ||
|
|
e119769480 | ||
|
|
b2dba9bf1f | ||
|
|
932cc129ee | ||
|
|
1a42839ba7 | ||
|
|
232a938c75 | ||
|
|
69ab085290 | ||
|
|
5f09d0ecc2 | ||
|
|
76b46e7707 | ||
|
|
6217896145 | ||
|
|
ee7ca0941a | ||
|
|
f8492ffeaa | ||
|
|
308595638a | ||
|
|
0bd8d6e2e1 | ||
|
|
160065c5bb | ||
|
|
ae0d6e3e36 | ||
|
|
6fa8a01c72 | ||
|
|
3f6916cf29 | ||
|
|
a4470ae7b2 | ||
|
|
251718e4c1 | ||
|
|
c504a5e783 | ||
|
|
f6fb2c95ef | ||
|
|
708311267a | ||
|
|
cdd1d7a618 | ||
|
|
2f324768b2 | ||
|
|
6ef18c21c9 | ||
|
|
b38c0add30 | ||
|
|
b900df5258 | ||
|
|
a2a54ffc5f | ||
|
|
20c04a13e6 | ||
|
|
a291745eeb | ||
|
|
0862caf27e | ||
|
|
cb1bab1a04 | ||
|
|
96afc1cfd5 | ||
|
|
24a8c25ab5 | ||
|
|
d1e7d1d96c | ||
|
|
18f547734e | ||
|
|
be3b365a34 | ||
|
|
b2b2dafc28 | ||
|
|
14ab6cdd69 | ||
|
|
eeec060df0 | ||
|
|
0efb7b1eea | ||
|
|
f000f705ea | ||
|
|
2749cc1ede | ||
|
|
a44e4f2cf8 | ||
|
|
30b10f947a | ||
|
|
731c6802d7 | ||
|
|
4cfb986f27 | ||
|
|
9cfc8a9d5c | ||
|
|
18327cd0e4 | ||
|
|
2022cfe07e | ||
|
|
47b71e6ee9 | ||
|
|
74633553a9 | ||
|
|
376bf1d4aa | ||
|
|
d318fb79d2 | ||
|
|
0cc361f3e7 | ||
|
|
baecb96e8a | ||
|
|
6181f5e404 | ||
|
|
d952c79a7b | ||
|
|
3dfb6b3353 | ||
|
|
48bd505c0b | ||
|
|
ab2d91bd6b | ||
|
|
3b2eead381 | ||
|
|
f3d2a9db09 | ||
|
|
8bbf6ac010 | ||
|
|
38e952e8ae | ||
|
|
fa9fed1c3a | ||
|
|
f6301f6888 | ||
|
|
44907e6064 | ||
|
|
907e99623c | ||
|
|
231671b9ff | ||
|
|
4f1a0b2c21 | ||
|
|
260c497cdd | ||
|
|
313fce7b61 | ||
|
|
2f877235a3 | ||
|
|
309fa55bbb | ||
|
|
4b8747e440 | ||
|
|
2ff7a0edef | ||
|
|
442cbb062d | ||
|
|
c971ca4c86 | ||
|
|
9babf3929b | ||
|
|
2ec0be9e77 | ||
|
|
c2d1c2d319 | ||
|
|
162f677def | ||
|
|
2875462425 | ||
|
|
a1d915990b | ||
|
|
b002265ee3 | ||
|
|
bd31fb2145 | ||
|
|
b506821d43 | ||
|
|
4bfb49b3cf | ||
|
|
9981a51e42 | ||
|
|
ebb326afe6 | ||
|
|
0d1aa74d6f | ||
|
|
0f32c841a6 | ||
|
|
41a8d5167f | ||
|
|
8f41e4fa4d | ||
|
|
de50494505 | ||
|
|
3d1def0132 | ||
|
|
0a29f5110d | ||
|
|
8b71d35458 | ||
|
|
760e353528 | ||
|
|
3627fedbea | ||
|
|
bbb5cf05db | ||
|
|
ebb01b84b8 | ||
|
|
a0d48e7e7e | ||
|
|
1fcfa22222 | ||
|
|
c9fb4e2c8d | ||
|
|
6e7ca5e1eb | ||
|
|
954b274789 | ||
|
|
0d5ac5a738 | ||
|
|
c209a35820 | ||
|
|
dd2b6750db | ||
|
|
4bb89bca9e | ||
|
|
ac63b8370e | ||
|
|
882d29dd87 | ||
|
|
ee373e7f19 | ||
|
|
8d72476e2b | ||
|
|
02756aa8ba | ||
|
|
072dfb9e4e | ||
|
|
0636c39bb1 | ||
|
|
a2e623c011 | ||
|
|
aa79dd6895 | ||
|
|
60cad2caed | ||
|
|
114c9c36b1 | ||
|
|
fd5bc65cc8 | ||
|
|
e041863905 | ||
|
|
0a05123a6c | ||
|
|
2afe316721 | ||
|
|
7e69565fe6 | ||
|
|
ccae144d62 | ||
|
|
5d5ca32fa1 | ||
|
|
52b8dad8ec | ||
|
|
cc684e330b | ||
|
|
85c6749216 | ||
|
|
30e5e8aca5 | ||
|
|
b900a6b42f | ||
|
|
15780a1ea0 | ||
|
|
92ada7cc52 | ||
|
|
53ca4761cc | ||
|
|
52cfa39716 | ||
|
|
b3bad17d1a | ||
|
|
feaaf1dbea | ||
|
|
82bf227e91 | ||
|
|
8807a2dfc4 | ||
|
|
bcb38217c4 | ||
|
|
af32f9fdda | ||
|
|
357d5de5b9 | ||
|
|
0501f02b06 | ||
|
|
689f9faba4 | ||
|
|
82686bdcaa | ||
|
|
14b1d089b6 | ||
|
|
a296239bdd | ||
|
|
0b0896cdd2 | ||
|
|
2d3e956ae0 | ||
|
|
36b7c06975 | ||
|
|
42182852f5 | ||
|
|
560b79cbff | ||
|
|
a6d799d705 | ||
|
|
64aecc6720 | ||
|
|
8ac40b4dea | ||
|
|
43b8fe1cd0 | ||
|
|
39d764ed58 | ||
|
|
a6ebe229e3 | ||
|
|
5c914f204a | ||
|
|
8876e58f34 | ||
|
|
7321a84d4c | ||
|
|
bb11c28246 | ||
|
|
8d9f136d06 | ||
|
|
00b4e083fd | ||
|
|
4cfe3df1f5 | ||
|
|
8f2d60ec26 | ||
|
|
123b23fa95 | ||
|
|
423a5d54a1 | ||
|
|
8bbf6bcf17 | ||
|
|
ea46f5e0e5 | ||
|
|
7f6c848242 | ||
|
|
559d50138f | ||
|
|
11d8cdc6ad | ||
|
|
e49978dafe | ||
|
|
e1d9e533b5 | ||
|
|
f946dd7198 | ||
|
|
1702c8c4bf | ||
|
|
afda1385bd | ||
|
|
fec38ca4ed | ||
|
|
ec1edeb5fa | ||
|
|
b0ec114685 | ||
|
|
c92da5a605 | ||
|
|
06e2dd037e | ||
|
|
34f0a19309 | ||
|
|
772e3c07b4 | ||
|
|
360ff3cf58 | ||
|
|
5dfe910023 | ||
|
|
91b73acb19 | ||
|
|
87d3af6475 | ||
|
|
98c1509f34 | ||
|
|
98939a05b6 | ||
|
|
d28134b8f3 | ||
|
|
8583eba015 | ||
|
|
5894b98f99 | ||
|
|
5de3a0ff3d | ||
|
|
10ca15f3fa | ||
|
|
da736b31b2 | ||
|
|
fa9ac569b8 | ||
|
|
10a10fb834 | ||
|
|
0f997d0dc3 | ||
|
|
b0eedd77f6 | ||
|
|
502aef5aaf | ||
|
|
9f8cfb1c62 | ||
|
|
c163b5f7a0 | ||
|
|
20da8b8f90 | ||
|
|
ae93dc13ab | ||
|
|
77e87e6148 | ||
|
|
a6e700e665 | ||
|
|
4d7aff707e | ||
|
|
d137b56a5b | ||
|
|
7806f3dd4b | ||
|
|
1e24b3a09e | ||
|
|
73b979e601 | ||
|
|
ebae8092cb | ||
|
|
2e21922eb6 | ||
|
|
1c3d2b94be | ||
|
|
48d2335d73 | ||
|
|
96ea4ae91c | ||
|
|
7af5726108 | ||
|
|
69d4646f4e | ||
|
|
8bd11f3ec2 | ||
|
|
47a9d527ab | ||
|
|
d9907c972b | ||
|
|
1444bfb2c8 | ||
|
|
14975faa60 | ||
|
|
3f12464861 | ||
|
|
de12116417 | ||
|
|
28b987aec9 | ||
|
|
fb596f3bb7 | ||
|
|
84948b39df | ||
|
|
cf32ad7fe3 | ||
|
|
ad0e439604 | ||
|
|
5456583294 | ||
|
|
f1845cbee8 | ||
|
|
51cc37b69d | ||
|
|
ff1b10dca1 | ||
|
|
ebeb17e2e0 | ||
|
|
137de5b157 | ||
|
|
224328e404 | ||
|
|
1611b9ed80 | ||
|
|
8a4af56fc6 | ||
|
|
05cfe06607 | ||
|
|
b37a68cc8f | ||
|
|
a2688c872d | ||
|
|
5b50f99e1e | ||
|
|
b8994b6130 | ||
|
|
d7917c584a | ||
|
|
544d845585 | ||
|
|
a6efc2d1b8 | ||
|
|
3189772e07 | ||
|
|
08a638237d | ||
|
|
d8cdd1567f | ||
|
|
cbfb39d1be | ||
|
|
a4d64c7f49 | ||
|
|
1e7b6c029c | ||
|
|
3634d7e97a | ||
|
|
53d7efea76 | ||
|
|
002684d693 | ||
|
|
c038b8aa56 | ||
|
|
c5f17d45c1 | ||
|
|
31439046e0 | ||
|
|
11d0ebc841 | ||
|
|
cecfdbf72d | ||
|
|
f0f61f6d0d | ||
|
|
d68ff71004 | ||
|
|
591e85e928 | ||
|
|
c69ed6ea39 | ||
|
|
55a08fac68 | ||
|
|
2fc281d01f | ||
|
|
d326582cab | ||
|
|
f4c630abb3 | ||
|
|
c2cccfc585 | ||
|
|
3c5406b35c | ||
|
|
5e3225cc44 | ||
|
|
61118caa86 | ||
|
|
348be7ec60 | ||
|
|
3ff55e9680 | ||
|
|
cbb92dfaf0 | ||
|
|
019bfef899 | ||
|
|
0709249f4c | ||
|
|
89c9c66736 | ||
|
|
347ed3b93c | ||
|
|
5b73c3609b | ||
|
|
eebeb52b29 | ||
|
|
6ec6cfc767 | ||
|
|
44181ea836 | ||
|
|
c80c7bf999 | ||
|
|
ffa5ebf3f4 | ||
|
|
926c41bd29 | ||
|
|
1182301ca7 | ||
|
|
010fa0b331 | ||
|
|
4ca7d975af | ||
|
|
b774111020 | ||
|
|
78260d890b | ||
|
|
4b67fefe5a | ||
|
|
3a8012cbf2 | ||
|
|
a53cdc5b08 | ||
|
|
5d20c4fb35 | ||
|
|
a04549cc75 | ||
|
|
bc7535bc7f | ||
|
|
83357f047d | ||
|
|
b6699c3f07 | ||
|
|
016bc5ceb3 | ||
|
|
ed65f7dc34 | ||
|
|
4d50a2b4d6 | ||
|
|
7f4301668f | ||
|
|
29a1bb07e5 | ||
|
|
99e9a90081 | ||
|
|
715020e334 | ||
|
|
2952886010 | ||
|
|
613e7d2a65 | ||
|
|
6a2c471077 | ||
|
|
b79aa05e3b | ||
|
|
500b5a181d | ||
|
|
2b8a5406f9 | ||
|
|
2f35ae90fe | ||
|
|
0fca32a7aa | ||
|
|
02c9b66a6c | ||
|
|
539d4c1030 | ||
|
|
aa6d1a0c19 | ||
|
|
777c47acbe | ||
|
|
5776c3c4c6 | ||
|
|
0c3d346cb7 | ||
|
|
1c23bc5670 | ||
|
|
8ea975d070 | ||
|
|
6c69aa532e | ||
|
|
6264c9b2a9 | ||
|
|
fc92414273 | ||
|
|
53154d71c3 | ||
|
|
8cebec9802 | ||
|
|
0209d1605d | ||
|
|
c8a0d0aaf9 | ||
|
|
0cc46efa09 | ||
|
|
22c268e6c9 | ||
|
|
dd0514e2cc | ||
|
|
f6e7d01450 | ||
|
|
edc540211c | ||
|
|
2eed3a3cc8 | ||
|
|
1aa44cc797 | ||
|
|
37c8fd0eba | ||
|
|
786aa98da1 | ||
|
|
413e0853d7 | ||
|
|
8e4560c42f | ||
|
|
450ea83495 | ||
|
|
af8c1d81a3 | ||
|
|
b589427941 | ||
|
|
f0fa285f75 | ||
|
|
a0b5b07010 | ||
|
|
5c95c2ac23 | ||
|
|
454dbbc593 | ||
|
|
c1c6c0bf45 | ||
|
|
dff2922aa7 | ||
|
|
f253a058d3 | ||
|
|
b3c6a33185 | ||
|
|
31780d0e26 | ||
|
|
f489ab3147 | ||
|
|
29cf84c692 | ||
|
|
e454929558 | ||
|
|
105f6a6323 | ||
|
|
8845701719 | ||
|
|
b7683e3a5d | ||
|
|
0ee2166cc5 | ||
|
|
067707e367 | ||
|
|
8211a33c7f | ||
|
|
7441052be6 | ||
|
|
90ccf05f82 | ||
|
|
112161bd33 | ||
|
|
5ba4bf35c5 | ||
|
|
aa93b18c2c | ||
|
|
ba702545fc | ||
|
|
436369100d | ||
|
|
6535bd42e6 | ||
|
|
64cee65ebc | ||
|
|
ba544377fb | ||
|
|
5165148f72 | ||
|
|
8d970ca70b | ||
|
|
383b8b8ca9 | ||
|
|
5ce60a20f2 | ||
|
|
49131a7d94 | ||
|
|
d884c5bad1 | ||
|
|
86bdc0a3ee | ||
|
|
1a4e245f3e | ||
|
|
975efcbaee | ||
|
|
90e1b1fd7d | ||
|
|
86207c1960 | ||
|
|
9c62bca11a | ||
|
|
75d61b33bc | ||
|
|
3df760b83a | ||
|
|
e34aa5a3b3 | ||
|
|
985e4c4154 | ||
|
|
9598fa8759 | ||
|
|
ac8173515a | ||
|
|
944f858021 | ||
|
|
27a3d9f9aa | ||
|
|
48fc582f66 | ||
|
|
81de1028bc | ||
|
|
850815cb6e | ||
|
|
c4e7870ac1 | ||
|
|
4584eccea0 | ||
|
|
ed3ecd801e | ||
|
|
b166f13eb5 | ||
|
|
076944d920 | ||
|
|
09e20e0bd8 | ||
|
|
a717831da4 | ||
|
|
4dfc8f1f0b | ||
|
|
5b57fe0a1e | ||
|
|
89bbe14c50 | ||
|
|
6635b48cd1 | ||
|
|
675f605d44 | ||
|
|
6a983d4287 | ||
|
|
1a159e08af | ||
|
|
dd030860c4 | ||
|
|
2d09372434 | ||
|
|
67912e0032 | ||
|
|
f3dea9a595 | ||
|
|
fb7b393278 | ||
|
|
61e5ec4b1e | ||
|
|
6f344eab03 | ||
|
|
41eacc84a0 | ||
|
|
01b8b3c7d2 | ||
|
|
8fecd4b4f1 | ||
|
|
41fc5f2dbe | ||
|
|
bcfd3d68f5 | ||
|
|
d3a6461d71 | ||
|
|
17478fdede | ||
|
|
4dca00cec8 | ||
|
|
061d774b99 | ||
|
|
20469da285 | ||
|
|
e18e3eba76 | ||
|
|
de9fcfe348 | ||
|
|
7e5b06813d | ||
|
|
1892c8bf97 | ||
|
|
5e428e7d0d | ||
|
|
c9777d2659 | ||
|
|
3aedd213a9 | ||
|
|
e0c1ea9038 | ||
|
|
6f88c6a634 | ||
|
|
58aa573ac2 | ||
|
|
0ed110b969 | ||
|
|
b28dea4e10 | ||
|
|
21f0db692d | ||
|
|
4d4e08ec1c | ||
|
|
25074d6c22 | ||
|
|
0cfc80c4c3 | ||
|
|
b8bb15fb51 | ||
|
|
994df5a248 | ||
|
|
6657b9c73a | ||
|
|
ba0d04a986 | ||
|
|
3cb9eb30d3 | ||
|
|
e0b624e20e | ||
|
|
c27309edcb | ||
|
|
3207e61222 | ||
|
|
3671233089 | ||
|
|
3a828611e9 | ||
|
|
8bdcef40e4 | ||
|
|
91c9e62123 | ||
|
|
0e3453536e | ||
|
|
eaff5a1412 | ||
|
|
216e0d5b91 | ||
|
|
0965991600 | ||
|
|
74aa1a4378 | ||
|
|
5531192151 | ||
|
|
a620626a33 | ||
|
|
f13a71c66b | ||
|
|
3ef3e07a49 | ||
|
|
76fa8f1838 | ||
|
|
f2b139ed1f | ||
|
|
a6e7fcd140 | ||
|
|
76cf3fcb43 | ||
|
|
121dd39f9f | ||
|
|
a263253545 | ||
|
|
76d6ac4b06 | ||
|
|
60f20632e2 | ||
|
|
ae519a247f | ||
|
|
8de916bcee | ||
|
|
1631d5f9b9 | ||
|
|
98c82b899e | ||
|
|
6d3a1eac3b | ||
|
|
b8f702a0af | ||
|
|
43c9825c2a | ||
|
|
fbf6643607 | ||
|
|
3f36baa9f4 | ||
|
|
b0e69a0500 | ||
|
|
856640b54f | ||
|
|
76240b3a39 | ||
|
|
34b3c72e4e | ||
|
|
c264592d69 | ||
|
|
1bd06bd0c4 | ||
|
|
9540ccdf1f | ||
|
|
98bf13c36b | ||
|
|
7e76e56387 | ||
|
|
759d8ac6ee | ||
|
|
959e8dfe06 | ||
|
|
7f57b076a6 | ||
|
|
7144c4212a | ||
|
|
399a6f0bd1 | ||
|
|
3d47929968 | ||
|
|
03919683f9 | ||
|
|
5cda6c4582 | ||
|
|
83ed49149c | ||
|
|
67d990904e | ||
|
|
f3df90b2bb | ||
|
|
11e46bd7ae | ||
|
|
c09a0318b7 | ||
|
|
fe716ba686 | ||
|
|
9a97800813 | ||
|
|
e881f6175a | ||
|
|
36e77b1059 | ||
|
|
a9c32ace06 | ||
|
|
2c5d4daac5 | ||
|
|
b46343583c | ||
|
|
816c2b5a79 | ||
|
|
a78568b7e9 | ||
|
|
ee5b2a1e51 | ||
|
|
e4b21c74fc | ||
|
|
4edcb93dca | ||
|
|
15f80eea31 | ||
|
|
81cebb8b79 | ||
|
|
a4e75b3dfd | ||
|
|
cddaba8ede | ||
|
|
49c5f38d3d | ||
|
|
f8296228f1 | ||
|
|
930b0c4b8a | ||
|
|
3d153f7985 | ||
|
|
ee1d9ec019 | ||
|
|
614b448a67 | ||
|
|
a19c9f179d | ||
|
|
a784b943c1 | ||
|
|
d202709808 | ||
|
|
51ff0abb05 | ||
|
|
492a9e2415 | ||
|
|
7bf7333d68 | ||
|
|
c20276e4ae | ||
|
|
9ca7047d71 | ||
|
|
ba3b2f1538 | ||
|
|
b010b7c434 | ||
|
|
9dc17a2536 | ||
|
|
5950bf7943 | ||
|
|
4141c803d8 | ||
|
|
ba1ba5f0fb | ||
|
|
51aa7bd321 | ||
|
|
09b88a4a55 | ||
|
|
f3481ca28f | ||
|
|
ba30bad57b | ||
|
|
ffb1ac674c | ||
|
|
3be34589e8 | ||
|
|
d87e615209 | ||
|
|
92511cff48 | ||
|
|
7b82159865 | ||
|
|
52c11dce31 | ||
|
|
3ba0885a3e | ||
|
|
023c9d8dd5 | ||
|
|
4c97a04e2e | ||
|
|
fb05e1cdf6 | ||
|
|
ceb4678956 | ||
|
|
0cb8499b73 | ||
|
|
4d62ec32e0 | ||
|
|
75ef718820 | ||
|
|
c927df3fa1 | ||
|
|
4700aea951 | ||
|
|
60cdb821db | ||
|
|
0ef888cd3e | ||
|
|
26c777d516 | ||
|
|
9555339007 | ||
|
|
2fbe371f53 | ||
|
|
15181d7811 | ||
|
|
1edba2110f | ||
|
|
54d853ebc3 | ||
|
|
f5cda4cbb1 | ||
|
|
f9a6348a53 | ||
|
|
a7ffd9d19c | ||
|
|
29db322e8f | ||
|
|
25dc89eb9b | ||
|
|
716630c0eb | ||
|
|
4f59b6587f | ||
|
|
9befdf1d20 | ||
|
|
75d44c0452 | ||
|
|
a58a636838 | ||
|
|
9fdab72dd7 | ||
|
|
b2a97be7f4 | ||
|
|
6471c9f478 | ||
|
|
4a3dc3c0e3 | ||
|
|
a2318e86bd | ||
|
|
a9164153d1 | ||
|
|
8795d38906 | ||
|
|
8cd44e3630 | ||
|
|
07e970c7e6 | ||
|
|
d1aa0d38c5 | ||
|
|
9e4d0f0be2 | ||
|
|
cd7638980a | ||
|
|
f733a5ef0e | ||
|
|
5da98aa687 | ||
|
|
0b6f3c66cd | ||
|
|
a01d9ac558 | ||
|
|
e46691a0bc | ||
|
|
732a40e107 | ||
|
|
29da3ade3c | ||
|
|
de908d6319 | ||
|
|
9c9c98ad2e | ||
|
|
5e0e9fce5d | ||
|
|
53ec8809cf | ||
|
|
863779065e | ||
|
|
0b33dac310 | ||
|
|
e2bce37720 | ||
|
|
228b4e426b | ||
|
|
a4974de937 | ||
|
|
22f41c9b99 | ||
|
|
a123c552cd | ||
|
|
b2172f4f8e | ||
|
|
dc1d1b6934 | ||
|
|
67475a7ed7 | ||
|
|
362ab3e4f9 | ||
|
|
2aed84d16b | ||
|
|
5deea1c015 | ||
|
|
99516f81b1 | ||
|
|
d6091d5a39 | ||
|
|
5a47825ece | ||
|
|
16f66ae794 | ||
|
|
7ce1d9e9a6 | ||
|
|
a70183bc80 | ||
|
|
332737217a | ||
|
|
bcbe37b716 | ||
|
|
f393b7449d | ||
|
|
531308d929 | ||
|
|
74e564cd46 | ||
|
|
42eae426df | ||
|
|
246e09319c | ||
|
|
f7a3296d8c | ||
|
|
3e4585c8fd | ||
|
|
3e84b6e15f | ||
|
|
d505d1ef4a | ||
|
|
70b2ae3edf | ||
|
|
9e5dba197c | ||
|
|
a61114c38b | ||
|
|
db98bbc114 | ||
|
|
e42633140e | ||
|
|
bd50e31325 | ||
|
|
b2c0518e6a | ||
|
|
d82e2718e2 | ||
|
|
18e377b4ff | ||
|
|
043b2e9c2e | ||
|
|
1b593194be | ||
|
|
35208f368c | ||
|
|
c788e59365 | ||
|
|
cb08f4a6a3 | ||
|
|
adbc603d24 | ||
|
|
6f81892e6b | ||
|
|
448be74335 | ||
|
|
1a5a1a93f6 | ||
|
|
d917188a46 | ||
|
|
b4e88ccb28 | ||
|
|
d916ba1ba1 | ||
|
|
33af4421f2 | ||
|
|
95e362c6da | ||
|
|
c58d983e3b | ||
|
|
a84c9d1ed9 | ||
|
|
c6a27f0178 | ||
|
|
67b6f1ca88 | ||
|
|
a4ff392503 | ||
|
|
40f51f506c | ||
|
|
eeb821f707 | ||
|
|
47d5566646 | ||
|
|
90bdfd97a6 | ||
|
|
b9865f110e | ||
|
|
07ef612968 | ||
|
|
019fdc7850 | ||
|
|
7c382796be | ||
|
|
b6acb8d0de | ||
|
|
6adbcb9755 | ||
|
|
e968089485 | ||
|
|
c2cd422ac6 | ||
|
|
36ca4ba63d | ||
|
|
ed4a1d12b9 | ||
|
|
a0aa8b4b61 | ||
|
|
2c059d58d9 | ||
|
|
cd346d3e22 | ||
|
|
561d93aa00 | ||
|
|
ddac197404 | ||
|
|
0e8e6f19b2 | ||
|
|
c03e4f9bf0 | ||
|
|
c3bb1f8166 | ||
|
|
959a7201b8 | ||
|
|
6c73d01142 | ||
|
|
2932ad5677 | ||
|
|
036bbcc53f | ||
|
|
6384e46da3 | ||
|
|
6e2fcc44bd | ||
|
|
8721fc2d0b | ||
|
|
c1facbb681 | ||
|
|
f2c33fa6fd | ||
|
|
5aae935038 | ||
|
|
11503177d1 | ||
|
|
9ab899a660 | ||
|
|
8937a13e0c | ||
|
|
19017d4061 | ||
|
|
f53ac639c6 | ||
|
|
f71165b556 | ||
|
|
350a404cb8 | ||
|
|
827c55741b | ||
|
|
e0c8c08936 | ||
|
|
4e397d07ea | ||
|
|
9eb8794149 | ||
|
|
dc24110311 | ||
|
|
b3e72fc37f | ||
|
|
90076b96df | ||
|
|
9c339a7227 | ||
|
|
e7a8b47f1a | ||
|
|
7ac7a4bc37 | ||
|
|
a628901dda | ||
|
|
2ab75dee27 | ||
|
|
a3f586cdab | ||
|
|
fcfd87168a | ||
|
|
95a0e8ab31 | ||
|
|
0c9caf04de | ||
|
|
21e8bbf290 | ||
|
|
3b408d83fe | ||
|
|
8573552e8c | ||
|
|
c7235be6e3 | ||
|
|
1c17d91c53 | ||
|
|
a070f0dac5 | ||
|
|
b480283c56 | ||
|
|
f5ce5e1465 | ||
|
|
d7db77a0cb | ||
|
|
346ac30120 | ||
|
|
07bb51b6b4 | ||
|
|
bbab9b61dd | ||
|
|
82e8372f17 | ||
|
|
e67ed82877 | ||
|
|
15ac971681 | ||
|
|
0c21e13012 | ||
|
|
d5fd72fd0d | ||
|
|
c7474d077b | ||
|
|
826b52d26f | ||
|
|
8c5a2bd6bb | ||
|
|
25a58453ff | ||
|
|
00fe865dbe | ||
|
|
9e9bececa9 | ||
|
|
90890074b0 | ||
|
|
31676a3540 | ||
|
|
6b9e941ee3 | ||
|
|
802d7fa6d5 | ||
|
|
3798cb8182 | ||
|
|
2c5fadbce3 | ||
|
|
58ece83395 | ||
|
|
c75c096aa8 | ||
|
|
ab961dc8b0 | ||
|
|
6ad47e83b4 | ||
|
|
241520e66d | ||
|
|
a13c20f603 | ||
|
|
db6251ad54 | ||
|
|
51eb1b81f6 | ||
|
|
2adc42e43e | ||
|
|
52cc46a237 | ||
|
|
a07b4dc038 | ||
|
|
739a543ea8 | ||
|
|
01c76c6606 | ||
|
|
d32f888db1 | ||
|
|
f7914dbf9a | ||
|
|
3ff94a009b | ||
|
|
1aeb3da83f | ||
|
|
e8e5b46e2b | ||
|
|
c9d67d4ddf | ||
|
|
8de5b7f548 | ||
|
|
9ee0f7b7e0 | ||
|
|
f1fd4544a3 | ||
|
|
349eb12fd5 | ||
|
|
6a8f17de1e | ||
|
|
b1277b9902 | ||
|
|
ed3883d21b | ||
|
|
ea558241e0 | ||
|
|
61aa2134a4 | ||
|
|
4eb76e2397 | ||
|
|
68e575362f | ||
|
|
aab3bb04cf | ||
|
|
481d81cb76 | ||
|
|
c6cb42e4fb | ||
|
|
2d43a89488 | ||
|
|
302ea8c260 | ||
|
|
a1f3462bc0 | ||
|
|
7476f3ac3b | ||
|
|
68b64fb610 | ||
|
|
34b537ee66 | ||
|
|
7a5dbeb782 | ||
|
|
6c06918ede | ||
|
|
ee8f293701 | ||
|
|
3b4a0225e2 | ||
|
|
c8e1edaae5 | ||
|
|
63d3fc9106 | ||
|
|
5d7324e42d | ||
|
|
be7b4458f2 | ||
|
|
7304956e39 | ||
|
|
c510eec090 | ||
|
|
1b167a4343 | ||
|
|
9ab5170197 | ||
|
|
a00e414faf | ||
|
|
4c5e19b6c6 | ||
|
|
ed26604a71 | ||
|
|
0fbd4bf044 | ||
|
|
d719e60cb4 | ||
|
|
0cb9d93d0c | ||
|
|
f5826b8014 | ||
|
|
4a47f55639 | ||
|
|
b884556ed8 | ||
|
|
c06b0f3d5e | ||
|
|
68ea60683a | ||
|
|
6df8c74d5b | ||
|
|
877e8e970c | ||
|
|
d56349a2aa | ||
|
|
67c03ff185 | ||
|
|
35e00cc2d8 | ||
|
|
064f6cb6f2 | ||
|
|
20ab8b4b41 | ||
|
|
7395d852c3 | ||
|
|
3ebf898e88 | ||
|
|
a4c886e4c8 | ||
|
|
1291dfdead | ||
|
|
df278aff3e | ||
|
|
7c510d6f43 | ||
|
|
7bbcb2f690 | ||
|
|
ad2695b1b7 | ||
|
|
9cbf062a70 | ||
|
|
ec645d9017 | ||
|
|
0d894c9dbe | ||
|
|
c6709b89c4 | ||
|
|
061bebc0d8 | ||
|
|
802e1d692b | ||
|
|
dbf33b344c | ||
|
|
b40228a61d | ||
|
|
da5a0e8722 | ||
|
|
200fc02848 | ||
|
|
7096217d39 | ||
|
|
f1eb83a013 | ||
|
|
fec82dbc86 | ||
|
|
7b1b47a8e6 | ||
|
|
8b9afce53a | ||
|
|
137db78b46 | ||
|
|
a3344c8e5e | ||
|
|
c173d09c56 | ||
|
|
cb49a3cfa1 | ||
|
|
adab80053d | ||
|
|
f106fb85d4 | ||
|
|
5fa6d850a2 | ||
|
|
4adfe93cc5 | ||
|
|
d1593e6b15 | ||
|
|
a53cb070e3 | ||
|
|
452ae49db5 | ||
|
|
8c5c5b6517 | ||
|
|
6f44d4d247 | ||
|
|
d804f86b88 | ||
|
|
8dee9f844f | ||
|
|
963ba10012 | ||
|
|
07645deeb8 | ||
|
|
c52c82ffc1 | ||
|
|
d6a03a23a8 | ||
|
|
e347b0da2b | ||
|
|
52b1fbbd99 | ||
|
|
65613f23ba | ||
|
|
4f92a764f1 | ||
|
|
6a3a7f3076 | ||
|
|
63d3a9c5ea | ||
|
|
2c730f6fc2 | ||
|
|
df8dae1df4 | ||
|
|
2e9f1bf0e1 | ||
|
|
b1e0ccbaa8 | ||
|
|
bd2abcae37 | ||
|
|
f1fbd4c7d1 | ||
|
|
eed22ac4ac | ||
|
|
176a614899 | ||
|
|
f858d222f2 | ||
|
|
16094305bc | ||
|
|
fbf002bb88 | ||
|
|
9135fddb0e | ||
|
|
d88fcf73f1 | ||
|
|
a950f28762 | ||
|
|
c629204688 | ||
|
|
e22f63f231 | ||
|
|
d256b95768 | ||
|
|
f530138876 | ||
|
|
0a39d8f207 | ||
|
|
6852d1d8c3 | ||
|
|
a1ad253f17 | ||
|
|
ffa101872f | ||
|
|
4d24b4c466 | ||
|
|
474b8a9716 | ||
|
|
53261831f1 | ||
|
|
49e3c9d8e6 | ||
|
|
1715e4885a | ||
|
|
eff7cb41d1 | ||
|
|
7a6f825f0f | ||
|
|
29afd31dd1 | ||
|
|
d86b0f1f5f | ||
|
|
998ac55e19 | ||
|
|
d6f25d70f1 | ||
|
|
b02da8eb50 | ||
|
|
2f52a41054 | ||
|
|
99c675b2f7 | ||
|
|
72dce7685e | ||
|
|
ee8836c442 | ||
|
|
a1006c373d | ||
|
|
755c5b3330 | ||
|
|
ce6aa1e496 | ||
|
|
6c1fc273f3 | ||
|
|
aa8b03b415 | ||
|
|
96ec4abd07 | ||
|
|
70532b7d6b | ||
|
|
a4d729f31d | ||
|
|
fcbc5a3fdd | ||
|
|
8c0ceb17a2 | ||
|
|
c2012f9b82 | ||
|
|
aa2be094ae | ||
|
|
4d524040bc | ||
|
|
0fe120ba25 | ||
|
|
2e7aa150f7 | ||
|
|
04fac37311 | ||
|
|
bcb43bb358 | ||
|
|
89ec4332ec | ||
|
|
34736de4c0 | ||
|
|
5f50d597f2 | ||
|
|
df94f187b9 | ||
|
|
b92c0df834 | ||
|
|
d357be38b9 | ||
|
|
912e296070 | ||
|
|
35593b33f4 | ||
|
|
54f3d200d3 | ||
|
|
3f67e11fab | ||
|
|
c1de1a190d | ||
|
|
566dda07ba | ||
|
|
7a2f4cbfe8 | ||
|
|
5ac7bde7c9 | ||
|
|
9b4eab501a | ||
|
|
ca04d7a208 | ||
|
|
40a3c12305 | ||
|
|
3001a770ed | ||
|
|
2608383c5e | ||
|
|
3d6312e807 | ||
|
|
22cd982566 | ||
|
|
682b112abc | ||
|
|
e738280547 | ||
|
|
8265328def | ||
|
|
231b98a5e1 | ||
|
|
13e4670c29 | ||
|
|
d08b6b44ba | ||
|
|
09b6c2ef15 | ||
|
|
cc29c1204b | ||
|
|
94c00f3d4d | ||
|
|
3c2b73672e | ||
|
|
23acb0eeb2 | ||
|
|
bfa4b8c5ab | ||
|
|
ce75ca04b1 | ||
|
|
9dba0554a5 | ||
|
|
59947880f4 | ||
|
|
61094cf3dc | ||
|
|
6d00101e9d | ||
|
|
7a06050cd3 | ||
|
|
6f9afa68cd | ||
|
|
c038b90619 | ||
|
|
9c4fe78260 | ||
|
|
60dd08573d | ||
|
|
f5204c61fb | ||
|
|
9ddeefe39d | ||
|
|
0293371a1b | ||
|
|
dd31c6fcb0 | ||
|
|
6708df7bf0 | ||
|
|
6d9c46b811 | ||
|
|
af2c2823a7 | ||
|
|
b17ecb642b | ||
|
|
ba12070f7e | ||
|
|
29b9763d9f | ||
|
|
270da80bfa | ||
|
|
701d35d12f | ||
|
|
2238e8e477 | ||
|
|
4b08da5538 | ||
|
|
8a616a5a5f | ||
|
|
9455d430cb | ||
|
|
137023dd0c | ||
|
|
2a45408c4a | ||
|
|
9e201014f8 | ||
|
|
0c072a0b46 | ||
|
|
c11c64fbe0 | ||
|
|
f022c177db | ||
|
|
5f10073c95 | ||
|
|
33ac8b3139 | ||
|
|
244847591f | ||
|
|
5abe32d861 | ||
|
|
9194296de8 | ||
|
|
6273a91cb7 | ||
|
|
1ef7acfe92 | ||
|
|
a0156a926f | ||
|
|
96998822b5 | ||
|
|
8215e7a938 | ||
|
|
f7622f86d9 | ||
|
|
337e368239 | ||
|
|
64b6840d8d | ||
|
|
6e119bb02e | ||
|
|
2c2e46dbf5 | ||
|
|
770bc596e1 | ||
|
|
7534d131d6 | ||
|
|
7f3c9036ea | ||
|
|
725111f7cb | ||
|
|
bf3d6c0c9b | ||
|
|
b8e8ccdc79 | ||
|
|
6b80c20bdb | ||
|
|
eea374fd19 | ||
|
|
2e8879fa6e | ||
|
|
f5a07779dd | ||
|
|
c51f2d4238 | ||
|
|
45e2738585 | ||
|
|
b173acfc96 | ||
|
|
4ebb342fcd | ||
|
|
8e5ef8538a | ||
|
|
ff82bf3b07 | ||
|
|
5147c3c914 | ||
|
|
fbbbffc5a8 | ||
|
|
7cfe2a5e65 | ||
|
|
df2a346b30 | ||
|
|
270512ab12 | ||
|
|
eba63ef58b | ||
|
|
01a9792f05 | ||
|
|
0491e05833 | ||
|
|
9a1a5b8785 | ||
|
|
f3b656b246 | ||
|
|
53b38d37a9 | ||
|
|
8f2e4fdf86 | ||
|
|
11de71b04c | ||
|
|
19bd66fe74 | ||
|
|
45771abbd6 | ||
|
|
573969cd53 | ||
|
|
34be0bb1a5 | ||
|
|
2031eca588 | ||
|
|
6321c3a034 | ||
|
|
1fda6c4f8c | ||
|
|
11a4e58fc1 | ||
|
|
8a35fb3bea | ||
|
|
e85d67af9f | ||
|
|
b37fb16dcb | ||
|
|
1e1c5047f2 | ||
|
|
b2be099d16 | ||
|
|
28d8362934 | ||
|
|
01039d0bff | ||
|
|
c755c5fd8b | ||
|
|
5c8e9139d1 | ||
|
|
56defd9a98 | ||
|
|
8eb7217580 | ||
|
|
b2a9d36a7f | ||
|
|
04f15edb91 | ||
|
|
4e98a44593 | ||
|
|
1385ddbb14 | ||
|
|
7f0c65703a | ||
|
|
3a6dec8a05 | ||
|
|
209b12814f | ||
|
|
f920c5b590 | ||
|
|
05fc7018f8 | ||
|
|
a384002724 | ||
|
|
0260405c68 | ||
|
|
0537f9689c | ||
|
|
0c010a1517 | ||
|
|
0745d0892d | ||
|
|
5e64f8c44c | ||
|
|
4a5b8a5bee | ||
|
|
b3836ed3cb | ||
|
|
47738cbad7 | ||
|
|
0a882b6394 | ||
|
|
612a91110f | ||
|
|
2337eb5823 | ||
|
|
9aa9d70ddb | ||
|
|
231493c93c | ||
|
|
20a90e3a76 | ||
|
|
17a2994dbd | ||
|
|
b554eef43b | ||
|
|
0066590f98 | ||
|
|
165a28abae | ||
|
|
63999e5299 | ||
|
|
2802ec65c2 | ||
|
|
b3f56e8b38 | ||
|
|
5826e4f481 | ||
|
|
66ee67be03 | ||
|
|
a7ad2afa5e | ||
|
|
0f04379d9c | ||
|
|
7e4d335943 | ||
|
|
26c07054a1 | ||
|
|
843d9d0b39 | ||
|
|
4ac210c16a | ||
|
|
02703c74a4 | ||
|
|
ef428d5681 | ||
|
|
afbe674edb | ||
|
|
f42e6d24f2 | ||
|
|
449bd384ed | ||
|
|
3eeaab4bed | ||
|
|
57eb1d3250 | ||
|
|
b4f5e5c959 | ||
|
|
0d2848b3ba | ||
|
|
e84b663a93 | ||
|
|
d85185217b | ||
|
|
8f3bdc72d0 | ||
|
|
7d368fcbd8 | ||
|
|
2bd2cd9b78 | ||
|
|
c83101248a | ||
|
|
8d3509b937 | ||
|
|
1875e6db29 | ||
|
|
0962fbbf98 | ||
|
|
cbdac46d58 | ||
|
|
d2e0c81720 | ||
|
|
109080ae48 | ||
|
|
31efffbdba | ||
|
|
aaa5dc614f | ||
|
|
8be97c01d1 | ||
|
|
9e1a112336 | ||
|
|
4e28f13209 | ||
|
|
53a20bfd94 | ||
|
|
a28062338c | ||
|
|
1c2f1fe505 | ||
|
|
14365bd820 | ||
|
|
a51a97262d | ||
|
|
45d8574b93 | ||
|
|
417f8973ff | ||
|
|
b3b72cd92c | ||
|
|
bb00084863 | ||
|
|
db22e5faa6 | ||
|
|
55d03c3179 | ||
|
|
7e0a494f13 | ||
|
|
83e68987b3 | ||
|
|
53bb3bee34 | ||
|
|
c9edf6fe98 | ||
|
|
14cc0aaf7b | ||
|
|
2f3c39bc62 | ||
|
|
c5de8b2a27 | ||
|
|
a4022932ee | ||
|
|
0e3b6b70df | ||
|
|
c49a0aa08d | ||
|
|
5503b6a352 | ||
|
|
60021d9165 | ||
|
|
97b708910a | ||
|
|
2f6ebed1dc | ||
|
|
156f657209 | ||
|
|
816f74d1c7 | ||
|
|
ec14c80c7c | ||
|
|
543b4ecc13 | ||
|
|
1110cea007 | ||
|
|
0ed64ce310 | ||
|
|
0e441bc2be | ||
|
|
d996a9af2b | ||
|
|
ab6cf1b8a2 | ||
|
|
c25f2f1cbf | ||
|
|
62526671e9 | ||
|
|
88ebf53577 | ||
|
|
a41b0aade2 | ||
|
|
02c31fa461 | ||
|
|
5df70a9e21 | ||
|
|
cbe52c3166 | ||
|
|
7858cc03da | ||
|
|
bbada33271 | ||
|
|
f5d51a9362 | ||
|
|
0fc6b2c9e2 | ||
|
|
7a5ad5d5a1 | ||
|
|
44eff497e8 | ||
|
|
8b452002e8 | ||
|
|
e442c36252 | ||
|
|
50ec3951dc | ||
|
|
11cd239707 | ||
|
|
f6098f2dda | ||
|
|
857c6092b6 | ||
|
|
eef468e330 | ||
|
|
4bd46774bb | ||
|
|
283c3e2437 | ||
|
|
306aae6cee | ||
|
|
edb0600583 | ||
|
|
ac86d923fc | ||
|
|
fbd63d0784 | ||
|
|
78ebeee2c4 | ||
|
|
55805fd2d0 | ||
|
|
7ebd220a8f | ||
|
|
e8a1f6d190 | ||
|
|
034bae10fc | ||
|
|
a7c924c041 | ||
|
|
27b762af60 | ||
|
|
b764ab9537 | ||
|
|
a761b89d2f | ||
|
|
a136862afe | ||
|
|
f0747cd950 | ||
|
|
21ac2b964b | ||
|
|
79e1dd65ab | ||
|
|
13e393607b | ||
|
|
052ec89927 | ||
|
|
2073d95fb4 | ||
|
|
cbed917fee | ||
|
|
dffdb56b7f | ||
|
|
a78c0632ed | ||
|
|
8fa6a40be2 | ||
|
|
4b5598682a | ||
|
|
e9f5428d3a | ||
|
|
34f0b26424 | ||
|
|
cd27b13b1d | ||
|
|
3ecbd099eb | ||
|
|
e43d03e30e | ||
|
|
d1acb9b44f | ||
|
|
acd1c4b5af | ||
|
|
40808cedc1 | ||
|
|
51054a1b39 | ||
|
|
e774a3299e | ||
|
|
99febc8b9a | ||
|
|
1ce8efbdda | ||
|
|
0b0a60d861 | ||
|
|
9e5b378081 | ||
|
|
7ed876533a | ||
|
|
b2d91a6913 | ||
|
|
ce074604c4 | ||
|
|
19ac190252 | ||
|
|
02c5ddf91e | ||
|
|
1aaeaf8a3d | ||
|
|
5d6c4985d1 | ||
|
|
b615ad90c8 | ||
|
|
c7aaf3918d | ||
|
|
d51204f1b1 | ||
|
|
b3f6325988 | ||
|
|
3129acbd83 | ||
|
|
12f89d32b5 | ||
|
|
1d42741a19 | ||
|
|
88737991d2 | ||
|
|
75c00536ba | ||
|
|
63d740752f | ||
|
|
6e04afb8c5 | ||
|
|
165fca51e0 | ||
|
|
db6b4e3791 | ||
|
|
20a85e9f69 | ||
|
|
2a6144a1b6 | ||
|
|
f8bc3e1bd8 | ||
|
|
5b737a0731 | ||
|
|
6e0ef10915 | ||
|
|
7017605dce | ||
|
|
b29228836a | ||
|
|
188b05792f | ||
|
|
575901e537 | ||
|
|
2333d65880 | ||
|
|
ffd1df0579 |
@@ -1,4 +1,6 @@
|
||||
openssl.pc
|
||||
libcrypto.pc
|
||||
libssl.pc
|
||||
MINFO
|
||||
makefile.one
|
||||
tmp
|
||||
@@ -11,8 +13,10 @@ maketest.log
|
||||
cctest
|
||||
cctest.c
|
||||
cctest.a
|
||||
libcrypto.so.*
|
||||
libssl.so.*
|
||||
*.flc
|
||||
semantic.cache
|
||||
Makefile
|
||||
*.dll*
|
||||
*.so*
|
||||
*.sl*
|
||||
*.dylib*
|
||||
|
||||
908
CHANGES
908
CHANGES
@@ -2,6 +2,914 @@
|
||||
OpenSSL CHANGES
|
||||
_______________
|
||||
|
||||
Changes between 0.9.8k and 1.0 [xx XXX xxxx]
|
||||
|
||||
*) Support use of registered digest and cipher names for dgst and cipher
|
||||
commands instead of having to add each one as a special case. So now
|
||||
you can do:
|
||||
|
||||
openssl sha256 foo
|
||||
|
||||
as well as:
|
||||
|
||||
openssl dgst -sha256 foo
|
||||
|
||||
and this works for ENGINE based algorithms too.
|
||||
|
||||
[Steve Henson]
|
||||
|
||||
*) Update Gost ENGINE to support parameter files.
|
||||
[Victor B. Wagner <vitus@cryptocom.ru>]
|
||||
|
||||
*) Support GeneralizedTime in ca utility.
|
||||
[Oliver Martin <oliver@volatilevoid.net>, Steve Henson]
|
||||
|
||||
*) Enhance the hash format used for certificate directory links. The new
|
||||
form uses the canonical encoding (meaning equivalent names will work
|
||||
even if they aren't identical) and uses SHA1 instead of MD5. This form
|
||||
is incompatible with the older format and as a result c_rehash should
|
||||
be used to rebuild symbolic links.
|
||||
[Steve Henson]
|
||||
|
||||
*) Make PKCS#8 the default write format for private keys, replacing the
|
||||
traditional format. This form is standardised, more secure and doesn't
|
||||
include an implicit MD5 dependency.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add a $gcc_devteam_warn option to Configure. The idea is that any code
|
||||
committed to OpenSSL should pass this lot as a minimum.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add session ticket override functionality for use by EAP-FAST.
|
||||
[Jouni Malinen <j@w1.fi>]
|
||||
|
||||
*) Modify HMAC functions to return a value. Since these can be implemented
|
||||
in an ENGINE errors can occur.
|
||||
[Steve Henson]
|
||||
|
||||
*) Type-checked OBJ_bsearch_ex.
|
||||
[Ben Laurie]
|
||||
|
||||
*) Type-checked OBJ_bsearch. Also some constification necessitated
|
||||
by type-checking. Still to come: TXT_DB, bsearch(?),
|
||||
OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
|
||||
CONF_VALUE.
|
||||
[Ben Laurie]
|
||||
|
||||
*) New function OPENSSL_gmtime_adj() to add a specific number of days and
|
||||
seconds to a tm structure directly, instead of going through OS
|
||||
specific date routines. This avoids any issues with OS routines such
|
||||
as the year 2038 bug. New *_adj() functions for ASN1 time structures
|
||||
and X509_time_adj_ex() to cover the extended range. The existing
|
||||
X509_time_adj() is still usable and will no longer have any date issues.
|
||||
[Steve Henson]
|
||||
|
||||
*) Delta CRL support. New use deltas option which will attempt to locate
|
||||
and search any appropriate delta CRLs available.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Support for CRLs partitioned by reason code. Reorganise CRL processing
|
||||
code and add additional score elements. Validate alternate CRL paths
|
||||
as part of the CRL checking and indicate a new error "CRL path validation
|
||||
error" in this case. Applications wanting additional details can use
|
||||
the verify callback and check the new "parent" field. If this is not
|
||||
NULL CRL path validation is taking place. Existing applications wont
|
||||
see this because it requires extended CRL support which is off by
|
||||
default.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Support for freshest CRL extension.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Initial indirect CRL support. Currently only supported in the CRLs
|
||||
passed directly and not via lookup. Process certificate issuer
|
||||
CRL entry extension and lookup CRL entries by bother issuer name
|
||||
and serial number. Check and process CRL issuer entry in IDP extension.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add support for distinct certificate and CRL paths. The CRL issuer
|
||||
certificate is validated separately in this case. Only enabled if
|
||||
an extended CRL support flag is set: this flag will enable additional
|
||||
CRL functionality in future.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add support for policy mappings extension.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Fixes to pathlength constraint, self issued certificate handling,
|
||||
policy processing to align with RFC3280 and PKITS tests.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Support for name constraints certificate extension. DN, email, DNS
|
||||
and URI types are currently supported.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) To cater for systems that provide a pointer-based thread ID rather
|
||||
than numeric, deprecate the current numeric thread ID mechanism and
|
||||
replace it with a structure and associated callback type. This
|
||||
mechanism allows a numeric "hash" to be extracted from a thread ID in
|
||||
either case, and on platforms where pointers are larger than 'long',
|
||||
mixing is done to help ensure the numeric 'hash' is usable even if it
|
||||
can't be guaranteed unique. The default mechanism is to use "&errno"
|
||||
as a pointer-based thread ID to distinguish between threads.
|
||||
|
||||
Applications that want to provide their own thread IDs should now use
|
||||
CRYPTO_THREADID_set_callback() to register a callback that will call
|
||||
either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
|
||||
|
||||
Note that ERR_remove_state() is now deprecated, because it is tied
|
||||
to the assumption that thread IDs are numeric. ERR_remove_state(0)
|
||||
to free the current thread's error state should be replaced by
|
||||
ERR_remove_thread_state(NULL).
|
||||
|
||||
(This new approach replaces the functions CRYPTO_set_idptr_callback(),
|
||||
CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
|
||||
OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
|
||||
application was previously providing a numeric thread callback that
|
||||
was inappropriate for distinguishing threads, then uniqueness might
|
||||
have been obtained with &errno that happened immediately in the
|
||||
intermediate development versions of OpenSSL; this is no longer the
|
||||
case, the numeric thread callback will now override the automatic use
|
||||
of &errno.)
|
||||
[Geoff Thorpe, with help from Bodo Moeller]
|
||||
|
||||
*) Initial support for different CRL issuing certificates. This covers a
|
||||
simple case where the self issued certificates in the chain exist and
|
||||
the real CRL issuer is higher in the existing chain.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Removed effectively defunct crypto/store from the build.
|
||||
[Ben Laurie]
|
||||
|
||||
*) Revamp of STACK to provide stronger type-checking. Still to come:
|
||||
TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
|
||||
ASN1_STRING, CONF_VALUE.
|
||||
[Ben Laurie]
|
||||
|
||||
*) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
|
||||
RAM on SSL connections. This option can save about 34k per idle SSL.
|
||||
[Nick Mathewson]
|
||||
|
||||
*) Revamp of LHASH to provide stronger type-checking. Still to come:
|
||||
STACK, TXT_DB, bsearch, qsort.
|
||||
[Ben Laurie]
|
||||
|
||||
*) Initial support for Cryptographic Message Syntax (aka CMS) based
|
||||
on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
|
||||
support for data, signedData, compressedData, digestedData and
|
||||
encryptedData, envelopedData types included. Scripts to check against
|
||||
RFC4134 examples draft and interop and consistency checks of many
|
||||
content types and variants.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add options to enc utility to support use of zlib compression BIO.
|
||||
[Steve Henson]
|
||||
|
||||
*) Extend mk1mf to support importing of options and assembly language
|
||||
files from Configure script, currently only included in VC-WIN32.
|
||||
The assembly language rules can now optionally generate the source
|
||||
files from the associated perl scripts.
|
||||
[Steve Henson]
|
||||
|
||||
*) Implement remaining functionality needed to support GOST ciphersuites.
|
||||
Interop testing has been performed using CryptoPro implementations.
|
||||
[Victor B. Wagner <vitus@cryptocom.ru>]
|
||||
|
||||
*) s390x assembler pack.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
|
||||
"family."
|
||||
[Andy Polyakov]
|
||||
|
||||
*) Implement Opaque PRF Input TLS extension as specified in
|
||||
draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an
|
||||
official specification yet and no extension type assignment by
|
||||
IANA exists, this extension (for now) will have to be explicitly
|
||||
enabled when building OpenSSL by providing the extension number
|
||||
to use. For example, specify an option
|
||||
|
||||
-DTLSEXT_TYPE_opaque_prf_input=0x9527
|
||||
|
||||
to the "config" or "Configure" script to enable the extension,
|
||||
assuming extension number 0x9527 (which is a completely arbitrary
|
||||
and unofficial assignment based on the MD5 hash of the Internet
|
||||
Draft). Note that by doing so, you potentially lose
|
||||
interoperability with other TLS implementations since these might
|
||||
be using the same extension number for other purposes.
|
||||
|
||||
SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
|
||||
opaque PRF input value to use in the handshake. This will create
|
||||
an interal copy of the length-'len' string at 'src', and will
|
||||
return non-zero for success.
|
||||
|
||||
To get more control and flexibility, provide a callback function
|
||||
by using
|
||||
|
||||
SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
|
||||
SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
|
||||
|
||||
where
|
||||
|
||||
int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
|
||||
void *arg;
|
||||
|
||||
Callback function 'cb' will be called in handshakes, and is
|
||||
expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
|
||||
Argument 'arg' is for application purposes (the value as given to
|
||||
SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
|
||||
be provided to the callback function). The callback function
|
||||
has to return non-zero to report success: usually 1 to use opaque
|
||||
PRF input just if possible, or 2 to enforce use of the opaque PRF
|
||||
input. In the latter case, the library will abort the handshake
|
||||
if opaque PRF input is not successfully negotiated.
|
||||
|
||||
Arguments 'peerinput' and 'len' given to the callback function
|
||||
will always be NULL and 0 in the case of a client. A server will
|
||||
see the client's opaque PRF input through these variables if
|
||||
available (NULL and 0 otherwise). Note that if the server
|
||||
provides an opaque PRF input, the length must be the same as the
|
||||
length of the client's opaque PRF input.
|
||||
|
||||
Note that the callback function will only be called when creating
|
||||
a new session (session resumption can resume whatever was
|
||||
previously negotiated), and will not be called in SSL 2.0
|
||||
handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
|
||||
SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
|
||||
for applications that need to enforce opaque PRF input.
|
||||
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Update ssl code to support digests other than SHA1+MD5 for handshake
|
||||
MAC.
|
||||
|
||||
[Victor B. Wagner <vitus@cryptocom.ru>]
|
||||
|
||||
*) Add RFC4507 support to OpenSSL. This includes the corrections in
|
||||
RFC4507bis. The encrypted ticket format is an encrypted encoded
|
||||
SSL_SESSION structure, that way new session features are automatically
|
||||
supported.
|
||||
|
||||
If a client application caches session in an SSL_SESSION structure
|
||||
support is transparent because tickets are now stored in the encoded
|
||||
SSL_SESSION.
|
||||
|
||||
The SSL_CTX structure automatically generates keys for ticket
|
||||
protection in servers so again support should be possible
|
||||
with no application modification.
|
||||
|
||||
If a client or server wishes to disable RFC4507 support then the option
|
||||
SSL_OP_NO_TICKET can be set.
|
||||
|
||||
Add a TLS extension debugging callback to allow the contents of any client
|
||||
or server extensions to be examined.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Final changes to avoid use of pointer pointer casts in OpenSSL.
|
||||
OpenSSL should now compile cleanly on gcc 4.2
|
||||
[Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
|
||||
|
||||
*) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
|
||||
support including streaming MAC support: this is required for GOST
|
||||
ciphersuite support.
|
||||
[Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
|
||||
|
||||
*) Add option -stream to use PKCS#7 streaming in smime utility. New
|
||||
function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
|
||||
to output in BER and PEM format.
|
||||
[Steve Henson]
|
||||
|
||||
*) Experimental support for use of HMAC via EVP_PKEY interface. This
|
||||
allows HMAC to be handled via the EVP_DigestSign*() interface. The
|
||||
EVP_PKEY "key" in this case is the HMAC key, potentially allowing
|
||||
ENGINE support for HMAC keys which are unextractable. New -mac and
|
||||
-macopt options to dgst utility.
|
||||
[Steve Henson]
|
||||
|
||||
*) New option -sigopt to dgst utility. Update dgst to use
|
||||
EVP_Digest{Sign,Verify}*. These two changes make it possible to use
|
||||
alternative signing paramaters such as X9.31 or PSS in the dgst
|
||||
utility.
|
||||
[Steve Henson]
|
||||
|
||||
*) Change ssl_cipher_apply_rule(), the internal function that does
|
||||
the work each time a ciphersuite string requests enabling
|
||||
("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
|
||||
removing ("!foo+bar") a class of ciphersuites: Now it maintains
|
||||
the order of disabled ciphersuites such that those ciphersuites
|
||||
that most recently went from enabled to disabled not only stay
|
||||
in order with respect to each other, but also have higher priority
|
||||
than other disabled ciphersuites the next time ciphersuites are
|
||||
enabled again.
|
||||
|
||||
This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
|
||||
the same ciphersuites as with "HIGH" alone, but in a specific
|
||||
order where the PSK ciphersuites come first (since they are the
|
||||
most recently disabled ciphersuites when "HIGH" is parsed).
|
||||
|
||||
Also, change ssl_create_cipher_list() (using this new
|
||||
funcionality) such that between otherwise identical
|
||||
cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
|
||||
the default order.
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Change ssl_create_cipher_list() so that it automatically
|
||||
arranges the ciphersuites in reasonable order before starting
|
||||
to process the rule string. Thus, the definition for "DEFAULT"
|
||||
(SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
|
||||
remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
|
||||
This makes it much easier to arrive at a reasonable default order
|
||||
in applications for which anonymous ciphers are OK (meaning
|
||||
that you can't actually use DEFAULT).
|
||||
[Bodo Moeller; suggested by Victor Duchovni]
|
||||
|
||||
*) Split the SSL/TLS algorithm mask (as used for ciphersuite string
|
||||
processing) into multiple integers instead of setting
|
||||
"SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
|
||||
"SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
|
||||
(These masks as well as the individual bit definitions are hidden
|
||||
away into the non-exported interface ssl/ssl_locl.h, so this
|
||||
change to the definition of the SSL_CIPHER structure shouldn't
|
||||
affect applications.) This give us more bits for each of these
|
||||
categories, so there is no longer a need to coagulate AES128 and
|
||||
AES256 into a single algorithm bit, and to coagulate Camellia128
|
||||
and Camellia256 into a single algorithm bit, which has led to all
|
||||
kinds of kludges.
|
||||
|
||||
Thus, among other things, the kludge introduced in 0.9.7m and
|
||||
0.9.8e for masking out AES256 independently of AES128 or masking
|
||||
out Camellia256 independently of AES256 is not needed here in 0.9.9.
|
||||
|
||||
With the change, we also introduce new ciphersuite aliases that
|
||||
so far were missing: "AES128", "AES256", "CAMELLIA128", and
|
||||
"CAMELLIA256".
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Add support for dsa-with-SHA224 and dsa-with-SHA256.
|
||||
Use the leftmost N bytes of the signature input if the input is
|
||||
larger than the prime q (with N being the size in bytes of q).
|
||||
[Nils Larsch]
|
||||
|
||||
*) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
|
||||
it yet and it is largely untested.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
|
||||
[Nils Larsch]
|
||||
|
||||
*) Initial incomplete changes to avoid need for function casts in OpenSSL
|
||||
some compilers (gcc 4.2 and later) reject their use. Safestack is
|
||||
reimplemented. Update ASN1 to avoid use of legacy functions.
|
||||
[Steve Henson]
|
||||
|
||||
*) Win32/64 targets are linked with Winsock2.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
|
||||
to external functions. This can be used to increase CRL handling
|
||||
efficiency especially when CRLs are very large by (for example) storing
|
||||
the CRL revoked certificates in a database.
|
||||
[Steve Henson]
|
||||
|
||||
*) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
|
||||
new CRLs added to a directory can be used. New command line option
|
||||
-verify_return_error to s_client and s_server. This causes real errors
|
||||
to be returned by the verify callback instead of carrying on no matter
|
||||
what. This reflects the way a "real world" verify callback would behave.
|
||||
[Steve Henson]
|
||||
|
||||
*) GOST engine, supporting several GOST algorithms and public key formats.
|
||||
Kindly donated by Cryptocom.
|
||||
[Cryptocom]
|
||||
|
||||
*) Partial support for Issuing Distribution Point CRL extension. CRLs
|
||||
partitioned by DP are handled but no indirect CRL or reason partitioning
|
||||
(yet). Complete overhaul of CRL handling: now the most suitable CRL is
|
||||
selected via a scoring technique which handles IDP and AKID in CRLs.
|
||||
[Steve Henson]
|
||||
|
||||
*) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
|
||||
will ultimately be used for all verify operations: this will remove the
|
||||
X509_STORE dependency on certificate verification and allow alternative
|
||||
lookup methods. X509_STORE based implementations of these two callbacks.
|
||||
[Steve Henson]
|
||||
|
||||
*) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
|
||||
Modify get_crl() to find a valid (unexpired) CRL if possible.
|
||||
[Steve Henson]
|
||||
|
||||
*) New function X509_CRL_match() to check if two CRLs are identical. Normally
|
||||
this would be called X509_CRL_cmp() but that name is already used by
|
||||
a function that just compares CRL issuer names. Cache several CRL
|
||||
extensions in X509_CRL structure and cache CRLDP in X509.
|
||||
[Steve Henson]
|
||||
|
||||
*) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
|
||||
this maps equivalent X509_NAME structures into a consistent structure.
|
||||
Name comparison can then be performed rapidly using memcmp().
|
||||
[Steve Henson]
|
||||
|
||||
*) Non-blocking OCSP request processing. Add -timeout option to ocsp
|
||||
utility.
|
||||
[Steve Henson]
|
||||
|
||||
*) Allow digests to supply their own micalg string for S/MIME type using
|
||||
the ctrl EVP_MD_CTRL_MICALG.
|
||||
[Steve Henson]
|
||||
|
||||
*) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
|
||||
EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
|
||||
ctrl. It can then customise the structure before and/or after signing
|
||||
if necessary.
|
||||
[Steve Henson]
|
||||
|
||||
*) New function OBJ_add_sigid() to allow application defined signature OIDs
|
||||
to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
|
||||
to free up any added signature OIDs.
|
||||
[Steve Henson]
|
||||
|
||||
*) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
|
||||
EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
|
||||
digest and cipher tables. New options added to openssl utility:
|
||||
list-message-digest-algorithms and list-cipher-algorithms.
|
||||
[Steve Henson]
|
||||
|
||||
*) Change the array representation of binary polynomials: the list
|
||||
of degrees of non-zero coefficients is now terminated with -1.
|
||||
Previously it was terminated with 0, which was also part of the
|
||||
value; thus, the array representation was not applicable to
|
||||
polynomials where t^0 has coefficient zero. This change makes
|
||||
the array representation useful in a more general context.
|
||||
[Douglas Stebila]
|
||||
|
||||
*) Various modifications and fixes to SSL/TLS cipher string
|
||||
handling. For ECC, the code now distinguishes between fixed ECDH
|
||||
with RSA certificates on the one hand and with ECDSA certificates
|
||||
on the other hand, since these are separate ciphersuites. The
|
||||
unused code for Fortezza ciphersuites has been removed.
|
||||
|
||||
For consistency with EDH, ephemeral ECDH is now called "EECDH"
|
||||
(not "ECDHE"). For consistency with the code for DH
|
||||
certificates, use of ECDH certificates is now considered ECDH
|
||||
authentication, not RSA or ECDSA authentication (the latter is
|
||||
merely the CA's signing algorithm and not actively used in the
|
||||
protocol).
|
||||
|
||||
The temporary ciphersuite alias "ECCdraft" is no longer
|
||||
available, and ECC ciphersuites are no longer excluded from "ALL"
|
||||
and "DEFAULT". The following aliases now exist for RFC 4492
|
||||
ciphersuites, most of these by analogy with the DH case:
|
||||
|
||||
kECDHr - ECDH cert, signed with RSA
|
||||
kECDHe - ECDH cert, signed with ECDSA
|
||||
kECDH - ECDH cert (signed with either RSA or ECDSA)
|
||||
kEECDH - ephemeral ECDH
|
||||
ECDH - ECDH cert or ephemeral ECDH
|
||||
|
||||
aECDH - ECDH cert
|
||||
aECDSA - ECDSA cert
|
||||
ECDSA - ECDSA cert
|
||||
|
||||
AECDH - anonymous ECDH
|
||||
EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
|
||||
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
|
||||
Use correct micalg parameters depending on digest(s) in signed message.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
|
||||
an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
|
||||
[Steve Henson]
|
||||
|
||||
*) Initial engine support for EVP_PKEY_METHOD. New functions to permit
|
||||
an engine to register a method. Add ENGINE lookups for methods and
|
||||
functional reference processing.
|
||||
[Steve Henson]
|
||||
|
||||
*) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
|
||||
EVP_{Sign,Verify}* which allow an application to customise the signature
|
||||
process.
|
||||
[Steve Henson]
|
||||
|
||||
*) New -resign option to smime utility. This adds one or more signers
|
||||
to an existing PKCS#7 signedData structure. Also -md option to use an
|
||||
alternative message digest algorithm for signing.
|
||||
[Steve Henson]
|
||||
|
||||
*) Tidy up PKCS#7 routines and add new functions to make it easier to
|
||||
create PKCS7 structures containing multiple signers. Update smime
|
||||
application to support multiple signers.
|
||||
[Steve Henson]
|
||||
|
||||
*) New -macalg option to pkcs12 utility to allow setting of an alternative
|
||||
digest MAC.
|
||||
[Steve Henson]
|
||||
|
||||
*) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
|
||||
Reorganize PBE internals to lookup from a static table using NIDs,
|
||||
add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
|
||||
EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
|
||||
PRF which will be automatically used with PBES2.
|
||||
[Steve Henson]
|
||||
|
||||
*) Replace the algorithm specific calls to generate keys in "req" with the
|
||||
new API.
|
||||
[Steve Henson]
|
||||
|
||||
*) Update PKCS#7 enveloped data routines to use new API. This is now
|
||||
supported by any public key method supporting the encrypt operation. A
|
||||
ctrl is added to allow the public key algorithm to examine or modify
|
||||
the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
|
||||
a no op.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add a ctrl to asn1 method to allow a public key algorithm to express
|
||||
a default digest type to use. In most cases this will be SHA1 but some
|
||||
algorithms (such as GOST) need to specify an alternative digest. The
|
||||
return value indicates how strong the prefernce is 1 means optional and
|
||||
2 is mandatory (that is it is the only supported type). Modify
|
||||
ASN1_item_sign() to accept a NULL digest argument to indicate it should
|
||||
use the default md. Update openssl utilities to use the default digest
|
||||
type for signing if it is not explicitly indicated.
|
||||
[Steve Henson]
|
||||
|
||||
*) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
|
||||
EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
|
||||
signing method from the key type. This effectively removes the link
|
||||
between digests and public key types.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add an OID cross reference table and utility functions. Its purpose is to
|
||||
translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
|
||||
rsaEncryption. This will allow some of the algorithm specific hackery
|
||||
needed to use the correct OID to be removed.
|
||||
[Steve Henson]
|
||||
|
||||
*) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
|
||||
structures for PKCS7_sign(). They are now set up by the relevant public
|
||||
key ASN1 method.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add provisional EC pkey method with support for ECDSA and ECDH.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add support for key derivation (agreement) in the API, DH method and
|
||||
pkeyutl.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
|
||||
public and private key formats. As a side effect these add additional
|
||||
command line functionality not previously available: DSA signatures can be
|
||||
generated and verified using pkeyutl and DH key support and generation in
|
||||
pkey, genpkey.
|
||||
[Steve Henson]
|
||||
|
||||
*) BeOS support.
|
||||
[Oliver Tappe <zooey@hirschkaefer.de>]
|
||||
|
||||
*) New make target "install_html_docs" installs HTML renditions of the
|
||||
manual pages.
|
||||
[Oliver Tappe <zooey@hirschkaefer.de>]
|
||||
|
||||
*) New utility "genpkey" this is analagous to "genrsa" etc except it can
|
||||
generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
|
||||
support key and parameter generation and add initial key generation
|
||||
functionality for RSA.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add functions for main EVP_PKEY_method operations. The undocumented
|
||||
functions EVP_PKEY_{encrypt,decrypt} have been renamed to
|
||||
EVP_PKEY_{encrypt,decrypt}_old.
|
||||
[Steve Henson]
|
||||
|
||||
*) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
|
||||
key API, doesn't do much yet.
|
||||
[Steve Henson]
|
||||
|
||||
*) New function EVP_PKEY_asn1_get0_info() to retrieve information about
|
||||
public key algorithms. New option to openssl utility:
|
||||
"list-public-key-algorithms" to print out info.
|
||||
[Steve Henson]
|
||||
|
||||
*) Implement the Supported Elliptic Curves Extension for
|
||||
ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
|
||||
[Douglas Stebila]
|
||||
|
||||
*) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
|
||||
EVP_CIPHER structures to avoid later problems in EVP_cleanup().
|
||||
[Steve Henson]
|
||||
|
||||
*) New utilities pkey and pkeyparam. These are similar to algorithm specific
|
||||
utilities such as rsa, dsa, dsaparam etc except they process any key
|
||||
type.
|
||||
[Steve Henson]
|
||||
|
||||
*) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
|
||||
functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
|
||||
EVP_PKEY_print_param() to print public key data from an EVP_PKEY
|
||||
structure.
|
||||
[Steve Henson]
|
||||
|
||||
*) Initial support for pluggable public key ASN1.
|
||||
De-spaghettify the public key ASN1 handling. Move public and private
|
||||
key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
|
||||
algorithm specific handling to a single module within the relevant
|
||||
algorithm directory. Add functions to allow (near) opaque processing
|
||||
of public and private key structures.
|
||||
[Steve Henson]
|
||||
|
||||
*) Implement the Supported Point Formats Extension for
|
||||
ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
|
||||
[Douglas Stebila]
|
||||
|
||||
*) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
|
||||
for the psk identity [hint] and the psk callback functions to the
|
||||
SSL_SESSION, SSL and SSL_CTX structure.
|
||||
|
||||
New ciphersuites:
|
||||
PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
|
||||
PSK-AES256-CBC-SHA
|
||||
|
||||
New functions:
|
||||
SSL_CTX_use_psk_identity_hint
|
||||
SSL_get_psk_identity_hint
|
||||
SSL_get_psk_identity
|
||||
SSL_use_psk_identity_hint
|
||||
|
||||
[Mika Kousa and Pasi Eronen of Nokia Corporation]
|
||||
|
||||
*) Add RFC 3161 compliant time stamp request creation, response generation
|
||||
and response verification functionality.
|
||||
[Zolt<6C>n Gl<47>zik <zglozik@opentsa.org>, The OpenTSA Project]
|
||||
|
||||
*) Add initial support for TLS extensions, specifically for the server_name
|
||||
extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
|
||||
have new members for a host name. The SSL data structure has an
|
||||
additional member SSL_CTX *initial_ctx so that new sessions can be
|
||||
stored in that context to allow for session resumption, even after the
|
||||
SSL has been switched to a new SSL_CTX in reaction to a client's
|
||||
server_name extension.
|
||||
|
||||
New functions (subject to change):
|
||||
|
||||
SSL_get_servername()
|
||||
SSL_get_servername_type()
|
||||
SSL_set_SSL_CTX()
|
||||
|
||||
New CTRL codes and macros (subject to change):
|
||||
|
||||
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
|
||||
- SSL_CTX_set_tlsext_servername_callback()
|
||||
SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
|
||||
- SSL_CTX_set_tlsext_servername_arg()
|
||||
SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
|
||||
|
||||
openssl s_client has a new '-servername ...' option.
|
||||
|
||||
openssl s_server has new options '-servername_host ...', '-cert2 ...',
|
||||
'-key2 ...', '-servername_fatal' (subject to change). This allows
|
||||
testing the HostName extension for a specific single host name ('-cert'
|
||||
and '-key' remain fallbacks for handshakes without HostName
|
||||
negotiation). If the unrecogninzed_name alert has to be sent, this by
|
||||
default is a warning; it becomes fatal with the '-servername_fatal'
|
||||
option.
|
||||
|
||||
[Peter Sylvester, Remy Allais, Christophe Renou]
|
||||
|
||||
*) Whirlpool hash implementation is added.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
|
||||
bn(64,32). Because of instruction set limitations it doesn't have
|
||||
any negative impact on performance. This was done mostly in order
|
||||
to make it possible to share assembler modules, such as bn_mul_mont
|
||||
implementations, between 32- and 64-bit builds without hassle.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) Move code previously exiled into file crypto/ec/ec2_smpt.c
|
||||
to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
|
||||
macro.
|
||||
[Bodo Moeller]
|
||||
|
||||
*) New candidate for BIGNUM assembler implementation, bn_mul_mont,
|
||||
dedicated Montgomery multiplication procedure, is introduced.
|
||||
BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
|
||||
"64-bit" performance on certain 32-bit targets.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) New option SSL_OP_NO_COMP to disable use of compression selectively
|
||||
in SSL structures. New SSL ctrl to set maximum send fragment size.
|
||||
Save memory by seeting the I/O buffer sizes dynamically instead of
|
||||
using the maximum available value.
|
||||
[Steve Henson]
|
||||
|
||||
*) New option -V for 'openssl ciphers'. This prints the ciphersuite code
|
||||
in addition to the text details.
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Very, very preliminary EXPERIMENTAL support for printing of general
|
||||
ASN1 structures. This currently produces rather ugly output and doesn't
|
||||
handle several customised structures at all.
|
||||
[Steve Henson]
|
||||
|
||||
*) Integrated support for PVK file format and some related formats such
|
||||
as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
|
||||
these in the 'rsa' and 'dsa' utilities.
|
||||
[Steve Henson]
|
||||
|
||||
*) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
|
||||
[Steve Henson]
|
||||
|
||||
*) Remove the ancient ASN1_METHOD code. This was only ever used in one
|
||||
place for the (very old) "NETSCAPE" format certificates which are now
|
||||
handled using new ASN1 code equivalents.
|
||||
[Steve Henson]
|
||||
|
||||
*) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
|
||||
pointer and make the SSL_METHOD parameter in SSL_CTX_new,
|
||||
SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
|
||||
[Nils Larsch]
|
||||
|
||||
*) Modify CRL distribution points extension code to print out previously
|
||||
unsupported fields. Enhance extension setting code to allow setting of
|
||||
all fields.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add print and set support for Issuing Distribution Point CRL extension.
|
||||
[Steve Henson]
|
||||
|
||||
*) Change 'Configure' script to enable Camellia by default.
|
||||
[NTT]
|
||||
|
||||
Changes between 0.9.8k and 0.9.8l [xx XXX xxxx]
|
||||
|
||||
*) Add 2.5.4.* OIDs
|
||||
[Ilya O. <vrghost@gmail.com>]
|
||||
|
||||
Changes between 0.9.8j and 0.9.8k [25 Mar 2009]
|
||||
|
||||
*) Don't set val to NULL when freeing up structures, it is freed up by
|
||||
underlying code. If sizeof(void *) > sizeof(long) this can result in
|
||||
zeroing past the valid field. (CVE-2009-0789)
|
||||
[Paolo Ganci <Paolo.Ganci@AdNovum.CH>]
|
||||
|
||||
*) Fix bug where return value of CMS_SignerInfo_verify_content() was not
|
||||
checked correctly. This would allow some invalid signed attributes to
|
||||
appear to verify correctly. (CVE-2009-0591)
|
||||
[Ivan Nestlerode <inestlerode@us.ibm.com>]
|
||||
|
||||
*) Reject UniversalString and BMPString types with invalid lengths. This
|
||||
prevents a crash in ASN1_STRING_print_ex() which assumes the strings have
|
||||
a legal length. (CVE-2009-0590)
|
||||
[Steve Henson]
|
||||
|
||||
*) Set S/MIME signing as the default purpose rather than setting it
|
||||
unconditionally. This allows applications to override it at the store
|
||||
level.
|
||||
[Steve Henson]
|
||||
|
||||
*) Permit restricted recursion of ASN1 strings. This is needed in practice
|
||||
to handle some structures.
|
||||
[Steve Henson]
|
||||
|
||||
*) Improve efficiency of mem_gets: don't search whole buffer each time
|
||||
for a '\n'
|
||||
[Jeremy Shapiro <jnshapir@us.ibm.com>]
|
||||
|
||||
*) New -hex option for openssl rand.
|
||||
[Matthieu Herrb]
|
||||
|
||||
*) Print out UTF8String and NumericString when parsing ASN1.
|
||||
[Steve Henson]
|
||||
|
||||
*) Support NumericString type for name components.
|
||||
[Steve Henson]
|
||||
|
||||
*) Allow CC in the environment to override the automatically chosen
|
||||
compiler. Note that nothing is done to ensure flags work with the
|
||||
chosen compiler.
|
||||
[Ben Laurie]
|
||||
|
||||
Changes between 0.9.8i and 0.9.8j [07 Jan 2009]
|
||||
|
||||
*) Properly check EVP_VerifyFinal() and similar return values
|
||||
(CVE-2008-5077).
|
||||
[Ben Laurie, Bodo Moeller, Google Security Team]
|
||||
|
||||
*) Enable TLS extensions by default.
|
||||
[Ben Laurie]
|
||||
|
||||
*) Allow the CHIL engine to be loaded, whether the application is
|
||||
multithreaded or not. (This does not release the developer from the
|
||||
obligation to set up the dynamic locking callbacks.)
|
||||
[Sander Temme <sander@temme.net>]
|
||||
|
||||
*) Use correct exit code if there is an error in dgst command.
|
||||
[Steve Henson; problem pointed out by Roland Dirlewanger]
|
||||
|
||||
*) Tweak Configure so that you need to say "experimental-jpake" to enable
|
||||
JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Add experimental JPAKE support, including demo authentication in
|
||||
s_client and s_server.
|
||||
[Ben Laurie]
|
||||
|
||||
*) Set the comparison function in v3_addr_canonize().
|
||||
[Rob Austein <sra@hactrn.net>]
|
||||
|
||||
*) Add support for XMPP STARTTLS in s_client.
|
||||
[Philip Paeps <philip@freebsd.org>]
|
||||
|
||||
*) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
|
||||
to ensure that even with this option, only ciphersuites in the
|
||||
server's preference list will be accepted. (Note that the option
|
||||
applies only when resuming a session, so the earlier behavior was
|
||||
just about the algorithm choice for symmetric cryptography.)
|
||||
[Bodo Moeller]
|
||||
|
||||
Changes between 0.9.8h and 0.9.8i [15 Sep 2008]
|
||||
|
||||
*) Fix a state transitition in s3_srvr.c and d1_srvr.c
|
||||
(was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
|
||||
[Nagendra Modadugu]
|
||||
|
||||
*) The fix in 0.9.8c that supposedly got rid of unsafe
|
||||
double-checked locking was incomplete for RSA blinding,
|
||||
addressing just one layer of what turns out to have been
|
||||
doubly unsafe triple-checked locking.
|
||||
|
||||
So now fix this for real by retiring the MONT_HELPER macro
|
||||
in crypto/rsa/rsa_eay.c.
|
||||
|
||||
[Bodo Moeller; problem pointed out by Marius Schilder]
|
||||
|
||||
*) Various precautionary measures:
|
||||
|
||||
- Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
|
||||
|
||||
- Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
|
||||
(NB: This would require knowledge of the secret session ticket key
|
||||
to exploit, in which case you'd be SOL either way.)
|
||||
|
||||
- Change bn_nist.c so that it will properly handle input BIGNUMs
|
||||
outside the expected range.
|
||||
|
||||
- Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
|
||||
builds.
|
||||
|
||||
[Neel Mehta, Bodo Moeller]
|
||||
|
||||
*) Allow engines to be "soft loaded" - i.e. optionally don't die if
|
||||
the load fails. Useful for distros.
|
||||
[Ben Laurie and the FreeBSD team]
|
||||
|
||||
*) Add support for Local Machine Keyset attribute in PKCS#12 files.
|
||||
[Steve Henson]
|
||||
|
||||
*) Fix BN_GF2m_mod_arr() top-bit cleanup code.
|
||||
[Huang Ying]
|
||||
|
||||
*) Expand ENGINE to support engine supplied SSL client certificate functions.
|
||||
|
||||
This work was sponsored by Logica.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
|
||||
keystores. Support for SSL/TLS client authentication too.
|
||||
Not compiled unless enable-capieng specified to Configure.
|
||||
|
||||
This work was sponsored by Logica.
|
||||
[Steve Henson]
|
||||
|
||||
*) Fix bug in X509_ATTRIBUTE creation: dont set attribute using
|
||||
ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
|
||||
attribute creation routines such as certifcate requests and PKCS#12
|
||||
files.
|
||||
[Steve Henson]
|
||||
|
||||
Changes between 0.9.8g and 0.9.8h [28 May 2008]
|
||||
|
||||
*) Fix flaw if 'Server Key exchange message' is omitted from a TLS
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
This file, together with ChangeLog.0_9_7-stable_not-in-head_FIPS,
|
||||
provides a collection of those CVS change log entries for the
|
||||
0.9.7 branch (OpenSSL_0_9_7-stable) that do not appear similarly in
|
||||
0.9.8-dev (CVS head).
|
||||
|
||||
ChangeLog.0_9_7-stable_not-in-head_FIPS - "FIPS" related changes
|
||||
ChangeLog.0_9_7-stable_not-in-head - everything else
|
||||
|
||||
Some obvious false positives have been eliminated: e.g., we do not
|
||||
care about a simple "make update"; and we don't care about changes
|
||||
identified to the 0.9.7 branch that were explicitly identified as
|
||||
backports from head.
|
||||
|
||||
Eliminating all other entries (and finally this file and its
|
||||
compantion), either as false positives or as things that should go
|
||||
into 0.9.8, remains to be done. Any additional changes to 0.9.7 that
|
||||
are not immediately put into 0.9.8, but belong there as well, should
|
||||
be added to the end of this file.
|
||||
|
||||
|
||||
2002-11-04 17:33 levitte
|
||||
|
||||
Changed:
|
||||
Configure (1.314.2.38), "Exp", lines: +4 -2
|
||||
|
||||
Return my normal debug targets to something not so extreme, and
|
||||
make the extreme ones special (or 'extreme', if you will :-)).
|
||||
|
||||
2002-12-16 19:17 appro
|
||||
|
||||
Changed:
|
||||
crypto/bn/bn_lcl.h (1.23.2.3), "Exp", lines: +3 -0
|
||||
crypto/bn/bn_mul.c (1.28.2.4), "Exp", lines: +84 -445
|
||||
|
||||
This is rollback to 0.9.6h bn_mul.c to address problem reported in
|
||||
RT#272.
|
||||
|
||||
2003-07-27 15:46 ben
|
||||
|
||||
Changed:
|
||||
crypto/aes/aes.h (1.1.2.5), "Exp", lines: +3 -0
|
||||
crypto/aes/aes_cfb.c (1.1.2.4), "Exp", lines: +57 -0
|
||||
|
||||
Add untested CFB-r mode. Will be tested soon.
|
||||
|
||||
2003-07-28 17:07 ben
|
||||
|
||||
Changed:
|
||||
Makefile.org (1.154.2.69), "Exp", lines: +5 -1
|
||||
crypto/aes/aes.h (1.1.2.6), "Exp", lines: +3 -0
|
||||
crypto/aes/aes_cfb.c (1.1.2.5), "Exp", lines: +19 -0
|
||||
crypto/dsa/Makefile.ssl (1.49.2.6), "Exp", lines: +3 -2
|
||||
crypto/err/Makefile.ssl (1.48.2.4), "Exp", lines: +17 -16
|
||||
crypto/evp/e_aes.c (1.6.2.5), "Exp", lines: +8 -0
|
||||
crypto/evp/e_des.c (1.5.2.2), "Exp", lines: +1 -1
|
||||
crypto/evp/e_des3.c (1.8.2.3), "Exp", lines: +2 -2
|
||||
crypto/evp/evp.h (1.86.2.11), "Exp", lines: +28 -11
|
||||
crypto/evp/evp_locl.h (1.7.2.3), "Exp", lines: +2 -2
|
||||
crypto/objects/obj_dat.h (1.49.2.13), "Exp", lines: +10 -5
|
||||
crypto/objects/obj_mac.h (1.19.2.13), "Exp", lines: +5 -0
|
||||
crypto/objects/obj_mac.num (1.15.2.9), "Exp", lines: +1 -0
|
||||
crypto/objects/objects.txt (1.20.2.14), "Exp", lines: +4 -0
|
||||
fips/Makefile.ssl (1.1.2.3), "Exp", lines: +7 -0
|
||||
fips/aes/Makefile.ssl (1.1.2.2), "Exp", lines: +23 -1
|
||||
fips/aes/fips_aesavs.c (1.1.2.3), "Exp", lines: +9 -1
|
||||
test/Makefile.ssl (1.84.2.30), "Exp", lines: +101 -43
|
||||
|
||||
Add support for partial CFB modes, make tests work, update
|
||||
dependencies.
|
||||
|
||||
2003-07-29 12:56 ben
|
||||
|
||||
Changed:
|
||||
crypto/aes/aes_cfb.c (1.1.2.6), "Exp", lines: +9 -6
|
||||
crypto/evp/c_allc.c (1.8.2.3), "Exp", lines: +1 -0
|
||||
crypto/evp/evp_test.c (1.14.2.11), "Exp", lines: +17 -8
|
||||
crypto/evp/evptests.txt (1.9.2.2), "Exp", lines: +48 -1
|
||||
|
||||
Working CFB1 and test vectors.
|
||||
|
||||
2003-07-29 15:24 ben
|
||||
|
||||
Changed:
|
||||
crypto/evp/e_aes.c (1.6.2.6), "Exp", lines: +14 -0
|
||||
crypto/objects/obj_dat.h (1.49.2.14), "Exp", lines: +15 -5
|
||||
crypto/objects/obj_mac.h (1.19.2.14), "Exp", lines: +10 -0
|
||||
crypto/objects/obj_mac.num (1.15.2.10), "Exp", lines: +2 -0
|
||||
crypto/objects/objects.txt (1.20.2.15), "Exp", lines: +2 -0
|
||||
fips/aes/Makefile.ssl (1.1.2.3), "Exp", lines: +1 -1
|
||||
fips/aes/fips_aesavs.c (1.1.2.4), "Exp", lines: +34 -19
|
||||
|
||||
The rest of the keysizes for CFB1, working AES AVS test for CFB1.
|
||||
|
||||
2003-07-29 19:05 ben
|
||||
|
||||
Changed:
|
||||
crypto/aes/aes.h (1.1.2.7), "Exp", lines: +3 -0
|
||||
crypto/aes/aes_cfb.c (1.1.2.7), "Exp", lines: +14 -0
|
||||
crypto/evp/c_allc.c (1.8.2.4), "Exp", lines: +1 -0
|
||||
crypto/evp/e_aes.c (1.6.2.7), "Exp", lines: +4 -9
|
||||
crypto/evp/evptests.txt (1.9.2.3), "Exp", lines: +48 -0
|
||||
crypto/objects/obj_dat.h (1.49.2.15), "Exp", lines: +20 -5
|
||||
crypto/objects/obj_mac.h (1.19.2.15), "Exp", lines: +15 -0
|
||||
crypto/objects/obj_mac.num (1.15.2.11), "Exp", lines: +3 -0
|
||||
crypto/objects/objects.txt (1.20.2.16), "Exp", lines: +3 -0
|
||||
fips/aes/fips_aesavs.c (1.1.2.7), "Exp", lines: +11 -0
|
||||
|
||||
AES CFB8.
|
||||
|
||||
2003-07-30 20:30 ben
|
||||
|
||||
Changed:
|
||||
Makefile.org (1.154.2.70), "Exp", lines: +16 -5
|
||||
crypto/des/cfb_enc.c (1.7.2.1), "Exp", lines: +2 -1
|
||||
crypto/des/des_enc.c (1.11.2.2), "Exp", lines: +4 -0
|
||||
crypto/evp/e_aes.c (1.6.2.8), "Exp", lines: +7 -14
|
||||
crypto/evp/e_des.c (1.5.2.3), "Exp", lines: +37 -1
|
||||
crypto/evp/evp.h (1.86.2.12), "Exp", lines: +6 -0
|
||||
crypto/evp/evp_locl.h (1.7.2.4), "Exp", lines: +9 -0
|
||||
crypto/objects/obj_dat.h (1.49.2.16), "Exp", lines: +48 -23
|
||||
crypto/objects/obj_mac.h (1.19.2.16), "Exp", lines: +31 -6
|
||||
crypto/objects/obj_mac.num (1.15.2.12), "Exp", lines: +5 -0
|
||||
crypto/objects/objects.txt (1.20.2.17), "Exp", lines: +12 -6
|
||||
fips/Makefile.ssl (1.1.2.4), "Exp", lines: +8 -1
|
||||
fips/fips_make_sha1 (1.1.2.3), "Exp", lines: +3 -0
|
||||
fips/aes/Makefile.ssl (1.1.2.4), "Exp", lines: +1 -1
|
||||
fips/des/.cvsignore (1.1.2.1), "Exp", lines: +3 -0
|
||||
fips/des/Makefile.ssl (1.1.2.1), "Exp", lines: +96 -0
|
||||
fips/des/fingerprint.sha1 (1.1.2.1), "Exp", lines: +2 -0
|
||||
fips/des/fips_des_enc.c (1.1.2.1), "Exp", lines: +288 -0
|
||||
fips/des/fips_des_locl.h (1.1.2.1), "Exp", lines: +428 -0
|
||||
fips/des/fips_desmovs.c (1.1.2.1), "Exp", lines: +659 -0
|
||||
|
||||
Whoops, forgot FIPS DES, also add EVPs for DES CFB1 and 8.
|
||||
|
||||
2003-08-01 12:25 ben
|
||||
|
||||
Changed:
|
||||
crypto/des/cfb_enc.c (1.7.2.2), "Exp", lines: +45 -36
|
||||
crypto/evp/c_allc.c (1.8.2.5), "Exp", lines: +2 -0
|
||||
crypto/evp/e_des.c (1.5.2.4), "Exp", lines: +8 -3
|
||||
crypto/evp/evptests.txt (1.9.2.4), "Exp", lines: +6 -0
|
||||
|
||||
Fix DES CFB-r.
|
||||
|
||||
2003-08-01 12:31 ben
|
||||
|
||||
Changed:
|
||||
crypto/evp/evptests.txt (1.9.2.5), "Exp", lines: +4 -0
|
||||
|
||||
DES CFB8 test.
|
||||
|
||||
2005-04-19 16:21 appro
|
||||
|
||||
Changed:
|
||||
Configure (1.314.2.117), "Exp", lines: +24 -21
|
||||
Makefile.org (1.154.2.100), "Exp", lines: +1 -11
|
||||
TABLE (1.99.2.52), "Exp", lines: +20 -20
|
||||
apps/Makefile (1.1.4.15), "Exp", lines: +1 -1
|
||||
test/Makefile (1.1.4.12), "Exp", lines: +1 -1
|
||||
|
||||
Enable shared link on HP-UX.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
433
Configure
433
Configure
@@ -10,7 +10,7 @@ use strict;
|
||||
|
||||
# see INSTALL for instructions.
|
||||
|
||||
my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
|
||||
my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
|
||||
|
||||
# Options:
|
||||
#
|
||||
@@ -38,6 +38,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
|
||||
# --test-sanity Make a number of sanity checks on the data in this file.
|
||||
# This is a debugging tool for OpenSSL developers.
|
||||
#
|
||||
# --cross-compile-prefix Add specified prefix to binutils components.
|
||||
#
|
||||
# no-hw-xxx do not compile support for specific crypto hardware.
|
||||
# Generic OpenSSL-style methods relating to this support
|
||||
# are always compiled but return NULL if the hardware
|
||||
@@ -54,8 +56,6 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
|
||||
# [no-]zlib [don't] compile support for zlib compression.
|
||||
# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared
|
||||
# library and will be loaded in run-time by the OpenSSL library.
|
||||
# enable-montasm 0.9.8 branch only: enable Montgomery x86 assembler backport
|
||||
# from 0.9.9
|
||||
# 386 generate 80386 code
|
||||
# no-sse2 disables IA-32 SSE2 code, above option implies no-sse2
|
||||
# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
|
||||
@@ -99,6 +99,11 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
|
||||
# SHA512_ASM sha512_block is implemented in assembler
|
||||
# AES_ASM ASE_[en|de]crypt is implemented in assembler
|
||||
|
||||
# Minimum warning options... any contributions to OpenSSL should at least get
|
||||
# past these.
|
||||
|
||||
my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED";
|
||||
|
||||
my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
|
||||
|
||||
# MD2_CHAR slags pentium pros
|
||||
@@ -116,14 +121,21 @@ my $tlib="-lnsl -lsocket";
|
||||
my $bits1="THIRTY_TWO_BIT ";
|
||||
my $bits2="SIXTY_FOUR_BIT ";
|
||||
|
||||
my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o MAYBE-MO86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o rc4_skey.o:rm86-elf.o:r586-elf.o";
|
||||
my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o MAYBE-MO86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o rc4_skey.o:rm86-cof.o:r586-cof.o";
|
||||
my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o MAYBE-MO86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o rc4_skey.o:rm86-out.o:r586-out.o";
|
||||
my $x86_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes-586.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:cmll-x86.o";
|
||||
|
||||
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o::";
|
||||
my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o::";
|
||||
my $x86_elf_asm="$x86_asm:elf";
|
||||
|
||||
my $no_asm="::::::::::";
|
||||
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o";
|
||||
my $ia64_asm="ia64cpuid.o:bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::::void";
|
||||
my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o:::sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::::void";
|
||||
my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::void";
|
||||
my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o::::::::::::void";
|
||||
my $mips3_asm=":bn-mips3.o::::::::::::void";
|
||||
my $s390x_asm="s390xcpuid.o:bn-s390x.o s390x-mont.o::aes-s390x.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o::rc4-s390x.o:::::void";
|
||||
my $armv4_asm=":bn_asm.o armv4-mont.o::aes_cbc.o aes-armv4.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::void";
|
||||
my $ppc32_asm="ppccpuid.o:bn-ppc.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o::::::";
|
||||
my $ppc64_asm="ppccpuid.o:bn-ppc.o ppc-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::";
|
||||
my $no_asm=":::::::::::::void";
|
||||
|
||||
# As for $BSDthreads. Idea is to maintain "collective" set of flags,
|
||||
# which would cover all BSD flavors. -pthread applies to them all,
|
||||
@@ -134,7 +146,7 @@ my $no_asm="::::::::::";
|
||||
# seems to be sufficient?
|
||||
my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
|
||||
|
||||
#config-string $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags
|
||||
#config-string $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $wp_obj : $cmll_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags : $multilib
|
||||
|
||||
my %table=(
|
||||
# File 'TABLE' (created by 'make TABLE') contains the data from this list,
|
||||
@@ -152,25 +164,26 @@ my %table=(
|
||||
"debug-ben", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o",
|
||||
"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
|
||||
"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
|
||||
"debug-ben-debug", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::::",
|
||||
"debug-ben-debug", "gcc:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -g3 -O2 -pipe::(unknown)::::::",
|
||||
"debug-ben-no-opt", "gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(unknown)::::::",
|
||||
"debug-ben-strict", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
|
||||
"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
|
||||
"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
|
||||
"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
|
||||
"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
|
||||
"debug-steve64", "gcc:-m64 -DL_ENDIAN -DTERMIO -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -DOPENSSL_NO_DEPRECATED -g -pedantic -Wall -Werror -Wno-long-long -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-steve32", "gcc:-m32 -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -DOPENSSL_NO_DEPRECATED -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
|
||||
"debug-steve-opt", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -O3 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
|
||||
"debug-steve-linux-pseudo64", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
|
||||
"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -g -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
|
||||
"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
|
||||
"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-geoff32","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -DMD32_REG_T=int -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-geoff64","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -DMD32_REG_T=int -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
|
||||
"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
|
||||
"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-linux-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes_x86core.o aes_cbc.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o::elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"dist", "cc:-O::(unknown)::::::",
|
||||
|
||||
# Basic configs that should work on any (32 and less bit) box
|
||||
@@ -196,33 +209,33 @@ my %table=(
|
||||
# actually recommend to consider using gcc shared build even with vendor
|
||||
# compiler:-)
|
||||
# <appro@fy.chalmers.se>
|
||||
"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
|
||||
|
||||
#### Solaris x86 with Sun C setups
|
||||
"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
|
||||
|
||||
#### SPARC Solaris with GNU C setups
|
||||
"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
|
||||
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
|
||||
####
|
||||
"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
#### SPARC Solaris with Sun C setups
|
||||
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
|
||||
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
|
||||
# SC5.0 note: Compiler common patch 107357-01 or later is required!
|
||||
"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
|
||||
"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs::/64",
|
||||
####
|
||||
"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
#### SunOS configs, assuming sparc for the gcc one.
|
||||
#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
|
||||
@@ -235,11 +248,11 @@ my %table=(
|
||||
#### IRIX 6.x configs
|
||||
# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
|
||||
# './Configure irix-cc -o32' manually.
|
||||
"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${mips3_asm}:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
|
||||
"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${mips3_asm}:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
|
||||
# N64 ABI builds.
|
||||
"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_asm}:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_asm}:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
|
||||
#### Unified HP-UX ANSI C configs.
|
||||
# Special notes:
|
||||
@@ -272,8 +285,8 @@ my %table=(
|
||||
# Since there is mention of this in shlib/hpux10-cc.sh
|
||||
"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::::void:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::::void:dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64",
|
||||
|
||||
# More attempts at unified 10.X and 11.X targets for HP C compiler.
|
||||
#
|
||||
@@ -281,17 +294,17 @@ my %table=(
|
||||
# Kevin Steves <ks@hp.se>
|
||||
"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::::void:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::::void:dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64",
|
||||
|
||||
# HP/UX IA-64 targets
|
||||
"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32",
|
||||
# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
|
||||
# with debugging of the following config.
|
||||
"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64",
|
||||
# GCC builds...
|
||||
"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32",
|
||||
"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64",
|
||||
|
||||
# Legacy HPUX 9.X configs...
|
||||
"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
@@ -309,9 +322,9 @@ my %table=(
|
||||
#
|
||||
# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
|
||||
#
|
||||
"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${no_asm}:dlfcn:alpha-osf1-shared:::.so",
|
||||
"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared:::.so",
|
||||
"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
|
||||
"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
|
||||
"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
|
||||
"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
|
||||
|
||||
####
|
||||
#### Variety of LINUX:-)
|
||||
@@ -319,27 +332,31 @@ my %table=(
|
||||
# *-generic* is endian-neutral target, but ./config is free to
|
||||
# throw in -D[BL]_ENDIAN, whichever appropriate...
|
||||
"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# It's believed that majority of ARM toolchains predefine appropriate -march.
|
||||
# If you compiler does not, do complement config command line with one!
|
||||
"linux-armv4", "gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
#### IA-32 targets...
|
||||
"linux-ia32-icc", "icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
|
||||
"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out",
|
||||
####
|
||||
"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
"linux-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
#### SPARC Linux setups
|
||||
# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
|
||||
# assisted with debugging of following two configs.
|
||||
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# it's a real mess with -mcpu=ultrasparc option under Linux, but
|
||||
# -Wa,-Av8plus should do the trick no matter what.
|
||||
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# GCC 3.1 is a requirement
|
||||
"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
#### Alpha Linux with GNU C and Compaq C setups
|
||||
# Special notes:
|
||||
# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
|
||||
@@ -353,25 +370,25 @@ my %table=(
|
||||
#
|
||||
# <appro@fy.chalmers.se>
|
||||
#
|
||||
"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
|
||||
"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
|
||||
"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
|
||||
"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
|
||||
|
||||
#### *BSD [do see comment about ${BSDthreads} above!]
|
||||
"BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
|
||||
# simply *happens* to work around a compiler bug in gcc 3.3.3,
|
||||
# triggered by RIPEMD160 code.
|
||||
"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:${sparcv9_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
"bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
@@ -385,6 +402,10 @@ my %table=(
|
||||
"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
|
||||
"qnx6", "cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:",
|
||||
|
||||
# BeOS
|
||||
"beos-x86-r5", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so",
|
||||
"beos-x86-bone", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lbind -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC:-shared:.so",
|
||||
|
||||
#### SCO/Caldera targets.
|
||||
#
|
||||
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
|
||||
@@ -407,12 +428,12 @@ my %table=(
|
||||
|
||||
#### IBM's AIX.
|
||||
"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
|
||||
"aix-gcc", "gcc:-O -DB_ENDIAN::-D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
|
||||
"aix-gcc", "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X32",
|
||||
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
|
||||
# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
|
||||
# at build time. $OBJECT_MODE is respected at ./config stage!
|
||||
"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
|
||||
"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
|
||||
|
||||
#
|
||||
# Cray T90 and similar (SDSC)
|
||||
@@ -460,28 +481,38 @@ my %table=(
|
||||
#
|
||||
"OS390-Unix","c89.sh:-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H -D_ALL_SOURCE::(unknown):::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
|
||||
|
||||
# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
|
||||
"VC-WIN64I","cl::::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
|
||||
"VC-WIN64A","cl::::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
|
||||
|
||||
# Visual C targets
|
||||
"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
|
||||
#
|
||||
# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
|
||||
"VC-WIN64I","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32",
|
||||
"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o::ml64:win32",
|
||||
# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
|
||||
# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
|
||||
"VC-WIN32","cl:-W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
|
||||
# Unified CE target
|
||||
"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
|
||||
"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
|
||||
|
||||
# Borland C++ 4.5
|
||||
"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
|
||||
|
||||
# MinGW
|
||||
"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a",
|
||||
"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::MINGW32:-lws2_32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a",
|
||||
# As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll
|
||||
# compiled with one compiler with application compiled with another
|
||||
# compiler. It's possible to engage Applink support in mingw64 build,
|
||||
# but it's not done, because till mingw64 supports structured exception
|
||||
# handling, one can't seriously consider its binaries for using with
|
||||
# non-mingw64 run-time environment. And as mingw64 is always consistent
|
||||
# with itself, Applink is never engaged and can as well be omitted.
|
||||
"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE:::MINGW64:-lws2_32 -lgdi32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
|
||||
|
||||
# UWIN
|
||||
"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
|
||||
|
||||
# Cygwin
|
||||
"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
|
||||
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_coff_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
|
||||
"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
|
||||
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:coff:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
|
||||
"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
|
||||
|
||||
# NetWare from David Ward (dsward@novell.com)
|
||||
# requires either MetroWerks NLM development tools, or gcc / nlmconv
|
||||
@@ -499,7 +530,7 @@ my %table=(
|
||||
"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
|
||||
|
||||
# DJGPP
|
||||
"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:",
|
||||
"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:",
|
||||
|
||||
# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
|
||||
"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
|
||||
@@ -509,11 +540,12 @@ my %table=(
|
||||
|
||||
##### MacOS X (a.k.a. Rhapsody or Darwin) setup
|
||||
"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
|
||||
"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:ppccpuid_osx64.o:osx_ppc64.o osx_ppc64-mont.o:::::sha1-ppc_osx64.o sha256-ppc_osx64.o sha512-ppc_osx64.o:::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc64_asm}:osx64:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
|
||||
##### A/UX
|
||||
"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
|
||||
@@ -530,7 +562,7 @@ my %table=(
|
||||
##### VxWorks for various targets
|
||||
"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
|
||||
"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
|
||||
"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
|
||||
"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
|
||||
"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
|
||||
"vxworks-mipsle","ccmips:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -DL_ENDIAN -EL -Wl,-EL -mips2 -mno-branch-likely -G 0 -fno-builtin -msoft-float -DCPU=MIPS32 -DMIPSEL -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r::${no_asm}::::::ranlibmips:",
|
||||
|
||||
@@ -564,6 +596,9 @@ my $idx_cast_obj = $idx++;
|
||||
my $idx_rc4_obj = $idx++;
|
||||
my $idx_rmd160_obj = $idx++;
|
||||
my $idx_rc5_obj = $idx++;
|
||||
my $idx_wp_obj = $idx++;
|
||||
my $idx_cmll_obj = $idx++;
|
||||
my $idx_perlasm_scheme = $idx++;
|
||||
my $idx_dso_scheme = $idx++;
|
||||
my $idx_shared_target = $idx++;
|
||||
my $idx_shared_cflag = $idx++;
|
||||
@@ -571,18 +606,19 @@ my $idx_shared_ldflag = $idx++;
|
||||
my $idx_shared_extension = $idx++;
|
||||
my $idx_ranlib = $idx++;
|
||||
my $idx_arflags = $idx++;
|
||||
my $idx_multilib = $idx++;
|
||||
|
||||
my $prefix="";
|
||||
my $openssldir="";
|
||||
my $exe_ext="";
|
||||
my $install_prefix="";
|
||||
my $cross_compile_prefix="";
|
||||
my $no_threads=0;
|
||||
my $threads=0;
|
||||
my $no_shared=0; # but "no-shared" is default
|
||||
my $zlib=1; # but "no-zlib" is default
|
||||
my $no_krb5=0; # but "no-krb5" is implied unless "--with-krb5-..." is used
|
||||
my $no_rfc3779=1; # but "no-rfc3779" is default
|
||||
my $montasm=1; # but "no-montasm" is default
|
||||
my $no_asm=0;
|
||||
my $no_dso=0;
|
||||
my $no_gmp=0;
|
||||
@@ -607,6 +643,7 @@ my $rc5_enc="rc5_enc.o";
|
||||
my $md5_obj="";
|
||||
my $sha1_obj="";
|
||||
my $rmd160_obj="";
|
||||
my $cmll_enc="camellia.o cmll_misc.o cmll_cbc.o";
|
||||
my $processor="";
|
||||
my $default_ranlib;
|
||||
my $perl;
|
||||
@@ -614,27 +651,31 @@ my $perl;
|
||||
|
||||
# All of the following is disabled by default (RC5 was enabled before 0.9.8):
|
||||
|
||||
my %disabled = ( # "what" => "comment"
|
||||
"camellia" => "default",
|
||||
"cms" => "default",
|
||||
"gmp" => "default",
|
||||
my %disabled = ( # "what" => "comment" [or special keyword "experimental"]
|
||||
"gmp" => "default",
|
||||
"jpake" => "experimental",
|
||||
"mdc2" => "default",
|
||||
"montasm" => "default", # explicit option in 0.9.8 only (implicitly enabled in 0.9.9)
|
||||
"rc5" => "default",
|
||||
"rfc3779" => "default",
|
||||
"seed" => "default",
|
||||
"rfc3779" => "default",
|
||||
"shared" => "default",
|
||||
"tlsext" => "default",
|
||||
"store" => "experimental",
|
||||
"zlib" => "default",
|
||||
"zlib-dynamic" => "default"
|
||||
);
|
||||
my @experimental = ();
|
||||
|
||||
# Additional "no-..." options will be collected in %disabled.
|
||||
# To remove something from %disabled, use e.g. "enable-rc5".
|
||||
# For symmetry, "disable-..." is a synonym for "no-...".
|
||||
# This is what $depflags will look like with the above defaults
|
||||
# (we need this to see if we should advise the user to run "make depend"):
|
||||
my $default_depflags = " -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE";
|
||||
|
||||
# This is what $depflags will look like with the above default:
|
||||
my $default_depflags = "-DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED -DOPENSSL_NO_TLSEXT ";
|
||||
|
||||
# Explicit "no-..." options will be collected in %disabled along with the defaults.
|
||||
# To remove something from %disabled, use "enable-foo" (unless it's experimental).
|
||||
# For symmetry, "disable-foo" is a synonym for "no-foo".
|
||||
|
||||
# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable.
|
||||
# We will collect such requests in @experimental.
|
||||
# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO.
|
||||
|
||||
|
||||
my $no_sse2=0;
|
||||
@@ -643,6 +684,7 @@ my $no_sse2=0;
|
||||
|
||||
my $flags;
|
||||
my $depflags;
|
||||
my $openssl_experimental_defines;
|
||||
my $openssl_algorithm_defines;
|
||||
my $openssl_thread_defines;
|
||||
my $openssl_sys_defines="";
|
||||
@@ -663,6 +705,7 @@ while($argv_unprocessed)
|
||||
{
|
||||
$flags="";
|
||||
$depflags="";
|
||||
$openssl_experimental_defines="";
|
||||
$openssl_algorithm_defines="";
|
||||
$openssl_thread_defines="";
|
||||
$openssl_sys_defines="";
|
||||
@@ -688,25 +731,35 @@ PROCESS_ARGS:
|
||||
|
||||
if (/^no-(.+)$/ || /^disable-(.+)$/)
|
||||
{
|
||||
if ($1 eq "ssl")
|
||||
if (!($disabled{$1} eq "experimental"))
|
||||
{
|
||||
$disabled{"ssl2"} = "option(ssl)";
|
||||
$disabled{"ssl3"} = "option(ssl)";
|
||||
}
|
||||
elsif ($1 eq "tls")
|
||||
{
|
||||
$disabled{"tls1"} = "option(tls)"
|
||||
}
|
||||
else
|
||||
{
|
||||
$disabled{$1} = "option";
|
||||
}
|
||||
}
|
||||
elsif (/^enable-(.+)$/)
|
||||
if ($1 eq "ssl")
|
||||
{
|
||||
$disabled{"ssl2"} = "option(ssl)";
|
||||
$disabled{"ssl3"} = "option(ssl)";
|
||||
}
|
||||
elsif ($1 eq "tls")
|
||||
{
|
||||
$disabled{"tls1"} = "option(tls)"
|
||||
}
|
||||
else
|
||||
{
|
||||
$disabled{$1} = "option";
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
|
||||
{
|
||||
delete $disabled{$1};
|
||||
my $algo = $1;
|
||||
if ($disabled{$algo} eq "experimental")
|
||||
{
|
||||
die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n"
|
||||
unless (/^experimental-/);
|
||||
push @experimental, $algo;
|
||||
}
|
||||
delete $disabled{$algo};
|
||||
|
||||
$threads = 1 if ($1 eq "threads");
|
||||
$threads = 1 if ($algo eq "threads");
|
||||
}
|
||||
elsif (/^--test-sanity$/)
|
||||
{
|
||||
@@ -745,7 +798,7 @@ PROCESS_ARGS:
|
||||
}
|
||||
elsif (/^[-+]/)
|
||||
{
|
||||
if (/^-[lL](.*)$/)
|
||||
if (/^-[lL](.*)$/ or /^-Wl,/)
|
||||
{
|
||||
$libs.=$_." ";
|
||||
}
|
||||
@@ -777,6 +830,10 @@ PROCESS_ARGS:
|
||||
{
|
||||
$withargs{"zlib-include"}="-I$1";
|
||||
}
|
||||
elsif (/^--cross-compile-prefix=(.*)$/)
|
||||
{
|
||||
$cross_compile_prefix=$1;
|
||||
}
|
||||
else
|
||||
{
|
||||
print STDERR $usage;
|
||||
@@ -899,8 +956,6 @@ foreach (sort (keys %disabled))
|
||||
{ $no_shared = 1; }
|
||||
elsif (/^zlib$/)
|
||||
{ $zlib = 0; }
|
||||
elsif (/^montasm$/)
|
||||
{ $montasm = 0; }
|
||||
elsif (/^static-engine$/)
|
||||
{ }
|
||||
elsif (/^zlib-dynamic$/)
|
||||
@@ -934,7 +989,7 @@ foreach (sort (keys %disabled))
|
||||
push @skip, $algo;
|
||||
print " (skip dir)";
|
||||
|
||||
$depflags .="-DOPENSSL_NO_$ALGO ";
|
||||
$depflags .= " -DOPENSSL_NO_$ALGO";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -942,12 +997,20 @@ foreach (sort (keys %disabled))
|
||||
print "\n";
|
||||
}
|
||||
|
||||
my $exp_cflags = "";
|
||||
foreach (sort @experimental)
|
||||
{
|
||||
my $ALGO;
|
||||
($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
|
||||
|
||||
# opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
|
||||
$openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
|
||||
$exp_cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
|
||||
}
|
||||
|
||||
my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
|
||||
|
||||
$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
|
||||
|
||||
$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
|
||||
$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/);
|
||||
$exe_ext=".nlm" if ($target =~ /netware/);
|
||||
$exe_ext=".pm" if ($target =~ /vos/);
|
||||
$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
|
||||
@@ -958,7 +1021,7 @@ $perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
|
||||
or $perl="perl";
|
||||
|
||||
chop $openssldir if $openssldir =~ /\/$/;
|
||||
chop $prefix if $prefix =~ /\/$/;
|
||||
chop $prefix if $prefix =~ /.\/$/;
|
||||
|
||||
$openssldir=$prefix . "/ssl" if $openssldir eq "";
|
||||
$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
|
||||
@@ -968,6 +1031,10 @@ print "IsMK1MF=$IsMK1MF\n";
|
||||
|
||||
my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
|
||||
my $cc = $fields[$idx_cc];
|
||||
# Allow environment CC to override compiler...
|
||||
if($ENV{CC}) {
|
||||
$cc = $ENV{CC};
|
||||
}
|
||||
my $cflags = $fields[$idx_cflags];
|
||||
my $unistd = $fields[$idx_unistd];
|
||||
my $thread_cflag = $fields[$idx_thread_cflag];
|
||||
@@ -985,6 +1052,9 @@ my $cast_obj = $fields[$idx_cast_obj];
|
||||
my $rc4_obj = $fields[$idx_rc4_obj];
|
||||
my $rmd160_obj = $fields[$idx_rmd160_obj];
|
||||
my $rc5_obj = $fields[$idx_rc5_obj];
|
||||
my $wp_obj = $fields[$idx_wp_obj];
|
||||
my $cmll_obj = $fields[$idx_cmll_obj];
|
||||
my $perlasm_scheme = $fields[$idx_perlasm_scheme];
|
||||
my $dso_scheme = $fields[$idx_dso_scheme];
|
||||
my $shared_target = $fields[$idx_shared_target];
|
||||
my $shared_cflag = $fields[$idx_shared_cflag];
|
||||
@@ -992,11 +1062,14 @@ my $shared_ldflag = $fields[$idx_shared_ldflag];
|
||||
my $shared_extension = $fields[$idx_shared_extension];
|
||||
my $ranlib = $fields[$idx_ranlib];
|
||||
my $arflags = $fields[$idx_arflags];
|
||||
my $multilib = $fields[$idx_multilib];
|
||||
|
||||
$cflags = "$cflags$exp_cflags";
|
||||
|
||||
# '%' in $lflags is used to split flags to "pre-" and post-flags
|
||||
my ($prelflags,$postlflags)=split('%',$lflags);
|
||||
if (defined($postlflags)) { $lflags=$postlflags; }
|
||||
else { $lflags=$prelflags; undef $prelflags; }
|
||||
if (defined($postlflags)) { $lflags=$postlflags; }
|
||||
else { $lflags=$prelflags; undef $prelflags; }
|
||||
|
||||
my $no_shared_warn=0;
|
||||
my $no_user_cflags=0;
|
||||
@@ -1124,16 +1197,9 @@ $lflags="$libs$lflags" if ($libs ne "");
|
||||
|
||||
if ($no_asm)
|
||||
{
|
||||
$cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
|
||||
$sha1_obj=$md5_obj=$rmd160_obj="";
|
||||
}
|
||||
if ($montasm)
|
||||
{
|
||||
$bn_obj =~ s/MAYBE-MO86-/mo86-/;
|
||||
}
|
||||
else
|
||||
{
|
||||
$bn_obj =~ s/MAYBE-MO86-[a-z.]*//;
|
||||
$cpuid_obj=$bn_obj=
|
||||
$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=$cmll_obj=
|
||||
$sha1_obj=$md5_obj=$rmd160_obj=$wp_obj="";
|
||||
}
|
||||
|
||||
if (!$no_shared)
|
||||
@@ -1177,13 +1243,16 @@ if (!$no_shared)
|
||||
|
||||
if (!$IsMK1MF)
|
||||
{
|
||||
# add {no-}static-engine to options to allow mkdef.pl to work without extra arguments
|
||||
if ($no_shared)
|
||||
{
|
||||
$openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
|
||||
$options.=" static-engine";
|
||||
}
|
||||
else
|
||||
{
|
||||
$openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
|
||||
$options.=" no-static-engine";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1250,11 +1319,13 @@ if ($ranlib eq "")
|
||||
$cpuid_obj="" if ($processor eq "386");
|
||||
|
||||
$bn_obj = $bn_asm unless $bn_obj ne "";
|
||||
# bn86* is the only one implementing bn_*_part_words
|
||||
$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/);
|
||||
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
|
||||
$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/);
|
||||
# bn-586 is the only one implementing bn_*_part_words
|
||||
$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn-586/);
|
||||
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /86/);
|
||||
|
||||
$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /-mont/);
|
||||
|
||||
$cpuid_obj="mem_clr.o" unless ($cpuid_obj =~ /\.o$/);
|
||||
$des_obj=$des_enc unless ($des_obj =~ /\.o$/);
|
||||
$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
|
||||
$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
|
||||
@@ -1290,6 +1361,15 @@ if ($aes_obj =~ /\.o$/)
|
||||
else {
|
||||
$aes_obj=$aes_enc;
|
||||
}
|
||||
$wp_obj="" if ($wp_obj =~ /mmx/ && $processor eq "386");
|
||||
if ($wp_obj =~ /\.o$/)
|
||||
{
|
||||
$cflags.=" -DWHIRLPOOL_ASM";
|
||||
}
|
||||
else {
|
||||
$wp_obj="wp_block.o";
|
||||
}
|
||||
$cmll_obj=$cmll_enc unless ($cmll_obj =~ /.o$/);
|
||||
|
||||
# "Stringify" the C flags string. This permits it to be made part of a string
|
||||
# and works as well on command lines.
|
||||
@@ -1339,10 +1419,12 @@ while (<IN>)
|
||||
if ($sdirs) {
|
||||
my $dir;
|
||||
foreach $dir (@skip) {
|
||||
s/([ ])$dir /\1/;
|
||||
s/(\s)$dir /$1/;
|
||||
s/\s$dir$//;
|
||||
}
|
||||
}
|
||||
$sdirs = 0 unless /\\$/;
|
||||
s/engines // if (/^DIRS=/ && $disabled{"engine"});
|
||||
s/^VERSION=.*/VERSION=$version/;
|
||||
s/^MAJOR=.*/MAJOR=$major/;
|
||||
s/^MINOR=.*/MINOR=$minor/;
|
||||
@@ -1352,22 +1434,34 @@ while (<IN>)
|
||||
s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
|
||||
s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
|
||||
s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
|
||||
s/^MULTILIB=.*$/MULTILIB=$multilib/;
|
||||
s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
|
||||
s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
|
||||
s/^PLATFORM=.*$/PLATFORM=$target/;
|
||||
s/^OPTIONS=.*$/OPTIONS=$options/;
|
||||
s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
|
||||
s/^CC=.*$/CC= $cc/;
|
||||
s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
|
||||
if ($cross_compile_prefix)
|
||||
{
|
||||
s/^CC=.*$/CROSS_COMPILE_PREFIX= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE_PREFIX\)$cc/;
|
||||
s/^AR=\s*/AR= \$\(CROSS_COMPILE_PREFIX\)/;
|
||||
s/^NM=\s*/NM= \$\(CROSS_COMPILE_PREFIX\)/;
|
||||
s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE_PREFIX\)/;
|
||||
s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE_PREFIX\)$cc/ if $cc eq "gcc";
|
||||
}
|
||||
else {
|
||||
s/^CC=.*$/CC= $cc/;
|
||||
s/^RANLIB=.*/RANLIB= $ranlib/;
|
||||
s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
|
||||
}
|
||||
s/^CFLAG=.*$/CFLAG= $cflags/;
|
||||
s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
|
||||
s/^DEPFLAG=.*$/DEPFLAG=$depflags/;
|
||||
s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
|
||||
s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
|
||||
s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
|
||||
s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
|
||||
s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
|
||||
s/^DES_ENC=.*$/DES_ENC= $des_obj/;
|
||||
s/^AES_ASM_OBJ=.*$/AES_ASM_OBJ= $aes_obj/;
|
||||
s/^AES_ENC=.*$/AES_ENC= $aes_obj/;
|
||||
s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
|
||||
s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
|
||||
s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
|
||||
@@ -1375,8 +1469,10 @@ while (<IN>)
|
||||
s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
|
||||
s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
|
||||
s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
|
||||
s/^WP_ASM_OBJ=.*$/WP_ASM_OBJ= $wp_obj/;
|
||||
s/^CMLL_ENC=.*$/CMLL_ENC= $cmll_obj/;
|
||||
s/^PERLASM_SCHEME=.*$/PERLASM_SCHEME= $perlasm_scheme/;
|
||||
s/^PROCESSOR=.*/PROCESSOR= $processor/;
|
||||
s/^RANLIB=.*/RANLIB= $ranlib/;
|
||||
s/^ARFLAGS=.*/ARFLAGS= $arflags/;
|
||||
s/^PERL=.*/PERL= $perl/;
|
||||
s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
|
||||
@@ -1418,7 +1514,7 @@ print "EX_LIBS =$lflags\n";
|
||||
print "CPUID_OBJ =$cpuid_obj\n";
|
||||
print "BN_ASM =$bn_obj\n";
|
||||
print "DES_ENC =$des_obj\n";
|
||||
print "AES_ASM_OBJ =$aes_obj\n";
|
||||
print "AES_ENC =$aes_obj\n";
|
||||
print "BF_ENC =$bf_obj\n";
|
||||
print "CAST_ENC =$cast_obj\n";
|
||||
print "RC4_ENC =$rc4_obj\n";
|
||||
@@ -1426,6 +1522,7 @@ print "RC5_ENC =$rc5_obj\n";
|
||||
print "MD5_OBJ_ASM =$md5_obj\n";
|
||||
print "SHA1_OBJ_ASM =$sha1_obj\n";
|
||||
print "RMD160_OBJ_ASM=$rmd160_obj\n";
|
||||
print "CMLL_ENC= =$cmll_obj\n";
|
||||
print "PROCESSOR =$processor\n";
|
||||
print "RANLIB =$ranlib\n";
|
||||
print "ARFLAGS =$arflags\n";
|
||||
@@ -1489,6 +1586,7 @@ print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configur
|
||||
|
||||
print OUT "/* OpenSSL was configured with the following options: */\n";
|
||||
my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
|
||||
$openssl_experimental_defines =~ s/^\s*#\s*define\s+OPENSSL_NO_(.*)/#ifndef OPENSSL_EXPERIMENTAL_$1\n# ifndef OPENSSL_NO_$1\n# define OPENSSL_NO_$1\n# endif\n#endif/mg;
|
||||
$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg;
|
||||
$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
|
||||
$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
|
||||
@@ -1497,8 +1595,10 @@ $openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/
|
||||
$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
|
||||
print OUT $openssl_sys_defines;
|
||||
print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
|
||||
print OUT $openssl_experimental_defines;
|
||||
print OUT "\n";
|
||||
print OUT $openssl_algorithm_defines;
|
||||
print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n";
|
||||
print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n";
|
||||
print OUT $openssl_thread_defines;
|
||||
print OUT $openssl_other_defines,"\n";
|
||||
|
||||
@@ -1510,14 +1610,25 @@ print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
|
||||
print OUT $openssl_algorithm_defines_trans;
|
||||
print OUT "#endif\n\n";
|
||||
|
||||
print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj);
|
||||
print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj ne "mem_clr.o");
|
||||
|
||||
while (<IN>)
|
||||
{
|
||||
if (/^#define\s+OPENSSLDIR/)
|
||||
{ print OUT "#define OPENSSLDIR \"$openssldir\"\n"; }
|
||||
{
|
||||
my $foo = $openssldir;
|
||||
$foo =~ s/\\/\\\\/g;
|
||||
print OUT "#define OPENSSLDIR \"$foo\"\n";
|
||||
}
|
||||
elsif (/^#define\s+ENGINESDIR/)
|
||||
{ print OUT "#define ENGINESDIR \"$prefix/lib/engines\"\n"; }
|
||||
{
|
||||
# $foo is to become "$prefix/lib$multilib/engines";
|
||||
# as Makefile.org and engines/Makefile are adapted for
|
||||
# $multilib suffix.
|
||||
my $foo = "$prefix/lib/engines";
|
||||
$foo =~ s/\\/\\\\/g;
|
||||
print OUT "#define ENGINESDIR \"$foo\"\n";
|
||||
}
|
||||
elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
|
||||
{ printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
|
||||
if $export_var_as_fn;
|
||||
@@ -1807,8 +1918,8 @@ sub print_table_entry
|
||||
(my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
|
||||
my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
|
||||
my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
|
||||
my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,
|
||||
my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=
|
||||
my $rc5_obj,my $wp_obj,my $cmll_obj,my $perlasm_scheme,my $dso_scheme,my $shared_target,my $shared_cflag,
|
||||
my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags,my $multilib)=
|
||||
split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
|
||||
|
||||
print <<EOF
|
||||
@@ -1832,6 +1943,9 @@ sub print_table_entry
|
||||
\$rc4_obj = $rc4_obj
|
||||
\$rmd160_obj = $rmd160_obj
|
||||
\$rc5_obj = $rc5_obj
|
||||
\$wp_obj = $wp_obj
|
||||
\$cmll_obj = $cmll_obj
|
||||
\$perlasm_scheme = $perlasm_scheme
|
||||
\$dso_scheme = $dso_scheme
|
||||
\$shared_target= $shared_target
|
||||
\$shared_cflag = $shared_cflag
|
||||
@@ -1839,6 +1953,7 @@ sub print_table_entry
|
||||
\$shared_extension = $shared_extension
|
||||
\$ranlib = $ranlib
|
||||
\$arflags = $arflags
|
||||
\$multilib = $multilib
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -1877,11 +1992,3 @@ sub test_sanity
|
||||
print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
|
||||
return $errorcnt;
|
||||
}
|
||||
|
||||
# Attempt to detect MSYS environment
|
||||
|
||||
sub is_msys
|
||||
{
|
||||
return 1 if (exists $ENV{"TERM"} && $ENV{"TERM"} eq "msys");
|
||||
return 0;
|
||||
}
|
||||
|
||||
55
FAQ
55
FAQ
@@ -32,6 +32,7 @@ OpenSSL - Frequently Asked Questions
|
||||
* How do I install a CA certificate into a browser?
|
||||
* Why is OpenSSL x509 DN output not conformant to RFC2253?
|
||||
* What is a "128 bit certificate"? Can I create one with OpenSSL?
|
||||
* Why does OpenSSL set the authority key identifier extension incorrectly?
|
||||
* How can I set up a bundle of commercial root CA certificates?
|
||||
|
||||
[BUILD] Questions about building and testing OpenSSL
|
||||
@@ -68,6 +69,7 @@ OpenSSL - Frequently Asked Questions
|
||||
* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier?
|
||||
* I think I've detected a memory leak, is this a bug?
|
||||
* Why does Valgrind complain about the use of uninitialized data?
|
||||
* Why doesn't a memory BIO work when a file does?
|
||||
|
||||
===============================================================================
|
||||
|
||||
@@ -76,7 +78,7 @@ OpenSSL - Frequently Asked Questions
|
||||
* Which is the current version of OpenSSL?
|
||||
|
||||
The current version is available from <URL: http://www.openssl.org>.
|
||||
OpenSSL 0.9.8h was released on May 28th, 2008.
|
||||
OpenSSL 0.9.8k was released on Mar 25th, 2009.
|
||||
|
||||
In addition to the current stable release, you can also access daily
|
||||
snapshots of the OpenSSL development version at <URL:
|
||||
@@ -403,10 +405,10 @@ You can't generally create such a certificate using OpenSSL but there is no
|
||||
need to any more. Nowadays web browsers using unrestricted strong encryption
|
||||
are generally available.
|
||||
|
||||
When there were tight export restrictions on the export of strong encryption
|
||||
When there were tight restrictions on the export of strong encryption
|
||||
software from the US only weak encryption algorithms could be freely exported
|
||||
(initially 40 bit and then 56 bit). It was widely recognised that this was
|
||||
inadequate. A relaxation the rules allowed the use of strong encryption but
|
||||
inadequate. A relaxation of the rules allowed the use of strong encryption but
|
||||
only to an authorised server.
|
||||
|
||||
Two slighly different techniques were developed to support this, one used by
|
||||
@@ -427,6 +429,25 @@ The export laws were later changed to allow almost unrestricted use of strong
|
||||
encryption so these certificates are now obsolete.
|
||||
|
||||
|
||||
* Why does OpenSSL set the authority key identifier (AKID) extension incorrectly?
|
||||
|
||||
It doesn't: this extension is often the cause of confusion.
|
||||
|
||||
Consider a certificate chain A->B->C so that A signs B and B signs C. Suppose
|
||||
certificate C contains AKID.
|
||||
|
||||
The purpose of this extension is to identify the authority certificate B. This
|
||||
can be done either by including the subject key identifier of B or its issuer
|
||||
name and serial number.
|
||||
|
||||
In this latter case because it is identifying certifcate B it must contain the
|
||||
issuer name and serial number of B.
|
||||
|
||||
It is often wrongly assumed that it should contain the subject name of B. If it
|
||||
did this would be redundant information because it would duplicate the issuer
|
||||
name of C.
|
||||
|
||||
|
||||
* How can I set up a bundle of commercial root CA certificates?
|
||||
|
||||
The OpenSSL software is shipped without any root CA certificate as the
|
||||
@@ -696,8 +717,10 @@ file.
|
||||
|
||||
Multi-threaded applications must provide two callback functions to
|
||||
OpenSSL by calling CRYPTO_set_locking_callback() and
|
||||
CRYPTO_set_id_callback(). This is described in the threads(3)
|
||||
manpage.
|
||||
CRYPTO_set_id_callback(), for all versions of OpenSSL up to and
|
||||
including 0.9.8[abc...]. As of version 0.9.9, CRYPTO_set_id_callback()
|
||||
and associated APIs are deprecated by CRYPTO_THREADID_set_callback()
|
||||
and friends. This is described in the threads(3) manpage.
|
||||
|
||||
* I've compiled a program under Windows and it crashes: why?
|
||||
|
||||
@@ -920,5 +943,25 @@ OpenSSL library has been compiled with the PURIFY macro defined (-DPURIFY)
|
||||
to get rid of these warnings.
|
||||
|
||||
|
||||
===============================================================================
|
||||
* Why doesn't a memory BIO work when a file does?
|
||||
|
||||
This can occur in several cases for example reading an S/MIME email message.
|
||||
The reason is that a memory BIO can do one of two things when all the data
|
||||
has been read from it.
|
||||
|
||||
The default behaviour is to indicate that no more data is available and that
|
||||
the call should be retried, this is to allow the application to fill up the BIO
|
||||
again if necessary.
|
||||
|
||||
Alternatively it can indicate that no more data is available and that EOF has
|
||||
been reached.
|
||||
|
||||
If a memory BIO is to behave in the same way as a file this second behaviour
|
||||
is needed. This must be done by calling:
|
||||
|
||||
BIO_set_mem_eof_return(bio, 0);
|
||||
|
||||
See the manual pages for more details.
|
||||
|
||||
|
||||
===============================================================================
|
||||
|
||||
6
INSTALL
6
INSTALL
@@ -98,7 +98,7 @@
|
||||
The crypto/<cipher> directory can be removed after running
|
||||
"make depend".
|
||||
|
||||
-Dxxx, -lxxx, -Lxxx, -fxxx, -mxxx, -Kxxx These system specific options will
|
||||
-Dxxx, -lxxx, -Lxxx, -fxxx, -mXXX, -Kxxx These system specific options will
|
||||
be passed through to the compiler to allow you to
|
||||
define preprocessor symbols, specify additional libraries,
|
||||
library directories or other compiler options.
|
||||
@@ -206,6 +206,10 @@
|
||||
compile programs with libcrypto or libssl.
|
||||
lib Contains the OpenSSL library files themselves.
|
||||
|
||||
Use "make install_sw" to install the software without documentation,
|
||||
and "install_docs_html" to install HTML renditions of the manual
|
||||
pages.
|
||||
|
||||
Package builders who want to configure the library for standard
|
||||
locations, but have the package installed somewhere else so that
|
||||
it can easily be packaged, can use
|
||||
|
||||
155
INSTALL.W32
155
INSTALL.W32
@@ -5,19 +5,30 @@
|
||||
[Instructions for building for Windows CE can be found in INSTALL.WCE]
|
||||
[Instructions for building for Win64 can be found in INSTALL.W64]
|
||||
|
||||
Heres a few comments about building OpenSSL in Windows environments. Most
|
||||
of this is tested on Win32 but it may also work in Win 3.1 with some
|
||||
modification.
|
||||
Here are a few comments about building OpenSSL for Win32 environments,
|
||||
such as Windows NT and Windows 9x. It should be noted though that
|
||||
Windows 9x are not ordinarily tested. Its mention merely means that we
|
||||
attempt to maintain certain programming discipline and pay attention
|
||||
to backward compatibility issues, in other words it's kind of expected
|
||||
to work on Windows 9x, but no regression tests are actually performed.
|
||||
|
||||
You need Perl for Win32. Unless you will build on Cygwin, you will need
|
||||
ActiveState Perl, available from http://www.activestate.com/ActivePerl.
|
||||
On additional note newer OpenSSL versions are compiled and linked with
|
||||
Winsock 2. This means that minimum OS requirement was elevated to NT 4
|
||||
and Windows 98 [there is Winsock 2 update for Windows 95 though].
|
||||
|
||||
and one of the following C compilers:
|
||||
- you need Perl for Win32. Unless you will build on Cygwin, you will need
|
||||
ActiveState Perl, available from http://www.activestate.com/ActivePerl.
|
||||
|
||||
- one of the following C compilers:
|
||||
|
||||
* Visual C++
|
||||
* Borland C
|
||||
* GNU C (Cygwin or MinGW)
|
||||
|
||||
- Netwide Assembler, a.k.a. NASM, available from http://nasm.sourceforge.net/
|
||||
is required if you intend to utilize assembler modules. Note that NASM
|
||||
is the only supported assembler.
|
||||
|
||||
If you are compiling from a tarball or a CVS snapshot then the Win32 files
|
||||
may well be not up to date. This may mean that some "tweaking" is required to
|
||||
get it all to work. See the trouble shooting section later on for if (when?)
|
||||
@@ -26,39 +37,18 @@
|
||||
Visual C++
|
||||
----------
|
||||
|
||||
If you want to compile in the assembly language routines with Visual C++ then
|
||||
you will need an assembler. This is worth doing because it will result in
|
||||
faster code: for example it will typically result in a 2 times speedup in the
|
||||
RSA routines. Currently the following assemblers are supported:
|
||||
|
||||
* Microsoft MASM (aka "ml")
|
||||
* Free Netwide Assembler NASM.
|
||||
|
||||
MASM is distributed with most versions of VC++. For the versions where it is
|
||||
not included in VC++, it is also distributed with some Microsoft DDKs, for
|
||||
example the Windows NT 4.0 DDK and the Windows 98 DDK. If you do not have
|
||||
either of these DDKs then you can just download the binaries for the Windows
|
||||
98 DDK and extract and rename the two files XXXXXml.exe and XXXXXml.err, to
|
||||
ml.exe and ml.err and install somewhere on your PATH. Both DDKs can be
|
||||
downloaded from the Microsoft developers site www.msdn.com.
|
||||
|
||||
NASM is freely available. Version 0.98 was used during testing: other versions
|
||||
may also work. It is available from many places, see for example:
|
||||
http://www.kernel.org/pub/software/devel/nasm/binaries/win32/
|
||||
The NASM binary nasmw.exe needs to be installed anywhere on your PATH.
|
||||
If you want to compile in the assembly language routines with Visual
|
||||
C++, then you will need already mentioned Netwide Assembler binary,
|
||||
nasmw.exe or nasm.exe, to be available on your %PATH%.
|
||||
|
||||
Firstly you should run Configure:
|
||||
|
||||
> perl Configure VC-WIN32 --prefix=c:/some/openssl/dir
|
||||
|
||||
Where the prefix argument specifies where OpenSSL will be installed to.
|
||||
Where the prefix argument specifies where OpenSSL will be installed to.
|
||||
|
||||
Next you need to build the Makefiles and optionally the assembly language
|
||||
files:
|
||||
|
||||
- If you are using MASM then run:
|
||||
|
||||
> ms\do_masm
|
||||
Next you need to build the Makefiles and optionally the assembly
|
||||
language files:
|
||||
|
||||
- If you are using NASM then run:
|
||||
|
||||
@@ -76,36 +66,37 @@ Where the prefix argument specifies where OpenSSL will be installed to.
|
||||
|
||||
> nmake -f ms\ntdll.mak
|
||||
|
||||
If all is well it should compile and you will have some DLLs and executables
|
||||
in out32dll. If you want to try the tests then do:
|
||||
If all is well it should compile and you will have some DLLs and
|
||||
executables in out32dll. If you want to try the tests then do:
|
||||
|
||||
> nmake -f ms\ntdll.mak test
|
||||
|
||||
|
||||
To install OpenSSL to the specified location do:
|
||||
To install OpenSSL to the specified location do:
|
||||
|
||||
> nmake -f ms\ntdll.mak install
|
||||
> nmake -f ms\ntdll.mak install
|
||||
|
||||
Tweaks:
|
||||
|
||||
There are various changes you can make to the Win32 compile environment. By
|
||||
default the library is not compiled with debugging symbols. If you add 'debug'
|
||||
to the mk1mf.pl lines in the do_* batch file then debugging symbols will be
|
||||
compiled in. Note that mk1mf.pl expects the platform to be the last argument
|
||||
on the command line, so 'debug' must appear before that, as all other options.
|
||||
There are various changes you can make to the Win32 compile
|
||||
environment. By default the library is not compiled with debugging
|
||||
symbols. If you add 'debug' to the mk1mf.pl lines in the do_* batch
|
||||
file then debugging symbols will be compiled in. Note that mk1mf.pl
|
||||
expects the platform to be the last argument on the command line, so
|
||||
'debug' must appear before that, as all other options.
|
||||
|
||||
|
||||
By default in 0.9.8 OpenSSL will compile builtin ENGINES into the libeay32.dll
|
||||
shared library. If you specify the "no-static-engine" option on the command
|
||||
line to Configure the shared library build (ms\ntdll.mak) will compile the
|
||||
engines as separate DLLs.
|
||||
By default in 0.9.8 OpenSSL will compile builtin ENGINES into the
|
||||
libeay32.dll shared library. If you specify the "no-static-engine"
|
||||
option on the command line to Configure the shared library build
|
||||
(ms\ntdll.mak) will compile the engines as separate DLLs.
|
||||
|
||||
The default Win32 environment is to leave out any Windows NT specific
|
||||
features.
|
||||
|
||||
If you want to enable the NT specific features of OpenSSL (currently only the
|
||||
logging BIO) follow the instructions above but call the batch file do_nt.bat
|
||||
instead of do_ms.bat.
|
||||
If you want to enable the NT specific features of OpenSSL (currently
|
||||
only the logging BIO) follow the instructions above but call the batch
|
||||
file do_nt.bat instead of do_ms.bat.
|
||||
|
||||
You can also build a static version of the library using the Makefile
|
||||
ms\nt.mak
|
||||
@@ -137,17 +128,13 @@ To install OpenSSL to the specified location do:
|
||||
GNU C (Cygwin)
|
||||
--------------
|
||||
|
||||
Cygwin provides a bash shell and GNU tools environment running
|
||||
on NT 4.0, Windows 9x, Windows ME, Windows 2000, and Windows XP.
|
||||
Consequently, a make of OpenSSL with Cygwin is closer to a GNU
|
||||
bash environment such as Linux than to other the other Win32
|
||||
makes.
|
||||
|
||||
Cygwin implements a Posix/Unix runtime system (cygwin1.dll).
|
||||
It is also possible to create Win32 binaries that only use the
|
||||
Microsoft C runtime system (msvcrt.dll or crtdll.dll) using
|
||||
MinGW. MinGW can be used in the Cygwin development environment
|
||||
or in a standalone setup as described in the following section.
|
||||
Cygwin implements a Posix/Unix runtime system (cygwin1.dll) on top of
|
||||
Win32 subsystem and provides a bash shell and GNU tools environment.
|
||||
Consequently, a make of OpenSSL with Cygwin is virtually identical to
|
||||
Unix procedure. It is also possible to create Win32 binaries that only
|
||||
use the Microsoft C runtime system (msvcrt.dll or crtdll.dll) using
|
||||
MinGW. MinGW can be used in the Cygwin development environment or in a
|
||||
standalone setup as described in the following section.
|
||||
|
||||
To build OpenSSL using Cygwin:
|
||||
|
||||
@@ -192,35 +179,35 @@ To install OpenSSL to the specified location do:
|
||||
non-fatal error in "make test" but is otherwise harmless. If
|
||||
desired and needed, GNU bc can be built with Cygwin without change.
|
||||
|
||||
GNU C (MinGW)
|
||||
GNU C (MinGW/MSYS)
|
||||
-------------
|
||||
|
||||
* Compiler installation:
|
||||
* Compiler and shell environment installation:
|
||||
|
||||
MinGW is available from http://www.mingw.org. Run the installer and
|
||||
set the MinGW bin directory to the PATH in "System Properties" or
|
||||
autoexec.bat.
|
||||
MinGW and MSYS are available from http://www.mingw.org/, both are
|
||||
required. Run the installers and do whatever magic they say it takes
|
||||
to start MSYS bash shell with GNU tools on its PATH.
|
||||
|
||||
* Compile OpenSSL:
|
||||
|
||||
> ms\mingw32
|
||||
$ ./config
|
||||
[...]
|
||||
$ make
|
||||
[...]
|
||||
$ make test
|
||||
|
||||
This will create the library and binaries in out. In case any problems
|
||||
occur, try
|
||||
> ms\mingw32 no-asm
|
||||
instead.
|
||||
This will create the library and binaries in root source directory
|
||||
and openssl.exe application in apps directory.
|
||||
|
||||
It is also possible to cross-compile it on Linux by configuring
|
||||
with './Configure --cross-compile-prefix=i386-mingw32- mingw ...'.
|
||||
'make test' is naturally not applicable then.
|
||||
|
||||
libcrypto.a and libssl.a are the static libraries. To use the DLLs,
|
||||
link with libeay32.a and libssl32.a instead.
|
||||
|
||||
See troubleshooting if you get error messages about functions not having
|
||||
a number assigned.
|
||||
|
||||
* You can now try the tests:
|
||||
|
||||
> cd out
|
||||
> ..\ms\test
|
||||
|
||||
See troubleshooting if you get error messages about functions not
|
||||
having a number assigned.
|
||||
|
||||
Installation
|
||||
------------
|
||||
@@ -307,13 +294,13 @@ To install OpenSSL to the specified location do:
|
||||
|
||||
If you link with static OpenSSL libraries [those built with ms/nt.mak],
|
||||
then you're expected to additionally link your application with
|
||||
WSOCK32.LIB, ADVAPI32.LIB, GDI32.LIB and USER32.LIB. Those developing
|
||||
WS2_32.LIB, ADVAPI32.LIB, GDI32.LIB and USER32.LIB. Those developing
|
||||
non-interactive service applications might feel concerned about linking
|
||||
with latter two, as they are justly associated with interactive desktop,
|
||||
which is not available to service processes. The toolkit is designed
|
||||
to detect in which context it's currently executed, GUI, console app
|
||||
or service, and act accordingly, namely whether or not to actually make
|
||||
GUI calls.
|
||||
with the latter two, as they are justly associated with interactive
|
||||
desktop, which is not available to service processes. The toolkit is
|
||||
designed to detect in which context it's currently executed, GUI,
|
||||
console app or service, and act accordingly, namely whether or not to
|
||||
actually make GUI calls.
|
||||
|
||||
If you link with OpenSSL .DLLs, then you're expected to include into
|
||||
your application code small "shim" snippet, which provides glue between
|
||||
|
||||
77
INSTALL.WCE
77
INSTALL.WCE
@@ -4,27 +4,36 @@
|
||||
|
||||
Building OpenSSL for Windows CE requires the following external tools:
|
||||
|
||||
* Microsoft eMbedded Visual C++ 3.0
|
||||
* wcecompat compatibility library (www.essemer.com.au)
|
||||
* Optionally ceutils for running automated tests (www.essemer.com.au)
|
||||
* Microsoft eMbedded Visual C++ 3.0 or later
|
||||
* Appropriate SDK might be required
|
||||
* Perl for Win32 [commonly recommended ActiveState Perl is available
|
||||
from http://www.activestate.com/Products/ActivePerl/]
|
||||
|
||||
You also need Perl for Win32. You will need ActiveState Perl, available
|
||||
from http://www.activestate.com/ActivePerl.
|
||||
* wcecompat compatibility library available at
|
||||
http://www.essemer.com.au/windowsce/
|
||||
* Optionally ceutils for running automated tests (same location)
|
||||
|
||||
Windows CE support in OpenSSL relies on wcecompat and therefore it's
|
||||
appropriate to check http://www.essemer.com.au/windowsce/ for updates in
|
||||
case of compilation problems. As for the moment of this writing version
|
||||
1.1 is available and actually required for WCE 4.2 and newer platforms.
|
||||
All Windows CE specific issues should be directed to www.essemer.com.au.
|
||||
_or_
|
||||
|
||||
The C Runtime Library implementation for Windows CE that is included with
|
||||
Microsoft eMbedded Visual C++ 3.0 is incomplete and in some places
|
||||
incorrect. wcecompat plugs the holes and tries to bring the Windows CE
|
||||
CRT to a level that is more compatible with ANSI C. wcecompat goes further
|
||||
and provides low-level IO and stream IO support for stdin/stdout/stderr
|
||||
(which Windows CE does not provide). This IO functionality is not needed
|
||||
by the OpenSSL library itself but is used for the tests and openssl.exe.
|
||||
More information is available at www.essemer.com.au.
|
||||
* PocketConsole driver and PortSDK available at
|
||||
http://www.symbolictools.de/public/pocketconsole/
|
||||
* CMD command interpreter (same location)
|
||||
|
||||
As Windows CE support in OpenSSL relies on 3rd party compatibility
|
||||
library, it's appropriate to check corresponding URL for updates. For
|
||||
example if you choose wcecompat, note that as for the moment of this
|
||||
writing version 1.2 is available and actually required for WCE 4.2
|
||||
and newer platforms. All wcecompat issues should be directed to
|
||||
www.essemer.com.au.
|
||||
|
||||
Why compatibility library at all? The C Runtime Library implementation
|
||||
for Windows CE that is included with Microsoft eMbedded Visual C++ is
|
||||
incomplete and in some places incorrect. Compatibility library plugs
|
||||
the holes and tries to bring the Windows CE CRT to [more] usable level.
|
||||
Most gaping hole in CRT is support for stdin/stdout/stderr IO, which
|
||||
proposed compatibility libraries solve in two different ways: wcecompat
|
||||
redirects IO to active sync link, while PortSDK - to NT-like console
|
||||
driver on the handheld itself.
|
||||
|
||||
Building
|
||||
--------
|
||||
@@ -34,9 +43,21 @@
|
||||
|
||||
> "C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN\WCEARM.BAT"
|
||||
|
||||
Next indicate where wcecompat is located:
|
||||
Next pick compatibility library according to your preferences.
|
||||
|
||||
> set WCECOMPAT=C:\wcecompat
|
||||
1. To choose wcecompat set up WCECOMPAT environment variable pointing
|
||||
at the location of wcecompat tree "root":
|
||||
|
||||
> set WCECOMPAT=C:\wcecompat
|
||||
> set PORTSDK_LIBPATH=
|
||||
|
||||
2. To choose PortSDK set up PORTSDK_LIBPATH to point at hardware-
|
||||
specific location where your portlib.lib is installed:
|
||||
|
||||
> set PORTSDK_LIBPATH=C:\PortSDK\lib\ARM
|
||||
> set WCECOMPAT=
|
||||
|
||||
Note that you may not set both variables.
|
||||
|
||||
Next you should run Configure:
|
||||
|
||||
@@ -52,16 +73,16 @@
|
||||
|
||||
Then from the VC++ environment at a prompt do:
|
||||
|
||||
- to build static libraries:
|
||||
|
||||
> nmake -f ms\ce.mak
|
||||
|
||||
- or to build DLLs:
|
||||
|
||||
> nmake -f ms\cedll.mak
|
||||
|
||||
If all is well it should compile and you will have some static libraries and
|
||||
executables in out32, or some DLLs and executables in out32dll. If you want
|
||||
[note that static builds are not supported under CE]
|
||||
|
||||
If all is well it should compile and you will have some DLLs and executables
|
||||
in out32dll*.
|
||||
|
||||
<<< everyting below needs revision in respect to wcecompat vs. PortSDK >>>
|
||||
|
||||
If you want
|
||||
to try the tests then make sure the ceutils are in the path and do:
|
||||
|
||||
> cd out32
|
||||
|
||||
@@ -29,7 +29,7 @@ OSErr AppendErrorMessageToHandle(Handle inoutHandle);
|
||||
|
||||
|
||||
|
||||
// A bunch of evil macros that would be uneccessary if I were always using C++ !
|
||||
// A bunch of evil macros that would be unnecessary if I were always using C++ !
|
||||
|
||||
#define SetErrorMessageAndBailIfNil(theArg,theMessage) \
|
||||
{ \
|
||||
|
||||
140
Makefile.org
140
Makefile.org
@@ -66,6 +66,7 @@ EXE_EXT=
|
||||
ARFLAGS=
|
||||
AR=ar $(ARFLAGS) r
|
||||
RANLIB= ranlib
|
||||
NM= nm
|
||||
PERL= perl
|
||||
TAR= tar
|
||||
TARFLAGS= --no-recursion
|
||||
@@ -87,7 +88,7 @@ PROCESSOR=
|
||||
CPUID_OBJ=
|
||||
BN_ASM= bn_asm.o
|
||||
DES_ENC= des_enc.o fcrypt_b.o
|
||||
AES_ASM_OBJ=aes_core.o aes_cbc.o
|
||||
AES_ENC= aes_core.o aes_cbc.o
|
||||
BF_ENC= bf_enc.o
|
||||
CAST_ENC= c_enc.o
|
||||
RC4_ENC= rc4_enc.o
|
||||
@@ -95,6 +96,9 @@ RC5_ENC= rc5_enc.o
|
||||
MD5_ASM_OBJ=
|
||||
SHA1_ASM_OBJ=
|
||||
RMD160_ASM_OBJ=
|
||||
WP_ASM_OBJ=
|
||||
CMLL_ENC=
|
||||
PERLASM_SCHEME=
|
||||
|
||||
# KRB5 stuff
|
||||
KRB5_INCLUDES=
|
||||
@@ -110,12 +114,12 @@ SHLIBDIRS= crypto ssl
|
||||
# dirs in crypto to build
|
||||
SDIRS= \
|
||||
objects \
|
||||
md2 md4 md5 sha mdc2 hmac ripemd \
|
||||
des aes rc2 rc4 rc5 idea bf cast camellia seed \
|
||||
md2 md4 md5 sha mdc2 hmac ripemd whrlpool \
|
||||
des aes rc2 rc4 rc5 idea bf cast camellia seed modes \
|
||||
bn ec rsa dsa ecdsa dh ecdh dso engine \
|
||||
buffer bio stack lhash rand err \
|
||||
evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
|
||||
store cms pqueue
|
||||
cms pqueue ts jpake store
|
||||
# keep in mind that the above list is adjusted by ./Configure
|
||||
# according to no-xxx arguments...
|
||||
|
||||
@@ -129,6 +133,8 @@ MANDIR=$(OPENSSLDIR)/man
|
||||
MAN1=1
|
||||
MAN3=3
|
||||
MANSUFFIX=
|
||||
HTMLSUFFIX=html
|
||||
HTMLDIR=$(OPENSSLDIR)/html
|
||||
SHELL=/bin/sh
|
||||
|
||||
TOP= .
|
||||
@@ -168,29 +174,33 @@ CLEARENV= TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS} \
|
||||
$${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \
|
||||
$${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS}
|
||||
|
||||
BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
|
||||
CC='${CC}' CFLAG='${CFLAG}' \
|
||||
AS='${CC}' ASFLAG='${CFLAG} -c' \
|
||||
AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}' \
|
||||
SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib' \
|
||||
INSTALL_PREFIX='${INSTALL_PREFIX}' \
|
||||
INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}' \
|
||||
MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD ${MAKEDEPPROG}' \
|
||||
DEPFLAG='-DOPENSSL_NO_DEPRECATED ${DEPFLAG}' \
|
||||
MAKEDEPPROG='${MAKEDEPPROG}' \
|
||||
SHARED_LDFLAGS='${SHARED_LDFLAGS}' \
|
||||
KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' \
|
||||
EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' \
|
||||
SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' \
|
||||
PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' \
|
||||
CPUID_OBJ='${CPUID_OBJ}' \
|
||||
BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' \
|
||||
AES_ASM_OBJ='${AES_ASM_OBJ}' \
|
||||
BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' \
|
||||
RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' \
|
||||
SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' \
|
||||
MD5_ASM_OBJ='${MD5_ASM_OBJ}' \
|
||||
RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' \
|
||||
BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
|
||||
CC='$(CC)' CFLAG='$(CFLAG)' \
|
||||
AS='$(CC)' ASFLAG='$(CFLAG) -c' \
|
||||
AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \
|
||||
CROSS_COMPILE_PREFIX='$(CROSS_COMPILE_PREFIX)' \
|
||||
PERL='$(PERL)' \
|
||||
SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/lib' \
|
||||
INSTALL_PREFIX='$(INSTALL_PREFIX)' \
|
||||
INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)' \
|
||||
MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD $(MAKEDEPPROG)' \
|
||||
DEPFLAG='-DOPENSSL_NO_DEPRECATED $(DEPFLAG)' \
|
||||
MAKEDEPPROG='$(MAKEDEPPROG)' \
|
||||
SHARED_LDFLAGS='$(SHARED_LDFLAGS)' \
|
||||
KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)' \
|
||||
EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)' \
|
||||
SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \
|
||||
PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)' \
|
||||
CPUID_OBJ='$(CPUID_OBJ)' \
|
||||
BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' \
|
||||
AES_ENC='$(AES_ENC)' CMLL_ENC='$(CMLL_ENC)' \
|
||||
BF_ENC='$(BF_ENC)' CAST_ENC='$(CAST_ENC)' \
|
||||
RC4_ENC='$(RC4_ENC)' RC5_ENC='$(RC5_ENC)' \
|
||||
SHA1_ASM_OBJ='$(SHA1_ASM_OBJ)' \
|
||||
MD5_ASM_OBJ='$(MD5_ASM_OBJ)' \
|
||||
RMD160_ASM_OBJ='$(RMD160_ASM_OBJ)' \
|
||||
WP_ASM_OBJ='$(WP_ASM_OBJ)' \
|
||||
PERLASM_SCHEME='$(PERLASM_SCHEME)' \
|
||||
THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
|
||||
# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
|
||||
# which in turn eliminates ambiguities in variable treatment with -e.
|
||||
@@ -215,7 +225,7 @@ BUILD_CMD= if [ -d "$$dir" ]; then \
|
||||
fi
|
||||
RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
|
||||
BUILD_ONE_CMD=\
|
||||
if echo " $(DIRS) " | grep " $$dir " >/dev/null 2>/dev/null; then \
|
||||
if expr " $(DIRS) " : ".* $$dir " >/dev/null 2>&1; then \
|
||||
$(BUILD_CMD); \
|
||||
fi
|
||||
|
||||
@@ -275,10 +285,10 @@ clean-shared:
|
||||
done
|
||||
|
||||
link-shared:
|
||||
@ set -e; for i in ${SHLIBDIRS}; do \
|
||||
@ set -e; for i in $(SHLIBDIRS); do \
|
||||
$(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
|
||||
LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
|
||||
LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \
|
||||
LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
|
||||
LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
|
||||
symlink.$(SHLIB_TARGET); \
|
||||
libs="$$libs -l$$i"; \
|
||||
done
|
||||
@@ -286,13 +296,13 @@ link-shared:
|
||||
build-shared: do_$(SHLIB_TARGET) link-shared
|
||||
|
||||
do_$(SHLIB_TARGET):
|
||||
@ set -e; libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
|
||||
if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
|
||||
@ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
|
||||
if [ "$(SHLIBDIRS)" = "ssl" -a -n "$(LIBKRB5)" ]; then \
|
||||
libs="$(LIBKRB5) $$libs"; \
|
||||
fi; \
|
||||
$(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
|
||||
LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
|
||||
LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \
|
||||
LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
|
||||
LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
|
||||
LIBDEPS="$$libs $(EX_LIBS)" \
|
||||
link_a.$(SHLIB_TARGET); \
|
||||
libs="-l$$i $$libs"; \
|
||||
@@ -372,25 +382,28 @@ links:
|
||||
|
||||
gentests:
|
||||
@(cd test && echo "generating dummy tests (if needed)..." && \
|
||||
$(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate );
|
||||
$(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate );
|
||||
|
||||
dclean:
|
||||
rm -f *.bak
|
||||
rm -rf *.bak include/openssl certs/.0
|
||||
@set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
|
||||
|
||||
rehash: rehash.time
|
||||
rehash.time: certs
|
||||
@(OPENSSL="`pwd`/util/opensslwrap.sh"; \
|
||||
OPENSSL_DEBUG_MEMORY=on; \
|
||||
export OPENSSL OPENSSL_DEBUG_MEMORY; \
|
||||
$(PERL) tools/c_rehash certs)
|
||||
touch rehash.time
|
||||
rehash.time: certs apps
|
||||
@if [ -z "$(CROSS_COMPILE_PREFIX)" ]; then \
|
||||
(OPENSSL="`pwd`/util/opensslwrap.sh"; \
|
||||
[ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
|
||||
OPENSSL_DEBUG_MEMORY=on; \
|
||||
export OPENSSL OPENSSL_DEBUG_MEMORY; \
|
||||
$(PERL) tools/c_rehash certs) && \
|
||||
touch rehash.time; \
|
||||
else :; fi
|
||||
|
||||
test: tests
|
||||
|
||||
tests: rehash
|
||||
@(cd test && echo "testing..." && \
|
||||
$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
|
||||
$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on tests );
|
||||
util/opensslwrap.sh version -a
|
||||
|
||||
report:
|
||||
@@ -424,6 +437,8 @@ crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
|
||||
$(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
|
||||
crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
|
||||
$(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
|
||||
crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
|
||||
$(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
|
||||
|
||||
apps/openssl-vms.cnf: apps/openssl.cnf
|
||||
$(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
|
||||
@@ -436,7 +451,7 @@ TABLE: Configure
|
||||
(echo 'Output of `Configure TABLE'"':"; \
|
||||
$(PERL) Configure TABLE) > TABLE
|
||||
|
||||
update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
|
||||
update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
|
||||
|
||||
# Build distribution tar-file. As the list of files returned by "find" is
|
||||
# pretty long, on several platforms a "too many arguments" error or similar
|
||||
@@ -467,8 +482,8 @@ tar-snap:
|
||||
dist:
|
||||
$(PERL) Configure dist
|
||||
@$(MAKE) dist_pem_h
|
||||
@$(MAKE) SDIRS='${SDIRS}' clean
|
||||
@$(MAKE) TAR='${TAR}' TARFLAGS='${TARFLAGS}' tar
|
||||
@$(MAKE) SDIRS='$(SDIRS)' clean
|
||||
@$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar
|
||||
|
||||
dist_pem_h:
|
||||
(cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
|
||||
@@ -519,6 +534,16 @@ install_sw:
|
||||
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
|
||||
mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
|
||||
fi ); \
|
||||
if expr $(PLATFORM) : 'mingw' > /dev/null; then \
|
||||
( case $$i in \
|
||||
*crypto*) i=libeay32.dll;; \
|
||||
*ssl*) i=ssleay32.dll;; \
|
||||
esac; \
|
||||
echo installing $$i; \
|
||||
cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
|
||||
chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
|
||||
mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
|
||||
fi; \
|
||||
fi; \
|
||||
done; \
|
||||
( here="`pwd`"; \
|
||||
@@ -538,6 +563,27 @@ install_sw:
|
||||
cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
|
||||
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
|
||||
|
||||
install_html_docs:
|
||||
here="`pwd`"; \
|
||||
for subdir in apps crypto ssl; do \
|
||||
mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
|
||||
for i in doc/$$subdir/*.pod; do \
|
||||
fn=`basename $$i .pod`; \
|
||||
echo "installing html/$$fn.$(HTMLSUFFIX)"; \
|
||||
cat $$i \
|
||||
| sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
|
||||
| pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
|
||||
| sed -r 's/<!DOCTYPE.*//g' \
|
||||
> $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
|
||||
$(PERL) util/extract-names.pl < $$i | \
|
||||
grep -v $$filecase "^$$fn\$$" | \
|
||||
(cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
|
||||
while read n; do \
|
||||
$$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
|
||||
done); \
|
||||
done; \
|
||||
done
|
||||
|
||||
install_docs:
|
||||
@$(PERL) $(TOP)/util/mkdir-p.pl \
|
||||
$(INSTALL_PREFIX)$(MANDIR)/man1 \
|
||||
|
||||
124
Makefile.shared
124
Makefile.shared
@@ -14,6 +14,8 @@ CFLAGS=$(CFLAG)
|
||||
LDFLAGS=
|
||||
SHARED_LDFLAGS=
|
||||
|
||||
NM=nm
|
||||
|
||||
# LIBNAME contains just the name of the library, without prefix ("lib"
|
||||
# on Unix, "cyg" for certain forms under Cygwin...) or suffix (.a, .so,
|
||||
# .dll, ...). This one MUST have a value when using this makefile to
|
||||
@@ -91,7 +93,7 @@ LINK_APP= \
|
||||
( $(SET_X); \
|
||||
LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
|
||||
LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$${LDFLAGS:-$(CFLAGS)}"; \
|
||||
LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
|
||||
LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
|
||||
LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
|
||||
LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
|
||||
$${LDCMD} $${LDFLAGS} -o $${APPNAME:=$(APPNAME)} $(OBJECTS) $${LIBDEPS} )
|
||||
@@ -101,15 +103,13 @@ LINK_SO= \
|
||||
LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
|
||||
SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
|
||||
SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
|
||||
nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
|
||||
LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
|
||||
LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
|
||||
LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
|
||||
LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
|
||||
$${SHAREDCMD} $${SHAREDFLAGS} \
|
||||
-o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
|
||||
$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
|
||||
) && $(SYMLINK_SO); \
|
||||
( $(SET_X); rm -f lib$(LIBNAME).exp )
|
||||
) && $(SYMLINK_SO)
|
||||
|
||||
SYMLINK_SO= \
|
||||
if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
|
||||
@@ -144,7 +144,7 @@ LINK_SO_A_UNPACKED= \
|
||||
SHOBJECTS=$$UNPACKDIR/*.o; \
|
||||
$(LINK_SO) && rm -rf $$UNPACKDIR
|
||||
|
||||
DETECT_GNU_LD=(${CC} -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
|
||||
DETECT_GNU_LD=($(CC) -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
|
||||
|
||||
DO_GNU_SO=$(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
@@ -170,8 +170,19 @@ link_a.gnu:
|
||||
link_app.gnu:
|
||||
@ $(DO_GNU_APP); $(LINK_APP)
|
||||
|
||||
DO_BEOS_SO= SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=; \
|
||||
ALLSYMSFLAGS='-Wl,--whole-archive'; \
|
||||
NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SUFFIX"
|
||||
|
||||
link_o.beos:
|
||||
@ $(DO_BEOS_SO); $(LINK_SO_O)
|
||||
link_a.beos:
|
||||
@ $(DO_BEOS_SO); $(LINK_SO_A)
|
||||
|
||||
link_o.bsd:
|
||||
@if ${DETECT_GNU_LD}; then $(DO_GNU_SO); else \
|
||||
@if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
|
||||
$(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=; \
|
||||
@@ -181,7 +192,7 @@ link_o.bsd:
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -nostdlib"; \
|
||||
fi; $(LINK_SO_O)
|
||||
link_a.bsd:
|
||||
@if ${DETECT_GNU_LD}; then $(DO_GNU_SO); else \
|
||||
@if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
|
||||
$(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=; \
|
||||
@@ -191,7 +202,7 @@ link_a.bsd:
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -nostdlib"; \
|
||||
fi; $(LINK_SO_A)
|
||||
link_app.bsd:
|
||||
@if ${DETECT_GNU_LD}; then $(DO_GNU_APP); else \
|
||||
@if $(DETECT_GNU_LD); then $(DO_GNU_APP); else \
|
||||
LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBPATH)"; \
|
||||
fi; $(LINK_APP)
|
||||
|
||||
@@ -227,7 +238,7 @@ link_a.darwin:
|
||||
if [ -n "$$SHLIB_SOVER_NODOT" ]; then \
|
||||
SHAREDFLAGS="$$SHAREDFLAGS -compatibility_version $$SHLIB_SOVER_NODOT"; \
|
||||
fi; \
|
||||
SHAREDFLAGS="$$SHAREDFLAGS -install_name ${INSTALLTOP}/lib/$$SHLIB${SHLIB_EXT}"; \
|
||||
SHAREDFLAGS="$$SHAREDFLAGS -install_name $(INSTALLTOP)/lib/$$SHLIB$(SHLIB_EXT)"; \
|
||||
$(LINK_SO_A)
|
||||
link_app.darwin: # is there run-path on darwin?
|
||||
$(LINK_APP)
|
||||
@@ -237,40 +248,59 @@ link_o.cygwin:
|
||||
INHIBIT_SYMLINKS=yes; \
|
||||
SHLIB=cyg$(LIBNAME); \
|
||||
base=-Wl,--enable-auto-image-base; \
|
||||
deffile=; \
|
||||
if expr $(PLATFORM) : 'mingw' > /dev/null; then \
|
||||
SHLIB=$(LIBNAME)eay32; base=; \
|
||||
if test -f $(LIBNAME)eay32.def; then \
|
||||
deffile=$(LIBNAME)eay32.def; \
|
||||
fi; \
|
||||
fi; \
|
||||
SHLIB_SUFFIX=.dll; \
|
||||
LIBVERSION="$(LIBVERSION)"; \
|
||||
SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
|
||||
ALLSYMSFLAGS='-Wl,--whole-archive'; \
|
||||
NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base $$deffile -Wl,-s,-Bsymbolic"; \
|
||||
$(LINK_SO_O)
|
||||
#for mingw target if def-file is in use dll-name should match library-name
|
||||
link_a.cygwin:
|
||||
@ $(CALC_VERSIONS); \
|
||||
INHIBIT_SYMLINKS=yes; \
|
||||
SHLIB=cyg$(LIBNAME); \
|
||||
SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=.dll; \
|
||||
dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; extras=; \
|
||||
base=-Wl,--enable-auto-image-base; \
|
||||
if expr $(PLATFORM) : 'mingw' > /dev/null; then \
|
||||
SHLIB=$(LIBNAME)eay32; \
|
||||
base=; [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
|
||||
case $(LIBNAME) in \
|
||||
crypto) SHLIB=libeay;; \
|
||||
ssl) SHLIB=ssleay;; \
|
||||
esac; \
|
||||
SHLIB_SOVER=32; \
|
||||
extras="$(LIBNAME).def"; \
|
||||
$(PERL) util/mkdef.pl 32 $$SHLIB > $$extras; \
|
||||
base=; [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
|
||||
fi; \
|
||||
SHLIB_SUFFIX=.dll; \
|
||||
SHLIB_SOVER=-$(LIBVERSION); \
|
||||
dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
|
||||
$(PERL) util/mkrc.pl $$dll_name | \
|
||||
$(CROSS_COMPILE_PREFIX)windres -o rc.o; \
|
||||
extras="$$extras rc.o"; \
|
||||
ALLSYMSFLAGS='-Wl,--whole-archive'; \
|
||||
NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
|
||||
[ -f apps/$$SHLIB$$SHLIB_SUFFIX ] && rm apps/$$SHLIB$$SHLIB_SUFFIX; \
|
||||
[ -f test/$$SHLIB$$SHLIB_SUFFIX ] && rm test/$$SHLIB$$SHLIB_SUFFIX; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-s,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$extras"; \
|
||||
[ -f apps/$$dll_name ] && rm apps/$$dll_name; \
|
||||
[ -f test/$$dll_name ] && rm test/$$dll_name; \
|
||||
$(LINK_SO_A) || exit 1; \
|
||||
cp -p $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX apps/; \
|
||||
cp -p $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX test/
|
||||
rm $$extras; \
|
||||
cp -p $$dll_name apps/; \
|
||||
cp -p $$dll_name test/
|
||||
link_app.cygwin:
|
||||
@if expr "$(CFLAGS)" : '.*OPENSSL_USE_APPLINK' > /dev/null; then \
|
||||
LIBDEPS="$(TOP)/crypto/applink.o $${LIBDEPS:-$(LIBDEPS)}"; \
|
||||
export LIBDEPS; \
|
||||
fi; \
|
||||
$(LINK_APP)
|
||||
|
||||
link_o.alpha-osf1:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
@@ -291,7 +321,7 @@ link_o.alpha-osf1:
|
||||
fi; \
|
||||
$(LINK_SO_O)
|
||||
link_a.alpha-osf1:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
@@ -312,7 +342,7 @@ link_a.alpha-osf1:
|
||||
fi; \
|
||||
$(LINK_SO_A)
|
||||
link_app.alpha-osf1:
|
||||
@if ${DETECT_GNU_LD}; then \
|
||||
@if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_APP); \
|
||||
else \
|
||||
LDFLAGS="$(CFLAGS) -rpath $(LIBRPATH)"; \
|
||||
@@ -320,7 +350,7 @@ link_app.alpha-osf1:
|
||||
$(LINK_APP)
|
||||
|
||||
link_o.solaris:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
@@ -334,12 +364,12 @@ link_o.solaris:
|
||||
fi; \
|
||||
$(LINK_SO_O)
|
||||
link_a.solaris:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
MINUSZ='-z '; \
|
||||
(${CC} -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
|
||||
($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=;\
|
||||
ALLSYMSFLAGS="$${MINUSZ}allextract"; \
|
||||
@@ -348,7 +378,7 @@ link_a.solaris:
|
||||
fi; \
|
||||
$(LINK_SO_A)
|
||||
link_app.solaris:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_APP); \
|
||||
else \
|
||||
LDFLAGS="$(CFLAGS) -R $(LIBRPATH)"; \
|
||||
@@ -357,7 +387,7 @@ link_app.solaris:
|
||||
|
||||
# OpenServer 5 native compilers used
|
||||
link_o.svr3:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
@@ -369,7 +399,7 @@ link_o.svr3:
|
||||
fi; \
|
||||
$(LINK_SO_O)
|
||||
link_a.svr3:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
@@ -381,12 +411,12 @@ link_a.svr3:
|
||||
fi; \
|
||||
$(LINK_SO_A_UNPACKED)
|
||||
link_app.svr3:
|
||||
@${DETECT_GNU_LD} && $(DO_GNU_APP); \
|
||||
@$(DETECT_GNU_LD) && $(DO_GNU_APP); \
|
||||
$(LINK_APP)
|
||||
|
||||
# UnixWare 7 and OpenUNIX 8 native compilers used
|
||||
link_o.svr5:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
@@ -400,12 +430,12 @@ link_o.svr5:
|
||||
fi; \
|
||||
$(LINK_SO_O)
|
||||
link_a.svr5:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
SHARE_FLAG='-G'; \
|
||||
(${CC} -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
|
||||
($(CC) -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=; \
|
||||
ALLSYMSFLAGS=''; \
|
||||
@@ -414,11 +444,11 @@ link_a.svr5:
|
||||
fi; \
|
||||
$(LINK_SO_A_UNPACKED)
|
||||
link_app.svr5:
|
||||
@${DETECT_GNU_LD} && $(DO_GNU_APP); \
|
||||
@$(DETECT_GNU_LD) && $(DO_GNU_APP); \
|
||||
$(LINK_APP)
|
||||
|
||||
link_o.irix:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
@@ -432,7 +462,7 @@ link_o.irix:
|
||||
fi; \
|
||||
$(LINK_SO_O)
|
||||
link_a.irix:
|
||||
@ if ${DETECT_GNU_LD}; then \
|
||||
@ if $(DETECT_GNU_LD); then \
|
||||
$(DO_GNU_SO); \
|
||||
else \
|
||||
$(CALC_VERSIONS); \
|
||||
@@ -458,7 +488,7 @@ link_app.irix:
|
||||
# ELFs by the way].
|
||||
#
|
||||
link_o.hpux:
|
||||
@if ${DETECT_GNU_LD}; then $(DO_GNU_SO); else \
|
||||
@if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
|
||||
$(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME).sl; \
|
||||
expr "$(CFLAGS)" : '.*DSO_DLFCN' > /dev/null && SHLIB=lib$(LIBNAME).so; \
|
||||
@@ -471,7 +501,7 @@ link_o.hpux:
|
||||
rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
|
||||
$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
|
||||
link_a.hpux:
|
||||
@if ${DETECT_GNU_LD}; then $(DO_GNU_SO); else \
|
||||
@if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
|
||||
$(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME).sl; \
|
||||
expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
|
||||
@@ -484,30 +514,30 @@ link_a.hpux:
|
||||
rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
|
||||
$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
|
||||
link_app.hpux:
|
||||
@if ${DETECT_GNU_LD}; then $(DO_GNU_APP); else \
|
||||
@if $(DETECT_GNU_LD); then $(DO_GNU_APP); else \
|
||||
LDFLAGS="$(CFLAGS) -Wl,+s,+cdp,../:,+cdp,./:,+b,$(LIBRPATH)"; \
|
||||
fi; \
|
||||
$(LINK_APP)
|
||||
|
||||
link_o.aix:
|
||||
@ $(CALC_VERSIONS); \
|
||||
OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]*\(64\)'` || :; \
|
||||
OBJECT_MODE=`expr "x$(SHARED_LDFLAGS)" : 'x\-[a-z]*\(64\)'` || :; \
|
||||
OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=; \
|
||||
ALLSYMSFLAGS=''; \
|
||||
NOALLSYMSFLAGS=''; \
|
||||
SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-G,-bexpall,-bnolibpath,-bM:SRE'; \
|
||||
SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-bexpall,-bnolibpath,-bM:SRE'; \
|
||||
$(LINK_SO_O);
|
||||
link_a.aix:
|
||||
@ $(CALC_VERSIONS); \
|
||||
OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]*\(64\)'` || : ; \
|
||||
OBJECT_MODE=`expr "x$(SHARED_LDFLAGS)" : 'x\-[a-z]*\(64\)'` || : ; \
|
||||
OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
|
||||
SHLIB=lib$(LIBNAME).so; \
|
||||
SHLIB_SUFFIX=; \
|
||||
ALLSYMSFLAGS='-bnogc'; \
|
||||
NOALLSYMSFLAGS=''; \
|
||||
SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-G,-bexpall,-bnolibpath,-bM:SRE'; \
|
||||
SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-bexpall,-bnolibpath,-bM:SRE'; \
|
||||
$(LINK_SO_A_VIA_O)
|
||||
link_app.aix:
|
||||
LDFLAGS="$(CFLAGS) -Wl,-brtl,-blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
|
||||
@@ -549,7 +579,7 @@ symlink.hpux:
|
||||
expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
|
||||
$(SYMLINK_SO)
|
||||
# The following lines means those specific architectures do no symlinks
|
||||
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath:
|
||||
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath symlink.beos:
|
||||
|
||||
# Compatibility targets
|
||||
link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared: link_o.gnu
|
||||
@@ -607,3 +637,7 @@ link_o.reliantunix-shared: link_o.reliantunix
|
||||
link_a.reliantunix-shared: link_a.reliantunix
|
||||
link_app.reliantunix-shared: link_app.reliantunix
|
||||
symlink.reliantunix-shared: symlink.reliantunix
|
||||
link_o.beos-shared: link_o.beos
|
||||
link_a.beos-shared: link_a.beos
|
||||
link_app.beos-shared: link_app.gnu
|
||||
symlink.beos-shared: symlink.beos
|
||||
|
||||
46
NEWS
46
NEWS
@@ -5,8 +5,49 @@
|
||||
This file gives a brief overview of the major changes between each OpenSSL
|
||||
release. For more details please read the CHANGES file.
|
||||
|
||||
Major changes between OpenSSL 0.9.8k and OpenSSL 1.0:
|
||||
|
||||
|
||||
o RFC3280 path validation: sufficient to process PKITS tests.
|
||||
o Integrated support for PVK files and keyblobs.
|
||||
o Change default private key format to PKCS#8.
|
||||
o CMS support: able to process all examples in RFCXXXX
|
||||
o Streaming ASN1 encode support for PKCS#7 and CMS.
|
||||
o Multiple signer and signer add support for PKCS#7 and CMS.
|
||||
o ASN1 printing support.
|
||||
o Whirlpool hash algorithm added.
|
||||
o RFC3161 time stamp support.
|
||||
o New generalised public key API supporting ENGINE based algorithms.
|
||||
o New generalised public key API utilities.
|
||||
o New ENGINE supporting GOST algorithms.
|
||||
o SSL/TLS GOST ciphersuite support.
|
||||
o PKCS#7 and CMS GOST support.
|
||||
o RFC4279 PSK ciphersuite support.
|
||||
o Supported points format extension for ECC ciphersuites.
|
||||
o ecdsa-with-SHA224/256/384/512 signature types.
|
||||
o dsa-with-SHA224 and dsa-with-SHA256 signature types.
|
||||
o Opaque PRF Input TLS extension support.
|
||||
|
||||
Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k:
|
||||
|
||||
o Fix various build issues.
|
||||
o Fix security issues (CVE-2009-0590, CVE-2009-0591, CVE-2009-0789)
|
||||
|
||||
Major changes between OpenSSL 0.9.8i and OpenSSL 0.9.8j:
|
||||
|
||||
o Fix security issue (CVE-2008-5077)
|
||||
o Merge FIPS 140-2 branch code.
|
||||
|
||||
Major changes between OpenSSL 0.9.8g and OpenSSL 0.9.8h:
|
||||
|
||||
o CryptoAPI ENGINE support.
|
||||
o Various precautionary measures.
|
||||
o Fix for bugs affecting certificate request creation.
|
||||
o Support for local machine keyset attribute in PKCS#12 files.
|
||||
|
||||
Major changes between OpenSSL 0.9.8f and OpenSSL 0.9.8g:
|
||||
|
||||
o Backport of CMS functionality to 0.9.8.
|
||||
o Fixes for bugs introduced with 0.9.8f.
|
||||
|
||||
Major changes between OpenSSL 0.9.8e and OpenSSL 0.9.8f:
|
||||
@@ -125,6 +166,11 @@
|
||||
o Added initial support for Win64.
|
||||
o Added alternate pkg-config files.
|
||||
|
||||
Major changes between OpenSSL 0.9.7l and OpenSSL 0.9.7m:
|
||||
|
||||
o FIPS 1.1.1 module linking.
|
||||
o Various ciphersuite selection fixes.
|
||||
|
||||
Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l:
|
||||
|
||||
o Introduce limits to prevent malicious key DoS (CVE-2006-2940)
|
||||
|
||||
@@ -159,6 +159,8 @@ cd ..\..\..
|
||||
echo SHA1
|
||||
cd crypto\sha\asm
|
||||
perl sha1-586.pl %ASM_MODE% > s1-nw.asm
|
||||
perl sha256-586.pl %ASM_MODE% > sha256-nw.asm
|
||||
perl sha512-586.pl %ASM_MODE% > sha512-nw.asm
|
||||
cd ..\..\..
|
||||
|
||||
echo RIPEMD160
|
||||
@@ -171,6 +173,11 @@ cd crypto\rc5\asm
|
||||
perl rc5-586.pl %ASM_MODE% > r5-nw.asm
|
||||
cd ..\..\..
|
||||
|
||||
echo WHIRLPOOL
|
||||
cd crypto\whrlpool\asm
|
||||
perl wp-mmx.pl %ASM_MODE% > wp-nw.asm
|
||||
cd ..\..\..
|
||||
|
||||
echo CPUID
|
||||
cd crypto
|
||||
perl x86cpuid.pl %ASM_MODE% > x86cpuid-nw.asm
|
||||
|
||||
2
README
2
README
@@ -1,5 +1,5 @@
|
||||
|
||||
OpenSSL 0.9.8h
|
||||
OpenSSL 1.0.0-beta1 01 Apr 2009
|
||||
|
||||
Copyright (c) 1998-2008 The OpenSSL Project
|
||||
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
|
||||
|
||||
6
STATUS
6
STATUS
@@ -1,13 +1,13 @@
|
||||
|
||||
OpenSSL STATUS Last modified at
|
||||
______________ $Date: 2008/05/28 07:37:13 $
|
||||
______________ $Date: 2009/04/01 08:47:27 $
|
||||
|
||||
DEVELOPMENT STATE
|
||||
|
||||
o OpenSSL 0.9.9: Under development...
|
||||
o OpenSSL 1.0.0-beta1: Released on Aptil 1st, 2009
|
||||
o OpenSSL 0.9.8h: Released on May 28th, 2008
|
||||
o OpenSSL 0.9.8g: Released on October 19th, 2007
|
||||
o OpenSSL 0.9.8f: Released on October 11th, 2007
|
||||
o OpenSSL 0.9.8f: Released on October 11th, 2007
|
||||
o OpenSSL 0.9.8e: Released on February 23rd, 2007
|
||||
o OpenSSL 0.9.8d: Released on September 28th, 2006
|
||||
o OpenSSL 0.9.8c: Released on September 5th, 2006
|
||||
|
||||
@@ -5,3 +5,4 @@ der_chop.bak
|
||||
CA.pl
|
||||
*.flc
|
||||
semantic.cache
|
||||
*.dll
|
||||
|
||||
506
apps/Makefile
506
apps/Makefile
@@ -31,15 +31,15 @@ LIBSSL=-L.. -lssl
|
||||
|
||||
PROGRAM= openssl
|
||||
|
||||
SCRIPTS=CA.sh CA.pl
|
||||
SCRIPTS=CA.sh CA.pl tsget
|
||||
|
||||
EXE= $(PROGRAM)$(EXE_EXT)
|
||||
|
||||
E_EXE= verify asn1pars req dgst dh dhparam enc passwd gendh errstr \
|
||||
ca crl rsa rsautl dsa dsaparam ec ecparam \
|
||||
x509 genrsa gendsa s_server s_client speed \
|
||||
x509 genrsa gendsa genpkey s_server s_client speed \
|
||||
s_time version pkcs7 cms crl2pkcs7 sess_id ciphers nseq pkcs12 \
|
||||
pkcs8 spkac smime rand engine ocsp prime
|
||||
pkcs8 pkey pkeyparam pkeyutl spkac smime rand engine ocsp prime ts
|
||||
|
||||
PROGS= $(PROGRAM).c
|
||||
|
||||
@@ -53,18 +53,18 @@ RAND_SRC=app_rand.c
|
||||
E_OBJ= verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o \
|
||||
ca.o pkcs7.o crl2p7.o crl.o \
|
||||
rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o \
|
||||
x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o \
|
||||
x509.o genrsa.o gendsa.o genpkey.o s_server.o s_client.o speed.o \
|
||||
s_time.o $(A_OBJ) $(S_OBJ) $(RAND_OBJ) version.o sess_id.o \
|
||||
ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o \
|
||||
ocsp.o prime.o cms.o
|
||||
ciphers.o nseq.o pkcs12.o pkcs8.o pkey.o pkeyparam.o pkeyutl.o \
|
||||
spkac.o smime.o cms.o rand.o engine.o ocsp.o prime.o ts.o
|
||||
|
||||
E_SRC= verify.c asn1pars.c req.c dgst.c dh.c enc.c passwd.c gendh.c errstr.c ca.c \
|
||||
pkcs7.c crl2p7.c crl.c \
|
||||
rsa.c rsautl.c dsa.c dsaparam.c ec.c ecparam.c \
|
||||
x509.c genrsa.c gendsa.c s_server.c s_client.c speed.c \
|
||||
x509.c genrsa.c gendsa.c genpkey.c s_server.c s_client.c speed.c \
|
||||
s_time.c $(A_SRC) $(S_SRC) $(RAND_SRC) version.c sess_id.c \
|
||||
ciphers.c nseq.c pkcs12.c pkcs8.c spkac.c smime.c rand.c engine.c \
|
||||
ocsp.c prime.c cms.c
|
||||
ciphers.c nseq.c pkcs12.c pkcs8.c pkey.c pkeyparam.c pkeyutl.c \
|
||||
spkac.c smime.c cms.c rand.c engine.c ocsp.c prime.c ts.c
|
||||
|
||||
SRC=$(E_SRC)
|
||||
|
||||
@@ -137,9 +137,10 @@ depend:
|
||||
dclean:
|
||||
$(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
|
||||
mv -f Makefile.new $(MAKEFILE)
|
||||
rm -f CA.pl
|
||||
|
||||
clean:
|
||||
rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
|
||||
rm -f *.o *.obj *.dll lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
|
||||
rm -f req
|
||||
|
||||
$(DLIBSSL):
|
||||
@@ -158,9 +159,7 @@ $(EXE): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
|
||||
APPNAME=$(EXE) OBJECTS="$(PROGRAM).o $(E_OBJ)" \
|
||||
LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
|
||||
link_app.$${shlib_target}
|
||||
-(cd ..; \
|
||||
OPENSSL="`pwd`/util/opensslwrap.sh"; export OPENSSL; \
|
||||
$(PERL) tools/c_rehash certs)
|
||||
@(cd ..; $(MAKE) rehash)
|
||||
|
||||
progs.h: progs.pl
|
||||
$(PERL) progs.pl $(E_EXE) >progs.h
|
||||
@@ -233,35 +232,37 @@ ca.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
ca.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
ca.o: ../include/openssl/x509v3.h apps.h ca.c
|
||||
ciphers.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
ciphers.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
ciphers.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
ciphers.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
ciphers.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
ciphers.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
ciphers.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
ciphers.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
ciphers.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
ciphers.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
ciphers.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
ciphers.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
ciphers.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
ciphers.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
ciphers.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
ciphers.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
ciphers.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
ciphers.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
ciphers.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
ciphers.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
ciphers.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
ciphers.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
ciphers.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
ciphers.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
ciphers.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
ciphers.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
ciphers.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
ciphers.o: ../include/openssl/x509v3.h apps.h ciphers.c
|
||||
ciphers.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
ciphers.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
ciphers.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
ciphers.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
ciphers.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
ciphers.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
ciphers.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
ciphers.o: ciphers.c
|
||||
cms.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
cms.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
cms.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
cms.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
cms.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
cms.o: ../include/openssl/buffer.h ../include/openssl/cms.h
|
||||
cms.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
cms.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
cms.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
cms.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
cms.o: ../include/openssl/evp.h ../include/openssl/lhash.h
|
||||
cms.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
cms.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
cms.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
cms.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
cms.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
|
||||
cms.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
cms.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
@@ -361,10 +362,10 @@ dsaparam.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
dsaparam.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
dsaparam.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
|
||||
dsaparam.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
dsaparam.o: ../include/openssl/store.h ../include/openssl/symhacks.h
|
||||
dsaparam.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
|
||||
dsaparam.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
dsaparam.o: ../include/openssl/x509v3.h apps.h dsaparam.c
|
||||
dsaparam.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
dsaparam.o: ../include/openssl/ui.h ../include/openssl/x509.h
|
||||
dsaparam.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
dsaparam.o: dsaparam.c
|
||||
ec.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
ec.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
ec.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
@@ -397,63 +398,63 @@ ecparam.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
ecparam.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
ecparam.o: ../include/openssl/x509v3.h apps.h ecparam.c
|
||||
enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
enc.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
enc.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
enc.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
enc.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
enc.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
enc.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
enc.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
enc.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
enc.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
enc.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
enc.o: ../include/openssl/rand.h ../include/openssl/safestack.h
|
||||
enc.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
enc.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
enc.o: ../include/openssl/x509v3.h apps.h enc.c
|
||||
enc.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
enc.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
enc.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
enc.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
enc.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
enc.o: ../include/openssl/evp.h ../include/openssl/lhash.h
|
||||
enc.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
enc.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
enc.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
enc.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
enc.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h enc.c
|
||||
engine.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
engine.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
engine.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
engine.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
engine.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
engine.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
engine.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
engine.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
engine.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
engine.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
engine.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
engine.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
engine.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
engine.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
engine.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
engine.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
engine.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
engine.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
engine.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
engine.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
engine.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
engine.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
engine.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
engine.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
engine.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
engine.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
engine.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
engine.o: ../include/openssl/x509v3.h apps.h engine.c
|
||||
engine.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
engine.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
engine.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
engine.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
engine.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
engine.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
engine.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
engine.o: engine.c
|
||||
errstr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
errstr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
errstr.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
errstr.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
errstr.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
errstr.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
errstr.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
errstr.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
errstr.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
errstr.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
errstr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
errstr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
errstr.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
errstr.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
errstr.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
errstr.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
errstr.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
errstr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
errstr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
errstr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
errstr.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
errstr.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
errstr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
errstr.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
errstr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
errstr.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
errstr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
errstr.o: ../include/openssl/x509v3.h apps.h errstr.c
|
||||
errstr.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
errstr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
errstr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
errstr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
errstr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
errstr.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
errstr.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
errstr.o: errstr.c
|
||||
gendh.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
gendh.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
gendh.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
@@ -469,10 +470,10 @@ gendh.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
gendh.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
gendh.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
|
||||
gendh.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
gendh.o: ../include/openssl/store.h ../include/openssl/symhacks.h
|
||||
gendh.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
|
||||
gendh.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
gendh.o: ../include/openssl/x509v3.h apps.h gendh.c
|
||||
gendh.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
gendh.o: ../include/openssl/ui.h ../include/openssl/x509.h
|
||||
gendh.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
gendh.o: gendh.c
|
||||
gendsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
gendsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
gendsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
@@ -490,6 +491,22 @@ gendsa.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
gendsa.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
gendsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
gendsa.o: gendsa.c
|
||||
genpkey.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
genpkey.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
genpkey.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
genpkey.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
genpkey.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
genpkey.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
genpkey.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
genpkey.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
genpkey.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
genpkey.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
genpkey.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
genpkey.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
genpkey.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
genpkey.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
genpkey.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
genpkey.o: genpkey.c
|
||||
genrsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
genrsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
genrsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
@@ -505,10 +522,10 @@ genrsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
genrsa.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
genrsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
|
||||
genrsa.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
genrsa.o: ../include/openssl/store.h ../include/openssl/symhacks.h
|
||||
genrsa.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
|
||||
genrsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
genrsa.o: ../include/openssl/x509v3.h apps.h genrsa.c
|
||||
genrsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
genrsa.o: ../include/openssl/ui.h ../include/openssl/x509.h
|
||||
genrsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
genrsa.o: genrsa.c
|
||||
nseq.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
nseq.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
nseq.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
@@ -531,13 +548,13 @@ ocsp.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
ocsp.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
ocsp.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
ocsp.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
ocsp.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
ocsp.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
ocsp.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
ocsp.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
ocsp.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
ocsp.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
ocsp.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
ocsp.o: ../include/openssl/evp.h ../include/openssl/hmac.h
|
||||
ocsp.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
|
||||
ocsp.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
ocsp.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
ocsp.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
ocsp.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
ocsp.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
|
||||
ocsp.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
ocsp.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
ocsp.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
@@ -546,26 +563,26 @@ ocsp.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
ocsp.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
ocsp.o: ../include/openssl/x509v3.h apps.h ocsp.c
|
||||
openssl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
openssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
openssl.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
openssl.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
openssl.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
openssl.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
openssl.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
openssl.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
openssl.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
openssl.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
openssl.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
openssl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
openssl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
openssl.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
openssl.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
openssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
openssl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
openssl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
openssl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
openssl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
openssl.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
openssl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
openssl.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
openssl.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
openssl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
openssl.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
openssl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
openssl.o: ../include/openssl/x509v3.h apps.h openssl.c progs.h s_apps.h
|
||||
openssl.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
openssl.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
openssl.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
openssl.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
openssl.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
openssl.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
openssl.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
openssl.o: openssl.c progs.h s_apps.h
|
||||
passwd.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
passwd.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
passwd.o: ../include/openssl/crypto.h ../include/openssl/des.h
|
||||
@@ -632,6 +649,53 @@ pkcs8.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
pkcs8.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
pkcs8.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
pkcs8.o: ../include/openssl/x509v3.h apps.h pkcs8.c
|
||||
pkey.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
pkey.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
pkey.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
pkey.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
pkey.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
pkey.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
pkey.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
pkey.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
pkey.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
pkey.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
pkey.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
pkey.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
pkey.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
pkey.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
pkey.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h pkey.c
|
||||
pkeyparam.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
pkeyparam.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
pkeyparam.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
pkeyparam.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
pkeyparam.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
pkeyparam.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
pkeyparam.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
pkeyparam.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
pkeyparam.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
pkeyparam.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
pkeyparam.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
pkeyparam.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
pkeyparam.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
pkeyparam.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
pkeyparam.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
pkeyparam.o: pkeyparam.c
|
||||
pkeyutl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
pkeyutl.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
pkeyutl.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
pkeyutl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
pkeyutl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
pkeyutl.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
pkeyutl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
pkeyutl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
pkeyutl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
pkeyutl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
pkeyutl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
pkeyutl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
pkeyutl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
pkeyutl.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
pkeyutl.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
pkeyutl.o: pkeyutl.c
|
||||
prime.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
prime.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
prime.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
@@ -677,10 +741,9 @@ req.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
req.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
req.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
|
||||
req.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
req.o: ../include/openssl/store.h ../include/openssl/symhacks.h
|
||||
req.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
|
||||
req.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
req.o: ../include/openssl/x509v3.h apps.h req.c
|
||||
req.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
req.o: ../include/openssl/ui.h ../include/openssl/x509.h
|
||||
req.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h req.c
|
||||
rsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
rsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
rsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
@@ -714,26 +777,26 @@ rsautl.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
rsautl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
rsautl.o: ../include/openssl/x509v3.h apps.h rsautl.c
|
||||
s_cb.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
s_cb.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
s_cb.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
s_cb.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
s_cb.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
s_cb.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
s_cb.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
s_cb.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
s_cb.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
s_cb.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
s_cb.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
s_cb.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
s_cb.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
s_cb.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
s_cb.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
s_cb.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
s_cb.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
s_cb.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
s_cb.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
s_cb.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
s_cb.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
s_cb.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
s_cb.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
s_cb.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
s_cb.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
s_cb.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
s_cb.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
s_cb.o: ../include/openssl/x509v3.h apps.h s_apps.h s_cb.c
|
||||
s_cb.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
s_cb.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
s_cb.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
s_cb.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
s_cb.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
s_cb.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
s_cb.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
s_cb.o: s_apps.h s_cb.c
|
||||
s_client.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
s_client.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
s_client.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
@@ -741,13 +804,13 @@ s_client.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
s_client.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
s_client.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
s_client.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
s_client.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
s_client.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
s_client.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
s_client.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
s_client.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
s_client.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
s_client.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
s_client.o: ../include/openssl/evp.h ../include/openssl/hmac.h
|
||||
s_client.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
|
||||
s_client.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
s_client.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
s_client.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
s_client.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
s_client.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
|
||||
s_client.o: ../include/openssl/rand.h ../include/openssl/safestack.h
|
||||
s_client.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
s_client.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
@@ -764,85 +827,84 @@ s_server.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
|
||||
s_server.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
s_server.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
s_server.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
s_server.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
s_server.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
s_server.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
s_server.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
s_server.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
s_server.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
s_server.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
s_server.o: ../include/openssl/evp.h ../include/openssl/hmac.h
|
||||
s_server.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
|
||||
s_server.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
s_server.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
s_server.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
s_server.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
s_server.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
|
||||
s_server.o: ../include/openssl/rand.h ../include/openssl/rsa.h
|
||||
s_server.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
s_server.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
s_server.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
s_server.o: ../include/openssl/stack.h ../include/openssl/store.h
|
||||
s_server.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
s_server.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
|
||||
s_server.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
s_server.o: ../include/openssl/x509v3.h apps.h s_apps.h s_server.c timeouts.h
|
||||
s_server.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
s_server.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
s_server.o: ../include/openssl/ui.h ../include/openssl/x509.h
|
||||
s_server.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
s_server.o: s_apps.h s_server.c timeouts.h
|
||||
s_socket.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
s_socket.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
s_socket.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
s_socket.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
s_socket.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
s_socket.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
s_socket.o: ../include/openssl/engine.h ../include/openssl/evp.h
|
||||
s_socket.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
s_socket.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
s_socket.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
s_socket.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
s_socket.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
s_socket.o: ../include/openssl/evp.h ../include/openssl/hmac.h
|
||||
s_socket.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
|
||||
s_socket.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
s_socket.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
s_socket.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
s_socket.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
s_socket.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
|
||||
s_socket.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
s_socket.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
s_socket.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
s_socket.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
s_socket.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
s_socket.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
s_socket.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
s_socket.o: s_apps.h s_socket.c
|
||||
s_socket.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
|
||||
s_socket.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
s_socket.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
s_socket.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
s_socket.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
s_socket.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
s_socket.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
s_socket.o: ../include/openssl/x509v3.h apps.h s_apps.h s_socket.c
|
||||
s_time.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
s_time.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
s_time.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
s_time.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
s_time.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
s_time.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
s_time.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
s_time.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
s_time.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
s_time.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
s_time.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
s_time.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
s_time.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
s_time.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
s_time.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
s_time.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
s_time.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
s_time.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
s_time.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
s_time.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
s_time.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
s_time.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
s_time.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
s_time.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
s_time.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
s_time.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
s_time.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
s_time.o: ../include/openssl/x509v3.h apps.h s_apps.h s_time.c
|
||||
s_time.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
s_time.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
s_time.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
s_time.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
s_time.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
s_time.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
s_time.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
s_time.o: s_apps.h s_time.c
|
||||
sess_id.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
sess_id.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
sess_id.o: ../include/openssl/comp.h ../include/openssl/conf.h
|
||||
sess_id.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
|
||||
sess_id.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
sess_id.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
sess_id.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
sess_id.o: ../include/openssl/evp.h ../include/openssl/kssl.h
|
||||
sess_id.o: ../include/openssl/buffer.h ../include/openssl/comp.h
|
||||
sess_id.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
sess_id.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
|
||||
sess_id.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
sess_id.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
sess_id.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
sess_id.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
|
||||
sess_id.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
|
||||
sess_id.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
sess_id.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
sess_id.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
|
||||
sess_id.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
|
||||
sess_id.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
|
||||
sess_id.o: ../include/openssl/safestack.h ../include/openssl/sha.h
|
||||
sess_id.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
|
||||
sess_id.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
|
||||
sess_id.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
sess_id.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
|
||||
sess_id.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
sess_id.o: ../include/openssl/x509v3.h apps.h sess_id.c
|
||||
sess_id.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
|
||||
sess_id.o: ../include/openssl/sha.h ../include/openssl/ssl.h
|
||||
sess_id.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
|
||||
sess_id.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
|
||||
sess_id.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
|
||||
sess_id.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
sess_id.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
sess_id.o: sess_id.c
|
||||
smime.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
smime.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
smime.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
@@ -862,27 +924,29 @@ smime.o: smime.c
|
||||
speed.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
|
||||
speed.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
|
||||
speed.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
speed.o: ../include/openssl/cast.h ../include/openssl/conf.h
|
||||
speed.o: ../include/openssl/crypto.h ../include/openssl/des.h
|
||||
speed.o: ../include/openssl/des_old.h ../include/openssl/dsa.h
|
||||
speed.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
speed.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
speed.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
speed.o: ../include/openssl/evp.h ../include/openssl/hmac.h
|
||||
speed.o: ../include/openssl/idea.h ../include/openssl/lhash.h
|
||||
speed.o: ../include/openssl/md2.h ../include/openssl/md4.h
|
||||
speed.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
|
||||
speed.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
|
||||
speed.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
speed.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
|
||||
speed.o: ../include/openssl/rand.h ../include/openssl/rc2.h
|
||||
speed.o: ../include/openssl/rc4.h ../include/openssl/ripemd.h
|
||||
speed.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
|
||||
speed.o: ../include/openssl/camellia.h ../include/openssl/cast.h
|
||||
speed.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
speed.o: ../include/openssl/des.h ../include/openssl/des_old.h
|
||||
speed.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
|
||||
speed.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
|
||||
speed.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
|
||||
speed.o: ../include/openssl/err.h ../include/openssl/evp.h
|
||||
speed.o: ../include/openssl/hmac.h ../include/openssl/idea.h
|
||||
speed.o: ../include/openssl/lhash.h ../include/openssl/md2.h
|
||||
speed.o: ../include/openssl/md4.h ../include/openssl/md5.h
|
||||
speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
speed.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
speed.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
speed.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
|
||||
speed.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
|
||||
speed.o: ../include/openssl/safestack.h ../include/openssl/seed.h
|
||||
speed.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
speed.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
|
||||
speed.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
|
||||
speed.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
|
||||
speed.o: ../include/openssl/x509v3.h apps.h speed.c testdsa.h testrsa.h
|
||||
speed.o: ../include/openssl/whrlpool.h ../include/openssl/x509.h
|
||||
speed.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
speed.o: speed.c testdsa.h testrsa.h
|
||||
spkac.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
spkac.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
spkac.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
@@ -899,6 +963,24 @@ spkac.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
spkac.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
spkac.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
|
||||
spkac.o: spkac.c
|
||||
ts.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
ts.o: ../include/openssl/bn.h ../include/openssl/buffer.h
|
||||
ts.o: ../include/openssl/conf.h ../include/openssl/crypto.h
|
||||
ts.o: ../include/openssl/dh.h ../include/openssl/dsa.h
|
||||
ts.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
|
||||
ts.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
|
||||
ts.o: ../include/openssl/engine.h ../include/openssl/err.h
|
||||
ts.o: ../include/openssl/evp.h ../include/openssl/lhash.h
|
||||
ts.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
|
||||
ts.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
|
||||
ts.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
ts.o: ../include/openssl/pem.h ../include/openssl/pem2.h
|
||||
ts.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
|
||||
ts.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
|
||||
ts.o: ../include/openssl/sha.h ../include/openssl/stack.h
|
||||
ts.o: ../include/openssl/symhacks.h ../include/openssl/ts.h
|
||||
ts.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
|
||||
ts.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h ts.c
|
||||
verify.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
|
||||
verify.o: ../include/openssl/buffer.h ../include/openssl/conf.h
|
||||
verify.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
|
||||
903
apps/apps.c
903
apps/apps.c
File diff suppressed because it is too large
Load Diff
81
apps/apps.h
81
apps/apps.h
@@ -137,11 +137,6 @@ long app_RAND_load_files(char *file); /* `file' is a list of files to read,
|
||||
* (see e_os.h). The string is
|
||||
* destroyed! */
|
||||
|
||||
#ifdef OPENSSL_SYS_WIN32
|
||||
#define rename(from,to) WIN32_rename((from),(to))
|
||||
int WIN32_rename(const char *oldname,const char *newname);
|
||||
#endif
|
||||
|
||||
#ifndef MONOLITH
|
||||
|
||||
#define MAIN(a,v) main(a,v)
|
||||
@@ -179,54 +174,24 @@ extern BIO *bio_err;
|
||||
# define apps_shutdown()
|
||||
#else
|
||||
# ifndef OPENSSL_NO_ENGINE
|
||||
# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WIN16) || \
|
||||
defined(OPENSSL_SYS_WIN32)
|
||||
# ifdef _O_BINARY
|
||||
# define apps_startup() \
|
||||
do { _fmode=_O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
|
||||
# define apps_startup() \
|
||||
do { do_pipe_sig(); CRYPTO_malloc_init(); \
|
||||
ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
|
||||
ENGINE_load_builtin_engines(); setup_ui_method(); } while(0)
|
||||
# else
|
||||
# define apps_startup() \
|
||||
do { _fmode=O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
|
||||
ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
|
||||
ENGINE_load_builtin_engines(); setup_ui_method(); } while(0)
|
||||
# endif
|
||||
# else
|
||||
# define apps_startup() \
|
||||
do { do_pipe_sig(); OpenSSL_add_all_algorithms(); \
|
||||
ERR_load_crypto_strings(); ENGINE_load_builtin_engines(); \
|
||||
setup_ui_method(); } while(0)
|
||||
# endif
|
||||
# define apps_shutdown() \
|
||||
do { CONF_modules_unload(1); destroy_ui_method(); \
|
||||
EVP_cleanup(); ENGINE_cleanup(); \
|
||||
CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \
|
||||
ERR_free_strings(); } while(0)
|
||||
OBJ_cleanup(); EVP_cleanup(); ENGINE_cleanup(); \
|
||||
CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
|
||||
ERR_free_strings(); COMP_zlib_cleanup();} while(0)
|
||||
# else
|
||||
# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WIN16) || \
|
||||
defined(OPENSSL_SYS_WIN32)
|
||||
# ifdef _O_BINARY
|
||||
# define apps_startup() \
|
||||
do { _fmode=_O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
|
||||
# define apps_startup() \
|
||||
do { do_pipe_sig(); CRYPTO_malloc_init(); \
|
||||
ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
|
||||
setup_ui_method(); } while(0)
|
||||
# else
|
||||
# define apps_startup() \
|
||||
do { _fmode=O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
|
||||
ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
|
||||
setup_ui_method(); } while(0)
|
||||
# endif
|
||||
# else
|
||||
# define apps_startup() \
|
||||
do { do_pipe_sig(); OpenSSL_add_all_algorithms(); \
|
||||
ERR_load_crypto_strings(); \
|
||||
setup_ui_method(); } while(0)
|
||||
# endif
|
||||
# define apps_shutdown() \
|
||||
do { CONF_modules_unload(1); destroy_ui_method(); \
|
||||
EVP_cleanup(); \
|
||||
CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \
|
||||
OBJ_cleanup(); EVP_cleanup(); \
|
||||
CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
|
||||
ERR_free_strings(); } while(0)
|
||||
# endif
|
||||
#endif
|
||||
@@ -237,6 +202,7 @@ extern BIO *bio_err;
|
||||
# define openssl_fdset(a,b) FD_SET(a, b)
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct args_st
|
||||
{
|
||||
char **data;
|
||||
@@ -328,13 +294,27 @@ int index_index(CA_DB *db);
|
||||
int save_index(const char *dbfile, const char *suffix, CA_DB *db);
|
||||
int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suffix);
|
||||
void free_index(CA_DB *db);
|
||||
int index_name_cmp(const char **a, const char **b);
|
||||
#define index_name_cmp_noconst(a, b) \
|
||||
index_name_cmp((const CSTRING *)CHECKED_PTR_OF(STRING, a), \
|
||||
(const CSTRING *)CHECKED_PTR_OF(STRING, b))
|
||||
int index_name_cmp(const CSTRING *a, const CSTRING *b);
|
||||
int parse_yesno(const char *str, int def);
|
||||
|
||||
X509_NAME *parse_name(char *str, long chtype, int multirdn);
|
||||
int args_verify(char ***pargs, int *pargc,
|
||||
int *badarg, BIO *err, X509_VERIFY_PARAM **pm);
|
||||
void policies_print(BIO *out, X509_STORE_CTX *ctx);
|
||||
int bio_to_mem(unsigned char **out, int maxlen, BIO *in);
|
||||
int pkey_ctrl_string(EVP_PKEY_CTX *ctx, char *value);
|
||||
int init_gen_str(BIO *err, EVP_PKEY_CTX **pctx,
|
||||
const char *algname, ENGINE *e, int do_param);
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
extern char *psk_key;
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_JPAKE
|
||||
void jpake_client_auth(BIO *out, BIO *conn, const char *secret);
|
||||
void jpake_server_auth(BIO *out, BIO *conn, const char *secret);
|
||||
#endif
|
||||
|
||||
#define FORMAT_UNDEF 0
|
||||
#define FORMAT_ASN1 1
|
||||
@@ -346,6 +326,10 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx);
|
||||
#define FORMAT_ENGINE 7
|
||||
#define FORMAT_IISSGC 8 /* XXX this stupid macro helps us to avoid
|
||||
* adding yet another param to load_*key() */
|
||||
#define FORMAT_PEMRSA 9 /* PEM RSAPubicKey format */
|
||||
#define FORMAT_ASN1RSA 10 /* DER RSAPubicKey format */
|
||||
#define FORMAT_MSBLOB 11 /* MS Key blob format */
|
||||
#define FORMAT_PVK 12 /* MS PVK file format */
|
||||
|
||||
#define EXT_COPY_NONE 0
|
||||
#define EXT_COPY_ADD 1
|
||||
@@ -357,4 +341,11 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx);
|
||||
|
||||
#define SERIAL_RAND_BITS 64
|
||||
|
||||
int app_isdir(const char *);
|
||||
int raw_read_stdin(void *,int);
|
||||
int raw_write_stdout(const void *,int);
|
||||
|
||||
#define TM_START 0
|
||||
#define TM_STOP 1
|
||||
double app_tminterval (int stop,int usertime);
|
||||
#endif
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
/* A nice addition from Dr Stephen Henson <shenson@bigfoot.com> to
|
||||
/* A nice addition from Dr Stephen Henson <steve@openssl.org> to
|
||||
* add the -strparse option which parses nested binary structures
|
||||
*/
|
||||
|
||||
@@ -96,7 +96,7 @@ int MAIN(int argc, char **argv)
|
||||
unsigned char *tmpbuf;
|
||||
const unsigned char *ctmpbuf;
|
||||
BUF_MEM *buf=NULL;
|
||||
STACK *osk=NULL;
|
||||
STACK_OF(STRING) *osk=NULL;
|
||||
ASN1_TYPE *at=NULL;
|
||||
|
||||
informat=FORMAT_PEM;
|
||||
@@ -113,7 +113,7 @@ int MAIN(int argc, char **argv)
|
||||
prog=argv[0];
|
||||
argc--;
|
||||
argv++;
|
||||
if ((osk=sk_new_null()) == NULL)
|
||||
if ((osk=sk_STRING_new_null()) == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"Memory allocation failure\n");
|
||||
goto end;
|
||||
@@ -169,7 +169,7 @@ int MAIN(int argc, char **argv)
|
||||
else if (strcmp(*argv,"-strparse") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
sk_push(osk,*(++argv));
|
||||
sk_STRING_push(osk,*(++argv));
|
||||
}
|
||||
else if (strcmp(*argv,"-genstr") == 0)
|
||||
{
|
||||
@@ -302,18 +302,18 @@ bad:
|
||||
|
||||
/* If any structs to parse go through in sequence */
|
||||
|
||||
if (sk_num(osk))
|
||||
if (sk_STRING_num(osk))
|
||||
{
|
||||
tmpbuf=(unsigned char *)str;
|
||||
tmplen=num;
|
||||
for (i=0; i<sk_num(osk); i++)
|
||||
for (i=0; i<sk_STRING_num(osk); i++)
|
||||
{
|
||||
ASN1_TYPE *atmp;
|
||||
int typ;
|
||||
j=atoi(sk_value(osk,i));
|
||||
j=atoi(sk_STRING_value(osk,i));
|
||||
if (j == 0)
|
||||
{
|
||||
BIO_printf(bio_err,"'%s' is an invalid number\n",sk_value(osk,i));
|
||||
BIO_printf(bio_err,"'%s' is an invalid number\n",sk_STRING_value(osk,i));
|
||||
continue;
|
||||
}
|
||||
tmpbuf+=j;
|
||||
@@ -378,7 +378,7 @@ end:
|
||||
ERR_print_errors(bio_err);
|
||||
if (buf != NULL) BUF_MEM_free(buf);
|
||||
if (at != NULL) ASN1_TYPE_free(at);
|
||||
if (osk != NULL) sk_free(osk);
|
||||
if (osk != NULL) sk_STRING_free(osk);
|
||||
OBJ_cleanup();
|
||||
apps_shutdown();
|
||||
OPENSSL_EXIT(ret);
|
||||
|
||||
142
apps/ca.c
142
apps/ca.c
@@ -63,7 +63,6 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/err.h>
|
||||
@@ -227,7 +226,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
|
||||
static int do_revoke(X509 *x509, CA_DB *db, int ext, char *extval);
|
||||
static int get_certificate_status(const char *ser_status, CA_DB *db);
|
||||
static int do_updatedb(CA_DB *db);
|
||||
static int check_time_format(char *str);
|
||||
static int check_time_format(const char *str);
|
||||
char *make_revocation_str(int rev_type, char *rev_arg);
|
||||
int make_revoked(X509_REVOKED *rev, const char *str);
|
||||
int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str);
|
||||
@@ -259,6 +258,7 @@ int MAIN(int argc, char **argv)
|
||||
int doupdatedb=0;
|
||||
long crldays=0;
|
||||
long crlhours=0;
|
||||
long crlsec=0;
|
||||
long errorline= -1;
|
||||
char *configfile=NULL;
|
||||
char *md=NULL;
|
||||
@@ -306,7 +306,8 @@ int MAIN(int argc, char **argv)
|
||||
ASN1_TIME *tmptm;
|
||||
ASN1_INTEGER *tmpser;
|
||||
char *f;
|
||||
const char *p, **pp;
|
||||
const char *p;
|
||||
char * const *pp;
|
||||
int i,j;
|
||||
const EVP_MD *dgst=NULL;
|
||||
STACK_OF(CONF_VALUE) *attribs=NULL;
|
||||
@@ -457,6 +458,11 @@ EF_ALIGNMENT=0;
|
||||
if (--argc < 1) goto bad;
|
||||
crlhours= atol(*(++argv));
|
||||
}
|
||||
else if (strcmp(*argv,"-crlsec") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
crlsec = atol(*(++argv));
|
||||
}
|
||||
else if (strcmp(*argv,"-infiles") == 0)
|
||||
{
|
||||
argc--;
|
||||
@@ -550,8 +556,10 @@ bad:
|
||||
|
||||
if (badops)
|
||||
{
|
||||
for (pp=ca_usage; (*pp != NULL); pp++)
|
||||
BIO_printf(bio_err,"%s",*pp);
|
||||
const char **pp2;
|
||||
|
||||
for (pp2=ca_usage; (*pp2 != NULL); pp2++)
|
||||
BIO_printf(bio_err,"%s",*pp2);
|
||||
goto err;
|
||||
}
|
||||
|
||||
@@ -826,7 +834,6 @@ bad:
|
||||
/* lookup where to write new certificates */
|
||||
if ((outdir == NULL) && (req))
|
||||
{
|
||||
struct stat sb;
|
||||
|
||||
if ((outdir=NCONF_get_string(conf,section,ENV_NEW_CERTS_DIR))
|
||||
== NULL)
|
||||
@@ -845,27 +852,23 @@ bad:
|
||||
that to access(). However, time's too short to do that just
|
||||
now.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
if (access(outdir,R_OK|W_OK|X_OK) != 0)
|
||||
#else
|
||||
if (_access(outdir,R_OK|W_OK|X_OK) != 0)
|
||||
#endif
|
||||
{
|
||||
BIO_printf(bio_err,"I am unable to access the %s directory\n",outdir);
|
||||
perror(outdir);
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (stat(outdir,&sb) != 0)
|
||||
{
|
||||
BIO_printf(bio_err,"unable to stat(%s)\n",outdir);
|
||||
perror(outdir);
|
||||
goto err;
|
||||
}
|
||||
#ifdef S_IFDIR
|
||||
if (!(sb.st_mode & S_IFDIR))
|
||||
if (app_isdir(outdir)<=0)
|
||||
{
|
||||
BIO_printf(bio_err,"%s need to be a directory\n",outdir);
|
||||
perror(outdir);
|
||||
goto err;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -880,9 +883,9 @@ bad:
|
||||
if (db == NULL) goto err;
|
||||
|
||||
/* Lets check some fields */
|
||||
for (i=0; i<sk_num(db->db->data); i++)
|
||||
for (i=0; i<sk_PSTRING_num(db->db->data); i++)
|
||||
{
|
||||
pp=(const char **)sk_value(db->db->data,i);
|
||||
pp=sk_PSTRING_value(db->db->data,i);
|
||||
if ((pp[DB_type][0] != DB_TYPE_REV) &&
|
||||
(pp[DB_rev_date][0] != '\0'))
|
||||
{
|
||||
@@ -935,7 +938,7 @@ bad:
|
||||
#endif
|
||||
TXT_DB_write(out,db->db);
|
||||
BIO_printf(bio_err,"%d entries loaded from the database\n",
|
||||
db->db->data->num);
|
||||
sk_PSTRING_num(db->db->data));
|
||||
BIO_printf(bio_err,"generating index\n");
|
||||
}
|
||||
|
||||
@@ -1026,6 +1029,17 @@ bad:
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!strcmp(md, "default"))
|
||||
{
|
||||
int def_nid;
|
||||
if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) <= 0)
|
||||
{
|
||||
BIO_puts(bio_err,"no default digest\n");
|
||||
goto err;
|
||||
}
|
||||
md = (char *)OBJ_nid2sn(def_nid);
|
||||
}
|
||||
|
||||
if ((dgst=EVP_get_digestbyname(md)) == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"%s is an unsupported message digest type\n",md);
|
||||
@@ -1095,9 +1109,9 @@ bad:
|
||||
if (startdate == NULL)
|
||||
ERR_clear_error();
|
||||
}
|
||||
if (startdate && !ASN1_UTCTIME_set_string(NULL,startdate))
|
||||
if (startdate && !ASN1_TIME_set_string(NULL, startdate))
|
||||
{
|
||||
BIO_printf(bio_err,"start date is invalid, it should be YYMMDDHHMMSSZ\n");
|
||||
BIO_printf(bio_err,"start date is invalid, it should be YYMMDDHHMMSSZ or YYYYMMDDHHMMSSZ\n");
|
||||
goto err;
|
||||
}
|
||||
if (startdate == NULL) startdate="today";
|
||||
@@ -1109,9 +1123,9 @@ bad:
|
||||
if (enddate == NULL)
|
||||
ERR_clear_error();
|
||||
}
|
||||
if (enddate && !ASN1_UTCTIME_set_string(NULL,enddate))
|
||||
if (enddate && !ASN1_TIME_set_string(NULL, enddate))
|
||||
{
|
||||
BIO_printf(bio_err,"end date is invalid, it should be YYMMDDHHMMSSZ\n");
|
||||
BIO_printf(bio_err,"end date is invalid, it should be YYMMDDHHMMSSZ or YYYYMMDDHHMMSSZ\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
@@ -1366,7 +1380,7 @@ bad:
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!crldays && !crlhours)
|
||||
if (!crldays && !crlhours && !crlsec)
|
||||
{
|
||||
if (!NCONF_get_number(conf,section,
|
||||
ENV_DEFAULT_CRL_DAYS, &crldays))
|
||||
@@ -1375,7 +1389,7 @@ bad:
|
||||
ENV_DEFAULT_CRL_HOURS, &crlhours))
|
||||
crlhours = 0;
|
||||
}
|
||||
if ((crldays == 0) && (crlhours == 0))
|
||||
if ((crldays == 0) && (crlhours == 0) && (crlsec == 0))
|
||||
{
|
||||
BIO_printf(bio_err,"cannot lookup how long until the next CRL is issued\n");
|
||||
goto err;
|
||||
@@ -1389,14 +1403,14 @@ bad:
|
||||
if (!tmptm) goto err;
|
||||
X509_gmtime_adj(tmptm,0);
|
||||
X509_CRL_set_lastUpdate(crl, tmptm);
|
||||
X509_gmtime_adj(tmptm,(crldays*24+crlhours)*60*60);
|
||||
X509_time_adj_ex(tmptm, crldays, crlhours*60*60 + crlsec, NULL);
|
||||
X509_CRL_set_nextUpdate(crl, tmptm);
|
||||
|
||||
ASN1_TIME_free(tmptm);
|
||||
|
||||
for (i=0; i<sk_num(db->db->data); i++)
|
||||
for (i=0; i<sk_PSTRING_num(db->db->data); i++)
|
||||
{
|
||||
pp=(const char **)sk_value(db->db->data,i);
|
||||
pp=sk_PSTRING_value(db->db->data,i);
|
||||
if (pp[DB_type][0] == DB_TYPE_REV)
|
||||
{
|
||||
if ((r=X509_REVOKED_new()) == NULL) goto err;
|
||||
@@ -1422,15 +1436,6 @@ bad:
|
||||
|
||||
/* we now have a CRL */
|
||||
if (verbose) BIO_printf(bio_err,"signing CRL\n");
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (pkey->type == EVP_PKEY_DSA)
|
||||
dgst=EVP_dss1();
|
||||
else
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (pkey->type == EVP_PKEY_EC)
|
||||
dgst=EVP_ecdsa();
|
||||
#endif
|
||||
|
||||
/* Add any extensions asked for */
|
||||
|
||||
@@ -1463,6 +1468,12 @@ bad:
|
||||
if (crlnumberfile != NULL) /* we have a CRL number that need updating */
|
||||
if (!save_serial(crlnumberfile,"new",crlnumber,NULL)) goto err;
|
||||
|
||||
if (crlnumber)
|
||||
{
|
||||
BN_free(crlnumber);
|
||||
crlnumber = NULL;
|
||||
}
|
||||
|
||||
if (!X509_CRL_sign(crl,pkey,dgst)) goto err;
|
||||
|
||||
PEM_write_bio_X509_CRL(Sout,crl);
|
||||
@@ -1515,6 +1526,7 @@ err:
|
||||
if (free_key && key)
|
||||
OPENSSL_free(key);
|
||||
BN_free(serial);
|
||||
BN_free(crlnumber);
|
||||
free_index(db);
|
||||
EVP_PKEY_free(pkey);
|
||||
if (x509) X509_free(x509);
|
||||
@@ -1673,7 +1685,9 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
|
||||
int ok= -1,i,j,last,nid;
|
||||
const char *p;
|
||||
CONF_VALUE *cv;
|
||||
char *row[DB_NUMBER],**rrow=NULL,**irow=NULL;
|
||||
STRING row[DB_NUMBER];
|
||||
STRING *irow=NULL;
|
||||
STRING *rrow=NULL;
|
||||
char buf[25];
|
||||
|
||||
tmptm=ASN1_UTCTIME_new();
|
||||
@@ -1915,7 +1929,9 @@ again2:
|
||||
|
||||
if (db->attributes.unique_subject)
|
||||
{
|
||||
rrow=TXT_DB_get_by_index(db->db,DB_name,row);
|
||||
STRING *crow=row;
|
||||
|
||||
rrow=TXT_DB_get_by_index(db->db,DB_name,crow);
|
||||
if (rrow != NULL)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
@@ -1991,11 +2007,11 @@ again2:
|
||||
|
||||
if (strcmp(startdate,"today") == 0)
|
||||
X509_gmtime_adj(X509_get_notBefore(ret),0);
|
||||
else ASN1_UTCTIME_set_string(X509_get_notBefore(ret),startdate);
|
||||
else ASN1_TIME_set_string(X509_get_notBefore(ret),startdate);
|
||||
|
||||
if (enddate == NULL)
|
||||
X509_gmtime_adj(X509_get_notAfter(ret),(long)60*60*24*days);
|
||||
else ASN1_UTCTIME_set_string(X509_get_notAfter(ret),enddate);
|
||||
X509_time_adj_ex(X509_get_notAfter(ret),days, 0, NULL);
|
||||
else ASN1_TIME_set_string(X509_get_notAfter(ret),enddate);
|
||||
|
||||
if (!X509_set_subject_name(ret,subject)) goto err;
|
||||
|
||||
@@ -2091,7 +2107,7 @@ again2:
|
||||
}
|
||||
|
||||
BIO_printf(bio_err,"Certificate is to be certified until ");
|
||||
ASN1_UTCTIME_print(bio_err,X509_get_notAfter(ret));
|
||||
ASN1_TIME_print(bio_err,X509_get_notAfter(ret));
|
||||
if (days) BIO_printf(bio_err," (%ld days)",days);
|
||||
BIO_printf(bio_err, "\n");
|
||||
|
||||
@@ -2110,25 +2126,11 @@ again2:
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (pkey->type == EVP_PKEY_DSA) dgst=EVP_dss1();
|
||||
pktmp=X509_get_pubkey(ret);
|
||||
if (EVP_PKEY_missing_parameters(pktmp) &&
|
||||
!EVP_PKEY_missing_parameters(pkey))
|
||||
EVP_PKEY_copy_parameters(pktmp,pkey);
|
||||
EVP_PKEY_free(pktmp);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (pkey->type == EVP_PKEY_EC)
|
||||
dgst = EVP_ecdsa();
|
||||
pktmp = X509_get_pubkey(ret);
|
||||
if (EVP_PKEY_missing_parameters(pktmp) &&
|
||||
!EVP_PKEY_missing_parameters(pkey))
|
||||
EVP_PKEY_copy_parameters(pktmp, pkey);
|
||||
EVP_PKEY_free(pktmp);
|
||||
#endif
|
||||
|
||||
|
||||
if (!X509_sign(ret,pkey,dgst))
|
||||
goto err;
|
||||
@@ -2230,7 +2232,7 @@ static int certify_spkac(X509 **xret, char *infile, EVP_PKEY *pkey, X509 *x509,
|
||||
unsigned long nameopt, int default_op, int ext_copy)
|
||||
{
|
||||
STACK_OF(CONF_VALUE) *sk=NULL;
|
||||
LHASH *parms=NULL;
|
||||
LHASH_OF(CONF_VALUE) *parms=NULL;
|
||||
X509_REQ *req=NULL;
|
||||
CONF_VALUE *cv=NULL;
|
||||
NETSCAPE_SPKI *spki = NULL;
|
||||
@@ -2393,14 +2395,9 @@ static int fix_data(int nid, int *type)
|
||||
return(1);
|
||||
}
|
||||
|
||||
static int check_time_format(char *str)
|
||||
static int check_time_format(const char *str)
|
||||
{
|
||||
ASN1_UTCTIME tm;
|
||||
|
||||
tm.data=(unsigned char *)str;
|
||||
tm.length=strlen(str);
|
||||
tm.type=V_ASN1_UTCTIME;
|
||||
return(ASN1_UTCTIME_check(&tm));
|
||||
return ASN1_TIME_set_string(NULL, str);
|
||||
}
|
||||
|
||||
static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
|
||||
@@ -2415,6 +2412,8 @@ static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
|
||||
row[i]=NULL;
|
||||
row[DB_name]=X509_NAME_oneline(X509_get_subject_name(x509),NULL,0);
|
||||
bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(x509),NULL);
|
||||
if (!bn)
|
||||
goto err;
|
||||
if (BN_is_zero(bn))
|
||||
row[DB_serial]=BUF_strdup("00");
|
||||
else
|
||||
@@ -2484,7 +2483,7 @@ static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
|
||||
goto err;
|
||||
|
||||
}
|
||||
else if (index_name_cmp((const char **)row,(const char **)rrow))
|
||||
else if (index_name_cmp_noconst(row, rrow))
|
||||
{
|
||||
BIO_printf(bio_err,"ERROR:name does not match %s\n",
|
||||
row[DB_name]);
|
||||
@@ -2633,9 +2632,9 @@ static int do_updatedb (CA_DB *db)
|
||||
else
|
||||
a_y2k = 0;
|
||||
|
||||
for (i = 0; i < sk_num(db->db->data); i++)
|
||||
for (i = 0; i < sk_PSTRING_num(db->db->data); i++)
|
||||
{
|
||||
rrow = (char **) sk_value(db->db->data, i);
|
||||
rrow = sk_PSTRING_value(db->db->data, i);
|
||||
|
||||
if (rrow[DB_type][0] == 'V')
|
||||
{
|
||||
@@ -2882,22 +2881,13 @@ int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str)
|
||||
p=(char *)str->data;
|
||||
for (j=str->length; j>0; j--)
|
||||
{
|
||||
#ifdef CHARSET_EBCDIC
|
||||
if ((*p >= 0x20) && (*p <= 0x7e))
|
||||
BIO_printf(bp,"%c",os_toebcdic[*p]);
|
||||
#else
|
||||
if ((*p >= ' ') && (*p <= '~'))
|
||||
BIO_printf(bp,"%c",*p);
|
||||
#endif
|
||||
else if (*p & 0x80)
|
||||
BIO_printf(bp,"\\0x%02X",*p);
|
||||
else if ((unsigned char)*p == 0xf7)
|
||||
BIO_printf(bp,"^?");
|
||||
#ifdef CHARSET_EBCDIC
|
||||
else BIO_printf(bp,"^%c",os_toebcdic[*p+0x40]);
|
||||
#else
|
||||
else BIO_printf(bp,"^%c",*p+'@');
|
||||
#endif
|
||||
p++;
|
||||
}
|
||||
BIO_printf(bp,"'\n");
|
||||
|
||||
@@ -71,7 +71,8 @@
|
||||
|
||||
static const char *ciphers_usage[]={
|
||||
"usage: ciphers args\n",
|
||||
" -v - verbose mode, a textual listing of the ciphers in SSLeay\n",
|
||||
" -v - verbose mode, a textual listing of the SSL/TLS ciphers in OpenSSL\n",
|
||||
" -V - even more verbose\n",
|
||||
" -ssl2 - SSL2 mode\n",
|
||||
" -ssl3 - SSL3 mode\n",
|
||||
" -tls1 - TLS1 mode\n",
|
||||
@@ -83,14 +84,14 @@ int MAIN(int, char **);
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
int ret=1,i;
|
||||
int verbose=0;
|
||||
int verbose=0,Verbose=0;
|
||||
const char **pp;
|
||||
const char *p;
|
||||
int badops=0;
|
||||
SSL_CTX *ctx=NULL;
|
||||
SSL *ssl=NULL;
|
||||
char *ciphers=NULL;
|
||||
SSL_METHOD *meth=NULL;
|
||||
const SSL_METHOD *meth=NULL;
|
||||
STACK_OF(SSL_CIPHER) *sk;
|
||||
char buf[512];
|
||||
BIO *STDout=NULL;
|
||||
@@ -114,6 +115,8 @@ int MAIN(int argc, char **argv)
|
||||
STDout = BIO_push(tmpbio, STDout);
|
||||
}
|
||||
#endif
|
||||
if (!load_config(bio_err, NULL))
|
||||
goto end;
|
||||
|
||||
argc--;
|
||||
argv++;
|
||||
@@ -121,6 +124,8 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
if (strcmp(*argv,"-v") == 0)
|
||||
verbose=1;
|
||||
else if (strcmp(*argv,"-V") == 0)
|
||||
verbose=Verbose=1;
|
||||
#ifndef OPENSSL_NO_SSL2
|
||||
else if (strcmp(*argv,"-ssl2") == 0)
|
||||
meth=SSLv2_client_method();
|
||||
@@ -179,15 +184,33 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
BIO_printf(STDout,"\n");
|
||||
}
|
||||
else
|
||||
else /* verbose */
|
||||
{
|
||||
sk=SSL_get_ciphers(ssl);
|
||||
|
||||
for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
|
||||
{
|
||||
BIO_puts(STDout,SSL_CIPHER_description(
|
||||
sk_SSL_CIPHER_value(sk,i),
|
||||
buf,sizeof buf));
|
||||
SSL_CIPHER *c;
|
||||
|
||||
c = sk_SSL_CIPHER_value(sk,i);
|
||||
|
||||
if (Verbose)
|
||||
{
|
||||
unsigned long id = c->id;
|
||||
int id0 = (int)(id >> 24);
|
||||
int id1 = (int)((id >> 16) & 0xffL);
|
||||
int id2 = (int)((id >> 8) & 0xffL);
|
||||
int id3 = (int)(id & 0xffL);
|
||||
|
||||
if ((id & 0xff000000L) == 0x02000000L)
|
||||
BIO_printf(STDout, " 0x%02X,0x%02X,0x%02X - ", id1, id2, id3); /* SSL2 cipher */
|
||||
else if ((id & 0xff000000L) == 0x03000000L)
|
||||
BIO_printf(STDout, " 0x%02X,0x%02X - ", id2, id3); /* SSL3 cipher */
|
||||
else
|
||||
BIO_printf(STDout, "0x%02X,0x%02X,0x%02X,0x%02X - ", id0, id1, id2, id3); /* whatever */
|
||||
}
|
||||
|
||||
BIO_puts(STDout,SSL_CIPHER_description(c,buf,sizeof buf));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
109
apps/cms.c
109
apps/cms.c
@@ -71,8 +71,9 @@
|
||||
static int save_certs(char *signerfile, STACK_OF(X509) *signers);
|
||||
static int cms_cb(int ok, X509_STORE_CTX *ctx);
|
||||
static void receipt_request_print(BIO *out, CMS_ContentInfo *cms);
|
||||
static CMS_ReceiptRequest *make_receipt_request(STACK *rr_to, int rr_allorfirst,
|
||||
STACK *rr_from);
|
||||
static CMS_ReceiptRequest *make_receipt_request(STACK_OF(STRING) *rr_to,
|
||||
int rr_allorfirst,
|
||||
STACK_OF(STRING) *rr_from);
|
||||
|
||||
#define SMIME_OP 0x10
|
||||
#define SMIME_IP 0x20
|
||||
@@ -94,6 +95,8 @@ static CMS_ReceiptRequest *make_receipt_request(STACK *rr_to, int rr_allorfirst,
|
||||
#define SMIME_SIGN_RECEIPT (15 | SMIME_IP | SMIME_OP)
|
||||
#define SMIME_VERIFY_RECEIPT (16 | SMIME_IP)
|
||||
|
||||
int verify_err = 0;
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
@@ -105,7 +108,7 @@ int MAIN(int argc, char **argv)
|
||||
const char *inmode = "r", *outmode = "w";
|
||||
char *infile = NULL, *outfile = NULL, *rctfile = NULL;
|
||||
char *signerfile = NULL, *recipfile = NULL;
|
||||
STACK *sksigners = NULL, *skkeys = NULL;
|
||||
STACK_OF(STRING) *sksigners = NULL, *skkeys = NULL;
|
||||
char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
|
||||
char *certsoutfile = NULL;
|
||||
const EVP_CIPHER *cipher = NULL;
|
||||
@@ -116,9 +119,10 @@ int MAIN(int argc, char **argv)
|
||||
STACK_OF(X509) *encerts = NULL, *other = NULL;
|
||||
BIO *in = NULL, *out = NULL, *indata = NULL, *rctin = NULL;
|
||||
int badarg = 0;
|
||||
int flags = CMS_DETACHED;
|
||||
int flags = CMS_DETACHED, noout = 0, print = 0;
|
||||
int verify_retcode = 0;
|
||||
int rr_print = 0, rr_allorfirst = -1;
|
||||
STACK *rr_to = NULL, *rr_from = NULL;
|
||||
STACK_OF(STRING) *rr_to = NULL, *rr_from = NULL;
|
||||
CMS_ReceiptRequest *rr = NULL;
|
||||
char *to = NULL, *from = NULL, *subject = NULL;
|
||||
char *CAfile = NULL, *CApath = NULL;
|
||||
@@ -166,6 +170,8 @@ int MAIN(int argc, char **argv)
|
||||
operation = SMIME_RESIGN;
|
||||
else if (!strcmp (*args, "-verify"))
|
||||
operation = SMIME_VERIFY;
|
||||
else if (!strcmp (*args, "-verify_retcode"))
|
||||
verify_retcode = 1;
|
||||
else if (!strcmp(*args,"-verify_receipt"))
|
||||
{
|
||||
operation = SMIME_VERIFY_RECEIPT;
|
||||
@@ -252,21 +258,17 @@ int MAIN(int argc, char **argv)
|
||||
else if (!strcmp (*args, "-no_attr_verify"))
|
||||
flags |= CMS_NO_ATTR_VERIFY;
|
||||
else if (!strcmp (*args, "-stream"))
|
||||
{
|
||||
args++;
|
||||
continue;
|
||||
}
|
||||
flags |= CMS_STREAM;
|
||||
else if (!strcmp (*args, "-indef"))
|
||||
{
|
||||
args++;
|
||||
continue;
|
||||
}
|
||||
flags |= CMS_STREAM;
|
||||
else if (!strcmp (*args, "-noindef"))
|
||||
flags &= ~CMS_STREAM;
|
||||
else if (!strcmp (*args, "-nooldmime"))
|
||||
flags |= CMS_NOOLDMIMETYPE;
|
||||
else if (!strcmp (*args, "-crlfeol"))
|
||||
flags |= CMS_CRLFEOL;
|
||||
else if (!strcmp (*args, "-noout"))
|
||||
noout = 1;
|
||||
else if (!strcmp (*args, "-receipt_request_print"))
|
||||
rr_print = 1;
|
||||
else if (!strcmp (*args, "-receipt_request_all"))
|
||||
@@ -279,8 +281,8 @@ int MAIN(int argc, char **argv)
|
||||
goto argerr;
|
||||
args++;
|
||||
if (!rr_from)
|
||||
rr_from = sk_new_null();
|
||||
sk_push(rr_from, *args);
|
||||
rr_from = sk_STRING_new_null();
|
||||
sk_STRING_push(rr_from, *args);
|
||||
}
|
||||
else if (!strcmp(*args,"-receipt_request_to"))
|
||||
{
|
||||
@@ -288,9 +290,14 @@ int MAIN(int argc, char **argv)
|
||||
goto argerr;
|
||||
args++;
|
||||
if (!rr_to)
|
||||
rr_to = sk_new_null();
|
||||
sk_push(rr_to, *args);
|
||||
rr_to = sk_STRING_new_null();
|
||||
sk_STRING_push(rr_to, *args);
|
||||
}
|
||||
else if (!strcmp (*args, "-print"))
|
||||
{
|
||||
noout = 1;
|
||||
print = 1;
|
||||
}
|
||||
else if (!strcmp(*args,"-secretkey"))
|
||||
{
|
||||
long ltmp;
|
||||
@@ -380,13 +387,13 @@ int MAIN(int argc, char **argv)
|
||||
if (signerfile)
|
||||
{
|
||||
if (!sksigners)
|
||||
sksigners = sk_new_null();
|
||||
sk_push(sksigners, signerfile);
|
||||
sksigners = sk_STRING_new_null();
|
||||
sk_STRING_push(sksigners, signerfile);
|
||||
if (!keyfile)
|
||||
keyfile = signerfile;
|
||||
if (!skkeys)
|
||||
skkeys = sk_new_null();
|
||||
sk_push(skkeys, keyfile);
|
||||
skkeys = sk_STRING_new_null();
|
||||
sk_STRING_push(skkeys, keyfile);
|
||||
keyfile = NULL;
|
||||
}
|
||||
signerfile = *++args;
|
||||
@@ -428,12 +435,12 @@ int MAIN(int argc, char **argv)
|
||||
goto argerr;
|
||||
}
|
||||
if (!sksigners)
|
||||
sksigners = sk_new_null();
|
||||
sk_push(sksigners, signerfile);
|
||||
sksigners = sk_STRING_new_null();
|
||||
sk_STRING_push(sksigners, signerfile);
|
||||
signerfile = NULL;
|
||||
if (!skkeys)
|
||||
skkeys = sk_new_null();
|
||||
sk_push(skkeys, keyfile);
|
||||
skkeys = sk_STRING_new_null();
|
||||
sk_STRING_push(skkeys, keyfile);
|
||||
}
|
||||
keyfile = *++args;
|
||||
}
|
||||
@@ -532,13 +539,13 @@ int MAIN(int argc, char **argv)
|
||||
if (signerfile)
|
||||
{
|
||||
if (!sksigners)
|
||||
sksigners = sk_new_null();
|
||||
sk_push(sksigners, signerfile);
|
||||
sksigners = sk_STRING_new_null();
|
||||
sk_STRING_push(sksigners, signerfile);
|
||||
if (!skkeys)
|
||||
skkeys = sk_new_null();
|
||||
skkeys = sk_STRING_new_null();
|
||||
if (!keyfile)
|
||||
keyfile = signerfile;
|
||||
sk_push(skkeys, keyfile);
|
||||
sk_STRING_push(skkeys, keyfile);
|
||||
}
|
||||
if (!sksigners)
|
||||
{
|
||||
@@ -973,11 +980,11 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
else
|
||||
flags |= CMS_REUSE_DIGEST;
|
||||
for (i = 0; i < sk_num(sksigners); i++)
|
||||
for (i = 0; i < sk_STRING_num(sksigners); i++)
|
||||
{
|
||||
CMS_SignerInfo *si;
|
||||
signerfile = sk_value(sksigners, i);
|
||||
keyfile = sk_value(skkeys, i);
|
||||
signerfile = sk_STRING_value(sksigners, i);
|
||||
keyfile = sk_STRING_value(skkeys, i);
|
||||
signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
|
||||
e, "signer certificate");
|
||||
if (!signer)
|
||||
@@ -1075,6 +1082,8 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Verification failure\n");
|
||||
if (verify_retcode)
|
||||
ret = verify_err + 32;
|
||||
goto end;
|
||||
}
|
||||
if (signerfile)
|
||||
@@ -1107,7 +1116,12 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (outformat == FORMAT_SMIME)
|
||||
if (noout)
|
||||
{
|
||||
if (print)
|
||||
CMS_ContentInfo_print_ctx(out, cms, 0, NULL);
|
||||
}
|
||||
else if (outformat == FORMAT_SMIME)
|
||||
{
|
||||
if (to)
|
||||
BIO_printf(out, "To: %s\n", to);
|
||||
@@ -1121,9 +1135,9 @@ int MAIN(int argc, char **argv)
|
||||
ret = SMIME_write_CMS(out, cms, in, flags);
|
||||
}
|
||||
else if (outformat == FORMAT_PEM)
|
||||
ret = PEM_write_bio_CMS(out, cms);
|
||||
ret = PEM_write_bio_CMS_stream(out, cms, in, flags);
|
||||
else if (outformat == FORMAT_ASN1)
|
||||
ret = i2d_CMS_bio(out,cms);
|
||||
ret = i2d_CMS_bio_stream(out,cms, in, flags);
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad output format for CMS file\n");
|
||||
@@ -1146,9 +1160,9 @@ end:
|
||||
if (vpm)
|
||||
X509_VERIFY_PARAM_free(vpm);
|
||||
if (sksigners)
|
||||
sk_free(sksigners);
|
||||
sk_STRING_free(sksigners);
|
||||
if (skkeys)
|
||||
sk_free(skkeys);
|
||||
sk_STRING_free(skkeys);
|
||||
if (secret_key)
|
||||
OPENSSL_free(secret_key);
|
||||
if (secret_keyid)
|
||||
@@ -1158,9 +1172,9 @@ end:
|
||||
if (rr)
|
||||
CMS_ReceiptRequest_free(rr);
|
||||
if (rr_to)
|
||||
sk_free(rr_to);
|
||||
sk_STRING_free(rr_to);
|
||||
if (rr_from)
|
||||
sk_free(rr_from);
|
||||
sk_STRING_free(rr_from);
|
||||
X509_STORE_free(store);
|
||||
X509_free(cert);
|
||||
X509_free(recip);
|
||||
@@ -1199,6 +1213,8 @@ static int cms_cb(int ok, X509_STORE_CTX *ctx)
|
||||
|
||||
error = X509_STORE_CTX_get_error(ctx);
|
||||
|
||||
verify_err = error;
|
||||
|
||||
if ((error != X509_V_ERR_NO_EXPLICIT_POLICY)
|
||||
&& ((error != X509_V_OK) || (ok != 2)))
|
||||
return ok;
|
||||
@@ -1280,7 +1296,7 @@ static void receipt_request_print(BIO *out, CMS_ContentInfo *cms)
|
||||
}
|
||||
}
|
||||
|
||||
static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK *ns)
|
||||
static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK_OF(STRING) *ns)
|
||||
{
|
||||
int i;
|
||||
STACK_OF(GENERAL_NAMES) *ret;
|
||||
@@ -1289,12 +1305,10 @@ static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK *ns)
|
||||
ret = sk_GENERAL_NAMES_new_null();
|
||||
if (!ret)
|
||||
goto err;
|
||||
for (i = 0; i < sk_num(ns); i++)
|
||||
for (i = 0; i < sk_STRING_num(ns); i++)
|
||||
{
|
||||
CONF_VALUE cnf;
|
||||
cnf.name = "email";
|
||||
cnf.value = sk_value(ns, i);
|
||||
gen = v2i_GENERAL_NAME(NULL, NULL, &cnf);
|
||||
char *str = sk_STRING_value(ns, i);
|
||||
gen = a2i_GENERAL_NAME(NULL, NULL, NULL, GEN_EMAIL, str, 0);
|
||||
if (!gen)
|
||||
goto err;
|
||||
gens = GENERAL_NAMES_new();
|
||||
@@ -1321,8 +1335,9 @@ static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK *ns)
|
||||
}
|
||||
|
||||
|
||||
static CMS_ReceiptRequest *make_receipt_request(STACK *rr_to, int rr_allorfirst,
|
||||
STACK *rr_from)
|
||||
static CMS_ReceiptRequest *make_receipt_request(STACK_OF(STRING) *rr_to,
|
||||
int rr_allorfirst,
|
||||
STACK_OF(STRING) *rr_from)
|
||||
{
|
||||
STACK_OF(GENERAL_NAMES) *rct_to, *rct_from;
|
||||
CMS_ReceiptRequest *rr;
|
||||
|
||||
21
apps/crl.c
21
apps/crl.c
@@ -85,6 +85,7 @@ static const char *crl_usage[]={
|
||||
" -issuer - print issuer DN\n",
|
||||
" -lastupdate - lastUpdate field\n",
|
||||
" -nextupdate - nextUpdate field\n",
|
||||
" -crlnumber - print CRL number\n",
|
||||
" -noout - no CRL output\n",
|
||||
" -CAfile name - verify CRL using certificates in file \"name\"\n",
|
||||
" -CApath dir - verify CRL using certificates in \"dir\"\n",
|
||||
@@ -107,7 +108,7 @@ int MAIN(int argc, char **argv)
|
||||
int informat,outformat;
|
||||
char *infile=NULL,*outfile=NULL;
|
||||
int hash=0,issuer=0,lastupdate=0,nextupdate=0,noout=0,text=0;
|
||||
int fingerprint = 0;
|
||||
int fingerprint = 0, crlnumber = 0;
|
||||
const char **pp;
|
||||
X509_STORE *store = NULL;
|
||||
X509_STORE_CTX ctx;
|
||||
@@ -206,6 +207,8 @@ int MAIN(int argc, char **argv)
|
||||
noout= ++num;
|
||||
else if (strcmp(*argv,"-fingerprint") == 0)
|
||||
fingerprint= ++num;
|
||||
else if (strcmp(*argv,"-crlnumber") == 0)
|
||||
crlnumber= ++num;
|
||||
else if ((md_alg=EVP_get_digestbyname(*argv + 1)))
|
||||
{
|
||||
/* ok */
|
||||
@@ -281,7 +284,21 @@ bad:
|
||||
{
|
||||
print_name(bio_out, "issuer=", X509_CRL_get_issuer(x), nmflag);
|
||||
}
|
||||
|
||||
if (crlnumber == i)
|
||||
{
|
||||
ASN1_INTEGER *crlnum;
|
||||
crlnum = X509_CRL_get_ext_d2i(x, NID_crl_number,
|
||||
NULL, NULL);
|
||||
BIO_printf(bio_out,"crlNumber=");
|
||||
if (crlnum)
|
||||
{
|
||||
i2a_ASN1_INTEGER(bio_out, crlnum);
|
||||
ASN1_INTEGER_free(crlnum);
|
||||
}
|
||||
else
|
||||
BIO_puts(bio_out, "<NONE>");
|
||||
BIO_printf(bio_out,"\n");
|
||||
}
|
||||
if (hash == i)
|
||||
{
|
||||
BIO_printf(bio_out,"%08lx\n",
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include "apps.h"
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/evp.h>
|
||||
@@ -93,7 +92,7 @@ int MAIN(int argc, char **argv)
|
||||
PKCS7 *p7 = NULL;
|
||||
PKCS7_SIGNED *p7s = NULL;
|
||||
X509_CRL *crl=NULL;
|
||||
STACK *certflst=NULL;
|
||||
STACK_OF(STRING) *certflst=NULL;
|
||||
STACK_OF(X509_CRL) *crl_stack=NULL;
|
||||
STACK_OF(X509) *cert_stack=NULL;
|
||||
int ret=1,nocrl=0;
|
||||
@@ -141,8 +140,8 @@ int MAIN(int argc, char **argv)
|
||||
else if (strcmp(*argv,"-certfile") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
if(!certflst) certflst = sk_new_null();
|
||||
sk_push(certflst,*(++argv));
|
||||
if(!certflst) certflst = sk_STRING_new_null();
|
||||
sk_STRING_push(certflst,*(++argv));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -227,8 +226,8 @@ bad:
|
||||
if ((cert_stack=sk_X509_new_null()) == NULL) goto end;
|
||||
p7s->cert=cert_stack;
|
||||
|
||||
if(certflst) for(i = 0; i < sk_num(certflst); i++) {
|
||||
certfile = sk_value(certflst, i);
|
||||
if(certflst) for(i = 0; i < sk_STRING_num(certflst); i++) {
|
||||
certfile = sk_STRING_value(certflst, i);
|
||||
if (add_certs_from_file(cert_stack,certfile) < 0)
|
||||
{
|
||||
BIO_printf(bio_err, "error loading certificates\n");
|
||||
@@ -237,7 +236,7 @@ bad:
|
||||
}
|
||||
}
|
||||
|
||||
sk_free(certflst);
|
||||
sk_STRING_free(certflst);
|
||||
|
||||
if (outfile == NULL)
|
||||
{
|
||||
@@ -295,19 +294,12 @@ end:
|
||||
*/
|
||||
static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile)
|
||||
{
|
||||
struct stat st;
|
||||
BIO *in=NULL;
|
||||
int count=0;
|
||||
int ret= -1;
|
||||
STACK_OF(X509_INFO) *sk=NULL;
|
||||
X509_INFO *xi;
|
||||
|
||||
if ((stat(certfile,&st) != 0))
|
||||
{
|
||||
BIO_printf(bio_err,"unable to load the file, %s\n",certfile);
|
||||
goto end;
|
||||
}
|
||||
|
||||
in=BIO_new(BIO_s_file());
|
||||
if ((in == NULL) || (BIO_read_filename(in,certfile) <= 0))
|
||||
{
|
||||
|
||||
259
apps/dgst.c
259
apps/dgst.c
@@ -75,8 +75,9 @@
|
||||
#define PROG dgst_main
|
||||
|
||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
|
||||
const char *file,BIO *bmd,const char *hmac_key);
|
||||
EVP_PKEY *key, unsigned char *sigin, int siglen,
|
||||
const char *sig_name, const char *md_name,
|
||||
const char *file,BIO *bmd);
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
@@ -84,12 +85,11 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
ENGINE *e = NULL;
|
||||
unsigned char *buf=NULL;
|
||||
int i,err=0;
|
||||
int i,err=1;
|
||||
const EVP_MD *md=NULL,*m;
|
||||
BIO *in=NULL,*inp;
|
||||
BIO *bmd=NULL;
|
||||
BIO *out = NULL;
|
||||
const char *name;
|
||||
#define PROG_NAME_SIZE 39
|
||||
char pname[PROG_NAME_SIZE+1];
|
||||
int separator=0;
|
||||
@@ -106,6 +106,8 @@ int MAIN(int argc, char **argv)
|
||||
char *engine=NULL;
|
||||
#endif
|
||||
char *hmac_key=NULL;
|
||||
char *mac_name=NULL;
|
||||
STACK_OF(STRING) *sigopts = NULL, *macopts = NULL;
|
||||
|
||||
apps_startup();
|
||||
|
||||
@@ -182,6 +184,7 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
if (--argc < 1) break;
|
||||
engine= *(++argv);
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(*argv,"-hex") == 0)
|
||||
@@ -190,14 +193,36 @@ int MAIN(int argc, char **argv)
|
||||
out_bin = 1;
|
||||
else if (strcmp(*argv,"-d") == 0)
|
||||
debug=1;
|
||||
else if (!strcmp(*argv,"-fips-fingerprint"))
|
||||
hmac_key = "etaonrishdlcupfm";
|
||||
else if (!strcmp(*argv,"-hmac"))
|
||||
{
|
||||
if (--argc < 1)
|
||||
break;
|
||||
hmac_key=*++argv;
|
||||
}
|
||||
else if (!strcmp(*argv,"-mac"))
|
||||
{
|
||||
if (--argc < 1)
|
||||
break;
|
||||
mac_name=*++argv;
|
||||
}
|
||||
else if (strcmp(*argv,"-sigopt") == 0)
|
||||
{
|
||||
if (--argc < 1)
|
||||
break;
|
||||
if (!sigopts)
|
||||
sigopts = sk_STRING_new_null();
|
||||
if (!sigopts || !sk_STRING_push(sigopts, *(++argv)))
|
||||
break;
|
||||
}
|
||||
else if (strcmp(*argv,"-macopt") == 0)
|
||||
{
|
||||
if (--argc < 1)
|
||||
break;
|
||||
if (!macopts)
|
||||
macopts = sk_STRING_new_null();
|
||||
if (!macopts || !sk_STRING_push(macopts, *(++argv)))
|
||||
break;
|
||||
}
|
||||
else if ((m=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
|
||||
md=m;
|
||||
else
|
||||
@@ -206,12 +231,9 @@ int MAIN(int argc, char **argv)
|
||||
argv++;
|
||||
}
|
||||
|
||||
if (md == NULL)
|
||||
md=EVP_md5();
|
||||
|
||||
if(do_verify && !sigfile) {
|
||||
BIO_printf(bio_err, "No signature to verify: use the -signature option\n");
|
||||
err = 1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -228,7 +250,7 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf(bio_err,"-prverify file verify a signature using private key in file\n");
|
||||
BIO_printf(bio_err,"-keyform arg key file format (PEM or ENGINE)\n");
|
||||
BIO_printf(bio_err,"-signature file signature to verify\n");
|
||||
BIO_printf(bio_err,"-binary output in binary form\n");
|
||||
BIO_printf(bio_err,"-sigopt nm:v signature parameter\n");
|
||||
BIO_printf(bio_err,"-hmac key create hashed MAC with key\n");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err,"-engine e use engine e, possibly a hardware device.\n");
|
||||
@@ -243,8 +265,6 @@ int MAIN(int argc, char **argv)
|
||||
#ifndef OPENSSL_NO_SHA
|
||||
BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
|
||||
LN_sha1,LN_sha1);
|
||||
BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
|
||||
LN_sha,LN_sha);
|
||||
#ifndef OPENSSL_NO_SHA256
|
||||
BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
|
||||
LN_sha224,LN_sha224);
|
||||
@@ -262,14 +282,13 @@ int MAIN(int argc, char **argv)
|
||||
LN_mdc2,LN_mdc2);
|
||||
BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
|
||||
LN_ripemd160,LN_ripemd160);
|
||||
err=1;
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
|
||||
SN_whirlpool,SN_whirlpool);
|
||||
#endif
|
||||
goto end;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
in=BIO_new(BIO_s_file());
|
||||
bmd=BIO_new(BIO_f_md());
|
||||
if (debug)
|
||||
@@ -292,8 +311,10 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
|
||||
if(out_bin == -1) {
|
||||
if(keyfile) out_bin = 1;
|
||||
else out_bin = 0;
|
||||
if(keyfile)
|
||||
out_bin = 1;
|
||||
else
|
||||
out_bin = 0;
|
||||
}
|
||||
|
||||
if(randfile)
|
||||
@@ -319,6 +340,11 @@ int MAIN(int argc, char **argv)
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
if ((!!mac_name + !!keyfile + !!hmac_key) > 1)
|
||||
{
|
||||
BIO_printf(bio_err, "MAC and Signing key cannot both be specified\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if(keyfile)
|
||||
{
|
||||
@@ -336,6 +362,101 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if (mac_name)
|
||||
{
|
||||
EVP_PKEY_CTX *mac_ctx = NULL;
|
||||
int r = 0;
|
||||
if (!init_gen_str(bio_err, &mac_ctx, mac_name,e, 0))
|
||||
goto mac_end;
|
||||
if (macopts)
|
||||
{
|
||||
char *macopt;
|
||||
for (i = 0; i < sk_STRING_num(macopts); i++)
|
||||
{
|
||||
macopt = sk_STRING_value(macopts, i);
|
||||
if (pkey_ctrl_string(mac_ctx, macopt) <= 0)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"MAC parameter error \"%s\"\n",
|
||||
macopt);
|
||||
ERR_print_errors(bio_err);
|
||||
goto mac_end;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (EVP_PKEY_keygen(mac_ctx, &sigkey) <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "Error generating key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto mac_end;
|
||||
}
|
||||
r = 1;
|
||||
mac_end:
|
||||
if (mac_ctx)
|
||||
EVP_PKEY_CTX_free(mac_ctx);
|
||||
if (r == 0)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (hmac_key)
|
||||
{
|
||||
sigkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, e,
|
||||
(unsigned char *)hmac_key, -1);
|
||||
if (!sigkey)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (sigkey)
|
||||
{
|
||||
EVP_MD_CTX *mctx = NULL;
|
||||
EVP_PKEY_CTX *pctx = NULL;
|
||||
int r;
|
||||
if (!BIO_get_md_ctx(bmd, &mctx))
|
||||
{
|
||||
BIO_printf(bio_err, "Error getting context\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
if (do_verify)
|
||||
r = EVP_DigestVerifyInit(mctx, &pctx, md, e, sigkey);
|
||||
else
|
||||
r = EVP_DigestSignInit(mctx, &pctx, md, e, sigkey);
|
||||
if (!r)
|
||||
{
|
||||
BIO_printf(bio_err, "Error setting context\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
if (sigopts)
|
||||
{
|
||||
char *sigopt;
|
||||
for (i = 0; i < sk_STRING_num(sigopts); i++)
|
||||
{
|
||||
sigopt = sk_STRING_value(sigopts, i);
|
||||
if (pkey_ctrl_string(pctx, sigopt) <= 0)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"parameter error \"%s\"\n",
|
||||
sigopt);
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* we use md as a filter, reading from 'in' */
|
||||
else
|
||||
{
|
||||
if (md == NULL)
|
||||
md = EVP_md5();
|
||||
if (!BIO_set_md(bmd,md))
|
||||
{
|
||||
BIO_printf(bio_err, "Error setting digest %s\n", pname);
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
if(sigfile && sigkey) {
|
||||
BIO *sigbio;
|
||||
sigbio = BIO_new_file(sigfile, "rb");
|
||||
@@ -356,54 +477,51 @@ int MAIN(int argc, char **argv)
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* we use md as a filter, reading from 'in' */
|
||||
if (!BIO_set_md(bmd,md))
|
||||
{
|
||||
BIO_printf(bio_err, "Error setting digest %s\n", pname);
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
|
||||
inp=BIO_push(bmd,in);
|
||||
|
||||
if (md == NULL)
|
||||
{
|
||||
EVP_MD_CTX *tctx;
|
||||
BIO_get_md_ctx(bmd, &tctx);
|
||||
md = EVP_MD_CTX_md(tctx);
|
||||
}
|
||||
|
||||
if (argc == 0)
|
||||
{
|
||||
BIO_set_fp(in,stdin,BIO_NOCLOSE);
|
||||
err=do_fp(out, buf,inp,separator, out_bin, sigkey, sigbuf,
|
||||
siglen,"","(stdin)",bmd,hmac_key);
|
||||
siglen,NULL,NULL,"stdin",bmd);
|
||||
}
|
||||
else
|
||||
{
|
||||
name=OBJ_nid2sn(md->type);
|
||||
const char *md_name = NULL, *sig_name = NULL;
|
||||
if(!out_bin)
|
||||
{
|
||||
if (sigkey)
|
||||
{
|
||||
const EVP_PKEY_ASN1_METHOD *ameth;
|
||||
ameth = EVP_PKEY_get0_asn1(sigkey);
|
||||
if (ameth)
|
||||
EVP_PKEY_asn1_get0_info(NULL, NULL,
|
||||
NULL, NULL, &sig_name, ameth);
|
||||
}
|
||||
md_name = EVP_MD_name(md);
|
||||
}
|
||||
err = 0;
|
||||
for (i=0; i<argc; i++)
|
||||
{
|
||||
char *tmp,*tofree=NULL;
|
||||
int r;
|
||||
|
||||
if (BIO_read_filename(in,argv[i]) <= 0)
|
||||
{
|
||||
perror(argv[i]);
|
||||
err++;
|
||||
continue;
|
||||
}
|
||||
if(!out_bin)
|
||||
{
|
||||
size_t len = strlen(name)+strlen(argv[i])+(hmac_key ? 5 : 0)+5;
|
||||
tmp=tofree=OPENSSL_malloc(len);
|
||||
BIO_snprintf(tmp,len,"%s%s(%s)= ",
|
||||
hmac_key ? "HMAC-" : "",name,argv[i]);
|
||||
}
|
||||
else
|
||||
tmp="";
|
||||
r=do_fp(out,buf,inp,separator,out_bin,sigkey,sigbuf,
|
||||
siglen,tmp,argv[i],bmd,hmac_key);
|
||||
siglen,sig_name,md_name, argv[i],bmd);
|
||||
if(r)
|
||||
err=r;
|
||||
if(tofree)
|
||||
OPENSSL_free(tofree);
|
||||
(void)BIO_reset(bmd);
|
||||
}
|
||||
}
|
||||
@@ -418,6 +536,10 @@ end:
|
||||
OPENSSL_free(passin);
|
||||
BIO_free_all(out);
|
||||
EVP_PKEY_free(sigkey);
|
||||
if (sigopts)
|
||||
sk_STRING_free(sigopts);
|
||||
if (macopts)
|
||||
sk_STRING_free(macopts);
|
||||
if(sigbuf) OPENSSL_free(sigbuf);
|
||||
if (bmd != NULL) BIO_free(bmd);
|
||||
apps_shutdown();
|
||||
@@ -425,24 +547,13 @@ end:
|
||||
}
|
||||
|
||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
|
||||
const char *file,BIO *bmd,const char *hmac_key)
|
||||
EVP_PKEY *key, unsigned char *sigin, int siglen,
|
||||
const char *sig_name, const char *md_name,
|
||||
const char *file,BIO *bmd)
|
||||
{
|
||||
unsigned int len;
|
||||
size_t len;
|
||||
int i;
|
||||
EVP_MD_CTX *md_ctx;
|
||||
HMAC_CTX hmac_ctx;
|
||||
|
||||
if (hmac_key)
|
||||
{
|
||||
EVP_MD *md;
|
||||
|
||||
BIO_get_md(bmd,&md);
|
||||
HMAC_CTX_init(&hmac_ctx);
|
||||
HMAC_Init_ex(&hmac_ctx,hmac_key,strlen(hmac_key),md, NULL);
|
||||
BIO_get_md_ctx(bmd,&md_ctx);
|
||||
BIO_set_md_ctx(bmd,&hmac_ctx.md_ctx);
|
||||
}
|
||||
for (;;)
|
||||
{
|
||||
i=BIO_read(bp,(char *)buf,BUFSIZE);
|
||||
@@ -458,7 +569,7 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
{
|
||||
EVP_MD_CTX *ctx;
|
||||
BIO_get_md_ctx(bp, &ctx);
|
||||
i = EVP_VerifyFinal(ctx, sigin, (unsigned int)siglen, key);
|
||||
i = EVP_DigestVerifyFinal(ctx, sigin, (unsigned int)siglen);
|
||||
if(i > 0)
|
||||
BIO_printf(out, "Verified OK\n");
|
||||
else if(i == 0)
|
||||
@@ -478,25 +589,33 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
{
|
||||
EVP_MD_CTX *ctx;
|
||||
BIO_get_md_ctx(bp, &ctx);
|
||||
if(!EVP_SignFinal(ctx, buf, (unsigned int *)&len, key))
|
||||
len = BUFSIZE;
|
||||
if(!EVP_DigestSignFinal(ctx, buf, &len))
|
||||
{
|
||||
BIO_printf(bio_err, "Error Signing Data\n");
|
||||
ERR_print_errors(bio_err);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if(hmac_key)
|
||||
{
|
||||
HMAC_Final(&hmac_ctx,buf,&len);
|
||||
HMAC_CTX_cleanup(&hmac_ctx);
|
||||
}
|
||||
else
|
||||
{
|
||||
len=BIO_gets(bp,(char *)buf,BUFSIZE);
|
||||
if (len <0)
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(binout) BIO_write(out, buf, len);
|
||||
else
|
||||
{
|
||||
BIO_write(out,title,strlen(title));
|
||||
if (sig_name)
|
||||
BIO_printf(out, "%s-%s(%s)= ", sig_name, md_name, file);
|
||||
else if (md_name)
|
||||
BIO_printf(out, "%s(%s)= ", md_name, file);
|
||||
else
|
||||
BIO_printf(out, "(%s)= ", file);
|
||||
for (i=0; i<(int)len; i++)
|
||||
{
|
||||
if (sep && (i != 0))
|
||||
@@ -505,10 +624,6 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
}
|
||||
BIO_printf(out, "\n");
|
||||
}
|
||||
if (hmac_key)
|
||||
{
|
||||
BIO_set_md_ctx(bmd,md_ctx);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
45
apps/dsa.c
45
apps/dsa.c
@@ -96,9 +96,7 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
int ret=1;
|
||||
DSA *dsa=NULL;
|
||||
int i,badops=0;
|
||||
@@ -114,6 +112,8 @@ int MAIN(int argc, char **argv)
|
||||
char *passin = NULL, *passout = NULL;
|
||||
int modulus=0;
|
||||
|
||||
int pvk_encr = 2;
|
||||
|
||||
apps_startup();
|
||||
|
||||
if (bio_err == NULL)
|
||||
@@ -173,6 +173,12 @@ int MAIN(int argc, char **argv)
|
||||
engine= *(++argv);
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(*argv,"-pvk-strong") == 0)
|
||||
pvk_encr=2;
|
||||
else if (strcmp(*argv,"-pvk-weak") == 0)
|
||||
pvk_encr=1;
|
||||
else if (strcmp(*argv,"-pvk-none") == 0)
|
||||
pvk_encr=0;
|
||||
else if (strcmp(*argv,"-noout") == 0)
|
||||
noout=1;
|
||||
else if (strcmp(*argv,"-text") == 0)
|
||||
@@ -260,16 +266,22 @@ bad:
|
||||
}
|
||||
|
||||
BIO_printf(bio_err,"read DSA key\n");
|
||||
if (informat == FORMAT_ASN1) {
|
||||
if(pubin) dsa=d2i_DSA_PUBKEY_bio(in,NULL);
|
||||
else dsa=d2i_DSAPrivateKey_bio(in,NULL);
|
||||
} else if (informat == FORMAT_PEM) {
|
||||
if(pubin) dsa=PEM_read_bio_DSA_PUBKEY(in,NULL, NULL, NULL);
|
||||
else dsa=PEM_read_bio_DSAPrivateKey(in,NULL,NULL,passin);
|
||||
} else
|
||||
|
||||
{
|
||||
BIO_printf(bio_err,"bad input format specified for key\n");
|
||||
goto end;
|
||||
EVP_PKEY *pkey;
|
||||
|
||||
if (pubin)
|
||||
pkey = load_pubkey(bio_err, infile, informat, 1,
|
||||
passin, e, "Public Key");
|
||||
else
|
||||
pkey = load_key(bio_err, infile, informat, 1,
|
||||
passin, e, "Private Key");
|
||||
|
||||
if (pkey)
|
||||
{
|
||||
dsa = EVP_PKEY_get1_DSA(pkey);
|
||||
EVP_PKEY_free(pkey);
|
||||
}
|
||||
}
|
||||
if (dsa == NULL)
|
||||
{
|
||||
@@ -322,6 +334,17 @@ bad:
|
||||
i=PEM_write_bio_DSA_PUBKEY(out,dsa);
|
||||
else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc,
|
||||
NULL,0,NULL, passout);
|
||||
} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
|
||||
EVP_PKEY *pk;
|
||||
pk = EVP_PKEY_new();
|
||||
EVP_PKEY_set1_DSA(pk, dsa);
|
||||
if (outformat == FORMAT_PVK)
|
||||
i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout);
|
||||
else if (pubin || pubout)
|
||||
i = i2b_PublicKey_bio(out, pk);
|
||||
else
|
||||
i = i2b_PrivateKey_bio(out, pk);
|
||||
EVP_PKEY_free(pk);
|
||||
} else {
|
||||
BIO_printf(bio_err,"bad output format specified for outfile\n");
|
||||
goto end;
|
||||
|
||||
39
apps/enc.c
39
apps/enc.c
@@ -67,6 +67,7 @@
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/comp.h>
|
||||
#include <ctype.h>
|
||||
|
||||
int set_hex(char *in,unsigned char *out,int size);
|
||||
@@ -116,6 +117,10 @@ int MAIN(int argc, char **argv)
|
||||
char *hkey=NULL,*hiv=NULL,*hsalt = NULL;
|
||||
char *md=NULL;
|
||||
int enc=1,printkey=0,i,base64=0;
|
||||
#ifdef ZLIB
|
||||
int do_zlib=0;
|
||||
BIO *bzl = NULL;
|
||||
#endif
|
||||
int debug=0,olb64=0,nosalt=0;
|
||||
const EVP_CIPHER *cipher=NULL,*c;
|
||||
EVP_CIPHER_CTX *ctx = NULL;
|
||||
@@ -141,9 +146,18 @@ int MAIN(int argc, char **argv)
|
||||
program_name(argv[0],pname,sizeof pname);
|
||||
if (strcmp(pname,"base64") == 0)
|
||||
base64=1;
|
||||
#ifdef ZLIB
|
||||
if (strcmp(pname,"zlib") == 0)
|
||||
do_zlib=1;
|
||||
#endif
|
||||
|
||||
cipher=EVP_get_cipherbyname(pname);
|
||||
#ifdef ZLIB
|
||||
if (!do_zlib && !base64 && (cipher == NULL)
|
||||
&& (strcmp(pname,"enc") != 0))
|
||||
#else
|
||||
if (!base64 && (cipher == NULL) && (strcmp(pname,"enc") != 0))
|
||||
#endif
|
||||
{
|
||||
BIO_printf(bio_err,"%s is an unknown cipher\n",pname);
|
||||
goto bad;
|
||||
@@ -199,6 +213,10 @@ int MAIN(int argc, char **argv)
|
||||
base64=1;
|
||||
else if (strcmp(*argv,"-base64") == 0)
|
||||
base64=1;
|
||||
#ifdef ZLIB
|
||||
else if (strcmp(*argv,"-z") == 0)
|
||||
do_zlib=1;
|
||||
#endif
|
||||
else if (strcmp(*argv,"-bufsize") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
@@ -283,9 +301,11 @@ bad:
|
||||
BIO_printf(bio_err,"%-14s passphrase is the first line of the file argument\n","-kfile");
|
||||
BIO_printf(bio_err,"%-14s the next argument is the md to use to create a key\n","-md");
|
||||
BIO_printf(bio_err,"%-14s from a passphrase. One of md2, md5, sha or sha1\n","");
|
||||
BIO_printf(bio_err,"%-14s salt in hex is the next argument\n","-S");
|
||||
BIO_printf(bio_err,"%-14s key/iv in hex is the next argument\n","-K/-iv");
|
||||
BIO_printf(bio_err,"%-14s print the iv/key (then exit if -P)\n","-[pP]");
|
||||
BIO_printf(bio_err,"%-14s buffer size\n","-bufsize <n>");
|
||||
BIO_printf(bio_err,"%-14s disable standard block padding\n","-nopad");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err,"%-14s use engine e, possibly a hardware device.\n","-engine e");
|
||||
#endif
|
||||
@@ -446,6 +466,19 @@ bad:
|
||||
rbio=in;
|
||||
wbio=out;
|
||||
|
||||
#ifdef ZLIB
|
||||
|
||||
if (do_zlib)
|
||||
{
|
||||
if ((bzl=BIO_new(BIO_f_zlib())) == NULL)
|
||||
goto end;
|
||||
if (enc)
|
||||
wbio=BIO_push(bzl,wbio);
|
||||
else
|
||||
rbio=BIO_push(bzl,rbio);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (base64)
|
||||
{
|
||||
if ((b64=BIO_new(BIO_f_base64())) == NULL)
|
||||
@@ -527,7 +560,8 @@ bad:
|
||||
BIO_printf(bio_err,"invalid hex iv value\n");
|
||||
goto end;
|
||||
}
|
||||
if ((hiv == NULL) && (str == NULL))
|
||||
if ((hiv == NULL) && (str == NULL)
|
||||
&& EVP_CIPHER_iv_length(cipher) != 0)
|
||||
{
|
||||
/* No IV was explicitly set and no IV was generated
|
||||
* during EVP_BytesToKey. Hence the IV is undefined,
|
||||
@@ -639,6 +673,9 @@ end:
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
if (benc != NULL) BIO_free(benc);
|
||||
if (b64 != NULL) BIO_free(b64);
|
||||
#ifdef ZLIB
|
||||
if (bzl != NULL) BIO_free(bzl);
|
||||
#endif
|
||||
if(pass) OPENSSL_free(pass);
|
||||
apps_shutdown();
|
||||
OPENSSL_EXIT(ret);
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -66,6 +65,7 @@
|
||||
#endif
|
||||
#include "apps.h"
|
||||
#include <openssl/err.h>
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
@@ -92,7 +92,7 @@ static const char *engine_usage[]={
|
||||
NULL
|
||||
};
|
||||
|
||||
static void identity(void *ptr)
|
||||
static void identity(char *ptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -148,11 +148,6 @@ static int util_flags(BIO *bio_out, unsigned int flags, const char *indent)
|
||||
|
||||
if(flags & ENGINE_CMD_FLAG_NUMERIC)
|
||||
{
|
||||
if(started)
|
||||
{
|
||||
BIO_printf(bio_out, "|");
|
||||
err = 1;
|
||||
}
|
||||
BIO_printf(bio_out, "NUMERIC");
|
||||
started = 1;
|
||||
}
|
||||
@@ -205,7 +200,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
|
||||
char *desc = NULL;
|
||||
int flags;
|
||||
int xpos = 0;
|
||||
STACK *cmds = NULL;
|
||||
STACK_OF(STRING) *cmds = NULL;
|
||||
if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||
|
||||
((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,
|
||||
0, NULL, NULL)) <= 0))
|
||||
@@ -216,7 +211,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
|
||||
return 1;
|
||||
}
|
||||
|
||||
cmds = sk_new_null();
|
||||
cmds = sk_STRING_new_null();
|
||||
|
||||
if(!cmds)
|
||||
goto err;
|
||||
@@ -252,7 +247,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
|
||||
/* Now decide on the output */
|
||||
if(xpos == 0)
|
||||
/* Do an indent */
|
||||
xpos = BIO_printf(bio_out, indent);
|
||||
xpos = BIO_puts(bio_out, indent);
|
||||
else
|
||||
/* Otherwise prepend a ", " */
|
||||
xpos += BIO_printf(bio_out, ", ");
|
||||
@@ -263,7 +258,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
|
||||
(xpos + (int)strlen(name) > line_wrap))
|
||||
{
|
||||
BIO_printf(bio_out, "\n");
|
||||
xpos = BIO_printf(bio_out, indent);
|
||||
xpos = BIO_puts(bio_out, indent);
|
||||
}
|
||||
xpos += BIO_printf(bio_out, "%s", name);
|
||||
}
|
||||
@@ -289,15 +284,17 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
|
||||
BIO_printf(bio_out, "\n");
|
||||
ret = 1;
|
||||
err:
|
||||
if(cmds) sk_pop_free(cmds, identity);
|
||||
if(cmds) sk_STRING_pop_free(cmds, identity);
|
||||
if(name) OPENSSL_free(name);
|
||||
if(desc) OPENSSL_free(desc);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *indent)
|
||||
static void util_do_cmds(ENGINE *e, STACK_OF(STRING) *cmds, BIO *bio_out,
|
||||
const char *indent)
|
||||
{
|
||||
int loop, res, num = sk_num(cmds);
|
||||
int loop, res, num = sk_STRING_num(cmds);
|
||||
|
||||
if(num < 0)
|
||||
{
|
||||
BIO_printf(bio_out, "[Error]: internal stack error\n");
|
||||
@@ -307,7 +304,7 @@ static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *inden
|
||||
{
|
||||
char buf[256];
|
||||
const char *cmd, *arg;
|
||||
cmd = sk_value(cmds, loop);
|
||||
cmd = sk_STRING_value(cmds, loop);
|
||||
res = 1; /* assume success */
|
||||
/* Check if this command has no ":arg" */
|
||||
if((arg = strstr(cmd, ":")) == NULL)
|
||||
@@ -347,9 +344,9 @@ int MAIN(int argc, char **argv)
|
||||
const char **pp;
|
||||
int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0;
|
||||
ENGINE *e;
|
||||
STACK *engines = sk_new_null();
|
||||
STACK *pre_cmds = sk_new_null();
|
||||
STACK *post_cmds = sk_new_null();
|
||||
STACK_OF(STRING) *engines = sk_STRING_new_null();
|
||||
STACK_OF(STRING) *pre_cmds = sk_STRING_new_null();
|
||||
STACK_OF(STRING) *post_cmds = sk_STRING_new_null();
|
||||
int badops=1;
|
||||
BIO *bio_out=NULL;
|
||||
const char *indent = " ";
|
||||
@@ -396,20 +393,20 @@ int MAIN(int argc, char **argv)
|
||||
argc--; argv++;
|
||||
if (argc == 0)
|
||||
goto skip_arg_loop;
|
||||
sk_push(pre_cmds,*argv);
|
||||
sk_STRING_push(pre_cmds,*argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-post") == 0)
|
||||
{
|
||||
argc--; argv++;
|
||||
if (argc == 0)
|
||||
goto skip_arg_loop;
|
||||
sk_push(post_cmds,*argv);
|
||||
sk_STRING_push(post_cmds,*argv);
|
||||
}
|
||||
else if ((strncmp(*argv,"-h",2) == 0) ||
|
||||
(strcmp(*argv,"-?") == 0))
|
||||
goto skip_arg_loop;
|
||||
else
|
||||
sk_push(engines,*argv);
|
||||
sk_STRING_push(engines,*argv);
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
@@ -424,17 +421,17 @@ skip_arg_loop:
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (sk_num(engines) == 0)
|
||||
if (sk_STRING_num(engines) == 0)
|
||||
{
|
||||
for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e))
|
||||
{
|
||||
sk_push(engines,(char *)ENGINE_get_id(e));
|
||||
sk_STRING_push(engines,(char *)ENGINE_get_id(e));
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0; i<sk_num(engines); i++)
|
||||
for (i=0; i<sk_STRING_num(engines); i++)
|
||||
{
|
||||
const char *id = sk_value(engines,i);
|
||||
const char *id = sk_STRING_value(engines,i);
|
||||
if ((e = ENGINE_by_id(id)) != NULL)
|
||||
{
|
||||
const char *name = ENGINE_get_name(e);
|
||||
@@ -454,6 +451,7 @@ skip_arg_loop:
|
||||
const int *nids;
|
||||
ENGINE_CIPHERS_PTR fn_c;
|
||||
ENGINE_DIGESTS_PTR fn_d;
|
||||
ENGINE_PKEY_METHS_PTR fn_pk;
|
||||
|
||||
if (ENGINE_get_RSA(e) != NULL
|
||||
&& !append_buf(&cap_buf, "RSA",
|
||||
@@ -492,6 +490,15 @@ skip_ciphers:
|
||||
goto end;
|
||||
|
||||
skip_digests:
|
||||
fn_pk = ENGINE_get_pkey_meths(e);
|
||||
if(!fn_pk) goto skip_pmeths;
|
||||
n = fn_pk(e, NULL, &nids, 0);
|
||||
for(k=0 ; k < n ; ++k)
|
||||
if(!append_buf(&cap_buf,
|
||||
OBJ_nid2sn(nids[k]),
|
||||
&cap_size, 256))
|
||||
goto end;
|
||||
skip_pmeths:
|
||||
if (cap_buf && (*cap_buf != '\0'))
|
||||
BIO_printf(bio_out, " [%s]\n", cap_buf);
|
||||
|
||||
@@ -526,9 +533,9 @@ skip_digests:
|
||||
end:
|
||||
|
||||
ERR_print_errors(bio_err);
|
||||
sk_pop_free(engines, identity);
|
||||
sk_pop_free(pre_cmds, identity);
|
||||
sk_pop_free(post_cmds, identity);
|
||||
sk_STRING_pop_free(engines, identity);
|
||||
sk_STRING_pop_free(pre_cmds, identity);
|
||||
sk_STRING_pop_free(post_cmds, identity);
|
||||
if (bio_out != NULL) BIO_free_all(bio_out);
|
||||
apps_shutdown();
|
||||
OPENSSL_EXIT(ret);
|
||||
|
||||
@@ -97,10 +97,12 @@ int MAIN(int argc, char **argv)
|
||||
out = BIO_push(tmpbio, out);
|
||||
}
|
||||
#endif
|
||||
lh_node_stats_bio((LHASH *)ERR_get_string_table(),out);
|
||||
lh_stats_bio((LHASH *)ERR_get_string_table(),out);
|
||||
lh_node_usage_stats_bio((LHASH *)
|
||||
ERR_get_string_table(),out);
|
||||
lh_ERR_STRING_DATA_node_stats_bio(
|
||||
ERR_get_string_table(), out);
|
||||
lh_ERR_STRING_DATA_stats_bio(ERR_get_string_table(),
|
||||
out);
|
||||
lh_ERR_STRING_DATA_node_usage_stats_bio(
|
||||
ERR_get_string_table(),out);
|
||||
}
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
argc--;
|
||||
|
||||
440
apps/genpkey.c
Normal file
440
apps/genpkey.c
Normal file
@@ -0,0 +1,440 @@
|
||||
/* apps/genpkey.c */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "apps.h"
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/evp.h>
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#endif
|
||||
|
||||
static int init_keygen_file(BIO *err, EVP_PKEY_CTX **pctx,
|
||||
const char *file, ENGINE *e);
|
||||
static int genpkey_cb(EVP_PKEY_CTX *ctx);
|
||||
|
||||
#define PROG genpkey_main
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
ENGINE *e = NULL;
|
||||
char **args, *outfile = NULL;
|
||||
char *passarg = NULL;
|
||||
BIO *in = NULL, *out = NULL;
|
||||
const EVP_CIPHER *cipher = NULL;
|
||||
int outformat;
|
||||
int text = 0;
|
||||
EVP_PKEY *pkey=NULL;
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
char *pass = NULL;
|
||||
int badarg = 0;
|
||||
int ret = 1, rv;
|
||||
|
||||
int do_param = 0;
|
||||
|
||||
if (bio_err == NULL)
|
||||
bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||
|
||||
if (!load_config(bio_err, NULL))
|
||||
goto end;
|
||||
|
||||
outformat=FORMAT_PEM;
|
||||
|
||||
ERR_load_crypto_strings();
|
||||
OpenSSL_add_all_algorithms();
|
||||
args = argv + 1;
|
||||
while (!badarg && *args && *args[0] == '-')
|
||||
{
|
||||
if (!strcmp(*args,"-outform"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outformat=str2fmt(*args);
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (!strcmp(*args,"-pass"))
|
||||
{
|
||||
if (!args[1]) goto bad;
|
||||
passarg= *(++args);
|
||||
}
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if (strcmp(*args,"-engine") == 0)
|
||||
{
|
||||
if (!args[1])
|
||||
goto bad;
|
||||
e = setup_engine(bio_err, *(++args), 0);
|
||||
}
|
||||
#endif
|
||||
else if (!strcmp (*args, "-paramfile"))
|
||||
{
|
||||
if (!args[1])
|
||||
goto bad;
|
||||
args++;
|
||||
if (do_param == 1)
|
||||
goto bad;
|
||||
if (!init_keygen_file(bio_err, &ctx, *args, e))
|
||||
goto end;
|
||||
}
|
||||
else if (!strcmp (*args, "-out"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outfile = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (strcmp(*args,"-algorithm") == 0)
|
||||
{
|
||||
if (!args[1])
|
||||
goto bad;
|
||||
if (!init_gen_str(bio_err, &ctx, *(++args),e, do_param))
|
||||
goto end;
|
||||
}
|
||||
else if (strcmp(*args,"-pkeyopt") == 0)
|
||||
{
|
||||
if (!args[1])
|
||||
goto bad;
|
||||
if (!ctx)
|
||||
{
|
||||
BIO_puts(bio_err, "No keytype specified\n");
|
||||
goto bad;
|
||||
}
|
||||
else if (pkey_ctrl_string(ctx, *(++args)) <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "parameter setting error\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else if (strcmp(*args,"-genparam") == 0)
|
||||
{
|
||||
if (ctx)
|
||||
goto bad;
|
||||
do_param = 1;
|
||||
}
|
||||
else if (strcmp(*args,"-text") == 0)
|
||||
text=1;
|
||||
else
|
||||
{
|
||||
cipher = EVP_get_cipherbyname(*args + 1);
|
||||
if (!cipher)
|
||||
{
|
||||
BIO_printf(bio_err, "Unknown cipher %s\n",
|
||||
*args + 1);
|
||||
badarg = 1;
|
||||
}
|
||||
if (do_param == 1)
|
||||
badarg = 1;
|
||||
}
|
||||
args++;
|
||||
}
|
||||
|
||||
if (!ctx)
|
||||
badarg = 1;
|
||||
|
||||
if (badarg)
|
||||
{
|
||||
bad:
|
||||
BIO_printf(bio_err, "Usage: genpkey [options]\n");
|
||||
BIO_printf(bio_err, "where options may be\n");
|
||||
BIO_printf(bio_err, "-out file output file\n");
|
||||
BIO_printf(bio_err, "-outform X output format (DER or PEM)\n");
|
||||
BIO_printf(bio_err, "-pass arg output file pass phrase source\n");
|
||||
BIO_printf(bio_err, "-<cipher> use cipher <cipher> to encrypt the key\n");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err, "-engine e use engine e, possibly a hardware device.\n");
|
||||
#endif
|
||||
BIO_printf(bio_err, "-paramfile file parameters file\n");
|
||||
BIO_printf(bio_err, "-algorithm alg the public key algorithm\n");
|
||||
BIO_printf(bio_err, "-pkeyopt opt:value set the public key algorithm option <opt>\n"
|
||||
" to value <value>\n");
|
||||
BIO_printf(bio_err, "-genparam generate parameters, not key\n");
|
||||
BIO_printf(bio_err, "-text print the in text\n");
|
||||
BIO_printf(bio_err, "NB: options order may be important! See the manual page.\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!app_passwd(bio_err, passarg, NULL, &pass, NULL))
|
||||
{
|
||||
BIO_puts(bio_err, "Error getting password\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (outfile)
|
||||
{
|
||||
if (!(out = BIO_new_file (outfile, "wb")))
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't open output file %s\n", outfile);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
out = BIO_new_fp (stdout, BIO_NOCLOSE);
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
{
|
||||
BIO *tmpbio = BIO_new(BIO_f_linebuffer());
|
||||
out = BIO_push(tmpbio, out);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
EVP_PKEY_CTX_set_cb(ctx, genpkey_cb);
|
||||
EVP_PKEY_CTX_set_app_data(ctx, bio_err);
|
||||
|
||||
if (do_param)
|
||||
{
|
||||
if (EVP_PKEY_paramgen(ctx, &pkey) <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "Error generating parameters\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EVP_PKEY_keygen(ctx, &pkey) <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "Error generating key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
if (do_param)
|
||||
rv = PEM_write_bio_Parameters(out, pkey);
|
||||
else if (outformat == FORMAT_PEM)
|
||||
rv = PEM_write_bio_PrivateKey(out, pkey, cipher, NULL, 0,
|
||||
NULL, pass);
|
||||
else if (outformat == FORMAT_ASN1)
|
||||
rv = i2d_PrivateKey_bio(out, pkey);
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (rv <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "Error writing key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
}
|
||||
|
||||
if (text)
|
||||
{
|
||||
if (do_param)
|
||||
rv = EVP_PKEY_print_params(out, pkey, 0, NULL);
|
||||
else
|
||||
rv = EVP_PKEY_print_private(out, pkey, 0, NULL);
|
||||
|
||||
if (rv <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "Error printing key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
end:
|
||||
if (pkey)
|
||||
EVP_PKEY_free(pkey);
|
||||
if (ctx)
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
if (out)
|
||||
BIO_free_all(out);
|
||||
BIO_free(in);
|
||||
if (pass)
|
||||
OPENSSL_free(pass);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int init_keygen_file(BIO *err, EVP_PKEY_CTX **pctx,
|
||||
const char *file, ENGINE *e)
|
||||
{
|
||||
BIO *pbio;
|
||||
EVP_PKEY *pkey = NULL;
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
if (*pctx)
|
||||
{
|
||||
BIO_puts(err, "Parameters already set!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
pbio = BIO_new_file(file, "r");
|
||||
if (!pbio)
|
||||
{
|
||||
BIO_printf(err, "Can't open parameter file %s\n", file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
pkey = PEM_read_bio_Parameters(pbio, NULL);
|
||||
BIO_free(pbio);
|
||||
|
||||
if (!pkey)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading parameter file %s\n", file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ctx = EVP_PKEY_CTX_new(pkey, e);
|
||||
if (!ctx)
|
||||
goto err;
|
||||
if (EVP_PKEY_keygen_init(ctx) <= 0)
|
||||
goto err;
|
||||
EVP_PKEY_free(pkey);
|
||||
*pctx = ctx;
|
||||
return 1;
|
||||
|
||||
err:
|
||||
BIO_puts(err, "Error initializing context\n");
|
||||
ERR_print_errors(err);
|
||||
if (ctx)
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
if (pkey)
|
||||
EVP_PKEY_free(pkey);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
int init_gen_str(BIO *err, EVP_PKEY_CTX **pctx,
|
||||
const char *algname, ENGINE *e, int do_param)
|
||||
{
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
const EVP_PKEY_ASN1_METHOD *ameth;
|
||||
ENGINE *tmpeng = NULL;
|
||||
int pkey_id;
|
||||
|
||||
if (*pctx)
|
||||
{
|
||||
BIO_puts(err, "Algorithm already set!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ameth = EVP_PKEY_asn1_find_str(&tmpeng, algname, -1);
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (!ameth && e)
|
||||
ameth = ENGINE_get_pkey_asn1_meth_str(e, algname, -1);
|
||||
#endif
|
||||
|
||||
if (!ameth)
|
||||
{
|
||||
BIO_printf(bio_err, "Algorithm %s not found\n", algname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ERR_clear_error();
|
||||
|
||||
EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, NULL, NULL, ameth);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (tmpeng)
|
||||
ENGINE_finish(tmpeng);
|
||||
#endif
|
||||
ctx = EVP_PKEY_CTX_new_id(pkey_id, e);
|
||||
|
||||
if (!ctx)
|
||||
goto err;
|
||||
if (do_param)
|
||||
{
|
||||
if (EVP_PKEY_paramgen_init(ctx) <= 0)
|
||||
goto err;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EVP_PKEY_keygen_init(ctx) <= 0)
|
||||
goto err;
|
||||
}
|
||||
|
||||
*pctx = ctx;
|
||||
return 1;
|
||||
|
||||
err:
|
||||
BIO_printf(err, "Error initializing %s context\n", algname);
|
||||
ERR_print_errors(err);
|
||||
if (ctx)
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static int genpkey_cb(EVP_PKEY_CTX *ctx)
|
||||
{
|
||||
char c='*';
|
||||
BIO *b = EVP_PKEY_CTX_get_app_data(ctx);
|
||||
int p;
|
||||
p = EVP_PKEY_CTX_get_keygen_info(ctx, 0);
|
||||
if (p == 0) c='.';
|
||||
if (p == 1) c='+';
|
||||
if (p == 2) c='*';
|
||||
if (p == 3) c='\n';
|
||||
BIO_write(b,&c,1);
|
||||
(void)BIO_flush(b);
|
||||
#ifdef LINT
|
||||
p=n;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -68,10 +68,6 @@ $!
|
||||
$! Define what programs should be compiled
|
||||
$!
|
||||
$ PROGRAMS := OPENSSL
|
||||
$!$ PROGRAMS := VERIFY,ASN1PARS,REQ,DGST,DH,ENC,PASSWD,GENDH,ERRSTR,CA,CRL,-
|
||||
$! RSA,DSA,DSAPARAM,-
|
||||
$! X509,GENRSA,GENDSA,S_SERVER,S_CLIENT,SPEED,-
|
||||
$! S_TIME,VERSION,PKCS7,CRL2P7,SESS_ID,CIPHERS,NSEQ,
|
||||
$!
|
||||
$! Check To Make Sure We Have Valid Command Line Parameters.
|
||||
$!
|
||||
@@ -137,12 +133,13 @@ $ GOSUB CHECK_OPT_FILE
|
||||
$!
|
||||
$! Define The Application Files.
|
||||
$!
|
||||
$ LIB_FILES = "VERIFY;ASN1PARS;REQ;DGST;DH;DHPARAM;ENC;PASSWD;GENDH;ERRSTR;"+-
|
||||
"CA;PKCS7;CRL2P7;CRL;"+-
|
||||
"RSA;RSAUTL;DSA;DSAPARAM;EC;ECPARAM;"+-
|
||||
"X509;GENRSA;GENDSA;S_SERVER;S_CLIENT;SPEED;"+-
|
||||
"S_TIME;APPS;S_CB;S_SOCKET;APP_RAND;VERSION;SESS_ID;"+-
|
||||
"CIPHERS;NSEQ;PKCS12;PKCS8;SPKAC;SMIME;CMS;RAND;ENGINE;OCSP;PRIME"
|
||||
$ LIB_OPENSSL = "VERIFY,ASN1PARS,REQ,DGST,DH,DHPARAM,ENC,PASSWD,GENDH,ERRSTR,"+-
|
||||
"CA,PKCS7,CRL2P7,CRL,"+-
|
||||
"RSA,RSAUTL,DSA,DSAPARAM,EC,ECPARAM,"+-
|
||||
"X509,GENRSA,GENDSA,GENPKEY,S_SERVER,S_CLIENT,SPEED,"+-
|
||||
"S_TIME,APPS,S_CB,S_SOCKET,APP_RAND,VERSION,SESS_ID,"+-
|
||||
"CIPHERS,NSEQ,PKCS12,PKCS8,PKEY,PKEYPARAM,PKEYUTL,"+ -
|
||||
"SPKAC,SMIME,CMS,RAND,ENGINE,OCSP,PRIME,TS"
|
||||
$ TCPIP_PROGRAMS = ",,"
|
||||
$ IF COMPILER .EQS. "VAXC" THEN -
|
||||
TCPIP_PROGRAMS = ",OPENSSL,"
|
||||
@@ -155,121 +152,149 @@ $ PHASE := LIB
|
||||
$!
|
||||
$ RESTART:
|
||||
$!
|
||||
$! Define A File Counter And Set It To "0".
|
||||
$! Define An App Counter And Set It To "0".
|
||||
$!
|
||||
$ FILE_COUNTER = 0
|
||||
$ APP_COUNTER = 0
|
||||
$!
|
||||
$! Top Of The File Loop.
|
||||
$! Top Of The App Loop.
|
||||
$!
|
||||
$ NEXT_FILE:
|
||||
$ NEXT_APP:
|
||||
$!
|
||||
$! O.K, Extract The File Name From The File List.
|
||||
$! Make The Application File Name
|
||||
$!
|
||||
$ FILE_NAME0 = F$EDIT(F$ELEMENT(FILE_COUNTER,";",'PHASE'_FILES),"TRIM")
|
||||
$ FILE_NAME = F$EDIT(F$ELEMENT(0,",",FILE_NAME0),"TRIM")
|
||||
$ EXTRA_OBJ = FILE_NAME0 - FILE_NAME
|
||||
$ CURRENT_APP = F$EDIT(F$ELEMENT(APP_COUNTER,",",PROGRAMS),"TRIM")
|
||||
$!
|
||||
$! Check To See If We Are At The End Of The File List.
|
||||
$! Check To See If We Are At The End Of The File List.
|
||||
$!
|
||||
$ IF (FILE_NAME0.EQS.";")
|
||||
$ IF (CURRENT_APP.EQS.",")
|
||||
$ THEN
|
||||
$ IF (PHASE.EQS."LIB")
|
||||
$ THEN
|
||||
$ PHASE := APP
|
||||
$ GOTO RESTART
|
||||
$ ELSE
|
||||
$ GOTO FILE_DONE
|
||||
$ GOTO APP_DONE
|
||||
$ ENDIF
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Increment The Counter.
|
||||
$! Increment The Counter.
|
||||
$!
|
||||
$ FILE_COUNTER = FILE_COUNTER + 1
|
||||
$ APP_COUNTER = APP_COUNTER + 1
|
||||
$!
|
||||
$! Check to see if this program should actually be compiled
|
||||
$!
|
||||
$ IF PHASE .EQS. "APP" .AND. -
|
||||
","+PROGRAMS+"," - (","+F$EDIT(FILE_NAME,"UPCASE")+",") .EQS. ","+PROGRAMS+","
|
||||
$ THEN
|
||||
$ GOTO NEXT_FILE
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Create The Source File Name.
|
||||
$!
|
||||
$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
|
||||
$!
|
||||
$! Create The Object File Name.
|
||||
$!
|
||||
$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
|
||||
$!
|
||||
$! Create The Executable File Name.
|
||||
$!
|
||||
$ EXE_FILE = EXE_DIR + FILE_NAME + ".EXE"
|
||||
$ ON WARNING THEN GOTO NEXT_FILE
|
||||
$!
|
||||
$! Check To See If The File We Want To Compile Actually Exists.
|
||||
$!
|
||||
$ IF (F$SEARCH(SOURCE_FILE).EQS."")
|
||||
$ THEN
|
||||
$!
|
||||
$! Tell The User That The File Dosen't Exist.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$!
|
||||
$! Exit The Build.
|
||||
$!
|
||||
$ GOTO EXIT
|
||||
$!
|
||||
$! End The File Exist Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Tell The User What We Are Building.
|
||||
$! Decide if we're building the object files or not.
|
||||
$!
|
||||
$ IF (PHASE.EQS."LIB")
|
||||
$ THEN
|
||||
$ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME,".C File."
|
||||
$ ELSE
|
||||
$ WRITE SYS$OUTPUT "Building The ",FILE_NAME," Application Program."
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Compile The File.
|
||||
$! Define A Library File Counter And Set It To "-1".
|
||||
$! -1 Means The Application File Name Is To Be Used.
|
||||
$!
|
||||
$ ON ERROR THEN GOTO NEXT_FILE
|
||||
$ IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2
|
||||
$ THEN
|
||||
$ CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ENDIF
|
||||
$ LIB_COUNTER = -1
|
||||
$!
|
||||
$ ON WARNING THEN GOTO NEXT_FILE
|
||||
$! Create a .OPT file for the object files
|
||||
$!
|
||||
$ IF (PHASE.EQS."LIB")
|
||||
$ THEN
|
||||
$ GOTO NEXT_FILE
|
||||
$ OPEN/WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
|
||||
$!
|
||||
$! Top Of The File Loop.
|
||||
$!
|
||||
$ NEXT_LIB:
|
||||
$!
|
||||
$! O.K, Extract The File Name From The File List.
|
||||
$!
|
||||
$ IF LIB_COUNTER .GE. 0
|
||||
$ THEN
|
||||
$ FILE_NAME = F$EDIT(F$ELEMENT(LIB_COUNTER,",",LIB_'CURRENT_APP'),"TRIM")
|
||||
$ ELSE
|
||||
$ FILE_NAME = CURRENT_APP
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Check To See If We Are At The End Of The File List.
|
||||
$!
|
||||
$ IF (FILE_NAME.EQS.",")
|
||||
$ THEN
|
||||
$ CLOSE OBJECTS
|
||||
$ GOTO NEXT_APP
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Increment The Counter.
|
||||
$!
|
||||
$ LIB_COUNTER = LIB_COUNTER + 1
|
||||
$!
|
||||
$! Create The Source File Name.
|
||||
$!
|
||||
$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
|
||||
$!
|
||||
$! Create The Object File Name.
|
||||
$!
|
||||
$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
|
||||
$!
|
||||
$! Create The Executable File Name.
|
||||
$!
|
||||
$ EXE_FILE = EXE_DIR + FILE_NAME + ".EXE"
|
||||
$ ON WARNING THEN GOTO NEXT_LIB
|
||||
$!
|
||||
$! Check To See If The File We Want To Compile Actually Exists.
|
||||
$!
|
||||
$ IF (F$SEARCH(SOURCE_FILE).EQS."")
|
||||
$ THEN
|
||||
$!
|
||||
$! Tell The User That The File Dosen't Exist.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$!
|
||||
$! Exit The Build.
|
||||
$!
|
||||
$ GOTO EXIT
|
||||
$!
|
||||
$! End The File Exist Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Tell The User What We Are Building.
|
||||
$!
|
||||
$ IF (PHASE.EQS."LIB")
|
||||
$ THEN
|
||||
$ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME,".C File."
|
||||
$ ELSE
|
||||
$ WRITE SYS$OUTPUT "Building The ",FILE_NAME," Application Program."
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Compile The File.
|
||||
$!
|
||||
$ ON ERROR THEN GOTO NEXT_LIB
|
||||
$ IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2
|
||||
$ THEN
|
||||
$ CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ENDIF
|
||||
$ WRITE OBJECTS OBJECT_FILE
|
||||
$!
|
||||
$ GOTO NEXT_LIB
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Check if this program works well without a TCPIP library
|
||||
$!
|
||||
$ IF TCPIP_LIB .EQS. "" .AND. TCPIP_PROGRAMS - FILE_NAME .NES. TCPIP_PROGRAMS
|
||||
$ IF TCPIP_LIB .EQS. "" .AND. TCPIP_PROGRAMS - CURRENT_APP .NES. TCPIP_PROGRAMS
|
||||
$ THEN
|
||||
$ WRITE SYS$OUTPUT FILE_NAME," needs a TCP/IP library. Can't link. Skipping..."
|
||||
$ GOTO NEXT_FILE
|
||||
$ WRITE SYS$OUTPUT CURRENT_APP," needs a TCP/IP library. Can't link. Skipping..."
|
||||
$ GOTO NEXT_APP
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Link The Program.
|
||||
$! Check To See If We Are To Link With A Specific TCP/IP Library.
|
||||
$!
|
||||
$ ON WARNING THEN GOTO NEXT_APP
|
||||
$!
|
||||
$ IF (TCPIP_LIB.NES."")
|
||||
$ THEN
|
||||
$!
|
||||
$! Don't Link With The RSAREF Routines And TCP/IP Library.
|
||||
$!
|
||||
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
|
||||
'OBJECT_FILE''EXTRA_OBJ', -
|
||||
'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
|
||||
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
|
||||
'TCPIP_LIB','OPT_FILE'/OPTION
|
||||
$!
|
||||
@@ -280,7 +305,7 @@ $!
|
||||
$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
|
||||
$!
|
||||
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
|
||||
'OBJECT_FILE''EXTRA_OBJ', -
|
||||
'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
|
||||
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
|
||||
'OPT_FILE'/OPTION
|
||||
$!
|
||||
@@ -290,11 +315,11 @@ $ ENDIF
|
||||
$!
|
||||
$! Go Back And Do It Again.
|
||||
$!
|
||||
$ GOTO NEXT_FILE
|
||||
$ GOTO NEXT_APP
|
||||
$!
|
||||
$! All Done With This File.
|
||||
$!
|
||||
$ FILE_DONE:
|
||||
$ APP_DONE:
|
||||
$ EXIT:
|
||||
$!
|
||||
$! All Done, Time To Clean Up And Exit.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* nseq.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
/* ====================================================================
|
||||
|
||||
103
apps/ocsp.c
103
apps/ocsp.c
@@ -1,5 +1,5 @@
|
||||
/* ocsp.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2000.
|
||||
*/
|
||||
/* ====================================================================
|
||||
@@ -56,25 +56,50 @@
|
||||
*
|
||||
*/
|
||||
#ifndef OPENSSL_NO_OCSP
|
||||
#define USE_SOCKETS
|
||||
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
#define _XOPEN_SOURCE_EXTENDED /* So fd_set and friends get properly defined
|
||||
on OpenVMS */
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include "apps.h" /* needs to be included before the openssl headers! */
|
||||
#include <openssl/e_os2.h>
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/bn.h>
|
||||
|
||||
#if defined(NETWARE_CLIB)
|
||||
# ifdef NETWARE_BSDSOCK
|
||||
# include <sys/socket.h>
|
||||
# include <sys/bsdskt.h>
|
||||
# else
|
||||
# include <novsock2.h>
|
||||
# endif
|
||||
#elif defined(NETWARE_LIBC)
|
||||
# ifdef NETWARE_BSDSOCK
|
||||
# include <sys/select.h>
|
||||
# else
|
||||
# include <novsock2.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Maximum leeway in validity period: default 5 minutes */
|
||||
#define MAX_VALIDITY_PERIOD (5 * 60)
|
||||
|
||||
static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
|
||||
static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_md, X509 *issuer,
|
||||
STACK_OF(OCSP_CERTID) *ids);
|
||||
static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer,
|
||||
static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, const EVP_MD * cert_id_md, X509 *issuer,
|
||||
STACK_OF(OCSP_CERTID) *ids);
|
||||
static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
|
||||
STACK *names, STACK_OF(OCSP_CERTID) *ids,
|
||||
long nsec, long maxage);
|
||||
STACK_OF(STRING) *names,
|
||||
STACK_OF(OCSP_CERTID) *ids, long nsec,
|
||||
long maxage);
|
||||
|
||||
static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db,
|
||||
X509 *ca, X509 *rcert, EVP_PKEY *rkey,
|
||||
@@ -126,7 +151,7 @@ int MAIN(int argc, char **argv)
|
||||
int badarg = 0;
|
||||
int i;
|
||||
int ignore_err = 0;
|
||||
STACK *reqnames = NULL;
|
||||
STACK_OF(STRING) *reqnames = NULL;
|
||||
STACK_OF(OCSP_CERTID) *ids = NULL;
|
||||
|
||||
X509 *rca_cert = NULL;
|
||||
@@ -134,6 +159,7 @@ int MAIN(int argc, char **argv)
|
||||
char *rca_filename = NULL;
|
||||
CA_DB *rdb = NULL;
|
||||
int nmin = 0, ndays = -1;
|
||||
const EVP_MD *cert_id_md = NULL;
|
||||
|
||||
if (bio_err == NULL) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
|
||||
|
||||
@@ -142,7 +168,7 @@ int MAIN(int argc, char **argv)
|
||||
SSL_load_error_strings();
|
||||
OpenSSL_add_ssl_algorithms();
|
||||
args = argv + 1;
|
||||
reqnames = sk_new_null();
|
||||
reqnames = sk_STRING_new_null();
|
||||
ids = sk_OCSP_CERTID_new_null();
|
||||
while (!badarg && *args && *args[0] == '-')
|
||||
{
|
||||
@@ -401,9 +427,10 @@ int MAIN(int argc, char **argv)
|
||||
cert = load_cert(bio_err, *args, FORMAT_PEM,
|
||||
NULL, e, "certificate");
|
||||
if(!cert) goto end;
|
||||
if(!add_ocsp_cert(&req, cert, issuer, ids))
|
||||
if (!cert_id_md) cert_id_md = EVP_sha1();
|
||||
if(!add_ocsp_cert(&req, cert, cert_id_md, issuer, ids))
|
||||
goto end;
|
||||
if(!sk_push(reqnames, *args))
|
||||
if(!sk_STRING_push(reqnames, *args))
|
||||
goto end;
|
||||
}
|
||||
else badarg = 1;
|
||||
@@ -413,9 +440,10 @@ int MAIN(int argc, char **argv)
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
if(!add_ocsp_serial(&req, *args, issuer, ids))
|
||||
if (!cert_id_md) cert_id_md = EVP_sha1();
|
||||
if(!add_ocsp_serial(&req, *args, cert_id_md, issuer, ids))
|
||||
goto end;
|
||||
if(!sk_push(reqnames, *args))
|
||||
if(!sk_STRING_push(reqnames, *args))
|
||||
goto end;
|
||||
}
|
||||
else badarg = 1;
|
||||
@@ -515,7 +543,10 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else badarg = 1;
|
||||
else if ((cert_id_md = EVP_get_digestbyname((*args)+1))==NULL)
|
||||
{
|
||||
badarg = 1;
|
||||
}
|
||||
args++;
|
||||
}
|
||||
|
||||
@@ -571,6 +602,7 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf (bio_err, "-ndays n number of days before next update\n");
|
||||
BIO_printf (bio_err, "-resp_key_id identify reponse by signing certificate key ID\n");
|
||||
BIO_printf (bio_err, "-nrequest n number of requests to accept (default unlimited)\n");
|
||||
BIO_printf (bio_err, "-<dgst alg> use specified digest in the request");
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -677,7 +709,8 @@ int MAIN(int argc, char **argv)
|
||||
"signer private key");
|
||||
if (!key)
|
||||
goto end;
|
||||
if (!OCSP_request_sign(req, signer, key, EVP_sha1(), sign_other, sign_flags))
|
||||
|
||||
if (!OCSP_request_sign(req, signer, key, NULL, sign_other, sign_flags))
|
||||
{
|
||||
BIO_printf(bio_err, "Error signing OCSP request\n");
|
||||
goto end;
|
||||
@@ -866,7 +899,7 @@ end:
|
||||
OCSP_REQUEST_free(req);
|
||||
OCSP_RESPONSE_free(resp);
|
||||
OCSP_BASICRESP_free(bs);
|
||||
sk_free(reqnames);
|
||||
sk_STRING_free(reqnames);
|
||||
sk_OCSP_CERTID_free(ids);
|
||||
sk_X509_pop_free(sign_other, X509_free);
|
||||
sk_X509_pop_free(verify_other, X509_free);
|
||||
@@ -881,7 +914,7 @@ end:
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
|
||||
static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_md,X509 *issuer,
|
||||
STACK_OF(OCSP_CERTID) *ids)
|
||||
{
|
||||
OCSP_CERTID *id;
|
||||
@@ -892,7 +925,7 @@ static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
|
||||
}
|
||||
if(!*req) *req = OCSP_REQUEST_new();
|
||||
if(!*req) goto err;
|
||||
id = OCSP_cert_to_id(NULL, cert, issuer);
|
||||
id = OCSP_cert_to_id(cert_id_md, cert, issuer);
|
||||
if(!id || !sk_OCSP_CERTID_push(ids, id)) goto err;
|
||||
if(!OCSP_request_add0_id(*req, id)) goto err;
|
||||
return 1;
|
||||
@@ -902,7 +935,7 @@ static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer,
|
||||
static int add_ocsp_serial(OCSP_REQUEST **req, char *serial,const EVP_MD *cert_id_md, X509 *issuer,
|
||||
STACK_OF(OCSP_CERTID) *ids)
|
||||
{
|
||||
OCSP_CERTID *id;
|
||||
@@ -924,7 +957,7 @@ static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer,
|
||||
BIO_printf(bio_err, "Error converting serial number %s\n", serial);
|
||||
return 0;
|
||||
}
|
||||
id = OCSP_cert_id_new(EVP_sha1(), iname, ikey, sno);
|
||||
id = OCSP_cert_id_new(cert_id_md, iname, ikey, sno);
|
||||
ASN1_INTEGER_free(sno);
|
||||
if(!id || !sk_OCSP_CERTID_push(ids, id)) goto err;
|
||||
if(!OCSP_request_add0_id(*req, id)) goto err;
|
||||
@@ -936,8 +969,9 @@ static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer,
|
||||
}
|
||||
|
||||
static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
|
||||
STACK *names, STACK_OF(OCSP_CERTID) *ids,
|
||||
long nsec, long maxage)
|
||||
STACK_OF(STRING) *names,
|
||||
STACK_OF(OCSP_CERTID) *ids, long nsec,
|
||||
long maxage)
|
||||
{
|
||||
OCSP_CERTID *id;
|
||||
char *name;
|
||||
@@ -947,13 +981,13 @@ static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
|
||||
|
||||
ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
|
||||
|
||||
if (!bs || !req || !sk_num(names) || !sk_OCSP_CERTID_num(ids))
|
||||
if (!bs || !req || !sk_STRING_num(names) || !sk_OCSP_CERTID_num(ids))
|
||||
return 1;
|
||||
|
||||
for (i = 0; i < sk_OCSP_CERTID_num(ids); i++)
|
||||
{
|
||||
id = sk_OCSP_CERTID_value(ids, i);
|
||||
name = sk_value(names, i);
|
||||
name = sk_STRING_value(names, i);
|
||||
BIO_printf(out, "%s: ", name);
|
||||
|
||||
if(!OCSP_resp_find_status(bs, id, &status, &reason,
|
||||
@@ -1010,7 +1044,6 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
|
||||
OCSP_BASICRESP *bs = NULL;
|
||||
int i, id_count, ret = 1;
|
||||
|
||||
|
||||
id_count = OCSP_request_onereq_count(req);
|
||||
|
||||
if (id_count <= 0)
|
||||
@@ -1019,7 +1052,6 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
|
||||
goto end;
|
||||
}
|
||||
|
||||
ca_id = OCSP_cert_to_id(EVP_sha1(), NULL, ca);
|
||||
|
||||
bs = OCSP_BASICRESP_new();
|
||||
thisupd = X509_gmtime_adj(NULL, 0);
|
||||
@@ -1032,8 +1064,23 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
|
||||
OCSP_ONEREQ *one;
|
||||
ASN1_INTEGER *serial;
|
||||
char **inf;
|
||||
ASN1_OBJECT *cert_id_md_oid;
|
||||
const EVP_MD *cert_id_md;
|
||||
one = OCSP_request_onereq_get0(req, i);
|
||||
cid = OCSP_onereq_get0_id(one);
|
||||
|
||||
OCSP_id_get0_info(NULL,&cert_id_md_oid, NULL,NULL, cid);
|
||||
|
||||
cert_id_md = EVP_get_digestbyobj(cert_id_md_oid);
|
||||
if (! cert_id_md)
|
||||
{
|
||||
*resp = OCSP_response_create(OCSP_RESPONSE_STATUS_INTERNALERROR,
|
||||
NULL);
|
||||
goto end;
|
||||
}
|
||||
if (ca_id) OCSP_CERTID_free(ca_id);
|
||||
ca_id = OCSP_cert_to_id(cert_id_md, NULL, ca);
|
||||
|
||||
/* Is this request about our CA? */
|
||||
if (OCSP_id_issuer_cmp(ca_id, cid))
|
||||
{
|
||||
@@ -1078,8 +1125,8 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
|
||||
}
|
||||
|
||||
OCSP_copy_nonce(bs, req);
|
||||
|
||||
OCSP_basic_sign(bs, rcert, rkey, EVP_sha1(), rother, flags);
|
||||
|
||||
OCSP_basic_sign(bs, rcert, rkey, NULL, rother, flags);
|
||||
|
||||
*resp = OCSP_response_create(OCSP_RESPONSE_STATUS_SUCCESSFUL, bs);
|
||||
|
||||
|
||||
@@ -21,12 +21,17 @@ oid_section = new_oids
|
||||
|
||||
[ new_oids ]
|
||||
|
||||
# We can add new OIDs in here for use by 'ca' and 'req'.
|
||||
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
|
||||
# Add a simple OID like this:
|
||||
# testoid1=1.2.3.4
|
||||
# Or use config file substitution like this:
|
||||
# testoid2=${testoid1}.5.6
|
||||
|
||||
# Policies used by the TSA examples.
|
||||
tsa_policy1 = 1.2.3.4.1
|
||||
tsa_policy2 = 1.2.3.4.5.6
|
||||
tsa_policy3 = 1.2.3.4.5.7
|
||||
|
||||
####################################################################
|
||||
[ ca ]
|
||||
default_ca = CA_default # The default ca section
|
||||
@@ -67,7 +72,7 @@ cert_opt = ca_default # Certificate field options
|
||||
|
||||
default_days = 365 # how long to certify for
|
||||
default_crl_days= 30 # how long before next CRL
|
||||
default_md = sha1 # which md to use.
|
||||
default_md = default # use public key default MD
|
||||
preserve = no # keep passed DN ordering
|
||||
|
||||
# A few difference way of specifying how similar the request should look
|
||||
@@ -110,13 +115,12 @@ x509_extensions = v3_ca # The extentions to add to the self signed cert
|
||||
|
||||
# This sets a mask for permitted string types. There are several options.
|
||||
# default: PrintableString, T61String, BMPString.
|
||||
# pkix : PrintableString, BMPString.
|
||||
# utf8only: only UTF8Strings.
|
||||
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
|
||||
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
|
||||
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
|
||||
# MASK:XXXX a literal mask value.
|
||||
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
|
||||
# so use this option with caution!
|
||||
string_mask = nombstr
|
||||
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
|
||||
string_mask = utf8only
|
||||
|
||||
# req_extensions = v3_req # The extensions to add to a certificate request
|
||||
|
||||
@@ -207,6 +211,9 @@ authorityKeyIdentifier=keyid,issuer
|
||||
#nsCaPolicyUrl
|
||||
#nsSslServerName
|
||||
|
||||
# This is required for TSA certificates.
|
||||
# extendedKeyUsage = critical,timeStamping
|
||||
|
||||
[ v3_req ]
|
||||
|
||||
# Extensions to add to a certificate request
|
||||
@@ -311,3 +318,33 @@ authorityKeyIdentifier=keyid,issuer:always
|
||||
|
||||
# This really needs to be in place for it to be a proxy certificate.
|
||||
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
|
||||
|
||||
####################################################################
|
||||
[ tsa ]
|
||||
|
||||
default_tsa = tsa_config1 # the default TSA section
|
||||
|
||||
[ tsa_config1 ]
|
||||
|
||||
# These are used by the TSA reply generation only.
|
||||
dir = sys\$disk:[.demoCA # TSA root directory
|
||||
serial = $dir]tsaserial. # The current serial number (mandatory)
|
||||
crypto_device = builtin # OpenSSL engine to use for signing
|
||||
signer_cert = $dir/tsacert.pem # The TSA signing certificate
|
||||
# (optional)
|
||||
certs = $dir.cacert.pem] # Certificate chain to include in reply
|
||||
# (optional)
|
||||
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
|
||||
|
||||
default_policy = tsa_policy1 # Policy if request did not specify it
|
||||
# (optional)
|
||||
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
|
||||
digests = md5, sha1 # Acceptable message digests (mandatory)
|
||||
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
|
||||
clock_precision_digits = 0 # number of digits after dot. (optional)
|
||||
ordering = yes # Is ordering defined for timestamps?
|
||||
# (optional, default: no)
|
||||
tsa_name = yes # Must the TSA name be included in the reply?
|
||||
# (optional, default: no)
|
||||
ess_cert_id_chain = no # Must the ESS cert id chain be included?
|
||||
# (optional, default: no)
|
||||
|
||||
197
apps/openssl.c
197
apps/openssl.c
@@ -135,12 +135,11 @@
|
||||
* type of "FUNCTION*"). This removes the necessity for macro-generated wrapper
|
||||
* functions. */
|
||||
|
||||
/* static unsigned long MS_CALLBACK hash(FUNCTION *a); */
|
||||
static unsigned long MS_CALLBACK hash(const void *a_void);
|
||||
/* static int MS_CALLBACK cmp(FUNCTION *a,FUNCTION *b); */
|
||||
static int MS_CALLBACK cmp(const void *a_void,const void *b_void);
|
||||
static LHASH *prog_init(void );
|
||||
static int do_cmd(LHASH *prog,int argc,char *argv[]);
|
||||
static LHASH_OF(FUNCTION) *prog_init(void );
|
||||
static int do_cmd(LHASH_OF(FUNCTION) *prog,int argc,char *argv[]);
|
||||
static void list_pkey(BIO *out);
|
||||
static void list_cipher(BIO *out);
|
||||
static void list_md(BIO *out);
|
||||
char *default_config_file=NULL;
|
||||
|
||||
/* Make sure there is only one when MONOLITH is defined */
|
||||
@@ -226,7 +225,7 @@ int main(int Argc, char *Argv[])
|
||||
int n,i,ret=0;
|
||||
int argc;
|
||||
char **argv,*p;
|
||||
LHASH *prog=NULL;
|
||||
LHASH_OF(FUNCTION) *prog=NULL;
|
||||
long errline;
|
||||
|
||||
arg.data=NULL;
|
||||
@@ -273,9 +272,21 @@ int main(int Argc, char *Argv[])
|
||||
i=NCONF_load(config,p,&errline);
|
||||
if (i == 0)
|
||||
{
|
||||
NCONF_free(config);
|
||||
config = NULL;
|
||||
ERR_clear_error();
|
||||
if (ERR_GET_REASON(ERR_peek_last_error())
|
||||
== CONF_R_NO_SUCH_FILE)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"WARNING: can't open config file: %s\n",p);
|
||||
ERR_clear_error();
|
||||
NCONF_free(config);
|
||||
config = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
NCONF_free(config);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
prog=prog_init();
|
||||
@@ -284,7 +295,7 @@ int main(int Argc, char *Argv[])
|
||||
program_name(Argv[0],pname,sizeof pname);
|
||||
|
||||
f.name=pname;
|
||||
fp=(FUNCTION *)lh_retrieve(prog,&f);
|
||||
fp=lh_FUNCTION_retrieve(prog,&f);
|
||||
if (fp != NULL)
|
||||
{
|
||||
Argv[0]=pname;
|
||||
@@ -350,7 +361,7 @@ end:
|
||||
NCONF_free(config);
|
||||
config=NULL;
|
||||
}
|
||||
if (prog != NULL) lh_free(prog);
|
||||
if (prog != NULL) lh_FUNCTION_free(prog);
|
||||
if (arg.data != NULL) OPENSSL_free(arg.data);
|
||||
|
||||
apps_shutdown();
|
||||
@@ -366,9 +377,13 @@ end:
|
||||
|
||||
#define LIST_STANDARD_COMMANDS "list-standard-commands"
|
||||
#define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands"
|
||||
#define LIST_MESSAGE_DIGEST_ALGORITHMS "list-message-digest-algorithms"
|
||||
#define LIST_CIPHER_COMMANDS "list-cipher-commands"
|
||||
#define LIST_CIPHER_ALGORITHMS "list-cipher-algorithms"
|
||||
#define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms"
|
||||
|
||||
static int do_cmd(LHASH *prog, int argc, char *argv[])
|
||||
|
||||
static int do_cmd(LHASH_OF(FUNCTION) *prog, int argc, char *argv[])
|
||||
{
|
||||
FUNCTION f,*fp;
|
||||
int i,ret=1,tp,nl;
|
||||
@@ -376,7 +391,22 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
|
||||
if ((argc <= 0) || (argv[0] == NULL))
|
||||
{ ret=0; goto end; }
|
||||
f.name=argv[0];
|
||||
fp=(FUNCTION *)lh_retrieve(prog,&f);
|
||||
fp=lh_FUNCTION_retrieve(prog,&f);
|
||||
if (fp == NULL)
|
||||
{
|
||||
if (EVP_get_digestbyname(argv[0]))
|
||||
{
|
||||
f.type = FUNC_TYPE_MD;
|
||||
f.func = dgst_main;
|
||||
fp = &f;
|
||||
}
|
||||
else if (EVP_get_cipherbyname(argv[0]))
|
||||
{
|
||||
f.type = FUNC_TYPE_CIPHER;
|
||||
f.func = enc_main;
|
||||
fp = &f;
|
||||
}
|
||||
}
|
||||
if (fp != NULL)
|
||||
{
|
||||
ret=fp->func(argc,argv);
|
||||
@@ -391,7 +421,7 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
|
||||
}
|
||||
#endif
|
||||
f.name=argv[0]+3;
|
||||
ret = (lh_retrieve(prog,&f) != NULL);
|
||||
ret = (lh_FUNCTION_retrieve(prog,&f) != NULL);
|
||||
if (!ret)
|
||||
BIO_printf(bio_stdout, "%s\n", argv[0]);
|
||||
else
|
||||
@@ -409,7 +439,10 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
|
||||
}
|
||||
else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) ||
|
||||
(strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) ||
|
||||
(strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0))
|
||||
(strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) ||
|
||||
(strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0) ||
|
||||
(strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0) ||
|
||||
(strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0))
|
||||
{
|
||||
int list_type;
|
||||
BIO *bio_stdout;
|
||||
@@ -418,6 +451,12 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
|
||||
list_type = FUNC_TYPE_GENERAL;
|
||||
else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0)
|
||||
list_type = FUNC_TYPE_MD;
|
||||
else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0)
|
||||
list_type = FUNC_TYPE_MD_ALG;
|
||||
else if (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0)
|
||||
list_type = FUNC_TYPE_PKEY;
|
||||
else if (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0)
|
||||
list_type = FUNC_TYPE_CIPHER_ALG;
|
||||
else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */
|
||||
list_type = FUNC_TYPE_CIPHER;
|
||||
bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE);
|
||||
@@ -427,10 +466,23 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
|
||||
bio_stdout = BIO_push(tmpbio, bio_stdout);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (fp=functions; fp->name != NULL; fp++)
|
||||
if (fp->type == list_type)
|
||||
BIO_printf(bio_stdout, "%s\n", fp->name);
|
||||
|
||||
if (!load_config(bio_err, NULL))
|
||||
goto end;
|
||||
|
||||
if (list_type == FUNC_TYPE_PKEY)
|
||||
list_pkey(bio_stdout);
|
||||
if (list_type == FUNC_TYPE_MD_ALG)
|
||||
list_md(bio_stdout);
|
||||
if (list_type == FUNC_TYPE_CIPHER_ALG)
|
||||
list_cipher(bio_stdout);
|
||||
else
|
||||
{
|
||||
for (fp=functions; fp->name != NULL; fp++)
|
||||
if (fp->type == list_type)
|
||||
BIO_printf(bio_stdout, "%s\n",
|
||||
fp->name);
|
||||
}
|
||||
BIO_free_all(bio_stdout);
|
||||
ret=0;
|
||||
goto end;
|
||||
@@ -493,9 +545,94 @@ static int SortFnByName(const void *_f1,const void *_f2)
|
||||
return strcmp(f1->name,f2->name);
|
||||
}
|
||||
|
||||
static LHASH *prog_init(void)
|
||||
static void list_pkey(BIO *out)
|
||||
{
|
||||
LHASH *ret;
|
||||
int i;
|
||||
for (i = 0; i < EVP_PKEY_asn1_get_count(); i++)
|
||||
{
|
||||
const EVP_PKEY_ASN1_METHOD *ameth;
|
||||
int pkey_id, pkey_base_id, pkey_flags;
|
||||
const char *pinfo, *pem_str;
|
||||
ameth = EVP_PKEY_asn1_get0(i);
|
||||
EVP_PKEY_asn1_get0_info(&pkey_id, &pkey_base_id, &pkey_flags,
|
||||
&pinfo, &pem_str, ameth);
|
||||
if (pkey_flags & ASN1_PKEY_ALIAS)
|
||||
{
|
||||
BIO_printf(out, "Name: %s\n",
|
||||
OBJ_nid2ln(pkey_id));
|
||||
BIO_printf(out, "\tType: Alias to %s\n",
|
||||
OBJ_nid2ln(pkey_base_id));
|
||||
}
|
||||
else
|
||||
{
|
||||
BIO_printf(out, "Name: %s\n", pinfo);
|
||||
BIO_printf(out, "\tType: %s Algorithm\n",
|
||||
pkey_flags & ASN1_PKEY_DYNAMIC ?
|
||||
"External" : "Builtin");
|
||||
BIO_printf(out, "\tOID: %s\n", OBJ_nid2ln(pkey_id));
|
||||
if (pem_str == NULL)
|
||||
pem_str = "(none)";
|
||||
BIO_printf(out, "\tPEM string: %s\n", pem_str);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static void list_cipher_fn(const EVP_CIPHER *c,
|
||||
const char *from, const char *to, void *arg)
|
||||
{
|
||||
if (c)
|
||||
BIO_printf(arg, "%s\n", EVP_CIPHER_name(c));
|
||||
else
|
||||
{
|
||||
if (!from)
|
||||
from = "<undefined>";
|
||||
if (!to)
|
||||
to = "<undefined>";
|
||||
BIO_printf(arg, "%s => %s\n", from, to);
|
||||
}
|
||||
}
|
||||
|
||||
static void list_cipher(BIO *out)
|
||||
{
|
||||
EVP_CIPHER_do_all_sorted(list_cipher_fn, out);
|
||||
}
|
||||
|
||||
static void list_md_fn(const EVP_MD *m,
|
||||
const char *from, const char *to, void *arg)
|
||||
{
|
||||
if (m)
|
||||
BIO_printf(arg, "%s\n", EVP_MD_name(m));
|
||||
else
|
||||
{
|
||||
if (!from)
|
||||
from = "<undefined>";
|
||||
if (!to)
|
||||
to = "<undefined>";
|
||||
BIO_printf(arg, "%s => %s\n", from, to);
|
||||
}
|
||||
}
|
||||
|
||||
static void list_md(BIO *out)
|
||||
{
|
||||
EVP_MD_do_all_sorted(list_md_fn, out);
|
||||
}
|
||||
|
||||
static int MS_CALLBACK function_cmp(const FUNCTION *a, const FUNCTION *b)
|
||||
{
|
||||
return strncmp(a->name,b->name,8);
|
||||
}
|
||||
static IMPLEMENT_LHASH_COMP_FN(function, FUNCTION)
|
||||
|
||||
static unsigned long MS_CALLBACK function_hash(const FUNCTION *a)
|
||||
{
|
||||
return lh_strhash(a->name);
|
||||
}
|
||||
static IMPLEMENT_LHASH_HASH_FN(function, FUNCTION)
|
||||
|
||||
static LHASH_OF(FUNCTION) *prog_init(void)
|
||||
{
|
||||
LHASH_OF(FUNCTION) *ret;
|
||||
FUNCTION *f;
|
||||
size_t i;
|
||||
|
||||
@@ -504,23 +641,11 @@ static LHASH *prog_init(void)
|
||||
;
|
||||
qsort(functions,i,sizeof *functions,SortFnByName);
|
||||
|
||||
if ((ret=lh_new(hash, cmp)) == NULL)
|
||||
if ((ret=lh_FUNCTION_new()) == NULL)
|
||||
return(NULL);
|
||||
|
||||
for (f=functions; f->name != NULL; f++)
|
||||
lh_insert(ret,f);
|
||||
(void)lh_FUNCTION_insert(ret,f);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/* static int MS_CALLBACK cmp(FUNCTION *a, FUNCTION *b) */
|
||||
static int MS_CALLBACK cmp(const void *a_void, const void *b_void)
|
||||
{
|
||||
return(strncmp(((const FUNCTION *)a_void)->name,
|
||||
((const FUNCTION *)b_void)->name,8));
|
||||
}
|
||||
|
||||
/* static unsigned long MS_CALLBACK hash(FUNCTION *a) */
|
||||
static unsigned long MS_CALLBACK hash(const void *a_void)
|
||||
{
|
||||
return(lh_strhash(((const FUNCTION *)a_void)->name));
|
||||
}
|
||||
|
||||
@@ -21,12 +21,17 @@ oid_section = new_oids
|
||||
|
||||
[ new_oids ]
|
||||
|
||||
# We can add new OIDs in here for use by 'ca' and 'req'.
|
||||
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
|
||||
# Add a simple OID like this:
|
||||
# testoid1=1.2.3.4
|
||||
# Or use config file substitution like this:
|
||||
# testoid2=${testoid1}.5.6
|
||||
|
||||
# Policies used by the TSA examples.
|
||||
tsa_policy1 = 1.2.3.4.1
|
||||
tsa_policy2 = 1.2.3.4.5.6
|
||||
tsa_policy3 = 1.2.3.4.5.7
|
||||
|
||||
####################################################################
|
||||
[ ca ]
|
||||
default_ca = CA_default # The default ca section
|
||||
@@ -67,7 +72,7 @@ cert_opt = ca_default # Certificate field options
|
||||
|
||||
default_days = 365 # how long to certify for
|
||||
default_crl_days= 30 # how long before next CRL
|
||||
default_md = sha1 # which md to use.
|
||||
default_md = default # use public key default MD
|
||||
preserve = no # keep passed DN ordering
|
||||
|
||||
# A few difference way of specifying how similar the request should look
|
||||
@@ -110,13 +115,12 @@ x509_extensions = v3_ca # The extentions to add to the self signed cert
|
||||
|
||||
# This sets a mask for permitted string types. There are several options.
|
||||
# default: PrintableString, T61String, BMPString.
|
||||
# pkix : PrintableString, BMPString.
|
||||
# utf8only: only UTF8Strings.
|
||||
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
|
||||
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
|
||||
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
|
||||
# MASK:XXXX a literal mask value.
|
||||
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
|
||||
# so use this option with caution!
|
||||
string_mask = nombstr
|
||||
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
|
||||
string_mask = utf8only
|
||||
|
||||
# req_extensions = v3_req # The extensions to add to a certificate request
|
||||
|
||||
@@ -207,6 +211,9 @@ authorityKeyIdentifier=keyid,issuer
|
||||
#nsCaPolicyUrl
|
||||
#nsSslServerName
|
||||
|
||||
# This is required for TSA certificates.
|
||||
# extendedKeyUsage = critical,timeStamping
|
||||
|
||||
[ v3_req ]
|
||||
|
||||
# Extensions to add to a certificate request
|
||||
@@ -311,3 +318,33 @@ authorityKeyIdentifier=keyid,issuer:always
|
||||
|
||||
# This really needs to be in place for it to be a proxy certificate.
|
||||
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
|
||||
|
||||
####################################################################
|
||||
[ tsa ]
|
||||
|
||||
default_tsa = tsa_config1 # the default TSA section
|
||||
|
||||
[ tsa_config1 ]
|
||||
|
||||
# These are used by the TSA reply generation only.
|
||||
dir = ./demoCA # TSA root directory
|
||||
serial = $dir/tsaserial # The current serial number (mandatory)
|
||||
crypto_device = builtin # OpenSSL engine to use for signing
|
||||
signer_cert = $dir/tsacert.pem # The TSA signing certificate
|
||||
# (optional)
|
||||
certs = $dir/cacert.pem # Certificate chain to include in reply
|
||||
# (optional)
|
||||
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
|
||||
|
||||
default_policy = tsa_policy1 # Policy if request did not specify it
|
||||
# (optional)
|
||||
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
|
||||
digests = md5, sha1 # Acceptable message digests (mandatory)
|
||||
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
|
||||
clock_precision_digits = 0 # number of digits after dot. (optional)
|
||||
ordering = yes # Is ordering defined for timestamps?
|
||||
# (optional, default: no)
|
||||
tsa_name = yes # Must the TSA name be included in the reply?
|
||||
# (optional, default: no)
|
||||
ess_cert_id_chain = no # Must the ESS cert id chain be included?
|
||||
# (optional, default: no)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* pkcs12.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project.
|
||||
*/
|
||||
/* ====================================================================
|
||||
@@ -88,6 +88,7 @@ int print_attribs(BIO *out, STACK_OF(X509_ATTRIBUTE) *attrlst,const char *name);
|
||||
void hex_prin(BIO *out, unsigned char *buf, int len);
|
||||
int alg_print(BIO *x, X509_ALGOR *alg);
|
||||
int cert_load(BIO *in, STACK_OF(X509) *sk);
|
||||
static int set_pbe(BIO *err, int *ppbe, const char *str);
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
@@ -100,6 +101,7 @@ int MAIN(int argc, char **argv)
|
||||
char **args;
|
||||
char *name = NULL;
|
||||
char *csp_name = NULL;
|
||||
int add_lmk = 0;
|
||||
PKCS12 *p12 = NULL;
|
||||
char pass[50], macpass[50];
|
||||
int export_cert = 0;
|
||||
@@ -115,11 +117,12 @@ int MAIN(int argc, char **argv)
|
||||
int ret = 1;
|
||||
int macver = 1;
|
||||
int noprompt = 0;
|
||||
STACK *canames = NULL;
|
||||
STACK_OF(STRING) *canames = NULL;
|
||||
char *cpass = NULL, *mpass = NULL;
|
||||
char *passargin = NULL, *passargout = NULL, *passarg = NULL;
|
||||
char *passin = NULL, *passout = NULL;
|
||||
char *inrand = NULL;
|
||||
char *macalg = NULL;
|
||||
char *CApath = NULL, *CAfile = NULL;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
char *engine=NULL;
|
||||
@@ -177,33 +180,18 @@ int MAIN(int argc, char **argv)
|
||||
maciter = 1;
|
||||
else if (!strcmp (*args, "-nomac"))
|
||||
maciter = -1;
|
||||
else if (!strcmp (*args, "-macalg"))
|
||||
if (args[1]) {
|
||||
args++;
|
||||
macalg = *args;
|
||||
} else badarg = 1;
|
||||
else if (!strcmp (*args, "-nodes")) enc=NULL;
|
||||
else if (!strcmp (*args, "-certpbe")) {
|
||||
if (args[1]) {
|
||||
args++;
|
||||
if (!strcmp(*args, "NONE"))
|
||||
cert_pbe = -1;
|
||||
else
|
||||
cert_pbe=OBJ_txt2nid(*args);
|
||||
if(cert_pbe == NID_undef) {
|
||||
BIO_printf(bio_err,
|
||||
"Unknown PBE algorithm %s\n", *args);
|
||||
badarg = 1;
|
||||
}
|
||||
} else badarg = 1;
|
||||
if (!set_pbe(bio_err, &cert_pbe, *++args))
|
||||
badarg = 1;
|
||||
} else if (!strcmp (*args, "-keypbe")) {
|
||||
if (args[1]) {
|
||||
args++;
|
||||
if (!strcmp(*args, "NONE"))
|
||||
key_pbe = -1;
|
||||
else
|
||||
key_pbe=OBJ_txt2nid(*args);
|
||||
if(key_pbe == NID_undef) {
|
||||
BIO_printf(bio_err,
|
||||
"Unknown PBE algorithm %s\n", *args);
|
||||
badarg = 1;
|
||||
}
|
||||
} else badarg = 1;
|
||||
if (!set_pbe(bio_err, &key_pbe, *++args))
|
||||
badarg = 1;
|
||||
} else if (!strcmp (*args, "-rand")) {
|
||||
if (args[1]) {
|
||||
args++;
|
||||
@@ -224,7 +212,9 @@ int MAIN(int argc, char **argv)
|
||||
args++;
|
||||
name = *args;
|
||||
} else badarg = 1;
|
||||
} else if (!strcmp (*args, "-CSP")) {
|
||||
} else if (!strcmp (*args, "-LMK"))
|
||||
add_lmk = 1;
|
||||
else if (!strcmp (*args, "-CSP")) {
|
||||
if (args[1]) {
|
||||
args++;
|
||||
csp_name = *args;
|
||||
@@ -232,8 +222,8 @@ int MAIN(int argc, char **argv)
|
||||
} else if (!strcmp (*args, "-caname")) {
|
||||
if (args[1]) {
|
||||
args++;
|
||||
if (!canames) canames = sk_new_null();
|
||||
sk_push(canames, *args);
|
||||
if (!canames) canames = sk_STRING_new_null();
|
||||
sk_STRING_push(canames, *args);
|
||||
} else badarg = 1;
|
||||
} else if (!strcmp (*args, "-in")) {
|
||||
if (args[1]) {
|
||||
@@ -322,11 +312,14 @@ int MAIN(int argc, char **argv)
|
||||
#endif
|
||||
BIO_printf (bio_err, "-nodes don't encrypt private keys\n");
|
||||
BIO_printf (bio_err, "-noiter don't use encryption iteration\n");
|
||||
BIO_printf (bio_err, "-nomaciter don't use MAC iteration\n");
|
||||
BIO_printf (bio_err, "-maciter use MAC iteration\n");
|
||||
BIO_printf (bio_err, "-nomac don't generate MAC\n");
|
||||
BIO_printf (bio_err, "-twopass separate MAC, encryption passwords\n");
|
||||
BIO_printf (bio_err, "-descert encrypt PKCS#12 certificates with triple DES (default RC2-40)\n");
|
||||
BIO_printf (bio_err, "-certpbe alg specify certificate PBE algorithm (default RC2-40)\n");
|
||||
BIO_printf (bio_err, "-keypbe alg specify private key PBE algorithm (default 3DES)\n");
|
||||
BIO_printf (bio_err, "-macalg alg digest algorithm used in MAC (default SHA1)\n");
|
||||
BIO_printf (bio_err, "-keyex set MS key exchange type\n");
|
||||
BIO_printf (bio_err, "-keysig set MS key signature type\n");
|
||||
BIO_printf (bio_err, "-password p set import/export password source\n");
|
||||
@@ -338,6 +331,8 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf(bio_err, "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
|
||||
BIO_printf(bio_err, " load the file (or the files in the directory) into\n");
|
||||
BIO_printf(bio_err, " the random number generator\n");
|
||||
BIO_printf(bio_err, "-CSP name Microsoft CSP name\n");
|
||||
BIO_printf(bio_err, "-LMK Add local machine keyset attribute to private key\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -427,6 +422,7 @@ int MAIN(int argc, char **argv)
|
||||
EVP_PKEY *key = NULL;
|
||||
X509 *ucert = NULL, *x = NULL;
|
||||
STACK_OF(X509) *certs=NULL;
|
||||
const EVP_MD *macmd = NULL;
|
||||
unsigned char *catmp = NULL;
|
||||
int i;
|
||||
|
||||
@@ -553,16 +549,18 @@ int MAIN(int argc, char **argv)
|
||||
|
||||
/* Add any CA names */
|
||||
|
||||
for (i = 0; i < sk_num(canames); i++)
|
||||
for (i = 0; i < sk_STRING_num(canames); i++)
|
||||
{
|
||||
catmp = (unsigned char *)sk_value(canames, i);
|
||||
catmp = (unsigned char *)sk_STRING_value(canames, i);
|
||||
X509_alias_set1(sk_X509_value(certs, i), catmp, -1);
|
||||
}
|
||||
|
||||
if (csp_name && key)
|
||||
EVP_PKEY_add1_attr_by_NID(key, NID_ms_csp_name,
|
||||
MBSTRING_ASC, (unsigned char *)csp_name, -1);
|
||||
|
||||
|
||||
if (add_lmk && key)
|
||||
EVP_PKEY_add1_attr_by_NID(key, NID_LocalKeySet, 0, NULL, -1);
|
||||
|
||||
#ifdef CRYPTO_MDEBUG
|
||||
CRYPTO_pop_info();
|
||||
@@ -591,8 +589,18 @@ int MAIN(int argc, char **argv)
|
||||
goto export_end;
|
||||
}
|
||||
|
||||
if (macalg)
|
||||
{
|
||||
macmd = EVP_get_digestbyname(macalg);
|
||||
if (!macmd)
|
||||
{
|
||||
BIO_printf(bio_err, "Unknown digest algorithm %s\n",
|
||||
macalg);
|
||||
}
|
||||
}
|
||||
|
||||
if (maciter != -1)
|
||||
PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, NULL);
|
||||
PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, macmd);
|
||||
|
||||
#ifdef CRYPTO_MDEBUG
|
||||
CRYPTO_pop_info();
|
||||
@@ -679,7 +687,7 @@ int MAIN(int argc, char **argv)
|
||||
#endif
|
||||
BIO_free(in);
|
||||
BIO_free_all(out);
|
||||
if (canames) sk_free(canames);
|
||||
if (canames) sk_STRING_free(canames);
|
||||
if(passin) OPENSSL_free(passin);
|
||||
if(passout) OPENSSL_free(passout);
|
||||
apps_shutdown();
|
||||
@@ -948,4 +956,22 @@ void hex_prin(BIO *out, unsigned char *buf, int len)
|
||||
for (i = 0; i < len; i++) BIO_printf (out, "%02X ", buf[i]);
|
||||
}
|
||||
|
||||
static int set_pbe(BIO *err, int *ppbe, const char *str)
|
||||
{
|
||||
if (!str)
|
||||
return 0;
|
||||
if (!strcmp(str, "NONE"))
|
||||
{
|
||||
*ppbe = -1;
|
||||
return 1;
|
||||
}
|
||||
*ppbe=OBJ_txt2nid(str);
|
||||
if (*ppbe == NID_undef)
|
||||
{
|
||||
BIO_printf(bio_err, "Unknown PBE algorithm %s\n", str);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -90,7 +90,7 @@ int MAIN(int argc, char **argv)
|
||||
BIO *in=NULL,*out=NULL;
|
||||
int informat,outformat;
|
||||
char *infile,*outfile,*prog;
|
||||
int print_certs=0,text=0,noout=0;
|
||||
int print_certs=0,text=0,noout=0,p7_print=0;
|
||||
int ret=1;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
char *engine=NULL;
|
||||
@@ -139,6 +139,8 @@ int MAIN(int argc, char **argv)
|
||||
noout=1;
|
||||
else if (strcmp(*argv,"-text") == 0)
|
||||
text=1;
|
||||
else if (strcmp(*argv,"-print") == 0)
|
||||
p7_print=1;
|
||||
else if (strcmp(*argv,"-print_certs") == 0)
|
||||
print_certs=1;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
@@ -238,6 +240,9 @@ bad:
|
||||
}
|
||||
}
|
||||
|
||||
if (p7_print)
|
||||
PKCS7_print_ctx(out, p7, 0, NULL);
|
||||
|
||||
if (print_certs)
|
||||
{
|
||||
STACK_OF(X509) *certs=NULL;
|
||||
|
||||
76
apps/pkcs8.c
76
apps/pkcs8.c
@@ -1,5 +1,5 @@
|
||||
/* pkcs8.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999-2004.
|
||||
*/
|
||||
/* ====================================================================
|
||||
@@ -80,11 +80,12 @@ int MAIN(int argc, char **argv)
|
||||
int informat, outformat;
|
||||
int p8_broken = PKCS8_OK;
|
||||
int nocrypt = 0;
|
||||
X509_SIG *p8;
|
||||
PKCS8_PRIV_KEY_INFO *p8inf;
|
||||
X509_SIG *p8 = NULL;
|
||||
PKCS8_PRIV_KEY_INFO *p8inf = NULL;
|
||||
EVP_PKEY *pkey=NULL;
|
||||
char pass[50], *passin = NULL, *passout = NULL, *p8pass = NULL;
|
||||
int badarg = 0;
|
||||
int ret = 1;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
char *engine=NULL;
|
||||
#endif
|
||||
@@ -225,7 +226,7 @@ int MAIN(int argc, char **argv)
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n");
|
||||
#endif
|
||||
return 1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
@@ -235,7 +236,7 @@ int MAIN(int argc, char **argv)
|
||||
if (!app_passwd(bio_err, passargin, passargout, &passin, &passout))
|
||||
{
|
||||
BIO_printf(bio_err, "Error getting passwords\n");
|
||||
return 1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if ((pbe_nid == -1) && !cipher)
|
||||
@@ -247,7 +248,7 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't open input file %s\n", infile);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -259,7 +260,7 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't open output file %s\n", outfile);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -278,17 +279,12 @@ int MAIN(int argc, char **argv)
|
||||
pkey = load_key(bio_err, infile, informat, 1,
|
||||
passin, e, "key");
|
||||
if (!pkey)
|
||||
{
|
||||
BIO_free_all(out);
|
||||
return 1;
|
||||
}
|
||||
goto end;
|
||||
if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken)))
|
||||
{
|
||||
BIO_printf(bio_err, "Error converting key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
return 1;
|
||||
goto end;
|
||||
}
|
||||
if (nocrypt)
|
||||
{
|
||||
@@ -299,10 +295,7 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -313,12 +306,7 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
p8pass = pass;
|
||||
if (EVP_read_pw_string(pass, sizeof pass, "Enter Encryption Password:", 1))
|
||||
{
|
||||
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
return (1);
|
||||
}
|
||||
goto end;
|
||||
}
|
||||
app_RAND_load_file(NULL, bio_err, 0);
|
||||
if (!(p8 = PKCS8_encrypt(pbe_nid, cipher,
|
||||
@@ -327,10 +315,7 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
BIO_printf(bio_err, "Error encrypting key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
app_RAND_write_file(NULL, bio_err);
|
||||
if (outformat == FORMAT_PEM)
|
||||
@@ -340,22 +325,12 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
X509_SIG_free(p8);
|
||||
}
|
||||
|
||||
PKCS8_PRIV_KEY_INFO_free (p8inf);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
if (passin)
|
||||
OPENSSL_free(passin);
|
||||
if (passout)
|
||||
OPENSSL_free(passout);
|
||||
return (0);
|
||||
ret = 0;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (nocrypt)
|
||||
@@ -367,7 +342,7 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -379,14 +354,14 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!p8)
|
||||
{
|
||||
BIO_printf (bio_err, "Error reading key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
if (passin)
|
||||
p8pass = passin;
|
||||
@@ -396,21 +371,20 @@ int MAIN(int argc, char **argv)
|
||||
EVP_read_pw_string(pass, sizeof pass, "Enter Password:", 0);
|
||||
}
|
||||
p8inf = PKCS8_decrypt(p8, p8pass, strlen(p8pass));
|
||||
X509_SIG_free(p8);
|
||||
}
|
||||
|
||||
if (!p8inf)
|
||||
{
|
||||
BIO_printf(bio_err, "Error decrypting key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!(pkey = EVP_PKCS82PKEY(p8inf)))
|
||||
{
|
||||
BIO_printf(bio_err, "Error converting key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (p8inf->broken)
|
||||
@@ -436,7 +410,6 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
||||
if (outformat == FORMAT_PEM)
|
||||
PEM_write_bio_PrivateKey(out, pkey, NULL, NULL, 0, NULL, passout);
|
||||
else if (outformat == FORMAT_ASN1)
|
||||
@@ -444,10 +417,13 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
return (1);
|
||||
goto end;
|
||||
}
|
||||
ret = 0;
|
||||
|
||||
end:
|
||||
X509_SIG_free(p8);
|
||||
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
BIO_free(in);
|
||||
@@ -456,5 +432,5 @@ int MAIN(int argc, char **argv)
|
||||
if (passout)
|
||||
OPENSSL_free(passout);
|
||||
|
||||
return (0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
284
apps/pkey.c
Normal file
284
apps/pkey.c
Normal file
@@ -0,0 +1,284 @@
|
||||
/* apps/pkey.c */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "apps.h"
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/evp.h>
|
||||
|
||||
#define PROG pkey_main
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
ENGINE *e = NULL;
|
||||
char **args, *infile = NULL, *outfile = NULL;
|
||||
char *passargin = NULL, *passargout = NULL;
|
||||
BIO *in = NULL, *out = NULL;
|
||||
const EVP_CIPHER *cipher = NULL;
|
||||
int informat, outformat;
|
||||
int pubin = 0, pubout = 0, pubtext = 0, text = 0, noout = 0;
|
||||
EVP_PKEY *pkey=NULL;
|
||||
char *passin = NULL, *passout = NULL;
|
||||
int badarg = 0;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
char *engine=NULL;
|
||||
#endif
|
||||
int ret = 1;
|
||||
|
||||
if (bio_err == NULL)
|
||||
bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||
|
||||
if (!load_config(bio_err, NULL))
|
||||
goto end;
|
||||
|
||||
informat=FORMAT_PEM;
|
||||
outformat=FORMAT_PEM;
|
||||
|
||||
ERR_load_crypto_strings();
|
||||
OpenSSL_add_all_algorithms();
|
||||
args = argv + 1;
|
||||
while (!badarg && *args && *args[0] == '-')
|
||||
{
|
||||
if (!strcmp(*args,"-inform"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
informat=str2fmt(*args);
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (!strcmp(*args,"-outform"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outformat=str2fmt(*args);
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (!strcmp(*args,"-passin"))
|
||||
{
|
||||
if (!args[1]) goto bad;
|
||||
passargin= *(++args);
|
||||
}
|
||||
else if (!strcmp(*args,"-passout"))
|
||||
{
|
||||
if (!args[1]) goto bad;
|
||||
passargout= *(++args);
|
||||
}
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if (strcmp(*args,"-engine") == 0)
|
||||
{
|
||||
if (!args[1]) goto bad;
|
||||
engine= *(++args);
|
||||
}
|
||||
#endif
|
||||
else if (!strcmp (*args, "-in"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
infile = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (!strcmp (*args, "-out"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outfile = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (strcmp(*args,"-pubin") == 0)
|
||||
{
|
||||
pubin=1;
|
||||
pubout=1;
|
||||
pubtext=1;
|
||||
}
|
||||
else if (strcmp(*args,"-pubout") == 0)
|
||||
pubout=1;
|
||||
else if (strcmp(*args,"-text_pub") == 0)
|
||||
{
|
||||
pubtext=1;
|
||||
text=1;
|
||||
}
|
||||
else if (strcmp(*args,"-text") == 0)
|
||||
text=1;
|
||||
else if (strcmp(*args,"-noout") == 0)
|
||||
noout=1;
|
||||
else
|
||||
{
|
||||
cipher = EVP_get_cipherbyname(*args + 1);
|
||||
if (!cipher)
|
||||
{
|
||||
BIO_printf(bio_err, "Unknown cipher %s\n",
|
||||
*args + 1);
|
||||
badarg = 1;
|
||||
}
|
||||
}
|
||||
args++;
|
||||
}
|
||||
|
||||
if (badarg)
|
||||
{
|
||||
bad:
|
||||
BIO_printf(bio_err, "Usage pkey [options]\n");
|
||||
BIO_printf(bio_err, "where options are\n");
|
||||
BIO_printf(bio_err, "-in file input file\n");
|
||||
BIO_printf(bio_err, "-inform X input format (DER or PEM)\n");
|
||||
BIO_printf(bio_err, "-passin arg input file pass phrase source\n");
|
||||
BIO_printf(bio_err, "-outform X output format (DER or PEM)\n");
|
||||
BIO_printf(bio_err, "-out file output file\n");
|
||||
BIO_printf(bio_err, "-passout arg output file pass phrase source\n");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err, "-engine e use engine e, possibly a hardware device.\n");
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (!app_passwd(bio_err, passargin, passargout, &passin, &passout))
|
||||
{
|
||||
BIO_printf(bio_err, "Error getting passwords\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (outfile)
|
||||
{
|
||||
if (!(out = BIO_new_file (outfile, "wb")))
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't open output file %s\n", outfile);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
out = BIO_new_fp (stdout, BIO_NOCLOSE);
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
{
|
||||
BIO *tmpbio = BIO_new(BIO_f_linebuffer());
|
||||
out = BIO_push(tmpbio, out);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (pubin)
|
||||
pkey = load_pubkey(bio_err, infile, informat, 1,
|
||||
passin, e, "Public Key");
|
||||
else
|
||||
pkey = load_key(bio_err, infile, informat, 1,
|
||||
passin, e, "key");
|
||||
if (!pkey)
|
||||
goto end;
|
||||
|
||||
if (!noout)
|
||||
{
|
||||
if (outformat == FORMAT_PEM)
|
||||
{
|
||||
if (pubout)
|
||||
PEM_write_bio_PUBKEY(out,pkey);
|
||||
else
|
||||
PEM_write_bio_PrivateKey(out, pkey, cipher,
|
||||
NULL, 0, NULL, passout);
|
||||
}
|
||||
else if (outformat == FORMAT_ASN1)
|
||||
{
|
||||
if (pubout)
|
||||
i2d_PUBKEY_bio(out, pkey);
|
||||
else
|
||||
i2d_PrivateKey_bio(out, pkey);
|
||||
}
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad format specified for key\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (text)
|
||||
{
|
||||
if (pubtext)
|
||||
EVP_PKEY_print_public(out, pkey, 0, NULL);
|
||||
else
|
||||
EVP_PKEY_print_private(out, pkey, 0, NULL);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
end:
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
BIO_free(in);
|
||||
if (passin)
|
||||
OPENSSL_free(passin);
|
||||
if (passout)
|
||||
OPENSSL_free(passout);
|
||||
|
||||
return ret;
|
||||
}
|
||||
201
apps/pkeyparam.c
Normal file
201
apps/pkeyparam.c
Normal file
@@ -0,0 +1,201 @@
|
||||
/* apps/pkeyparam.c */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "apps.h"
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/evp.h>
|
||||
|
||||
#define PROG pkeyparam_main
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
char **args, *infile = NULL, *outfile = NULL;
|
||||
BIO *in = NULL, *out = NULL;
|
||||
int text = 0, noout = 0;
|
||||
EVP_PKEY *pkey=NULL;
|
||||
int badarg = 0;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
char *engine=NULL;
|
||||
#endif
|
||||
int ret = 1;
|
||||
|
||||
if (bio_err == NULL)
|
||||
bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||
|
||||
if (!load_config(bio_err, NULL))
|
||||
goto end;
|
||||
|
||||
ERR_load_crypto_strings();
|
||||
OpenSSL_add_all_algorithms();
|
||||
args = argv + 1;
|
||||
while (!badarg && *args && *args[0] == '-')
|
||||
{
|
||||
if (!strcmp (*args, "-in"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
infile = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (!strcmp (*args, "-out"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outfile = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if (strcmp(*args,"-engine") == 0)
|
||||
{
|
||||
if (!args[1]) goto bad;
|
||||
engine= *(++args);
|
||||
}
|
||||
#endif
|
||||
|
||||
else if (strcmp(*args,"-text") == 0)
|
||||
text=1;
|
||||
else if (strcmp(*args,"-noout") == 0)
|
||||
noout=1;
|
||||
args++;
|
||||
}
|
||||
|
||||
if (badarg)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
bad:
|
||||
#endif
|
||||
BIO_printf(bio_err, "Usage pkeyparam [options]\n");
|
||||
BIO_printf(bio_err, "where options are\n");
|
||||
BIO_printf(bio_err, "-in file input file\n");
|
||||
BIO_printf(bio_err, "-out file output file\n");
|
||||
BIO_printf(bio_err, "-text print parameters as text\n");
|
||||
BIO_printf(bio_err, "-noout don't output encoded parameters\n");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err, "-engine e use engine e, possibly a hardware device.\n");
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (infile)
|
||||
{
|
||||
if (!(in = BIO_new_file (infile, "r")))
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't open input file %s\n", infile);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
in = BIO_new_fp (stdin, BIO_NOCLOSE);
|
||||
|
||||
if (outfile)
|
||||
{
|
||||
if (!(out = BIO_new_file (outfile, "w")))
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't open output file %s\n", outfile);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
out = BIO_new_fp (stdout, BIO_NOCLOSE);
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
{
|
||||
BIO *tmpbio = BIO_new(BIO_f_linebuffer());
|
||||
out = BIO_push(tmpbio, out);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
pkey = PEM_read_bio_Parameters(in, NULL);
|
||||
if (!pkey)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading paramters\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!noout)
|
||||
PEM_write_bio_Parameters(out,pkey);
|
||||
|
||||
if (text)
|
||||
EVP_PKEY_print_params(out, pkey, 0, NULL);
|
||||
|
||||
ret = 0;
|
||||
|
||||
end:
|
||||
EVP_PKEY_free(pkey);
|
||||
BIO_free_all(out);
|
||||
BIO_free(in);
|
||||
|
||||
return ret;
|
||||
}
|
||||
570
apps/pkeyutl.c
Normal file
570
apps/pkeyutl.c
Normal file
@@ -0,0 +1,570 @@
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006.
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "apps.h"
|
||||
#include <string.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/evp.h>
|
||||
|
||||
#define KEY_PRIVKEY 1
|
||||
#define KEY_PUBKEY 2
|
||||
#define KEY_CERT 3
|
||||
|
||||
static void usage(void);
|
||||
|
||||
#undef PROG
|
||||
|
||||
#define PROG pkeyutl_main
|
||||
|
||||
static EVP_PKEY_CTX *init_ctx(int *pkeysize,
|
||||
char *keyfile, int keyform, int key_type,
|
||||
char *passargin, int pkey_op, ENGINE *e);
|
||||
|
||||
static int setup_peer(BIO *err, EVP_PKEY_CTX *ctx, int peerform,
|
||||
const char *file);
|
||||
|
||||
static int do_keyop(EVP_PKEY_CTX *ctx, int pkey_op,
|
||||
unsigned char *out, size_t *poutlen,
|
||||
unsigned char *in, size_t inlen);
|
||||
|
||||
int MAIN(int argc, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
BIO *in = NULL, *out = NULL;
|
||||
char *infile = NULL, *outfile = NULL, *sigfile = NULL;
|
||||
ENGINE *e = NULL;
|
||||
int pkey_op = EVP_PKEY_OP_SIGN, key_type = KEY_PRIVKEY;
|
||||
int keyform = FORMAT_PEM, peerform = FORMAT_PEM;
|
||||
char badarg = 0, rev = 0;
|
||||
char hexdump = 0, asn1parse = 0;
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
char *passargin = NULL;
|
||||
int keysize = -1;
|
||||
|
||||
unsigned char *buf_in = NULL, *buf_out = NULL, *sig = NULL;
|
||||
size_t buf_outlen;
|
||||
int buf_inlen = 0, siglen = -1;
|
||||
|
||||
int ret = 1, rv = -1;
|
||||
|
||||
argc--;
|
||||
argv++;
|
||||
|
||||
if(!bio_err) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
|
||||
|
||||
if (!load_config(bio_err, NULL))
|
||||
goto end;
|
||||
ERR_load_crypto_strings();
|
||||
OpenSSL_add_all_algorithms();
|
||||
|
||||
while(argc >= 1)
|
||||
{
|
||||
if (!strcmp(*argv,"-in"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
infile= *(++argv);
|
||||
}
|
||||
else if (!strcmp(*argv,"-out"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
outfile= *(++argv);
|
||||
}
|
||||
else if (!strcmp(*argv,"-sigfile"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
sigfile= *(++argv);
|
||||
}
|
||||
else if(!strcmp(*argv, "-inkey"))
|
||||
{
|
||||
if (--argc < 1)
|
||||
badarg = 1;
|
||||
else
|
||||
{
|
||||
ctx = init_ctx(&keysize,
|
||||
*(++argv), keyform, key_type,
|
||||
passargin, pkey_op, e);
|
||||
if (!ctx)
|
||||
{
|
||||
BIO_puts(bio_err,
|
||||
"Error initializing context\n");
|
||||
ERR_print_errors(bio_err);
|
||||
badarg = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!strcmp(*argv,"-peerkey"))
|
||||
{
|
||||
if (--argc < 1)
|
||||
badarg = 1;
|
||||
else if (!setup_peer(bio_err, ctx, peerform, *(++argv)))
|
||||
badarg = 1;
|
||||
}
|
||||
else if (!strcmp(*argv,"-passin"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
passargin= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-peerform") == 0)
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
peerform=str2fmt(*(++argv));
|
||||
}
|
||||
else if (strcmp(*argv,"-keyform") == 0)
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
keyform=str2fmt(*(++argv));
|
||||
}
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if(!strcmp(*argv, "-engine"))
|
||||
{
|
||||
if (--argc < 1)
|
||||
badarg = 1;
|
||||
else
|
||||
e = setup_engine(bio_err, *(++argv), 0);
|
||||
}
|
||||
#endif
|
||||
else if(!strcmp(*argv, "-pubin"))
|
||||
key_type = KEY_PUBKEY;
|
||||
else if(!strcmp(*argv, "-certin"))
|
||||
key_type = KEY_CERT;
|
||||
else if(!strcmp(*argv, "-asn1parse"))
|
||||
asn1parse = 1;
|
||||
else if(!strcmp(*argv, "-hexdump"))
|
||||
hexdump = 1;
|
||||
else if(!strcmp(*argv, "-sign"))
|
||||
pkey_op = EVP_PKEY_OP_SIGN;
|
||||
else if(!strcmp(*argv, "-verify"))
|
||||
pkey_op = EVP_PKEY_OP_VERIFY;
|
||||
else if(!strcmp(*argv, "-verifyrecover"))
|
||||
pkey_op = EVP_PKEY_OP_VERIFYRECOVER;
|
||||
else if(!strcmp(*argv, "-rev"))
|
||||
rev = 1;
|
||||
else if(!strcmp(*argv, "-encrypt"))
|
||||
pkey_op = EVP_PKEY_OP_ENCRYPT;
|
||||
else if(!strcmp(*argv, "-decrypt"))
|
||||
pkey_op = EVP_PKEY_OP_DECRYPT;
|
||||
else if(!strcmp(*argv, "-derive"))
|
||||
pkey_op = EVP_PKEY_OP_DERIVE;
|
||||
else if (strcmp(*argv,"-pkeyopt") == 0)
|
||||
{
|
||||
if (--argc < 1)
|
||||
badarg = 1;
|
||||
else if (!ctx)
|
||||
{
|
||||
BIO_puts(bio_err,
|
||||
"-pkeyopt command before -inkey\n");
|
||||
badarg = 1;
|
||||
}
|
||||
else if (pkey_ctrl_string(ctx, *(++argv)) <= 0)
|
||||
{
|
||||
BIO_puts(bio_err, "parameter setting error\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else badarg = 1;
|
||||
if(badarg)
|
||||
{
|
||||
usage();
|
||||
goto end;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
|
||||
if (!ctx)
|
||||
{
|
||||
usage();
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (sigfile && (pkey_op != EVP_PKEY_OP_VERIFY))
|
||||
{
|
||||
BIO_puts(bio_err, "Signature file specified for non verify\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!sigfile && (pkey_op == EVP_PKEY_OP_VERIFY))
|
||||
{
|
||||
BIO_puts(bio_err, "No signature file specified for verify\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
/* FIXME: seed PRNG only if needed */
|
||||
app_RAND_load_file(NULL, bio_err, 0);
|
||||
|
||||
if (pkey_op != EVP_PKEY_OP_DERIVE)
|
||||
{
|
||||
if(infile)
|
||||
{
|
||||
if(!(in = BIO_new_file(infile, "rb")))
|
||||
{
|
||||
BIO_puts(bio_err,
|
||||
"Error Opening Input File\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
in = BIO_new_fp(stdin, BIO_NOCLOSE);
|
||||
}
|
||||
|
||||
if(outfile)
|
||||
{
|
||||
if(!(out = BIO_new_file(outfile, "wb")))
|
||||
{
|
||||
BIO_printf(bio_err, "Error Creating Output File\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
out = BIO_new_fp(stdout, BIO_NOCLOSE);
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
{
|
||||
BIO *tmpbio = BIO_new(BIO_f_linebuffer());
|
||||
out = BIO_push(tmpbio, out);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (sigfile)
|
||||
{
|
||||
BIO *sigbio = BIO_new_file(sigfile, "rb");
|
||||
if (!sigbio)
|
||||
{
|
||||
BIO_printf(bio_err, "Can't open signature file %s\n",
|
||||
sigfile);
|
||||
goto end;
|
||||
}
|
||||
siglen = bio_to_mem(&sig, keysize * 10, sigbio);
|
||||
BIO_free(sigbio);
|
||||
if (siglen <= 0)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading signature data\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
if (in)
|
||||
{
|
||||
/* Read the input data */
|
||||
buf_inlen = bio_to_mem(&buf_in, keysize * 10, in);
|
||||
if(buf_inlen <= 0)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading input Data\n");
|
||||
exit(1);
|
||||
}
|
||||
if(rev)
|
||||
{
|
||||
size_t i;
|
||||
unsigned char ctmp;
|
||||
size_t l = (size_t)buf_inlen;
|
||||
for(i = 0; i < l/2; i++)
|
||||
{
|
||||
ctmp = buf_in[i];
|
||||
buf_in[i] = buf_in[l - 1 - i];
|
||||
buf_in[l - 1 - i] = ctmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(pkey_op == EVP_PKEY_OP_VERIFY)
|
||||
{
|
||||
rv = EVP_PKEY_verify(ctx, sig, (size_t)siglen,
|
||||
buf_in, (size_t)buf_inlen);
|
||||
if (rv == 0)
|
||||
BIO_puts(out, "Signature Verification Failure\n");
|
||||
else if (rv == 1)
|
||||
BIO_puts(out, "Signature Verified Successfully\n");
|
||||
if (rv >= 0)
|
||||
goto end;
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = do_keyop(ctx, pkey_op, NULL, (size_t *)&buf_outlen,
|
||||
buf_in, (size_t)buf_inlen);
|
||||
if (rv > 0)
|
||||
{
|
||||
buf_out = OPENSSL_malloc(buf_outlen);
|
||||
if (!buf_out)
|
||||
rv = -1;
|
||||
else
|
||||
rv = do_keyop(ctx, pkey_op,
|
||||
buf_out, (size_t *)&buf_outlen,
|
||||
buf_in, (size_t)buf_inlen);
|
||||
}
|
||||
}
|
||||
|
||||
if(rv <= 0)
|
||||
{
|
||||
BIO_printf(bio_err, "Public Key operation error\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
ret = 0;
|
||||
if(asn1parse)
|
||||
{
|
||||
if(!ASN1_parse_dump(out, buf_out, buf_outlen, 1, -1))
|
||||
ERR_print_errors(bio_err);
|
||||
}
|
||||
else if(hexdump)
|
||||
BIO_dump(out, (char *)buf_out, buf_outlen);
|
||||
else
|
||||
BIO_write(out, buf_out, buf_outlen);
|
||||
|
||||
end:
|
||||
if (ctx)
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
BIO_free(in);
|
||||
BIO_free_all(out);
|
||||
if (buf_in)
|
||||
OPENSSL_free(buf_in);
|
||||
if (buf_out)
|
||||
OPENSSL_free(buf_out);
|
||||
if (sig)
|
||||
OPENSSL_free(sig);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void usage()
|
||||
{
|
||||
BIO_printf(bio_err, "Usage: pkeyutl [options]\n");
|
||||
BIO_printf(bio_err, "-in file input file\n");
|
||||
BIO_printf(bio_err, "-out file output file\n");
|
||||
BIO_printf(bio_err, "-signature file signature file (verify operation only)\n");
|
||||
BIO_printf(bio_err, "-inkey file input key\n");
|
||||
BIO_printf(bio_err, "-keyform arg private key format - default PEM\n");
|
||||
BIO_printf(bio_err, "-pubin input is a public key\n");
|
||||
BIO_printf(bio_err, "-certin input is a certificate carrying a public key\n");
|
||||
BIO_printf(bio_err, "-pkeyopt X:Y public key options\n");
|
||||
BIO_printf(bio_err, "-sign sign with private key\n");
|
||||
BIO_printf(bio_err, "-verify verify with public key\n");
|
||||
BIO_printf(bio_err, "-verifyrecover verify with public key, recover original data\n");
|
||||
BIO_printf(bio_err, "-encrypt encrypt with public key\n");
|
||||
BIO_printf(bio_err, "-decrypt decrypt with private key\n");
|
||||
BIO_printf(bio_err, "-derive derive shared secret\n");
|
||||
BIO_printf(bio_err, "-hexdump hex dump output\n");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err, "-engine e use engine e, possibly a hardware device.\n");
|
||||
#endif
|
||||
BIO_printf(bio_err, "-passin arg pass phrase source\n");
|
||||
|
||||
}
|
||||
|
||||
static EVP_PKEY_CTX *init_ctx(int *pkeysize,
|
||||
char *keyfile, int keyform, int key_type,
|
||||
char *passargin, int pkey_op, ENGINE *e)
|
||||
{
|
||||
EVP_PKEY *pkey = NULL;
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
char *passin = NULL;
|
||||
int rv = -1;
|
||||
X509 *x;
|
||||
if(((pkey_op == EVP_PKEY_OP_SIGN) || (pkey_op == EVP_PKEY_OP_DECRYPT)
|
||||
|| (pkey_op == EVP_PKEY_OP_DERIVE))
|
||||
&& (key_type != KEY_PRIVKEY))
|
||||
{
|
||||
BIO_printf(bio_err, "A private key is needed for this operation\n");
|
||||
goto end;
|
||||
}
|
||||
if(!app_passwd(bio_err, passargin, NULL, &passin, NULL))
|
||||
{
|
||||
BIO_printf(bio_err, "Error getting password\n");
|
||||
goto end;
|
||||
}
|
||||
switch(key_type)
|
||||
{
|
||||
case KEY_PRIVKEY:
|
||||
pkey = load_key(bio_err, keyfile, keyform, 0,
|
||||
passin, e, "Private Key");
|
||||
break;
|
||||
|
||||
case KEY_PUBKEY:
|
||||
pkey = load_pubkey(bio_err, keyfile, keyform, 0,
|
||||
NULL, e, "Public Key");
|
||||
break;
|
||||
|
||||
case KEY_CERT:
|
||||
x = load_cert(bio_err, keyfile, keyform,
|
||||
NULL, e, "Certificate");
|
||||
if(x)
|
||||
{
|
||||
pkey = X509_get_pubkey(x);
|
||||
X509_free(x);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
*pkeysize = EVP_PKEY_size(pkey);
|
||||
|
||||
if (!pkey)
|
||||
goto end;
|
||||
|
||||
ctx = EVP_PKEY_CTX_new(pkey, e);
|
||||
|
||||
EVP_PKEY_free(pkey);
|
||||
|
||||
if (!ctx)
|
||||
goto end;
|
||||
|
||||
switch(pkey_op)
|
||||
{
|
||||
case EVP_PKEY_OP_SIGN:
|
||||
rv = EVP_PKEY_sign_init(ctx);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_VERIFY:
|
||||
rv = EVP_PKEY_verify_init(ctx);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_VERIFYRECOVER:
|
||||
rv = EVP_PKEY_verify_recover_init(ctx);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_ENCRYPT:
|
||||
rv = EVP_PKEY_encrypt_init(ctx);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_DECRYPT:
|
||||
rv = EVP_PKEY_decrypt_init(ctx);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_DERIVE:
|
||||
rv = EVP_PKEY_derive_init(ctx);
|
||||
break;
|
||||
}
|
||||
|
||||
if (rv <= 0)
|
||||
{
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
ctx = NULL;
|
||||
}
|
||||
|
||||
end:
|
||||
|
||||
if (passin)
|
||||
OPENSSL_free(passin);
|
||||
|
||||
return ctx;
|
||||
|
||||
|
||||
}
|
||||
|
||||
static int setup_peer(BIO *err, EVP_PKEY_CTX *ctx, int peerform,
|
||||
const char *file)
|
||||
{
|
||||
EVP_PKEY *peer = NULL;
|
||||
int ret;
|
||||
if (!ctx)
|
||||
{
|
||||
BIO_puts(err, "-peerkey command before -inkey\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
peer = load_pubkey(bio_err, file, peerform, 0, NULL, NULL, "Peer Key");
|
||||
|
||||
if (!peer)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading peer key %s\n", file);
|
||||
ERR_print_errors(err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = EVP_PKEY_derive_set_peer(ctx, peer);
|
||||
|
||||
EVP_PKEY_free(peer);
|
||||
if (ret <= 0)
|
||||
ERR_print_errors(err);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int do_keyop(EVP_PKEY_CTX *ctx, int pkey_op,
|
||||
unsigned char *out, size_t *poutlen,
|
||||
unsigned char *in, size_t inlen)
|
||||
{
|
||||
int rv = 0;
|
||||
switch(pkey_op)
|
||||
{
|
||||
case EVP_PKEY_OP_VERIFYRECOVER:
|
||||
rv = EVP_PKEY_verify_recover(ctx, out, poutlen, in, inlen);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_SIGN:
|
||||
rv = EVP_PKEY_sign(ctx, out, poutlen, in, inlen);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_ENCRYPT:
|
||||
rv = EVP_PKEY_encrypt(ctx, out, poutlen, in, inlen);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_DECRYPT:
|
||||
rv = EVP_PKEY_decrypt(ctx, out, poutlen, in, inlen);
|
||||
break;
|
||||
|
||||
case EVP_PKEY_OP_DERIVE:
|
||||
rv = EVP_PKEY_derive(ctx, out, poutlen);
|
||||
break;
|
||||
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
48
apps/prime.c
48
apps/prime.c
@@ -62,6 +62,9 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
int hex=0;
|
||||
int checks=20;
|
||||
int generate=0;
|
||||
int bits=0;
|
||||
int safe=0;
|
||||
BIGNUM *bn=NULL;
|
||||
BIO *bio_out;
|
||||
|
||||
@@ -77,6 +80,15 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
if(!strcmp(*argv,"-hex"))
|
||||
hex=1;
|
||||
else if(!strcmp(*argv,"-generate"))
|
||||
generate=1;
|
||||
else if(!strcmp(*argv,"-bits"))
|
||||
if(--argc < 1)
|
||||
goto bad;
|
||||
else
|
||||
bits=atoi(*++argv);
|
||||
else if(!strcmp(*argv,"-safe"))
|
||||
safe=1;
|
||||
else if(!strcmp(*argv,"-checks"))
|
||||
if(--argc < 1)
|
||||
goto bad;
|
||||
@@ -91,13 +103,13 @@ int MAIN(int argc, char **argv)
|
||||
++argv;
|
||||
}
|
||||
|
||||
if (argv[0] == NULL)
|
||||
if (argv[0] == NULL && !generate)
|
||||
{
|
||||
BIO_printf(bio_err,"No prime specified\n");
|
||||
goto bad;
|
||||
}
|
||||
|
||||
if ((bio_out=BIO_new(BIO_s_file())) != NULL)
|
||||
if ((bio_out=BIO_new(BIO_s_file())) != NULL)
|
||||
{
|
||||
BIO_set_fp(bio_out,stdout,BIO_NOCLOSE);
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
@@ -108,14 +120,32 @@ int MAIN(int argc, char **argv)
|
||||
#endif
|
||||
}
|
||||
|
||||
if(hex)
|
||||
BN_hex2bn(&bn,argv[0]);
|
||||
else
|
||||
BN_dec2bn(&bn,argv[0]);
|
||||
if(generate)
|
||||
{
|
||||
char *s;
|
||||
|
||||
BN_print(bio_out,bn);
|
||||
BIO_printf(bio_out," is %sprime\n",
|
||||
BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not ");
|
||||
if(!bits)
|
||||
{
|
||||
BIO_printf(bio_err,"Specifiy the number of bits.\n");
|
||||
return 1;
|
||||
}
|
||||
bn=BN_new();
|
||||
BN_generate_prime_ex(bn,bits,safe,NULL,NULL,NULL);
|
||||
s=hex ? BN_bn2hex(bn) : BN_bn2dec(bn);
|
||||
BIO_printf(bio_out,"%s\n",s);
|
||||
OPENSSL_free(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(hex)
|
||||
BN_hex2bn(&bn,argv[0]);
|
||||
else
|
||||
BN_dec2bn(&bn,argv[0]);
|
||||
|
||||
BN_print(bio_out,bn);
|
||||
BIO_printf(bio_out," is %sprime\n",
|
||||
BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not ");
|
||||
}
|
||||
|
||||
BN_free(bn);
|
||||
BIO_free_all(bio_out);
|
||||
|
||||
17
apps/progs.h
17
apps/progs.h
@@ -22,6 +22,7 @@ extern int ecparam_main(int argc,char *argv[]);
|
||||
extern int x509_main(int argc,char *argv[]);
|
||||
extern int genrsa_main(int argc,char *argv[]);
|
||||
extern int gendsa_main(int argc,char *argv[]);
|
||||
extern int genpkey_main(int argc,char *argv[]);
|
||||
extern int s_server_main(int argc,char *argv[]);
|
||||
extern int s_client_main(int argc,char *argv[]);
|
||||
extern int speed_main(int argc,char *argv[]);
|
||||
@@ -35,22 +36,30 @@ extern int ciphers_main(int argc,char *argv[]);
|
||||
extern int nseq_main(int argc,char *argv[]);
|
||||
extern int pkcs12_main(int argc,char *argv[]);
|
||||
extern int pkcs8_main(int argc,char *argv[]);
|
||||
extern int pkey_main(int argc,char *argv[]);
|
||||
extern int pkeyparam_main(int argc,char *argv[]);
|
||||
extern int pkeyutl_main(int argc,char *argv[]);
|
||||
extern int spkac_main(int argc,char *argv[]);
|
||||
extern int smime_main(int argc,char *argv[]);
|
||||
extern int rand_main(int argc,char *argv[]);
|
||||
extern int engine_main(int argc,char *argv[]);
|
||||
extern int ocsp_main(int argc,char *argv[]);
|
||||
extern int prime_main(int argc,char *argv[]);
|
||||
extern int ts_main(int argc,char *argv[]);
|
||||
|
||||
#define FUNC_TYPE_GENERAL 1
|
||||
#define FUNC_TYPE_MD 2
|
||||
#define FUNC_TYPE_CIPHER 3
|
||||
#define FUNC_TYPE_PKEY 4
|
||||
#define FUNC_TYPE_MD_ALG 5
|
||||
#define FUNC_TYPE_CIPHER_ALG 6
|
||||
|
||||
typedef struct {
|
||||
int type;
|
||||
const char *name;
|
||||
int (*func)(int argc,char *argv[]);
|
||||
} FUNCTION;
|
||||
DECLARE_LHASH_OF(FUNCTION);
|
||||
|
||||
FUNCTION functions[] = {
|
||||
{FUNC_TYPE_GENERAL,"verify",verify_main},
|
||||
@@ -96,6 +105,7 @@ FUNCTION functions[] = {
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FUNC_TYPE_GENERAL,"gendsa",gendsa_main},
|
||||
#endif
|
||||
{FUNC_TYPE_GENERAL,"genpkey",genpkey_main},
|
||||
#if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
|
||||
{FUNC_TYPE_GENERAL,"s_server",s_server_main},
|
||||
#endif
|
||||
@@ -123,6 +133,9 @@ FUNCTION functions[] = {
|
||||
{FUNC_TYPE_GENERAL,"pkcs12",pkcs12_main},
|
||||
#endif
|
||||
{FUNC_TYPE_GENERAL,"pkcs8",pkcs8_main},
|
||||
{FUNC_TYPE_GENERAL,"pkey",pkey_main},
|
||||
{FUNC_TYPE_GENERAL,"pkeyparam",pkeyparam_main},
|
||||
{FUNC_TYPE_GENERAL,"pkeyutl",pkeyutl_main},
|
||||
{FUNC_TYPE_GENERAL,"spkac",spkac_main},
|
||||
{FUNC_TYPE_GENERAL,"smime",smime_main},
|
||||
{FUNC_TYPE_GENERAL,"rand",rand_main},
|
||||
@@ -131,6 +144,7 @@ FUNCTION functions[] = {
|
||||
#endif
|
||||
{FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
|
||||
{FUNC_TYPE_GENERAL,"prime",prime_main},
|
||||
{FUNC_TYPE_GENERAL,"ts",ts_main},
|
||||
#ifndef OPENSSL_NO_MD2
|
||||
{FUNC_TYPE_MD,"md2",dgst_main},
|
||||
#endif
|
||||
@@ -189,6 +203,9 @@ FUNCTION functions[] = {
|
||||
{FUNC_TYPE_CIPHER,"camellia-256-ecb",enc_main},
|
||||
#endif
|
||||
{FUNC_TYPE_CIPHER,"base64",enc_main},
|
||||
#ifdef ZLIB
|
||||
{FUNC_TYPE_CIPHER,"zlib",enc_main},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FUNC_TYPE_CIPHER,"des",enc_main},
|
||||
#endif
|
||||
|
||||
@@ -13,6 +13,9 @@ print <<'EOF';
|
||||
#define FUNC_TYPE_GENERAL 1
|
||||
#define FUNC_TYPE_MD 2
|
||||
#define FUNC_TYPE_CIPHER 3
|
||||
#define FUNC_TYPE_PKEY 4
|
||||
#define FUNC_TYPE_MD_ALG 5
|
||||
#define FUNC_TYPE_CIPHER_ALG 6
|
||||
|
||||
typedef struct {
|
||||
int type;
|
||||
@@ -62,7 +65,7 @@ foreach (
|
||||
"camellia-128-cbc", "camellia-128-ecb",
|
||||
"camellia-192-cbc", "camellia-192-ecb",
|
||||
"camellia-256-cbc", "camellia-256-ecb",
|
||||
"base64",
|
||||
"base64", "zlib",
|
||||
"des", "des3", "desx", "idea", "seed", "rc4", "rc4-40",
|
||||
"rc2", "bf", "cast", "rc5",
|
||||
"des-ecb", "des-ede", "des-ede3",
|
||||
@@ -89,6 +92,7 @@ foreach (
|
||||
elsif ($_ =~ /bf/) { $t="#ifndef OPENSSL_NO_BF\n${t}#endif\n"; }
|
||||
elsif ($_ =~ /cast/) { $t="#ifndef OPENSSL_NO_CAST\n${t}#endif\n"; }
|
||||
elsif ($_ =~ /rc5/) { $t="#ifndef OPENSSL_NO_RC5\n${t}#endif\n"; }
|
||||
elsif ($_ =~ /zlib/) { $t="#ifdef ZLIB\n${t}#endif\n"; }
|
||||
print $t;
|
||||
}
|
||||
|
||||
|
||||
27
apps/rand.c
27
apps/rand.c
@@ -68,7 +68,8 @@
|
||||
|
||||
/* -out file - write to file
|
||||
* -rand file:file - PRNG seed files
|
||||
* -base64 - encode output
|
||||
* -base64 - base64 encode output
|
||||
* -hex - hex encode output
|
||||
* num - write 'num' bytes
|
||||
*/
|
||||
|
||||
@@ -84,6 +85,7 @@ int MAIN(int argc, char **argv)
|
||||
char *outfile = NULL;
|
||||
char *inrand = NULL;
|
||||
int base64 = 0;
|
||||
int hex = 0;
|
||||
BIO *out = NULL;
|
||||
int num = -1;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
@@ -133,6 +135,13 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
badopt = 1;
|
||||
}
|
||||
else if (strcmp(argv[i], "-hex") == 0)
|
||||
{
|
||||
if (!hex)
|
||||
hex = 1;
|
||||
else
|
||||
badopt = 1;
|
||||
}
|
||||
else if (isdigit((unsigned char)argv[i][0]))
|
||||
{
|
||||
if (num < 0)
|
||||
@@ -148,6 +157,9 @@ int MAIN(int argc, char **argv)
|
||||
badopt = 1;
|
||||
}
|
||||
|
||||
if (hex && base64)
|
||||
badopt = 1;
|
||||
|
||||
if (num < 0)
|
||||
badopt = 1;
|
||||
|
||||
@@ -160,7 +172,8 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf(bio_err, "-engine e - use engine e, possibly a hardware device.\n");
|
||||
#endif
|
||||
BIO_printf(bio_err, "-rand file%cfile%c... - seed PRNG from files\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
|
||||
BIO_printf(bio_err, "-base64 - encode output\n");
|
||||
BIO_printf(bio_err, "-base64 - base64 encode output\n");
|
||||
BIO_printf(bio_err, "-hex - hex encode output\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
@@ -210,9 +223,17 @@ int MAIN(int argc, char **argv)
|
||||
r = RAND_bytes(buf, chunk);
|
||||
if (r <= 0)
|
||||
goto err;
|
||||
BIO_write(out, buf, chunk);
|
||||
if (!hex)
|
||||
BIO_write(out, buf, chunk);
|
||||
else
|
||||
{
|
||||
for (i = 0; i < chunk; i++)
|
||||
BIO_printf(out, "%02x", buf[i]);
|
||||
}
|
||||
num -= chunk;
|
||||
}
|
||||
if (hex)
|
||||
BIO_puts(out, "\n");
|
||||
(void)BIO_flush(out);
|
||||
|
||||
app_RAND_write_file(NULL, bio_err);
|
||||
|
||||
480
apps/req.c
480
apps/req.c
@@ -141,39 +141,33 @@ static int add_attribute_object(X509_REQ *req, char *text, const char *def,
|
||||
int n_max, unsigned long chtype);
|
||||
static int add_DN_object(X509_NAME *n, char *text, const char *def, char *value,
|
||||
int nid,int n_min,int n_max, unsigned long chtype, int mval);
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
static int MS_CALLBACK req_cb(int p, int n, BN_GENCB *cb);
|
||||
#endif
|
||||
static int genpkey_cb(EVP_PKEY_CTX *ctx);
|
||||
static int req_check_len(int len,int n_min,int n_max);
|
||||
static int check_end(const char *str, const char *end);
|
||||
static EVP_PKEY_CTX *set_keygen_ctx(BIO *err, const char *gstr, int *pkey_type,
|
||||
long *pkeylen, char **palgnam,
|
||||
ENGINE *keygen_engine);
|
||||
#ifndef MONOLITH
|
||||
static char *default_config_file=NULL;
|
||||
#endif
|
||||
static CONF *req_conf=NULL;
|
||||
static int batch=0;
|
||||
|
||||
#define TYPE_RSA 1
|
||||
#define TYPE_DSA 2
|
||||
#define TYPE_DH 3
|
||||
#define TYPE_EC 4
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
ENGINE *e = NULL;
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
DSA *dsa_params=NULL;
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
EC_KEY *ec_params = NULL;
|
||||
#endif
|
||||
ENGINE *e = NULL, *gen_eng = NULL;
|
||||
unsigned long nmflag = 0, reqflag = 0;
|
||||
int ex=1,x509=0,days=30;
|
||||
X509 *x509ss=NULL;
|
||||
X509_REQ *req=NULL;
|
||||
EVP_PKEY_CTX *genctx = NULL;
|
||||
const char *keyalg = NULL;
|
||||
char *keyalgstr = NULL;
|
||||
STACK_OF(STRING) *pkeyopts = NULL;
|
||||
EVP_PKEY *pkey=NULL;
|
||||
int i=0,badops=0,newreq=0,verbose=0,pkey_type=TYPE_RSA;
|
||||
int i=0,badops=0,newreq=0,verbose=0,pkey_type=-1;
|
||||
long newkey = -1;
|
||||
BIO *in=NULL,*out=NULL;
|
||||
int informat,outformat,verify=0,noout=0,text=0,keyform=FORMAT_PEM;
|
||||
@@ -193,7 +187,7 @@ int MAIN(int argc, char **argv)
|
||||
char *p;
|
||||
char *subj = NULL;
|
||||
int multirdn = 0;
|
||||
const EVP_MD *md_alg=NULL,*digest=EVP_sha1();
|
||||
const EVP_MD *md_alg=NULL,*digest=NULL;
|
||||
unsigned long chtype = MBSTRING_ASC;
|
||||
#ifndef MONOLITH
|
||||
char *to_free;
|
||||
@@ -236,6 +230,16 @@ int MAIN(int argc, char **argv)
|
||||
if (--argc < 1) goto bad;
|
||||
engine= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-keygen_engine") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
gen_eng = ENGINE_by_id(*(++argv));
|
||||
if (gen_eng == NULL)
|
||||
{
|
||||
BIO_printf(bio_err, "Can't find keygen engine %s\n", *argv);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(*argv,"-key") == 0)
|
||||
{
|
||||
@@ -292,126 +296,20 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
else if (strcmp(*argv,"-newkey") == 0)
|
||||
{
|
||||
int is_numeric;
|
||||
|
||||
if (--argc < 1) goto bad;
|
||||
p= *(++argv);
|
||||
is_numeric = p[0] >= '0' && p[0] <= '9';
|
||||
if (strncmp("rsa:",p,4) == 0 || is_numeric)
|
||||
{
|
||||
pkey_type=TYPE_RSA;
|
||||
if(!is_numeric)
|
||||
p+=4;
|
||||
newkey= atoi(p);
|
||||
}
|
||||
else
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (strncmp("dsa:",p,4) == 0)
|
||||
{
|
||||
X509 *xtmp=NULL;
|
||||
EVP_PKEY *dtmp;
|
||||
|
||||
pkey_type=TYPE_DSA;
|
||||
p+=4;
|
||||
if ((in=BIO_new_file(p,"r")) == NULL)
|
||||
{
|
||||
perror(p);
|
||||
goto end;
|
||||
}
|
||||
if ((dsa_params=PEM_read_bio_DSAparams(in,NULL,NULL,NULL)) == NULL)
|
||||
{
|
||||
ERR_clear_error();
|
||||
(void)BIO_reset(in);
|
||||
if ((xtmp=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"unable to load DSA parameters from file\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if ((dtmp=X509_get_pubkey(xtmp)) == NULL) goto end;
|
||||
if (dtmp->type == EVP_PKEY_DSA)
|
||||
dsa_params=DSAparams_dup(dtmp->pkey.dsa);
|
||||
EVP_PKEY_free(dtmp);
|
||||
X509_free(xtmp);
|
||||
if (dsa_params == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"Certificate does not contain DSA parameters\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
BIO_free(in);
|
||||
in=NULL;
|
||||
newkey=BN_num_bits(dsa_params->p);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (strncmp("ec:",p,3) == 0)
|
||||
{
|
||||
X509 *xtmp=NULL;
|
||||
EVP_PKEY *dtmp;
|
||||
EC_GROUP *group;
|
||||
|
||||
pkey_type=TYPE_EC;
|
||||
p+=3;
|
||||
if ((in=BIO_new_file(p,"r")) == NULL)
|
||||
{
|
||||
perror(p);
|
||||
goto end;
|
||||
}
|
||||
if ((ec_params = EC_KEY_new()) == NULL)
|
||||
goto end;
|
||||
group = PEM_read_bio_ECPKParameters(in, NULL, NULL, NULL);
|
||||
if (group == NULL)
|
||||
{
|
||||
EC_KEY_free(ec_params);
|
||||
ERR_clear_error();
|
||||
(void)BIO_reset(in);
|
||||
if ((xtmp=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"unable to load EC parameters from file\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if ((dtmp=X509_get_pubkey(xtmp))==NULL)
|
||||
goto end;
|
||||
if (dtmp->type == EVP_PKEY_EC)
|
||||
ec_params = EC_KEY_dup(dtmp->pkey.ec);
|
||||
EVP_PKEY_free(dtmp);
|
||||
X509_free(xtmp);
|
||||
if (ec_params == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"Certificate does not contain EC parameters\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EC_KEY_set_group(ec_params, group) == 0)
|
||||
goto end;
|
||||
EC_GROUP_free(group);
|
||||
}
|
||||
|
||||
BIO_free(in);
|
||||
in=NULL;
|
||||
newkey = EC_GROUP_get_degree(EC_KEY_get0_group(ec_params));
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DH
|
||||
if (strncmp("dh:",p,4) == 0)
|
||||
{
|
||||
pkey_type=TYPE_DH;
|
||||
p+=3;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (--argc < 1)
|
||||
goto bad;
|
||||
}
|
||||
|
||||
keyalg = *(++argv);
|
||||
newreq=1;
|
||||
}
|
||||
else if (strcmp(*argv,"-pkeyopt") == 0)
|
||||
{
|
||||
if (--argc < 1)
|
||||
goto bad;
|
||||
if (!pkeyopts)
|
||||
pkeyopts = sk_STRING_new_null();
|
||||
if (!pkeyopts || !sk_STRING_push(pkeyopts, *(++argv)))
|
||||
goto bad;
|
||||
}
|
||||
else if (strcmp(*argv,"-batch") == 0)
|
||||
batch=1;
|
||||
else if (strcmp(*argv,"-newhdr") == 0)
|
||||
@@ -730,15 +628,20 @@ bad:
|
||||
|
||||
if (newreq && (pkey == NULL))
|
||||
{
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
BN_GENCB cb;
|
||||
#endif
|
||||
char *randfile = NCONF_get_string(req_conf,SECTION,"RANDFILE");
|
||||
if (randfile == NULL)
|
||||
ERR_clear_error();
|
||||
app_RAND_load_file(randfile, bio_err, 0);
|
||||
if (inrand)
|
||||
app_RAND_load_files(inrand);
|
||||
|
||||
if (keyalg)
|
||||
{
|
||||
genctx = set_keygen_ctx(bio_err, keyalg, &pkey_type, &newkey,
|
||||
&keyalgstr, gen_eng);
|
||||
if (!genctx)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (newkey <= 0)
|
||||
{
|
||||
@@ -746,58 +649,55 @@ bad:
|
||||
newkey=DEFAULT_KEY_LENGTH;
|
||||
}
|
||||
|
||||
if (newkey < MIN_KEY_LENGTH && (pkey_type == TYPE_RSA || pkey_type == TYPE_DSA))
|
||||
if (newkey < MIN_KEY_LENGTH && (pkey_type == EVP_PKEY_RSA || pkey_type == EVP_PKEY_DSA))
|
||||
{
|
||||
BIO_printf(bio_err,"private key length is too short,\n");
|
||||
BIO_printf(bio_err,"it needs to be at least %d bits, not %ld\n",MIN_KEY_LENGTH,newkey);
|
||||
goto end;
|
||||
}
|
||||
BIO_printf(bio_err,"Generating a %ld bit %s private key\n",
|
||||
newkey,(pkey_type == TYPE_RSA)?"RSA":
|
||||
(pkey_type == TYPE_DSA)?"DSA":"EC");
|
||||
|
||||
if ((pkey=EVP_PKEY_new()) == NULL) goto end;
|
||||
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
BN_GENCB_set(&cb, req_cb, bio_err);
|
||||
if (pkey_type == TYPE_RSA)
|
||||
if (!genctx)
|
||||
{
|
||||
RSA *rsa = RSA_new();
|
||||
BIGNUM *bn = BN_new();
|
||||
if(!bn || !rsa || !BN_set_word(bn, 0x10001) ||
|
||||
!RSA_generate_key_ex(rsa, newkey, bn, &cb) ||
|
||||
!EVP_PKEY_assign_RSA(pkey, rsa))
|
||||
genctx = set_keygen_ctx(bio_err, NULL, &pkey_type, &newkey,
|
||||
&keyalgstr, gen_eng);
|
||||
if (!genctx)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (pkeyopts)
|
||||
{
|
||||
char *genopt;
|
||||
for (i = 0; i < sk_STRING_num(pkeyopts); i++)
|
||||
{
|
||||
if(bn) BN_free(bn);
|
||||
if(rsa) RSA_free(rsa);
|
||||
goto end;
|
||||
genopt = sk_STRING_value(pkeyopts, i);
|
||||
if (pkey_ctrl_string(genctx, genopt) <= 0)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"parameter error \"%s\"\n",
|
||||
genopt);
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
BN_free(bn);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (pkey_type == TYPE_DSA)
|
||||
|
||||
BIO_printf(bio_err,"Generating a %ld bit %s private key\n",
|
||||
newkey, keyalgstr);
|
||||
|
||||
EVP_PKEY_CTX_set_cb(genctx, genpkey_cb);
|
||||
EVP_PKEY_CTX_set_app_data(genctx, bio_err);
|
||||
|
||||
if (EVP_PKEY_keygen(genctx, &pkey) <= 0)
|
||||
{
|
||||
if (!DSA_generate_key(dsa_params)) goto end;
|
||||
if (!EVP_PKEY_assign_DSA(pkey,dsa_params)) goto end;
|
||||
dsa_params=NULL;
|
||||
BIO_puts(bio_err, "Error Generating Key\n");
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (pkey_type == TYPE_EC)
|
||||
{
|
||||
if (!EC_KEY_generate_key(ec_params)) goto end;
|
||||
if (!EVP_PKEY_assign_EC_KEY(pkey, ec_params))
|
||||
goto end;
|
||||
ec_params = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
EVP_PKEY_CTX_free(genctx);
|
||||
genctx = NULL;
|
||||
|
||||
app_RAND_write_file(randfile, bio_err);
|
||||
|
||||
if (pkey == NULL) goto end;
|
||||
|
||||
if (keyout == NULL)
|
||||
{
|
||||
keyout=NCONF_get_string(req_conf,SECTION,KEYFILE);
|
||||
@@ -895,14 +795,7 @@ loop:
|
||||
BIO_printf(bio_err,"you need to specify a private key\n");
|
||||
goto end;
|
||||
}
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (pkey->type == EVP_PKEY_DSA)
|
||||
digest=EVP_dss1();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (pkey->type == EVP_PKEY_EC)
|
||||
digest=EVP_ecdsa();
|
||||
#endif
|
||||
|
||||
if (req == NULL)
|
||||
{
|
||||
req=X509_REQ_new();
|
||||
@@ -945,7 +838,7 @@ loop:
|
||||
|
||||
if (!X509_set_issuer_name(x509ss, X509_REQ_get_subject_name(req))) goto end;
|
||||
if (!X509_gmtime_adj(X509_get_notBefore(x509ss),0)) goto end;
|
||||
if (!X509_gmtime_adj(X509_get_notAfter(x509ss), (long)60*60*24*days)) goto end;
|
||||
if (!X509_time_adj_ex(X509_get_notAfter(x509ss), days, 0, NULL)) goto end;
|
||||
if (!X509_set_subject_name(x509ss, X509_REQ_get_subject_name(req))) goto end;
|
||||
tmppkey = X509_REQ_get_pubkey(req);
|
||||
if (!tmppkey || !X509_set_pubkey(x509ss,tmppkey)) goto end;
|
||||
@@ -967,7 +860,10 @@ loop:
|
||||
}
|
||||
|
||||
if (!(i=X509_sign(x509ss,pkey,digest)))
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -988,7 +884,10 @@ loop:
|
||||
goto end;
|
||||
}
|
||||
if (!(i=X509_REQ_sign(req,pkey,digest)))
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1125,7 +1024,7 @@ loop:
|
||||
}
|
||||
fprintf(stdout,"Modulus=");
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
if (tpubkey->type == EVP_PKEY_RSA)
|
||||
if (EVP_PKEY_base_id(tpubkey) == EVP_PKEY_RSA)
|
||||
BN_print(out,tpubkey->pkey.rsa->n);
|
||||
else
|
||||
#endif
|
||||
@@ -1181,18 +1080,22 @@ end:
|
||||
BIO_free(in);
|
||||
BIO_free_all(out);
|
||||
EVP_PKEY_free(pkey);
|
||||
if (genctx)
|
||||
EVP_PKEY_CTX_free(genctx);
|
||||
if (pkeyopts)
|
||||
sk_STRING_free(pkeyopts);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (gen_eng)
|
||||
ENGINE_free(gen_eng);
|
||||
#endif
|
||||
if (keyalgstr)
|
||||
OPENSSL_free(keyalgstr);
|
||||
X509_REQ_free(req);
|
||||
X509_free(x509ss);
|
||||
ASN1_INTEGER_free(serial);
|
||||
if(passargin && passin) OPENSSL_free(passin);
|
||||
if(passargout && passout) OPENSSL_free(passout);
|
||||
OBJ_cleanup();
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (dsa_params != NULL) DSA_free(dsa_params);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (ec_params != NULL) EC_KEY_free(ec_params);
|
||||
#endif
|
||||
apps_shutdown();
|
||||
OPENSSL_EXIT(ex);
|
||||
}
|
||||
@@ -1639,24 +1542,6 @@ err:
|
||||
return(0);
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
static int MS_CALLBACK req_cb(int p, int n, BN_GENCB *cb)
|
||||
{
|
||||
char c='*';
|
||||
|
||||
if (p == 0) c='.';
|
||||
if (p == 1) c='+';
|
||||
if (p == 2) c='*';
|
||||
if (p == 3) c='\n';
|
||||
BIO_write(cb->arg,&c,1);
|
||||
(void)BIO_flush(cb->arg);
|
||||
#ifdef LINT
|
||||
p=n;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int req_check_len(int len, int n_min, int n_max)
|
||||
{
|
||||
if ((n_min > 0) && (len < n_min))
|
||||
@@ -1683,3 +1568,182 @@ static int check_end(const char *str, const char *end)
|
||||
tmp = str + slen - elen;
|
||||
return strcmp(tmp, end);
|
||||
}
|
||||
|
||||
static EVP_PKEY_CTX *set_keygen_ctx(BIO *err, const char *gstr, int *pkey_type,
|
||||
long *pkeylen, char **palgnam,
|
||||
ENGINE *keygen_engine)
|
||||
{
|
||||
EVP_PKEY_CTX *gctx = NULL;
|
||||
EVP_PKEY *param = NULL;
|
||||
long keylen = -1;
|
||||
BIO *pbio = NULL;
|
||||
const char *paramfile = NULL;
|
||||
|
||||
if (gstr == NULL)
|
||||
{
|
||||
*pkey_type = EVP_PKEY_RSA;
|
||||
keylen = *pkeylen;
|
||||
}
|
||||
else if (gstr[0] >= '0' && gstr[0] <= '9')
|
||||
{
|
||||
*pkey_type = EVP_PKEY_RSA;
|
||||
keylen = atol(gstr);
|
||||
*pkeylen = keylen;
|
||||
}
|
||||
else if (!strncmp(gstr, "param:", 6))
|
||||
paramfile = gstr + 6;
|
||||
else
|
||||
{
|
||||
const char *p = strchr(gstr, ':');
|
||||
int len;
|
||||
ENGINE *tmpeng;
|
||||
const EVP_PKEY_ASN1_METHOD *ameth;
|
||||
|
||||
if (p)
|
||||
len = p - gstr;
|
||||
else
|
||||
len = strlen(gstr);
|
||||
/* The lookup of a the string will cover all engines so
|
||||
* keep a note of the implementation.
|
||||
*/
|
||||
|
||||
ameth = EVP_PKEY_asn1_find_str(&tmpeng, gstr, len);
|
||||
|
||||
if (!ameth)
|
||||
{
|
||||
BIO_printf(err, "Unknown algorithm %.*s\n", len, gstr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EVP_PKEY_asn1_get0_info(NULL, pkey_type, NULL, NULL, NULL,
|
||||
ameth);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (tmpeng)
|
||||
ENGINE_finish(tmpeng);
|
||||
#endif
|
||||
if (*pkey_type == EVP_PKEY_RSA)
|
||||
{
|
||||
if (p)
|
||||
{
|
||||
keylen = atol(p + 1);
|
||||
*pkeylen = keylen;
|
||||
}
|
||||
}
|
||||
else if (p)
|
||||
paramfile = p + 1;
|
||||
}
|
||||
|
||||
if (paramfile)
|
||||
{
|
||||
pbio = BIO_new_file(paramfile, "r");
|
||||
if (!pbio)
|
||||
{
|
||||
BIO_printf(err, "Can't open parameter file %s\n",
|
||||
paramfile);
|
||||
return NULL;
|
||||
}
|
||||
param = PEM_read_bio_Parameters(pbio, NULL);
|
||||
|
||||
if (!param)
|
||||
{
|
||||
X509 *x;
|
||||
(void)BIO_reset(pbio);
|
||||
x = PEM_read_bio_X509(pbio, NULL, NULL, NULL);
|
||||
if (x)
|
||||
{
|
||||
param = X509_get_pubkey(x);
|
||||
X509_free(x);
|
||||
}
|
||||
}
|
||||
|
||||
BIO_free(pbio);
|
||||
|
||||
if (!param)
|
||||
{
|
||||
BIO_printf(err, "Error reading parameter file %s\n",
|
||||
paramfile);
|
||||
return NULL;
|
||||
}
|
||||
if (*pkey_type == -1)
|
||||
*pkey_type = EVP_PKEY_id(param);
|
||||
else if (*pkey_type != EVP_PKEY_base_id(param))
|
||||
{
|
||||
BIO_printf(err, "Key Type does not match parameters\n");
|
||||
EVP_PKEY_free(param);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (palgnam)
|
||||
{
|
||||
const EVP_PKEY_ASN1_METHOD *ameth;
|
||||
ENGINE *tmpeng;
|
||||
const char *anam;
|
||||
ameth = EVP_PKEY_asn1_find(&tmpeng, *pkey_type);
|
||||
if (!ameth)
|
||||
{
|
||||
BIO_puts(err, "Internal error: can't find key algorithm\n");
|
||||
return NULL;
|
||||
}
|
||||
EVP_PKEY_asn1_get0_info(NULL, NULL, NULL, NULL, &anam, ameth);
|
||||
*palgnam = BUF_strdup(anam);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (tmpeng)
|
||||
ENGINE_finish(tmpeng);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (param)
|
||||
{
|
||||
gctx = EVP_PKEY_CTX_new(param, keygen_engine);
|
||||
*pkeylen = EVP_PKEY_bits(param);
|
||||
EVP_PKEY_free(param);
|
||||
}
|
||||
else
|
||||
gctx = EVP_PKEY_CTX_new_id(*pkey_type, keygen_engine);
|
||||
|
||||
if (!gctx)
|
||||
{
|
||||
BIO_puts(err, "Error allocating keygen context\n");
|
||||
ERR_print_errors(err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (EVP_PKEY_keygen_init(gctx) <= 0)
|
||||
{
|
||||
BIO_puts(err, "Error initializing keygen context\n");
|
||||
ERR_print_errors(err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((*pkey_type == EVP_PKEY_RSA) && (keylen != -1))
|
||||
{
|
||||
if (EVP_PKEY_CTX_set_rsa_keygen_bits(gctx, keylen) <= 0)
|
||||
{
|
||||
BIO_puts(err, "Error setting RSA keysize\n");
|
||||
ERR_print_errors(err);
|
||||
EVP_PKEY_CTX_free(gctx);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return gctx;
|
||||
}
|
||||
|
||||
static int genpkey_cb(EVP_PKEY_CTX *ctx)
|
||||
{
|
||||
char c='*';
|
||||
BIO *b = EVP_PKEY_CTX_get_app_data(ctx);
|
||||
int p;
|
||||
p = EVP_PKEY_CTX_get_keygen_info(ctx, 0);
|
||||
if (p == 0) c='.';
|
||||
if (p == 1) c='+';
|
||||
if (p == 2) c='*';
|
||||
if (p == 3) c='\n';
|
||||
BIO_write(b,&c,1);
|
||||
(void)BIO_flush(b);
|
||||
#ifdef LINT
|
||||
p=n;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
59
apps/rsa.c
59
apps/rsa.c
@@ -115,6 +115,8 @@ int MAIN(int argc, char **argv)
|
||||
#endif
|
||||
int modulus=0;
|
||||
|
||||
int pvk_encr = 2;
|
||||
|
||||
apps_startup();
|
||||
|
||||
if (bio_err == NULL)
|
||||
@@ -177,6 +179,16 @@ int MAIN(int argc, char **argv)
|
||||
pubin=1;
|
||||
else if (strcmp(*argv,"-pubout") == 0)
|
||||
pubout=1;
|
||||
else if (strcmp(*argv,"-RSAPublicKey_in") == 0)
|
||||
pubin = 2;
|
||||
else if (strcmp(*argv,"-RSAPublicKey_out") == 0)
|
||||
pubout = 2;
|
||||
else if (strcmp(*argv,"-pvk-strong") == 0)
|
||||
pvk_encr=2;
|
||||
else if (strcmp(*argv,"-pvk-weak") == 0)
|
||||
pvk_encr=1;
|
||||
else if (strcmp(*argv,"-pvk-none") == 0)
|
||||
pvk_encr=0;
|
||||
else if (strcmp(*argv,"-noout") == 0)
|
||||
noout=1;
|
||||
else if (strcmp(*argv,"-text") == 0)
|
||||
@@ -257,10 +269,23 @@ bad:
|
||||
EVP_PKEY *pkey;
|
||||
|
||||
if (pubin)
|
||||
pkey = load_pubkey(bio_err, infile,
|
||||
(informat == FORMAT_NETSCAPE && sgckey ?
|
||||
FORMAT_IISSGC : informat), 1,
|
||||
{
|
||||
int tmpformat=-1;
|
||||
if (pubin == 2)
|
||||
{
|
||||
if (informat == FORMAT_PEM)
|
||||
tmpformat = FORMAT_PEMRSA;
|
||||
else if (informat == FORMAT_ASN1)
|
||||
tmpformat = FORMAT_ASN1RSA;
|
||||
}
|
||||
else if (informat == FORMAT_NETSCAPE && sgckey)
|
||||
tmpformat = FORMAT_IISSGC;
|
||||
else
|
||||
tmpformat = informat;
|
||||
|
||||
pkey = load_pubkey(bio_err, infile, tmpformat, 1,
|
||||
passin, e, "Public Key");
|
||||
}
|
||||
else
|
||||
pkey = load_key(bio_err, infile,
|
||||
(informat == FORMAT_NETSCAPE && sgckey ?
|
||||
@@ -268,7 +293,7 @@ bad:
|
||||
passin, e, "Private Key");
|
||||
|
||||
if (pkey != NULL)
|
||||
rsa = pkey == NULL ? NULL : EVP_PKEY_get1_RSA(pkey);
|
||||
rsa = EVP_PKEY_get1_RSA(pkey);
|
||||
EVP_PKEY_free(pkey);
|
||||
}
|
||||
|
||||
@@ -346,7 +371,13 @@ bad:
|
||||
}
|
||||
BIO_printf(bio_err,"writing RSA key\n");
|
||||
if (outformat == FORMAT_ASN1) {
|
||||
if(pubout || pubin) i=i2d_RSA_PUBKEY_bio(out,rsa);
|
||||
if(pubout || pubin)
|
||||
{
|
||||
if (pubout == 2)
|
||||
i=i2d_RSAPublicKey_bio(out,rsa);
|
||||
else
|
||||
i=i2d_RSA_PUBKEY_bio(out,rsa);
|
||||
}
|
||||
else i=i2d_RSAPrivateKey_bio(out,rsa);
|
||||
}
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
@@ -370,9 +401,25 @@ bad:
|
||||
#endif
|
||||
else if (outformat == FORMAT_PEM) {
|
||||
if(pubout || pubin)
|
||||
i=PEM_write_bio_RSA_PUBKEY(out,rsa);
|
||||
{
|
||||
if (pubout == 2)
|
||||
i=PEM_write_bio_RSAPublicKey(out,rsa);
|
||||
else
|
||||
i=PEM_write_bio_RSA_PUBKEY(out,rsa);
|
||||
}
|
||||
else i=PEM_write_bio_RSAPrivateKey(out,rsa,
|
||||
enc,NULL,0,NULL,passout);
|
||||
} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
|
||||
EVP_PKEY *pk;
|
||||
pk = EVP_PKEY_new();
|
||||
EVP_PKEY_set1_RSA(pk, rsa);
|
||||
if (outformat == FORMAT_PVK)
|
||||
i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout);
|
||||
else if (pubin || pubout)
|
||||
i = i2b_PublicKey_bio(out, pk);
|
||||
else
|
||||
i = i2b_PrivateKey_bio(out, pk);
|
||||
EVP_PKEY_free(pk);
|
||||
} else {
|
||||
BIO_printf(bio_err,"bad output format specified for outfile\n");
|
||||
goto end;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* rsautl.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2000.
|
||||
*/
|
||||
/* ====================================================================
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
#include <conio.h>
|
||||
#endif
|
||||
|
||||
#ifdef OPENSSL_SYS_MSDOS
|
||||
#if defined(OPENSSL_SYS_MSDOS) && !defined(_WIN32)
|
||||
#define _kbhit kbhit
|
||||
#endif
|
||||
|
||||
@@ -162,7 +162,7 @@ int extract_port(char *str, short *port_ptr);
|
||||
int extract_host_port(char *str,char **host_ptr,unsigned char *ip,short *p);
|
||||
|
||||
long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
|
||||
int argi, long argl, long ret);
|
||||
int argi, long argl, long ret);
|
||||
|
||||
#ifdef HEADER_SSL_H
|
||||
void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret);
|
||||
|
||||
36
apps/s_cb.c
36
apps/s_cb.c
@@ -56,7 +56,7 @@
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -123,6 +123,7 @@
|
||||
|
||||
int verify_depth=0;
|
||||
int verify_error=X509_V_OK;
|
||||
int verify_return_error=0;
|
||||
|
||||
int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
|
||||
{
|
||||
@@ -142,7 +143,8 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
|
||||
X509_verify_cert_error_string(err));
|
||||
if (verify_depth >= depth)
|
||||
{
|
||||
ok=1;
|
||||
if (!verify_return_error)
|
||||
ok=1;
|
||||
verify_error=X509_V_OK;
|
||||
}
|
||||
else
|
||||
@@ -258,7 +260,7 @@ int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key)
|
||||
}
|
||||
|
||||
long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
|
||||
int argi, long argl, long ret)
|
||||
int argi, long argl, long ret)
|
||||
{
|
||||
BIO *out;
|
||||
|
||||
@@ -267,15 +269,15 @@ long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
|
||||
|
||||
if (cmd == (BIO_CB_READ|BIO_CB_RETURN))
|
||||
{
|
||||
BIO_printf(out,"read from %p [%p] (%d bytes => %ld (0x%lX))\n",
|
||||
(void *)bio,argp,argi,ret,ret);
|
||||
BIO_printf(out,"read from %p [%p] (%lu bytes => %ld (0x%lX))\n",
|
||||
(void *)bio,argp,(unsigned long)argi,ret,ret);
|
||||
BIO_dump(out,argp,(int)ret);
|
||||
return(ret);
|
||||
}
|
||||
else if (cmd == (BIO_CB_WRITE|BIO_CB_RETURN))
|
||||
{
|
||||
BIO_printf(out,"write to %p [%p] (%d bytes => %ld (0x%lX))\n",
|
||||
(void *)bio,argp,argi,ret,ret);
|
||||
BIO_printf(out,"write to %p [%p] (%lu bytes => %ld (0x%lX))\n",
|
||||
(void *)bio,argp,(unsigned long)argi,ret,ret);
|
||||
BIO_dump(out,argp,(int)ret);
|
||||
}
|
||||
return(ret);
|
||||
@@ -504,6 +506,21 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
|
||||
case 100:
|
||||
str_details2 = " no_renegotiation";
|
||||
break;
|
||||
case 110:
|
||||
str_details2 = " unsupported_extension";
|
||||
break;
|
||||
case 111:
|
||||
str_details2 = " certificate_unobtainable";
|
||||
break;
|
||||
case 112:
|
||||
str_details2 = " unrecognized_name";
|
||||
break;
|
||||
case 113:
|
||||
str_details2 = " bad_certificate_status_response";
|
||||
break;
|
||||
case 114:
|
||||
str_details2 = " bad_certificate_hash_value";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -621,6 +638,11 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
|
||||
extname = "server ticket";
|
||||
break;
|
||||
|
||||
#ifdef TLSEXT_TYPE_opaque_prf_input
|
||||
case TLSEXT_TYPE_opaque_prf_input:
|
||||
extname = "opaque PRF input";
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
extname = "unknown";
|
||||
|
||||
375
apps/s_client.c
375
apps/s_client.c
@@ -56,7 +56,7 @@
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -108,8 +108,35 @@
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright 2005 Nokia. All rights reserved.
|
||||
*
|
||||
* The portions of the attached software ("Contribution") is developed by
|
||||
* Nokia Corporation and is licensed pursuant to the OpenSSL open source
|
||||
* license.
|
||||
*
|
||||
* The Contribution, originally written by Mika Kousa and Pasi Eronen of
|
||||
* Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
|
||||
* support (see RFC 4279) to OpenSSL.
|
||||
*
|
||||
* No patent licenses or other rights except those expressly stated in
|
||||
* the OpenSSL open source license shall be deemed granted or received
|
||||
* expressly, by implication, estoppel, or otherwise.
|
||||
*
|
||||
* No assurances are provided by Nokia that the Contribution does not
|
||||
* infringe the patent or other intellectual property rights of any third
|
||||
* party or that the license provides you with all the necessary rights
|
||||
* to make use of the Contribution.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
|
||||
* ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
|
||||
* SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
|
||||
* OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
|
||||
* OTHERWISE.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -135,23 +162,19 @@ typedef unsigned int u_int;
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/ocsp.h>
|
||||
#include <openssl/bn.h>
|
||||
#include "s_apps.h"
|
||||
#include "timeouts.h"
|
||||
|
||||
#ifdef OPENSSL_SYS_WINCE
|
||||
/* Windows CE incorrectly defines fileno as returning void*, so to avoid problems below... */
|
||||
#ifdef fileno
|
||||
#undef fileno
|
||||
#endif
|
||||
#define fileno(a) (int)_fileno(a)
|
||||
#endif
|
||||
|
||||
|
||||
#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
|
||||
/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
|
||||
#undef FIONBIO
|
||||
#endif
|
||||
|
||||
#if defined(OPENSSL_SYS_BEOS_R5)
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#undef PROG
|
||||
#define PROG s_client_main
|
||||
|
||||
@@ -166,6 +189,7 @@ typedef unsigned int u_int;
|
||||
|
||||
extern int verify_depth;
|
||||
extern int verify_error;
|
||||
extern int verify_return_error;
|
||||
|
||||
#ifdef FIONBIO
|
||||
static int c_nbio=0;
|
||||
@@ -188,6 +212,69 @@ static BIO *bio_c_out=NULL;
|
||||
static int c_quiet=0;
|
||||
static int c_ign_eof=0;
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
/* Default PSK identity and key */
|
||||
static char *psk_identity="Client_identity";
|
||||
/*char *psk_key=NULL; by default PSK is not used */
|
||||
|
||||
static unsigned int psk_client_cb(SSL *ssl, const char *hint, char *identity,
|
||||
unsigned int max_identity_len, unsigned char *psk,
|
||||
unsigned int max_psk_len)
|
||||
{
|
||||
unsigned int psk_len = 0;
|
||||
int ret;
|
||||
BIGNUM *bn=NULL;
|
||||
|
||||
if (c_debug)
|
||||
BIO_printf(bio_c_out, "psk_client_cb\n");
|
||||
if (!hint)
|
||||
{
|
||||
/* no ServerKeyExchange message*/
|
||||
if (c_debug)
|
||||
BIO_printf(bio_c_out,"NULL received PSK identity hint, continuing anyway\n");
|
||||
}
|
||||
else if (c_debug)
|
||||
BIO_printf(bio_c_out, "Received PSK identity hint '%s'\n", hint);
|
||||
|
||||
/* lookup PSK identity and PSK key based on the given identity hint here */
|
||||
ret = BIO_snprintf(identity, max_identity_len, "%s", psk_identity);
|
||||
if (ret < 0 || (unsigned int)ret > max_identity_len)
|
||||
goto out_err;
|
||||
if (c_debug)
|
||||
BIO_printf(bio_c_out, "created identity '%s' len=%d\n", identity, ret);
|
||||
ret=BN_hex2bn(&bn, psk_key);
|
||||
if (!ret)
|
||||
{
|
||||
BIO_printf(bio_err,"Could not convert PSK key '%s' to BIGNUM\n", psk_key);
|
||||
if (bn)
|
||||
BN_free(bn);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((unsigned int)BN_num_bytes(bn) > max_psk_len)
|
||||
{
|
||||
BIO_printf(bio_err,"psk buffer of callback is too small (%d) for key (%d)\n",
|
||||
max_psk_len, BN_num_bytes(bn));
|
||||
BN_free(bn);
|
||||
return 0;
|
||||
}
|
||||
|
||||
psk_len=BN_bn2bin(bn, psk);
|
||||
BN_free(bn);
|
||||
if (psk_len == 0)
|
||||
goto out_err;
|
||||
|
||||
if (c_debug)
|
||||
BIO_printf(bio_c_out, "created PSK len=%d\n", psk_len);
|
||||
|
||||
return psk_len;
|
||||
out_err:
|
||||
if (c_debug)
|
||||
BIO_printf(bio_err, "Error in PSK client callback\n");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void sc_usage(void)
|
||||
{
|
||||
BIO_printf(bio_err,"usage: s_client args\n");
|
||||
@@ -196,7 +283,7 @@ static void sc_usage(void)
|
||||
BIO_printf(bio_err," -port port - use -connect instead\n");
|
||||
BIO_printf(bio_err," -connect host:port - who to connect to (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR);
|
||||
|
||||
BIO_printf(bio_err," -verify depth - turn on peer certificate verification\n");
|
||||
BIO_printf(bio_err," -verify arg - turn on peer certificate verification\n");
|
||||
BIO_printf(bio_err," -cert arg - certificate file to use, PEM format assumed\n");
|
||||
BIO_printf(bio_err," -certform arg - certificate format (PEM or DER) PEM default\n");
|
||||
BIO_printf(bio_err," -key arg - Private key file to use, in cert file if\n");
|
||||
@@ -221,6 +308,14 @@ static void sc_usage(void)
|
||||
BIO_printf(bio_err," -crlf - convert LF from terminal into CRLF\n");
|
||||
BIO_printf(bio_err," -quiet - no s_client output\n");
|
||||
BIO_printf(bio_err," -ign_eof - ignore input eof (default when -quiet)\n");
|
||||
BIO_printf(bio_err," -no_ign_eof - don't ignore input eof\n");
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
BIO_printf(bio_err," -psk_identity arg - PSK identity\n");
|
||||
BIO_printf(bio_err," -psk arg - PSK in hex (without 0x)\n");
|
||||
# ifndef OPENSSL_NO_JPAKE
|
||||
BIO_printf(bio_err," -jpake arg - JPAKE secret to use\n");
|
||||
# endif
|
||||
#endif
|
||||
BIO_printf(bio_err," -ssl2 - just use SSLv2\n");
|
||||
BIO_printf(bio_err," -ssl3 - just use SSLv3\n");
|
||||
BIO_printf(bio_err," -tls1 - just use TLSv1\n");
|
||||
@@ -234,7 +329,8 @@ static void sc_usage(void)
|
||||
BIO_printf(bio_err," -starttls prot - use the STARTTLS command before starting TLS\n");
|
||||
BIO_printf(bio_err," for those protocols that support it, where\n");
|
||||
BIO_printf(bio_err," 'prot' defines which one to assume. Currently,\n");
|
||||
BIO_printf(bio_err," only \"smtp\", \"pop3\", \"imap\", and \"ftp\" are supported.\n");
|
||||
BIO_printf(bio_err," only \"smtp\", \"pop3\", \"imap\", \"ftp\" and \"xmpp\"\n");
|
||||
BIO_printf(bio_err," are supported.\n");
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n");
|
||||
#endif
|
||||
@@ -270,13 +366,15 @@ static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
|
||||
return SSL_TLSEXT_ERR_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
PROTO_OFF = 0,
|
||||
PROTO_SMTP,
|
||||
PROTO_POP3,
|
||||
PROTO_IMAP,
|
||||
PROTO_FTP
|
||||
PROTO_FTP,
|
||||
PROTO_XMPP
|
||||
};
|
||||
|
||||
int MAIN(int, char **);
|
||||
@@ -284,7 +382,7 @@ int MAIN(int, char **);
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
int off=0;
|
||||
SSL *con=NULL,*con2=NULL;
|
||||
SSL *con=NULL;
|
||||
X509_STORE *store = NULL;
|
||||
int s,k,width,state=0;
|
||||
char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL;
|
||||
@@ -307,22 +405,23 @@ int MAIN(int argc, char **argv)
|
||||
int ret=1,in_init=1,i,nbio_test=0;
|
||||
int starttls_proto = PROTO_OFF;
|
||||
int prexit = 0, vflags = 0;
|
||||
SSL_METHOD *meth=NULL;
|
||||
#ifdef sock_type
|
||||
#undef sock_type
|
||||
#endif
|
||||
int sock_type=SOCK_STREAM;
|
||||
const SSL_METHOD *meth=NULL;
|
||||
int socket_type=SOCK_STREAM;
|
||||
BIO *sbio;
|
||||
char *inrand=NULL;
|
||||
int mbuf_len=0;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
char *engine_id=NULL;
|
||||
char *ssl_client_engine_id=NULL;
|
||||
ENGINE *ssl_client_engine=NULL;
|
||||
#endif
|
||||
ENGINE *e=NULL;
|
||||
#endif
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE)
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
|
||||
struct timeval tv;
|
||||
#if defined(OPENSSL_SYS_BEOS_R5)
|
||||
int stdin_set = 0;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
char *servername = NULL;
|
||||
tlsextctx tlsextcbp =
|
||||
@@ -333,7 +432,10 @@ int MAIN(int argc, char **argv)
|
||||
struct sockaddr peer;
|
||||
int peerlen = sizeof(peer);
|
||||
int enable_timeouts = 0 ;
|
||||
long mtu = 0;
|
||||
long socket_mtu = 0;
|
||||
#ifndef OPENSSL_NO_JPAKE
|
||||
char *jpake_secret = NULL;
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
|
||||
meth=SSLv23_client_method();
|
||||
@@ -423,6 +525,8 @@ int MAIN(int argc, char **argv)
|
||||
vflags |= X509_V_FLAG_CRL_CHECK;
|
||||
else if (strcmp(*argv,"-crl_check_all") == 0)
|
||||
vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL;
|
||||
else if (strcmp(*argv,"-verify_return_error") == 0)
|
||||
verify_return_error = 1;
|
||||
else if (strcmp(*argv,"-prexit") == 0)
|
||||
prexit=1;
|
||||
else if (strcmp(*argv,"-crlf") == 0)
|
||||
@@ -434,6 +538,8 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
else if (strcmp(*argv,"-ign_eof") == 0)
|
||||
c_ign_eof=1;
|
||||
else if (strcmp(*argv,"-no_ign_eof") == 0)
|
||||
c_ign_eof=0;
|
||||
else if (strcmp(*argv,"-pause") == 0)
|
||||
c_Pause=1;
|
||||
else if (strcmp(*argv,"-debug") == 0)
|
||||
@@ -456,6 +562,27 @@ int MAIN(int argc, char **argv)
|
||||
nbio_test=1;
|
||||
else if (strcmp(*argv,"-state") == 0)
|
||||
state=1;
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
else if (strcmp(*argv,"-psk_identity") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
psk_identity=*(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-psk") == 0)
|
||||
{
|
||||
size_t j;
|
||||
|
||||
if (--argc < 1) goto bad;
|
||||
psk_key=*(++argv);
|
||||
for (j = 0; j < strlen(psk_key); j++)
|
||||
{
|
||||
if (isxdigit((int)psk_key[j]))
|
||||
continue;
|
||||
BIO_printf(bio_err,"Not a hex number '%s'\n",*argv);
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SSL2
|
||||
else if (strcmp(*argv,"-ssl2") == 0)
|
||||
meth=SSLv2_client_method();
|
||||
@@ -472,14 +599,14 @@ int MAIN(int argc, char **argv)
|
||||
else if (strcmp(*argv,"-dtls1") == 0)
|
||||
{
|
||||
meth=DTLSv1_client_method();
|
||||
sock_type=SOCK_DGRAM;
|
||||
socket_type=SOCK_DGRAM;
|
||||
}
|
||||
else if (strcmp(*argv,"-timeout") == 0)
|
||||
enable_timeouts=1;
|
||||
else if (strcmp(*argv,"-mtu") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
mtu = atol(*(++argv));
|
||||
socket_mtu = atol(*(++argv));
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(*argv,"-bugs") == 0)
|
||||
@@ -519,6 +646,8 @@ int MAIN(int argc, char **argv)
|
||||
off|=SSL_OP_NO_SSLv3;
|
||||
else if (strcmp(*argv,"-no_ssl2") == 0)
|
||||
off|=SSL_OP_NO_SSLv2;
|
||||
else if (strcmp(*argv,"-no_comp") == 0)
|
||||
{ off|=SSL_OP_NO_COMPRESSION; }
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-no_ticket") == 0)
|
||||
{ off|=SSL_OP_NO_TICKET; }
|
||||
@@ -546,6 +675,8 @@ int MAIN(int argc, char **argv)
|
||||
starttls_proto = PROTO_IMAP;
|
||||
else if (strcmp(*argv,"ftp") == 0)
|
||||
starttls_proto = PROTO_FTP;
|
||||
else if (strcmp(*argv, "xmpp") == 0)
|
||||
starttls_proto = PROTO_XMPP;
|
||||
else
|
||||
goto bad;
|
||||
}
|
||||
@@ -555,6 +686,11 @@ int MAIN(int argc, char **argv)
|
||||
if (--argc < 1) goto bad;
|
||||
engine_id = *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-ssl_client_engine") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
ssl_client_engine_id = *(++argv);
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(*argv,"-rand") == 0)
|
||||
{
|
||||
@@ -568,6 +704,13 @@ int MAIN(int argc, char **argv)
|
||||
servername= *(++argv);
|
||||
/* meth=TLSv1_client_method(); */
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_JPAKE
|
||||
else if (strcmp(*argv,"-jpake") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
jpake_secret = *++argv;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
@@ -585,11 +728,42 @@ bad:
|
||||
goto end;
|
||||
}
|
||||
|
||||
#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
|
||||
if (jpake_secret)
|
||||
{
|
||||
if (psk_key)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't use JPAKE and PSK together\n");
|
||||
goto end;
|
||||
}
|
||||
psk_identity = "JPAKE";
|
||||
}
|
||||
|
||||
if (cipher)
|
||||
{
|
||||
BIO_printf(bio_err, "JPAKE sets cipher to PSK\n");
|
||||
goto end;
|
||||
}
|
||||
cipher = "PSK";
|
||||
#endif
|
||||
|
||||
OpenSSL_add_ssl_algorithms();
|
||||
SSL_load_error_strings();
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine_id, 1);
|
||||
if (ssl_client_engine_id)
|
||||
{
|
||||
ssl_client_engine = ENGINE_by_id(ssl_client_engine_id);
|
||||
if (!ssl_client_engine)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Error getting client auth engine\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
if (!app_passwd(bio_err, passarg, NULL, &pass, NULL))
|
||||
{
|
||||
@@ -657,6 +831,32 @@ bad:
|
||||
goto end;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (ssl_client_engine)
|
||||
{
|
||||
if (!SSL_CTX_set_client_cert_engine(ctx, ssl_client_engine))
|
||||
{
|
||||
BIO_puts(bio_err, "Error setting client auth engine\n");
|
||||
ERR_print_errors(bio_err);
|
||||
ENGINE_free(ssl_client_engine);
|
||||
goto end;
|
||||
}
|
||||
ENGINE_free(ssl_client_engine);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
#ifdef OPENSSL_NO_JPAKE
|
||||
if (psk_key != NULL)
|
||||
#else
|
||||
if (psk_key != NULL || jpake_secret)
|
||||
#endif
|
||||
{
|
||||
if (c_debug)
|
||||
BIO_printf(bio_c_out, "PSK key given or JPAKE in use, setting client callback\n");
|
||||
SSL_CTX_set_psk_client_callback(ctx, psk_client_cb);
|
||||
}
|
||||
#endif
|
||||
if (bugs)
|
||||
SSL_CTX_set_options(ctx,SSL_OP_ALL|off);
|
||||
else
|
||||
@@ -664,7 +864,7 @@ bad:
|
||||
/* DTLS: partial reads end up discarding unread UDP bytes :-(
|
||||
* Setting read ahead solves this problem.
|
||||
*/
|
||||
if (sock_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
|
||||
if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
|
||||
|
||||
if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback);
|
||||
if (cipher != NULL)
|
||||
@@ -736,7 +936,6 @@ bad:
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_KRB5
|
||||
if (con && (con->kssl_ctx = kssl_ctx_new()) != NULL)
|
||||
{
|
||||
@@ -744,10 +943,15 @@ bad:
|
||||
}
|
||||
#endif /* OPENSSL_NO_KRB5 */
|
||||
/* SSL_set_cipher_list(con,"RC4-MD5"); */
|
||||
#if 0
|
||||
#ifdef TLSEXT_TYPE_opaque_prf_input
|
||||
SSL_set_tlsext_opaque_prf_input(con, "Test client", 11);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
re_start:
|
||||
|
||||
if (init_client(&s,host,port,sock_type) == 0)
|
||||
if (init_client(&s,host,port,socket_type) == 0)
|
||||
{
|
||||
BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error());
|
||||
SHUTDOWN(s);
|
||||
@@ -784,7 +988,7 @@ re_start:
|
||||
|
||||
(void)BIO_ctrl_set_connected(sbio, 1, &peer);
|
||||
|
||||
if ( enable_timeouts)
|
||||
if (enable_timeouts)
|
||||
{
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = DGRAM_RCV_TIMEOUT;
|
||||
@@ -795,10 +999,10 @@ re_start:
|
||||
BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
|
||||
}
|
||||
|
||||
if ( mtu > 0)
|
||||
if (socket_mtu > 0)
|
||||
{
|
||||
SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
|
||||
SSL_set_mtu(con, mtu);
|
||||
SSL_set_mtu(con, socket_mtu);
|
||||
}
|
||||
else
|
||||
/* want to do MTU discovery */
|
||||
@@ -807,8 +1011,6 @@ re_start:
|
||||
else
|
||||
sbio=BIO_new_socket(s,BIO_NOCLOSE);
|
||||
|
||||
|
||||
|
||||
if (nbio_test)
|
||||
{
|
||||
BIO *test;
|
||||
@@ -852,6 +1054,10 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_JPAKE
|
||||
if (jpake_secret)
|
||||
jpake_client_auth(bio_c_out, sbio, jpake_secret);
|
||||
#endif
|
||||
|
||||
SSL_set_bio(con,sbio,sbio);
|
||||
SSL_set_connect_state(con);
|
||||
@@ -958,6 +1164,28 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
BIO_printf(sbio,"AUTH TLS\r\n");
|
||||
BIO_read(sbio,sbuf,BUFSIZZ);
|
||||
}
|
||||
if (starttls_proto == PROTO_XMPP)
|
||||
{
|
||||
int seen = 0;
|
||||
BIO_printf(sbio,"<stream:stream "
|
||||
"xmlns:stream='http://etherx.jabber.org/streams' "
|
||||
"xmlns='jabber:client' to='%s' version='1.0'>", host);
|
||||
seen = BIO_read(sbio,mbuf,BUFSIZZ);
|
||||
mbuf[seen] = 0;
|
||||
while (!strstr(mbuf, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'"))
|
||||
{
|
||||
if (strstr(mbuf, "/stream:features>"))
|
||||
goto shut;
|
||||
seen = BIO_read(sbio,mbuf,BUFSIZZ);
|
||||
mbuf[seen] = 0;
|
||||
}
|
||||
BIO_printf(sbio, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>");
|
||||
seen = BIO_read(sbio,sbuf,BUFSIZZ);
|
||||
sbuf[seen] = 0;
|
||||
if (!strstr(sbuf, "<proceed"))
|
||||
goto shut;
|
||||
mbuf[0] = 0;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@@ -975,6 +1203,14 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
if (in_init)
|
||||
{
|
||||
in_init=0;
|
||||
#if 0 /* This test doesn't really work as intended (needs to be fixed) */
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (servername != NULL && !SSL_session_reused(con))
|
||||
{
|
||||
BIO_printf(bio_c_out,"Server did %sacknowledge servername extension.\n",tlsextcbp.ack?"":"not ");
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (sess_out)
|
||||
{
|
||||
BIO *stmp = BIO_new_file(sess_out, "w");
|
||||
@@ -1012,22 +1248,22 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
|
||||
if (!ssl_pending)
|
||||
{
|
||||
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE)
|
||||
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) && !defined (OPENSSL_SYS_BEOS_R5)
|
||||
if (tty_on)
|
||||
{
|
||||
if (read_tty) FD_SET(fileno(stdin),&readfds);
|
||||
if (write_tty) FD_SET(fileno(stdout),&writefds);
|
||||
if (read_tty) openssl_fdset(fileno(stdin),&readfds);
|
||||
if (write_tty) openssl_fdset(fileno(stdout),&writefds);
|
||||
}
|
||||
if (read_ssl)
|
||||
FD_SET(SSL_get_fd(con),&readfds);
|
||||
openssl_fdset(SSL_get_fd(con),&readfds);
|
||||
if (write_ssl)
|
||||
FD_SET(SSL_get_fd(con),&writefds);
|
||||
openssl_fdset(SSL_get_fd(con),&writefds);
|
||||
#else
|
||||
if(!tty_on || !write_tty) {
|
||||
if (read_ssl)
|
||||
FD_SET(SSL_get_fd(con),&readfds);
|
||||
openssl_fdset(SSL_get_fd(con),&readfds);
|
||||
if (write_ssl)
|
||||
FD_SET(SSL_get_fd(con),&writefds);
|
||||
openssl_fdset(SSL_get_fd(con),&writefds);
|
||||
}
|
||||
#endif
|
||||
/* printf("mode tty(%d %d%d) ssl(%d%d)\n",
|
||||
@@ -1072,6 +1308,25 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
} else i=select(width,(void *)&readfds,(void *)&writefds,
|
||||
NULL,NULL);
|
||||
}
|
||||
#elif defined(OPENSSL_SYS_BEOS_R5)
|
||||
/* Under BeOS-R5 the situation is similar to DOS */
|
||||
i=0;
|
||||
stdin_set = 0;
|
||||
(void)fcntl(fileno(stdin), F_SETFL, O_NONBLOCK);
|
||||
if(!write_tty) {
|
||||
if(read_tty) {
|
||||
tv.tv_sec = 1;
|
||||
tv.tv_usec = 0;
|
||||
i=select(width,(void *)&readfds,(void *)&writefds,
|
||||
NULL,&tv);
|
||||
if (read(fileno(stdin), sbuf, 0) >= 0)
|
||||
stdin_set = 1;
|
||||
if (!i && (stdin_set != 1 || !read_tty))
|
||||
continue;
|
||||
} else i=select(width,(void *)&readfds,(void *)&writefds,
|
||||
NULL,NULL);
|
||||
}
|
||||
(void)fcntl(fileno(stdin), F_SETFL, 0);
|
||||
#else
|
||||
i=select(width,(void *)&readfds,(void *)&writefds,
|
||||
NULL,NULL);
|
||||
@@ -1125,6 +1380,7 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
if (cbuf_len != 0)
|
||||
{
|
||||
BIO_printf(bio_c_out,"shutdown\n");
|
||||
ret = 0;
|
||||
goto shut;
|
||||
}
|
||||
else
|
||||
@@ -1152,8 +1408,8 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
goto shut;
|
||||
}
|
||||
}
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE)
|
||||
/* Assume Windows/DOS can always write */
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
|
||||
/* Assume Windows/DOS/BeOS can always write */
|
||||
else if (!ssl_pending && write_tty)
|
||||
#else
|
||||
else if (!ssl_pending && FD_ISSET(fileno(stdout),&writefds))
|
||||
@@ -1162,11 +1418,12 @@ SSL_set_tlsext_status_ids(con, ids);
|
||||
#ifdef CHARSET_EBCDIC
|
||||
ascii2ebcdic(&(sbuf[sbuf_off]),&(sbuf[sbuf_off]),sbuf_len);
|
||||
#endif
|
||||
i=write(fileno(stdout),&(sbuf[sbuf_off]),sbuf_len);
|
||||
i=raw_write_stdout(&(sbuf[sbuf_off]),sbuf_len);
|
||||
|
||||
if (i <= 0)
|
||||
{
|
||||
BIO_printf(bio_c_out,"DONE\n");
|
||||
ret = 0;
|
||||
goto shut;
|
||||
/* goto end; */
|
||||
}
|
||||
@@ -1221,10 +1478,12 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
|
||||
BIO_printf(bio_c_out,"read X BLOCK\n");
|
||||
break;
|
||||
case SSL_ERROR_SYSCALL:
|
||||
BIO_printf(bio_err,"read:errno=%d\n",get_last_socket_error());
|
||||
ret=get_last_socket_error();
|
||||
BIO_printf(bio_err,"read:errno=%d\n",ret);
|
||||
goto shut;
|
||||
case SSL_ERROR_ZERO_RETURN:
|
||||
BIO_printf(bio_c_out,"closed\n");
|
||||
ret=0;
|
||||
goto shut;
|
||||
case SSL_ERROR_SSL:
|
||||
ERR_print_errors(bio_err);
|
||||
@@ -1240,7 +1499,9 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
|
||||
else if ((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0)))
|
||||
#endif
|
||||
#elif defined (OPENSSL_SYS_NETWARE)
|
||||
else if (_kbhit())
|
||||
else if (_kbhit())
|
||||
#elif defined(OPENSSL_SYS_BEOS_R5)
|
||||
else if (stdin_set)
|
||||
#else
|
||||
else if (FD_ISSET(fileno(stdin),&readfds))
|
||||
#endif
|
||||
@@ -1249,7 +1510,7 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
|
||||
{
|
||||
int j, lf_num;
|
||||
|
||||
i=read(fileno(stdin),cbuf,BUFSIZZ/2);
|
||||
i=raw_read_stdin(cbuf,BUFSIZZ/2);
|
||||
lf_num = 0;
|
||||
/* both loops are skipped when i <= 0 */
|
||||
for (j = 0; j < i; j++)
|
||||
@@ -1268,11 +1529,12 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
|
||||
assert(lf_num == 0);
|
||||
}
|
||||
else
|
||||
i=read(fileno(stdin),cbuf,BUFSIZZ);
|
||||
i=raw_read_stdin(cbuf,BUFSIZZ);
|
||||
|
||||
if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'Q')))
|
||||
{
|
||||
BIO_printf(bio_err,"DONE\n");
|
||||
ret=0;
|
||||
goto shut;
|
||||
}
|
||||
|
||||
@@ -1295,14 +1557,20 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
|
||||
read_tty=0;
|
||||
}
|
||||
}
|
||||
|
||||
ret=0;
|
||||
shut:
|
||||
if (in_init)
|
||||
print_stuff(bio_c_out,con,full_log);
|
||||
SSL_shutdown(con);
|
||||
SHUTDOWN(SSL_get_fd(con));
|
||||
ret=0;
|
||||
end:
|
||||
if(prexit) print_stuff(bio_c_out,con,1);
|
||||
if (con != NULL) SSL_free(con);
|
||||
if (con2 != NULL) SSL_free(con2);
|
||||
if (con != NULL)
|
||||
{
|
||||
if (prexit != 0)
|
||||
print_stuff(bio_c_out,con,1);
|
||||
SSL_free(con);
|
||||
}
|
||||
if (ctx != NULL) SSL_CTX_free(ctx);
|
||||
if (cert)
|
||||
X509_free(cert);
|
||||
@@ -1331,7 +1599,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
|
||||
char buf[BUFSIZ];
|
||||
STACK_OF(X509) *sk;
|
||||
STACK_OF(X509_NAME) *sk2;
|
||||
SSL_CIPHER *c;
|
||||
const SSL_CIPHER *c;
|
||||
X509_NAME *xn;
|
||||
int j,i;
|
||||
#ifndef OPENSSL_NO_COMP
|
||||
@@ -1482,4 +1750,5 @@ static int ocsp_resp_cb(SSL *s, void *arg)
|
||||
OCSP_RESPONSE_free(rsp);
|
||||
return 1;
|
||||
}
|
||||
#endif /* ndef OPENSSL_NO_TLSEXT */
|
||||
|
||||
#endif
|
||||
|
||||
322
apps/s_server.c
322
apps/s_server.c
@@ -56,7 +56,7 @@
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -113,6 +113,32 @@
|
||||
* ECC cipher suite support in OpenSSL originally developed by
|
||||
* SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright 2005 Nokia. All rights reserved.
|
||||
*
|
||||
* The portions of the attached software ("Contribution") is developed by
|
||||
* Nokia Corporation and is licensed pursuant to the OpenSSL open source
|
||||
* license.
|
||||
*
|
||||
* The Contribution, originally written by Mika Kousa and Pasi Eronen of
|
||||
* Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
|
||||
* support (see RFC 4279) to OpenSSL.
|
||||
*
|
||||
* No patent licenses or other rights except those expressly stated in
|
||||
* the OpenSSL open source license shall be deemed granted or received
|
||||
* expressly, by implication, estoppel, or otherwise.
|
||||
*
|
||||
* No assurances are provided by Nokia that the Contribution does not
|
||||
* infringe the patent or other intellectual property rights of any third
|
||||
* party or that the license provides you with all the necessary rights
|
||||
* to make use of the Contribution.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
|
||||
* ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
|
||||
* SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
|
||||
* OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
|
||||
* OTHERWISE.
|
||||
*/
|
||||
|
||||
/* Until the key-gen callbacks are modified to use newer prototypes, we allow
|
||||
* deprecated functions for openssl-internal code */
|
||||
@@ -121,11 +147,11 @@
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <openssl/e_os2.h>
|
||||
#ifdef OPENSSL_NO_STDIO
|
||||
#define APPS_WIN16
|
||||
@@ -163,19 +189,15 @@ typedef unsigned int u_int;
|
||||
#include "s_apps.h"
|
||||
#include "timeouts.h"
|
||||
|
||||
#ifdef OPENSSL_SYS_WINCE
|
||||
/* Windows CE incorrectly defines fileno as returning void*, so to avoid problems below... */
|
||||
#ifdef fileno
|
||||
#undef fileno
|
||||
#endif
|
||||
#define fileno(a) (int)_fileno(a)
|
||||
#endif
|
||||
|
||||
#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
|
||||
/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
|
||||
#undef FIONBIO
|
||||
#endif
|
||||
|
||||
#if defined(OPENSSL_SYS_BEOS_R5)
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength);
|
||||
#endif
|
||||
@@ -196,14 +218,6 @@ static DH *get_dh512(void);
|
||||
static void s_server_init(void);
|
||||
#endif
|
||||
|
||||
#ifndef S_ISDIR
|
||||
# if defined(_S_IFMT) && defined(_S_IFDIR)
|
||||
# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR)
|
||||
# else
|
||||
# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DH
|
||||
static unsigned char dh512_p[]={
|
||||
0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75,
|
||||
@@ -245,7 +259,7 @@ static int accept_socket= -1;
|
||||
#undef PROG
|
||||
#define PROG s_server_main
|
||||
|
||||
extern int verify_depth;
|
||||
extern int verify_depth, verify_return_error;
|
||||
|
||||
static char *cipher=NULL;
|
||||
static int s_server_verify=SSL_VERIFY_NONE;
|
||||
@@ -283,12 +297,75 @@ static char *engine_id=NULL;
|
||||
static const char *session_id_prefix=NULL;
|
||||
|
||||
static int enable_timeouts = 0;
|
||||
#ifdef mtu
|
||||
#undef mtu
|
||||
#endif
|
||||
static long mtu;
|
||||
static long socket_mtu;
|
||||
static int cert_chain = 0;
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
static char *psk_identity="Client_identity";
|
||||
char *psk_key=NULL; /* by default PSK is not used */
|
||||
|
||||
static unsigned int psk_server_cb(SSL *ssl, const char *identity,
|
||||
unsigned char *psk, unsigned int max_psk_len)
|
||||
{
|
||||
unsigned int psk_len = 0;
|
||||
int ret;
|
||||
BIGNUM *bn = NULL;
|
||||
|
||||
if (s_debug)
|
||||
BIO_printf(bio_s_out,"psk_server_cb\n");
|
||||
if (!identity)
|
||||
{
|
||||
BIO_printf(bio_err,"Error: client did not send PSK identity\n");
|
||||
goto out_err;
|
||||
}
|
||||
if (s_debug)
|
||||
BIO_printf(bio_s_out,"identity_len=%d identity=%s\n",
|
||||
identity ? (int)strlen(identity) : 0, identity);
|
||||
|
||||
/* here we could lookup the given identity e.g. from a database */
|
||||
if (strcmp(identity, psk_identity) != 0)
|
||||
{
|
||||
BIO_printf(bio_s_out, "PSK error: client identity not found"
|
||||
" (got '%s' expected '%s')\n", identity,
|
||||
psk_identity);
|
||||
goto out_err;
|
||||
}
|
||||
if (s_debug)
|
||||
BIO_printf(bio_s_out, "PSK client identity found\n");
|
||||
|
||||
/* convert the PSK key to binary */
|
||||
ret = BN_hex2bn(&bn, psk_key);
|
||||
if (!ret)
|
||||
{
|
||||
BIO_printf(bio_err,"Could not convert PSK key '%s' to BIGNUM\n", psk_key);
|
||||
if (bn)
|
||||
BN_free(bn);
|
||||
return 0;
|
||||
}
|
||||
if (BN_num_bytes(bn) > (int)max_psk_len)
|
||||
{
|
||||
BIO_printf(bio_err,"psk buffer of callback is too small (%d) for key (%d)\n",
|
||||
max_psk_len, BN_num_bytes(bn));
|
||||
BN_free(bn);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = BN_bn2bin(bn, psk);
|
||||
BN_free(bn);
|
||||
|
||||
if (ret < 0)
|
||||
goto out_err;
|
||||
psk_len = (unsigned int)ret;
|
||||
|
||||
if (s_debug)
|
||||
BIO_printf(bio_s_out, "fetched PSK len=%d\n", psk_len);
|
||||
return psk_len;
|
||||
out_err:
|
||||
if (s_debug)
|
||||
BIO_printf(bio_err, "Error in PSK server callback\n");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MONOLITH
|
||||
static void s_server_init(void)
|
||||
@@ -353,7 +430,7 @@ static void sv_usage(void)
|
||||
#ifndef OPENSSL_NO_ECDH
|
||||
BIO_printf(bio_err," -named_curve arg - Elliptic curve name to use for ephemeral ECDH keys.\n" \
|
||||
" Use \"openssl ecparam -list_curves\" for all names\n" \
|
||||
" (default is sect163r2).\n");
|
||||
" (default is nistp256).\n");
|
||||
#endif
|
||||
#ifdef FIONBIO
|
||||
BIO_printf(bio_err," -nbio - Run with non-blocking IO\n");
|
||||
@@ -370,6 +447,13 @@ static void sv_usage(void)
|
||||
BIO_printf(bio_err," -serverpref - Use server's cipher preferences\n");
|
||||
BIO_printf(bio_err," -quiet - No server output\n");
|
||||
BIO_printf(bio_err," -no_tmp_rsa - Do not generate a tmp RSA key\n");
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
BIO_printf(bio_err," -psk_hint arg - PSK identity hint to use\n");
|
||||
BIO_printf(bio_err," -psk arg - PSK in hex (without 0x)\n");
|
||||
# ifndef OPENSSL_NO_JPAKE
|
||||
BIO_printf(bio_err," -jpake arg - JPAKE secret to use\n");
|
||||
# endif
|
||||
#endif
|
||||
BIO_printf(bio_err," -ssl2 - Just talk SSLv2\n");
|
||||
BIO_printf(bio_err," -ssl3 - Just talk SSLv3\n");
|
||||
BIO_printf(bio_err," -tls1 - Just talk TLSv1\n");
|
||||
@@ -626,7 +710,7 @@ static int cert_status_cb(SSL *s, void *arg)
|
||||
int use_ssl;
|
||||
unsigned char *rspder = NULL;
|
||||
int rspderlen;
|
||||
STACK *aia = NULL;
|
||||
STACK_OF(STRING) *aia = NULL;
|
||||
X509 *x = NULL;
|
||||
X509_STORE_CTX inctx;
|
||||
X509_OBJECT obj;
|
||||
@@ -648,7 +732,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
|
||||
aia = X509_get1_ocsp(x);
|
||||
if (aia)
|
||||
{
|
||||
if (!OCSP_parse_url(sk_value(aia, 0),
|
||||
if (!OCSP_parse_url(sk_STRING_value(aia, 0),
|
||||
&host, &port, &path, &use_ssl))
|
||||
{
|
||||
BIO_puts(err, "cert_status: can't parse AIA URL\n");
|
||||
@@ -656,7 +740,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
|
||||
}
|
||||
if (srctx->verbose)
|
||||
BIO_printf(err, "cert_status: AIA URL: %s\n",
|
||||
sk_value(aia, 0));
|
||||
sk_STRING_value(aia, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -740,8 +824,13 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
|
||||
goto done;
|
||||
}
|
||||
#endif
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
#ifndef OPENSSL_NO_JPAKE
|
||||
static char *jpake_secret = NULL;
|
||||
#endif
|
||||
|
||||
int MAIN(int argc, char *argv[])
|
||||
{
|
||||
X509_STORE *store = NULL;
|
||||
@@ -758,11 +847,9 @@ int MAIN(int argc, char *argv[])
|
||||
int off=0;
|
||||
int no_tmp_rsa=0,no_dhe=0,no_ecdhe=0,nocert=0;
|
||||
int state=0;
|
||||
SSL_METHOD *meth=NULL;
|
||||
int socket_type=SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
const SSL_METHOD *meth=NULL;
|
||||
int socket_type=SOCK_STREAM;
|
||||
ENGINE *e=NULL;
|
||||
#endif
|
||||
char *inrand=NULL;
|
||||
int s_cert_format = FORMAT_PEM, s_key_format = FORMAT_PEM;
|
||||
char *passarg = NULL, *pass = NULL;
|
||||
@@ -774,11 +861,13 @@ int MAIN(int argc, char *argv[])
|
||||
EVP_PKEY *s_key2 = NULL;
|
||||
X509 *s_cert2 = NULL;
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING};
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
/* by default do not send a PSK identity hint */
|
||||
static char *psk_identity_hint=NULL;
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
|
||||
meth=SSLv23_server_method();
|
||||
#elif !defined(OPENSSL_NO_SSL3)
|
||||
@@ -918,6 +1007,8 @@ int MAIN(int argc, char *argv[])
|
||||
{
|
||||
vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL;
|
||||
}
|
||||
else if (strcmp(*argv,"-verify_return_error") == 0)
|
||||
verify_return_error = 1;
|
||||
else if (strcmp(*argv,"-serverpref") == 0)
|
||||
{ off|=SSL_OP_CIPHER_SERVER_PREFERENCE; }
|
||||
else if (strcmp(*argv,"-cipher") == 0)
|
||||
@@ -992,6 +1083,27 @@ int MAIN(int argc, char *argv[])
|
||||
{ no_dhe=1; }
|
||||
else if (strcmp(*argv,"-no_ecdhe") == 0)
|
||||
{ no_ecdhe=1; }
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
else if (strcmp(*argv,"-psk_hint") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
psk_identity_hint= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-psk") == 0)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
if (--argc < 1) goto bad;
|
||||
psk_key=*(++argv);
|
||||
for (i=0; i<strlen(psk_key); i++)
|
||||
{
|
||||
if (isxdigit((int)psk_key[i]))
|
||||
continue;
|
||||
BIO_printf(bio_err,"Not a hex number '%s'\n",*argv);
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(*argv,"-www") == 0)
|
||||
{ www=1; }
|
||||
else if (strcmp(*argv,"-WWW") == 0)
|
||||
@@ -1004,6 +1116,8 @@ int MAIN(int argc, char *argv[])
|
||||
{ off|=SSL_OP_NO_SSLv3; }
|
||||
else if (strcmp(*argv,"-no_tls1") == 0)
|
||||
{ off|=SSL_OP_NO_TLSv1; }
|
||||
else if (strcmp(*argv,"-no_comp") == 0)
|
||||
{ off|=SSL_OP_NO_COMPRESSION; }
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-no_ticket") == 0)
|
||||
{ off|=SSL_OP_NO_TICKET; }
|
||||
@@ -1031,7 +1145,7 @@ int MAIN(int argc, char *argv[])
|
||||
else if (strcmp(*argv,"-mtu") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
mtu = atol(*(++argv));
|
||||
socket_mtu = atol(*(++argv));
|
||||
}
|
||||
else if (strcmp(*argv, "-chain") == 0)
|
||||
cert_chain = 1;
|
||||
@@ -1071,6 +1185,14 @@ int MAIN(int argc, char *argv[])
|
||||
if (--argc < 1) goto bad;
|
||||
s_key_file2= *(++argv);
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
|
||||
else if (strcmp(*argv,"-jpake") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
jpake_secret = *(++argv);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
@@ -1088,6 +1210,26 @@ bad:
|
||||
goto end;
|
||||
}
|
||||
|
||||
#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
|
||||
if (jpake_secret)
|
||||
{
|
||||
if (psk_key)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"Can't use JPAKE and PSK together\n");
|
||||
goto end;
|
||||
}
|
||||
psk_identity = "JPAKE";
|
||||
if (cipher)
|
||||
{
|
||||
BIO_printf(bio_err, "JPAKE sets cipher to PSK\n");
|
||||
goto end;
|
||||
}
|
||||
cipher = "PSK";
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
SSL_load_error_strings();
|
||||
OpenSSL_add_ssl_algorithms();
|
||||
|
||||
@@ -1150,6 +1292,8 @@ bad:
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
if (s_dcert_file)
|
||||
{
|
||||
|
||||
@@ -1268,6 +1412,7 @@ bad:
|
||||
}
|
||||
store = SSL_CTX_get_cert_store(ctx);
|
||||
X509_STORE_set_flags(store, vflags);
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (s_cert2)
|
||||
{
|
||||
@@ -1303,13 +1448,11 @@ bad:
|
||||
if (bugs) SSL_CTX_set_options(ctx2,SSL_OP_ALL);
|
||||
if (hack) SSL_CTX_set_options(ctx2,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);
|
||||
SSL_CTX_set_options(ctx2,off);
|
||||
|
||||
/* DTLS: partial reads end up discarding unread UDP bytes :-(
|
||||
* Setting read ahead solves this problem.
|
||||
*/
|
||||
if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx2, 1);
|
||||
|
||||
|
||||
if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback);
|
||||
|
||||
SSL_CTX_sess_set_cache_size(ctx2,128);
|
||||
@@ -1324,7 +1467,6 @@ bad:
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef OPENSSL_NO_DH
|
||||
if (!no_dhe)
|
||||
{
|
||||
@@ -1400,10 +1542,10 @@ bad:
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_s_out,"Using default temp ECDH parameters\n");
|
||||
ecdh = EC_KEY_new_by_curve_name(NID_sect163r2);
|
||||
ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
|
||||
if (ecdh == NULL)
|
||||
{
|
||||
BIO_printf(bio_err, "unable to create curve (sect163r2)\n");
|
||||
BIO_printf(bio_err, "unable to create curve (nistp256)\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
@@ -1438,7 +1580,7 @@ bad:
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
SSL_CTX_set_tmp_rsa_callback(ctx2,tmp_rsa_cb);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx))
|
||||
@@ -1471,11 +1613,34 @@ bad:
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (cipher != NULL)
|
||||
if(!SSL_CTX_set_cipher_list(ctx,cipher)) {
|
||||
BIO_printf(bio_err,"error setting cipher list\n");
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
#ifdef OPENSSL_NO_JPAKE
|
||||
if (psk_key != NULL)
|
||||
#else
|
||||
if (psk_key != NULL || jpake_secret)
|
||||
#endif
|
||||
{
|
||||
if (s_debug)
|
||||
BIO_printf(bio_s_out, "PSK key given or JPAKE in use, setting server callback\n");
|
||||
SSL_CTX_set_psk_server_callback(ctx, psk_server_cb);
|
||||
}
|
||||
|
||||
if (!SSL_CTX_use_psk_identity_hint(ctx, psk_identity_hint))
|
||||
{
|
||||
BIO_printf(bio_err,"error setting PSK identity hint to context\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cipher != NULL)
|
||||
{
|
||||
if(!SSL_CTX_set_cipher_list(ctx,cipher))
|
||||
{
|
||||
BIO_printf(bio_err,"error setting cipher list\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2 && !SSL_CTX_set_cipher_list(ctx2,cipher))
|
||||
{
|
||||
@@ -1484,7 +1649,7 @@ bad:
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
SSL_CTX_set_verify(ctx,s_server_verify,verify_callback);
|
||||
SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context,
|
||||
sizeof s_server_session_id_context);
|
||||
@@ -1503,6 +1668,7 @@ bad:
|
||||
SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (CAfile != NULL)
|
||||
{
|
||||
SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
|
||||
@@ -1511,7 +1677,9 @@ bad:
|
||||
SSL_CTX_set_client_CA_list(ctx2,SSL_load_client_CA_file(CAfile));
|
||||
#endif
|
||||
}
|
||||
|
||||
BIO_printf(bio_s_out,"ACCEPT\n");
|
||||
(void)BIO_flush(bio_s_out);
|
||||
if (www)
|
||||
do_server(port,socket_type,&accept_socket,www_body, context);
|
||||
else
|
||||
@@ -1582,7 +1750,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
unsigned long l;
|
||||
SSL *con=NULL;
|
||||
BIO *sbio;
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE)
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
|
||||
struct timeval tv;
|
||||
#endif
|
||||
|
||||
@@ -1632,6 +1800,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
strlen((char *)context));
|
||||
}
|
||||
SSL_clear(con);
|
||||
#if 0
|
||||
#ifdef TLSEXT_TYPE_opaque_prf_input
|
||||
SSL_set_tlsext_opaque_prf_input(con, "Test server", 11);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (SSL_version(con) == DTLS1_VERSION)
|
||||
{
|
||||
@@ -1639,7 +1812,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
|
||||
sbio=BIO_new_dgram(s,BIO_NOCLOSE);
|
||||
|
||||
if ( enable_timeouts)
|
||||
if (enable_timeouts)
|
||||
{
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = DGRAM_RCV_TIMEOUT;
|
||||
@@ -1650,11 +1823,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
|
||||
}
|
||||
|
||||
|
||||
if ( mtu > 0)
|
||||
if (socket_mtu > 0)
|
||||
{
|
||||
SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
|
||||
SSL_set_mtu(con, mtu);
|
||||
SSL_set_mtu(con, socket_mtu);
|
||||
}
|
||||
else
|
||||
/* want to do MTU discovery */
|
||||
@@ -1673,6 +1845,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
test=BIO_new(BIO_f_nbio_test());
|
||||
sbio=BIO_push(test,sbio);
|
||||
}
|
||||
#ifndef OPENSSL_NO_JPAKE
|
||||
if(jpake_secret)
|
||||
jpake_server_auth(bio_s_out, sbio, jpake_secret);
|
||||
#endif
|
||||
|
||||
SSL_set_bio(con,sbio,sbio);
|
||||
SSL_set_accept_state(con);
|
||||
/* SSL_set_fd(con,s); */
|
||||
@@ -1708,10 +1885,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
if (!read_from_sslcon)
|
||||
{
|
||||
FD_ZERO(&readfds);
|
||||
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE)
|
||||
FD_SET(fileno(stdin),&readfds);
|
||||
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_BEOS_R5)
|
||||
openssl_fdset(fileno(stdin),&readfds);
|
||||
#endif
|
||||
FD_SET(s,&readfds);
|
||||
openssl_fdset(s,&readfds);
|
||||
/* Note: under VMS with SOCKETSHR the second parameter is
|
||||
* currently of type (int *) whereas under other systems
|
||||
* it is (void *) if you don't have a cast it will choke
|
||||
@@ -1730,6 +1907,17 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
if((i < 0) || (!i && !_kbhit() ) )continue;
|
||||
if(_kbhit())
|
||||
read_from_terminal = 1;
|
||||
#elif defined(OPENSSL_SYS_BEOS_R5)
|
||||
/* Under BeOS-R5 the situation is similar to DOS */
|
||||
tv.tv_sec = 1;
|
||||
tv.tv_usec = 0;
|
||||
(void)fcntl(fileno(stdin), F_SETFL, O_NONBLOCK);
|
||||
i=select(width,(void *)&readfds,NULL,NULL,&tv);
|
||||
if ((i < 0) || (!i && read(fileno(stdin), buf, 0) < 0))
|
||||
continue;
|
||||
if (read(fileno(stdin), buf, 0) >= 0)
|
||||
read_from_terminal = 1;
|
||||
(void)fcntl(fileno(stdin), F_SETFL, 0);
|
||||
#else
|
||||
i=select(width,(void *)&readfds,NULL,NULL,NULL);
|
||||
if (i <= 0) continue;
|
||||
@@ -1745,7 +1933,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
{
|
||||
int j, lf_num;
|
||||
|
||||
i=read(fileno(stdin), buf, bufsize/2);
|
||||
i=raw_read_stdin(buf, bufsize/2);
|
||||
lf_num = 0;
|
||||
/* both loops are skipped when i <= 0 */
|
||||
for (j = 0; j < i; j++)
|
||||
@@ -1764,7 +1952,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
assert(lf_num == 0);
|
||||
}
|
||||
else
|
||||
i=read(fileno(stdin),buf,bufsize);
|
||||
i=raw_read_stdin(buf,bufsize);
|
||||
if (!s_quiet)
|
||||
{
|
||||
if ((i <= 0) || (buf[0] == 'Q'))
|
||||
@@ -1784,6 +1972,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
ret= -11;*/
|
||||
goto err;
|
||||
}
|
||||
|
||||
if ((buf[0] == 'r') &&
|
||||
((buf[1] == '\n') || (buf[1] == '\r')))
|
||||
{
|
||||
@@ -1880,7 +2069,7 @@ again:
|
||||
#ifdef CHARSET_EBCDIC
|
||||
ascii2ebcdic(buf,buf,i);
|
||||
#endif
|
||||
write(fileno(stdout),buf,
|
||||
raw_write_stdout(buf,
|
||||
(unsigned int)i);
|
||||
if (SSL_pending(con)) goto again;
|
||||
break;
|
||||
@@ -1904,13 +2093,16 @@ again:
|
||||
}
|
||||
}
|
||||
err:
|
||||
BIO_printf(bio_s_out,"shutting down SSL\n");
|
||||
if (con != NULL)
|
||||
{
|
||||
BIO_printf(bio_s_out,"shutting down SSL\n");
|
||||
#if 1
|
||||
SSL_set_shutdown(con,SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);
|
||||
SSL_set_shutdown(con,SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);
|
||||
#else
|
||||
SSL_shutdown(con);
|
||||
SSL_shutdown(con);
|
||||
#endif
|
||||
if (con != NULL) SSL_free(con);
|
||||
SSL_free(con);
|
||||
}
|
||||
BIO_printf(bio_s_out,"CONNECTION CLOSED\n");
|
||||
if (buf != NULL)
|
||||
{
|
||||
@@ -2032,9 +2224,8 @@ static int www_body(char *hostname, int s, unsigned char *context)
|
||||
char *buf=NULL;
|
||||
int ret=1;
|
||||
int i,j,k,blank,dot;
|
||||
struct stat st_buf;
|
||||
SSL *con;
|
||||
SSL_CIPHER *c;
|
||||
const SSL_CIPHER *c;
|
||||
BIO *io,*ssl_bio,*sbio;
|
||||
long total_bytes;
|
||||
|
||||
@@ -2304,14 +2495,7 @@ static int www_body(char *hostname, int s, unsigned char *context)
|
||||
#endif
|
||||
|
||||
/* if a directory, do the index thang */
|
||||
if (stat(p,&st_buf) < 0)
|
||||
{
|
||||
BIO_puts(io,text);
|
||||
BIO_printf(io,"Error accessing '%s'\r\n",p);
|
||||
ERR_print_errors(io);
|
||||
break;
|
||||
}
|
||||
if (S_ISDIR(st_buf.st_mode))
|
||||
if (app_isdir(p)>0)
|
||||
{
|
||||
#if 0 /* must check buffer size */
|
||||
strcat(p,"/index.html");
|
||||
|
||||
@@ -231,13 +231,11 @@ static int ssl_sock_init(void)
|
||||
int init_client(int *sock, char *host, int port, int type)
|
||||
{
|
||||
unsigned char ip[4];
|
||||
short p=0;
|
||||
|
||||
if (!host_ip(host,&(ip[0])))
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
if (p != 0) port=p;
|
||||
return(init_client_ip(sock,ip,port,type));
|
||||
}
|
||||
|
||||
@@ -266,7 +264,7 @@ static int init_client_ip(int *sock, unsigned char ip[4], int port, int type)
|
||||
|
||||
if (s == INVALID_SOCKET) { perror("socket"); return(0); }
|
||||
|
||||
#ifndef OPENSSL_SYS_MPE
|
||||
#if defined(SO_KEEPALIVE) && !defined(OPENSSL_SYS_MPE)
|
||||
if (type == SOCK_STREAM)
|
||||
{
|
||||
i=0;
|
||||
@@ -276,7 +274,7 @@ static int init_client_ip(int *sock, unsigned char ip[4], int port, int type)
|
||||
#endif
|
||||
|
||||
if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1)
|
||||
{ close(s); perror("connect"); return(0); }
|
||||
{ closesocket(s); perror("connect"); return(0); }
|
||||
*sock=s;
|
||||
return(1);
|
||||
}
|
||||
@@ -285,7 +283,7 @@ int do_server(int port, int type, int *ret, int (*cb)(char *hostname, int s, uns
|
||||
{
|
||||
int sock;
|
||||
char *name = NULL;
|
||||
int accept_socket;
|
||||
int accept_socket = 0;
|
||||
int i;
|
||||
|
||||
if (!init_server(&accept_socket,port,type)) return(0);
|
||||
|
||||
109
apps/s_time.c
109
apps/s_time.c
@@ -85,54 +85,6 @@
|
||||
#include OPENSSL_UNISTD
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
|
||||
#define TIMES
|
||||
#endif
|
||||
|
||||
#ifndef _IRIX
|
||||
#include <time.h>
|
||||
#endif
|
||||
#ifdef TIMES
|
||||
#include <sys/types.h>
|
||||
#include <sys/times.h>
|
||||
#endif
|
||||
|
||||
/* Depending on the VMS version, the tms structure is perhaps defined.
|
||||
The __TMS macro will show if it was. If it wasn't defined, we should
|
||||
undefine TIMES, since that tells the rest of the program how things
|
||||
should be handled. -- Richard Levitte */
|
||||
#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
|
||||
#undef TIMES
|
||||
#endif
|
||||
|
||||
#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE)
|
||||
#include <sys/timeb.h>
|
||||
#endif
|
||||
|
||||
#if defined(sun) || defined(__ultrix)
|
||||
#define _POSIX_SOURCE
|
||||
#include <limits.h>
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
/* The following if from times(3) man page. It may need to be changed
|
||||
*/
|
||||
#ifndef HZ
|
||||
# ifdef _SC_CLK_TCK
|
||||
# define HZ ((double)sysconf(_SC_CLK_TCK))
|
||||
# else
|
||||
# ifndef CLK_TCK
|
||||
# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
|
||||
# define HZ 100.0
|
||||
# else /* _BSD_CLK_TCK_ */
|
||||
# define HZ ((double)_BSD_CLK_TCK_)
|
||||
# endif
|
||||
# else /* CLK_TCK */
|
||||
# define HZ ((double)CLK_TCK)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#undef PROG
|
||||
#define PROG s_time_main
|
||||
|
||||
@@ -177,7 +129,7 @@ static char *tm_cipher=NULL;
|
||||
static int tm_verify = SSL_VERIFY_NONE;
|
||||
static int maxTime = SECONDS;
|
||||
static SSL_CTX *tm_ctx=NULL;
|
||||
static SSL_METHOD *s_time_meth=NULL;
|
||||
static const SSL_METHOD *s_time_meth=NULL;
|
||||
static char *s_www_path=NULL;
|
||||
static long bytes_read=0;
|
||||
static int st_bugs=0;
|
||||
@@ -372,63 +324,8 @@ bad:
|
||||
|
||||
static double tm_Time_F(int s)
|
||||
{
|
||||
static double ret;
|
||||
#ifdef TIMES
|
||||
static struct tms tstart,tend;
|
||||
|
||||
if(s == START) {
|
||||
times(&tstart);
|
||||
return(0);
|
||||
} else {
|
||||
times(&tend);
|
||||
ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;
|
||||
return((ret == 0.0)?1e-6:ret);
|
||||
return app_tminterval(s,1);
|
||||
}
|
||||
#elif defined(OPENSSL_SYS_NETWARE)
|
||||
static clock_t tstart,tend;
|
||||
|
||||
if (s == START)
|
||||
{
|
||||
tstart=clock();
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
tend=clock();
|
||||
ret=(double)((double)(tend)-(double)(tstart));
|
||||
return((ret < 0.001)?0.001:ret);
|
||||
}
|
||||
#elif defined(OPENSSL_SYS_VXWORKS)
|
||||
{
|
||||
static unsigned long tick_start, tick_end;
|
||||
|
||||
if( s == START )
|
||||
{
|
||||
tick_start = tickGet();
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
tick_end = tickGet();
|
||||
ret = (double)(tick_end - tick_start) / (double)sysClkRateGet();
|
||||
return((ret == 0.0)?1e-6:ret);
|
||||
}
|
||||
}
|
||||
#else /* !times() */
|
||||
static struct timeb tstart,tend;
|
||||
long i;
|
||||
|
||||
if(s == START) {
|
||||
ftime(&tstart);
|
||||
return(0);
|
||||
} else {
|
||||
ftime(&tend);
|
||||
i=(long)tend.millitm-(long)tstart.millitm;
|
||||
ret=((double)(tend.time-tstart.time))+((double)i)/1000.0;
|
||||
return((ret == 0.0)?1e-6:ret);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MAIN - main processing area for client
|
||||
@@ -704,7 +601,7 @@ static SSL *doConnection(SSL *scon)
|
||||
i=SSL_get_fd(serverCon);
|
||||
width=i+1;
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(i,&readfds);
|
||||
openssl_fdset(i,&readfds);
|
||||
/* Note: under VMS with SOCKETSHR the 2nd parameter
|
||||
* is currently of type (int *) whereas under other
|
||||
* systems it is (void *) if you don't have a cast it
|
||||
|
||||
418
apps/smime.c
418
apps/smime.c
@@ -1,5 +1,5 @@
|
||||
/* smime.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project.
|
||||
*/
|
||||
/* ====================================================================
|
||||
@@ -73,11 +73,14 @@ static int save_certs(char *signerfile, STACK_OF(X509) *signers);
|
||||
static int smime_cb(int ok, X509_STORE_CTX *ctx);
|
||||
|
||||
#define SMIME_OP 0x10
|
||||
#define SMIME_IP 0x20
|
||||
#define SMIME_SIGNERS 0x40
|
||||
#define SMIME_ENCRYPT (1 | SMIME_OP)
|
||||
#define SMIME_DECRYPT 2
|
||||
#define SMIME_SIGN (3 | SMIME_OP)
|
||||
#define SMIME_VERIFY 4
|
||||
#define SMIME_PK7OUT 5
|
||||
#define SMIME_DECRYPT (2 | SMIME_IP)
|
||||
#define SMIME_SIGN (3 | SMIME_OP | SMIME_SIGNERS)
|
||||
#define SMIME_VERIFY (4 | SMIME_IP)
|
||||
#define SMIME_PK7OUT (5 | SMIME_IP | SMIME_OP)
|
||||
#define SMIME_RESIGN (6 | SMIME_IP | SMIME_OP | SMIME_SIGNERS)
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
@@ -90,6 +93,7 @@ int MAIN(int argc, char **argv)
|
||||
const char *inmode = "r", *outmode = "w";
|
||||
char *infile = NULL, *outfile = NULL;
|
||||
char *signerfile = NULL, *recipfile = NULL;
|
||||
STACK_OF(STRING) *sksigners = NULL, *skkeys = NULL;
|
||||
char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
|
||||
const EVP_CIPHER *cipher = NULL;
|
||||
PKCS7 *p7 = NULL;
|
||||
@@ -105,6 +109,8 @@ int MAIN(int argc, char **argv)
|
||||
char *passargin = NULL, *passin = NULL;
|
||||
char *inrand = NULL;
|
||||
int need_rand = 0;
|
||||
int indef = 0;
|
||||
const EVP_MD *sign_md = NULL;
|
||||
int informat = FORMAT_SMIME, outformat = FORMAT_SMIME;
|
||||
int keyform = FORMAT_PEM;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
@@ -135,6 +141,8 @@ int MAIN(int argc, char **argv)
|
||||
operation = SMIME_DECRYPT;
|
||||
else if (!strcmp (*args, "-sign"))
|
||||
operation = SMIME_SIGN;
|
||||
else if (!strcmp (*args, "-resign"))
|
||||
operation = SMIME_RESIGN;
|
||||
else if (!strcmp (*args, "-verify"))
|
||||
operation = SMIME_VERIFY;
|
||||
else if (!strcmp (*args, "-pk7out"))
|
||||
@@ -193,205 +201,209 @@ int MAIN(int argc, char **argv)
|
||||
flags |= PKCS7_BINARY;
|
||||
else if (!strcmp (*args, "-nosigs"))
|
||||
flags |= PKCS7_NOSIGS;
|
||||
else if (!strcmp (*args, "-stream"))
|
||||
indef = 1;
|
||||
else if (!strcmp (*args, "-indef"))
|
||||
indef = 1;
|
||||
else if (!strcmp (*args, "-noindef"))
|
||||
indef = 0;
|
||||
else if (!strcmp (*args, "-nooldmime"))
|
||||
flags |= PKCS7_NOOLDMIMETYPE;
|
||||
else if (!strcmp (*args, "-crlfeol"))
|
||||
flags |= PKCS7_CRLFEOL;
|
||||
else if (!strcmp(*args,"-rand"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
inrand = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
args++;
|
||||
inrand = *args;
|
||||
need_rand = 1;
|
||||
}
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if (!strcmp(*args,"-engine"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
engine = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
engine = *++args;
|
||||
}
|
||||
#endif
|
||||
else if (!strcmp(*args,"-passin"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
passargin = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
passargin = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-to"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
to = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
to = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-from"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
from = *args;
|
||||
}
|
||||
else badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
from = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-subject"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
subject = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
subject = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-signer"))
|
||||
{
|
||||
if (args[1])
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
/* If previous -signer argument add signer to list */
|
||||
|
||||
if (signerfile)
|
||||
{
|
||||
args++;
|
||||
signerfile = *args;
|
||||
if (!sksigners)
|
||||
sksigners = sk_STRING_new_null();
|
||||
sk_STRING_push(sksigners, signerfile);
|
||||
if (!keyfile)
|
||||
keyfile = signerfile;
|
||||
if (!skkeys)
|
||||
skkeys = sk_STRING_new_null();
|
||||
sk_STRING_push(skkeys, keyfile);
|
||||
keyfile = NULL;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
signerfile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-recip"))
|
||||
{
|
||||
if (args[1])
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
recipfile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-md"))
|
||||
{
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
sign_md = EVP_get_digestbyname(*++args);
|
||||
if (sign_md == NULL)
|
||||
{
|
||||
args++;
|
||||
recipfile = *args;
|
||||
BIO_printf(bio_err, "Unknown digest %s\n",
|
||||
*args);
|
||||
goto argerr;
|
||||
}
|
||||
else badarg = 1;
|
||||
}
|
||||
else if (!strcmp (*args, "-inkey"))
|
||||
{
|
||||
if (args[1])
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
/* If previous -inkey arument add signer to list */
|
||||
if (keyfile)
|
||||
{
|
||||
args++;
|
||||
keyfile = *args;
|
||||
if (!signerfile)
|
||||
{
|
||||
BIO_puts(bio_err, "Illegal -inkey without -signer\n");
|
||||
goto argerr;
|
||||
}
|
||||
if (!sksigners)
|
||||
sksigners = sk_STRING_new_null();
|
||||
sk_STRING_push(sksigners, signerfile);
|
||||
signerfile = NULL;
|
||||
if (!skkeys)
|
||||
skkeys = sk_STRING_new_null();
|
||||
sk_STRING_push(skkeys, keyfile);
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
}
|
||||
keyfile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-keyform"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
keyform = str2fmt(*args);
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
keyform = str2fmt(*++args);
|
||||
}
|
||||
else if (!strcmp (*args, "-certfile"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
certfile = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
certfile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-CAfile"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
CAfile = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
CAfile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-CApath"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
CApath = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
CApath = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-in"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
infile = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
infile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-inform"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
informat = str2fmt(*args);
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
informat = str2fmt(*++args);
|
||||
}
|
||||
else if (!strcmp (*args, "-outform"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outformat = str2fmt(*args);
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
outformat = str2fmt(*++args);
|
||||
}
|
||||
else if (!strcmp (*args, "-out"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
outfile = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
outfile = *++args;
|
||||
}
|
||||
else if (!strcmp (*args, "-content"))
|
||||
{
|
||||
if (args[1])
|
||||
{
|
||||
args++;
|
||||
contfile = *args;
|
||||
}
|
||||
else
|
||||
badarg = 1;
|
||||
if (!args[1])
|
||||
goto argerr;
|
||||
contfile = *++args;
|
||||
}
|
||||
else if (args_verify(&args, NULL, &badarg, bio_err, &vpm))
|
||||
continue;
|
||||
else
|
||||
else if ((cipher = EVP_get_cipherbyname(*args + 1)) == NULL)
|
||||
badarg = 1;
|
||||
args++;
|
||||
}
|
||||
|
||||
|
||||
if (operation == SMIME_SIGN)
|
||||
if (!(operation & SMIME_SIGNERS) && (skkeys || sksigners))
|
||||
{
|
||||
if (!signerfile)
|
||||
BIO_puts(bio_err, "Multiple signers or keys not allowed\n");
|
||||
goto argerr;
|
||||
}
|
||||
|
||||
if (operation & SMIME_SIGNERS)
|
||||
{
|
||||
/* Check to see if any final signer needs to be appended */
|
||||
if (keyfile && !signerfile)
|
||||
{
|
||||
BIO_puts(bio_err, "Illegal -inkey without -signer\n");
|
||||
goto argerr;
|
||||
}
|
||||
if (signerfile)
|
||||
{
|
||||
if (!sksigners)
|
||||
sksigners = sk_STRING_new_null();
|
||||
sk_STRING_push(sksigners, signerfile);
|
||||
if (!skkeys)
|
||||
skkeys = sk_STRING_new_null();
|
||||
if (!keyfile)
|
||||
keyfile = signerfile;
|
||||
sk_STRING_push(skkeys, keyfile);
|
||||
}
|
||||
if (!sksigners)
|
||||
{
|
||||
BIO_printf(bio_err, "No signer certificate specified\n");
|
||||
badarg = 1;
|
||||
}
|
||||
signerfile = NULL;
|
||||
keyfile = NULL;
|
||||
need_rand = 1;
|
||||
}
|
||||
else if (operation == SMIME_DECRYPT)
|
||||
@@ -416,6 +428,7 @@ int MAIN(int argc, char **argv)
|
||||
|
||||
if (badarg)
|
||||
{
|
||||
argerr:
|
||||
BIO_printf (bio_err, "Usage smime [options] cert.pem ...\n");
|
||||
BIO_printf (bio_err, "where options are\n");
|
||||
BIO_printf (bio_err, "-encrypt encrypt message\n");
|
||||
@@ -499,13 +512,11 @@ int MAIN(int argc, char **argv)
|
||||
|
||||
ret = 2;
|
||||
|
||||
if (operation != SMIME_SIGN)
|
||||
if (!(operation & SMIME_SIGNERS))
|
||||
flags &= ~PKCS7_DETACHED;
|
||||
|
||||
if (operation & SMIME_OP)
|
||||
{
|
||||
if (flags & PKCS7_BINARY)
|
||||
inmode = "rb";
|
||||
if (outformat == FORMAT_ASN1)
|
||||
outmode = "wb";
|
||||
}
|
||||
@@ -513,9 +524,18 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
if (flags & PKCS7_BINARY)
|
||||
outmode = "wb";
|
||||
}
|
||||
|
||||
if (operation & SMIME_IP)
|
||||
{
|
||||
if (informat == FORMAT_ASN1)
|
||||
inmode = "rb";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (flags & PKCS7_BINARY)
|
||||
inmode = "rb";
|
||||
}
|
||||
|
||||
if (operation == SMIME_ENCRYPT)
|
||||
{
|
||||
@@ -545,26 +565,11 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if (signerfile && (operation == SMIME_SIGN))
|
||||
{
|
||||
if (!(signer = load_cert(bio_err,signerfile,FORMAT_PEM, NULL,
|
||||
e, "signer certificate")))
|
||||
{
|
||||
#if 0 /* An appropri message has already been printed */
|
||||
BIO_printf(bio_err, "Can't read signer certificate file %s\n", signerfile);
|
||||
#endif
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
if (certfile)
|
||||
{
|
||||
if (!(other = load_certs(bio_err,certfile,FORMAT_PEM, NULL,
|
||||
e, "certificate file")))
|
||||
{
|
||||
#if 0 /* An appropriate message has already been printed */
|
||||
BIO_printf(bio_err, "Can't read certificate file %s\n", certfile);
|
||||
#endif
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
@@ -575,9 +580,6 @@ int MAIN(int argc, char **argv)
|
||||
if (!(recip = load_cert(bio_err,recipfile,FORMAT_PEM,NULL,
|
||||
e, "recipient certificate file")))
|
||||
{
|
||||
#if 0 /* An appropriate message has alrady been printed */
|
||||
BIO_printf(bio_err, "Can't read recipient certificate file %s\n", recipfile);
|
||||
#endif
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
@@ -615,6 +617,36 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
in = BIO_new_fp(stdin, BIO_NOCLOSE);
|
||||
|
||||
if (operation & SMIME_IP)
|
||||
{
|
||||
if (informat == FORMAT_SMIME)
|
||||
p7 = SMIME_read_PKCS7(in, &indata);
|
||||
else if (informat == FORMAT_PEM)
|
||||
p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL);
|
||||
else if (informat == FORMAT_ASN1)
|
||||
p7 = d2i_PKCS7_bio(in, NULL);
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad input format for PKCS#7 file\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!p7)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading S/MIME message\n");
|
||||
goto end;
|
||||
}
|
||||
if (contfile)
|
||||
{
|
||||
BIO_free(indata);
|
||||
if (!(indata = BIO_new_file(contfile, "rb")))
|
||||
{
|
||||
BIO_printf(bio_err, "Can't read content file %s\n", contfile);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (outfile)
|
||||
{
|
||||
if (!(out = BIO_new_file(outfile, outmode)))
|
||||
@@ -648,43 +680,58 @@ int MAIN(int argc, char **argv)
|
||||
ret = 3;
|
||||
|
||||
if (operation == SMIME_ENCRYPT)
|
||||
p7 = PKCS7_encrypt(encerts, in, cipher, flags);
|
||||
else if (operation == SMIME_SIGN)
|
||||
{
|
||||
/* If detached data and SMIME output enable partial
|
||||
* signing.
|
||||
*/
|
||||
if ((flags & PKCS7_DETACHED) && (outformat == FORMAT_SMIME))
|
||||
if (indef)
|
||||
flags |= PKCS7_STREAM;
|
||||
p7 = PKCS7_sign(signer, key, other, in, flags);
|
||||
p7 = PKCS7_encrypt(encerts, in, cipher, flags);
|
||||
}
|
||||
else
|
||||
else if (operation & SMIME_SIGNERS)
|
||||
{
|
||||
if (informat == FORMAT_SMIME)
|
||||
p7 = SMIME_read_PKCS7(in, &indata);
|
||||
else if (informat == FORMAT_PEM)
|
||||
p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL);
|
||||
else if (informat == FORMAT_ASN1)
|
||||
p7 = d2i_PKCS7_bio(in, NULL);
|
||||
else
|
||||
int i;
|
||||
/* If detached data content we only enable streaming if
|
||||
* S/MIME output format.
|
||||
*/
|
||||
if (operation == SMIME_SIGN)
|
||||
{
|
||||
BIO_printf(bio_err, "Bad input format for PKCS#7 file\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!p7)
|
||||
{
|
||||
BIO_printf(bio_err, "Error reading S/MIME message\n");
|
||||
goto end;
|
||||
}
|
||||
if (contfile)
|
||||
{
|
||||
BIO_free(indata);
|
||||
if (!(indata = BIO_new_file(contfile, "rb")))
|
||||
if (flags & PKCS7_DETACHED)
|
||||
{
|
||||
BIO_printf(bio_err, "Can't read content file %s\n", contfile);
|
||||
goto end;
|
||||
if (outformat == FORMAT_SMIME)
|
||||
flags |= PKCS7_STREAM;
|
||||
}
|
||||
else if (indef)
|
||||
flags |= PKCS7_STREAM;
|
||||
flags |= PKCS7_PARTIAL;
|
||||
p7 = PKCS7_sign(NULL, NULL, other, in, flags);
|
||||
if (!p7)
|
||||
goto end;
|
||||
}
|
||||
else
|
||||
flags |= PKCS7_REUSE_DIGEST;
|
||||
for (i = 0; i < sk_STRING_num(sksigners); i++)
|
||||
{
|
||||
signerfile = sk_STRING_value(sksigners, i);
|
||||
keyfile = sk_STRING_value(skkeys, i);
|
||||
signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
|
||||
e, "signer certificate");
|
||||
if (!signer)
|
||||
goto end;
|
||||
key = load_key(bio_err, keyfile, keyform, 0, passin, e,
|
||||
"signing key file");
|
||||
if (!key)
|
||||
goto end;
|
||||
if (!PKCS7_sign_add_signer(p7, signer, key,
|
||||
sign_md, flags))
|
||||
goto end;
|
||||
X509_free(signer);
|
||||
signer = NULL;
|
||||
EVP_PKEY_free(key);
|
||||
key = NULL;
|
||||
}
|
||||
/* If not streaming or resigning finalize structure */
|
||||
if ((operation == SMIME_SIGN) && !(flags & PKCS7_STREAM))
|
||||
{
|
||||
if (!PKCS7_final(p7, in, flags))
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -734,11 +781,16 @@ int MAIN(int argc, char **argv)
|
||||
if (subject)
|
||||
BIO_printf(out, "Subject: %s\n", subject);
|
||||
if (outformat == FORMAT_SMIME)
|
||||
SMIME_write_PKCS7(out, p7, in, flags);
|
||||
{
|
||||
if (operation == SMIME_RESIGN)
|
||||
SMIME_write_PKCS7(out, p7, indata, flags);
|
||||
else
|
||||
SMIME_write_PKCS7(out, p7, in, flags);
|
||||
}
|
||||
else if (outformat == FORMAT_PEM)
|
||||
PEM_write_bio_PKCS7(out,p7);
|
||||
PEM_write_bio_PKCS7_stream(out, p7, in, flags);
|
||||
else if (outformat == FORMAT_ASN1)
|
||||
i2d_PKCS7_bio(out,p7);
|
||||
i2d_PKCS7_bio_stream(out,p7, in, flags);
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err, "Bad output format for PKCS#7 file\n");
|
||||
@@ -754,6 +806,10 @@ end:
|
||||
sk_X509_pop_free(other, X509_free);
|
||||
if (vpm)
|
||||
X509_VERIFY_PARAM_free(vpm);
|
||||
if (sksigners)
|
||||
sk_STRING_free(sksigners);
|
||||
if (skkeys)
|
||||
sk_STRING_free(skkeys);
|
||||
X509_STORE_free(store);
|
||||
X509_free(cert);
|
||||
X509_free(recip);
|
||||
|
||||
327
apps/speed.c
327
apps/speed.c
@@ -108,53 +108,8 @@
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX)
|
||||
# define USE_TOD
|
||||
#elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
|
||||
# define TIMES
|
||||
#endif
|
||||
#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && !defined(OPENSSL_SYS_VXWORKS) /* FIXME */
|
||||
# define TIMEB
|
||||
#endif
|
||||
|
||||
#if defined(OPENSSL_SYS_NETWARE)
|
||||
#undef TIMES
|
||||
#undef TIMEB
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
#ifndef _IRIX
|
||||
# include <time.h>
|
||||
#endif
|
||||
#ifdef TIMES
|
||||
# include <sys/types.h>
|
||||
# include <sys/times.h>
|
||||
#endif
|
||||
#ifdef USE_TOD
|
||||
# include <sys/time.h>
|
||||
# include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
/* Depending on the VMS version, the tms structure is perhaps defined.
|
||||
The __TMS macro will show if it was. If it wasn't defined, we should
|
||||
undefine TIMES, since that tells the rest of the program how things
|
||||
should be handled. -- Richard Levitte */
|
||||
#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
|
||||
#undef TIMES
|
||||
#endif
|
||||
|
||||
#ifdef TIMEB
|
||||
#include <sys/timeb.h>
|
||||
#endif
|
||||
|
||||
#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE)
|
||||
#error "It seems neither struct tms nor struct timeb is supported in this platform!"
|
||||
#endif
|
||||
|
||||
#if defined(sun) || defined(__ultrix)
|
||||
#define _POSIX_SOURCE
|
||||
#include <limits.h>
|
||||
#include <sys/param.h>
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include <openssl/bn.h>
|
||||
@@ -189,6 +144,9 @@
|
||||
#ifndef OPENSSL_NO_RIPEMD
|
||||
#include <openssl/ripemd.h>
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
#include <openssl/whrlpool.h>
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
#include <openssl/rc4.h>
|
||||
#endif
|
||||
@@ -226,34 +184,6 @@
|
||||
#include <openssl/ecdh.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following "HZ" timing stuff should be sync'd up with the code in
|
||||
* crypto/tmdiff.[ch]. That appears to try to do the same job, though I think
|
||||
* this code is more up to date than libcrypto's so there may be features to
|
||||
* migrate over first. This is used in two places further down AFAICS.
|
||||
* The point is that nothing in openssl actually *uses* that tmdiff stuff, so
|
||||
* either speed.c should be using it or it should go because it's obviously not
|
||||
* useful enough. Anyone want to do a janitorial job on this?
|
||||
*/
|
||||
|
||||
/* The following if from times(3) man page. It may need to be changed */
|
||||
#ifndef HZ
|
||||
# if defined(_SC_CLK_TCK) \
|
||||
&& (!defined(OPENSSL_SYS_VMS) || __CTRL_VER >= 70000000)
|
||||
# define HZ sysconf(_SC_CLK_TCK)
|
||||
# else
|
||||
# ifndef CLK_TCK
|
||||
# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
|
||||
# define HZ 100.0
|
||||
# else /* _BSD_CLK_TCK_ */
|
||||
# define HZ ((double)_BSD_CLK_TCK_)
|
||||
# endif
|
||||
# else /* CLK_TCK */
|
||||
# define HZ ((double)CLK_TCK)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && !defined(OPENSSL_SYS_NETWARE)
|
||||
# define HAVE_FORK 1
|
||||
#endif
|
||||
@@ -262,7 +192,6 @@
|
||||
#define BUFSIZE ((long)1024*8+1)
|
||||
int run=0;
|
||||
|
||||
static char ftime_used = 0, times_used = 0, gettimeofday_used = 0, getrusage_used = 0;
|
||||
static int mr=0;
|
||||
static int usertime=1;
|
||||
|
||||
@@ -275,7 +204,7 @@ static void print_result(int alg,int run_no,int count,double time_used);
|
||||
static int do_multi(int multi);
|
||||
#endif
|
||||
|
||||
#define ALGOR_NUM 28
|
||||
#define ALGOR_NUM 29
|
||||
#define SIZE_NUM 5
|
||||
#define RSA_NUM 4
|
||||
#define DSA_NUM 3
|
||||
@@ -289,7 +218,7 @@ static const char *names[ALGOR_NUM]={
|
||||
"rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
|
||||
"aes-128 cbc","aes-192 cbc","aes-256 cbc",
|
||||
"camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
|
||||
"evp","sha256","sha512",
|
||||
"evp","sha256","sha512","whirlpool",
|
||||
"aes-128 ige","aes-192 ige","aes-256 ige"};
|
||||
static double results[ALGOR_NUM][SIZE_NUM];
|
||||
static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
|
||||
@@ -328,141 +257,46 @@ static SIGRETTYPE sig_done(int sig)
|
||||
#define START 0
|
||||
#define STOP 1
|
||||
|
||||
#if defined(OPENSSL_SYS_NETWARE)
|
||||
#if defined(_WIN32)
|
||||
|
||||
#define SIGALRM
|
||||
static unsigned int lapse,schlock;
|
||||
static void alarm(unsigned int secs) { lapse = secs*1000; }
|
||||
|
||||
static DWORD WINAPI sleepy(VOID *arg)
|
||||
{
|
||||
schlock = 1;
|
||||
Sleep(lapse);
|
||||
run = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* for NetWare the best we can do is use clock() which returns the
|
||||
* time, in hundredths of a second, since the NLM began executing
|
||||
*/
|
||||
static double Time_F(int s)
|
||||
{
|
||||
double ret;
|
||||
|
||||
static clock_t tstart,tend;
|
||||
|
||||
if (s == START)
|
||||
{
|
||||
tstart=clock();
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
tend=clock();
|
||||
ret=(double)((double)(tend)-(double)(tstart));
|
||||
return((ret < 0.001)?0.001:ret);
|
||||
}
|
||||
}
|
||||
if (s == START)
|
||||
{
|
||||
HANDLE thr;
|
||||
schlock = 0;
|
||||
thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL);
|
||||
if (thr==NULL)
|
||||
{
|
||||
DWORD ret=GetLastError();
|
||||
BIO_printf(bio_err,"unable to CreateThread (%d)",ret);
|
||||
ExitProcess(ret);
|
||||
}
|
||||
CloseHandle(thr); /* detach the thread */
|
||||
while (!schlock) Sleep(0); /* scheduler spinlock */
|
||||
}
|
||||
|
||||
return app_tminterval(s,usertime);
|
||||
}
|
||||
#else
|
||||
|
||||
static double Time_F(int s)
|
||||
{
|
||||
double ret;
|
||||
|
||||
#ifdef USE_TOD
|
||||
if(usertime)
|
||||
{
|
||||
static struct rusage tstart,tend;
|
||||
|
||||
getrusage_used = 1;
|
||||
if (s == START)
|
||||
{
|
||||
getrusage(RUSAGE_SELF,&tstart);
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
long i;
|
||||
|
||||
getrusage(RUSAGE_SELF,&tend);
|
||||
i=(long)tend.ru_utime.tv_usec-(long)tstart.ru_utime.tv_usec;
|
||||
ret=((double)(tend.ru_utime.tv_sec-tstart.ru_utime.tv_sec))
|
||||
+((double)i)/1000000.0;
|
||||
return((ret < 0.001)?0.001:ret);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
static struct timeval tstart,tend;
|
||||
long i;
|
||||
|
||||
gettimeofday_used = 1;
|
||||
if (s == START)
|
||||
{
|
||||
gettimeofday(&tstart,NULL);
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
gettimeofday(&tend,NULL);
|
||||
i=(long)tend.tv_usec-(long)tstart.tv_usec;
|
||||
ret=((double)(tend.tv_sec-tstart.tv_sec))+((double)i)/1000000.0;
|
||||
return((ret < 0.001)?0.001:ret);
|
||||
}
|
||||
}
|
||||
#else /* ndef USE_TOD */
|
||||
|
||||
# ifdef TIMES
|
||||
if (usertime)
|
||||
{
|
||||
static struct tms tstart,tend;
|
||||
|
||||
times_used = 1;
|
||||
if (s == START)
|
||||
{
|
||||
times(&tstart);
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
times(&tend);
|
||||
ret = HZ;
|
||||
ret=(double)(tend.tms_utime-tstart.tms_utime) / ret;
|
||||
return((ret < 1e-3)?1e-3:ret);
|
||||
}
|
||||
}
|
||||
# endif /* times() */
|
||||
# if defined(TIMES) && defined(TIMEB)
|
||||
else
|
||||
# endif
|
||||
# ifdef OPENSSL_SYS_VXWORKS
|
||||
{
|
||||
static unsigned long tick_start, tick_end;
|
||||
|
||||
if( s == START )
|
||||
{
|
||||
tick_start = tickGet();
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
tick_end = tickGet();
|
||||
ret = (double)(tick_end - tick_start) / (double)sysClkRateGet();
|
||||
return((ret < 0.001)?0.001:ret);
|
||||
}
|
||||
}
|
||||
# elif defined(TIMEB)
|
||||
{
|
||||
static struct timeb tstart,tend;
|
||||
long i;
|
||||
|
||||
ftime_used = 1;
|
||||
if (s == START)
|
||||
{
|
||||
ftime(&tstart);
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
ftime(&tend);
|
||||
i=(long)tend.millitm-(long)tstart.millitm;
|
||||
ret=((double)(tend.time-tstart.time))+((double)i)/1000.0;
|
||||
return((ret < 0.001)?0.001:ret);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
return app_tminterval(s,usertime);
|
||||
}
|
||||
#endif /* if defined(OPENSSL_SYS_NETWARE) */
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef OPENSSL_NO_ECDH
|
||||
@@ -522,6 +356,9 @@ int MAIN(int argc, char **argv)
|
||||
unsigned char sha512[SHA512_DIGEST_LENGTH];
|
||||
#endif
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
unsigned char whirlpool[WHIRLPOOL_DIGEST_LENGTH];
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RIPEMD
|
||||
unsigned char rmd160[RIPEMD160_DIGEST_LENGTH];
|
||||
#endif
|
||||
@@ -618,9 +455,10 @@ int MAIN(int argc, char **argv)
|
||||
#define D_EVP 22
|
||||
#define D_SHA256 23
|
||||
#define D_SHA512 24
|
||||
#define D_IGE_128_AES 25
|
||||
#define D_IGE_192_AES 26
|
||||
#define D_IGE_256_AES 27
|
||||
#define D_WHIRLPOOL 25
|
||||
#define D_IGE_128_AES 26
|
||||
#define D_IGE_192_AES 27
|
||||
#define D_IGE_256_AES 28
|
||||
double d=0.0;
|
||||
long c[ALGOR_NUM][SIZE_NUM];
|
||||
#define R_DSA_512 0
|
||||
@@ -940,6 +778,10 @@ int MAIN(int argc, char **argv)
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
if (strcmp(*argv,"whirlpool") == 0) doit[D_WHIRLPOOL]=1;
|
||||
else
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RIPEMD
|
||||
if (strcmp(*argv,"ripemd") == 0) doit[D_RMD160]=1;
|
||||
else
|
||||
@@ -1151,12 +993,16 @@ int MAIN(int argc, char **argv)
|
||||
#ifndef OPENSSL_NO_SHA512
|
||||
BIO_printf(bio_err,"sha512 ");
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
BIO_printf(bio_err,"whirlpool");
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RIPEMD160
|
||||
BIO_printf(bio_err,"rmd160");
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_MD2) || !defined(OPENSSL_NO_MDC2) || \
|
||||
!defined(OPENSSL_NO_MD4) || !defined(OPENSSL_NO_MD5) || \
|
||||
!defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160)
|
||||
!defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) || \
|
||||
!defined(OPENSSL_NO_WHIRLPOOL)
|
||||
BIO_printf(bio_err,"\n");
|
||||
#endif
|
||||
|
||||
@@ -1289,11 +1135,6 @@ int MAIN(int argc, char **argv)
|
||||
|
||||
if (usertime == 0 && !mr)
|
||||
BIO_printf(bio_err,"You have chosen to measure elapsed time instead of user CPU time.\n");
|
||||
if (usertime <= 0 && !mr)
|
||||
{
|
||||
BIO_printf(bio_err,"To get the most accurate results, try to run this\n");
|
||||
BIO_printf(bio_err,"program when this computer is idle.\n");
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
for (i=0; i<RSA_NUM; i++)
|
||||
@@ -1403,6 +1244,7 @@ int MAIN(int argc, char **argv)
|
||||
c[D_CBC_256_CML][0]=count;
|
||||
c[D_SHA256][0]=count;
|
||||
c[D_SHA512][0]=count;
|
||||
c[D_WHIRLPOOL][0]=count;
|
||||
c[D_IGE_128_AES][0]=count;
|
||||
c[D_IGE_192_AES][0]=count;
|
||||
c[D_IGE_256_AES][0]=count;
|
||||
@@ -1418,6 +1260,7 @@ int MAIN(int argc, char **argv)
|
||||
c[D_RMD160][i]=c[D_RMD160][0]*4*lengths[0]/lengths[i];
|
||||
c[D_SHA256][i]=c[D_SHA256][0]*4*lengths[0]/lengths[i];
|
||||
c[D_SHA512][i]=c[D_SHA512][0]*4*lengths[0]/lengths[i];
|
||||
c[D_WHIRLPOOL][i]=c[D_WHIRLPOOL][0]*4*lengths[0]/lengths[i];
|
||||
}
|
||||
for (i=1; i<SIZE_NUM; i++)
|
||||
{
|
||||
@@ -1601,7 +1444,9 @@ int MAIN(int argc, char **argv)
|
||||
#else
|
||||
#define COND(c) (run)
|
||||
#define COUNT(d) (count)
|
||||
#ifndef _WIN32
|
||||
signal(SIGALRM,sig_done);
|
||||
#endif
|
||||
#endif /* SIGALRM */
|
||||
|
||||
#ifndef OPENSSL_NO_MD2
|
||||
@@ -1731,8 +1576,23 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
if (doit[D_WHIRLPOOL])
|
||||
{
|
||||
for (j=0; j<SIZE_NUM; j++)
|
||||
{
|
||||
print_message(names[D_WHIRLPOOL],c[D_WHIRLPOOL][j],lengths[j]);
|
||||
Time_F(START);
|
||||
for (count=0,run=1; COND(c[D_WHIRLPOOL][j]); count++)
|
||||
WHIRLPOOL(buf,lengths[j],whirlpool);
|
||||
d=Time_F(STOP);
|
||||
print_result(D_WHIRLPOOL,j,count,d);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_RIPEMD
|
||||
if (doit[D_RMD160])
|
||||
{
|
||||
@@ -1878,6 +1738,8 @@ int MAIN(int argc, char **argv)
|
||||
print_result(D_IGE_256_AES,j,count,d);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
if (doit[D_CBC_128_CML])
|
||||
@@ -2132,7 +1994,7 @@ int MAIN(int argc, char **argv)
|
||||
{
|
||||
ret=RSA_verify(NID_md5_sha1, buf,36, buf2,
|
||||
rsa_num, rsa_key[j]);
|
||||
if (ret == 0)
|
||||
if (ret <= 0)
|
||||
{
|
||||
BIO_printf(bio_err,
|
||||
"RSA verify failure\n");
|
||||
@@ -2490,35 +2352,6 @@ show_res:
|
||||
printf("%s ",BF_options());
|
||||
#endif
|
||||
fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS));
|
||||
printf("available timing options: ");
|
||||
#ifdef TIMES
|
||||
printf("TIMES ");
|
||||
#endif
|
||||
#ifdef TIMEB
|
||||
printf("TIMEB ");
|
||||
#endif
|
||||
#ifdef USE_TOD
|
||||
printf("USE_TOD ");
|
||||
#endif
|
||||
#ifdef HZ
|
||||
#define as_string(s) (#s)
|
||||
{
|
||||
double dbl = HZ;
|
||||
printf("HZ=%g", dbl);
|
||||
}
|
||||
# ifdef _SC_CLK_TCK
|
||||
printf(" [sysconf value]");
|
||||
# endif
|
||||
#endif
|
||||
printf("\n");
|
||||
printf("timing function used: %s%s%s%s%s%s%s\n",
|
||||
(ftime_used ? "ftime" : ""),
|
||||
(ftime_used + times_used > 1 ? "," : ""),
|
||||
(times_used ? "times" : ""),
|
||||
(ftime_used + times_used + gettimeofday_used > 1 ? "," : ""),
|
||||
(gettimeofday_used ? "gettimeofday" : ""),
|
||||
(ftime_used + times_used + gettimeofday_used + getrusage_used > 1 ? "," : ""),
|
||||
(getrusage_used ? "getrusage" : ""));
|
||||
}
|
||||
|
||||
if (pr_header)
|
||||
@@ -2760,6 +2593,8 @@ static int do_multi(int multi)
|
||||
for(n=0 ; n < multi ; ++n)
|
||||
{
|
||||
pipe(fd);
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
if(fork())
|
||||
{
|
||||
close(fd[1]);
|
||||
@@ -2773,6 +2608,7 @@ static int do_multi(int multi)
|
||||
close(fd[1]);
|
||||
mr=1;
|
||||
usertime=0;
|
||||
free(fds);
|
||||
return 0;
|
||||
}
|
||||
printf("Forked child %d\n",n);
|
||||
@@ -2921,7 +2757,10 @@ static int do_multi(int multi)
|
||||
else
|
||||
fprintf(stderr,"Unknown type '%s' from child %d\n",buf,n);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
free(fds);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* apps/spkac.c */
|
||||
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999. Based on an original idea by Massimiliano Pala
|
||||
* (madwolf@openca.org).
|
||||
*/
|
||||
@@ -285,7 +285,7 @@ bad:
|
||||
pkey = NETSCAPE_SPKI_get_pubkey(spki);
|
||||
if(verify) {
|
||||
i = NETSCAPE_SPKI_verify(spki, pkey);
|
||||
if(i) BIO_printf(bio_err, "Signature OK\n");
|
||||
if (i > 0) BIO_printf(bio_err, "Signature OK\n");
|
||||
else {
|
||||
BIO_printf(bio_err, "Signature Failure\n");
|
||||
ERR_print_errors(bio_err);
|
||||
|
||||
195
apps/tsget
Normal file
195
apps/tsget
Normal file
@@ -0,0 +1,195 @@
|
||||
#!/usr/bin/perl -w
|
||||
# Written by Zoltan Glozik <zglozik@stones.com>.
|
||||
# Copyright (c) 2002 The OpenTSA Project. All rights reserved.
|
||||
$::version = '$Id: tsget,v 1.1 2006/02/12 23:11:21 ulf Exp $';
|
||||
|
||||
use strict;
|
||||
use IO::Handle;
|
||||
use Getopt::Std;
|
||||
use File::Basename;
|
||||
use WWW::Curl::easy;
|
||||
|
||||
use vars qw(%options);
|
||||
|
||||
# Callback for reading the body.
|
||||
sub read_body {
|
||||
my ($maxlength, $state) = @_;
|
||||
my $return_data = "";
|
||||
my $data_len = length ${$state->{data}};
|
||||
if ($state->{bytes} < $data_len) {
|
||||
$data_len = $data_len - $state->{bytes};
|
||||
$data_len = $maxlength if $data_len > $maxlength;
|
||||
$return_data = substr ${$state->{data}}, $state->{bytes}, $data_len;
|
||||
$state->{bytes} += $data_len;
|
||||
}
|
||||
return $return_data;
|
||||
}
|
||||
|
||||
# Callback for writing the body into a variable.
|
||||
sub write_body {
|
||||
my ($data, $pointer) = @_;
|
||||
${$pointer} .= $data;
|
||||
return length($data);
|
||||
}
|
||||
|
||||
# Initialise a new Curl object.
|
||||
sub create_curl {
|
||||
my $url = shift;
|
||||
|
||||
# Create Curl object.
|
||||
my $curl = WWW::Curl::easy::new();
|
||||
|
||||
# Error-handling related options.
|
||||
$curl->setopt(CURLOPT_VERBOSE, 1) if $options{d};
|
||||
$curl->setopt(CURLOPT_FAILONERROR, 1);
|
||||
$curl->setopt(CURLOPT_USERAGENT, "OpenTSA tsget.pl/" . (split / /, $::version)[2]);
|
||||
|
||||
# Options for POST method.
|
||||
$curl->setopt(CURLOPT_UPLOAD, 1);
|
||||
$curl->setopt(CURLOPT_CUSTOMREQUEST, "POST");
|
||||
$curl->setopt(CURLOPT_HTTPHEADER,
|
||||
["Content-Type: application/timestamp-query",
|
||||
"Accept: application/timestamp-reply"]);
|
||||
$curl->setopt(CURLOPT_READFUNCTION, \&read_body);
|
||||
$curl->setopt(CURLOPT_HEADERFUNCTION, sub { return length($_[0]); });
|
||||
|
||||
# Options for getting the result.
|
||||
$curl->setopt(CURLOPT_WRITEFUNCTION, \&write_body);
|
||||
|
||||
# SSL related options.
|
||||
$curl->setopt(CURLOPT_SSLKEYTYPE, "PEM");
|
||||
$curl->setopt(CURLOPT_SSL_VERIFYPEER, 1); # Verify server's certificate.
|
||||
$curl->setopt(CURLOPT_SSL_VERIFYHOST, 2); # Check server's CN.
|
||||
$curl->setopt(CURLOPT_SSLKEY, $options{k}) if defined($options{k});
|
||||
$curl->setopt(CURLOPT_SSLKEYPASSWD, $options{p}) if defined($options{p});
|
||||
$curl->setopt(CURLOPT_SSLCERT, $options{c}) if defined($options{c});
|
||||
$curl->setopt(CURLOPT_CAINFO, $options{C}) if defined($options{C});
|
||||
$curl->setopt(CURLOPT_CAPATH, $options{P}) if defined($options{P});
|
||||
$curl->setopt(CURLOPT_RANDOM_FILE, $options{r}) if defined($options{r});
|
||||
$curl->setopt(CURLOPT_EGDSOCKET, $options{g}) if defined($options{g});
|
||||
|
||||
# Setting destination.
|
||||
$curl->setopt(CURLOPT_URL, $url);
|
||||
|
||||
return $curl;
|
||||
}
|
||||
|
||||
# Send a request and returns the body back.
|
||||
sub get_timestamp {
|
||||
my $curl = shift;
|
||||
my $body = shift;
|
||||
my $ts_body;
|
||||
local $::error_buf;
|
||||
|
||||
# Error-handling related options.
|
||||
$curl->setopt(CURLOPT_ERRORBUFFER, "::error_buf");
|
||||
|
||||
# Options for POST method.
|
||||
$curl->setopt(CURLOPT_INFILE, {data => $body, bytes => 0});
|
||||
$curl->setopt(CURLOPT_INFILESIZE, length(${$body}));
|
||||
|
||||
# Options for getting the result.
|
||||
$curl->setopt(CURLOPT_FILE, \$ts_body);
|
||||
|
||||
# Send the request...
|
||||
my $error_code = $curl->perform();
|
||||
my $error_string;
|
||||
if ($error_code != 0) {
|
||||
my $http_code = $curl->getinfo(CURLINFO_HTTP_CODE);
|
||||
$error_string = "could not get timestamp";
|
||||
$error_string .= ", http code: $http_code" unless $http_code == 0;
|
||||
$error_string .= ", curl code: $error_code";
|
||||
$error_string .= " ($::error_buf)" if defined($::error_buf);
|
||||
} else {
|
||||
my $ct = $curl->getinfo(CURLINFO_CONTENT_TYPE);
|
||||
if (lc($ct) ne "application/timestamp-reply") {
|
||||
$error_string = "unexpected content type returned: $ct";
|
||||
}
|
||||
}
|
||||
return ($ts_body, $error_string);
|
||||
|
||||
}
|
||||
|
||||
# Print usage information and exists.
|
||||
sub usage {
|
||||
|
||||
print STDERR "usage: $0 -h <server_url> [-e <extension>] [-o <output>] ";
|
||||
print STDERR "[-v] [-d] [-k <private_key.pem>] [-p <key_password>] ";
|
||||
print STDERR "[-c <client_cert.pem>] [-C <CA_certs.pem>] [-P <CA_path>] ";
|
||||
print STDERR "[-r <file:file...>] [-g <EGD_socket>] [<request>]...\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Main program
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# Getting command-line options (default comes from TSGET environment variable).
|
||||
my $getopt_arg = "h:e:o:vdk:p:c:C:P:r:g:";
|
||||
if (exists $ENV{TSGET}) {
|
||||
my @old_argv = @ARGV;
|
||||
@ARGV = split /\s+/, $ENV{TSGET};
|
||||
getopts($getopt_arg, \%options) or usage;
|
||||
@ARGV = @old_argv;
|
||||
}
|
||||
getopts($getopt_arg, \%options) or usage;
|
||||
|
||||
# Checking argument consistency.
|
||||
if (!exists($options{h}) || (@ARGV == 0 && !exists($options{o}))
|
||||
|| (@ARGV > 1 && exists($options{o}))) {
|
||||
print STDERR "Inconsistent command line options.\n";
|
||||
usage;
|
||||
}
|
||||
# Setting defaults.
|
||||
@ARGV = ("-") unless @ARGV != 0;
|
||||
$options{e} = ".tsr" unless defined($options{e});
|
||||
|
||||
# Processing requests.
|
||||
my $curl = create_curl $options{h};
|
||||
undef $/; # For reading whole files.
|
||||
REQUEST: foreach (@ARGV) {
|
||||
my $input = $_;
|
||||
my ($base, $path) = fileparse($input, '\.[^.]*');
|
||||
my $output_base = $base . $options{e};
|
||||
my $output = defined($options{o}) ? $options{o} : $path . $output_base;
|
||||
|
||||
STDERR->printflush("$input: ") if $options{v};
|
||||
# Read request.
|
||||
my $body;
|
||||
if ($input eq "-") {
|
||||
# Read the request from STDIN;
|
||||
$body = <STDIN>;
|
||||
} else {
|
||||
# Read the request from file.
|
||||
open INPUT, "<" . $input
|
||||
or warn("$input: could not open input file: $!\n"), next REQUEST;
|
||||
$body = <INPUT>;
|
||||
close INPUT
|
||||
or warn("$input: could not close input file: $!\n"), next REQUEST;
|
||||
}
|
||||
|
||||
# Send request.
|
||||
STDERR->printflush("sending request") if $options{v};
|
||||
|
||||
my ($ts_body, $error) = get_timestamp $curl, \$body;
|
||||
if (defined($error)) {
|
||||
die "$input: fatal error: $error\n";
|
||||
}
|
||||
STDERR->printflush(", reply received") if $options{v};
|
||||
|
||||
# Write response.
|
||||
if ($output eq "-") {
|
||||
# Write to STDOUT.
|
||||
print $ts_body;
|
||||
} else {
|
||||
# Write to file.
|
||||
open OUTPUT, ">", $output
|
||||
or warn("$output: could not open output file: $!\n"), next REQUEST;
|
||||
print OUTPUT $ts_body;
|
||||
close OUTPUT
|
||||
or warn("$output: could not close output file: $!\n"), next REQUEST;
|
||||
}
|
||||
STDERR->printflush(", $output written.\n") if $options{v};
|
||||
}
|
||||
$curl->cleanup();
|
||||
WWW::Curl::easy::global_cleanup();
|
||||
@@ -266,7 +266,7 @@ static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X
|
||||
|
||||
ret=0;
|
||||
end:
|
||||
if (i)
|
||||
if (i > 0)
|
||||
{
|
||||
fprintf(stdout,"OK\n");
|
||||
ret=1;
|
||||
@@ -367,4 +367,3 @@ static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx)
|
||||
ERR_clear_error();
|
||||
return(ok);
|
||||
}
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ int MAIN(int argc, char **argv)
|
||||
date=version=cflags=options=platform=dir=1;
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err,"usage:version -[avbofp]\n");
|
||||
BIO_printf(bio_err,"usage:version -[avbofpd]\n");
|
||||
ret=1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
61
apps/x509.c
61
apps/x509.c
@@ -114,7 +114,7 @@ static const char *x509_usage[]={
|
||||
" -alias - output certificate alias\n",
|
||||
" -noout - no certificate output\n",
|
||||
" -ocspid - print OCSP hash values for the subject name and public key\n",
|
||||
" -ocspurl - print OCSP Responder URL(s)\n",
|
||||
" -ocsp_uri - print OCSP Responder URL(s)\n",
|
||||
" -trustout - output a \"trusted\" certificate\n",
|
||||
" -clrtrust - clear all trusted purposes\n",
|
||||
" -clrreject - clear all rejected purposes\n",
|
||||
@@ -190,7 +190,7 @@ int MAIN(int argc, char **argv)
|
||||
X509_REQ *rq=NULL;
|
||||
int fingerprint=0;
|
||||
char buf[256];
|
||||
const EVP_MD *md_alg,*digest=EVP_sha1();
|
||||
const EVP_MD *md_alg,*digest=NULL;
|
||||
CONF *extconf = NULL;
|
||||
char *extsect = NULL, *extfile = NULL, *passin = NULL, *passargin = NULL;
|
||||
int need_rand = 0;
|
||||
@@ -738,13 +738,14 @@ bad:
|
||||
else if ((email == i) || (ocsp_uri == i))
|
||||
{
|
||||
int j;
|
||||
STACK *emlst;
|
||||
STACK_OF(STRING) *emlst;
|
||||
if (email == i)
|
||||
emlst = X509_get1_email(x);
|
||||
else
|
||||
emlst = X509_get1_ocsp(x);
|
||||
for (j = 0; j < sk_num(emlst); j++)
|
||||
BIO_printf(STDout, "%s\n", sk_value(emlst, j));
|
||||
for (j = 0; j < sk_STRING_num(emlst); j++)
|
||||
BIO_printf(STDout, "%s\n",
|
||||
sk_STRING_value(emlst, j));
|
||||
X509_email_free(emlst);
|
||||
}
|
||||
else if (aliasout == i)
|
||||
@@ -892,14 +893,18 @@ bad:
|
||||
int j;
|
||||
unsigned int n;
|
||||
unsigned char md[EVP_MAX_MD_SIZE];
|
||||
const EVP_MD *fdig = digest;
|
||||
|
||||
if (!X509_digest(x,digest,md,&n))
|
||||
if (!fdig)
|
||||
fdig = EVP_sha1();
|
||||
|
||||
if (!X509_digest(x,fdig,md,&n))
|
||||
{
|
||||
BIO_printf(bio_err,"out of memory\n");
|
||||
goto end;
|
||||
}
|
||||
BIO_printf(STDout,"%s Fingerprint=",
|
||||
OBJ_nid2sn(EVP_MD_type(digest)));
|
||||
OBJ_nid2sn(EVP_MD_type(fdig)));
|
||||
for (j=0; j<(int)n; j++)
|
||||
{
|
||||
BIO_printf(STDout,"%02X%c",md[j],
|
||||
@@ -919,14 +924,6 @@ bad:
|
||||
passin, e, "Private key");
|
||||
if (Upkey == NULL) goto end;
|
||||
}
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (Upkey->type == EVP_PKEY_DSA)
|
||||
digest=EVP_dss1();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (Upkey->type == EVP_PKEY_EC)
|
||||
digest=EVP_ecdsa();
|
||||
#endif
|
||||
|
||||
assert(need_rand);
|
||||
if (!sign(x,Upkey,days,clrext,digest,
|
||||
@@ -943,14 +940,6 @@ bad:
|
||||
"CA Private Key");
|
||||
if (CApkey == NULL) goto end;
|
||||
}
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (CApkey->type == EVP_PKEY_DSA)
|
||||
digest=EVP_dss1();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (CApkey->type == EVP_PKEY_EC)
|
||||
digest = EVP_ecdsa();
|
||||
#endif
|
||||
|
||||
assert(need_rand);
|
||||
if (!x509_certify(ctx,CAfile,digest,x,xca,
|
||||
@@ -978,15 +967,6 @@ bad:
|
||||
|
||||
BIO_printf(bio_err,"Generating certificate request\n");
|
||||
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (pk->type == EVP_PKEY_DSA)
|
||||
digest=EVP_dss1();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (pk->type == EVP_PKEY_EC)
|
||||
digest=EVP_ecdsa();
|
||||
#endif
|
||||
|
||||
rq=X509_to_X509_REQ(x,pk,digest);
|
||||
EVP_PKEY_free(pk);
|
||||
if (rq == NULL)
|
||||
@@ -1040,16 +1020,15 @@ bad:
|
||||
}
|
||||
else if (outformat == FORMAT_NETSCAPE)
|
||||
{
|
||||
ASN1_HEADER ah;
|
||||
ASN1_OCTET_STRING os;
|
||||
NETSCAPE_X509 nx;
|
||||
ASN1_OCTET_STRING hdr;
|
||||
|
||||
os.data=(unsigned char *)NETSCAPE_CERT_HDR;
|
||||
os.length=strlen(NETSCAPE_CERT_HDR);
|
||||
ah.header= &os;
|
||||
ah.data=(char *)x;
|
||||
ah.meth=X509_asn1_meth();
|
||||
hdr.data=(unsigned char *)NETSCAPE_CERT_HDR;
|
||||
hdr.length=strlen(NETSCAPE_CERT_HDR);
|
||||
nx.header= &hdr;
|
||||
nx.cert=x;
|
||||
|
||||
i=ASN1_i2d_bio_of(ASN1_HEADER,i2d_ASN1_HEADER,out,&ah);
|
||||
i=ASN1_item_i2d_bio(ASN1_ITEM_rptr(NETSCAPE_X509),out,&nx);
|
||||
}
|
||||
else {
|
||||
BIO_printf(bio_err,"bad output format specified for outfile\n");
|
||||
@@ -1151,7 +1130,7 @@ static int x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest,
|
||||
/* NOTE: this certificate can/should be self signed, unless it was
|
||||
* a certificate request in which case it is not. */
|
||||
X509_STORE_CTX_set_cert(&xsc,x);
|
||||
if (!reqfile && !X509_verify_cert(&xsc))
|
||||
if (!reqfile && X509_verify_cert(&xsc) <= 0)
|
||||
goto end;
|
||||
|
||||
if (!X509_check_private_key(xca,pkey))
|
||||
|
||||
59
config
59
config
@@ -122,6 +122,14 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
|
||||
echo "${MACHINE}-ibm-aix3"; exit 0
|
||||
;;
|
||||
|
||||
BeOS:*:BePC)
|
||||
if [ -e /boot/develop/headers/be/bone ]; then
|
||||
echo "beos-x86-bone"; exit 0
|
||||
else
|
||||
echo "beos-x86-r5"; exit 0
|
||||
fi
|
||||
;;
|
||||
|
||||
dgux:*)
|
||||
echo "${MACHINE}-dg-dgux"; exit 0
|
||||
;;
|
||||
@@ -270,7 +278,7 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
|
||||
echo "ppc-apple-darwin${VERSION}"
|
||||
;;
|
||||
*)
|
||||
echo "i386-apple-darwin${VERSION}"
|
||||
echo "i686-apple-darwin${VERSION}"
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
@@ -399,11 +407,8 @@ exit 0
|
||||
# this is where the translation occurs into SSLeay terms
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# figure out if gcc is available and if so we use it otherwise
|
||||
# we fallback to whatever cc does on the system
|
||||
GCCVER=`(gcc -dumpversion) 2>/dev/null`
|
||||
if [ "$GCCVER" != "" ]; then
|
||||
CC=gcc
|
||||
# then strip off whatever prefix egcs prepends the number with...
|
||||
# Hopefully, this will work for any future prefixes as well.
|
||||
GCCVER=`echo $GCCVER | LC_ALL=C sed 's/^[a-zA-Z]*\-//'`
|
||||
@@ -412,8 +417,17 @@ if [ "$GCCVER" != "" ]; then
|
||||
# major and minor version numbers.
|
||||
# peak single digit before and after first dot, e.g. 2.95.1 gives 29
|
||||
GCCVER=`echo $GCCVER | sed 's/\([0-9]\)\.\([0-9]\).*/\1\2/'`
|
||||
else
|
||||
CC=cc
|
||||
fi
|
||||
|
||||
# Only set CC if not supplied already
|
||||
if [ -z "$CC" ]; then
|
||||
# figure out if gcc is available and if so we use it otherwise
|
||||
# we fallback to whatever cc does on the system
|
||||
if [ "$GCCVER" != "" ]; then
|
||||
CC=gcc
|
||||
else
|
||||
CC=cc
|
||||
fi
|
||||
fi
|
||||
GCCVER=${GCCVER:-0}
|
||||
if [ "$SYSTEM" = "HP-UX" ];then
|
||||
@@ -517,8 +531,28 @@ case "$GUESSOS" in
|
||||
OUT="irix-mips3-$CC"
|
||||
;;
|
||||
ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
|
||||
ppc-apple-darwin*) OUT="darwin-ppc-cc" ;;
|
||||
i386-apple-darwin*) OUT="darwin-i386-cc" ;;
|
||||
ppc-apple-darwin*)
|
||||
ISA64=`(sysctl -n hw.optional.64bitops) 2>/dev/null`
|
||||
if [ "$ISA64" = "1" ]; then
|
||||
echo "WARNING! If you wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure darwin64-ppc-cc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
fi
|
||||
OUT="darwin-ppc-cc" ;;
|
||||
i?86-apple-darwin*)
|
||||
ISA64=`(sysctl -n hw.optional.x86_64) 2>/dev/null`
|
||||
if [ "$ISA64" = "1" ]; then
|
||||
echo "WARNING! If you wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure darwin64-x86_64-cc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
fi
|
||||
OUT="darwin-i386-cc" ;;
|
||||
alpha-*-linux2)
|
||||
ISA=`awk '/cpu model/{print$4;exit(0);}' /proc/cpuinfo`
|
||||
case ${ISA:-generic} in
|
||||
@@ -583,13 +617,13 @@ case "$GUESSOS" in
|
||||
|
||||
options="$options -DB_ENDIAN -mschedule=$CPUSCHEDULE -march=$CPUARCH"
|
||||
OUT="linux-generic32" ;;
|
||||
arm*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
|
||||
arm*l-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
|
||||
armv[1-3]*-*-linux2) OUT="linux-generic32" ;;
|
||||
arm*-*-linux2) OUT="linux-armv4" ;;
|
||||
sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
|
||||
sh*-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
|
||||
m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
|
||||
s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN -DNO_ASM" ;;
|
||||
s390x-*-linux2) OUT="linux-generic64"; options="$options -DB_ENDIAN" ;;
|
||||
s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
|
||||
s390x-*-linux2) OUT="linux-s390x" ;;
|
||||
x86_64-*-linux?) OUT="linux-x86_64" ;;
|
||||
*86-*-linux2) OUT="linux-elf"
|
||||
if [ "$GCCVER" -gt 28 ]; then
|
||||
@@ -763,6 +797,7 @@ case "$GUESSOS" in
|
||||
t3e-cray-unicosmk) OUT="cray-t3e" ;;
|
||||
j90-cray-unicos) OUT="cray-j90" ;;
|
||||
nsr-tandem-nsk) OUT="tandem-c89" ;;
|
||||
beos-*) OUT="$GUESSOS" ;;
|
||||
*) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -4,4 +4,5 @@ opensslconf.h
|
||||
Makefile.save
|
||||
*.flc
|
||||
semantic.cache
|
||||
x86cpuid-elf.s
|
||||
*cpuid.s
|
||||
uplink-cof.s
|
||||
|
||||
@@ -54,8 +54,6 @@ struct LP_dir_context_st
|
||||
|
||||
const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
|
||||
{
|
||||
struct dirent *direntry = NULL;
|
||||
|
||||
if (ctx == NULL || directory == NULL)
|
||||
{
|
||||
errno = EINVAL;
|
||||
|
||||
@@ -7,7 +7,7 @@ TOP= ..
|
||||
CC= cc
|
||||
INCLUDE= -I. -I$(TOP) -I../include
|
||||
# INCLUDES targets sudbirs!
|
||||
INCLUDES= -I.. -I../.. -I../../include
|
||||
INCLUDES= -I.. -I../.. -I../asn1 -I../evp -I../../include
|
||||
CFLAG= -g
|
||||
MAKEDEPPROG= makedepend
|
||||
MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
|
||||
@@ -17,7 +17,7 @@ AR= ar r
|
||||
|
||||
RECURSIVE_MAKE= [ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \
|
||||
(cd $$i && echo "making $$target in $(DIR)/$$i..." && \
|
||||
$(MAKE) -e TOP=../.. DIR=$$i INCLUDES='${INCLUDES}' $$target ) || exit 1; \
|
||||
$(MAKE) -e TOP=../.. DIR=$$i INCLUDES='$(INCLUDES)' $$target ) || exit 1; \
|
||||
done;
|
||||
|
||||
PEX_LIBS=
|
||||
@@ -26,6 +26,7 @@ EX_LIBS=
|
||||
CFLAGS= $(INCLUDE) $(CFLAG)
|
||||
ASFLAGS= $(INCLUDE) $(ASFLAG)
|
||||
AFLAGS=$(ASFLAGS)
|
||||
CPUID_OBJ=mem_clr.o
|
||||
|
||||
LIBS=
|
||||
|
||||
@@ -33,12 +34,12 @@ GENERAL=Makefile README crypto-lib.com install.com
|
||||
|
||||
LIB= $(TOP)/libcrypto.a
|
||||
SHARED_LIB= libcrypto$(SHLIB_EXT)
|
||||
LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c
|
||||
LIBOBJ= cryptlib.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o $(CPUID_OBJ)
|
||||
LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c
|
||||
LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o $(CPUID_OBJ)
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h symhacks.h \
|
||||
EXHEADER= crypto.h opensslv.h opensslconf.h ebcdic.h symhacks.h \
|
||||
ossl_typ.h
|
||||
HEADER= cryptlib.h buildinf.h md32_common.h o_time.h o_str.h o_dir.h $(EXHEADER)
|
||||
|
||||
@@ -57,26 +58,26 @@ buildinf.h: ../Makefile
|
||||
echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \
|
||||
echo '#endif' ) >buildinf.h
|
||||
|
||||
x86cpuid-elf.s: x86cpuid.pl perlasm/x86asm.pl
|
||||
$(PERL) x86cpuid.pl elf $(CFLAGS) $(PROCESSOR) > $@
|
||||
x86cpuid-cof.s: x86cpuid.pl perlasm/x86asm.pl
|
||||
$(PERL) x86cpuid.pl coff $(CFLAGS) $(PROCESSOR) > $@
|
||||
x86cpuid-out.s: x86cpuid.pl perlasm/x86asm.pl
|
||||
$(PERL) x86cpuid.pl a.out $(CFLAGS) $(PROCESSOR) > $@
|
||||
x86cpuid.s: x86cpuid.pl perlasm/x86asm.pl
|
||||
$(PERL) x86cpuid.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
|
||||
|
||||
uplink.o: ../ms/uplink.c
|
||||
$(CC) $(CFLAGS) -c -o $@ ../ms/uplink.c
|
||||
applink.o: $(TOP)/ms/applink.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/applink.c
|
||||
|
||||
uplink-cof.s: ../ms/uplink.pl
|
||||
$(PERL) ../ms/uplink.pl coff > $@
|
||||
uplink.o: $(TOP)/ms/uplink.c applink.o
|
||||
$(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/uplink.c
|
||||
|
||||
uplink-cof.s: $(TOP)/ms/uplink.pl
|
||||
$(PERL) $(TOP)/ms/uplink.pl coff > $@
|
||||
|
||||
x86_64cpuid.s: x86_64cpuid.pl
|
||||
$(PERL) x86_64cpuid.pl $@
|
||||
$(PERL) x86_64cpuid.pl $(PERLASM_SCHEME) > $@
|
||||
ia64cpuid.s: ia64cpuid.S
|
||||
$(CC) $(CFLAGS) -E ia64cpuid.S > $@
|
||||
ppccpuid.s: ppccpuid.pl; $(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@
|
||||
|
||||
testapps:
|
||||
[ -z "$(THIS)" ] || ( if echo ${SDIRS} | fgrep ' des '; \
|
||||
[ -z "$(THIS)" ] || ( if echo $(SDIRS) | fgrep ' des '; \
|
||||
then cd des && $(MAKE) -e des; fi )
|
||||
[ -z "$(THIS)" ] || ( cd pkcs7 && $(MAKE) -e testapps );
|
||||
@if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
|
||||
@@ -94,7 +95,7 @@ links:
|
||||
@$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS)
|
||||
@target=links; $(RECURSIVE_MAKE)
|
||||
|
||||
# lib: and $(LIB): are splitted to avoid end-less loop
|
||||
# lib: $(LIB): are splitted to avoid end-less loop
|
||||
lib: $(LIB)
|
||||
@touch lib
|
||||
$(LIB): $(LIBOBJ)
|
||||
@@ -135,6 +136,7 @@ clean:
|
||||
dclean:
|
||||
$(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
|
||||
mv -f Makefile.new $(MAKEFILE)
|
||||
rm -f opensslconf.h
|
||||
@target=dclean; $(RECURSIVE_MAKE)
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
@@ -191,13 +193,6 @@ o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
|
||||
o_str.o: o_str.c o_str.h
|
||||
o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
|
||||
o_time.o: o_time.h
|
||||
tmdiff.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
|
||||
tmdiff.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
tmdiff.o: ../include/openssl/err.h ../include/openssl/lhash.h
|
||||
tmdiff.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
tmdiff.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
|
||||
tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
|
||||
tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h tmdiff.c
|
||||
uid.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
uid.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
uid.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
|
||||
|
||||
@@ -2,4 +2,4 @@ lib
|
||||
Makefile.save
|
||||
*.flc
|
||||
semantic.cache
|
||||
ax86-elf.s
|
||||
aes-*.s
|
||||
|
||||
@@ -11,7 +11,7 @@ CFLAG=-g
|
||||
MAKEFILE= Makefile
|
||||
AR= ar r
|
||||
|
||||
AES_ASM_OBJ=aes_core.o aes_cbc.o
|
||||
AES_ENC=aes_core.o aes_cbc.o
|
||||
|
||||
CFLAGS= $(INCLUDES) $(CFLAG)
|
||||
ASFLAGS= $(INCLUDES) $(ASFLAG)
|
||||
@@ -26,7 +26,7 @@ LIB=$(TOP)/libcrypto.a
|
||||
LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \
|
||||
aes_ctr.c aes_ige.c aes_wrap.c
|
||||
LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o aes_wrap.o \
|
||||
$(AES_ASM_OBJ)
|
||||
$(AES_ENC)
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
@@ -45,20 +45,23 @@ lib: $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
$(LIBOBJ): $(LIBSRC)
|
||||
|
||||
aes-ia64.s: asm/aes-ia64.S
|
||||
$(CC) $(CFLAGS) -E asm/aes-ia64.S > $@
|
||||
|
||||
ax86-elf.s: asm/aes-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) aes-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@)
|
||||
ax86-cof.s: asm/aes-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) aes-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
|
||||
ax86-out.s: asm/aes-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) aes-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
|
||||
aes-586.s: asm/aes-586.pl ../perlasm/x86asm.pl
|
||||
$(PERL) asm/aes-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
|
||||
|
||||
aes-x86_64.s: asm/aes-x86_64.pl
|
||||
$(PERL) asm/aes-x86_64.pl $@
|
||||
$(PERL) asm/aes-x86_64.pl $(PERLASM_SCHEME) > $@
|
||||
|
||||
aes-sparcv9.s: asm/aes-sparcv9.pl
|
||||
$(PERL) asm/aes-sparcv9.pl $(CFLAGS) > $@
|
||||
|
||||
aes-ppc.s: asm/aes-ppc.pl
|
||||
$(PERL) asm/aes-ppc.pl $(PERLASM_SCHEME) $@
|
||||
|
||||
# GNU make "catch all"
|
||||
aes-%.s: asm/aes-%.pl; $(PERL) $< $(CFLAGS) > $@
|
||||
|
||||
files:
|
||||
$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
|
||||
@@ -97,15 +100,14 @@ clean:
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
|
||||
aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c aes_locl.h
|
||||
aes_cfb.o: ../../e_os.h ../../include/openssl/aes.h
|
||||
aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
aes_cfb.o: aes_cfb.c aes_locl.h
|
||||
aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
|
||||
aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c
|
||||
aes_cfb.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
|
||||
aes_cfb.o: ../../include/openssl/opensslconf.h aes_cfb.c
|
||||
aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
|
||||
aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h
|
||||
aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
|
||||
aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h
|
||||
aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
|
||||
aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c
|
||||
aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
|
||||
aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h
|
||||
aes_ige.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/bio.h
|
||||
@@ -118,8 +120,8 @@ aes_ige.o: ../../include/openssl/symhacks.h ../cryptlib.h aes_ige.c aes_locl.h
|
||||
aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
|
||||
aes_misc.o: ../../include/openssl/opensslconf.h
|
||||
aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c
|
||||
aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
|
||||
aes_ofb.o: ../../include/openssl/opensslconf.h aes_locl.h aes_ofb.c
|
||||
aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
|
||||
aes_ofb.o: ../../include/openssl/opensslconf.h aes_ofb.c
|
||||
aes_wrap.o: ../../e_os.h ../../include/openssl/aes.h
|
||||
aes_wrap.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
aes_wrap.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
|
||||
@@ -58,6 +58,8 @@
|
||||
#error AES is disabled.
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#define AES_ENCRYPT 1
|
||||
#define AES_DECRYPT 0
|
||||
|
||||
@@ -96,37 +98,32 @@ void AES_decrypt(const unsigned char *in, unsigned char *out,
|
||||
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const AES_KEY *key, const int enc);
|
||||
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc);
|
||||
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc);
|
||||
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc);
|
||||
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc);
|
||||
void AES_cfbr_encrypt_block(const unsigned char *in,unsigned char *out,
|
||||
const int nbits,const AES_KEY *key,
|
||||
unsigned char *ivec,const int enc);
|
||||
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num);
|
||||
void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char ivec[AES_BLOCK_SIZE],
|
||||
unsigned char ecount_buf[AES_BLOCK_SIZE],
|
||||
unsigned int *num);
|
||||
|
||||
/* For IGE, see also http://www.links.org/files/openssl-ige.pdf */
|
||||
/* NB: the IV is _two_ blocks long */
|
||||
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc);
|
||||
/* NB: the IV is _four_ blocks long */
|
||||
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
const AES_KEY *key2, const unsigned char *ivec,
|
||||
const int enc);
|
||||
|
||||
@@ -137,6 +134,7 @@ int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
|
||||
unsigned char *out,
|
||||
const unsigned char *in, unsigned int inlen);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -49,83 +49,15 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef AES_DEBUG
|
||||
# ifndef NDEBUG
|
||||
# define NDEBUG
|
||||
# endif
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_locl.h"
|
||||
#include <openssl/modes.h>
|
||||
|
||||
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t len, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc) {
|
||||
|
||||
unsigned long n;
|
||||
unsigned long len = length;
|
||||
unsigned char tmp[AES_BLOCK_SIZE];
|
||||
const unsigned char *iv = ivec;
|
||||
|
||||
assert(in && out && key && ivec);
|
||||
assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
|
||||
|
||||
if (AES_ENCRYPT == enc) {
|
||||
while (len >= AES_BLOCK_SIZE) {
|
||||
for(n=0; n < AES_BLOCK_SIZE; ++n)
|
||||
out[n] = in[n] ^ iv[n];
|
||||
AES_encrypt(out, out, key);
|
||||
iv = out;
|
||||
len -= AES_BLOCK_SIZE;
|
||||
in += AES_BLOCK_SIZE;
|
||||
out += AES_BLOCK_SIZE;
|
||||
}
|
||||
if (len) {
|
||||
for(n=0; n < len; ++n)
|
||||
out[n] = in[n] ^ iv[n];
|
||||
for(n=len; n < AES_BLOCK_SIZE; ++n)
|
||||
out[n] = iv[n];
|
||||
AES_encrypt(out, out, key);
|
||||
iv = out;
|
||||
}
|
||||
memcpy(ivec,iv,AES_BLOCK_SIZE);
|
||||
} else if (in != out) {
|
||||
while (len >= AES_BLOCK_SIZE) {
|
||||
AES_decrypt(in, out, key);
|
||||
for(n=0; n < AES_BLOCK_SIZE; ++n)
|
||||
out[n] ^= iv[n];
|
||||
iv = in;
|
||||
len -= AES_BLOCK_SIZE;
|
||||
in += AES_BLOCK_SIZE;
|
||||
out += AES_BLOCK_SIZE;
|
||||
}
|
||||
if (len) {
|
||||
AES_decrypt(in,tmp,key);
|
||||
for(n=0; n < len; ++n)
|
||||
out[n] = tmp[n] ^ iv[n];
|
||||
iv = in;
|
||||
}
|
||||
memcpy(ivec,iv,AES_BLOCK_SIZE);
|
||||
} else {
|
||||
while (len >= AES_BLOCK_SIZE) {
|
||||
memcpy(tmp, in, AES_BLOCK_SIZE);
|
||||
AES_decrypt(in, out, key);
|
||||
for(n=0; n < AES_BLOCK_SIZE; ++n)
|
||||
out[n] ^= ivec[n];
|
||||
memcpy(ivec, tmp, AES_BLOCK_SIZE);
|
||||
len -= AES_BLOCK_SIZE;
|
||||
in += AES_BLOCK_SIZE;
|
||||
out += AES_BLOCK_SIZE;
|
||||
}
|
||||
if (len) {
|
||||
memcpy(tmp, in, AES_BLOCK_SIZE);
|
||||
AES_decrypt(tmp, out, key);
|
||||
for(n=0; n < len; ++n)
|
||||
out[n] ^= ivec[n];
|
||||
for(n=len; n < AES_BLOCK_SIZE; ++n)
|
||||
out[n] = tmp[n];
|
||||
memcpy(ivec, tmp, AES_BLOCK_SIZE);
|
||||
}
|
||||
}
|
||||
if (enc)
|
||||
CRYPTO_cbc128_encrypt(in,out,len,key,ivec,(block128_f)AES_encrypt);
|
||||
else
|
||||
CRYPTO_cbc128_decrypt(in,out,len,key,ivec,(block128_f)AES_decrypt);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* crypto/aes/aes_cfb.c -*- mode:C; c-file-style: "eay" -*- */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -48,73 +48,9 @@
|
||||
* ====================================================================
|
||||
*
|
||||
*/
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#ifndef AES_DEBUG
|
||||
# ifndef NDEBUG
|
||||
# define NDEBUG
|
||||
# endif
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_locl.h"
|
||||
#include "e_os.h"
|
||||
#include <openssl/modes.h>
|
||||
|
||||
/* The input and output encrypted as though 128bit cfb mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
@@ -122,104 +58,24 @@
|
||||
*/
|
||||
|
||||
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc) {
|
||||
|
||||
unsigned int n;
|
||||
unsigned long l = length;
|
||||
unsigned char c;
|
||||
|
||||
assert(in && out && key && ivec && num);
|
||||
|
||||
n = *num;
|
||||
|
||||
if (enc) {
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
AES_encrypt(ivec, ivec, key);
|
||||
}
|
||||
ivec[n] = *(out++) = *(in++) ^ ivec[n];
|
||||
n = (n+1) % AES_BLOCK_SIZE;
|
||||
}
|
||||
} else {
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
AES_encrypt(ivec, ivec, key);
|
||||
}
|
||||
c = *(in);
|
||||
*(out++) = *(in++) ^ ivec[n];
|
||||
ivec[n] = c;
|
||||
n = (n+1) % AES_BLOCK_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
*num=n;
|
||||
CRYPTO_cfb128_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
|
||||
}
|
||||
|
||||
/* This expects a single block of size nbits for both in and out. Note that
|
||||
it corrupts any extra bits in the last byte of out */
|
||||
void AES_cfbr_encrypt_block(const unsigned char *in,unsigned char *out,
|
||||
const int nbits,const AES_KEY *key,
|
||||
unsigned char *ivec,const int enc)
|
||||
{
|
||||
int n,rem,num;
|
||||
unsigned char ovec[AES_BLOCK_SIZE*2];
|
||||
|
||||
if (nbits<=0 || nbits>128) return;
|
||||
|
||||
/* fill in the first half of the new IV with the current IV */
|
||||
memcpy(ovec,ivec,AES_BLOCK_SIZE);
|
||||
/* construct the new IV */
|
||||
AES_encrypt(ivec,ivec,key);
|
||||
num = (nbits+7)/8;
|
||||
if (enc) /* encrypt the input */
|
||||
for(n=0 ; n < num ; ++n)
|
||||
out[n] = (ovec[AES_BLOCK_SIZE+n] = in[n] ^ ivec[n]);
|
||||
else /* decrypt the input */
|
||||
for(n=0 ; n < num ; ++n)
|
||||
out[n] = (ovec[AES_BLOCK_SIZE+n] = in[n]) ^ ivec[n];
|
||||
/* shift ovec left... */
|
||||
rem = nbits%8;
|
||||
num = nbits/8;
|
||||
if(rem==0)
|
||||
memcpy(ivec,ovec+num,AES_BLOCK_SIZE);
|
||||
else
|
||||
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
|
||||
ivec[n] = ovec[n+num]<<rem | ovec[n+num+1]>>(8-rem);
|
||||
|
||||
/* it is not necessary to cleanse ovec, since the IV is not secret */
|
||||
}
|
||||
|
||||
/* N.B. This expects the input to be packed, MS bit first */
|
||||
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc)
|
||||
{
|
||||
unsigned int n;
|
||||
unsigned char c[1],d[1];
|
||||
|
||||
assert(in && out && key && ivec && num);
|
||||
assert(*num == 0);
|
||||
|
||||
memset(out,0,(length+7)/8);
|
||||
for(n=0 ; n < length ; ++n)
|
||||
{
|
||||
c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
|
||||
AES_cfbr_encrypt_block(c,d,1,key,ivec,enc);
|
||||
out[n/8]=(out[n/8]&~(1 << (7-n%8)))|((d[0]&0x80) >> (n%8));
|
||||
}
|
||||
CRYPTO_cfb128_1_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
|
||||
}
|
||||
|
||||
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc)
|
||||
{
|
||||
unsigned int n;
|
||||
|
||||
assert(in && out && key && ivec && num);
|
||||
assert(*num == 0);
|
||||
|
||||
for(n=0 ; n < length ; ++n)
|
||||
AES_cfbr_encrypt_block(&in[n],&out[n],8,key,ivec,enc);
|
||||
CRYPTO_cfb128_8_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_locl.h"
|
||||
|
||||
#ifndef AES_ASM
|
||||
/*
|
||||
Te0[x] = S [x].[02, 01, 01, 03];
|
||||
Te1[x] = S [x].[03, 02, 01, 01];
|
||||
@@ -773,7 +774,6 @@ int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef AES_ASM
|
||||
/*
|
||||
* Encrypt a single block
|
||||
* in and out can overlap
|
||||
@@ -1156,4 +1156,203 @@ void AES_decrypt(const unsigned char *in, unsigned char *out,
|
||||
PUTU32(out + 12, s3);
|
||||
}
|
||||
|
||||
#else /* AES_ASM */
|
||||
|
||||
static const u8 Te4[256] = {
|
||||
0x63U, 0x7cU, 0x77U, 0x7bU, 0xf2U, 0x6bU, 0x6fU, 0xc5U,
|
||||
0x30U, 0x01U, 0x67U, 0x2bU, 0xfeU, 0xd7U, 0xabU, 0x76U,
|
||||
0xcaU, 0x82U, 0xc9U, 0x7dU, 0xfaU, 0x59U, 0x47U, 0xf0U,
|
||||
0xadU, 0xd4U, 0xa2U, 0xafU, 0x9cU, 0xa4U, 0x72U, 0xc0U,
|
||||
0xb7U, 0xfdU, 0x93U, 0x26U, 0x36U, 0x3fU, 0xf7U, 0xccU,
|
||||
0x34U, 0xa5U, 0xe5U, 0xf1U, 0x71U, 0xd8U, 0x31U, 0x15U,
|
||||
0x04U, 0xc7U, 0x23U, 0xc3U, 0x18U, 0x96U, 0x05U, 0x9aU,
|
||||
0x07U, 0x12U, 0x80U, 0xe2U, 0xebU, 0x27U, 0xb2U, 0x75U,
|
||||
0x09U, 0x83U, 0x2cU, 0x1aU, 0x1bU, 0x6eU, 0x5aU, 0xa0U,
|
||||
0x52U, 0x3bU, 0xd6U, 0xb3U, 0x29U, 0xe3U, 0x2fU, 0x84U,
|
||||
0x53U, 0xd1U, 0x00U, 0xedU, 0x20U, 0xfcU, 0xb1U, 0x5bU,
|
||||
0x6aU, 0xcbU, 0xbeU, 0x39U, 0x4aU, 0x4cU, 0x58U, 0xcfU,
|
||||
0xd0U, 0xefU, 0xaaU, 0xfbU, 0x43U, 0x4dU, 0x33U, 0x85U,
|
||||
0x45U, 0xf9U, 0x02U, 0x7fU, 0x50U, 0x3cU, 0x9fU, 0xa8U,
|
||||
0x51U, 0xa3U, 0x40U, 0x8fU, 0x92U, 0x9dU, 0x38U, 0xf5U,
|
||||
0xbcU, 0xb6U, 0xdaU, 0x21U, 0x10U, 0xffU, 0xf3U, 0xd2U,
|
||||
0xcdU, 0x0cU, 0x13U, 0xecU, 0x5fU, 0x97U, 0x44U, 0x17U,
|
||||
0xc4U, 0xa7U, 0x7eU, 0x3dU, 0x64U, 0x5dU, 0x19U, 0x73U,
|
||||
0x60U, 0x81U, 0x4fU, 0xdcU, 0x22U, 0x2aU, 0x90U, 0x88U,
|
||||
0x46U, 0xeeU, 0xb8U, 0x14U, 0xdeU, 0x5eU, 0x0bU, 0xdbU,
|
||||
0xe0U, 0x32U, 0x3aU, 0x0aU, 0x49U, 0x06U, 0x24U, 0x5cU,
|
||||
0xc2U, 0xd3U, 0xacU, 0x62U, 0x91U, 0x95U, 0xe4U, 0x79U,
|
||||
0xe7U, 0xc8U, 0x37U, 0x6dU, 0x8dU, 0xd5U, 0x4eU, 0xa9U,
|
||||
0x6cU, 0x56U, 0xf4U, 0xeaU, 0x65U, 0x7aU, 0xaeU, 0x08U,
|
||||
0xbaU, 0x78U, 0x25U, 0x2eU, 0x1cU, 0xa6U, 0xb4U, 0xc6U,
|
||||
0xe8U, 0xddU, 0x74U, 0x1fU, 0x4bU, 0xbdU, 0x8bU, 0x8aU,
|
||||
0x70U, 0x3eU, 0xb5U, 0x66U, 0x48U, 0x03U, 0xf6U, 0x0eU,
|
||||
0x61U, 0x35U, 0x57U, 0xb9U, 0x86U, 0xc1U, 0x1dU, 0x9eU,
|
||||
0xe1U, 0xf8U, 0x98U, 0x11U, 0x69U, 0xd9U, 0x8eU, 0x94U,
|
||||
0x9bU, 0x1eU, 0x87U, 0xe9U, 0xceU, 0x55U, 0x28U, 0xdfU,
|
||||
0x8cU, 0xa1U, 0x89U, 0x0dU, 0xbfU, 0xe6U, 0x42U, 0x68U,
|
||||
0x41U, 0x99U, 0x2dU, 0x0fU, 0xb0U, 0x54U, 0xbbU, 0x16U
|
||||
};
|
||||
static const u32 rcon[] = {
|
||||
0x01000000, 0x02000000, 0x04000000, 0x08000000,
|
||||
0x10000000, 0x20000000, 0x40000000, 0x80000000,
|
||||
0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
|
||||
};
|
||||
|
||||
/**
|
||||
* Expand the cipher key into the encryption key schedule.
|
||||
*/
|
||||
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
||||
AES_KEY *key) {
|
||||
u32 *rk;
|
||||
int i = 0;
|
||||
u32 temp;
|
||||
|
||||
if (!userKey || !key)
|
||||
return -1;
|
||||
if (bits != 128 && bits != 192 && bits != 256)
|
||||
return -2;
|
||||
|
||||
rk = key->rd_key;
|
||||
|
||||
if (bits==128)
|
||||
key->rounds = 10;
|
||||
else if (bits==192)
|
||||
key->rounds = 12;
|
||||
else
|
||||
key->rounds = 14;
|
||||
|
||||
rk[0] = GETU32(userKey );
|
||||
rk[1] = GETU32(userKey + 4);
|
||||
rk[2] = GETU32(userKey + 8);
|
||||
rk[3] = GETU32(userKey + 12);
|
||||
if (bits == 128) {
|
||||
while (1) {
|
||||
temp = rk[3];
|
||||
rk[4] = rk[0] ^
|
||||
(Te4[(temp >> 16) & 0xff] << 24) ^
|
||||
(Te4[(temp >> 8) & 0xff] << 16) ^
|
||||
(Te4[(temp ) & 0xff] << 8) ^
|
||||
(Te4[(temp >> 24) ]) ^
|
||||
rcon[i];
|
||||
rk[5] = rk[1] ^ rk[4];
|
||||
rk[6] = rk[2] ^ rk[5];
|
||||
rk[7] = rk[3] ^ rk[6];
|
||||
if (++i == 10) {
|
||||
return 0;
|
||||
}
|
||||
rk += 4;
|
||||
}
|
||||
}
|
||||
rk[4] = GETU32(userKey + 16);
|
||||
rk[5] = GETU32(userKey + 20);
|
||||
if (bits == 192) {
|
||||
while (1) {
|
||||
temp = rk[ 5];
|
||||
rk[ 6] = rk[ 0] ^
|
||||
(Te4[(temp >> 16) & 0xff] << 24) ^
|
||||
(Te4[(temp >> 8) & 0xff] << 16) ^
|
||||
(Te4[(temp ) & 0xff] << 8) ^
|
||||
(Te4[(temp >> 24) ]) ^
|
||||
rcon[i];
|
||||
rk[ 7] = rk[ 1] ^ rk[ 6];
|
||||
rk[ 8] = rk[ 2] ^ rk[ 7];
|
||||
rk[ 9] = rk[ 3] ^ rk[ 8];
|
||||
if (++i == 8) {
|
||||
return 0;
|
||||
}
|
||||
rk[10] = rk[ 4] ^ rk[ 9];
|
||||
rk[11] = rk[ 5] ^ rk[10];
|
||||
rk += 6;
|
||||
}
|
||||
}
|
||||
rk[6] = GETU32(userKey + 24);
|
||||
rk[7] = GETU32(userKey + 28);
|
||||
if (bits == 256) {
|
||||
while (1) {
|
||||
temp = rk[ 7];
|
||||
rk[ 8] = rk[ 0] ^
|
||||
(Te4[(temp >> 16) & 0xff] << 24) ^
|
||||
(Te4[(temp >> 8) & 0xff] << 16) ^
|
||||
(Te4[(temp ) & 0xff] << 8) ^
|
||||
(Te4[(temp >> 24) ]) ^
|
||||
rcon[i];
|
||||
rk[ 9] = rk[ 1] ^ rk[ 8];
|
||||
rk[10] = rk[ 2] ^ rk[ 9];
|
||||
rk[11] = rk[ 3] ^ rk[10];
|
||||
if (++i == 7) {
|
||||
return 0;
|
||||
}
|
||||
temp = rk[11];
|
||||
rk[12] = rk[ 4] ^
|
||||
(Te4[(temp >> 24) ] << 24) ^
|
||||
(Te4[(temp >> 16) & 0xff] << 16) ^
|
||||
(Te4[(temp >> 8) & 0xff] << 8) ^
|
||||
(Te4[(temp ) & 0xff]);
|
||||
rk[13] = rk[ 5] ^ rk[12];
|
||||
rk[14] = rk[ 6] ^ rk[13];
|
||||
rk[15] = rk[ 7] ^ rk[14];
|
||||
|
||||
rk += 8;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Expand the cipher key into the decryption key schedule.
|
||||
*/
|
||||
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
|
||||
AES_KEY *key) {
|
||||
|
||||
u32 *rk;
|
||||
int i, j, status;
|
||||
u32 temp;
|
||||
|
||||
/* first, start with an encryption schedule */
|
||||
status = AES_set_encrypt_key(userKey, bits, key);
|
||||
if (status < 0)
|
||||
return status;
|
||||
|
||||
rk = key->rd_key;
|
||||
|
||||
/* invert the order of the round keys: */
|
||||
for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
|
||||
temp = rk[i ]; rk[i ] = rk[j ]; rk[j ] = temp;
|
||||
temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
|
||||
temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
|
||||
temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
|
||||
}
|
||||
/* apply the inverse MixColumn transform to all round keys but the first and the last: */
|
||||
for (i = 1; i < (key->rounds); i++) {
|
||||
rk += 4;
|
||||
for (j = 0; j < 4; j++) {
|
||||
u32 tp1, tp2, tp4, tp8, tp9, tpb, tpd, tpe, m;
|
||||
|
||||
tp1 = rk[j];
|
||||
m = tp1 & 0x80808080;
|
||||
tp2 = ((tp1 & 0x7f7f7f7f) << 1) ^
|
||||
((m - (m >> 7)) & 0x1b1b1b1b);
|
||||
m = tp2 & 0x80808080;
|
||||
tp4 = ((tp2 & 0x7f7f7f7f) << 1) ^
|
||||
((m - (m >> 7)) & 0x1b1b1b1b);
|
||||
m = tp4 & 0x80808080;
|
||||
tp8 = ((tp4 & 0x7f7f7f7f) << 1) ^
|
||||
((m - (m >> 7)) & 0x1b1b1b1b);
|
||||
tp9 = tp8 ^ tp1;
|
||||
tpb = tp9 ^ tp2;
|
||||
tpd = tp9 ^ tp4;
|
||||
tpe = tp8 ^ tp4 ^ tp2;
|
||||
#if defined(ROTATE)
|
||||
rk[j] = tpe ^ ROTATE(tpd,16) ^
|
||||
ROTATE(tp9,24) ^ ROTATE(tpb,8);
|
||||
#else
|
||||
rk[j] = tpe ^ (tpd >> 16) ^ (tpd << 16) ^
|
||||
(tp9 >> 8) ^ (tp9 << 24) ^
|
||||
(tpb >> 24) ^ (tpb << 8);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* AES_ASM */
|
||||
|
||||
@@ -49,91 +49,13 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef AES_DEBUG
|
||||
# ifndef NDEBUG
|
||||
# define NDEBUG
|
||||
# endif
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_locl.h"
|
||||
#include <openssl/modes.h>
|
||||
|
||||
/* NOTE: the IV/counter CTR mode is big-endian. The rest of the AES code
|
||||
* is endian-neutral. */
|
||||
|
||||
/* increment counter (128-bit int) by 1 */
|
||||
static void AES_ctr128_inc(unsigned char *counter) {
|
||||
unsigned long c;
|
||||
|
||||
/* Grab bottom dword of counter and increment */
|
||||
c = GETU32(counter + 12);
|
||||
c++; c &= 0xFFFFFFFF;
|
||||
PUTU32(counter + 12, c);
|
||||
|
||||
/* if no overflow, we're done */
|
||||
if (c)
|
||||
return;
|
||||
|
||||
/* Grab 1st dword of counter and increment */
|
||||
c = GETU32(counter + 8);
|
||||
c++; c &= 0xFFFFFFFF;
|
||||
PUTU32(counter + 8, c);
|
||||
|
||||
/* if no overflow, we're done */
|
||||
if (c)
|
||||
return;
|
||||
|
||||
/* Grab 2nd dword of counter and increment */
|
||||
c = GETU32(counter + 4);
|
||||
c++; c &= 0xFFFFFFFF;
|
||||
PUTU32(counter + 4, c);
|
||||
|
||||
/* if no overflow, we're done */
|
||||
if (c)
|
||||
return;
|
||||
|
||||
/* Grab top dword of counter and increment */
|
||||
c = GETU32(counter + 0);
|
||||
c++; c &= 0xFFFFFFFF;
|
||||
PUTU32(counter + 0, c);
|
||||
}
|
||||
|
||||
/* The input encrypted as though 128bit counter mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
* 128bit block we have used is contained in *num, and the
|
||||
* encrypted counter is kept in ecount_buf. Both *num and
|
||||
* ecount_buf must be initialised with zeros before the first
|
||||
* call to AES_ctr128_encrypt().
|
||||
*
|
||||
* This algorithm assumes that the counter is in the x lower bits
|
||||
* of the IV (ivec), and that the application has full control over
|
||||
* overflow and the rest of the IV. This implementation takes NO
|
||||
* responsability for checking that the counter doesn't overflow
|
||||
* into the rest of the IV when incremented.
|
||||
*/
|
||||
void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
unsigned char ivec[AES_BLOCK_SIZE],
|
||||
unsigned char ecount_buf[AES_BLOCK_SIZE],
|
||||
unsigned int *num) {
|
||||
|
||||
unsigned int n;
|
||||
unsigned long l=length;
|
||||
|
||||
assert(in && out && key && counter && num);
|
||||
assert(*num < AES_BLOCK_SIZE);
|
||||
|
||||
n = *num;
|
||||
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
AES_encrypt(ivec, ecount_buf, key);
|
||||
AES_ctr128_inc(ivec);
|
||||
}
|
||||
*(out++) = *(in++) ^ ecount_buf[n];
|
||||
n = (n+1) % AES_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
*num=n;
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char ivec[AES_BLOCK_SIZE],
|
||||
unsigned char ecount_buf[AES_BLOCK_SIZE],
|
||||
unsigned int *num) {
|
||||
CRYPTO_ctr128_encrypt(in,out,length,key,ivec,ecount_buf,num,(block128_f)AES_encrypt);
|
||||
}
|
||||
|
||||
@@ -77,11 +77,11 @@ typedef struct {
|
||||
/* N.B. The IV for this mode is _twice_ the block size */
|
||||
|
||||
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc)
|
||||
{
|
||||
unsigned long n;
|
||||
unsigned long len;
|
||||
size_t n;
|
||||
size_t len = length;
|
||||
|
||||
OPENSSL_assert(in && out && key && ivec);
|
||||
OPENSSL_assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
|
||||
@@ -211,12 +211,12 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
/* N.B. The IV for this mode is _four times_ the block size */
|
||||
|
||||
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
size_t length, const AES_KEY *key,
|
||||
const AES_KEY *key2, const unsigned char *ivec,
|
||||
const int enc)
|
||||
{
|
||||
unsigned long n;
|
||||
unsigned long len = length;
|
||||
size_t n;
|
||||
size_t len = length;
|
||||
unsigned char tmp[AES_BLOCK_SIZE];
|
||||
unsigned char tmp2[AES_BLOCK_SIZE];
|
||||
unsigned char tmp3[AES_BLOCK_SIZE];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* crypto/aes/aes_ofb.c -*- mode:C; c-file-style: "eay" -*- */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -48,95 +48,13 @@
|
||||
* ====================================================================
|
||||
*
|
||||
*/
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#ifndef AES_DEBUG
|
||||
# ifndef NDEBUG
|
||||
# define NDEBUG
|
||||
# endif
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_locl.h"
|
||||
#include <openssl/modes.h>
|
||||
|
||||
/* The input and output encrypted as though 128bit ofb mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
* 128bit block we have used is contained in *num;
|
||||
*/
|
||||
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num) {
|
||||
|
||||
unsigned int n;
|
||||
unsigned long l=length;
|
||||
|
||||
assert(in && out && key && ivec && num);
|
||||
|
||||
n = *num;
|
||||
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
AES_encrypt(ivec, ivec, key);
|
||||
}
|
||||
*(out++) = *(in++) ^ ivec[n];
|
||||
n = (n+1) % AES_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
*num=n;
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num)
|
||||
{
|
||||
CRYPTO_ofb128_encrypt(in,out,length,key,ivec,num,(block128_f)AES_encrypt);
|
||||
}
|
||||
|
||||
1063
crypto/aes/aes_x86core.c
Normal file
1063
crypto/aes/aes_x86core.c
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1030
crypto/aes/asm/aes-armv4.pl
Normal file
1030
crypto/aes/asm/aes-armv4.pl
Normal file
File diff suppressed because it is too large
Load Diff
1176
crypto/aes/asm/aes-ppc.pl
Normal file
1176
crypto/aes/asm/aes-ppc.pl
Normal file
File diff suppressed because it is too large
Load Diff
1333
crypto/aes/asm/aes-s390x.pl
Normal file
1333
crypto/aes/asm/aes-s390x.pl
Normal file
File diff suppressed because it is too large
Load Diff
1181
crypto/aes/asm/aes-sparcv9.pl
Executable file
1181
crypto/aes/asm/aes-sparcv9.pl
Executable file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
124
crypto/alphacpuid.s
Normal file
124
crypto/alphacpuid.s
Normal file
@@ -0,0 +1,124 @@
|
||||
.text
|
||||
|
||||
.set noat
|
||||
|
||||
.globl OPENSSL_cpuid_setup
|
||||
.ent OPENSSL_cpuid_setup
|
||||
OPENSSL_cpuid_setup:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
ret ($26)
|
||||
.end OPENSSL_cpuid_setup
|
||||
|
||||
.globl OPENSSL_wipe_cpu
|
||||
.ent OPENSSL_wipe_cpu
|
||||
OPENSSL_wipe_cpu:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
clr $1
|
||||
clr $2
|
||||
clr $3
|
||||
clr $4
|
||||
clr $5
|
||||
clr $6
|
||||
clr $7
|
||||
clr $8
|
||||
clr $16
|
||||
clr $17
|
||||
clr $18
|
||||
clr $19
|
||||
clr $20
|
||||
clr $21
|
||||
clr $22
|
||||
clr $23
|
||||
clr $24
|
||||
clr $25
|
||||
clr $27
|
||||
clr $at
|
||||
clr $29
|
||||
fclr $f0
|
||||
fclr $f1
|
||||
fclr $f10
|
||||
fclr $f11
|
||||
fclr $f12
|
||||
fclr $f13
|
||||
fclr $f14
|
||||
fclr $f15
|
||||
fclr $f16
|
||||
fclr $f17
|
||||
fclr $f18
|
||||
fclr $f19
|
||||
fclr $f20
|
||||
fclr $f21
|
||||
fclr $f22
|
||||
fclr $f23
|
||||
fclr $f24
|
||||
fclr $f25
|
||||
fclr $f26
|
||||
fclr $f27
|
||||
fclr $f28
|
||||
fclr $f29
|
||||
fclr $f30
|
||||
mov $sp,$0
|
||||
ret ($26)
|
||||
.end OPENSSL_wipe_cpu
|
||||
|
||||
.globl OPENSSL_atomic_add
|
||||
.ent OPENSSL_atomic_add
|
||||
OPENSSL_atomic_add:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
1: ldl_l $0,($16)
|
||||
addl $0,$17,$1
|
||||
stl_c $1,($16)
|
||||
beq $1,1b
|
||||
addl $0,$17,$0
|
||||
ret ($26)
|
||||
.end OPENSSL_atomic_add
|
||||
|
||||
.globl OPENSSL_rdtsc
|
||||
.ent OPENSSL_rdtsc
|
||||
OPENSSL_rdtsc:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
rpcc $0
|
||||
ret ($26)
|
||||
.end OPENSSL_rdtsc
|
||||
|
||||
.globl OPENSSL_cleanse
|
||||
.ent OPENSSL_cleanse
|
||||
OPENSSL_cleanse:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
and $16,7,$0
|
||||
bic $17,7,$at
|
||||
beq $at,.Little
|
||||
beq $0,.Laligned
|
||||
|
||||
.Little:
|
||||
ldq_u $1,0($16)
|
||||
mov $16,$2
|
||||
.Lalign:
|
||||
mskbl $1,$16,$1
|
||||
lda $16,1($16)
|
||||
subq $17,1,$17
|
||||
subq $0,1,$0
|
||||
beq $17,.Lout
|
||||
bne $0,.Lalign
|
||||
.Lout: stq_u $1,0($2)
|
||||
beq $17,.Ldone
|
||||
bic $17,7,$at
|
||||
mov $17,$0
|
||||
beq $at,.Little
|
||||
|
||||
.Laligned:
|
||||
stq $31,0($16)
|
||||
subq $17,8,$17
|
||||
lda $16,8($16)
|
||||
bic $17,7,$at
|
||||
bne $at,.Laligned
|
||||
beq $17,.Ldone
|
||||
mov $17,$0
|
||||
br .Little
|
||||
.Ldone: ret ($26)
|
||||
.end OPENSSL_cleanse
|
||||
@@ -22,30 +22,32 @@ LIBSRC= a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c \
|
||||
a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \
|
||||
x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \
|
||||
x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \
|
||||
d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
|
||||
x_nx509.c d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
|
||||
t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
|
||||
tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
|
||||
tasn_prn.c ameth_lib.c \
|
||||
f_int.c f_string.c n_pkey.c \
|
||||
f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c asn_mime.c \
|
||||
asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \
|
||||
f_enum.c x_pkey.c a_bool.c x_exten.c bio_asn1.c bio_ndef.c asn_mime.c \
|
||||
asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_bytes.c a_strnid.c \
|
||||
evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
|
||||
LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
|
||||
a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \
|
||||
a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \
|
||||
x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \
|
||||
x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \
|
||||
d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
|
||||
x_nx509.o d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
|
||||
t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
|
||||
tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
|
||||
tasn_prn.o ameth_lib.o \
|
||||
f_int.o f_string.o n_pkey.o \
|
||||
f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o asn_mime.o \
|
||||
asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \
|
||||
f_enum.o x_pkey.o a_bool.o x_exten.o bio_asn1.o bio_ndef.o asn_mime.o \
|
||||
asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_bytes.o a_strnid.o \
|
||||
evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
EXHEADER= asn1.h asn1_mac.h asn1t.h
|
||||
HEADER= $(EXHEADER)
|
||||
HEADER= $(EXHEADER) asn1_locl.h
|
||||
|
||||
ALL= $(GENERAL) $(SRC) $(HEADER)
|
||||
|
||||
@@ -173,14 +175,6 @@ a_gentm.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
a_gentm.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
a_gentm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
a_gentm.o: ../cryptlib.h ../o_time.h a_gentm.c
|
||||
a_hdr.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
a_hdr.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
|
||||
a_hdr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
a_hdr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
a_hdr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
a_hdr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
a_hdr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
a_hdr.o: ../../include/openssl/symhacks.h ../cryptlib.h a_hdr.c
|
||||
a_i2d_fp.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
a_i2d_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
@@ -205,13 +199,6 @@ a_mbstr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
a_mbstr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
a_mbstr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
a_mbstr.o: ../cryptlib.h a_mbstr.c
|
||||
a_meth.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
a_meth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
a_meth.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
a_meth.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
a_meth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
a_meth.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
a_meth.o: ../../include/openssl/symhacks.h ../cryptlib.h a_meth.c
|
||||
a_object.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
a_object.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
a_object.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
@@ -257,7 +244,7 @@ a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
a_sign.o: ../cryptlib.h a_sign.c
|
||||
a_sign.o: ../cryptlib.h a_sign.c asn1_locl.h
|
||||
a_strex.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
@@ -325,6 +312,22 @@ a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
a_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
a_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_verify.c
|
||||
a_verify.o: asn1_locl.h
|
||||
ameth_lib.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
ameth_lib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
ameth_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
ameth_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
ameth_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
ameth_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
|
||||
ameth_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
ameth_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
ameth_lib.o: ../../include/openssl/opensslconf.h
|
||||
ameth_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
ameth_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
ameth_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
ameth_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
ameth_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ameth_lib.c
|
||||
ameth_lib.o: asn1_locl.h
|
||||
asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
asn1_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
asn1_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
@@ -376,7 +379,7 @@ asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
|
||||
asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
asn_mime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
asn_mime.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
asn_mime.o: ../cryptlib.h asn_mime.c
|
||||
asn_mime.o: ../cryptlib.h asn1_locl.h asn_mime.c
|
||||
asn_moid.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
asn_moid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
@@ -399,17 +402,32 @@ asn_pack.o: ../../include/openssl/opensslconf.h
|
||||
asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
asn_pack.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
asn_pack.o: ../../include/openssl/symhacks.h ../cryptlib.h asn_pack.c
|
||||
bio_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
bio_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
bio_asn1.o: ../../include/openssl/opensslconf.h
|
||||
bio_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
bio_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
bio_asn1.o: ../../include/openssl/symhacks.h bio_asn1.c
|
||||
bio_ndef.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
bio_ndef.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
|
||||
bio_ndef.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
bio_ndef.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
bio_ndef.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
bio_ndef.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
bio_ndef.o: ../../include/openssl/symhacks.h bio_ndef.c
|
||||
d2i_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
d2i_pr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
d2i_pr.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
|
||||
d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
d2i_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
d2i_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
d2i_pr.o: ../cryptlib.h d2i_pr.c
|
||||
d2i_pr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
d2i_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
d2i_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
d2i_pr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h d2i_pr.c
|
||||
d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
@@ -452,16 +470,17 @@ f_string.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
f_string.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
f_string.o: ../../include/openssl/symhacks.h ../cryptlib.h f_string.c
|
||||
i2d_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
i2d_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
i2d_pr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
i2d_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
i2d_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
i2d_pr.o: ../cryptlib.h i2d_pr.c
|
||||
i2d_pr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
i2d_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
i2d_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
i2d_pr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h i2d_pr.c
|
||||
i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
@@ -570,13 +589,11 @@ t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
t_crl.o: ../cryptlib.h t_crl.c
|
||||
t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
|
||||
t_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
t_pkey.o: ../../include/openssl/ec.h ../../include/openssl/err.h
|
||||
t_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
t_pkey.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
t_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
t_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_pkey.o: ../cryptlib.h t_pkey.c
|
||||
t_req.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
@@ -669,6 +686,21 @@ tasn_new.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
tasn_new.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
tasn_new.o: ../../include/openssl/symhacks.h tasn_new.c
|
||||
tasn_prn.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
tasn_prn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
tasn_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
|
||||
tasn_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
tasn_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
tasn_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
tasn_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
tasn_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
tasn_prn.o: ../../include/openssl/opensslconf.h
|
||||
tasn_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
tasn_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
tasn_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
tasn_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
tasn_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
tasn_prn.o: ../cryptlib.h asn1_locl.h tasn_prn.c
|
||||
tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
|
||||
tasn_typ.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
@@ -719,17 +751,18 @@ x_bignum.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
x_bignum.o: ../../include/openssl/symhacks.h ../cryptlib.h x_bignum.c
|
||||
x_crl.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_crl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_crl.c
|
||||
x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
|
||||
x_crl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
x_crl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
x_crl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
x_crl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h asn1_locl.h x_crl.c
|
||||
x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
@@ -775,7 +808,19 @@ x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_name.c
|
||||
x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h x_name.c
|
||||
x_nx509.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
x_nx509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
x_nx509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
x_nx509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
x_nx509.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
|
||||
x_nx509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_nx509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_nx509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_nx509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_nx509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_nx509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_nx509.o: ../../include/openssl/x509_vfy.h x_nx509.c
|
||||
x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
|
||||
x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
@@ -803,7 +848,7 @@ x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
|
||||
x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_pubkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_pubkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_pubkey.o: ../cryptlib.h x_pubkey.c
|
||||
x_pubkey.o: ../cryptlib.h asn1_locl.h x_pubkey.c
|
||||
x_req.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
|
||||
@@ -223,3 +223,26 @@ int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n)
|
||||
return((a->data[w]&v) != 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if the given bit string contains only bits specified by
|
||||
* the flags vector. Returns 0 if there is at least one bit set in 'a'
|
||||
* which is not specified in 'flags', 1 otherwise.
|
||||
* 'len' is the length of 'flags'.
|
||||
*/
|
||||
int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a,
|
||||
unsigned char *flags, int flags_len)
|
||||
{
|
||||
int i, ok;
|
||||
/* Check if there is one bit set at all. */
|
||||
if (!a || !a->data) return 1;
|
||||
|
||||
/* Check each byte of the internal representation of the bit string. */
|
||||
ok = 1;
|
||||
for (i = 0; i < a->length && ok; ++i)
|
||||
{
|
||||
unsigned char mask = i < flags_len ? ~flags[i] : 0xff;
|
||||
/* We are done if there is an unneeded bit set. */
|
||||
ok = (a->data[i] & mask) == 0;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp,
|
||||
|
||||
if (tag >= 32)
|
||||
{
|
||||
i=ASN1_R_TAG_VALUE_TOO_HIGH;;
|
||||
i=ASN1_R_TAG_VALUE_TOO_HIGH;
|
||||
goto err;
|
||||
}
|
||||
if (!(ASN1_tag2bit(tag) & type))
|
||||
|
||||
@@ -117,8 +117,8 @@ err:
|
||||
|
||||
int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
|
||||
{
|
||||
static int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
|
||||
static int max[9]={99, 99,12,31,23,59,59,12,59};
|
||||
static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
|
||||
static const int max[9]={99, 99,12,31,23,59,59,12,59};
|
||||
char *a;
|
||||
int n,i,l,o;
|
||||
|
||||
@@ -176,6 +176,11 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
|
||||
o++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Missing time zone information. */
|
||||
goto err;
|
||||
}
|
||||
return(o == l);
|
||||
err:
|
||||
return(0);
|
||||
@@ -205,6 +210,12 @@ int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str)
|
||||
|
||||
ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
|
||||
time_t t)
|
||||
{
|
||||
return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0);
|
||||
}
|
||||
|
||||
ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
|
||||
time_t t, int offset_day, long offset_sec)
|
||||
{
|
||||
char *p;
|
||||
struct tm *ts;
|
||||
@@ -220,6 +231,12 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
|
||||
if (ts == NULL)
|
||||
return(NULL);
|
||||
|
||||
if (offset_day || offset_sec)
|
||||
{
|
||||
if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p=(char *)s->data;
|
||||
if ((p == NULL) || ((size_t)s->length < len))
|
||||
{
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
/* crypto/asn1/a_hdr.c */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/asn1_mac.h>
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
int i2d_ASN1_HEADER(ASN1_HEADER *a, unsigned char **pp)
|
||||
{
|
||||
M_ASN1_I2D_vars(a);
|
||||
|
||||
M_ASN1_I2D_len(a->header, i2d_ASN1_OCTET_STRING);
|
||||
M_ASN1_I2D_len(a->data, a->meth->i2d);
|
||||
|
||||
M_ASN1_I2D_seq_total();
|
||||
|
||||
M_ASN1_I2D_put(a->header, i2d_ASN1_OCTET_STRING);
|
||||
M_ASN1_I2D_put(a->data, a->meth->i2d);
|
||||
|
||||
M_ASN1_I2D_finish();
|
||||
}
|
||||
|
||||
ASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a, const unsigned char **pp,
|
||||
long length)
|
||||
{
|
||||
M_ASN1_D2I_vars(a,ASN1_HEADER *,ASN1_HEADER_new);
|
||||
|
||||
M_ASN1_D2I_Init();
|
||||
M_ASN1_D2I_start_sequence();
|
||||
M_ASN1_D2I_get_x(ASN1_OCTET_STRING,ret->header,d2i_ASN1_OCTET_STRING);
|
||||
if (ret->meth != NULL)
|
||||
{
|
||||
M_ASN1_D2I_get_x(void,ret->data,ret->meth->d2i);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (a != NULL) (*a)=ret;
|
||||
return(ret);
|
||||
}
|
||||
M_ASN1_D2I_Finish(a,ASN1_HEADER_free,ASN1_F_D2I_ASN1_HEADER);
|
||||
}
|
||||
|
||||
ASN1_HEADER *ASN1_HEADER_new(void)
|
||||
{
|
||||
ASN1_HEADER *ret=NULL;
|
||||
ASN1_CTX c;
|
||||
|
||||
M_ASN1_New_Malloc(ret,ASN1_HEADER);
|
||||
M_ASN1_New(ret->header,M_ASN1_OCTET_STRING_new);
|
||||
ret->meth=NULL;
|
||||
ret->data=NULL;
|
||||
return(ret);
|
||||
M_ASN1_New_Error(ASN1_F_ASN1_HEADER_NEW);
|
||||
}
|
||||
|
||||
void ASN1_HEADER_free(ASN1_HEADER *a)
|
||||
{
|
||||
if (a == NULL) return;
|
||||
M_ASN1_OCTET_STRING_free(a->header);
|
||||
if (a->meth != NULL)
|
||||
a->meth->destroy(a->data);
|
||||
OPENSSL_free(a);
|
||||
}
|
||||
@@ -61,10 +61,10 @@
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/bn.h>
|
||||
|
||||
ASN1_INTEGER *ASN1_INTEGER_dup(ASN1_INTEGER *x)
|
||||
ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x)
|
||||
{ return M_ASN1_INTEGER_dup(x);}
|
||||
|
||||
int ASN1_INTEGER_cmp(ASN1_INTEGER *x, ASN1_INTEGER *y)
|
||||
int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y)
|
||||
{
|
||||
int neg, ret;
|
||||
/* Compare signs */
|
||||
@@ -373,7 +373,7 @@ int ASN1_INTEGER_set(ASN1_INTEGER *a, long v)
|
||||
return(1);
|
||||
}
|
||||
|
||||
long ASN1_INTEGER_get(ASN1_INTEGER *a)
|
||||
long ASN1_INTEGER_get(const ASN1_INTEGER *a)
|
||||
{
|
||||
int neg=0,i;
|
||||
long r=0;
|
||||
@@ -402,7 +402,7 @@ long ASN1_INTEGER_get(ASN1_INTEGER *a)
|
||||
return(r);
|
||||
}
|
||||
|
||||
ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *bn, ASN1_INTEGER *ai)
|
||||
ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
|
||||
{
|
||||
ASN1_INTEGER *ret;
|
||||
int len,j;
|
||||
@@ -444,7 +444,7 @@ err:
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai, BIGNUM *bn)
|
||||
BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn)
|
||||
{
|
||||
BIGNUM *ret;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* a_mbstr.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
/* ====================================================================
|
||||
|
||||
@@ -281,8 +281,6 @@ ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
|
||||
return ret;
|
||||
err:
|
||||
ASN1err(ASN1_F_D2I_ASN1_OBJECT,i);
|
||||
if ((ret != NULL) && ((a == NULL) || (*a != ret)))
|
||||
ASN1_OBJECT_free(ret);
|
||||
return(NULL);
|
||||
}
|
||||
ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
|
||||
@@ -290,6 +288,7 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
|
||||
{
|
||||
ASN1_OBJECT *ret=NULL;
|
||||
const unsigned char *p;
|
||||
unsigned char *data;
|
||||
int i;
|
||||
|
||||
/* only the ASN1_OBJECTs from the 'table' will have values
|
||||
@@ -302,15 +301,22 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
|
||||
else ret=(*a);
|
||||
|
||||
p= *pp;
|
||||
if ((ret->data == NULL) || (ret->length < len))
|
||||
/* detach data from object */
|
||||
data = (unsigned char *)ret->data;
|
||||
ret->data = NULL;
|
||||
/* once detached we can change it */
|
||||
if ((data == NULL) || (ret->length < len))
|
||||
{
|
||||
if (ret->data != NULL) OPENSSL_free(ret->data);
|
||||
ret->data=(unsigned char *)OPENSSL_malloc(len ? (int)len : 1);
|
||||
ret->flags|=ASN1_OBJECT_FLAG_DYNAMIC_DATA;
|
||||
if (ret->data == NULL)
|
||||
ret->length=0;
|
||||
if (data != NULL) OPENSSL_free(data);
|
||||
data=(unsigned char *)OPENSSL_malloc(len ? (int)len : 1);
|
||||
if (data == NULL)
|
||||
{ i=ERR_R_MALLOC_FAILURE; goto err; }
|
||||
ret->flags|=ASN1_OBJECT_FLAG_DYNAMIC_DATA;
|
||||
}
|
||||
memcpy(ret->data,p,(int)len);
|
||||
memcpy(data,p,(int)len);
|
||||
/* reattach data to object, after which it remains const */
|
||||
ret->data =data;
|
||||
ret->length=(int)len;
|
||||
ret->sn=NULL;
|
||||
ret->ln=NULL;
|
||||
@@ -359,7 +365,7 @@ void ASN1_OBJECT_free(ASN1_OBJECT *a)
|
||||
}
|
||||
if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA)
|
||||
{
|
||||
if (a->data != NULL) OPENSSL_free(a->data);
|
||||
if (a->data != NULL) OPENSSL_free((void *)a->data);
|
||||
a->data=NULL;
|
||||
a->length=0;
|
||||
}
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *x)
|
||||
ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *x)
|
||||
{ return M_ASN1_OCTET_STRING_dup(x); }
|
||||
|
||||
int ASN1_OCTET_STRING_cmp(ASN1_OCTET_STRING *a, ASN1_OCTET_STRING *b)
|
||||
int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, const ASN1_OCTET_STRING *b)
|
||||
{ return M_ASN1_OCTET_STRING_cmp(a, b); }
|
||||
|
||||
int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *x, const unsigned char *d, int len)
|
||||
|
||||
@@ -85,8 +85,9 @@ static int SetBlobCmp(const void *elem1, const void *elem2 )
|
||||
}
|
||||
|
||||
/* int is_set: if TRUE, then sort the contents (i.e. it isn't a SEQUENCE) */
|
||||
int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
|
||||
int ex_class, int is_set)
|
||||
int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
|
||||
i2d_of_void *i2d, int ex_tag, int ex_class,
|
||||
int is_set)
|
||||
{
|
||||
int ret=0,r;
|
||||
int i;
|
||||
@@ -96,8 +97,8 @@ int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
|
||||
int totSize;
|
||||
|
||||
if (a == NULL) return(0);
|
||||
for (i=sk_num(a)-1; i>=0; i--)
|
||||
ret+=i2d(sk_value(a,i),NULL);
|
||||
for (i=sk_BLOCK_num(a)-1; i>=0; i--)
|
||||
ret+=i2d(sk_BLOCK_value(a,i),NULL);
|
||||
r=ASN1_object_size(1,ret,ex_tag);
|
||||
if (pp == NULL) return(r);
|
||||
|
||||
@@ -108,10 +109,10 @@ int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
|
||||
/* And then again by Ben */
|
||||
/* And again by Steve */
|
||||
|
||||
if(!is_set || (sk_num(a) < 2))
|
||||
if(!is_set || (sk_BLOCK_num(a) < 2))
|
||||
{
|
||||
for (i=0; i<sk_num(a); i++)
|
||||
i2d(sk_value(a,i),&p);
|
||||
for (i=0; i<sk_BLOCK_num(a); i++)
|
||||
i2d(sk_BLOCK_value(a,i),&p);
|
||||
|
||||
*pp=p;
|
||||
return(r);
|
||||
@@ -119,17 +120,17 @@ int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
|
||||
|
||||
pStart = p; /* Catch the beg of Setblobs*/
|
||||
/* In this array we will store the SET blobs */
|
||||
rgSetBlob = (MYBLOB *)OPENSSL_malloc(sk_num(a) * sizeof(MYBLOB));
|
||||
rgSetBlob = OPENSSL_malloc(sk_BLOCK_num(a) * sizeof(MYBLOB));
|
||||
if (rgSetBlob == NULL)
|
||||
{
|
||||
ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
|
||||
for (i=0; i<sk_num(a); i++)
|
||||
for (i=0; i<sk_BLOCK_num(a); i++)
|
||||
{
|
||||
rgSetBlob[i].pbData = p; /* catch each set encode blob */
|
||||
i2d(sk_value(a,i),&p);
|
||||
i2d(sk_BLOCK_value(a,i),&p);
|
||||
rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this
|
||||
SetBlob
|
||||
*/
|
||||
@@ -139,7 +140,7 @@ SetBlob
|
||||
|
||||
/* Now we have to sort the blobs. I am using a simple algo.
|
||||
*Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/
|
||||
qsort( rgSetBlob, sk_num(a), sizeof(MYBLOB), SetBlobCmp);
|
||||
qsort( rgSetBlob, sk_BLOCK_num(a), sizeof(MYBLOB), SetBlobCmp);
|
||||
if (!(pTempMem = OPENSSL_malloc(totSize)))
|
||||
{
|
||||
ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
|
||||
@@ -148,7 +149,7 @@ SetBlob
|
||||
|
||||
/* Copy to temp mem */
|
||||
p = pTempMem;
|
||||
for(i=0; i<sk_num(a); ++i)
|
||||
for(i=0; i<sk_BLOCK_num(a); ++i)
|
||||
{
|
||||
memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData);
|
||||
p += rgSetBlob[i].cbData;
|
||||
@@ -162,16 +163,17 @@ SetBlob
|
||||
return(r);
|
||||
}
|
||||
|
||||
STACK *d2i_ASN1_SET(STACK **a, const unsigned char **pp, long length,
|
||||
d2i_of_void *d2i, void (*free_func)(void *), int ex_tag,
|
||||
int ex_class)
|
||||
STACK_OF(BLOCK) *d2i_ASN1_SET(STACK_OF(BLOCK) **a, const unsigned char **pp,
|
||||
long length, d2i_of_void *d2i,
|
||||
void (*free_func)(BLOCK), int ex_tag,
|
||||
int ex_class)
|
||||
{
|
||||
ASN1_const_CTX c;
|
||||
STACK *ret=NULL;
|
||||
STACK_OF(BLOCK) *ret=NULL;
|
||||
|
||||
if ((a == NULL) || ((*a) == NULL))
|
||||
{
|
||||
if ((ret=sk_new_null()) == NULL)
|
||||
if ((ret=sk_BLOCK_new_null()) == NULL)
|
||||
{
|
||||
ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@@ -216,10 +218,10 @@ STACK *d2i_ASN1_SET(STACK **a, const unsigned char **pp, long length,
|
||||
if ((s=d2i(NULL,&c.p,c.slen)) == NULL)
|
||||
{
|
||||
ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_ERROR_PARSING_SET_ELEMENT);
|
||||
asn1_add_error(*pp,(int)(c.q- *pp));
|
||||
asn1_add_error(*pp,(int)(c.p- *pp));
|
||||
goto err;
|
||||
}
|
||||
if (!sk_push(ret,s)) goto err;
|
||||
if (!sk_BLOCK_push(ret,s)) goto err;
|
||||
}
|
||||
if (a != NULL) (*a)=ret;
|
||||
*pp=c.p;
|
||||
@@ -228,9 +230,9 @@ err:
|
||||
if ((ret != NULL) && ((a == NULL) || (*a != ret)))
|
||||
{
|
||||
if (free_func != NULL)
|
||||
sk_pop_free(ret,free_func);
|
||||
sk_BLOCK_pop_free(ret,free_func);
|
||||
else
|
||||
sk_free(ret);
|
||||
sk_BLOCK_free(ret);
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/objects.h>
|
||||
#include <openssl/buffer.h>
|
||||
#include "asn1_locl.h"
|
||||
|
||||
#ifndef NO_ASN1_OLD
|
||||
|
||||
@@ -218,45 +219,47 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
|
||||
{
|
||||
EVP_MD_CTX ctx;
|
||||
unsigned char *buf_in=NULL,*buf_out=NULL;
|
||||
int i,inl=0,outl=0,outll=0;
|
||||
X509_ALGOR *a;
|
||||
int inl=0,outl=0,outll=0;
|
||||
int signid, paramtype;
|
||||
|
||||
EVP_MD_CTX_init(&ctx);
|
||||
for (i=0; i<2; i++)
|
||||
if (type == NULL)
|
||||
{
|
||||
if (i == 0)
|
||||
a=algor1;
|
||||
else
|
||||
a=algor2;
|
||||
if (a == NULL) continue;
|
||||
if (type->pkey_type == NID_dsaWithSHA1 ||
|
||||
type->pkey_type == NID_ecdsa_with_SHA1)
|
||||
int def_nid;
|
||||
if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) > 0)
|
||||
type = EVP_get_digestbynid(def_nid);
|
||||
}
|
||||
|
||||
if (type == NULL)
|
||||
{
|
||||
ASN1err(ASN1_F_ASN1_ITEM_SIGN, ASN1_R_NO_DEFAULT_DIGEST);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (type->flags & EVP_MD_FLAG_PKEY_METHOD_SIGNATURE)
|
||||
{
|
||||
if (!pkey->ameth ||
|
||||
!OBJ_find_sigid_by_algs(&signid, EVP_MD_nid(type),
|
||||
pkey->ameth->pkey_id))
|
||||
{
|
||||
/* special case: RFC 3279 tells us to omit 'parameters'
|
||||
* with id-dsa-with-sha1 and ecdsa-with-SHA1 */
|
||||
ASN1_TYPE_free(a->parameter);
|
||||
a->parameter = NULL;
|
||||
}
|
||||
else if ((a->parameter == NULL) ||
|
||||
(a->parameter->type != V_ASN1_NULL))
|
||||
{
|
||||
ASN1_TYPE_free(a->parameter);
|
||||
if ((a->parameter=ASN1_TYPE_new()) == NULL) goto err;
|
||||
a->parameter->type=V_ASN1_NULL;
|
||||
}
|
||||
ASN1_OBJECT_free(a->algorithm);
|
||||
a->algorithm=OBJ_nid2obj(type->pkey_type);
|
||||
if (a->algorithm == NULL)
|
||||
{
|
||||
ASN1err(ASN1_F_ASN1_ITEM_SIGN,ASN1_R_UNKNOWN_OBJECT_TYPE);
|
||||
goto err;
|
||||
}
|
||||
if (a->algorithm->length == 0)
|
||||
{
|
||||
ASN1err(ASN1_F_ASN1_ITEM_SIGN,ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD);
|
||||
goto err;
|
||||
ASN1err(ASN1_F_ASN1_ITEM_SIGN,
|
||||
ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
signid = type->pkey_type;
|
||||
|
||||
if (pkey->ameth->pkey_flags & ASN1_PKEY_SIGPARAM_NULL)
|
||||
paramtype = V_ASN1_NULL;
|
||||
else
|
||||
paramtype = V_ASN1_UNDEF;
|
||||
|
||||
if (algor1)
|
||||
X509_ALGOR_set0(algor1, OBJ_nid2obj(signid), paramtype, NULL);
|
||||
if (algor2)
|
||||
X509_ALGOR_set0(algor2, OBJ_nid2obj(signid), paramtype, NULL);
|
||||
|
||||
EVP_MD_CTX_init(&ctx);
|
||||
inl=ASN1_item_i2d(asn,&buf_in, it);
|
||||
outll=outl=EVP_PKEY_size(pkey);
|
||||
buf_out=(unsigned char *)OPENSSL_malloc((unsigned int)outl);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* a_strex.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2000.
|
||||
*/
|
||||
/* ====================================================================
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* a_strnid.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
/* ====================================================================
|
||||
@@ -67,7 +67,6 @@ static STACK_OF(ASN1_STRING_TABLE) *stable = NULL;
|
||||
static void st_free(ASN1_STRING_TABLE *tbl);
|
||||
static int sk_table_cmp(const ASN1_STRING_TABLE * const *a,
|
||||
const ASN1_STRING_TABLE * const *b);
|
||||
static int table_cmp(const void *a, const void *b);
|
||||
|
||||
|
||||
/* This is the global mask for the mbstring functions: this is use to
|
||||
@@ -158,7 +157,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in,
|
||||
|
||||
/* This table must be kept in NID order */
|
||||
|
||||
static ASN1_STRING_TABLE tbl_standard[] = {
|
||||
static const ASN1_STRING_TABLE tbl_standard[] = {
|
||||
{NID_commonName, 1, ub_common_name, DIRSTRING_TYPE, 0},
|
||||
{NID_countryName, 2, 2, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK},
|
||||
{NID_localityName, 1, ub_locality_name, DIRSTRING_TYPE, 0},
|
||||
@@ -186,22 +185,23 @@ static int sk_table_cmp(const ASN1_STRING_TABLE * const *a,
|
||||
return (*a)->nid - (*b)->nid;
|
||||
}
|
||||
|
||||
static int table_cmp(const void *a, const void *b)
|
||||
DECLARE_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table);
|
||||
|
||||
static int table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b)
|
||||
{
|
||||
const ASN1_STRING_TABLE *sa = a, *sb = b;
|
||||
return sa->nid - sb->nid;
|
||||
return a->nid - b->nid;
|
||||
}
|
||||
|
||||
IMPLEMENT_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table);
|
||||
|
||||
ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid)
|
||||
{
|
||||
int idx;
|
||||
ASN1_STRING_TABLE *ttmp;
|
||||
ASN1_STRING_TABLE fnd;
|
||||
fnd.nid = nid;
|
||||
ttmp = (ASN1_STRING_TABLE *) OBJ_bsearch((char *)&fnd,
|
||||
(char *)tbl_standard,
|
||||
sizeof(tbl_standard)/sizeof(ASN1_STRING_TABLE),
|
||||
sizeof(ASN1_STRING_TABLE), table_cmp);
|
||||
ttmp = OBJ_bsearch_table(&fnd, tbl_standard,
|
||||
sizeof(tbl_standard)/sizeof(ASN1_STRING_TABLE));
|
||||
if(ttmp) return ttmp;
|
||||
if(!stable) return NULL;
|
||||
idx = sk_ASN1_STRING_TABLE_find(stable, &fnd);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user