Compare commits
347 Commits
OpenSSL_1_
...
OpenSSL_1_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
bba8456e65 | ||
![]() |
b493a05720 | ||
![]() |
c2a8133d1c | ||
![]() |
e935440ad7 | ||
![]() |
8eaf563c41 | ||
![]() |
80d7e6b039 | ||
![]() |
9c44e33230 | ||
![]() |
b86f3197b7 | ||
![]() |
0875c00584 | ||
![]() |
dd3a770e07 | ||
![]() |
64763ce09b | ||
![]() |
2fffc29bd1 | ||
![]() |
d2650c3a4a | ||
![]() |
b5bd966ea4 | ||
![]() |
e71f7786e3 | ||
![]() |
e3b95e6b24 | ||
![]() |
658eeec7cd | ||
![]() |
e1c3d65f08 | ||
![]() |
2e4abe2ce2 | ||
![]() |
ea294bb50e | ||
![]() |
b58ea0b941 | ||
![]() |
16067fe5fd | ||
![]() |
f2e9070f26 | ||
![]() |
fe8629e1a5 | ||
![]() |
2a12eff4b2 | ||
![]() |
b680fef061 | ||
![]() |
7f7414e054 | ||
![]() |
8b9db484ed | ||
![]() |
f59f2fcbff | ||
![]() |
419a530194 | ||
![]() |
69a8901eb1 | ||
![]() |
2bcd08e691 | ||
![]() |
167d692925 | ||
![]() |
025ee1dbde | ||
![]() |
dce7b92d0b | ||
![]() |
db886c2a2b | ||
![]() |
4d43129446 | ||
![]() |
92107f8150 | ||
![]() |
e82d6a2019 | ||
![]() |
4e5755cd85 | ||
![]() |
dda8dcd2c0 | ||
![]() |
16646b0018 | ||
![]() |
320881c25c | ||
![]() |
1d23fb382e | ||
![]() |
c4f1942a76 | ||
![]() |
38c42c6eea | ||
![]() |
51eb247d0f | ||
![]() |
8d22673a62 | ||
![]() |
3622d3743e | ||
![]() |
fbbf28e7c2 | ||
![]() |
f5dac77c06 | ||
![]() |
067d72a082 | ||
![]() |
ac0f3f506a | ||
![]() |
f819147028 | ||
![]() |
a530963f05 | ||
![]() |
bc5a53f5e9 | ||
![]() |
83382fb9d5 | ||
![]() |
0674370017 | ||
![]() |
2f91cb2c5e | ||
![]() |
acb25c2327 | ||
![]() |
2d842a90f8 | ||
![]() |
80705bfc50 | ||
![]() |
2a8692311d | ||
![]() |
7d0ed89d57 | ||
![]() |
0912fae6ce | ||
![]() |
0bb2154ee9 | ||
![]() |
c9355e20c3 | ||
![]() |
6545372c24 | ||
![]() |
17f8412983 | ||
![]() |
d48df9a91b | ||
![]() |
65448fd0d3 | ||
![]() |
a677c87b7b | ||
![]() |
f8a123b4a2 | ||
![]() |
c64beae686 | ||
![]() |
99ef8323e4 | ||
![]() |
2668c58969 | ||
![]() |
5ae3168a77 | ||
![]() |
559579659c | ||
![]() |
2dd74160cc | ||
![]() |
2adf63272c | ||
![]() |
fb5a0fb8f1 | ||
![]() |
c222de16ce | ||
![]() |
19091ac236 | ||
![]() |
2fcf251d3d | ||
![]() |
dab5848cd9 | ||
![]() |
a02f0f3d69 | ||
![]() |
e69d49364e | ||
![]() |
38921f0abf | ||
![]() |
d76ce84c92 | ||
![]() |
c3c7a0d26e | ||
![]() |
d06bc800f2 | ||
![]() |
a01dc637bd | ||
![]() |
3bbbe757ea | ||
![]() |
76474e519f | ||
![]() |
420f572d49 | ||
![]() |
6d65d44b95 | ||
![]() |
91e1ff77a0 | ||
![]() |
c8e60ec8fa | ||
![]() |
e840570207 | ||
![]() |
077527f19e | ||
![]() |
00daa2e6c6 | ||
![]() |
000f221d60 | ||
![]() |
579a605494 | ||
![]() |
fa29ebd7ed | ||
![]() |
3360999046 | ||
![]() |
0b965e59cb | ||
![]() |
1684846f54 | ||
![]() |
dde6d9520c | ||
![]() |
f9a772b743 | ||
![]() |
0d6f7dbb50 | ||
![]() |
994a1ea900 | ||
![]() |
e5d1fd38d1 | ||
![]() |
a330ed26be | ||
![]() |
ca0a86c89d | ||
![]() |
1cf7bbce48 | ||
![]() |
4cdde22432 | ||
![]() |
a28cee6efe | ||
![]() |
1977bafba4 | ||
![]() |
3c96907f2b | ||
![]() |
2d96a30dc7 | ||
![]() |
c09d1df7d3 | ||
![]() |
c20dd45477 | ||
![]() |
abb320463d | ||
![]() |
ada3f8b5d3 | ||
![]() |
6172561597 | ||
![]() |
368b64d6dd | ||
![]() |
4ed0ca2b3e | ||
![]() |
a92f98c630 | ||
![]() |
4385b556b4 | ||
![]() |
5e7c9519b8 | ||
![]() |
ef02492908 | ||
![]() |
86d5f9ba4f | ||
![]() |
febcec6254 | ||
![]() |
f07cb1ce8e | ||
![]() |
b3c17a4805 | ||
![]() |
7b83fe34c0 | ||
![]() |
e0b1c57ae0 | ||
![]() |
6806b06d21 | ||
![]() |
0af0e9d747 | ||
![]() |
2191b3ba44 | ||
![]() |
73020a945b | ||
![]() |
9c2d0cd11c | ||
![]() |
0ef9b9c7bf | ||
![]() |
c14c6e996d | ||
![]() |
51381cd4ed | ||
![]() |
8c9ab050e5 | ||
![]() |
b6996c7849 | ||
![]() |
2c23b0716e | ||
![]() |
f548a0e4d5 | ||
![]() |
a404f63f92 | ||
![]() |
b54f50d277 | ||
![]() |
10ba241909 | ||
![]() |
1f238b1c4a | ||
![]() |
ef85bf8c2b | ||
![]() |
cbfccdb729 | ||
![]() |
94111aa401 | ||
![]() |
eec48070a1 | ||
![]() |
eebe668174 | ||
![]() |
8a15a4a7b4 | ||
![]() |
19057003f1 | ||
![]() |
031648d4ce | ||
![]() |
02bee340a2 | ||
![]() |
f6f2f68a05 | ||
![]() |
982d68a0c0 | ||
![]() |
7585a86a76 | ||
![]() |
73190f1b46 | ||
![]() |
6673ac592a | ||
![]() |
59aa655b53 | ||
![]() |
c4c99b4961 | ||
![]() |
ccbbcddd5f | ||
![]() |
65d82478d8 | ||
![]() |
02a6518a02 | ||
![]() |
a79053511b | ||
![]() |
eb56eb2279 | ||
![]() |
d40f6d4a02 | ||
![]() |
943ae0951a | ||
![]() |
999eeaba14 | ||
![]() |
dfa81d9efb | ||
![]() |
1dba06e7b0 | ||
![]() |
daac87be95 | ||
![]() |
e97359435e | ||
![]() |
afce9bcca1 | ||
![]() |
9c7baca820 | ||
![]() |
618265e645 | ||
![]() |
9728978b75 | ||
![]() |
938c0bbae1 | ||
![]() |
a0cd818831 | ||
![]() |
31c4ab5401 | ||
![]() |
1f65529824 | ||
![]() |
5b3a6eedd1 | ||
![]() |
6938440d68 | ||
![]() |
57ec6c9bad | ||
![]() |
7a09bc4068 | ||
![]() |
deb15645a8 | ||
![]() |
f0b358e8b9 | ||
![]() |
dce2b5a8fc | ||
![]() |
59d100d959 | ||
![]() |
d497b5362b | ||
![]() |
369b0abdc2 | ||
![]() |
72240ab31a | ||
![]() |
dc4e1ddc9f | ||
![]() |
ff656346fa | ||
![]() |
ca91057d50 | ||
![]() |
8c1e7de6cb | ||
![]() |
207886cd3a | ||
![]() |
336d1ee733 | ||
![]() |
bed2b769f5 | ||
![]() |
26029d9c4c | ||
![]() |
c64c888929 | ||
![]() |
8d9db41880 | ||
![]() |
4fae54a8e0 | ||
![]() |
9f35928719 | ||
![]() |
c5af032df5 | ||
![]() |
8a898a6fcc | ||
![]() |
9f827ded1c | ||
![]() |
5daa9411a0 | ||
![]() |
094d4019b8 | ||
![]() |
1507f3abba | ||
![]() |
30e8defe52 | ||
![]() |
9f4dd3e3e3 | ||
![]() |
8c00014d7e | ||
![]() |
1cf12a6350 | ||
![]() |
dc9461e23f | ||
![]() |
72d57050df | ||
![]() |
49d1f665a4 | ||
![]() |
2c25edc4c1 | ||
![]() |
d2f098b33d | ||
![]() |
6f4f7f35f3 | ||
![]() |
0a4fe6c8db | ||
![]() |
7bba401d5d | ||
![]() |
c73cff12f1 | ||
![]() |
b32d93840e | ||
![]() |
cb457849fd | ||
![]() |
cb3c30059a | ||
![]() |
20dc93e49e | ||
![]() |
b620447dcc | ||
![]() |
4ffd2ad1d3 | ||
![]() |
acc9938ba5 | ||
![]() |
f6d13ac8cf | ||
![]() |
24cb653c6b | ||
![]() |
6dfd3cf68e | ||
![]() |
073775cbbb | ||
![]() |
e995d5044e | ||
![]() |
5b0a79a27a | ||
![]() |
6747de655e | ||
![]() |
91bad2b09e | ||
![]() |
1244d5b713 | ||
![]() |
c0ed5cd47b | ||
![]() |
c8281fd38e | ||
![]() |
fe8e6bff9b | ||
![]() |
9caf25d144 | ||
![]() |
348620c7ac | ||
![]() |
30fc2ab92b | ||
![]() |
5b5464d525 | ||
![]() |
cd15a0528f | ||
![]() |
7b52778eff | ||
![]() |
162de2f2b5 | ||
![]() |
f6e4af6fd7 | ||
![]() |
32b76dcdac | ||
![]() |
bcfd252052 | ||
![]() |
32c452779e | ||
![]() |
118b90c59e | ||
![]() |
f6a61b140e | ||
![]() |
75ece4b5cf | ||
![]() |
724cca4178 | ||
![]() |
5b3fdb0181 | ||
![]() |
fcc3d0265d | ||
![]() |
5356ea7cde | ||
![]() |
06226df1a9 | ||
![]() |
bf638ef026 | ||
![]() |
07973d5db8 | ||
![]() |
3b3f71121b | ||
![]() |
47333a34d5 | ||
![]() |
d92138f703 | ||
![]() |
b2bf335327 | ||
![]() |
33bec62a20 | ||
![]() |
2e630b1847 | ||
![]() |
002d3fe863 | ||
![]() |
fb24311e7c | ||
![]() |
90278430d9 | ||
![]() |
bcd9d12a8d | ||
![]() |
79363339b7 | ||
![]() |
fbe2c6b33e | ||
![]() |
fc11f47229 | ||
![]() |
2b23d89d14 | ||
![]() |
9cfa3cff54 | ||
![]() |
6507653e72 | ||
![]() |
7fe747d1eb | ||
![]() |
32567c9f3b | ||
![]() |
4f3d52fedc | ||
![]() |
8321bab39c | ||
![]() |
989238802a | ||
![]() |
9051fc538f | ||
![]() |
03fd7f27db | ||
![]() |
45d6a15ae9 | ||
![]() |
6c6ca18664 | ||
![]() |
97fe2b40c1 | ||
![]() |
f689ab5017 | ||
![]() |
edb7cac271 | ||
![]() |
81d87a2a28 | ||
![]() |
7366f0b304 | ||
![]() |
1d8fa09c80 | ||
![]() |
e085e6c84c | ||
![]() |
008fa4584d | ||
![]() |
c8c49133d9 | ||
![]() |
961f1dea06 | ||
![]() |
1700426256 | ||
![]() |
aa7f5baad2 | ||
![]() |
45acdd6f6d | ||
![]() |
8b354e776b | ||
![]() |
868f5e44ca | ||
![]() |
4e5fdd11ea | ||
![]() |
d552a3391a | ||
![]() |
d023b4e2dd | ||
![]() |
fa79cc9c23 | ||
![]() |
06daa75fb9 | ||
![]() |
ffa304c838 | ||
![]() |
df21765a3e | ||
![]() |
5a6ae115f8 | ||
![]() |
5e5df40b9b | ||
![]() |
6d4943e81f | ||
![]() |
57cffe901f | ||
![]() |
a758f61793 | ||
![]() |
b3b35df2a2 | ||
![]() |
5ad50246fc | ||
![]() |
d89b895cfd | ||
![]() |
d793c292cb | ||
![]() |
57749b1b9f | ||
![]() |
1cdb7854a5 | ||
![]() |
704d33b347 | ||
![]() |
b2a7515ee8 | ||
![]() |
f4f2b52995 | ||
![]() |
c7d5edbf5e | ||
![]() |
d8f07f1674 | ||
![]() |
78bfb45b07 | ||
![]() |
6ad4d60555 | ||
![]() |
2fad8aa209 | ||
![]() |
74397d45b2 | ||
![]() |
c8ca769d3b | ||
![]() |
25d42c17e3 | ||
![]() |
a377811f15 | ||
![]() |
ef1b6b2cf2 | ||
![]() |
1699389a46 | ||
![]() |
ad8ee3d7d1 | ||
![]() |
39f0a4d8e9 | ||
![]() |
15a9821cc2 | ||
![]() |
53e97e7433 |
25
ACKNOWLEDGMENTS
Normal file
25
ACKNOWLEDGMENTS
Normal file
@@ -0,0 +1,25 @@
|
||||
The OpenSSL project depends on volunteer efforts and financial support from
|
||||
the end user community. That support comes in the form of donations and paid
|
||||
sponsorships, software support contracts, paid consulting services
|
||||
and commissioned software development.
|
||||
|
||||
Since all these activities support the continued development and improvement
|
||||
of OpenSSL we consider all these clients and customers as sponsors of the
|
||||
OpenSSL project.
|
||||
|
||||
We would like to identify and thank the following such sponsors for their past
|
||||
or current significant support of the OpenSSL project:
|
||||
|
||||
Very significant support:
|
||||
|
||||
OpenGear: www.opengear.com
|
||||
|
||||
Significant support:
|
||||
|
||||
PSW Group: www.psw.net
|
||||
|
||||
Please note that we ask permission to identify sponsors and that some sponsors
|
||||
we consider eligible for inclusion here have requested to remain anonymous.
|
||||
|
||||
Additional sponsorship or financial support is always welcome: for more
|
||||
information please contact the OpenSSL Software Foundation.
|
223
CHANGES
223
CHANGES
@@ -2,12 +2,84 @@
|
||||
OpenSSL CHANGES
|
||||
_______________
|
||||
|
||||
Changes between 0.9.8m (?) and 1.0.0 [xx XXX xxxx]
|
||||
Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
|
||||
|
||||
*) Fix bug where CRLs with nextUpdate in the past are sometimes accepted
|
||||
by initialising X509_STORE_CTX properly. (CVE-2011-3207)
|
||||
[Kaspar Brand <ossl@velox.ch>]
|
||||
|
||||
*) Fix SSL memory handling for (EC)DH ciphersuites, in particular
|
||||
for multi-threaded use of ECDH. (CVE-2011-3210)
|
||||
[Adam Langley (Google)]
|
||||
|
||||
*) Fix x509_name_ex_d2i memory leak on bad inputs.
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
|
||||
signature public key algorithm by using OID xref utilities instead.
|
||||
Before this you could only use some ECC ciphersuites with SHA1 only.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add protection against ECDSA timing attacks as mentioned in the paper
|
||||
by Billy Bob Brumley and Nicola Tuveri, see:
|
||||
|
||||
http://eprint.iacr.org/2011/232.pdf
|
||||
|
||||
[Billy Bob Brumley and Nicola Tuveri]
|
||||
|
||||
Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
|
||||
|
||||
*) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
|
||||
[Neel Mehta, Adam Langley, Bodo Moeller (Google)]
|
||||
|
||||
*) Fix bug in string printing code: if *any* escaping is enabled we must
|
||||
escape the escape character (backslash) or the resulting string is
|
||||
ambiguous.
|
||||
[Steve Henson]
|
||||
|
||||
Changes between 1.0.0b and 1.0.0c [2 Dec 2010]
|
||||
|
||||
*) Disable code workaround for ancient and obsolete Netscape browsers
|
||||
and servers: an attacker can use it in a ciphersuite downgrade attack.
|
||||
Thanks to Martin Rex for discovering this bug. CVE-2010-4180
|
||||
[Steve Henson]
|
||||
|
||||
*) Fixed J-PAKE implementation error, originally discovered by
|
||||
Sebastien Martini, further info and confirmation from Stefan
|
||||
Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
|
||||
[Ben Laurie]
|
||||
|
||||
Changes between 1.0.0a and 1.0.0b [16 Nov 2010]
|
||||
|
||||
*) Fix extension code to avoid race conditions which can result in a buffer
|
||||
overrun vulnerability: resumed sessions must not be modified as they can
|
||||
be shared by multiple threads. CVE-2010-3864
|
||||
[Steve Henson]
|
||||
|
||||
*) Fix WIN32 build system to correctly link an ENGINE directory into
|
||||
a DLL.
|
||||
[Steve Henson]
|
||||
|
||||
Changes between 1.0.0 and 1.0.0a [01 Jun 2010]
|
||||
|
||||
*) Check return value of int_rsa_verify in pkey_rsa_verifyrecover
|
||||
(CVE-2010-1633)
|
||||
[Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
|
||||
|
||||
Changes between 0.9.8n and 1.0.0 [29 Mar 2010]
|
||||
|
||||
*) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
|
||||
context. The operation can be customised via the ctrl mechanism in
|
||||
case ENGINEs want to include additional functionality.
|
||||
[Steve Henson]
|
||||
|
||||
*) Tolerate yet another broken PKCS#8 key format: private key value negative.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
|
||||
output hashes compatible with older versions of OpenSSL.
|
||||
[Willy Weisz <weisz@vcpc.univie.ac.at>]
|
||||
|
||||
|
||||
*) Fix compression algorithm handling: if resuming a session use the
|
||||
compression algorithm of the resumed session instead of determining
|
||||
it from client hello again. Don't allow server to change algorithm.
|
||||
@@ -834,8 +906,126 @@
|
||||
|
||||
*) Change 'Configure' script to enable Camellia by default.
|
||||
[NTT]
|
||||
|
||||
Changes between 0.9.8r and 0.9.8s [xx XXX xxxx]
|
||||
|
||||
Changes between 0.9.8l (?) and 0.9.8m (?) [xx XXX xxxx]
|
||||
*) Fix SSL memory handling for (EC)DH ciphersuites, in particular
|
||||
for multi-threaded use of ECDH.
|
||||
[Adam Langley (Google)]
|
||||
|
||||
*) Fix x509_name_ex_d2i memory leak on bad inputs.
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Add protection against ECDSA timing attacks as mentioned in the paper
|
||||
by Billy Bob Brumley and Nicola Tuveri, see:
|
||||
|
||||
http://eprint.iacr.org/2011/232.pdf
|
||||
|
||||
[Billy Bob Brumley and Nicola Tuveri]
|
||||
|
||||
Changes between 0.9.8q and 0.9.8r [8 Feb 2011]
|
||||
|
||||
*) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
|
||||
[Neel Mehta, Adam Langley, Bodo Moeller (Google)]
|
||||
|
||||
*) Fix bug in string printing code: if *any* escaping is enabled we must
|
||||
escape the escape character (backslash) or the resulting string is
|
||||
ambiguous.
|
||||
[Steve Henson]
|
||||
|
||||
Changes between 0.9.8p and 0.9.8q [2 Dec 2010]
|
||||
|
||||
*) Disable code workaround for ancient and obsolete Netscape browsers
|
||||
and servers: an attacker can use it in a ciphersuite downgrade attack.
|
||||
Thanks to Martin Rex for discovering this bug. CVE-2010-4180
|
||||
[Steve Henson]
|
||||
|
||||
*) Fixed J-PAKE implementation error, originally discovered by
|
||||
Sebastien Martini, further info and confirmation from Stefan
|
||||
Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
|
||||
[Ben Laurie]
|
||||
|
||||
Changes between 0.9.8o and 0.9.8p [16 Nov 2010]
|
||||
|
||||
*) Fix extension code to avoid race conditions which can result in a buffer
|
||||
overrun vulnerability: resumed sessions must not be modified as they can
|
||||
be shared by multiple threads. CVE-2010-3864
|
||||
[Steve Henson]
|
||||
|
||||
*) Fix for double free bug in ssl/s3_clnt.c CVE-2010-2939
|
||||
[Steve Henson]
|
||||
|
||||
*) Don't reencode certificate when calculating signature: cache and use
|
||||
the original encoding instead. This makes signature verification of
|
||||
some broken encodings work correctly.
|
||||
[Steve Henson]
|
||||
|
||||
*) ec2_GF2m_simple_mul bugfix: compute correct result if the output EC_POINT
|
||||
is also one of the inputs.
|
||||
[Emilia K<>sper <emilia.kasper@esat.kuleuven.be> (Google)]
|
||||
|
||||
*) Don't repeatedly append PBE algorithms to table if they already exist.
|
||||
Sort table on each new add. This effectively makes the table read only
|
||||
after all algorithms are added and subsequent calls to PKCS12_pbe_add
|
||||
etc are non-op.
|
||||
[Steve Henson]
|
||||
|
||||
Changes between 0.9.8n and 0.9.8o [01 Jun 2010]
|
||||
|
||||
[NB: OpenSSL 0.9.8o and later 0.9.8 patch levels were released after
|
||||
OpenSSL 1.0.0.]
|
||||
|
||||
*) Correct a typo in the CMS ASN1 module which can result in invalid memory
|
||||
access or freeing data twice (CVE-2010-0742)
|
||||
[Steve Henson, Ronald Moesbergen <intercommit@gmail.com>]
|
||||
|
||||
*) Add SHA2 algorithms to SSL_library_init(). SHA2 is becoming far more
|
||||
common in certificates and some applications which only call
|
||||
SSL_library_init and not OpenSSL_add_all_algorithms() will fail.
|
||||
[Steve Henson]
|
||||
|
||||
*) VMS fixes:
|
||||
Reduce copying into .apps and .test in makevms.com
|
||||
Don't try to use blank CA certificate in CA.com
|
||||
Allow use of C files from original directories in maketests.com
|
||||
[Steven M. Schweda" <sms@antinode.info>]
|
||||
|
||||
Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
|
||||
|
||||
*) When rejecting SSL/TLS records due to an incorrect version number, never
|
||||
update s->server with a new major version number. As of
|
||||
- OpenSSL 0.9.8m if 'short' is a 16-bit type,
|
||||
- OpenSSL 0.9.8f if 'short' is longer than 16 bits,
|
||||
the previous behavior could result in a read attempt at NULL when
|
||||
receiving specific incorrect SSL/TLS records once record payload
|
||||
protection is active. (CVE-2010-0740)
|
||||
[Bodo Moeller, Adam Langley <agl@chromium.org>]
|
||||
|
||||
*) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL
|
||||
could be crashed if the relevant tables were not present (e.g. chrooted).
|
||||
[Tomas Hoger <thoger@redhat.com>]
|
||||
|
||||
Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
|
||||
|
||||
*) Always check bn_wexpend() return values for failure. (CVE-2009-3245)
|
||||
[Martin Olsson, Neel Mehta]
|
||||
|
||||
*) Fix X509_STORE locking: Every 'objs' access requires a lock (to
|
||||
accommodate for stack sorting, always a write lock!).
|
||||
[Bodo Moeller]
|
||||
|
||||
*) On some versions of WIN32 Heap32Next is very slow. This can cause
|
||||
excessive delays in the RAND_poll(): over a minute. As a workaround
|
||||
include a time check in the inner Heap32Next loop too.
|
||||
[Steve Henson]
|
||||
|
||||
*) The code that handled flushing of data in SSL/TLS originally used the
|
||||
BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
|
||||
the problem outlined in PR#1949. The fix suggested there however can
|
||||
trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
|
||||
of Apache). So instead simplify the code to flush unconditionally.
|
||||
This should be fine since flushing with no data to flush is a no op.
|
||||
[Steve Henson]
|
||||
|
||||
*) Handle TLS versions 2.0 and later properly and correctly use the
|
||||
highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
|
||||
@@ -844,7 +1034,7 @@
|
||||
|
||||
*) Modify compression code so it frees up structures without using the
|
||||
ex_data callbacks. This works around a problem where some applications
|
||||
call CRYPTO_free_all_ex_data() before application exit (e.g. when
|
||||
call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
|
||||
restarting) then use compression (e.g. SSL with compression) later.
|
||||
This results in significant per-connection memory leaks and
|
||||
has caused some security issues including CVE-2008-1678 and
|
||||
@@ -856,7 +1046,7 @@
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
|
||||
connect (but not renegotiate) with servers which do not support RI.
|
||||
connect and renegotiate with servers which do not support RI.
|
||||
Until RI is more widely deployed this option is enabled by default.
|
||||
[Steve Henson]
|
||||
|
||||
@@ -864,14 +1054,14 @@
|
||||
[Steve Henson]
|
||||
|
||||
*) If client attempts to renegotiate and doesn't support RI respond with
|
||||
a no_renegotiation alert as required by draft-ietf-tls-renegotiation.
|
||||
Some renegotiating TLS clients will continue a connection gracefully
|
||||
when they receive the alert. Unfortunately OpenSSL mishandled
|
||||
this alert and would hang waiting for a server hello which it will never
|
||||
receive. Now we treat a received no_renegotiation alert as a fatal
|
||||
error. This is because applications requesting a renegotiation might well
|
||||
expect it to succeed and would have no code in place to handle the server
|
||||
denying it so the only safe thing to do is to terminate the connection.
|
||||
a no_renegotiation alert as required by RFC5746. Some renegotiating
|
||||
TLS clients will continue a connection gracefully when they receive
|
||||
the alert. Unfortunately OpenSSL mishandled this alert and would hang
|
||||
waiting for a server hello which it will never receive. Now we treat a
|
||||
received no_renegotiation alert as a fatal error. This is because
|
||||
applications requesting a renegotiation might well expect it to succeed
|
||||
and would have no code in place to handle the server denying it so the
|
||||
only safe thing to do is to terminate the connection.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
|
||||
@@ -883,10 +1073,9 @@
|
||||
the updated NID creation version. This should correctly handle UTF8.
|
||||
[Steve Henson]
|
||||
|
||||
*) Implement draft-ietf-tls-renegotiation-03. Re-enable
|
||||
renegotiation but require the extension as needed. Unfortunately,
|
||||
SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION turns out to be a
|
||||
bad idea. It has been replaced by
|
||||
*) Implement RFC5746. Re-enable renegotiation but require the extension
|
||||
as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
|
||||
turns out to be a bad idea. It has been replaced by
|
||||
SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
|
||||
SSL_CTX_set_options(). This is really not recommended unless you
|
||||
know what you are doing.
|
||||
|
25
Configure
25
Configure
@@ -492,6 +492,8 @@ my %table=(
|
||||
# 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:cmll-x86_64.o cmll_misc.o:auto:win32",
|
||||
"debug-VC-WIN64I","cl:-W3 -Gs0 -Gy -Zi -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",
|
||||
"debug-VC-WIN64A","cl:-W3 -Gs0 -Gy -Zi -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:cmll-x86_64.o cmll_misc.o:auto: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",
|
||||
@@ -503,7 +505,7 @@ my %table=(
|
||||
"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
|
||||
|
||||
# MinGW
|
||||
"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall:::MINGW32:-lws2_32 -lgdi32 -lcrypt32: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",
|
||||
"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32: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,
|
||||
@@ -511,7 +513,7 @@ my %table=(
|
||||
# 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 -lcrypt32: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",
|
||||
"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32: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",
|
||||
@@ -547,7 +549,7 @@ 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:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL::-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",
|
||||
@@ -583,6 +585,7 @@ my %table=(
|
||||
);
|
||||
|
||||
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
|
||||
debug-VC-WIN64I debug-VC-WIN64A
|
||||
VC-NT VC-CE VC-WIN32 debug-VC-WIN32
|
||||
BC-32
|
||||
netware-clib netware-clib-bsdsock
|
||||
@@ -1093,6 +1096,12 @@ my $ar = $ENV{'AR'} || "ar";
|
||||
my $arflags = $fields[$idx_arflags];
|
||||
my $multilib = $fields[$idx_multilib];
|
||||
|
||||
# if $prefix/lib$multilib is not an existing directory, then
|
||||
# assume that it's not searched by linker automatically, in
|
||||
# which case adding $multilib suffix causes more grief than
|
||||
# we're ready to tolerate, so don't...
|
||||
$multilib="" if !-d "$prefix/lib$multilib";
|
||||
|
||||
$libdir="lib$multilib" if $libdir eq "";
|
||||
|
||||
$cflags = "$cflags$exp_cflags";
|
||||
@@ -1102,6 +1111,12 @@ my ($prelflags,$postlflags)=split('%',$lflags);
|
||||
if (defined($postlflags)) { $lflags=$postlflags; }
|
||||
else { $lflags=$prelflags; undef $prelflags; }
|
||||
|
||||
if ($target =~ /^mingw/ && `$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m)
|
||||
{
|
||||
$cflags =~ s/\-mno\-cygwin\s*//;
|
||||
$shared_ldflag =~ s/\-mno\-cygwin\s*//;
|
||||
}
|
||||
|
||||
my $no_shared_warn=0;
|
||||
my $no_user_cflags=0;
|
||||
|
||||
@@ -1789,11 +1804,11 @@ EOF
|
||||
(system $make_command.$make_targets) == 0 or exit $?
|
||||
if $make_targets ne "";
|
||||
if ( $perl =~ m@^/@) {
|
||||
&dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
|
||||
&dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
|
||||
&dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
|
||||
} else {
|
||||
# No path for Perl known ...
|
||||
&dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
|
||||
&dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
|
||||
&dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
|
||||
}
|
||||
if ($depflags ne $default_depflags && !$make_depend) {
|
||||
|
55
FAQ
55
FAQ
@@ -52,6 +52,9 @@ OpenSSL - Frequently Asked Questions
|
||||
* Why does the OpenSSL test suite fail in sha512t on x86 CPU?
|
||||
* Why does compiler fail to compile sha512.c?
|
||||
* Test suite still fails, what to do?
|
||||
* I think I've found a bug, what should I do?
|
||||
* I'm SURE I've found a bug, how do I report it?
|
||||
* I've found a security issue, how do I report it?
|
||||
|
||||
[PROG] Questions about programming with OpenSSL
|
||||
|
||||
@@ -79,7 +82,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.8k was released on Mar 25th, 2009.
|
||||
OpenSSL 1.0.0e was released on Sep 6th, 2011.
|
||||
|
||||
In addition to the current stable release, you can also access daily
|
||||
snapshots of the OpenSSL development version at <URL:
|
||||
@@ -131,7 +134,7 @@ OpenSSL. Information on the OpenSSL mailing lists is available from
|
||||
* Where can I get a compiled version of OpenSSL?
|
||||
|
||||
You can finder pointers to binary distributions in
|
||||
http://www.openssl.org/related/binaries.html .
|
||||
<URL: http://www.openssl.org/related/binaries.html> .
|
||||
|
||||
Some applications that use OpenSSL are distributed in binary form.
|
||||
When using such an application, you don't need to install OpenSSL
|
||||
@@ -463,7 +466,7 @@ administrators.
|
||||
Other projects do have other policies so you can for example extract the CA
|
||||
bundle used by Mozilla and/or modssl as described in this article:
|
||||
|
||||
http://www.mail-archive.com/modssl-users@modssl.org/msg16980.html
|
||||
<URL: http://www.mail-archive.com/modssl-users@modssl.org/msg16980.html>
|
||||
|
||||
|
||||
[BUILD] =======================================================================
|
||||
@@ -505,7 +508,7 @@ when you run the test suite (using "make test"). The message returned is
|
||||
"bc: 1 not implemented".
|
||||
|
||||
The best way to deal with this is to find another implementation of bc
|
||||
and compile/install it. GNU bc (see http://www.gnu.org/software/software.html
|
||||
and compile/install it. GNU bc (see <URL: http://www.gnu.org/software/software.html>
|
||||
for download instructions) can be safely used, for example.
|
||||
|
||||
|
||||
@@ -516,7 +519,7 @@ that the OpenSSL bntest throws at it. This gets triggered when you run the
|
||||
test suite (using "make test"). The message returned is "bc: stack empty".
|
||||
|
||||
The best way to deal with this is to find another implementation of bc
|
||||
and compile/install it. GNU bc (see http://www.gnu.org/software/software.html
|
||||
and compile/install it. GNU bc (see <URL: http://www.gnu.org/software/software.html>
|
||||
for download instructions) can be safely used, for example.
|
||||
|
||||
|
||||
@@ -709,6 +712,46 @@ never make sense, and tend to emerge when you least expect them. In order
|
||||
to identify one, drop optimization level, e.g. by editing CFLAG line in
|
||||
top-level Makefile, recompile and re-run the test.
|
||||
|
||||
* I think I've found a bug, what should I do?
|
||||
|
||||
If you are a new user then it is quite likely you haven't found a bug and
|
||||
something is happening you aren't familiar with. Check this FAQ, the associated
|
||||
documentation and the mailing lists for similar queries. If you are still
|
||||
unsure whether it is a bug or not submit a query to the openssl-users mailing
|
||||
list.
|
||||
|
||||
|
||||
* I'm SURE I've found a bug, how do I report it?
|
||||
|
||||
Bug reports with no security implications should be sent to the request
|
||||
tracker. This can be done by mailing the report to <rt@openssl.org> (or its
|
||||
alias <openssl-bugs@openssl.org>), please note that messages sent to the
|
||||
request tracker also appear in the public openssl-dev mailing list.
|
||||
|
||||
The report should be in plain text. Any patches should be sent as
|
||||
plain text attachments because some mailers corrupt patches sent inline.
|
||||
If your issue affects multiple versions of OpenSSL check any patches apply
|
||||
cleanly and, if possible include patches to each affected version.
|
||||
|
||||
The report should be given a meaningful subject line briefly summarising the
|
||||
issue. Just "bug in OpenSSL" or "bug in OpenSSL 0.9.8n" is not very helpful.
|
||||
|
||||
By sending reports to the request tracker the bug can then be given a priority
|
||||
and assigned to the appropriate maintainer. The history of discussions can be
|
||||
accessed and if the issue has been addressed or a reason why not. If patches
|
||||
are only sent to openssl-dev they can be mislaid if a team member has to
|
||||
wade through months of old messages to review the discussion.
|
||||
|
||||
See also <URL: http://www.openssl.org/support/rt.html>
|
||||
|
||||
|
||||
* I've found a security issue, how do I report it?
|
||||
|
||||
If you think your bug has security implications then please send it to
|
||||
openssl-security@openssl.org if you don't get a prompt reply at least
|
||||
acknowledging receipt then resend or mail it directly to one of the
|
||||
more active team members (e.g. Steve).
|
||||
|
||||
[PROG] ========================================================================
|
||||
|
||||
* Is OpenSSL thread-safe?
|
||||
@@ -722,7 +765,7 @@ file.
|
||||
Multi-threaded applications must provide two callback functions to
|
||||
OpenSSL by calling CRYPTO_set_locking_callback() and
|
||||
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()
|
||||
including 0.9.8[abc...]. As of version 1.0.0, CRYPTO_set_id_callback()
|
||||
and associated APIs are deprecated by CRYPTO_THREADID_set_callback()
|
||||
and friends. This is described in the threads(3) manpage.
|
||||
|
||||
|
52
INSTALL.VMS
52
INSTALL.VMS
@@ -71,7 +71,7 @@ the top to understand how to use them. However, if you want to
|
||||
compile all you can get, the simplest is to use MAKEVMS.COM in the top
|
||||
directory. The syntax is the following:
|
||||
|
||||
@MAKEVMS <option> <rsaref-p> <debug-p> [<compiler>]
|
||||
@MAKEVMS <option> <bits> <debug-p> [<compiler>]
|
||||
|
||||
<option> must be one of the following:
|
||||
|
||||
@@ -87,24 +87,11 @@ directory. The syntax is the following:
|
||||
TEST Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL.
|
||||
APPS Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL.
|
||||
|
||||
<rsaref-p> must be one of the following:
|
||||
<bits> must be one of the following:
|
||||
|
||||
RSAREF compile using the RSAREF Library
|
||||
NORSAREF compile without using RSAREF
|
||||
|
||||
Note 0: The RSAREF library IS NO LONGER NEEDED. The RSA patent
|
||||
expires September 20, 2000, and RSA Security chose to make
|
||||
the algorithm public domain two weeks before that.
|
||||
|
||||
Note 1: If you still want to use RSAREF, the library is NOT INCLUDED
|
||||
and you have to download it. RSA Security doesn't carry it
|
||||
any more, but there are a number of places where you can find
|
||||
it. You have to get the ".tar-Z" file as the ".zip" file
|
||||
doesn't have the directory structure stored. You have to
|
||||
extract the file into the [.RSAREF] directory as that is where
|
||||
the scripts will look for the files.
|
||||
|
||||
Note 2: I have never done this, so I've no idea if it works or not.
|
||||
"" compile using default pointer size
|
||||
32 compile using 32 bit pointer size
|
||||
64 compile using 64 bit pointer size
|
||||
|
||||
<debug-p> must be one of the following:
|
||||
|
||||
@@ -117,12 +104,13 @@ Note 2: I have never done this, so I've no idea if it works or not.
|
||||
GNUC For GNU C.
|
||||
|
||||
|
||||
You will find the crypto library in [.xxx.EXE.CRYPTO], called LIBCRYPTO.OLB,
|
||||
where xxx is VAX or AXP. You will find the SSL library in [.xxx.EXE.SSL],
|
||||
named LIBSSL.OLB, and you will find a bunch of useful programs in
|
||||
[.xxx.EXE.APPS]. However, these shouldn't be used right off unless it's
|
||||
just to test them. For production use, make sure you install first, see
|
||||
Installation below.
|
||||
You will find the crypto library in [.xxx.EXE.CRYPTO] (where xxx is VAX,
|
||||
ALPHA or IA64), called SSL_LIBCRYPTO32.OLB or SSL_LIBCRYPTO.OLB depending
|
||||
on how it was built. You will find the SSL library in [.xxx.EXE.SSL],
|
||||
named SSL_LIBSSL32.OLB or SSL_LIBSSL.OLB, and you will find a bunch of
|
||||
useful programs in [.xxx.EXE.APPS]. However, these shouldn't be used
|
||||
right off unless it's just to test them. For production use, make sure
|
||||
you install first, see Installation below.
|
||||
|
||||
Note 1: Some programs in this package require a TCP/IP library.
|
||||
|
||||
@@ -170,12 +158,14 @@ Installation:
|
||||
|
||||
Installation is easy, just do the following:
|
||||
|
||||
@INSTALL <root>
|
||||
@INSTALL <root> <bits>
|
||||
|
||||
<root> is the directory in which everything will be installed,
|
||||
subdirectories, libraries, header files, programs and startup command
|
||||
procedures.
|
||||
|
||||
<bits> works the same way as for MAKEVMS.COM
|
||||
|
||||
N.B.: INSTALL.COM builds a new directory structure, different from
|
||||
the directory tree where you have now build OpenSSL.
|
||||
|
||||
@@ -196,6 +186,10 @@ following command procedures:
|
||||
sets up the symbols to the applications. Should be called
|
||||
from for example SYS$MANAGER:SYLOGIN.COM
|
||||
|
||||
OPENSSL_UNDO.COM
|
||||
|
||||
deassigns the logical names created with OPENSSL_STARTUP.COM.
|
||||
|
||||
The logical names that are set up are the following:
|
||||
|
||||
SSLROOT a dotted concealed logical name pointing at the
|
||||
@@ -203,7 +197,6 @@ The logical names that are set up are the following:
|
||||
|
||||
SSLCERTS Initially an empty directory, this is the default
|
||||
location for certificate files.
|
||||
SSLMISC Various scripts.
|
||||
SSLPRIVATE Initially an empty directory, this is the default
|
||||
location for private key files.
|
||||
|
||||
@@ -211,8 +204,9 @@ The logical names that are set up are the following:
|
||||
programs.
|
||||
SSLINCLUDE Contains the header files needed if you want to
|
||||
compile programs with libcrypto or libssl.
|
||||
SSLLIB Contains the OpenSSL library files (LIBCRYPTO.OLB
|
||||
and LIBSSL.OLB) themselves.
|
||||
SSLLIB Contains the OpenSSL library files themselves:
|
||||
- SSL_LIBCRYPTO32.OLB and SSL_LIBSSL32.OLB or
|
||||
- SSL_LIBCRYPTO.OLB and SSL_LIBSSL.OLB
|
||||
|
||||
OPENSSL Same as SSLINCLUDE. This is because the standard
|
||||
way to include OpenSSL header files from version
|
||||
@@ -296,4 +290,4 @@ have any ideas.
|
||||
|
||||
--
|
||||
Richard Levitte <richard@levitte.org>
|
||||
2000-02-27
|
||||
2000-02-27, 2011-03-18
|
||||
|
22
INSTALL.W32
22
INSTALL.W32
@@ -185,6 +185,15 @@
|
||||
required. Run the installers and do whatever magic they say it takes
|
||||
to start MSYS bash shell with GNU tools on its PATH.
|
||||
|
||||
N.B. Since source tar-ball can contain symbolic links, it's essential
|
||||
that you use accompanying MSYS tar to unpack the source. It will
|
||||
either handle them in one way or another or fail to extract them,
|
||||
which does the trick too. Latter means that you may safely ignore all
|
||||
"cannot create symlink" messages, as they will be "re-created" at
|
||||
configure stage by copying corresponding files. Alternative programs
|
||||
were observed to create empty files instead, which results in build
|
||||
failure.
|
||||
|
||||
* Compile OpenSSL:
|
||||
|
||||
$ ./config
|
||||
@@ -297,7 +306,18 @@
|
||||
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.
|
||||
actually make GUI calls. Additionally those who wish to
|
||||
/DELAYLOAD:GDI32.DLL and /DELAYLOAD:USER32.DLL and actually keep them
|
||||
off service process should consider implementing and exporting from
|
||||
.exe image in question own _OPENSSL_isservice not relying on USER32.DLL.
|
||||
E.g., on Windows Vista and later you could:
|
||||
|
||||
__declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void)
|
||||
{ DWORD sess;
|
||||
if (ProcessIdToSessionId(GetCurrentProcessId(),&sess))
|
||||
return sess==0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
If you link with OpenSSL .DLLs, then you're expected to include into
|
||||
your application code small "shim" snippet, which provides glue between
|
||||
|
2
LICENSE
2
LICENSE
@@ -12,7 +12,7 @@
|
||||
---------------
|
||||
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1998-2011 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
|
||||
|
@@ -594,7 +594,7 @@ install_docs:
|
||||
$(INSTALL_PREFIX)$(MANDIR)/man3 \
|
||||
$(INSTALL_PREFIX)$(MANDIR)/man5 \
|
||||
$(INSTALL_PREFIX)$(MANDIR)/man7
|
||||
@pod2man="`cd util; ./pod2mantest $(PERL)`"; \
|
||||
@pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
|
||||
here="`pwd`"; \
|
||||
filecase=; \
|
||||
if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
|
||||
|
@@ -135,7 +135,7 @@ LINK_SO_A_VIA_O= \
|
||||
ALL=$$ALLSYMSFLAGS; ALLSYMSFLAGS=; NOALLSYMSFLAGS=; \
|
||||
( $(SET_X); \
|
||||
ld $(LDFLAGS) -r -o lib$(LIBNAME).o $$ALL lib$(LIBNAME).a $(LIBEXTRAS) ); \
|
||||
$(LINK_SO) && rm -f $(LIBNAME).o
|
||||
$(LINK_SO) && rm -f lib$(LIBNAME).o
|
||||
|
||||
LINK_SO_A_UNPACKED= \
|
||||
UNPACKDIR=link_tmp.$$$$; rm -rf $$UNPACKDIR; mkdir $$UNPACKDIR; \
|
||||
@@ -207,17 +207,29 @@ link_app.bsd:
|
||||
fi; $(LINK_APP)
|
||||
|
||||
# For Darwin AKA Mac OS/X (dyld)
|
||||
# link_o.darwin produces .so, because we let it use dso_dlfcn module,
|
||||
# which has .so extension hard-coded. One can argue that one should
|
||||
# develop special dso module for MacOS X. At least manual encourages
|
||||
# to use native NSModule(3) API and refers to dlfcn as termporary hack.
|
||||
# Originally link_o.darwin produced .so, because it was hard-coded
|
||||
# in dso_dlfcn module. At later point dso_dlfcn switched to .dylib
|
||||
# extension in order to allow for run-time linking with vendor-
|
||||
# supplied shared libraries such as libz, so that link_o.darwin had
|
||||
# to be harmonized with it. This caused minor controversy, because
|
||||
# it was believed that dlopen can't be used to dynamically load
|
||||
# .dylib-s, only so called bundle modules (ones linked with -bundle
|
||||
# flag). The belief seems to be originating from pre-10.4 release,
|
||||
# where dlfcn functionality was emulated by dlcompat add-on. In
|
||||
# 10.4 dlopen was rewritten as native part of dyld and is documented
|
||||
# to be capable of loading both dynamic libraries and bundles. In
|
||||
# order to provide compatibility with pre-10.4 dlopen, modules are
|
||||
# linked with -bundle flag, which makes .dylib extension misleading.
|
||||
# It works, because dlopen is [and always was] extension-agnostic.
|
||||
# Alternative to this heuristic approach is to develop specific
|
||||
# MacOS X dso module relying on whichever "native" dyld interface.
|
||||
link_o.darwin:
|
||||
@ $(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME); \
|
||||
SHLIB_SUFFIX=.so; \
|
||||
SHLIB_SUFFIX=.dylib; \
|
||||
ALLSYMSFLAGS='-all_load'; \
|
||||
NOALLSYMSFLAGS=''; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
|
||||
SHAREDFLAGS="$(CFLAGS) `echo $(SHARED_LDFLAGS) | sed s/dynamiclib/bundle/`"; \
|
||||
if [ -n "$(LIBVERSION)" ]; then \
|
||||
SHAREDFLAGS="$$SHAREDFLAGS -current_version $(LIBVERSION)"; \
|
||||
fi; \
|
||||
|
76
NEWS
76
NEWS
@@ -5,9 +5,39 @@
|
||||
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.8l and OpenSSL 1.0:
|
||||
Major changes between OpenSSL 1.0.0d and OpenSSL 1.0.0e:
|
||||
|
||||
o Fix for CRL vulnerability issue CVE-2011-3207
|
||||
o Fix for ECDH crashes CVE-2011-3210
|
||||
o Protection against EC timing attacks.
|
||||
o Support ECDH ciphersuites for certificates using SHA2 algorithms.
|
||||
o Various DTLS fixes.
|
||||
|
||||
Major changes between OpenSSL 1.0.0c and OpenSSL 1.0.0d:
|
||||
|
||||
o Fix for security issue CVE-2011-0014
|
||||
|
||||
Major changes between OpenSSL 1.0.0b and OpenSSL 1.0.0c:
|
||||
|
||||
o Fix for security issue CVE-2010-4180
|
||||
o Fix for CVE-2010-4252
|
||||
o Fix mishandling of absent EC point format extension.
|
||||
o Fix various platform compilation issues.
|
||||
o Corrected fix for security issue CVE-2010-3864.
|
||||
|
||||
Major changes between OpenSSL 1.0.0a and OpenSSL 1.0.0b:
|
||||
|
||||
o Fix for security issue CVE-2010-3864.
|
||||
o Fix for CVE-2010-2939
|
||||
o Fix WIN32 build system for GOST ENGINE.
|
||||
|
||||
Major changes between OpenSSL 1.0.0 and OpenSSL 1.0.0a:
|
||||
|
||||
o Fix for security issue CVE-2010-1633.
|
||||
o GOST MAC and CFB fixes.
|
||||
|
||||
Major changes between OpenSSL 0.9.8n and OpenSSL 1.0.0:
|
||||
|
||||
o Support for draft-ietf-tls-renegotiation-03.txt
|
||||
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.
|
||||
@@ -29,6 +59,48 @@
|
||||
o Opaque PRF Input TLS extension support.
|
||||
o Updated time routines to avoid OS limitations.
|
||||
|
||||
Major changes between OpenSSL 0.9.8q and OpenSSL 0.9.8r:
|
||||
|
||||
o Fix for security issue CVE-2011-0014
|
||||
|
||||
Major changes between OpenSSL 0.9.8p and OpenSSL 0.9.8q:
|
||||
|
||||
o Fix for security issue CVE-2010-4180
|
||||
o Fix for CVE-2010-4252
|
||||
|
||||
Major changes between OpenSSL 0.9.8o and OpenSSL 0.9.8p:
|
||||
|
||||
o Fix for security issue CVE-2010-3864.
|
||||
|
||||
Major changes between OpenSSL 0.9.8n and OpenSSL 0.9.8o:
|
||||
|
||||
o Fix for security issue CVE-2010-0742.
|
||||
o Various DTLS fixes.
|
||||
o Recognise SHA2 certificates if only SSL algorithms added.
|
||||
o Fix for no-rc4 compilation.
|
||||
o Chil ENGINE unload workaround.
|
||||
|
||||
Major changes between OpenSSL 0.9.8m and OpenSSL 0.9.8n:
|
||||
|
||||
o CFB cipher definition fixes.
|
||||
o Fix security issues CVE-2010-0740 and CVE-2010-0433.
|
||||
|
||||
Major changes between OpenSSL 0.9.8l and OpenSSL 0.9.8m:
|
||||
|
||||
o Cipher definition fixes.
|
||||
o Workaround for slow RAND_poll() on some WIN32 versions.
|
||||
o Remove MD2 from algorithm tables.
|
||||
o SPKAC handling fixes.
|
||||
o Support for RFC5746 TLS renegotiation extension.
|
||||
o Compression memory leak fixed.
|
||||
o Compression session resumption fixed.
|
||||
o Ticket and SNI coexistence fixes.
|
||||
o Many fixes to DTLS handling.
|
||||
|
||||
Major changes between OpenSSL 0.9.8k and OpenSSL 0.9.8l:
|
||||
|
||||
o Temporary work around for CVE-2009-3555: disable renegotiation.
|
||||
|
||||
Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k:
|
||||
|
||||
o Fix various build issues.
|
||||
|
4
PROBLEMS
4
PROBLEMS
@@ -36,7 +36,9 @@ may differ on your machine.
|
||||
|
||||
|
||||
As long as Apple doesn't fix the problem with ld, this problem building
|
||||
OpenSSL will remain as is.
|
||||
OpenSSL will remain as is. Well, the problem was addressed in 0.9.8f by
|
||||
passing -Wl,-search_paths_first, but it's unknown if the flag was
|
||||
supported from the initial MacOS X release.
|
||||
|
||||
|
||||
* Parallell make leads to errors
|
||||
|
4
README
4
README
@@ -1,7 +1,7 @@
|
||||
|
||||
OpenSSL 1.0.0-beta5 20 Jan 2010
|
||||
OpenSSL 1.0.0e 6 Sep 2011
|
||||
|
||||
Copyright (c) 1998-2009 The OpenSSL Project
|
||||
Copyright (c) 1998-2011 The OpenSSL Project
|
||||
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
|
||||
All rights reserved.
|
||||
|
||||
|
21
STATUS
21
STATUS
@@ -1,14 +1,23 @@
|
||||
|
||||
OpenSSL STATUS Last modified at
|
||||
______________ $Date: 2010/01/20 15:00:48 $
|
||||
______________ $Date: 2011/09/06 13:01:41 $
|
||||
|
||||
DEVELOPMENT STATE
|
||||
|
||||
o OpenSSL 1.0.0-beta5: Released on January 20th, 2010
|
||||
o OpenSSL 1.0.0-beta4: Released on November 10th, 2009
|
||||
o OpenSSL 1.0.0-beta3: Released on July 15th, 2009
|
||||
o OpenSSL 1.0.0-beta2: Released on April 21st, 2009
|
||||
o OpenSSL 1.0.0-beta1: Released on April 1st, 2009
|
||||
o OpenSSL 1.1.0: Under development...
|
||||
o OpenSSL 1.0.1: Under development...
|
||||
o OpenSSL 1.0.0e: Released on September 6th, 2011
|
||||
o OpenSSL 1.0.0d: Released on February 8nd, 2011
|
||||
o OpenSSL 1.0.0c: Released on December 2nd, 2010
|
||||
o OpenSSL 1.0.0b: Released on November 16th, 2010
|
||||
o OpenSSL 1.0.0a: Released on June 1st, 2010
|
||||
o OpenSSL 1.0.0: Released on March 29th, 2010
|
||||
o OpenSSL 0.9.8r: Released on February 8nd, 2011
|
||||
o OpenSSL 0.9.8q: Released on December 2nd, 2010
|
||||
o OpenSSL 0.9.8p: Released on November 16th, 2010
|
||||
o OpenSSL 0.9.8o: Released on June 1st, 2010
|
||||
o OpenSSL 0.9.8n: Released on March 24th, 2010
|
||||
o OpenSSL 0.9.8m: Released on February 25th, 2010
|
||||
o OpenSSL 0.9.8l: Released on November 5th, 2009
|
||||
o OpenSSL 0.9.8k: Released on March 25th, 2009
|
||||
o OpenSSL 0.9.8j: Released on January 7th, 2009
|
||||
|
68
TABLE
68
TABLE
@@ -1211,7 +1211,7 @@ $multilib =
|
||||
|
||||
*** darwin-ppc-cc
|
||||
$cc = cc
|
||||
$cflags = -arch ppc -O3 -DB_ENDIAN
|
||||
$cflags = -arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id = MACOSX
|
||||
@@ -1426,6 +1426,68 @@ $ranlib =
|
||||
$arflags =
|
||||
$multilib =
|
||||
|
||||
*** debug-VC-WIN64A
|
||||
$cc = cl
|
||||
$cflags = -W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
|
||||
$unistd =
|
||||
$thread_cflag =
|
||||
$sys_id = WIN64A
|
||||
$lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
|
||||
$cpuid_obj = x86_64cpuid.o
|
||||
$bn_obj = bn_asm.o x86_64-mont.o
|
||||
$des_obj =
|
||||
$aes_obj = aes-x86_64.o
|
||||
$bf_obj =
|
||||
$md5_obj = md5-x86_64.o
|
||||
$sha1_obj = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
|
||||
$cast_obj =
|
||||
$rc4_obj = rc4-x86_64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$wp_obj = wp-x86_64.o
|
||||
$cmll_obj = cmll-x86_64.o cmll_misc.o
|
||||
$perlasm_scheme = auto
|
||||
$dso_scheme = win32
|
||||
$shared_target=
|
||||
$shared_cflag =
|
||||
$shared_ldflag =
|
||||
$shared_extension =
|
||||
$ranlib =
|
||||
$arflags =
|
||||
$multilib =
|
||||
|
||||
*** debug-VC-WIN64I
|
||||
$cc = cl
|
||||
$cflags = -W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
|
||||
$unistd =
|
||||
$thread_cflag =
|
||||
$sys_id = WIN64I
|
||||
$lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
|
||||
$cpuid_obj = ia64cpuid.o
|
||||
$bn_obj = ia64.o
|
||||
$des_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj = md5-ia64.o
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$wp_obj =
|
||||
$cmll_obj =
|
||||
$perlasm_scheme = ias
|
||||
$dso_scheme = win32
|
||||
$shared_target=
|
||||
$shared_cflag =
|
||||
$shared_ldflag =
|
||||
$shared_extension =
|
||||
$ranlib =
|
||||
$arflags =
|
||||
$multilib =
|
||||
|
||||
*** debug-ben
|
||||
$cc = gcc
|
||||
$cflags = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG_UNUSED -O2 -pedantic -Wall -Wshadow -Werror -pipe
|
||||
@@ -3879,7 +3941,7 @@ $multilib = 64
|
||||
$cc = gcc
|
||||
$cflags = -mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall
|
||||
$unistd =
|
||||
$thread_cflag =
|
||||
$thread_cflag = -D_MT
|
||||
$sys_id = MINGW32
|
||||
$lflags = -lws2_32 -lgdi32 -lcrypt32
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
|
||||
@@ -3910,7 +3972,7 @@ $multilib =
|
||||
$cc = gcc
|
||||
$cflags = -mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE
|
||||
$unistd =
|
||||
$thread_cflag =
|
||||
$thread_cflag = -D_MT
|
||||
$sys_id = MINGW64
|
||||
$lflags = -lws2_32 -lgdi32 -lcrypt32
|
||||
$bn_ops = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
|
||||
|
67
VMS/install-vms.com
Executable file
67
VMS/install-vms.com
Executable file
@@ -0,0 +1,67 @@
|
||||
$! install-vms.com -- Installs the files in a given directory tree
|
||||
$!
|
||||
$! Author: Richard Levitte <richard@levitte.org>
|
||||
$! Time of creation: 23-MAY-1998 19:22
|
||||
$!
|
||||
$! P1 root of the directory tree
|
||||
$!
|
||||
$!
|
||||
$! Announce/identify.
|
||||
$!
|
||||
$ proc = f$environment( "procedure")
|
||||
$ write sys$output "@@@ "+ -
|
||||
f$parse( proc, , , "name")+ f$parse( proc, , , "type")
|
||||
$!
|
||||
$ on error then goto tidy
|
||||
$ on control_c then goto tidy
|
||||
$!
|
||||
$ if p1 .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "First argument missing."
|
||||
$ write sys$output -
|
||||
"Should be the directory where you want things installed."
|
||||
$ exit
|
||||
$ endif
|
||||
$
|
||||
$ if (f$getsyi( "cpu") .lt. 128)
|
||||
$ then
|
||||
$ arch = "VAX"
|
||||
$ else
|
||||
$ arch = f$edit( f$getsyi( "arch_name"), "upcase")
|
||||
$ if (arch .eqs. "") then arch = "UNK"
|
||||
$ endif
|
||||
$
|
||||
$ root = f$parse( P1, "[]A.;0", , , "SYNTAX_ONLY, NO_CONCEAL")- "A.;0"
|
||||
$ root_dev = f$parse( root, , , "device", "syntax_only")
|
||||
$ root_dir = f$parse( root, , , "directory", "syntax_only") - -
|
||||
"[000000." - "][" - "[" - "]"
|
||||
$ root = root_dev + "[" + root_dir
|
||||
$
|
||||
$ define /nolog wrk_sslroot 'root'.] /translation_attributes = concealed
|
||||
$ define /nolog wrk_sslinclude wrk_sslroot:[include]
|
||||
$
|
||||
$ if f$parse( "wrk_sslroot:[000000]") .eqs. "" then -
|
||||
create /directory /log wrk_sslroot:[000000]
|
||||
$ if f$parse( "wrk_sslinclude:") .eqs. "" then -
|
||||
create /directory /log wrk_sslinclude:
|
||||
$ if f$parse( "wrk_sslroot:[vms]") .eqs. "" then -
|
||||
create /directory /log wrk_sslroot:[vms]
|
||||
$!
|
||||
$ copy /log /protection = world:re openssl_startup.com wrk_sslroot:[vms]
|
||||
$ copy /log /protection = world:re openssl_undo.com wrk_sslroot:[vms]
|
||||
$ copy /log /protection = world:re openssl_utils.com wrk_sslroot:[vms]
|
||||
$!
|
||||
$ tidy:
|
||||
$!
|
||||
$ call deass wrk_sslroot
|
||||
$ call deass wrk_sslinclude
|
||||
$!
|
||||
$ exit
|
||||
$!
|
||||
$ deass: subroutine
|
||||
$ if (f$trnlnm( p1, "LNM$PROCESS") .nes. "")
|
||||
$ then
|
||||
$ deassign /process 'p1'
|
||||
$ endif
|
||||
$ endsubroutine
|
||||
$!
|
@@ -1,79 +0,0 @@
|
||||
$! INSTALL.COM -- Installs the files in a given directory tree
|
||||
$!
|
||||
$! Author: Richard Levitte <richard@levitte.org>
|
||||
$! Time of creation: 23-MAY-1998 19:22
|
||||
$!
|
||||
$! P1 root of the directory tree
|
||||
$!
|
||||
$ IF P1 .EQS. ""
|
||||
$ THEN
|
||||
$ WRITE SYS$OUTPUT "First argument missing."
|
||||
$ WRITE SYS$OUTPUT "Should be the directory where you want things installed."
|
||||
$ EXIT
|
||||
$ ENDIF
|
||||
$
|
||||
$ IF (F$GETSYI("CPU").LT.128)
|
||||
$ THEN
|
||||
$ ARCH := VAX
|
||||
$ ELSE
|
||||
$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
|
||||
$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
|
||||
$ ENDIF
|
||||
$
|
||||
$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
|
||||
$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
|
||||
$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
|
||||
- "[000000." - "][" - "[" - "]"
|
||||
$ ROOT = ROOT_DEV + "[" + ROOT_DIR
|
||||
$
|
||||
$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
|
||||
$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
|
||||
$
|
||||
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
|
||||
CREATE/DIR/LOG WRK_SSLROOT:[000000]
|
||||
$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
|
||||
CREATE/DIR/LOG WRK_SSLINCLUDE:
|
||||
$ IF F$PARSE("WRK_SSLROOT:[VMS]") .EQS. "" THEN -
|
||||
CREATE/DIR/LOG WRK_SSLROOT:[VMS]
|
||||
$
|
||||
$ IF F$SEARCH("WRK_SSLINCLUDE:vms_idhacks.h") .NES. "" THEN -
|
||||
DELETE WRK_SSLINCLUDE:vms_idhacks.h;*
|
||||
$
|
||||
$ OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
|
||||
$ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created."
|
||||
$ WRITE SF "$! Startup file for Openssl"
|
||||
$ WRITE SF "$!"
|
||||
$ WRITE SF "$! Do not edit this file, as it will be regenerated during next installation."
|
||||
$ WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
|
||||
$ WRITE SF "$!"
|
||||
$ WRITE SF "$! P1 a qualifier to DEFINE. For example ""/SYSTEM"" to get the logical names"
|
||||
$ WRITE SF "$! defined in the system logical name table."
|
||||
$ WRITE SF "$!"
|
||||
$ WRITE SF "$ IF (F$GETSYI(""CPU"").LT.128)"
|
||||
$ WRITE SF "$ THEN"
|
||||
$ WRITE SF "$ ARCH := VAX"
|
||||
$ WRITE SF "$ ELSE"
|
||||
$ WRITE SF "$ ARCH = F$EDIT( F$GETSYI( ""ARCH_NAME""), ""UPCASE"")"
|
||||
$ WRITE SF "$ IF (ARCH .EQS. """") THEN ARCH = ""UNK"""
|
||||
$ WRITE SF "$ ENDIF"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLROOT ",ROOT,".] /TRANS=CONC"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLLIB SSLROOT:['ARCH'_LIB]"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLINCLUDE SSLROOT:[INCLUDE]"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLEXE SSLROOT:['ARCH'_EXE]"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLCERTS SSLROOT:[CERTS]"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLPRIVATE SSLROOT:[PRIVATE]"
|
||||
$ WRITE SF "$"
|
||||
$ WRITE SF "$! This is program can include <openssl/{foo}.h>"
|
||||
$ WRITE SF "$ DEFINE/NOLOG'P1 OPENSSL SSLINCLUDE:"
|
||||
$ WRITE SF "$"
|
||||
$ WRITE SF "$ IF F$SEARCH(""SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"") .NES."""" THEN -"
|
||||
$ WRITE SF " @SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
|
||||
$ WRITE SF "$"
|
||||
$ WRITE SF "$ EXIT"
|
||||
$ CLOSE SF
|
||||
$ SET FILE/PROT=WORLD:RE WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
|
||||
$
|
||||
$ COPY OPENSSL_UTILS.COM WRK_SSLROOT:[VMS]/LOG
|
||||
$ SET FILE/PROT=WORLD:RE WRK_SSLROOT:[VMS]OPENSSL_UTILS.COM
|
||||
$
|
||||
$ EXIT
|
235
VMS/mkshared.com
235
VMS/mkshared.com
@@ -1,85 +1,162 @@
|
||||
$! MKSHARED.COM -- script to created shareable images on VMS
|
||||
$! MKSHARED.COM -- Create shareable images.
|
||||
$!
|
||||
$! No command line parameters. This should be run at the start of the source
|
||||
$! tree (the same directory where one finds INSTALL.VMS).
|
||||
$! P1: "64" for 64-bit pointers.
|
||||
$!
|
||||
$! Input: [.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB
|
||||
$! [.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]LIBSSL.OLB
|
||||
$! Output: [.xxx.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
|
||||
$! [.xxx.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
|
||||
$! P2: Zlib object library path (optional).
|
||||
$!
|
||||
$! Input: [.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]SSL_LIBCRYPTO[32].OLB
|
||||
$! [.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]SSL_LIBSSL[32].OLB
|
||||
$! Output: [.xxx.EXE.CRYPTO]SSL_LIBCRYPTO_SHR[32].OPT,.MAP,.EXE
|
||||
$! [.xxx.EXE.SSL]SSL_LIBSSL_SRH[32].OPT,.MAP,.EXE
|
||||
$!
|
||||
$! So far, tests have only been made on VMS for Alpha. VAX will come in time.
|
||||
$! ===========================================================================
|
||||
$
|
||||
$!
|
||||
$! Announce/identify.
|
||||
$!
|
||||
$ proc = f$environment( "procedure")
|
||||
$ write sys$output "@@@ "+ -
|
||||
f$parse( proc, , , "name")+ f$parse( proc, , , "type")
|
||||
$!
|
||||
$! Save the original default device:[directory].
|
||||
$!
|
||||
$ def_orig = f$environment( "default")
|
||||
$ on error then goto tidy
|
||||
$ on control_c then goto tidy
|
||||
$!
|
||||
$! SET DEFAULT to the main kit directory.
|
||||
$!
|
||||
$ proc = f$environment("procedure")
|
||||
$ proc = f$parse( "A.;", proc)- "A.;"
|
||||
$ set default 'proc'
|
||||
$ set default [-]
|
||||
$!
|
||||
$! ----- Prepare info for processing: version number and file info
|
||||
$ gosub read_version_info
|
||||
$ if libver .eqs. ""
|
||||
$ then
|
||||
$ write sys$error "ERROR: Couldn't find any library version info..."
|
||||
$ exit
|
||||
$ go to tidy:
|
||||
$ endif
|
||||
$
|
||||
$ if (f$getsyi("cpu").lt.128)
|
||||
$ if (f$getsyi("cpu") .lt. 128)
|
||||
$ then
|
||||
$ arch := VAX
|
||||
$ else
|
||||
$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
|
||||
$ if (arch .eqs. "") then arch = "UNK"
|
||||
$ endif
|
||||
$
|
||||
$ if arch .nes. "VAX"
|
||||
$ then
|
||||
$ arch_vax = 0
|
||||
$ libid = "Crypto"
|
||||
$ libnum = "[.UTIL]LIBEAY.NUM"
|
||||
$ libdir = "[.''ARCH'.EXE.CRYPTO]"
|
||||
$ libolb = "''libdir'LIBCRYPTO.OLB"
|
||||
$ libopt = "''libdir'LIBCRYPTO.OPT"
|
||||
$ libmap = "''libdir'LIBCRYPTO.MAP"
|
||||
$ libgoal= "''libdir'LIBCRYPTO.EXE"
|
||||
$ libref = ""
|
||||
$ gosub create_nonvax_shr
|
||||
$ libid = "SSL"
|
||||
$ libnum = "[.UTIL]SSLEAY.NUM"
|
||||
$ libdir = "[.''ARCH'.EXE.SSL]"
|
||||
$ libolb = "''libdir'LIBSSL.OLB"
|
||||
$ libopt = "''libdir'LIBSSL.OPT"
|
||||
$ libmap = "''libdir'LIBSSL.MAP"
|
||||
$ libgoal= "''libdir'LIBSSL.EXE"
|
||||
$ libref = "[.''ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE"
|
||||
$ gosub create_nonvax_shr
|
||||
$ else
|
||||
$ arch_vax = 1
|
||||
$ arch = "VAX"
|
||||
$ else
|
||||
$ arch_vax = 0
|
||||
$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
|
||||
$ if (arch .eqs. "") then arch = "UNK"
|
||||
$ endif
|
||||
$!
|
||||
$ archd = arch
|
||||
$ lib32 = "32"
|
||||
$ shr = "SHR32"
|
||||
$!
|
||||
$ if (p1 .nes. "")
|
||||
$ then
|
||||
$ if (p1 .eqs. "64")
|
||||
$ then
|
||||
$ archd = arch+ "_64"
|
||||
$ lib32 = ""
|
||||
$ shr = "SHR"
|
||||
$ else
|
||||
$ if (p1 .nes. "32")
|
||||
$ then
|
||||
$ write sys$output "Second argument invalid."
|
||||
$ write sys$output "It should be "32", "64", or nothing."
|
||||
$ exit
|
||||
$ endif
|
||||
$ endif
|
||||
$ endif
|
||||
$!
|
||||
$ ZLIB = p2
|
||||
$ zlib_lib = ""
|
||||
$ if (ZLIB .nes. "")
|
||||
$ then
|
||||
$ file2 = f$parse( ZLIB, "libz.olb", , , "syntax_only")
|
||||
$ if (f$search( file2) .eqs. "")
|
||||
$ then
|
||||
$ write sys$output ""
|
||||
$ write sys$output "The Option ", ZLIB, " Is Invalid."
|
||||
$ write sys$output " Can't find library: ''file2'"
|
||||
$ write sys$output ""
|
||||
$ goto tidy
|
||||
$ endif
|
||||
$ zlib_lib = ", ''file2' /library"
|
||||
$ endif
|
||||
$!
|
||||
$ if (arch_vax)
|
||||
$ then
|
||||
$ libtit = "CRYPTO_TRANSFER_VECTOR"
|
||||
$ libid = "Crypto"
|
||||
$ libnum = "[.UTIL]LIBEAY.NUM"
|
||||
$ libdir = "[.''ARCH'.EXE.CRYPTO]"
|
||||
$ libmar = "''libdir'LIBCRYPTO.MAR"
|
||||
$ libolb = "''libdir'LIBCRYPTO.OLB"
|
||||
$ libopt = "''libdir'LIBCRYPTO.OPT"
|
||||
$ libobj = "''libdir'LIBCRYPTO.OBJ"
|
||||
$ libmap = "''libdir'LIBCRYPTO.MAP"
|
||||
$ libgoal= "''libdir'LIBCRYPTO.EXE"
|
||||
$ libdir = "[.''ARCHD'.EXE.CRYPTO]"
|
||||
$ libmar = "''libdir'SSL_LIBCRYPTO_''shr'.MAR"
|
||||
$ libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB"
|
||||
$ libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT"
|
||||
$ libobj = "''libdir'SSL_LIBCRYPTO_''shr'.OBJ"
|
||||
$ libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP"
|
||||
$ libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE"
|
||||
$ libref = ""
|
||||
$ libvec = "LIBCRYPTO"
|
||||
$ gosub create_vax_shr
|
||||
$ if f$search( libolb) .nes. "" then gosub create_vax_shr
|
||||
$ libtit = "SSL_TRANSFER_VECTOR"
|
||||
$ libid = "SSL"
|
||||
$ libnum = "[.UTIL]SSLEAY.NUM"
|
||||
$ libdir = "[.''ARCH'.EXE.SSL]"
|
||||
$ libmar = "''libdir'LIBSSL.MAR"
|
||||
$ libolb = "''libdir'LIBSSL.OLB"
|
||||
$ libopt = "''libdir'LIBSSL.OPT"
|
||||
$ libobj = "''libdir'LIBSSL.OBJ"
|
||||
$ libmap = "''libdir'LIBSSL.MAP"
|
||||
$ libgoal= "''libdir'LIBSSL.EXE"
|
||||
$ libref = "[.''ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE"
|
||||
$ libdir = "[.''ARCHD'.EXE.SSL]"
|
||||
$ libmar = "''libdir'SSL_LIBSSL_''shr'.MAR"
|
||||
$ libolb = "''libdir'SSL_LIBSSL''lib32'.OLB"
|
||||
$ libopt = "''libdir'SSL_LIBSSL_''shr'.OPT"
|
||||
$ libobj = "''libdir'SSL_LIBSSL_''shr'.OBJ"
|
||||
$ libmap = "''libdir'SSL_LIBSSL_''shr'.MAP"
|
||||
$ libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE"
|
||||
$ libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE"
|
||||
$ libvec = "LIBSSL"
|
||||
$ gosub create_vax_shr
|
||||
$ if f$search( libolb) .nes. "" then gosub create_vax_shr
|
||||
$ else
|
||||
$ libid = "Crypto"
|
||||
$ libnum = "[.UTIL]LIBEAY.NUM"
|
||||
$ libdir = "[.''ARCHD'.EXE.CRYPTO]"
|
||||
$ libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB"
|
||||
$ libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT"
|
||||
$ libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP"
|
||||
$ libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE"
|
||||
$ libref = ""
|
||||
$ if f$search( libolb) .nes. "" then gosub create_nonvax_shr
|
||||
$ libid = "SSL"
|
||||
$ libnum = "[.UTIL]SSLEAY.NUM"
|
||||
$ libdir = "[.''ARCHD'.EXE.SSL]"
|
||||
$ libolb = "''libdir'SSL_LIBSSL''lib32'.OLB"
|
||||
$ libopt = "''libdir'SSL_LIBSSL_''shr'.OPT"
|
||||
$ libmap = "''libdir'SSL_LIBSSL_''shr'.MAP"
|
||||
$ libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE"
|
||||
$ libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE"
|
||||
$ if f$search( libolb) .nes. "" then gosub create_nonvax_shr
|
||||
$ endif
|
||||
$!
|
||||
$ tidy:
|
||||
$!
|
||||
$! Close any open files.
|
||||
$!
|
||||
$ if (f$trnlnm( "libnum", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
|
||||
close libnum
|
||||
$!
|
||||
$ if (f$trnlnm( "mar", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
|
||||
close mar
|
||||
$!
|
||||
$ if (f$trnlnm( "opt", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
|
||||
close opt
|
||||
$!
|
||||
$ if (f$trnlnm( "vf", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
|
||||
close vf
|
||||
$!
|
||||
$! Restore the original default device:[directory].
|
||||
$!
|
||||
$ set default 'def_orig'
|
||||
$ exit
|
||||
$
|
||||
$! ----- Soubroutines to build the shareable libraries
|
||||
$! ----- Subroutines to build the shareable libraries
|
||||
$! For each supported architecture, there's a main shareable library
|
||||
$! creator, which is called from the main code above.
|
||||
$! The creator will define a number of variables to tell the next levels of
|
||||
@@ -111,9 +188,9 @@ $! ----- Subroutines for non-VAX
|
||||
$! -----
|
||||
$! The creator routine
|
||||
$ create_nonvax_shr:
|
||||
$ open/write opt 'libopt'
|
||||
$ open /write opt 'libopt'
|
||||
$ write opt "identification=""",libid," ",libverstr,""""
|
||||
$ write opt libolb,"/lib"
|
||||
$ write opt libolb, " /library"
|
||||
$ if libref .nes. "" then write opt libref,"/SHARE"
|
||||
$ write opt "SYMBOL_VECTOR=(-"
|
||||
$ libfirstentry := true
|
||||
@@ -124,7 +201,8 @@ $ gosub read_func_num
|
||||
$ write opt ")"
|
||||
$ write opt "GSMATCH=",libvmatch,",",libver
|
||||
$ close opt
|
||||
$ link/map='libmap'/full/share='libgoal' 'libopt'/option
|
||||
$ link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options -
|
||||
'zlib_lib'
|
||||
$ return
|
||||
$
|
||||
$! The record writer routine
|
||||
@@ -158,7 +236,7 @@ $! ----- Subroutines for VAX
|
||||
$! -----
|
||||
$! The creator routine
|
||||
$ create_vax_shr:
|
||||
$ open/write mar 'libmar'
|
||||
$ open /write mar 'libmar'
|
||||
$ type sys$input:/out=mar:
|
||||
;
|
||||
; Transfer vector for VAX shareable image
|
||||
@@ -193,10 +271,10 @@ $! libwriter := write_vax_vtransfer_entry
|
||||
$! gosub read_func_num
|
||||
$ write mar " .END"
|
||||
$ close mar
|
||||
$ open/write opt 'libopt'
|
||||
$ open /write opt 'libopt'
|
||||
$ write opt "identification=""",libid," ",libverstr,""""
|
||||
$ write opt libobj
|
||||
$ write opt libolb,"/lib"
|
||||
$ write opt libolb, " /library"
|
||||
$ if libref .nes. "" then write opt libref,"/SHARE"
|
||||
$ type sys$input:/out=opt:
|
||||
!
|
||||
@@ -215,7 +293,8 @@ $ libwriter := write_vax_psect_attr
|
||||
$ gosub read_func_num
|
||||
$ close opt
|
||||
$ macro/obj='libobj' 'libmar'
|
||||
$ link/map='libmap'/full/share='libgoal' 'libopt'/option
|
||||
$ link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options -
|
||||
'zlib_lib'
|
||||
$ return
|
||||
$
|
||||
$! The record writer routine for VAX functions
|
||||
@@ -237,9 +316,9 @@ $ return
|
||||
$
|
||||
$! ----- Common subroutines
|
||||
$! -----
|
||||
$! The .num file reader. This one has great responsability.
|
||||
$! The .num file reader. This one has great responsibility.
|
||||
$ read_func_num:
|
||||
$ open libnum 'libnum'
|
||||
$ open /read libnum 'libnum'
|
||||
$ goto read_nums
|
||||
$
|
||||
$ read_nums:
|
||||
@@ -247,27 +326,30 @@ $ libentrynum=0
|
||||
$ liblastentry:=false
|
||||
$ entrycount=0
|
||||
$ loop:
|
||||
$ read/end=loop_end/err=loop_end libnum line
|
||||
$ entrynum=f$int(f$element(1," ",f$edit(line,"COMPRESS,TRIM")))
|
||||
$ entryinfo=f$element(2," ",f$edit(line,"COMPRESS,TRIM"))
|
||||
$ curentry=f$element(0," ",f$edit(line,"COMPRESS,TRIM"))
|
||||
$ info_exist=f$element(0,":",entryinfo)
|
||||
$ info_platforms=","+f$element(1,":",entryinfo)+","
|
||||
$ info_kind=f$element(2,":",entryinfo)
|
||||
$ info_algorithms=","+f$element(3,":",entryinfo)+","
|
||||
$ read /end=loop_end /err=loop_end libnum line
|
||||
$ lin = f$edit( line, "COMPRESS,TRIM")
|
||||
$! Skip a "#" comment line.
|
||||
$ if (f$extract( 0, 1, lin) .eqs. "#") then goto loop
|
||||
$ entrynum = f$int(f$element( 1, " ", lin))
|
||||
$ entryinfo = f$element( 2, " ", lin)
|
||||
$ curentry = f$element( 0, " ", lin)
|
||||
$ info_exist = f$element( 0, ":", entryinfo)
|
||||
$ info_platforms = ","+ f$element(1, ":", entryinfo)+ ","
|
||||
$ info_kind = f$element( 2, ":", entryinfo)
|
||||
$ info_algorithms = ","+ f$element( 3, ":", entryinfo)+ ","
|
||||
$ if info_exist .eqs. "NOEXIST" then goto loop
|
||||
$ truesum = 0
|
||||
$ falsesum = 0
|
||||
$ negatives = 1
|
||||
$ plat_i = 0
|
||||
$ loop1:
|
||||
$ plat_entry = f$element(plat_i,",",info_platforms)
|
||||
$ plat_entry = f$element( plat_i, ",", info_platforms)
|
||||
$ plat_i = plat_i + 1
|
||||
$ if plat_entry .eqs. "" then goto loop1
|
||||
$ if plat_entry .nes. ","
|
||||
$ then
|
||||
$ if f$extract(0,1,plat_entry) .nes. "!" then negatives = 0
|
||||
$ if f$getsyi("CPU") .lt. 128
|
||||
$ if (arch_vax)
|
||||
$ then
|
||||
$ if plat_entry .eqs. "EXPORT_VAR_AS_FUNCTION" then -
|
||||
$ truesum = truesum + 1
|
||||
@@ -276,6 +358,7 @@ $ falsesum = falsesum + 1
|
||||
$ endif
|
||||
$!
|
||||
$ if ((plat_entry .eqs. "VMS") .or. -
|
||||
((plat_entry .eqs. "ZLIB") .and. (ZLIB .nes. "")) .or. -
|
||||
(arch_vax .and. (plat_entry .eqs. "VMSVAX"))) then -
|
||||
truesum = truesum + 1
|
||||
$!
|
||||
@@ -345,7 +428,7 @@ $
|
||||
$! The version number reader
|
||||
$ read_version_info:
|
||||
$ libver = ""
|
||||
$ open/read vf [.CRYPTO]OPENSSLV.H
|
||||
$ open /read vf [.CRYPTO]OPENSSLV.H
|
||||
$ loop_rvi:
|
||||
$ read/err=endloop_rvi/end=endloop_rvi vf rvi_line
|
||||
$ if rvi_line - "SHLIB_VERSION_NUMBER """ .eqs. rvi_line then -
|
||||
|
108
VMS/openssl_startup.com
Executable file
108
VMS/openssl_startup.com
Executable file
@@ -0,0 +1,108 @@
|
||||
$!
|
||||
$! Startup file for OpenSSL 1.x.
|
||||
$!
|
||||
$! 2011-03-05 SMS.
|
||||
$!
|
||||
$! This procedure must reside in the OpenSSL installation directory.
|
||||
$! It will fail if it is copied to a different location.
|
||||
$!
|
||||
$! P1 qualifier(s) for DEFINE. For example, "/SYSTEM" to get the
|
||||
$! logical names defined in the system logical name table.
|
||||
$!
|
||||
$! P2 "64", to use executables which were built with 64-bit pointers.
|
||||
$!
|
||||
$! Good (default) and bad status values.
|
||||
$!
|
||||
$ status = %x00010001 ! RMS$_NORMAL, normal successful completion.
|
||||
$ rms_e_fnf = %x00018292 ! RMS$_FNF, file not found.
|
||||
$!
|
||||
$! Prepare for problems.
|
||||
$!
|
||||
$ orig_dev_dir = f$environment( "DEFAULT")
|
||||
$ on control_y then goto clean_up
|
||||
$ on error then goto clean_up
|
||||
$!
|
||||
$! Determine hardware architecture.
|
||||
$!
|
||||
$ if (f$getsyi( "cpu") .lt. 128)
|
||||
$ then
|
||||
$ arch_name = "VAX"
|
||||
$ else
|
||||
$ arch_name = f$edit( f$getsyi( "arch_name"), "upcase")
|
||||
$ if (arch_name .eqs. "") then arch_name = "UNK"
|
||||
$ endif
|
||||
$!
|
||||
$ if (p2 .eqs. "64")
|
||||
$ then
|
||||
$ arch_name_exe = arch_name+ "_64"
|
||||
$ else
|
||||
$ arch_name_exe = arch_name
|
||||
$ endif
|
||||
$!
|
||||
$! Derive the OpenSSL installation device:[directory] from the location
|
||||
$! of this command procedure.
|
||||
$!
|
||||
$ proc = f$environment( "procedure")
|
||||
$ proc_dev_dir = f$parse( "A.;", proc, , , "no_conceal") - "A.;"
|
||||
$ proc_dev = f$parse( proc_dev_dir, , , "device", "syntax_only")
|
||||
$ proc_dir = f$parse( proc_dev_dir, , , "directory", "syntax_only") - -
|
||||
".][000000"- "[000000."- "]["- "["- "]"
|
||||
$ proc_dev_dir = proc_dev+ "["+ proc_dir+ "]"
|
||||
$ set default 'proc_dev_dir'
|
||||
$ set default [-]
|
||||
$ ossl_dev_dir = f$environment( "default")
|
||||
$!
|
||||
$! Check existence of expected directories (to see if this procedure has
|
||||
$! been moved away from its proper place).
|
||||
$!
|
||||
$ if ((f$search( "certs.dir;1") .eqs. "") .or. -
|
||||
(f$search( "include.dir;1") .eqs. "") .or. -
|
||||
(f$search( "private.dir;1") .eqs. "") .or. -
|
||||
(f$search( "vms.dir;1") .eqs. ""))
|
||||
$ then
|
||||
$ write sys$output -
|
||||
" Can't find expected common OpenSSL directories in:"
|
||||
$ write sys$output " ''ossl_dev_dir'"
|
||||
$ status = rms_e_fnf
|
||||
$ goto clean_up
|
||||
$ endif
|
||||
$!
|
||||
$ if ((f$search( "''arch_name_exe'_exe.dir;1") .eqs. "") .or. -
|
||||
(f$search( "''arch_name'_lib.dir;1") .eqs. ""))
|
||||
$ then
|
||||
$ write sys$output -
|
||||
" Can't find expected architecture-specific OpenSSL directories in:"
|
||||
$ write sys$output " ''ossl_dev_dir'"
|
||||
$ status = rms_e_fnf
|
||||
$ goto clean_up
|
||||
$ endif
|
||||
$!
|
||||
$! All seems well (enough). Define the OpenSSL logical names.
|
||||
$!
|
||||
$ ossl_root = ossl_dev_dir- "]"+ ".]"
|
||||
$ define /translation_attributes = concealed /nolog'p1 SSLROOT 'ossl_root'
|
||||
$ define /nolog 'p1' SSLCERTS sslroot:[certs]
|
||||
$ define /nolog 'p1' SSLINCLUDE sslroot:[include]
|
||||
$ define /nolog 'p1' SSLPRIVATE sslroot:[private]
|
||||
$ define /nolog 'p1' SSLEXE sslroot:['arch_name_exe'_exe]
|
||||
$ define /nolog 'p1' SSLLIB sslroot:['arch_name'_lib]
|
||||
$!
|
||||
$! Defining OPENSSL lets a C program use "#include <openssl/{foo}.h>":
|
||||
$ define /nolog 'p1' OPENSSL SSLINCLUDE:
|
||||
$!
|
||||
$! Run a site-specific procedure, if it exists.
|
||||
$!
|
||||
$ if f$search( "sslroot:[vms]openssl_systartup.com") .nes."" then -
|
||||
@ sslroot:[vms]openssl_systartup.com
|
||||
$!
|
||||
$! Restore the original default dev:[dir] (if known).
|
||||
$!
|
||||
$ clean_up:
|
||||
$!
|
||||
$ if (f$type( orig_dev_dir) .nes. "")
|
||||
$ then
|
||||
$ set default 'orig_dev_dir'
|
||||
$ endif
|
||||
$!
|
||||
$ EXIT 'status'
|
||||
$!
|
20
VMS/openssl_undo.com
Executable file
20
VMS/openssl_undo.com
Executable file
@@ -0,0 +1,20 @@
|
||||
$!
|
||||
$! Deassign OpenSSL logical names.
|
||||
$!
|
||||
$ call deass "OPENSSL" "''p1'"
|
||||
$ call deass "SSLCERTS" "''p1'"
|
||||
$ call deass "SSLEXE" "''p1'"
|
||||
$ call deass "SSLINCLUDE" "''p1'"
|
||||
$ call deass "SSLLIB" "''p1'"
|
||||
$ call deass "SSLPRIVATE" "''p1'"
|
||||
$ call deass "SSLROOT" "''p1'"
|
||||
$!
|
||||
$ exit
|
||||
$!
|
||||
$deass: subroutine
|
||||
$ if (f$trnlnm( p1) .nes. "")
|
||||
$ then
|
||||
$ deassign 'p2' 'p1'
|
||||
$ endif
|
||||
$ endsubroutine
|
||||
$!
|
100
apps/CA.com
100
apps/CA.com
@@ -37,14 +37,25 @@ $ VERIFY = openssl + " verify"
|
||||
$ X509 = openssl + " x509"
|
||||
$ PKCS12 = openssl + " pkcs12"
|
||||
$ echo = "write sys$Output"
|
||||
$ RET = 1
|
||||
$!
|
||||
$ s = F$PARSE(F$ENVIRONMENT("DEFAULT"),"[]") - "].;"
|
||||
$ CATOP := 's'.demoCA
|
||||
$ CAKEY := ]cakey.pem
|
||||
$ CACERT := ]cacert.pem
|
||||
$! 2010-12-20 SMS.
|
||||
$! Use a concealed logical name to reduce command line lengths, to
|
||||
$! avoid DCL errors on VAX:
|
||||
$! %DCL-W-TKNOVF, command element is too long - shorten
|
||||
$! (Path segments like "openssl-1_0_1-stable-SNAP-20101217" accumulate
|
||||
$! quickly.)
|
||||
$!
|
||||
$ CATOP = F$PARSE( F$ENVIRONMENT( "DEFAULT"), "[]")- "].;"+ ".demoCA.]"
|
||||
$ define /translation_attributes = concealed CATOP 'CATOP'
|
||||
$!
|
||||
$ on error then goto clean_up
|
||||
$ on control_y then goto clean_up
|
||||
$!
|
||||
$ CAKEY = "CATOP:[private]cakey.pem"
|
||||
$ CACERT = "CATOP:[000000]cacert.pem"
|
||||
$
|
||||
$ __INPUT := SYS$COMMAND
|
||||
$ RET = 1
|
||||
$!
|
||||
$ i = 1
|
||||
$opt_loop:
|
||||
@@ -55,7 +66,7 @@ $
|
||||
$ IF (prog_opt .EQS. "?" .OR. prog_opt .EQS. "-h" .OR. prog_opt .EQS. "-help")
|
||||
$ THEN
|
||||
$ echo "usage: CA -newcert|-newreq|-newca|-sign|-verify"
|
||||
$ exit
|
||||
$ goto clean_up
|
||||
$ ENDIF
|
||||
$!
|
||||
$ IF (prog_opt .EQS. "-input")
|
||||
@@ -69,7 +80,7 @@ $!
|
||||
$ IF (prog_opt .EQS. "-newcert")
|
||||
$ THEN
|
||||
$ ! Create a certificate.
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ REQ -new -x509 -keyout newreq.pem -out newreq.pem 'DAYS'
|
||||
$ RET=$STATUS
|
||||
$ echo "Certificate (and private key) is in newreq.pem"
|
||||
@@ -79,7 +90,7 @@ $!
|
||||
$ IF (prog_opt .EQS. "-newreq")
|
||||
$ THEN
|
||||
$ ! Create a certificate request
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ REQ -new -keyout newreq.pem -out newreq.pem 'DAYS'
|
||||
$ RET=$STATUS
|
||||
$ echo "Request (and private key) is in newreq.pem"
|
||||
@@ -90,41 +101,40 @@ $ IF (prog_opt .EQS. "-newca")
|
||||
$ THEN
|
||||
$ ! If explicitly asked for or it doesn't exist then setup the directory
|
||||
$ ! structure that Eric likes to manage things.
|
||||
$ IF F$SEARCH(CATOP+"]serial.") .EQS. ""
|
||||
$ IF F$SEARCH( "CATOP:[000000]serial.") .EQS. ""
|
||||
$ THEN
|
||||
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP']
|
||||
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.certs]
|
||||
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.crl]
|
||||
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.newcerts]
|
||||
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.private]
|
||||
$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[000000]
|
||||
$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[certs]
|
||||
$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[crl]
|
||||
$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[newcerts]
|
||||
$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[private]
|
||||
$
|
||||
$ OPEN /WRITE ser_file 'CATOP']serial.
|
||||
$ OPEN /WRITE ser_file CATOP:[000000]serial.
|
||||
$ WRITE ser_file "01"
|
||||
$ CLOSE ser_file
|
||||
$ APPEND/NEW NL: 'CATOP']index.txt
|
||||
$ APPEND /NEW_VERSION NL: CATOP:[000000]index.txt
|
||||
$
|
||||
$ ! The following is to make sure access() doesn't get confused. It
|
||||
$ ! really needs one file in the directory to give correct answers...
|
||||
$ COPY NLA0: 'CATOP'.certs].;
|
||||
$ COPY NLA0: 'CATOP'.crl].;
|
||||
$ COPY NLA0: 'CATOP'.newcerts].;
|
||||
$ COPY NLA0: 'CATOP'.private].;
|
||||
$ COPY NLA0: CATOP:[certs].;
|
||||
$ COPY NLA0: CATOP:[crl].;
|
||||
$ COPY NLA0: CATOP:[newcerts].;
|
||||
$ COPY NLA0: CATOP:[private].;
|
||||
$ ENDIF
|
||||
$!
|
||||
$ IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. ""
|
||||
$ IF F$SEARCH( CAKEY) .EQS. ""
|
||||
$ THEN
|
||||
$ READ '__INPUT' FILE -
|
||||
/PROMT="CA certificate filename (or enter to create)"
|
||||
$ IF F$SEARCH(FILE) .NES. ""
|
||||
/PROMPT="CA certificate filename (or enter to create): "
|
||||
$ IF (FILE .NES. "") .AND. (F$SEARCH(FILE) .NES. "")
|
||||
$ THEN
|
||||
$ COPY 'FILE' 'CATOP'.private'CAKEY'
|
||||
$ RET=$STATUS
|
||||
$ COPY 'FILE' 'CAKEY'
|
||||
$ RET=$STATUS
|
||||
$ ELSE
|
||||
$ echo "Making CA certificate ..."
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ REQ -new -x509 -keyout 'CATOP'.private'CAKEY' -
|
||||
-out 'CATOP''CACERT' 'DAYS'
|
||||
$ RET=$STATUS
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ REQ -new -x509 -keyout 'CAKEY' -out 'CACERT' 'DAYS'
|
||||
$ RET=$STATUS
|
||||
$ ENDIF
|
||||
$ ENDIF
|
||||
$ GOTO opt_loop_continue
|
||||
@@ -135,16 +145,16 @@ $ THEN
|
||||
$ i = i + 1
|
||||
$ cname = P'i'
|
||||
$ IF cname .EQS. "" THEN cname = "My certificate"
|
||||
$ PKCS12 -in newcert.pem -inkey newreq.pem -certfile 'CATOP''CACERT -
|
||||
-out newcert.p12 -export -name "''cname'"
|
||||
$ PKCS12 -in newcert.pem -inkey newreq.pem -certfile 'CACERT' -
|
||||
-out newcert.p12 -export -name "''cname'"
|
||||
$ RET=$STATUS
|
||||
$ exit RET
|
||||
$ goto clean_up
|
||||
$ ENDIF
|
||||
$!
|
||||
$ IF (prog_opt .EQS. "-xsign")
|
||||
$ THEN
|
||||
$!
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ CA -policy policy_anything -infiles newreq.pem
|
||||
$ RET=$STATUS
|
||||
$ GOTO opt_loop_continue
|
||||
@@ -153,7 +163,7 @@ $!
|
||||
$ IF ((prog_opt .EQS. "-sign") .OR. (prog_opt .EQS. "-signreq"))
|
||||
$ THEN
|
||||
$!
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ CA -policy policy_anything -out newcert.pem -infiles newreq.pem
|
||||
$ RET=$STATUS
|
||||
$ type newcert.pem
|
||||
@@ -165,9 +175,9 @@ $ IF (prog_opt .EQS. "-signcert")
|
||||
$ THEN
|
||||
$!
|
||||
$ echo "Cert passphrase will be requested twice - bug?"
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ CA -policy policy_anything -out newcert.pem -infiles tmp.pem
|
||||
y
|
||||
y
|
||||
@@ -182,17 +192,17 @@ $!
|
||||
$ i = i + 1
|
||||
$ IF (p'i' .EQS. "")
|
||||
$ THEN
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ VERIFY "-CAfile" 'CATOP''CACERT' newcert.pem
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ VERIFY "-CAfile" 'CACERT' newcert.pem
|
||||
$ ELSE
|
||||
$ j = i
|
||||
$ verify_opt_loop:
|
||||
$ IF j .GT. 8 THEN GOTO verify_opt_loop_end
|
||||
$ IF p'j' .NES. ""
|
||||
$ THEN
|
||||
$ DEFINE/USER SYS$INPUT '__INPUT'
|
||||
$ DEFINE /USER_MODE SYS$INPUT '__INPUT'
|
||||
$ __tmp = p'j'
|
||||
$ VERIFY "-CAfile" 'CATOP''CACERT' '__tmp'
|
||||
$ VERIFY "-CAfile" 'CACERT' '__tmp'
|
||||
$ tmp=$STATUS
|
||||
$ IF tmp .NE. 0 THEN RET=tmp
|
||||
$ ENDIF
|
||||
@@ -208,8 +218,8 @@ $ IF (prog_opt .NES. "")
|
||||
$ THEN
|
||||
$!
|
||||
$ echo "Unknown argument ''prog_opt'"
|
||||
$
|
||||
$ EXIT 3
|
||||
$ RET = 3
|
||||
$ goto clean_up
|
||||
$ ENDIF
|
||||
$
|
||||
$opt_loop_continue:
|
||||
@@ -217,4 +227,10 @@ $ i = i + 1
|
||||
$ GOTO opt_loop
|
||||
$
|
||||
$opt_loop_end:
|
||||
$!
|
||||
$clean_up:
|
||||
$!
|
||||
$ if f$trnlnm( "CATOP", "LNM$PROCESS") .nes. "" then -
|
||||
deassign /process CATOP
|
||||
$!
|
||||
$ EXIT 'RET'
|
||||
|
27
apps/apps.c
27
apps/apps.c
@@ -257,6 +257,8 @@ int args_from_file(char *file, int *argc, char **argv[])
|
||||
|
||||
int str2fmt(char *s)
|
||||
{
|
||||
if (s == NULL)
|
||||
return FORMAT_UNDEF;
|
||||
if ((*s == 'D') || (*s == 'd'))
|
||||
return(FORMAT_ASN1);
|
||||
else if ((*s == 'T') || (*s == 't'))
|
||||
@@ -377,13 +379,12 @@ void program_name(char *in, char *out, int size)
|
||||
|
||||
int chopup_args(ARGS *arg, char *buf, int *argc, char **argv[])
|
||||
{
|
||||
int num,len,i;
|
||||
int num,i;
|
||||
char *p;
|
||||
|
||||
*argc=0;
|
||||
*argv=NULL;
|
||||
|
||||
len=strlen(buf);
|
||||
i=0;
|
||||
if (arg->count == 0)
|
||||
{
|
||||
@@ -797,7 +798,9 @@ X509 *load_cert(BIO *err, const char *file, int format,
|
||||
if (file == NULL)
|
||||
{
|
||||
#ifdef _IONBF
|
||||
# ifndef OPENSSL_NO_SETVBUF_IONBF
|
||||
setvbuf(stdin, NULL, _IONBF, 0);
|
||||
# endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
|
||||
#endif
|
||||
BIO_set_fp(cert,stdin,BIO_NOCLOSE);
|
||||
}
|
||||
@@ -875,10 +878,17 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
|
||||
if (format == FORMAT_ENGINE)
|
||||
{
|
||||
if (!e)
|
||||
BIO_printf(bio_err,"no engine specified\n");
|
||||
BIO_printf(err,"no engine specified\n");
|
||||
else
|
||||
{
|
||||
pkey = ENGINE_load_private_key(e, file,
|
||||
ui_method, &cb_data);
|
||||
if (!pkey)
|
||||
{
|
||||
BIO_printf(err,"cannot load %s from engine\n",key_descrip);
|
||||
ERR_print_errors(err);
|
||||
}
|
||||
}
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
@@ -891,7 +901,9 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
|
||||
if (file == NULL && maybe_stdin)
|
||||
{
|
||||
#ifdef _IONBF
|
||||
# ifndef OPENSSL_NO_SETVBUF_IONBF
|
||||
setvbuf(stdin, NULL, _IONBF, 0);
|
||||
# endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
|
||||
#endif
|
||||
BIO_set_fp(key,stdin,BIO_NOCLOSE);
|
||||
}
|
||||
@@ -923,7 +935,7 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
|
||||
&pkey, NULL, NULL))
|
||||
goto end;
|
||||
}
|
||||
#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA)
|
||||
#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA) && !defined (OPENSSL_NO_RC4)
|
||||
else if (format == FORMAT_MSBLOB)
|
||||
pkey = b2i_PrivateKey_bio(key);
|
||||
else if (format == FORMAT_PVK)
|
||||
@@ -937,8 +949,11 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
|
||||
}
|
||||
end:
|
||||
if (key != NULL) BIO_free(key);
|
||||
if (pkey == NULL)
|
||||
if (pkey == NULL)
|
||||
{
|
||||
BIO_printf(err,"unable to load %s\n", key_descrip);
|
||||
ERR_print_errors(err);
|
||||
}
|
||||
return(pkey);
|
||||
}
|
||||
|
||||
@@ -977,7 +992,9 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
|
||||
if (file == NULL && maybe_stdin)
|
||||
{
|
||||
#ifdef _IONBF
|
||||
# ifndef OPENSSL_NO_SETVBUF_IONBF
|
||||
setvbuf(stdin, NULL, _IONBF, 0);
|
||||
# endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
|
||||
#endif
|
||||
BIO_set_fp(key,stdin,BIO_NOCLOSE);
|
||||
}
|
||||
|
@@ -408,6 +408,7 @@ static int do_generate(BIO *bio, char *genstr, char *genconf, BUF_MEM *buf)
|
||||
|
||||
atyp = ASN1_generate_nconf(genstr, cnf);
|
||||
NCONF_free(cnf);
|
||||
cnf = NULL;
|
||||
|
||||
if (!atyp)
|
||||
return -1;
|
||||
|
@@ -155,7 +155,7 @@ int MAIN(int argc, char **argv)
|
||||
if ((*argv)[0] != '-') break;
|
||||
if (strcmp(*argv,"-c") == 0)
|
||||
separator=1;
|
||||
if (strcmp(*argv,"-r") == 0)
|
||||
else if (strcmp(*argv,"-r") == 0)
|
||||
separator=2;
|
||||
else if (strcmp(*argv,"-rand") == 0)
|
||||
{
|
||||
|
@@ -88,9 +88,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
DH *dh=NULL;
|
||||
int i,badops=0,text=0;
|
||||
BIO *in=NULL,*out=NULL;
|
||||
@@ -189,7 +186,7 @@ bad:
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
in=BIO_new(BIO_s_file());
|
||||
|
@@ -149,9 +149,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
DH *dh=NULL;
|
||||
int i,badops=0,text=0;
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
@@ -270,7 +267,7 @@ bad:
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (g && !num)
|
||||
|
@@ -334,7 +334,7 @@ bad:
|
||||
i=PEM_write_bio_DSA_PUBKEY(out,dsa);
|
||||
else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc,
|
||||
NULL,0,NULL, passout);
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4)
|
||||
} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
|
||||
EVP_PKEY *pk;
|
||||
pk = EVP_PKEY_new();
|
||||
|
@@ -111,9 +111,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
DSA *dsa=NULL;
|
||||
int i,badops=0,text=0;
|
||||
BIO *in=NULL,*out=NULL;
|
||||
@@ -278,7 +275,7 @@ bad:
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (need_rand)
|
||||
@@ -357,12 +354,10 @@ bad:
|
||||
if (C)
|
||||
{
|
||||
unsigned char *data;
|
||||
int l,len,bits_p,bits_q,bits_g;
|
||||
int l,len,bits_p;
|
||||
|
||||
len=BN_num_bytes(dsa->p);
|
||||
bits_p=BN_num_bits(dsa->p);
|
||||
bits_q=BN_num_bits(dsa->q);
|
||||
bits_g=BN_num_bits(dsa->g);
|
||||
data=(unsigned char *)OPENSSL_malloc(len+20);
|
||||
if (data == NULL)
|
||||
{
|
||||
|
@@ -85,9 +85,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
int ret = 1;
|
||||
EC_KEY *eckey = NULL;
|
||||
const EC_GROUP *group;
|
||||
@@ -254,7 +251,7 @@ bad:
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if(!app_passwd(bio_err, passargin, passargout, &passin, &passout))
|
||||
|
@@ -129,9 +129,6 @@ int MAIN(int argc, char **argv)
|
||||
char *infile = NULL, *outfile = NULL, *prog;
|
||||
BIO *in = NULL, *out = NULL;
|
||||
int informat, outformat, noout = 0, C = 0, ret = 1;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
char *engine = NULL;
|
||||
|
||||
BIGNUM *ec_p = NULL, *ec_a = NULL, *ec_b = NULL,
|
||||
@@ -340,7 +337,7 @@ bad:
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (list_curves)
|
||||
|
@@ -101,9 +101,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
static const char magic[]="Salted__";
|
||||
char mbuf[sizeof magic-1];
|
||||
char *strbuf=NULL;
|
||||
@@ -328,7 +325,7 @@ bad:
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (md && (dgst=EVP_get_digestbyname(md)) == NULL)
|
||||
@@ -396,8 +393,10 @@ bad:
|
||||
|
||||
if (inf == NULL)
|
||||
{
|
||||
#ifndef OPENSSL_NO_SETVBUF_IONBF
|
||||
if (bufsize != NULL)
|
||||
setvbuf(stdin, (char *)NULL, _IONBF, 0);
|
||||
#endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
|
||||
BIO_set_fp(in,stdin,BIO_NOCLOSE);
|
||||
}
|
||||
else
|
||||
@@ -450,8 +449,10 @@ bad:
|
||||
if (outf == NULL)
|
||||
{
|
||||
BIO_set_fp(out,stdout,BIO_NOCLOSE);
|
||||
#ifndef OPENSSL_NO_SETVBUF_IONBF
|
||||
if (bufsize != NULL)
|
||||
setvbuf(stdout, (char *)NULL, _IONBF, 0);
|
||||
#endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
|
||||
#ifdef OPENSSL_SYS_VMS
|
||||
{
|
||||
BIO *tmpbio = BIO_new(BIO_f_linebuffer());
|
||||
|
@@ -89,9 +89,6 @@ int MAIN(int, char **);
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
BN_GENCB cb;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
DH *dh=NULL;
|
||||
int ret=1,num=DEFBITS;
|
||||
int g=2;
|
||||
@@ -163,7 +160,7 @@ bad:
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
out=BIO_new(BIO_s_file());
|
||||
|
@@ -78,9 +78,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
DSA *dsa=NULL;
|
||||
int ret=1;
|
||||
char *outfile=NULL;
|
||||
@@ -206,7 +203,7 @@ bad:
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if(!app_passwd(bio_err, NULL, passargout, NULL, &passout)) {
|
||||
|
@@ -265,8 +265,11 @@ bad:
|
||||
|
||||
BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
|
||||
num);
|
||||
|
||||
#ifdef OPENSSL_NO_ENGINE
|
||||
rsa = RSA_new();
|
||||
#else
|
||||
rsa = RSA_new_method(e);
|
||||
#endif
|
||||
if (!rsa)
|
||||
goto err;
|
||||
|
||||
|
107
apps/install-apps.com
Executable file
107
apps/install-apps.com
Executable file
@@ -0,0 +1,107 @@
|
||||
$! INSTALL.COM -- Installs the files in a given directory tree
|
||||
$!
|
||||
$! Author: Richard Levitte <richard@levitte.org>
|
||||
$! Time of creation: 22-MAY-1998 10:13
|
||||
$!
|
||||
$! P1 root of the directory tree
|
||||
$! P2 "64" for 64-bit pointers.
|
||||
$!
|
||||
$!
|
||||
$! Announce/identify.
|
||||
$!
|
||||
$ proc = f$environment( "procedure")
|
||||
$ write sys$output "@@@ "+ -
|
||||
f$parse( proc, , , "name")+ f$parse( proc, , , "type")
|
||||
$!
|
||||
$ on error then goto tidy
|
||||
$ on control_c then goto tidy
|
||||
$!
|
||||
$ if (p1 .eqs. "")
|
||||
$ then
|
||||
$ write sys$output "First argument missing."
|
||||
$ write sys$output -
|
||||
"It should be the directory where you want things installed."
|
||||
$ exit
|
||||
$ endif
|
||||
$!
|
||||
$ if (f$getsyi("cpu") .lt. 128)
|
||||
$ then
|
||||
$ arch = "VAX"
|
||||
$ else
|
||||
$ arch = f$edit( f$getsyi( "arch_name"), "upcase")
|
||||
$ if (arch .eqs. "") then arch = "UNK"
|
||||
$ endif
|
||||
$!
|
||||
$ archd = arch
|
||||
$!
|
||||
$ if (p2 .nes. "")
|
||||
$ then
|
||||
$ if (p2 .eqs. "64")
|
||||
$ then
|
||||
$ archd = arch+ "_64"
|
||||
$ else
|
||||
$ if (p2 .nes. "32")
|
||||
$ then
|
||||
$ write sys$output "Second argument invalid."
|
||||
$ write sys$output "It should be "32", "64", or nothing."
|
||||
$ exit
|
||||
$ endif
|
||||
$ endif
|
||||
$ endif
|
||||
$!
|
||||
$ root = f$parse( p1, "[]A.;0", , , "syntax_only, no_conceal") - "A.;0"
|
||||
$ root_dev = f$parse(root,,,"device","syntax_only")
|
||||
$ root_dir = f$parse(root,,,"directory","syntax_only") - -
|
||||
"[000000." - "][" - "[" - "]"
|
||||
$ root = root_dev + "[" + root_dir
|
||||
$!
|
||||
$ define /nolog wrk_sslroot 'root'.] /trans=conc
|
||||
$ define /nolog wrk_sslxexe wrk_sslroot:['archd'_exe]
|
||||
$!
|
||||
$ if f$parse("wrk_sslroot:[000000]") .eqs. "" then -
|
||||
create /directory /log wrk_sslroot:[000000]
|
||||
$ if f$parse("wrk_sslxexe:") .eqs. "" then -
|
||||
create /directory /log wrk_sslxexe:
|
||||
$!
|
||||
$ exe := openssl
|
||||
$!
|
||||
$ exe_dir := [-.'archd'.exe.apps]
|
||||
$!
|
||||
$! Executables.
|
||||
$!
|
||||
$ i = 0
|
||||
$ loop_exe:
|
||||
$ e = f$edit(f$element( i, ",", exe), "trim")
|
||||
$ i = i + 1
|
||||
$ if e .eqs. "," then goto loop_exe_end
|
||||
$ set noon
|
||||
$ file = exe_dir+ e+ ".exe"
|
||||
$ if f$search( file) .nes. ""
|
||||
$ then
|
||||
$ copy /protection = w:re 'file' wrk_sslxexe: /log
|
||||
$ endif
|
||||
$ set on
|
||||
$ goto loop_exe
|
||||
$ loop_exe_end:
|
||||
$!
|
||||
$! Miscellaneous.
|
||||
$!
|
||||
$ set noon
|
||||
$ copy /protection = w:re ca.com wrk_sslxexe:ca.com /log
|
||||
$ copy /protection = w:re openssl-vms.cnf wrk_sslroot:[000000]openssl.cnf /log
|
||||
$ set on
|
||||
$!
|
||||
$ tidy:
|
||||
$!
|
||||
$ call deass wrk_sslroot
|
||||
$ call deass wrk_sslxexe
|
||||
$!
|
||||
$ exit
|
||||
$!
|
||||
$ deass: subroutine
|
||||
$ if (f$trnlnm( p1, "LNM$PROCESS") .nes. "")
|
||||
$ then
|
||||
$ deassign /process 'p1'
|
||||
$ endif
|
||||
$ endsubroutine
|
||||
$!
|
@@ -1,65 +0,0 @@
|
||||
$! INSTALL.COM -- Installs the files in a given directory tree
|
||||
$!
|
||||
$! Author: Richard Levitte <richard@levitte.org>
|
||||
$! Time of creation: 22-MAY-1998 10:13
|
||||
$!
|
||||
$! P1 root of the directory tree
|
||||
$!
|
||||
$
|
||||
$ IF P1 .EQS. ""
|
||||
$ THEN
|
||||
$ WRITE SYS$OUTPUT "First argument missing."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
"Should be the directory where you want things installed."
|
||||
$ EXIT
|
||||
$ ENDIF
|
||||
$
|
||||
$ IF (F$GETSYI("CPU").LT.128)
|
||||
$ THEN
|
||||
$ ARCH := VAX
|
||||
$ ELSE
|
||||
$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
|
||||
$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
|
||||
$ ENDIF
|
||||
$
|
||||
$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
|
||||
$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
|
||||
$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
|
||||
- "[000000." - "][" - "[" - "]"
|
||||
$ ROOT = ROOT_DEV + "[" + ROOT_DIR
|
||||
$
|
||||
$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
|
||||
$ DEFINE/NOLOG WRK_SSLEXE WRK_SSLROOT:['ARCH'_EXE]
|
||||
$
|
||||
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
|
||||
CREATE/DIR/LOG WRK_SSLROOT:[000000]
|
||||
$ IF F$PARSE("WRK_SSLEXE:") .EQS. "" THEN -
|
||||
CREATE/DIR/LOG WRK_SSLEXE:
|
||||
$
|
||||
$ EXE := openssl
|
||||
$
|
||||
$ EXE_DIR := [-.'ARCH'.EXE.APPS]
|
||||
$
|
||||
$ I = 0
|
||||
$ LOOP_EXE:
|
||||
$ E = F$EDIT(F$ELEMENT(I, ",", EXE),"TRIM")
|
||||
$ I = I + 1
|
||||
$ IF E .EQS. "," THEN GOTO LOOP_EXE_END
|
||||
$ SET NOON
|
||||
$ IF F$SEARCH(EXE_DIR+E+".EXE") .NES. ""
|
||||
$ THEN
|
||||
$ COPY 'EXE_DIR''E'.EXE WRK_SSLEXE:'E'.EXE/log
|
||||
$ SET FILE/PROT=W:RE WRK_SSLEXE:'E'.EXE
|
||||
$ ENDIF
|
||||
$ SET ON
|
||||
$ GOTO LOOP_EXE
|
||||
$ LOOP_EXE_END:
|
||||
$
|
||||
$ SET NOON
|
||||
$ COPY CA.COM WRK_SSLEXE:CA.COM/LOG
|
||||
$ SET FILE/PROT=W:RE WRK_SSLEXE:CA.COM
|
||||
$ COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
|
||||
$ SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
|
||||
$ SET ON
|
||||
$
|
||||
$ EXIT
|
@@ -25,7 +25,7 @@ $! VAXC For VAX C.
|
||||
$! DECC For DEC C.
|
||||
$! GNUC For GNU C.
|
||||
$!
|
||||
$! If you don't speficy a compiler, it will try to determine which
|
||||
$! If you don't specify a compiler, it will try to determine which
|
||||
$! "C" compiler to use.
|
||||
$!
|
||||
$! P3, if defined, sets a TCP/IP library to use, through one of the following
|
||||
@@ -39,11 +39,35 @@ $! P4, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
|
||||
$!
|
||||
$! P5, if defined, sets a choice of programs to compile.
|
||||
$!
|
||||
$! P6, if defined, specifies the C pointer size. Ignored on VAX.
|
||||
$! ("64=ARGV" gives more efficient code with HP C V7.3 or newer.)
|
||||
$! Supported values are:
|
||||
$!
|
||||
$! "" Compile with default (/NOPOINTER_SIZE)
|
||||
$! 32 Compile with /POINTER_SIZE=32 (SHORT)
|
||||
$! 64 Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV])
|
||||
$! (Automatically select ARGV if compiler supports it.)
|
||||
$! 64= Compile with /POINTER_SIZE=64 (LONG).
|
||||
$! 64=ARGV Compile with /POINTER_SIZE=64=ARGV (LONG=ARGV).
|
||||
$!
|
||||
$! P7, if defined, specifies a directory where ZLIB files (zlib.h,
|
||||
$! libz.olb) may be found. Optionally, a non-default object library
|
||||
$! name may be included ("dev:[dir]libz_64.olb", for example).
|
||||
$!
|
||||
$!
|
||||
$! Announce/identify.
|
||||
$!
|
||||
$ proc = f$environment( "procedure")
|
||||
$ write sys$output "@@@ "+ -
|
||||
f$parse( proc, , , "name")+ f$parse( proc, , , "type")
|
||||
$!
|
||||
$ on control_c then goto exit
|
||||
$!
|
||||
$! Define A TCP/IP Library That We Will Need To Link To.
|
||||
$! (That Is, If We Need To Link To One.)
|
||||
$!
|
||||
$ TCPIP_LIB = ""
|
||||
$ ZLIB_LIB = ""
|
||||
$!
|
||||
$! Check What Architecture We Are Using.
|
||||
$!
|
||||
@@ -52,7 +76,7 @@ $ THEN
|
||||
$!
|
||||
$! The Architecture Is VAX.
|
||||
$!
|
||||
$ ARCH := VAX
|
||||
$ ARCH = "VAX"
|
||||
$!
|
||||
$! Else...
|
||||
$!
|
||||
@@ -67,37 +91,53 @@ $! End The Architecture Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$ ARCHD = ARCH
|
||||
$ LIB32 = "32"
|
||||
$ OPT_FILE = ""
|
||||
$ POINTER_SIZE = ""
|
||||
$!
|
||||
$! Define what programs should be compiled
|
||||
$!
|
||||
$ PROGRAMS := OPENSSL
|
||||
$!
|
||||
$! Define The CRYPTO Library.
|
||||
$!
|
||||
$ CRYPTO_LIB := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.OLB
|
||||
$!
|
||||
$! Define The SSL Library.
|
||||
$!
|
||||
$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB
|
||||
$!
|
||||
$! Define The OBJ Directory.
|
||||
$!
|
||||
$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.APPS]
|
||||
$!
|
||||
$! Define The EXE Directory.
|
||||
$!
|
||||
$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.APPS]
|
||||
$!
|
||||
$! Check To Make Sure We Have Valid Command Line Parameters.
|
||||
$!
|
||||
$ GOSUB CHECK_OPTIONS
|
||||
$!
|
||||
$! Define The CRYPTO Library.
|
||||
$!
|
||||
$ CRYPTO_LIB := SYS$DISK:[-.'ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO'LIB32'.OLB
|
||||
$!
|
||||
$! Define The SSL Library.
|
||||
$!
|
||||
$ SSL_LIB := SYS$DISK:[-.'ARCHD'.EXE.SSL]SSL_LIBSSL'LIB32'.OLB
|
||||
$!
|
||||
$! Define The OBJ and EXE Directories.
|
||||
$!
|
||||
$ OBJ_DIR := SYS$DISK:[-.'ARCHD'.OBJ.APPS]
|
||||
$ EXE_DIR := SYS$DISK:[-.'ARCHD'.EXE.APPS]
|
||||
$!
|
||||
$! Specify the destination directory in any /MAP option.
|
||||
$!
|
||||
$ if (LINKMAP .eqs. "MAP")
|
||||
$ then
|
||||
$ LINKMAP = LINKMAP+ "=''EXE_DIR'"
|
||||
$ endif
|
||||
$!
|
||||
$! Add the location prefix to the linker options file name.
|
||||
$!
|
||||
$ if (OPT_FILE .nes. "")
|
||||
$ then
|
||||
$ OPT_FILE = EXE_DIR+ OPT_FILE
|
||||
$ endif
|
||||
$!
|
||||
$! Initialise logical names and such
|
||||
$!
|
||||
$ GOSUB INITIALISE
|
||||
$!
|
||||
$! Tell The User What Kind of Machine We Run On.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
|
||||
$ WRITE SYS$OUTPUT "Host system architecture: ''ARCHD'"
|
||||
$!
|
||||
$! Check To See If The OBJ Directory Exists.
|
||||
$!
|
||||
@@ -145,6 +185,9 @@ $ LIB_OPENSSL = "VERIFY,ASN1PARS,REQ,DGST,DH,DHPARAM,ENC,PASSWD,GENDH,ERRSTR,"+-
|
||||
"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"
|
||||
$!
|
||||
$ LIB_OPENSSL = LIB_OPENSSL+ ",VMS_DECC_INIT"
|
||||
$!
|
||||
$ TCPIP_PROGRAMS = ",,"
|
||||
$ IF COMPILER .EQS. "VAXC" THEN -
|
||||
TCPIP_PROGRAMS = ",OPENSSL,"
|
||||
@@ -202,7 +245,7 @@ $ LIB_COUNTER = -1
|
||||
$!
|
||||
$! Create a .OPT file for the object files
|
||||
$!
|
||||
$ OPEN/WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
|
||||
$ OPEN /WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
|
||||
$!
|
||||
$! Top Of The File Loop.
|
||||
$!
|
||||
@@ -289,34 +332,18 @@ $ 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' -
|
||||
'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
|
||||
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
|
||||
'TCPIP_LIB','OPT_FILE'/OPTION
|
||||
$!
|
||||
$! Else...
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
|
||||
$!
|
||||
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
|
||||
'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
|
||||
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
|
||||
'OPT_FILE'/OPTION
|
||||
$!
|
||||
$! End The TCP/IP Library Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$ LINK /'DEBUGGER' /'LINKMAP' /'TRACEBACK' /EXE='EXE_FILE' -
|
||||
'EXE_DIR''CURRENT_APP'.OPT /OPTIONS, -
|
||||
'SSL_LIB' /LIBRARY, -
|
||||
'CRYPTO_LIB' /LIBRARY -
|
||||
'TCPIP_LIB' -
|
||||
'ZLIB_LIB' -
|
||||
,'OPT_FILE' /OPTIONS
|
||||
$!
|
||||
$! Go Back And Do It Again.
|
||||
$!
|
||||
@@ -351,7 +378,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File To Link Agianst
|
||||
! Default System Options File To Link Against
|
||||
! The Sharable VAX C Runtime Library.
|
||||
!
|
||||
SYS$SHARE:VAXCRTL.EXE/SHARE
|
||||
@@ -380,7 +407,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File To Link Agianst
|
||||
! Default System Options File To Link Against
|
||||
! The Sharable C Runtime Library.
|
||||
!
|
||||
GNU_CC:[000000]GCCLIB/LIBRARY
|
||||
@@ -415,7 +442,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File To Link Agianst
|
||||
! Default System Options File To Link Against
|
||||
! The Sharable DEC C Runtime Library.
|
||||
!
|
||||
SYS$SHARE:DECC$SHR.EXE/SHARE
|
||||
@@ -430,7 +457,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File For non-VAX To Link Agianst
|
||||
! Default System Options File For non-VAX To Link Against
|
||||
! The Sharable C Runtime Library.
|
||||
!
|
||||
SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
|
||||
@@ -514,14 +541,15 @@ $!
|
||||
$ IF (P1.EQS."NODEBUG")
|
||||
$ THEN
|
||||
$!
|
||||
$! P1 Is NODEBUG, So Compile Without Debugger Information.
|
||||
$! P1 Is NODEBUG, So Compile Without Debugger Information.
|
||||
$!
|
||||
$ DEBUGGER = "NODEBUG"
|
||||
$ TRACEBACK = "NOTRACEBACK"
|
||||
$ GCC_OPTIMIZE = "OPTIMIZE"
|
||||
$ CC_OPTIMIZE = "OPTIMIZE"
|
||||
$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
|
||||
$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
|
||||
$ DEBUGGER = "NODEBUG"
|
||||
$ LINKMAP = "NOMAP"
|
||||
$ TRACEBACK = "NOTRACEBACK"
|
||||
$ GCC_OPTIMIZE = "OPTIMIZE"
|
||||
$ CC_OPTIMIZE = "OPTIMIZE"
|
||||
$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
|
||||
$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
|
||||
$!
|
||||
$! Else...
|
||||
$!
|
||||
@@ -535,6 +563,7 @@ $!
|
||||
$! Compile With Debugger Information.
|
||||
$!
|
||||
$ DEBUGGER = "DEBUG"
|
||||
$ LINKMAP = "MAP"
|
||||
$ TRACEBACK = "TRACEBACK"
|
||||
$ GCC_OPTIMIZE = "NOOPTIMIZE"
|
||||
$ CC_OPTIMIZE = "NOOPTIMIZE"
|
||||
@@ -542,7 +571,7 @@ $ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
|
||||
$ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
|
||||
$ ELSE
|
||||
$!
|
||||
$! Tell The User Entered An Invalid Option..
|
||||
$! Tell The User Entered An Invalid Option.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
|
||||
@@ -555,7 +584,7 @@ $! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$! End The Valid Arguement Check.
|
||||
$! End The Valid Argument Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
@@ -563,6 +592,87 @@ $! End The P1 Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Check P6 (POINTER_SIZE).
|
||||
$!
|
||||
$ IF (P6 .NES. "") .AND. (ARCH .NES. "VAX")
|
||||
$ THEN
|
||||
$!
|
||||
$ IF (P6 .EQS. "32")
|
||||
$ THEN
|
||||
$ POINTER_SIZE = " /POINTER_SIZE=32"
|
||||
$ ELSE
|
||||
$ POINTER_SIZE = F$EDIT( P6, "COLLAPSE, UPCASE")
|
||||
$ IF ((POINTER_SIZE .EQS. "64") .OR. -
|
||||
(POINTER_SIZE .EQS. "64=") .OR. -
|
||||
(POINTER_SIZE .EQS. "64=ARGV"))
|
||||
$ THEN
|
||||
$ ARCHD = ARCH+ "_64"
|
||||
$ LIB32 = ""
|
||||
$ IF (F$EXTRACT( 2, 1, POINTER_SIZE) .EQS. "=")
|
||||
$ THEN
|
||||
$! Explicit user choice: "64" or "64=ARGV".
|
||||
$ IF (POINTER_SIZE .EQS. "64=") THEN POINTER_SIZE = "64"
|
||||
$ ELSE
|
||||
$ SET NOON
|
||||
$ DEFINE /USER_MODE SYS$OUTPUT NL:
|
||||
$ DEFINE /USER_MODE SYS$ERROR NL:
|
||||
$ CC /NOLIST /NOOBJECT /POINTER_SIZE=64=ARGV NL:
|
||||
$ IF ($STATUS .AND. %X0FFF0000) .EQ. %X00030000
|
||||
$ THEN
|
||||
$ ! If we got here, it means DCL complained like this:
|
||||
$ ! %DCL-W-NOVALU, value not allowed - remove value specification
|
||||
$ ! \64=\
|
||||
$ !
|
||||
$ ! If the compiler was run, logicals defined in /USER would
|
||||
$ ! have been deassigned automatically. However, when DCL
|
||||
$ ! complains, they aren't, so we do it here (it might be
|
||||
$ ! unnecessary, but just in case there will be another error
|
||||
$ ! message further on that we don't want to miss)
|
||||
$ DEASSIGN /USER_MODE SYS$ERROR
|
||||
$ DEASSIGN /USER_MODE SYS$OUTPUT
|
||||
$ ELSE
|
||||
$ POINTER_SIZE = POINTER_SIZE + "=ARGV"
|
||||
$ ENDIF
|
||||
$ SET ON
|
||||
$ ENDIF
|
||||
$ POINTER_SIZE = " /POINTER_SIZE=''POINTER_SIZE'"
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
$! Tell The User Entered An Invalid Option.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ", P6, -
|
||||
" Is Invalid. The Valid Options Are:"
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" """" : Compile with default (short) pointers."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 32 : Compile with 32-bit (short) pointers."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 64 : Compile with 64-bit (long) pointers (auto ARGV)."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 64= : Compile with 64-bit (long) pointers (no ARGV)."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 64=ARGV : Compile with 64-bit (long) pointers (ARGV)."
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$!
|
||||
$! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! End The P6 (POINTER_SIZE) Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Set basic C compiler /INCLUDE directories.
|
||||
$!
|
||||
$ CC_INCLUDES = "SYS$DISK:[-],SYS$DISK:[-.CRYPTO]"
|
||||
$!
|
||||
$! Check To See If P2 Is Blank.
|
||||
$!
|
||||
$ IF (P2.EQS."")
|
||||
@@ -663,11 +773,64 @@ $ CCDEFS = "MONOLITH"
|
||||
$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
|
||||
$ CCEXTRAFLAGS = ""
|
||||
$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
|
||||
$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
|
||||
$ CCDISABLEWARNINGS = "" !!! "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
|
||||
$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
|
||||
CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
|
||||
$!
|
||||
$! Check To See If The User Entered A Valid Paramter.
|
||||
$! Check To See If We Have A ZLIB Option.
|
||||
$!
|
||||
$ ZLIB = P7
|
||||
$ IF (ZLIB .NES. "")
|
||||
$ THEN
|
||||
$!
|
||||
$! Check for expected ZLIB files.
|
||||
$!
|
||||
$ err = 0
|
||||
$ file1 = f$parse( "zlib.h", ZLIB, , , "SYNTAX_ONLY")
|
||||
$ if (f$search( file1) .eqs. "")
|
||||
$ then
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
|
||||
$ WRITE SYS$OUTPUT " Can't find header: ''file1'"
|
||||
$ err = 1
|
||||
$ endif
|
||||
$ file1 = f$parse( "A.;", ZLIB)- "A.;"
|
||||
$!
|
||||
$ file2 = f$parse( ZLIB, "libz.olb", , , "SYNTAX_ONLY")
|
||||
$ if (f$search( file2) .eqs. "")
|
||||
$ then
|
||||
$ if (err .eq. 0)
|
||||
$ then
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
|
||||
$ endif
|
||||
$ WRITE SYS$OUTPUT " Can't find library: ''file2'"
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ err = err+ 2
|
||||
$ endif
|
||||
$ if (err .eq. 1)
|
||||
$ then
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ endif
|
||||
$!
|
||||
$ if (err .ne. 0)
|
||||
$ then
|
||||
$ EXIT
|
||||
$ endif
|
||||
$!
|
||||
$ CCDEFS = """ZLIB=1"", "+ CCDEFS
|
||||
$ CC_INCLUDES = CC_INCLUDES+ ", "+ file1
|
||||
$ ZLIB_LIB = ", ''file2' /library"
|
||||
$!
|
||||
$! Print info
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "ZLIB library spec: ", file2
|
||||
$!
|
||||
$! End The ZLIB Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Check To See If The User Entered A Valid Parameter.
|
||||
$!
|
||||
$ IF (P2.EQS."VAXC").OR.(P2.EQS."DECC").OR.(P2.EQS."GNUC")
|
||||
$ THEN
|
||||
@@ -690,13 +853,13 @@ $!
|
||||
$ CC = "CC"
|
||||
$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
|
||||
THEN CC = "CC/DECC"
|
||||
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
|
||||
"/NOLIST/PREFIX=ALL" + -
|
||||
"/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
|
||||
$ CC = CC + " /''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=RELAXED"+ -
|
||||
"''POINTER_SIZE' /NOLIST /PREFIX=ALL" + -
|
||||
" /INCLUDE=(''CC_INCLUDES') " + CCEXTRAFLAGS
|
||||
$!
|
||||
$! Define The Linker Options File Name.
|
||||
$!
|
||||
$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
|
||||
$ OPT_FILE = "VAX_DECC_OPTIONS.OPT"
|
||||
$!
|
||||
$! End DECC Check.
|
||||
$!
|
||||
@@ -724,7 +887,7 @@ $ EXIT
|
||||
$ ENDIF
|
||||
$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
|
||||
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
|
||||
"/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
|
||||
"/INCLUDE=(''CC_INCLUDES')" + CCEXTRAFLAGS
|
||||
$ CCDEFS = CCDEFS + ",""VAXC"""
|
||||
$!
|
||||
$! Define <sys> As SYS$COMMON:[SYSLIB]
|
||||
@@ -733,7 +896,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
|
||||
$!
|
||||
$! Define The Linker Options File Name.
|
||||
$!
|
||||
$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
|
||||
$ OPT_FILE = "VAX_VAXC_OPTIONS.OPT"
|
||||
$!
|
||||
$! End VAXC Check
|
||||
$!
|
||||
@@ -756,11 +919,11 @@ $! Use GNU C...
|
||||
$!
|
||||
$ IF F$TYPE(GCC) .EQS. "" THEN GCC := GCC
|
||||
$ CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
|
||||
"/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
|
||||
"/INCLUDE=(''CC_INCLUDES')" + CCEXTRAFLAGS
|
||||
$!
|
||||
$! Define The Linker Options File Name.
|
||||
$!
|
||||
$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
|
||||
$ OPT_FILE = "VAX_GNUC_OPTIONS.OPT"
|
||||
$!
|
||||
$! End The GNU C Check.
|
||||
$!
|
||||
@@ -770,7 +933,7 @@ $! Set up default defines
|
||||
$!
|
||||
$ CCDEFS = """FLAT_INC=1""," + CCDEFS
|
||||
$!
|
||||
$! Else The User Entered An Invalid Arguement.
|
||||
$! Else The User Entered An Invalid Argument.
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
@@ -802,7 +965,7 @@ $ THEN
|
||||
$!
|
||||
$! Set the library to use SOCKETSHR
|
||||
$!
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
|
||||
$!
|
||||
$! Done with SOCKETSHR
|
||||
$!
|
||||
@@ -828,13 +991,13 @@ $ THEN
|
||||
$!
|
||||
$! Set the library to use UCX.
|
||||
$!
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
|
||||
$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
|
||||
$ THEN
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT /OPTIONS"
|
||||
$ ELSE
|
||||
$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
|
||||
TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT"
|
||||
TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT /OPTIONS"
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Done with UCX
|
||||
@@ -848,7 +1011,7 @@ $ THEN
|
||||
$!
|
||||
$! Set the library to use TCPIP.
|
||||
$!
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
|
||||
$!
|
||||
$! Done with TCPIP
|
||||
$!
|
||||
@@ -873,9 +1036,9 @@ $ CCDEFS = CCDEFS + ",TCPIP_TYPE_''P3'"
|
||||
$!
|
||||
$! Print info
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
|
||||
$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB- ","
|
||||
$!
|
||||
$! Else The User Entered An Invalid Arguement.
|
||||
$! Else The User Entered An Invalid Argument.
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
@@ -903,13 +1066,13 @@ $ IF COMPILER .EQS. "DECC"
|
||||
$ THEN
|
||||
$ IF CCDISABLEWARNINGS .NES. ""
|
||||
$ THEN
|
||||
$ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
|
||||
$ CCDISABLEWARNINGS = " /WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
|
||||
$ ENDIF
|
||||
$ ELSE
|
||||
$ CCDISABLEWARNINGS = ""
|
||||
$ ENDIF
|
||||
$ CC2 = CC + "/DEFINE=(" + CCDEFS + ",_POSIX_C_SOURCE)" + CCDISABLEWARNINGS
|
||||
$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
|
||||
$ CC2 = CC + " /DEFINE=(" + CCDEFS + ",_POSIX_C_SOURCE)" + CCDISABLEWARNINGS
|
||||
$ CC = CC + " /DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
|
||||
$!
|
||||
$! Show user the result
|
||||
$!
|
||||
@@ -975,7 +1138,7 @@ $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
|
||||
$!
|
||||
$! Set up the logical name OPENSSL to point at the include directory
|
||||
$!
|
||||
$ DEFINE OPENSSL/NOLOG '__INCLUDE'
|
||||
$ DEFINE OPENSSL /NOLOG '__INCLUDE'
|
||||
$!
|
||||
$! Done
|
||||
$!
|
||||
@@ -983,15 +1146,24 @@ $ RETURN
|
||||
$!
|
||||
$ CLEANUP:
|
||||
$!
|
||||
$! Restore the logical name OPENSSL if it had a value
|
||||
$! Restore the saved logical name OPENSSL, if it had a value.
|
||||
$!
|
||||
$ IF __SAVE_OPENSSL .EQS. ""
|
||||
$ THEN
|
||||
$ DEASSIGN OPENSSL
|
||||
$ ELSE
|
||||
$ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL'
|
||||
$ ENDIF
|
||||
$ if (f$type( __SAVE_OPENSSL) .nes. "")
|
||||
$ then
|
||||
$ IF __SAVE_OPENSSL .EQS. ""
|
||||
$ THEN
|
||||
$ DEASSIGN OPENSSL
|
||||
$ ELSE
|
||||
$ DEFINE /NOLOG OPENSSL '__SAVE_OPENSSL'
|
||||
$ ENDIF
|
||||
$ endif
|
||||
$!
|
||||
$! Close any open files.
|
||||
$!
|
||||
$ if (f$trnlnm( "objects", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
|
||||
close objects
|
||||
$!
|
||||
$! Done
|
||||
$!
|
||||
$ RETURN
|
||||
$!
|
||||
|
@@ -212,8 +212,13 @@ static void lock_dbg_cb(int mode, int type, const char *file, int line)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
|
||||
# define ARGV _Argv
|
||||
#else
|
||||
# define ARGV Argv
|
||||
#endif
|
||||
|
||||
int main(int Argc, char *Argv[])
|
||||
int main(int Argc, char *ARGV[])
|
||||
{
|
||||
ARGS arg;
|
||||
#define PROG_NAME_SIZE 39
|
||||
@@ -227,7 +232,55 @@ int main(int Argc, char *Argv[])
|
||||
char **argv,*p;
|
||||
LHASH_OF(FUNCTION) *prog=NULL;
|
||||
long errline;
|
||||
|
||||
|
||||
#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
|
||||
/* 2011-03-22 SMS.
|
||||
* If we have 32-bit pointers everywhere, then we're safe, and
|
||||
* we bypass this mess, as on non-VMS systems. (See ARGV,
|
||||
* above.)
|
||||
* Problem 1: Compaq/HP C before V7.3 always used 32-bit
|
||||
* pointers for argv[].
|
||||
* Fix 1: For a 32-bit argv[], when we're using 64-bit pointers
|
||||
* everywhere else, we always allocate and use a 64-bit
|
||||
* duplicate of argv[].
|
||||
* Problem 2: Compaq/HP C V7.3 (Alpha, IA64) before ECO1 failed
|
||||
* to NULL-terminate a 64-bit argv[]. (As this was written, the
|
||||
* compiler ECO was available only on IA64.)
|
||||
* Fix 2: Unless advised not to (VMS_TRUST_ARGV), we test a
|
||||
* 64-bit argv[argc] for NULL, and, if necessary, use a
|
||||
* (properly) NULL-terminated (64-bit) duplicate of argv[].
|
||||
* The same code is used in either case to duplicate argv[].
|
||||
* Some of these decisions could be handled in preprocessing,
|
||||
* but the code tends to get even uglier, and the penalty for
|
||||
* deciding at compile- or run-time is tiny.
|
||||
*/
|
||||
char **Argv = NULL;
|
||||
int free_Argv = 0;
|
||||
|
||||
if ((sizeof( _Argv) < 8) /* 32-bit argv[]. */
|
||||
# if !defined( VMS_TRUST_ARGV)
|
||||
|| (_Argv[ Argc] != NULL) /* Untrusted argv[argc] not NULL. */
|
||||
# endif
|
||||
)
|
||||
{
|
||||
int i;
|
||||
Argv = OPENSSL_malloc( (Argc+ 1)* sizeof( char *));
|
||||
if (Argv == NULL)
|
||||
{ ret = -1; goto end; }
|
||||
for(i = 0; i < Argc; i++)
|
||||
Argv[i] = _Argv[i];
|
||||
Argv[ Argc] = NULL; /* Certain NULL termination. */
|
||||
free_Argv = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the known-good 32-bit argv[] (which needs the
|
||||
* type cast to satisfy the compiler), or the trusted or
|
||||
* tested-good 64-bit argv[] as-is. */
|
||||
Argv = (char **)_Argv;
|
||||
}
|
||||
#endif /* defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64) */
|
||||
|
||||
arg.data=NULL;
|
||||
arg.count=0;
|
||||
|
||||
@@ -373,6 +426,13 @@ end:
|
||||
BIO_free(bio_err);
|
||||
bio_err=NULL;
|
||||
}
|
||||
#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
|
||||
/* Free any duplicate Argv[] storage. */
|
||||
if (free_Argv)
|
||||
{
|
||||
OPENSSL_free(Argv);
|
||||
}
|
||||
#endif
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
|
@@ -647,7 +647,7 @@ int MAIN(int argc, char **argv)
|
||||
|
||||
if (!twopass) BUF_strlcpy(macpass, pass, sizeof macpass);
|
||||
|
||||
if (options & INFO) BIO_printf (bio_err, "MAC Iteration %ld\n", p12->mac->iter ? ASN1_INTEGER_get (p12->mac->iter) : 1);
|
||||
if ((options & INFO) && p12->mac) BIO_printf (bio_err, "MAC Iteration %ld\n", p12->mac->iter ? ASN1_INTEGER_get (p12->mac->iter) : 1);
|
||||
if(macver) {
|
||||
#ifdef CRYPTO_MDEBUG
|
||||
CRYPTO_push_info("verify MAC");
|
||||
|
@@ -82,9 +82,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
PKCS7 *p7=NULL;
|
||||
int i,badops=0;
|
||||
BIO *in=NULL,*out=NULL;
|
||||
@@ -182,7 +179,7 @@ bad:
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
in=BIO_new(BIO_s_file());
|
||||
|
@@ -403,6 +403,10 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf(bio_err, "DSA public key include in PrivateKey\n");
|
||||
break;
|
||||
|
||||
case PKCS8_NEG_PRIVKEY:
|
||||
BIO_printf(bio_err, "DSA private key value is negative\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
BIO_printf(bio_err, "Unknown broken type\n");
|
||||
break;
|
||||
|
@@ -74,7 +74,6 @@ int MAIN(int argc, char **argv)
|
||||
EVP_PKEY *pkey=NULL;
|
||||
int badarg = 0;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
char *engine=NULL;
|
||||
#endif
|
||||
int ret = 1;
|
||||
@@ -141,7 +140,7 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
if (infile)
|
||||
|
@@ -119,17 +119,17 @@ int MAIN(int argc, char **argv)
|
||||
if (!strcmp(*argv,"-in"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
infile= *(++argv);
|
||||
else infile= *(++argv);
|
||||
}
|
||||
else if (!strcmp(*argv,"-out"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
outfile= *(++argv);
|
||||
else outfile= *(++argv);
|
||||
}
|
||||
else if (!strcmp(*argv,"-sigfile"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
sigfile= *(++argv);
|
||||
else sigfile= *(++argv);
|
||||
}
|
||||
else if(!strcmp(*argv, "-inkey"))
|
||||
{
|
||||
@@ -159,17 +159,17 @@ int MAIN(int argc, char **argv)
|
||||
else if (!strcmp(*argv,"-passin"))
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
passargin= *(++argv);
|
||||
else passargin= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-peerform") == 0)
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
peerform=str2fmt(*(++argv));
|
||||
else peerform=str2fmt(*(++argv));
|
||||
}
|
||||
else if (strcmp(*argv,"-keyform") == 0)
|
||||
{
|
||||
if (--argc < 1) badarg = 1;
|
||||
keyform=str2fmt(*(++argv));
|
||||
else keyform=str2fmt(*(++argv));
|
||||
}
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if(!strcmp(*argv, "-engine"))
|
||||
|
@@ -77,9 +77,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
int i, r, ret = 1;
|
||||
int badopt;
|
||||
char *outfile = NULL;
|
||||
@@ -178,7 +175,7 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
e = setup_engine(bio_err, engine, 0);
|
||||
setup_engine(bio_err, engine, 0);
|
||||
#endif
|
||||
|
||||
app_RAND_load_file(NULL, bio_err, (inrand != NULL));
|
||||
|
@@ -1336,11 +1336,17 @@ start2: for (;;)
|
||||
|
||||
BIO_snprintf(buf,sizeof buf,"%s_min",type);
|
||||
if (!NCONF_get_number(req_conf,attr_sect,buf, &n_min))
|
||||
{
|
||||
ERR_clear_error();
|
||||
n_min = -1;
|
||||
}
|
||||
|
||||
BIO_snprintf(buf,sizeof buf,"%s_max",type);
|
||||
if (!NCONF_get_number(req_conf,attr_sect,buf, &n_max))
|
||||
{
|
||||
ERR_clear_error();
|
||||
n_max = -1;
|
||||
}
|
||||
|
||||
if (!add_attribute_object(req,
|
||||
v->value,def,value,nid,n_min,n_max, chtype))
|
||||
|
@@ -409,7 +409,7 @@ bad:
|
||||
}
|
||||
else i=PEM_write_bio_RSAPrivateKey(out,rsa,
|
||||
enc,NULL,0,NULL,passout);
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4)
|
||||
} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
|
||||
EVP_PKEY *pk;
|
||||
pk = EVP_PKEY_new();
|
||||
|
@@ -2254,11 +2254,10 @@ static int www_body(char *hostname, int s, unsigned char *context)
|
||||
{
|
||||
char *buf=NULL;
|
||||
int ret=1;
|
||||
int i,j,k,blank,dot;
|
||||
int i,j,k,dot;
|
||||
SSL *con;
|
||||
const SSL_CIPHER *c;
|
||||
BIO *io,*ssl_bio,*sbio;
|
||||
long total_bytes;
|
||||
|
||||
buf=OPENSSL_malloc(bufsize);
|
||||
if (buf == NULL) return(0);
|
||||
@@ -2329,7 +2328,6 @@ static int www_body(char *hostname, int s, unsigned char *context)
|
||||
SSL_set_msg_callback_arg(con, bio_s_out);
|
||||
}
|
||||
|
||||
blank=0;
|
||||
for (;;)
|
||||
{
|
||||
if (hack)
|
||||
@@ -2559,7 +2557,6 @@ static int www_body(char *hostname, int s, unsigned char *context)
|
||||
BIO_puts(io,"HTTP/1.0 200 ok\r\nContent-type: text/plain\r\n\r\n");
|
||||
}
|
||||
/* send the file */
|
||||
total_bytes=0;
|
||||
for (;;)
|
||||
{
|
||||
i=BIO_read(file,buf,bufsize);
|
||||
|
@@ -327,7 +327,7 @@ static int init_server_long(int *sock, int port, char *ip, int type)
|
||||
{
|
||||
int ret=0;
|
||||
struct sockaddr_in server;
|
||||
int s= -1,i;
|
||||
int s= -1;
|
||||
|
||||
if (!ssl_sock_init()) return(0);
|
||||
|
||||
@@ -366,7 +366,6 @@ static int init_server_long(int *sock, int port, char *ip, int type)
|
||||
}
|
||||
/* Make it 128 for linux */
|
||||
if (type==SOCK_STREAM && listen(s,128) == -1) goto err;
|
||||
i=0;
|
||||
*sock=s;
|
||||
ret=1;
|
||||
err:
|
||||
@@ -384,7 +383,7 @@ static int init_server(int *sock, int port, int type)
|
||||
|
||||
static int do_accept(int acc_sock, int *sock, char **host)
|
||||
{
|
||||
int ret,i;
|
||||
int ret;
|
||||
struct hostent *h1,*h2;
|
||||
static struct sockaddr_in from;
|
||||
int len;
|
||||
@@ -407,6 +406,7 @@ redoit:
|
||||
if (ret == INVALID_SOCKET)
|
||||
{
|
||||
#if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK))
|
||||
int i;
|
||||
i=WSAGetLastError();
|
||||
BIO_printf(bio_err,"accept error %d\n",i);
|
||||
#else
|
||||
@@ -461,7 +461,6 @@ redoit:
|
||||
BIO_printf(bio_err,"gethostbyname failure\n");
|
||||
return(0);
|
||||
}
|
||||
i=0;
|
||||
if (h2->h_addrtype != AF_INET)
|
||||
{
|
||||
BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n");
|
||||
|
34
apps/speed.c
34
apps/speed.c
@@ -184,12 +184,18 @@
|
||||
#include <openssl/ecdh.h>
|
||||
#endif
|
||||
|
||||
#if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE)
|
||||
# define NO_FORK 1
|
||||
#elif HAVE_FORK
|
||||
# undef NO_FORK
|
||||
#ifndef HAVE_FORK
|
||||
# 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 0
|
||||
# else
|
||||
# define HAVE_FORK 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if HAVE_FORK
|
||||
#undef NO_FORK
|
||||
#else
|
||||
# define NO_FORK 1
|
||||
#define NO_FORK
|
||||
#endif
|
||||
|
||||
#undef BUFSIZE
|
||||
@@ -226,8 +232,12 @@ static const char *names[ALGOR_NUM]={
|
||||
"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};
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
static double rsa_results[RSA_NUM][2];
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
static double dsa_results[DSA_NUM][2];
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
static double ecdsa_results[EC_NUM][2];
|
||||
#endif
|
||||
@@ -324,9 +334,6 @@ int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e = NULL;
|
||||
#endif
|
||||
unsigned char *buf=NULL,*buf2=NULL;
|
||||
int mret=1;
|
||||
long count=0,save_count=0;
|
||||
@@ -420,7 +427,6 @@ int MAIN(int argc, char **argv)
|
||||
unsigned char DES_iv[8];
|
||||
unsigned char iv[2*MAX_BLOCK_SIZE/8];
|
||||
#ifndef OPENSSL_NO_DES
|
||||
DES_cblock *buf_as_des_cblock = NULL;
|
||||
static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
|
||||
static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
|
||||
static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
|
||||
@@ -634,9 +640,6 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf(bio_err,"out of memory\n");
|
||||
goto end;
|
||||
}
|
||||
#ifndef OPENSSL_NO_DES
|
||||
buf_as_des_cblock = (DES_cblock *)buf;
|
||||
#endif
|
||||
if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"out of memory\n");
|
||||
@@ -711,7 +714,7 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf(bio_err,"no engine given\n");
|
||||
goto end;
|
||||
}
|
||||
e = setup_engine(bio_err, *argv, 0);
|
||||
setup_engine(bio_err, *argv, 0);
|
||||
/* j will be increased again further down. We just
|
||||
don't want speed to confuse an engine with an
|
||||
algorithm, especially when none is given (which
|
||||
@@ -1227,7 +1230,8 @@ int MAIN(int argc, char **argv)
|
||||
count*=2;
|
||||
Time_F(START);
|
||||
for (it=count; it; it--)
|
||||
DES_ecb_encrypt(buf_as_des_cblock,buf_as_des_cblock,
|
||||
DES_ecb_encrypt((DES_cblock *)buf,
|
||||
(DES_cblock *)buf,
|
||||
&sch,DES_ENCRYPT);
|
||||
d=Time_F(STOP);
|
||||
} while (d <3);
|
||||
@@ -2699,6 +2703,7 @@ static int do_multi(int multi)
|
||||
else
|
||||
rsa_results[k][1]=d;
|
||||
}
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
else if(!strncmp(buf,"+F3:",4))
|
||||
{
|
||||
int k;
|
||||
@@ -2720,6 +2725,7 @@ static int do_multi(int multi)
|
||||
else
|
||||
dsa_results[k][1]=d;
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
else if(!strncmp(buf,"+F4:",4))
|
||||
{
|
||||
|
188
apps/vms_decc_init.c
Executable file
188
apps/vms_decc_init.c
Executable file
@@ -0,0 +1,188 @@
|
||||
#if defined( __VMS) && !defined( OPENSSL_NO_DECC_INIT) && \
|
||||
defined( __DECC) && !defined( __VAX) && (__CRTL_VER >= 70301000)
|
||||
# define USE_DECC_INIT 1
|
||||
#endif
|
||||
|
||||
#ifdef USE_DECC_INIT
|
||||
|
||||
/*
|
||||
* 2010-04-26 SMS.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* decc_init()
|
||||
*
|
||||
* On non-VAX systems, uses LIB$INITIALIZE to set a collection of C
|
||||
* RTL features without using the DECC$* logical name method.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unixlib.h>
|
||||
|
||||
|
||||
/* Global storage. */
|
||||
|
||||
/* Flag to sense if decc_init() was called. */
|
||||
|
||||
int decc_init_done = -1;
|
||||
|
||||
|
||||
/* Structure to hold a DECC$* feature name and its desired value. */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
int value;
|
||||
} decc_feat_t;
|
||||
|
||||
|
||||
/* Array of DECC$* feature names and their desired values.
|
||||
* Note: DECC$ARGV_PARSE_STYLE is the urgent one.
|
||||
*/
|
||||
|
||||
decc_feat_t decc_feat_array[] =
|
||||
{
|
||||
/* Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED */
|
||||
{ "DECC$ARGV_PARSE_STYLE", 1 },
|
||||
|
||||
/* Preserve case for file names on ODS5 disks. */
|
||||
{ "DECC$EFS_CASE_PRESERVE", 1 },
|
||||
|
||||
/* Enable multiple dots (and most characters) in ODS5 file names,
|
||||
* while preserving VMS-ness of ";version".
|
||||
*/
|
||||
{ "DECC$EFS_CHARSET", 1 },
|
||||
|
||||
/* List terminator. */
|
||||
{ (char *)NULL, 0 }
|
||||
};
|
||||
|
||||
|
||||
/* LIB$INITIALIZE initialization function. */
|
||||
|
||||
static void decc_init( void)
|
||||
{
|
||||
char *openssl_debug_decc_init;
|
||||
int verbose = 0;
|
||||
int feat_index;
|
||||
int feat_value;
|
||||
int feat_value_max;
|
||||
int feat_value_min;
|
||||
int i;
|
||||
int sts;
|
||||
|
||||
/* Get debug option. */
|
||||
openssl_debug_decc_init = getenv( "OPENSSL_DEBUG_DECC_INIT");
|
||||
if (openssl_debug_decc_init != NULL)
|
||||
{
|
||||
verbose = strtol( openssl_debug_decc_init, NULL, 10);
|
||||
if (verbose <= 0)
|
||||
{
|
||||
verbose = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the global flag to indicate that LIB$INITIALIZE worked. */
|
||||
decc_init_done = 1;
|
||||
|
||||
/* Loop through all items in the decc_feat_array[]. */
|
||||
|
||||
for (i = 0; decc_feat_array[ i].name != NULL; i++)
|
||||
{
|
||||
/* Get the feature index. */
|
||||
feat_index = decc$feature_get_index( decc_feat_array[ i].name);
|
||||
if (feat_index >= 0)
|
||||
{
|
||||
/* Valid item. Collect its properties. */
|
||||
feat_value = decc$feature_get_value( feat_index, 1);
|
||||
feat_value_min = decc$feature_get_value( feat_index, 2);
|
||||
feat_value_max = decc$feature_get_value( feat_index, 3);
|
||||
|
||||
/* Check the validity of our desired value. */
|
||||
if ((decc_feat_array[ i].value >= feat_value_min) &&
|
||||
(decc_feat_array[ i].value <= feat_value_max))
|
||||
{
|
||||
/* Valid value. Set it if necessary. */
|
||||
if (feat_value != decc_feat_array[ i].value)
|
||||
{
|
||||
sts = decc$feature_set_value( feat_index,
|
||||
1,
|
||||
decc_feat_array[ i].value);
|
||||
|
||||
if (verbose > 1)
|
||||
{
|
||||
fprintf( stderr, " %s = %d, sts = %d.\n",
|
||||
decc_feat_array[ i].name,
|
||||
decc_feat_array[ i].value,
|
||||
sts);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Invalid DECC feature value. */
|
||||
fprintf( stderr,
|
||||
" INVALID DECC$FEATURE VALUE, %d: %d <= %s <= %d.\n",
|
||||
feat_value,
|
||||
feat_value_min, decc_feat_array[ i].name, feat_value_max);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Invalid DECC feature name. */
|
||||
fprintf( stderr,
|
||||
" UNKNOWN DECC$FEATURE: %s.\n", decc_feat_array[ i].name);
|
||||
}
|
||||
}
|
||||
|
||||
if (verbose > 0)
|
||||
{
|
||||
fprintf( stderr, " DECC_INIT complete.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* Get "decc_init()" into a valid, loaded LIB$INITIALIZE PSECT. */
|
||||
|
||||
#pragma nostandard
|
||||
|
||||
/* Establish the LIB$INITIALIZE PSECTs, with proper alignment and
|
||||
* other attributes. Note that "nopic" is significant only on VAX.
|
||||
*/
|
||||
#pragma extern_model save
|
||||
|
||||
#if __INITIAL_POINTER_SIZE == 64
|
||||
# define PSECT_ALIGN 3
|
||||
#else
|
||||
# define PSECT_ALIGN 2
|
||||
#endif
|
||||
|
||||
#pragma extern_model strict_refdef "LIB$INITIALIZ" PSECT_ALIGN, nopic, nowrt
|
||||
const int spare[ 8] = { 0 };
|
||||
|
||||
#pragma extern_model strict_refdef "LIB$INITIALIZE" PSECT_ALIGN, nopic, nowrt
|
||||
void (*const x_decc_init)() = decc_init;
|
||||
|
||||
#pragma extern_model restore
|
||||
|
||||
/* Fake reference to ensure loading the LIB$INITIALIZE PSECT. */
|
||||
|
||||
#pragma extern_model save
|
||||
|
||||
int LIB$INITIALIZE( void);
|
||||
|
||||
#pragma extern_model strict_refdef
|
||||
int dmy_lib$initialize = (int) LIB$INITIALIZE;
|
||||
|
||||
#pragma extern_model restore
|
||||
|
||||
#pragma standard
|
||||
|
||||
#else /* def USE_DECC_INIT */
|
||||
|
||||
/* Dummy code to avoid a %CC-W-EMPTYFILE complaint. */
|
||||
int decc_init_dummy( void);
|
||||
|
||||
#endif /* def USE_DECC_INIT */
|
@@ -556,7 +556,6 @@ bad:
|
||||
if (reqfile)
|
||||
{
|
||||
EVP_PKEY *pkey;
|
||||
X509_CINF *ci;
|
||||
BIO *in;
|
||||
|
||||
if (!sign_flag && !CA_flag)
|
||||
@@ -624,7 +623,6 @@ bad:
|
||||
print_name(bio_err, "subject=", X509_REQ_get_subject_name(req), nmflag);
|
||||
|
||||
if ((x=X509_new()) == NULL) goto end;
|
||||
ci=x->cert_info;
|
||||
|
||||
if (sno == NULL)
|
||||
{
|
||||
|
8
config
8
config
@@ -775,6 +775,10 @@ case "$GUESSOS" in
|
||||
OBJECT_MODE=${OBJECT_MODE:-32}
|
||||
if [ "$CC" = "gcc" ]; then
|
||||
OUT="aix-gcc"
|
||||
if [ $OBJECT_MODE -eq 64 ]; then
|
||||
echo 'Your $OBJECT_MODE was found to be set to 64'
|
||||
OUT="aix64-gcc"
|
||||
fi
|
||||
elif [ $OBJECT_MODE -eq 64 ]; then
|
||||
echo 'Your $OBJECT_MODE was found to be set to 64'
|
||||
OUT="aix64-cc"
|
||||
@@ -821,6 +825,10 @@ esac
|
||||
# options="$options -DATALLA"
|
||||
#fi
|
||||
|
||||
($CC -Wa,--help -c -o /dev/null -x assembler /dev/null 2>&1 | \
|
||||
grep \\--noexecstack) 2>&1 > /dev/null && \
|
||||
options="$options -Wa,--noexecstack"
|
||||
|
||||
# gcc < 2.8 does not support -march=ultrasparc
|
||||
if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
|
||||
then
|
||||
|
@@ -40,22 +40,18 @@
|
||||
#ifndef LPDIR_H
|
||||
#include "LPdir.h"
|
||||
#endif
|
||||
#include "vms_rms.h"
|
||||
|
||||
/* Because some compiler options hide this macor */
|
||||
/* Some compiler options hide EVMSERR. */
|
||||
#ifndef EVMSERR
|
||||
#define EVMSERR 65535 /* error for non-translatable VMS errors */
|
||||
# define EVMSERR 65535 /* error for non-translatable VMS errors */
|
||||
#endif
|
||||
|
||||
struct LP_dir_context_st
|
||||
{
|
||||
unsigned long VMS_context;
|
||||
#ifdef NAML$C_MAXRSS
|
||||
char filespec[NAML$C_MAXRSS+1];
|
||||
char result[NAML$C_MAXRSS+1];
|
||||
#else
|
||||
char filespec[256];
|
||||
char result[256];
|
||||
#endif
|
||||
char filespec[ NAMX_MAXRSS+ 1];
|
||||
char result[ NAMX_MAXRSS+ 1];
|
||||
struct dsc$descriptor_d filespec_dsc;
|
||||
struct dsc$descriptor_d result_dsc;
|
||||
};
|
||||
@@ -66,6 +62,16 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
|
||||
char *p, *r;
|
||||
size_t l;
|
||||
unsigned long flags = 0;
|
||||
|
||||
/* Arrange 32-bit pointer to (copied) string storage, if needed. */
|
||||
#if __INITIAL_POINTER_SIZE == 64
|
||||
# pragma pointer_size save
|
||||
# pragma pointer_size 32
|
||||
char *ctx_filespec_32p;
|
||||
# pragma pointer_size restore
|
||||
char ctx_filespec_32[ NAMX_MAXRSS+ 1];
|
||||
#endif /* __INITIAL_POINTER_SIZE == 64 */
|
||||
|
||||
#ifdef NAML$C_MAXRSS
|
||||
flags |= LIB$M_FIL_LONG_NAMES;
|
||||
#endif
|
||||
@@ -93,13 +99,7 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
|
||||
|
||||
filespeclen += 4; /* "*.*;" */
|
||||
|
||||
if (filespeclen >
|
||||
#ifdef NAML$C_MAXRSS
|
||||
NAML$C_MAXRSS
|
||||
#else
|
||||
255
|
||||
#endif
|
||||
)
|
||||
if (filespeclen > NAMX_MAXRSS)
|
||||
{
|
||||
errno = ENAMETOOLONG;
|
||||
return 0;
|
||||
@@ -115,14 +115,21 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
|
||||
|
||||
strcpy((*ctx)->filespec,directory);
|
||||
strcat((*ctx)->filespec,"*.*;");
|
||||
|
||||
/* Arrange 32-bit pointer to (copied) string storage, if needed. */
|
||||
#if __INITIAL_POINTER_SIZE == 64
|
||||
# define CTX_FILESPEC ctx_filespec_32p
|
||||
/* Copy the file name to storage with a 32-bit pointer. */
|
||||
ctx_filespec_32p = ctx_filespec_32;
|
||||
strcpy( ctx_filespec_32p, (*ctx)->filespec);
|
||||
#else /* __INITIAL_POINTER_SIZE == 64 */
|
||||
# define CTX_FILESPEC (*ctx)->filespec
|
||||
#endif /* __INITIAL_POINTER_SIZE == 64 [else] */
|
||||
|
||||
(*ctx)->filespec_dsc.dsc$w_length = filespeclen;
|
||||
(*ctx)->filespec_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
|
||||
(*ctx)->filespec_dsc.dsc$b_class = DSC$K_CLASS_S;
|
||||
(*ctx)->filespec_dsc.dsc$a_pointer = (*ctx)->filespec;
|
||||
(*ctx)->result_dsc.dsc$w_length = 0;
|
||||
(*ctx)->result_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
|
||||
(*ctx)->result_dsc.dsc$b_class = DSC$K_CLASS_D;
|
||||
(*ctx)->result_dsc.dsc$a_pointer = 0;
|
||||
(*ctx)->filespec_dsc.dsc$a_pointer = CTX_FILESPEC;
|
||||
}
|
||||
|
||||
(*ctx)->result_dsc.dsc$w_length = 0;
|
||||
|
@@ -74,7 +74,9 @@ x86_64cpuid.s: 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) $@
|
||||
ppccpuid.s: ppccpuid.pl; $(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@
|
||||
alphacpuid.s: alphacpuid.pl
|
||||
$(PERL) $< | $(CC) -E - | tee $@ > /dev/null
|
||||
|
||||
testapps:
|
||||
[ -z "$(THIS)" ] || ( if echo $(SDIRS) | fgrep ' des '; \
|
||||
|
@@ -85,9 +85,9 @@ int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
|
||||
A[7] ^= (unsigned char)(t & 0xff);
|
||||
if (t > 0xff)
|
||||
{
|
||||
A[6] ^= (unsigned char)((t & 0xff) >> 8);
|
||||
A[5] ^= (unsigned char)((t & 0xff) >> 16);
|
||||
A[4] ^= (unsigned char)((t & 0xff) >> 24);
|
||||
A[6] ^= (unsigned char)((t >> 8) & 0xff);
|
||||
A[5] ^= (unsigned char)((t >> 16) & 0xff);
|
||||
A[4] ^= (unsigned char)((t >> 24) & 0xff);
|
||||
}
|
||||
memcpy(R, B + 8, 8);
|
||||
}
|
||||
@@ -119,9 +119,9 @@ int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
|
||||
A[7] ^= (unsigned char)(t & 0xff);
|
||||
if (t > 0xff)
|
||||
{
|
||||
A[6] ^= (unsigned char)((t & 0xff) >> 8);
|
||||
A[5] ^= (unsigned char)((t & 0xff) >> 16);
|
||||
A[4] ^= (unsigned char)((t & 0xff) >> 24);
|
||||
A[6] ^= (unsigned char)((t >> 8) & 0xff);
|
||||
A[5] ^= (unsigned char)((t >> 16) & 0xff);
|
||||
A[4] ^= (unsigned char)((t >> 24) & 0xff);
|
||||
}
|
||||
memcpy(B + 8, R, 8);
|
||||
AES_decrypt(B, B, key);
|
||||
|
@@ -16,12 +16,20 @@
|
||||
# allows to merge logical or arithmetic operation with shift or rotate
|
||||
# in one instruction and emit combined result every cycle. The module
|
||||
# is endian-neutral. The performance is ~42 cycles/byte for 128-bit
|
||||
# key.
|
||||
# key [on single-issue Xscale PXA250 core].
|
||||
|
||||
# May 2007.
|
||||
#
|
||||
# AES_set_[en|de]crypt_key is added.
|
||||
|
||||
# July 2010.
|
||||
#
|
||||
# Rescheduling for dual-issue pipeline resulted in 12% improvement on
|
||||
# Cortex A8 core and ~25 cycles per byte processed with 128-bit key.
|
||||
|
||||
while (($output=shift) && ($output!~/^\w[\w\-]*\.\w+$/)) {}
|
||||
open STDOUT,">$output";
|
||||
|
||||
$s0="r0";
|
||||
$s1="r1";
|
||||
$s2="r2";
|
||||
@@ -164,24 +172,24 @@ AES_encrypt:
|
||||
ldrb $t2,[$rounds,#1]
|
||||
ldrb $t3,[$rounds,#0]
|
||||
orr $s0,$s0,$t1,lsl#8
|
||||
orr $s0,$s0,$t2,lsl#16
|
||||
orr $s0,$s0,$t3,lsl#24
|
||||
ldrb $s1,[$rounds,#7]
|
||||
orr $s0,$s0,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#6]
|
||||
orr $s0,$s0,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#5]
|
||||
ldrb $t3,[$rounds,#4]
|
||||
orr $s1,$s1,$t1,lsl#8
|
||||
orr $s1,$s1,$t2,lsl#16
|
||||
orr $s1,$s1,$t3,lsl#24
|
||||
ldrb $s2,[$rounds,#11]
|
||||
orr $s1,$s1,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#10]
|
||||
orr $s1,$s1,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#9]
|
||||
ldrb $t3,[$rounds,#8]
|
||||
orr $s2,$s2,$t1,lsl#8
|
||||
orr $s2,$s2,$t2,lsl#16
|
||||
orr $s2,$s2,$t3,lsl#24
|
||||
ldrb $s3,[$rounds,#15]
|
||||
orr $s2,$s2,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#14]
|
||||
orr $s2,$s2,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#13]
|
||||
ldrb $t3,[$rounds,#12]
|
||||
orr $s3,$s3,$t1,lsl#8
|
||||
@@ -196,24 +204,24 @@ AES_encrypt:
|
||||
mov $t3,$s0,lsr#8
|
||||
strb $t1,[$rounds,#0]
|
||||
strb $t2,[$rounds,#1]
|
||||
strb $t3,[$rounds,#2]
|
||||
strb $s0,[$rounds,#3]
|
||||
mov $t1,$s1,lsr#24
|
||||
strb $t3,[$rounds,#2]
|
||||
mov $t2,$s1,lsr#16
|
||||
strb $s0,[$rounds,#3]
|
||||
mov $t3,$s1,lsr#8
|
||||
strb $t1,[$rounds,#4]
|
||||
strb $t2,[$rounds,#5]
|
||||
strb $t3,[$rounds,#6]
|
||||
strb $s1,[$rounds,#7]
|
||||
mov $t1,$s2,lsr#24
|
||||
strb $t3,[$rounds,#6]
|
||||
mov $t2,$s2,lsr#16
|
||||
strb $s1,[$rounds,#7]
|
||||
mov $t3,$s2,lsr#8
|
||||
strb $t1,[$rounds,#8]
|
||||
strb $t2,[$rounds,#9]
|
||||
strb $t3,[$rounds,#10]
|
||||
strb $s2,[$rounds,#11]
|
||||
mov $t1,$s3,lsr#24
|
||||
strb $t3,[$rounds,#10]
|
||||
mov $t2,$s3,lsr#16
|
||||
strb $s2,[$rounds,#11]
|
||||
mov $t3,$s3,lsr#8
|
||||
strb $t1,[$rounds,#12]
|
||||
strb $t2,[$rounds,#13]
|
||||
@@ -230,141 +238,137 @@ AES_encrypt:
|
||||
.align 2
|
||||
_armv4_AES_encrypt:
|
||||
str lr,[sp,#-4]! @ push lr
|
||||
ldr $t1,[$key],#16
|
||||
ldr $t2,[$key,#-12]
|
||||
ldr $t3,[$key,#-8]
|
||||
ldr $i1,[$key,#-4]
|
||||
ldr $rounds,[$key,#240-16]
|
||||
ldmia $key!,{$t1-$i1}
|
||||
eor $s0,$s0,$t1
|
||||
ldr $rounds,[$key,#240-16]
|
||||
eor $s1,$s1,$t2
|
||||
eor $s2,$s2,$t3
|
||||
eor $s3,$s3,$i1
|
||||
sub $rounds,$rounds,#1
|
||||
mov lr,#255
|
||||
|
||||
.Lenc_loop:
|
||||
and $i1,lr,$s0
|
||||
and $i2,lr,$s0,lsr#8
|
||||
and $i3,lr,$s0,lsr#16
|
||||
and $i1,lr,$s0
|
||||
mov $s0,$s0,lsr#24
|
||||
.Lenc_loop:
|
||||
ldr $t1,[$tbl,$i1,lsl#2] @ Te3[s0>>0]
|
||||
ldr $s0,[$tbl,$s0,lsl#2] @ Te0[s0>>24]
|
||||
ldr $t2,[$tbl,$i2,lsl#2] @ Te2[s0>>8]
|
||||
ldr $t3,[$tbl,$i3,lsl#2] @ Te1[s0>>16]
|
||||
|
||||
and $i1,lr,$s1,lsr#16 @ i0
|
||||
ldr $t2,[$tbl,$i2,lsl#2] @ Te2[s0>>8]
|
||||
and $i2,lr,$s1
|
||||
ldr $t3,[$tbl,$i3,lsl#2] @ Te1[s0>>16]
|
||||
and $i3,lr,$s1,lsr#8
|
||||
ldr $s0,[$tbl,$s0,lsl#2] @ Te0[s0>>24]
|
||||
mov $s1,$s1,lsr#24
|
||||
|
||||
ldr $i1,[$tbl,$i1,lsl#2] @ Te1[s1>>16]
|
||||
ldr $s1,[$tbl,$s1,lsl#2] @ Te0[s1>>24]
|
||||
ldr $i2,[$tbl,$i2,lsl#2] @ Te3[s1>>0]
|
||||
ldr $i3,[$tbl,$i3,lsl#2] @ Te2[s1>>8]
|
||||
eor $s0,$s0,$i1,ror#8
|
||||
eor $s1,$s1,$t1,ror#24
|
||||
eor $t2,$t2,$i2,ror#8
|
||||
eor $t3,$t3,$i3,ror#8
|
||||
|
||||
ldr $s1,[$tbl,$s1,lsl#2] @ Te0[s1>>24]
|
||||
and $i1,lr,$s2,lsr#8 @ i0
|
||||
eor $t2,$t2,$i2,ror#8
|
||||
and $i2,lr,$s2,lsr#16 @ i1
|
||||
eor $t3,$t3,$i3,ror#8
|
||||
and $i3,lr,$s2
|
||||
mov $s2,$s2,lsr#24
|
||||
eor $s1,$s1,$t1,ror#24
|
||||
ldr $i1,[$tbl,$i1,lsl#2] @ Te2[s2>>8]
|
||||
mov $s2,$s2,lsr#24
|
||||
|
||||
ldr $i2,[$tbl,$i2,lsl#2] @ Te1[s2>>16]
|
||||
ldr $s2,[$tbl,$s2,lsl#2] @ Te0[s2>>24]
|
||||
ldr $i3,[$tbl,$i3,lsl#2] @ Te3[s2>>0]
|
||||
eor $s0,$s0,$i1,ror#16
|
||||
eor $s1,$s1,$i2,ror#8
|
||||
eor $s2,$s2,$t2,ror#16
|
||||
eor $t3,$t3,$i3,ror#16
|
||||
|
||||
ldr $s2,[$tbl,$s2,lsl#2] @ Te0[s2>>24]
|
||||
and $i1,lr,$s3 @ i0
|
||||
eor $s1,$s1,$i2,ror#8
|
||||
and $i2,lr,$s3,lsr#8 @ i1
|
||||
eor $t3,$t3,$i3,ror#16
|
||||
and $i3,lr,$s3,lsr#16 @ i2
|
||||
mov $s3,$s3,lsr#24
|
||||
eor $s2,$s2,$t2,ror#16
|
||||
ldr $i1,[$tbl,$i1,lsl#2] @ Te3[s3>>0]
|
||||
mov $s3,$s3,lsr#24
|
||||
|
||||
ldr $i2,[$tbl,$i2,lsl#2] @ Te2[s3>>8]
|
||||
ldr $i3,[$tbl,$i3,lsl#2] @ Te1[s3>>16]
|
||||
ldr $s3,[$tbl,$s3,lsl#2] @ Te0[s3>>24]
|
||||
eor $s0,$s0,$i1,ror#24
|
||||
ldr $s3,[$tbl,$s3,lsl#2] @ Te0[s3>>24]
|
||||
eor $s1,$s1,$i2,ror#16
|
||||
ldr $i1,[$key],#16
|
||||
eor $s2,$s2,$i3,ror#8
|
||||
ldr $t1,[$key,#-12]
|
||||
eor $s3,$s3,$t3,ror#8
|
||||
|
||||
ldr $t1,[$key],#16
|
||||
ldr $t2,[$key,#-12]
|
||||
ldr $t3,[$key,#-8]
|
||||
ldr $i1,[$key,#-4]
|
||||
eor $s0,$s0,$t1
|
||||
eor $s1,$s1,$t2
|
||||
eor $s2,$s2,$t3
|
||||
eor $s3,$s3,$i1
|
||||
ldr $t2,[$key,#-8]
|
||||
eor $s0,$s0,$i1
|
||||
ldr $t3,[$key,#-4]
|
||||
and $i1,lr,$s0
|
||||
eor $s1,$s1,$t1
|
||||
and $i2,lr,$s0,lsr#8
|
||||
eor $s2,$s2,$t2
|
||||
and $i3,lr,$s0,lsr#16
|
||||
eor $s3,$s3,$t3
|
||||
mov $s0,$s0,lsr#24
|
||||
|
||||
subs $rounds,$rounds,#1
|
||||
bne .Lenc_loop
|
||||
|
||||
add $tbl,$tbl,#2
|
||||
|
||||
and $i1,lr,$s0
|
||||
and $i2,lr,$s0,lsr#8
|
||||
and $i3,lr,$s0,lsr#16
|
||||
mov $s0,$s0,lsr#24
|
||||
ldrb $t1,[$tbl,$i1,lsl#2] @ Te4[s0>>0]
|
||||
ldrb $s0,[$tbl,$s0,lsl#2] @ Te4[s0>>24]
|
||||
ldrb $t2,[$tbl,$i2,lsl#2] @ Te4[s0>>8]
|
||||
ldrb $t3,[$tbl,$i3,lsl#2] @ Te4[s0>>16]
|
||||
|
||||
and $i1,lr,$s1,lsr#16 @ i0
|
||||
ldrb $t2,[$tbl,$i2,lsl#2] @ Te4[s0>>8]
|
||||
and $i2,lr,$s1
|
||||
ldrb $t3,[$tbl,$i3,lsl#2] @ Te4[s0>>16]
|
||||
and $i3,lr,$s1,lsr#8
|
||||
ldrb $s0,[$tbl,$s0,lsl#2] @ Te4[s0>>24]
|
||||
mov $s1,$s1,lsr#24
|
||||
|
||||
ldrb $i1,[$tbl,$i1,lsl#2] @ Te4[s1>>16]
|
||||
ldrb $s1,[$tbl,$s1,lsl#2] @ Te4[s1>>24]
|
||||
ldrb $i2,[$tbl,$i2,lsl#2] @ Te4[s1>>0]
|
||||
ldrb $i3,[$tbl,$i3,lsl#2] @ Te4[s1>>8]
|
||||
eor $s0,$i1,$s0,lsl#8
|
||||
eor $s1,$t1,$s1,lsl#24
|
||||
eor $t2,$i2,$t2,lsl#8
|
||||
eor $t3,$i3,$t3,lsl#8
|
||||
|
||||
ldrb $s1,[$tbl,$s1,lsl#2] @ Te4[s1>>24]
|
||||
and $i1,lr,$s2,lsr#8 @ i0
|
||||
eor $t2,$i2,$t2,lsl#8
|
||||
and $i2,lr,$s2,lsr#16 @ i1
|
||||
eor $t3,$i3,$t3,lsl#8
|
||||
and $i3,lr,$s2
|
||||
mov $s2,$s2,lsr#24
|
||||
eor $s1,$t1,$s1,lsl#24
|
||||
ldrb $i1,[$tbl,$i1,lsl#2] @ Te4[s2>>8]
|
||||
mov $s2,$s2,lsr#24
|
||||
|
||||
ldrb $i2,[$tbl,$i2,lsl#2] @ Te4[s2>>16]
|
||||
ldrb $s2,[$tbl,$s2,lsl#2] @ Te4[s2>>24]
|
||||
ldrb $i3,[$tbl,$i3,lsl#2] @ Te4[s2>>0]
|
||||
eor $s0,$i1,$s0,lsl#8
|
||||
eor $s1,$s1,$i2,lsl#16
|
||||
eor $s2,$t2,$s2,lsl#24
|
||||
eor $t3,$i3,$t3,lsl#8
|
||||
|
||||
ldrb $s2,[$tbl,$s2,lsl#2] @ Te4[s2>>24]
|
||||
and $i1,lr,$s3 @ i0
|
||||
eor $s1,$s1,$i2,lsl#16
|
||||
and $i2,lr,$s3,lsr#8 @ i1
|
||||
eor $t3,$i3,$t3,lsl#8
|
||||
and $i3,lr,$s3,lsr#16 @ i2
|
||||
mov $s3,$s3,lsr#24
|
||||
eor $s2,$t2,$s2,lsl#24
|
||||
ldrb $i1,[$tbl,$i1,lsl#2] @ Te4[s3>>0]
|
||||
mov $s3,$s3,lsr#24
|
||||
|
||||
ldrb $i2,[$tbl,$i2,lsl#2] @ Te4[s3>>8]
|
||||
ldrb $i3,[$tbl,$i3,lsl#2] @ Te4[s3>>16]
|
||||
ldrb $s3,[$tbl,$s3,lsl#2] @ Te4[s3>>24]
|
||||
eor $s0,$i1,$s0,lsl#8
|
||||
ldrb $s3,[$tbl,$s3,lsl#2] @ Te4[s3>>24]
|
||||
ldr $i1,[$key,#0]
|
||||
eor $s1,$s1,$i2,lsl#8
|
||||
ldr $t1,[$key,#4]
|
||||
eor $s2,$s2,$i3,lsl#16
|
||||
ldr $t2,[$key,#8]
|
||||
eor $s3,$t3,$s3,lsl#24
|
||||
ldr $t3,[$key,#12]
|
||||
|
||||
ldr lr,[sp],#4 @ pop lr
|
||||
ldr $t1,[$key,#0]
|
||||
ldr $t2,[$key,#4]
|
||||
ldr $t3,[$key,#8]
|
||||
ldr $i1,[$key,#12]
|
||||
eor $s0,$s0,$t1
|
||||
eor $s1,$s1,$t2
|
||||
eor $s2,$s2,$t3
|
||||
eor $s3,$s3,$i1
|
||||
eor $s0,$s0,$i1
|
||||
eor $s1,$s1,$t1
|
||||
eor $s2,$s2,$t2
|
||||
eor $s3,$s3,$t3
|
||||
|
||||
sub $tbl,$tbl,#2
|
||||
mov pc,lr @ return
|
||||
ldr pc,[sp],#4 @ pop and return
|
||||
.size _armv4_AES_encrypt,.-_armv4_AES_encrypt
|
||||
|
||||
.global AES_set_encrypt_key
|
||||
@@ -399,31 +403,31 @@ AES_set_encrypt_key:
|
||||
ldrb $t2,[$rounds,#1]
|
||||
ldrb $t3,[$rounds,#0]
|
||||
orr $s0,$s0,$t1,lsl#8
|
||||
orr $s0,$s0,$t2,lsl#16
|
||||
orr $s0,$s0,$t3,lsl#24
|
||||
ldrb $s1,[$rounds,#7]
|
||||
orr $s0,$s0,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#6]
|
||||
orr $s0,$s0,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#5]
|
||||
ldrb $t3,[$rounds,#4]
|
||||
orr $s1,$s1,$t1,lsl#8
|
||||
orr $s1,$s1,$t2,lsl#16
|
||||
orr $s1,$s1,$t3,lsl#24
|
||||
ldrb $s2,[$rounds,#11]
|
||||
orr $s1,$s1,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#10]
|
||||
orr $s1,$s1,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#9]
|
||||
ldrb $t3,[$rounds,#8]
|
||||
orr $s2,$s2,$t1,lsl#8
|
||||
orr $s2,$s2,$t2,lsl#16
|
||||
orr $s2,$s2,$t3,lsl#24
|
||||
ldrb $s3,[$rounds,#15]
|
||||
orr $s2,$s2,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#14]
|
||||
orr $s2,$s2,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#13]
|
||||
ldrb $t3,[$rounds,#12]
|
||||
orr $s3,$s3,$t1,lsl#8
|
||||
orr $s3,$s3,$t2,lsl#16
|
||||
orr $s3,$s3,$t3,lsl#24
|
||||
str $s0,[$key],#16
|
||||
orr $s3,$s3,$t2,lsl#16
|
||||
str $s1,[$key,#-12]
|
||||
orr $s3,$s3,$t3,lsl#24
|
||||
str $s2,[$key,#-8]
|
||||
str $s3,[$key,#-4]
|
||||
|
||||
@@ -437,27 +441,26 @@ AES_set_encrypt_key:
|
||||
.L128_loop:
|
||||
and $t2,lr,$s3,lsr#24
|
||||
and $i1,lr,$s3,lsr#16
|
||||
and $i2,lr,$s3,lsr#8
|
||||
and $i3,lr,$s3
|
||||
ldrb $t2,[$tbl,$t2]
|
||||
and $i2,lr,$s3,lsr#8
|
||||
ldrb $i1,[$tbl,$i1]
|
||||
and $i3,lr,$s3
|
||||
ldrb $i2,[$tbl,$i2]
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
ldr $t1,[$t3],#4 @ rcon[i++]
|
||||
orr $t2,$t2,$i1,lsl#24
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
orr $t2,$t2,$i2,lsl#16
|
||||
ldr $t1,[$t3],#4 @ rcon[i++]
|
||||
orr $t2,$t2,$i3,lsl#8
|
||||
eor $t2,$t2,$t1
|
||||
eor $s0,$s0,$t2 @ rk[4]=rk[0]^...
|
||||
eor $s1,$s1,$s0 @ rk[5]=rk[1]^rk[4]
|
||||
eor $s2,$s2,$s1 @ rk[6]=rk[2]^rk[5]
|
||||
eor $s3,$s3,$s2 @ rk[7]=rk[3]^rk[6]
|
||||
str $s0,[$key],#16
|
||||
eor $s2,$s2,$s1 @ rk[6]=rk[2]^rk[5]
|
||||
str $s1,[$key,#-12]
|
||||
eor $s3,$s3,$s2 @ rk[7]=rk[3]^rk[6]
|
||||
str $s2,[$key,#-8]
|
||||
str $s3,[$key,#-4]
|
||||
|
||||
subs $rounds,$rounds,#1
|
||||
str $s3,[$key,#-4]
|
||||
bne .L128_loop
|
||||
sub r2,$key,#176
|
||||
b .Ldone
|
||||
@@ -468,16 +471,16 @@ AES_set_encrypt_key:
|
||||
ldrb $t2,[$rounds,#17]
|
||||
ldrb $t3,[$rounds,#16]
|
||||
orr $i2,$i2,$t1,lsl#8
|
||||
orr $i2,$i2,$t2,lsl#16
|
||||
orr $i2,$i2,$t3,lsl#24
|
||||
ldrb $i3,[$rounds,#23]
|
||||
orr $i2,$i2,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#22]
|
||||
orr $i2,$i2,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#21]
|
||||
ldrb $t3,[$rounds,#20]
|
||||
orr $i3,$i3,$t1,lsl#8
|
||||
orr $i3,$i3,$t2,lsl#16
|
||||
orr $i3,$i3,$t3,lsl#24
|
||||
str $i2,[$key],#8
|
||||
orr $i3,$i3,$t3,lsl#24
|
||||
str $i3,[$key,#-4]
|
||||
|
||||
teq lr,#192
|
||||
@@ -491,27 +494,26 @@ AES_set_encrypt_key:
|
||||
.L192_loop:
|
||||
and $t2,lr,$i3,lsr#24
|
||||
and $i1,lr,$i3,lsr#16
|
||||
and $i2,lr,$i3,lsr#8
|
||||
and $i3,lr,$i3
|
||||
ldrb $t2,[$tbl,$t2]
|
||||
and $i2,lr,$i3,lsr#8
|
||||
ldrb $i1,[$tbl,$i1]
|
||||
and $i3,lr,$i3
|
||||
ldrb $i2,[$tbl,$i2]
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
ldr $t1,[$t3],#4 @ rcon[i++]
|
||||
orr $t2,$t2,$i1,lsl#24
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
orr $t2,$t2,$i2,lsl#16
|
||||
ldr $t1,[$t3],#4 @ rcon[i++]
|
||||
orr $t2,$t2,$i3,lsl#8
|
||||
eor $i3,$t2,$t1
|
||||
eor $s0,$s0,$i3 @ rk[6]=rk[0]^...
|
||||
eor $s1,$s1,$s0 @ rk[7]=rk[1]^rk[6]
|
||||
eor $s2,$s2,$s1 @ rk[8]=rk[2]^rk[7]
|
||||
eor $s3,$s3,$s2 @ rk[9]=rk[3]^rk[8]
|
||||
str $s0,[$key],#24
|
||||
eor $s2,$s2,$s1 @ rk[8]=rk[2]^rk[7]
|
||||
str $s1,[$key,#-20]
|
||||
eor $s3,$s3,$s2 @ rk[9]=rk[3]^rk[8]
|
||||
str $s2,[$key,#-16]
|
||||
str $s3,[$key,#-12]
|
||||
|
||||
subs $rounds,$rounds,#1
|
||||
str $s3,[$key,#-12]
|
||||
subeq r2,$key,#216
|
||||
beq .Ldone
|
||||
|
||||
@@ -529,16 +531,16 @@ AES_set_encrypt_key:
|
||||
ldrb $t2,[$rounds,#25]
|
||||
ldrb $t3,[$rounds,#24]
|
||||
orr $i2,$i2,$t1,lsl#8
|
||||
orr $i2,$i2,$t2,lsl#16
|
||||
orr $i2,$i2,$t3,lsl#24
|
||||
ldrb $i3,[$rounds,#31]
|
||||
orr $i2,$i2,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#30]
|
||||
orr $i2,$i2,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#29]
|
||||
ldrb $t3,[$rounds,#28]
|
||||
orr $i3,$i3,$t1,lsl#8
|
||||
orr $i3,$i3,$t2,lsl#16
|
||||
orr $i3,$i3,$t3,lsl#24
|
||||
str $i2,[$key],#8
|
||||
orr $i3,$i3,$t3,lsl#24
|
||||
str $i3,[$key,#-4]
|
||||
|
||||
mov $rounds,#14
|
||||
@@ -550,52 +552,51 @@ AES_set_encrypt_key:
|
||||
.L256_loop:
|
||||
and $t2,lr,$i3,lsr#24
|
||||
and $i1,lr,$i3,lsr#16
|
||||
and $i2,lr,$i3,lsr#8
|
||||
and $i3,lr,$i3
|
||||
ldrb $t2,[$tbl,$t2]
|
||||
and $i2,lr,$i3,lsr#8
|
||||
ldrb $i1,[$tbl,$i1]
|
||||
and $i3,lr,$i3
|
||||
ldrb $i2,[$tbl,$i2]
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
ldr $t1,[$t3],#4 @ rcon[i++]
|
||||
orr $t2,$t2,$i1,lsl#24
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
orr $t2,$t2,$i2,lsl#16
|
||||
ldr $t1,[$t3],#4 @ rcon[i++]
|
||||
orr $t2,$t2,$i3,lsl#8
|
||||
eor $i3,$t2,$t1
|
||||
eor $s0,$s0,$i3 @ rk[8]=rk[0]^...
|
||||
eor $s1,$s1,$s0 @ rk[9]=rk[1]^rk[8]
|
||||
eor $s2,$s2,$s1 @ rk[10]=rk[2]^rk[9]
|
||||
eor $s3,$s3,$s2 @ rk[11]=rk[3]^rk[10]
|
||||
str $s0,[$key],#32
|
||||
eor $s2,$s2,$s1 @ rk[10]=rk[2]^rk[9]
|
||||
str $s1,[$key,#-28]
|
||||
eor $s3,$s3,$s2 @ rk[11]=rk[3]^rk[10]
|
||||
str $s2,[$key,#-24]
|
||||
str $s3,[$key,#-20]
|
||||
|
||||
subs $rounds,$rounds,#1
|
||||
str $s3,[$key,#-20]
|
||||
subeq r2,$key,#256
|
||||
beq .Ldone
|
||||
|
||||
and $t2,lr,$s3
|
||||
and $i1,lr,$s3,lsr#8
|
||||
and $i2,lr,$s3,lsr#16
|
||||
and $i3,lr,$s3,lsr#24
|
||||
ldrb $t2,[$tbl,$t2]
|
||||
and $i2,lr,$s3,lsr#16
|
||||
ldrb $i1,[$tbl,$i1]
|
||||
and $i3,lr,$s3,lsr#24
|
||||
ldrb $i2,[$tbl,$i2]
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
orr $t2,$t2,$i1,lsl#8
|
||||
ldrb $i3,[$tbl,$i3]
|
||||
orr $t2,$t2,$i2,lsl#16
|
||||
ldr $t1,[$key,#-48]
|
||||
orr $t2,$t2,$i3,lsl#24
|
||||
|
||||
ldr $t1,[$key,#-48]
|
||||
ldr $i1,[$key,#-44]
|
||||
ldr $i2,[$key,#-40]
|
||||
ldr $i3,[$key,#-36]
|
||||
eor $t1,$t1,$t2 @ rk[12]=rk[4]^...
|
||||
ldr $i3,[$key,#-36]
|
||||
eor $i1,$i1,$t1 @ rk[13]=rk[5]^rk[12]
|
||||
eor $i2,$i2,$i1 @ rk[14]=rk[6]^rk[13]
|
||||
eor $i3,$i3,$i2 @ rk[15]=rk[7]^rk[14]
|
||||
str $t1,[$key,#-16]
|
||||
eor $i2,$i2,$i1 @ rk[14]=rk[6]^rk[13]
|
||||
str $i1,[$key,#-12]
|
||||
eor $i3,$i3,$i2 @ rk[15]=rk[7]^rk[14]
|
||||
str $i2,[$key,#-8]
|
||||
str $i3,[$key,#-4]
|
||||
b .L256_loop
|
||||
@@ -816,24 +817,24 @@ AES_decrypt:
|
||||
ldrb $t2,[$rounds,#1]
|
||||
ldrb $t3,[$rounds,#0]
|
||||
orr $s0,$s0,$t1,lsl#8
|
||||
orr $s0,$s0,$t2,lsl#16
|
||||
orr $s0,$s0,$t3,lsl#24
|
||||
ldrb $s1,[$rounds,#7]
|
||||
orr $s0,$s0,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#6]
|
||||
orr $s0,$s0,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#5]
|
||||
ldrb $t3,[$rounds,#4]
|
||||
orr $s1,$s1,$t1,lsl#8
|
||||
orr $s1,$s1,$t2,lsl#16
|
||||
orr $s1,$s1,$t3,lsl#24
|
||||
ldrb $s2,[$rounds,#11]
|
||||
orr $s1,$s1,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#10]
|
||||
orr $s1,$s1,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#9]
|
||||
ldrb $t3,[$rounds,#8]
|
||||
orr $s2,$s2,$t1,lsl#8
|
||||
orr $s2,$s2,$t2,lsl#16
|
||||
orr $s2,$s2,$t3,lsl#24
|
||||
ldrb $s3,[$rounds,#15]
|
||||
orr $s2,$s2,$t2,lsl#16
|
||||
ldrb $t1,[$rounds,#14]
|
||||
orr $s2,$s2,$t3,lsl#24
|
||||
ldrb $t2,[$rounds,#13]
|
||||
ldrb $t3,[$rounds,#12]
|
||||
orr $s3,$s3,$t1,lsl#8
|
||||
@@ -848,24 +849,24 @@ AES_decrypt:
|
||||
mov $t3,$s0,lsr#8
|
||||
strb $t1,[$rounds,#0]
|
||||
strb $t2,[$rounds,#1]
|
||||
strb $t3,[$rounds,#2]
|
||||
strb $s0,[$rounds,#3]
|
||||
mov $t1,$s1,lsr#24
|
||||
strb $t3,[$rounds,#2]
|
||||
mov $t2,$s1,lsr#16
|
||||
strb $s0,[$rounds,#3]
|
||||
mov $t3,$s1,lsr#8
|
||||
strb $t1,[$rounds,#4]
|
||||
strb $t2,[$rounds,#5]
|
||||
strb $t3,[$rounds,#6]
|
||||
strb $s1,[$rounds,#7]
|
||||
mov $t1,$s2,lsr#24
|
||||
strb $t3,[$rounds,#6]
|
||||
mov $t2,$s2,lsr#16
|
||||
strb $s1,[$rounds,#7]
|
||||
mov $t3,$s2,lsr#8
|
||||
strb $t1,[$rounds,#8]
|
||||
strb $t2,[$rounds,#9]
|
||||
strb $t3,[$rounds,#10]
|
||||
strb $s2,[$rounds,#11]
|
||||
mov $t1,$s3,lsr#24
|
||||
strb $t3,[$rounds,#10]
|
||||
mov $t2,$s3,lsr#16
|
||||
strb $s2,[$rounds,#11]
|
||||
mov $t3,$s3,lsr#8
|
||||
strb $t1,[$rounds,#12]
|
||||
strb $t2,[$rounds,#13]
|
||||
@@ -882,149 +883,148 @@ AES_decrypt:
|
||||
.align 2
|
||||
_armv4_AES_decrypt:
|
||||
str lr,[sp,#-4]! @ push lr
|
||||
ldr $t1,[$key],#16
|
||||
ldr $t2,[$key,#-12]
|
||||
ldr $t3,[$key,#-8]
|
||||
ldr $i1,[$key,#-4]
|
||||
ldr $rounds,[$key,#240-16]
|
||||
ldmia $key!,{$t1-$i1}
|
||||
eor $s0,$s0,$t1
|
||||
ldr $rounds,[$key,#240-16]
|
||||
eor $s1,$s1,$t2
|
||||
eor $s2,$s2,$t3
|
||||
eor $s3,$s3,$i1
|
||||
sub $rounds,$rounds,#1
|
||||
mov lr,#255
|
||||
|
||||
.Ldec_loop:
|
||||
and $i1,lr,$s0,lsr#16
|
||||
and $i2,lr,$s0,lsr#8
|
||||
and $i3,lr,$s0
|
||||
mov $s0,$s0,lsr#24
|
||||
.Ldec_loop:
|
||||
ldr $t1,[$tbl,$i1,lsl#2] @ Td1[s0>>16]
|
||||
ldr $s0,[$tbl,$s0,lsl#2] @ Td0[s0>>24]
|
||||
ldr $t2,[$tbl,$i2,lsl#2] @ Td2[s0>>8]
|
||||
ldr $t3,[$tbl,$i3,lsl#2] @ Td3[s0>>0]
|
||||
|
||||
and $i1,lr,$s1 @ i0
|
||||
ldr $t2,[$tbl,$i2,lsl#2] @ Td2[s0>>8]
|
||||
and $i2,lr,$s1,lsr#16
|
||||
ldr $t3,[$tbl,$i3,lsl#2] @ Td3[s0>>0]
|
||||
and $i3,lr,$s1,lsr#8
|
||||
ldr $s0,[$tbl,$s0,lsl#2] @ Td0[s0>>24]
|
||||
mov $s1,$s1,lsr#24
|
||||
|
||||
ldr $i1,[$tbl,$i1,lsl#2] @ Td3[s1>>0]
|
||||
ldr $s1,[$tbl,$s1,lsl#2] @ Td0[s1>>24]
|
||||
ldr $i2,[$tbl,$i2,lsl#2] @ Td1[s1>>16]
|
||||
ldr $i3,[$tbl,$i3,lsl#2] @ Td2[s1>>8]
|
||||
eor $s0,$s0,$i1,ror#24
|
||||
eor $s1,$s1,$t1,ror#8
|
||||
eor $t2,$i2,$t2,ror#8
|
||||
eor $t3,$i3,$t3,ror#8
|
||||
|
||||
ldr $s1,[$tbl,$s1,lsl#2] @ Td0[s1>>24]
|
||||
and $i1,lr,$s2,lsr#8 @ i0
|
||||
eor $t2,$i2,$t2,ror#8
|
||||
and $i2,lr,$s2 @ i1
|
||||
eor $t3,$i3,$t3,ror#8
|
||||
and $i3,lr,$s2,lsr#16
|
||||
mov $s2,$s2,lsr#24
|
||||
eor $s1,$s1,$t1,ror#8
|
||||
ldr $i1,[$tbl,$i1,lsl#2] @ Td2[s2>>8]
|
||||
mov $s2,$s2,lsr#24
|
||||
|
||||
ldr $i2,[$tbl,$i2,lsl#2] @ Td3[s2>>0]
|
||||
ldr $s2,[$tbl,$s2,lsl#2] @ Td0[s2>>24]
|
||||
ldr $i3,[$tbl,$i3,lsl#2] @ Td1[s2>>16]
|
||||
eor $s0,$s0,$i1,ror#16
|
||||
eor $s1,$s1,$i2,ror#24
|
||||
eor $s2,$s2,$t2,ror#8
|
||||
eor $t3,$i3,$t3,ror#8
|
||||
|
||||
ldr $s2,[$tbl,$s2,lsl#2] @ Td0[s2>>24]
|
||||
and $i1,lr,$s3,lsr#16 @ i0
|
||||
eor $s1,$s1,$i2,ror#24
|
||||
and $i2,lr,$s3,lsr#8 @ i1
|
||||
eor $t3,$i3,$t3,ror#8
|
||||
and $i3,lr,$s3 @ i2
|
||||
mov $s3,$s3,lsr#24
|
||||
eor $s2,$s2,$t2,ror#8
|
||||
ldr $i1,[$tbl,$i1,lsl#2] @ Td1[s3>>16]
|
||||
mov $s3,$s3,lsr#24
|
||||
|
||||
ldr $i2,[$tbl,$i2,lsl#2] @ Td2[s3>>8]
|
||||
ldr $i3,[$tbl,$i3,lsl#2] @ Td3[s3>>0]
|
||||
ldr $s3,[$tbl,$s3,lsl#2] @ Td0[s3>>24]
|
||||
eor $s0,$s0,$i1,ror#8
|
||||
ldr $s3,[$tbl,$s3,lsl#2] @ Td0[s3>>24]
|
||||
eor $s1,$s1,$i2,ror#16
|
||||
eor $s2,$s2,$i3,ror#24
|
||||
ldr $i1,[$key],#16
|
||||
eor $s3,$s3,$t3,ror#8
|
||||
|
||||
ldr $t1,[$key],#16
|
||||
ldr $t2,[$key,#-12]
|
||||
ldr $t3,[$key,#-8]
|
||||
ldr $i1,[$key,#-4]
|
||||
eor $s0,$s0,$t1
|
||||
eor $s1,$s1,$t2
|
||||
eor $s2,$s2,$t3
|
||||
eor $s3,$s3,$i1
|
||||
ldr $t1,[$key,#-12]
|
||||
ldr $t2,[$key,#-8]
|
||||
eor $s0,$s0,$i1
|
||||
ldr $t3,[$key,#-4]
|
||||
and $i1,lr,$s0,lsr#16
|
||||
eor $s1,$s1,$t1
|
||||
and $i2,lr,$s0,lsr#8
|
||||
eor $s2,$s2,$t2
|
||||
and $i3,lr,$s0
|
||||
eor $s3,$s3,$t3
|
||||
mov $s0,$s0,lsr#24
|
||||
|
||||
subs $rounds,$rounds,#1
|
||||
bne .Ldec_loop
|
||||
|
||||
add $tbl,$tbl,#1024
|
||||
|
||||
ldr $t1,[$tbl,#0] @ prefetch Td4
|
||||
ldr $t2,[$tbl,#32]
|
||||
ldr $t3,[$tbl,#64]
|
||||
ldr $i1,[$tbl,#96]
|
||||
ldr $i2,[$tbl,#128]
|
||||
ldr $i3,[$tbl,#160]
|
||||
ldr $t1,[$tbl,#192]
|
||||
ldr $t2,[$tbl,#224]
|
||||
ldr $t2,[$tbl,#0] @ prefetch Td4
|
||||
ldr $t3,[$tbl,#32]
|
||||
ldr $t1,[$tbl,#64]
|
||||
ldr $t2,[$tbl,#96]
|
||||
ldr $t3,[$tbl,#128]
|
||||
ldr $t1,[$tbl,#160]
|
||||
ldr $t2,[$tbl,#192]
|
||||
ldr $t3,[$tbl,#224]
|
||||
|
||||
and $i1,lr,$s0,lsr#16
|
||||
and $i2,lr,$s0,lsr#8
|
||||
and $i3,lr,$s0
|
||||
ldrb $s0,[$tbl,$s0,lsr#24] @ Td4[s0>>24]
|
||||
ldrb $s0,[$tbl,$s0] @ Td4[s0>>24]
|
||||
ldrb $t1,[$tbl,$i1] @ Td4[s0>>16]
|
||||
ldrb $t2,[$tbl,$i2] @ Td4[s0>>8]
|
||||
ldrb $t3,[$tbl,$i3] @ Td4[s0>>0]
|
||||
|
||||
and $i1,lr,$s1 @ i0
|
||||
ldrb $t2,[$tbl,$i2] @ Td4[s0>>8]
|
||||
and $i2,lr,$s1,lsr#16
|
||||
ldrb $t3,[$tbl,$i3] @ Td4[s0>>0]
|
||||
and $i3,lr,$s1,lsr#8
|
||||
|
||||
ldrb $i1,[$tbl,$i1] @ Td4[s1>>0]
|
||||
ldrb $s1,[$tbl,$s1,lsr#24] @ Td4[s1>>24]
|
||||
ldrb $i2,[$tbl,$i2] @ Td4[s1>>16]
|
||||
ldrb $i3,[$tbl,$i3] @ Td4[s1>>8]
|
||||
eor $s0,$i1,$s0,lsl#24
|
||||
ldrb $i3,[$tbl,$i3] @ Td4[s1>>8]
|
||||
eor $s1,$t1,$s1,lsl#8
|
||||
eor $t2,$t2,$i2,lsl#8
|
||||
eor $t3,$t3,$i3,lsl#8
|
||||
|
||||
and $i1,lr,$s2,lsr#8 @ i0
|
||||
eor $t2,$t2,$i2,lsl#8
|
||||
and $i2,lr,$s2 @ i1
|
||||
and $i3,lr,$s2,lsr#16
|
||||
eor $t3,$t3,$i3,lsl#8
|
||||
ldrb $i1,[$tbl,$i1] @ Td4[s2>>8]
|
||||
and $i3,lr,$s2,lsr#16
|
||||
|
||||
ldrb $i2,[$tbl,$i2] @ Td4[s2>>0]
|
||||
ldrb $s2,[$tbl,$s2,lsr#24] @ Td4[s2>>24]
|
||||
ldrb $i3,[$tbl,$i3] @ Td4[s2>>16]
|
||||
eor $s0,$s0,$i1,lsl#8
|
||||
ldrb $i3,[$tbl,$i3] @ Td4[s2>>16]
|
||||
eor $s1,$i2,$s1,lsl#16
|
||||
eor $s2,$t2,$s2,lsl#16
|
||||
eor $t3,$t3,$i3,lsl#16
|
||||
|
||||
and $i1,lr,$s3,lsr#16 @ i0
|
||||
eor $s2,$t2,$s2,lsl#16
|
||||
and $i2,lr,$s3,lsr#8 @ i1
|
||||
and $i3,lr,$s3 @ i2
|
||||
eor $t3,$t3,$i3,lsl#16
|
||||
ldrb $i1,[$tbl,$i1] @ Td4[s3>>16]
|
||||
and $i3,lr,$s3 @ i2
|
||||
|
||||
ldrb $i2,[$tbl,$i2] @ Td4[s3>>8]
|
||||
ldrb $i3,[$tbl,$i3] @ Td4[s3>>0]
|
||||
ldrb $s3,[$tbl,$s3,lsr#24] @ Td4[s3>>24]
|
||||
eor $s0,$s0,$i1,lsl#16
|
||||
ldr $i1,[$key,#0]
|
||||
eor $s1,$s1,$i2,lsl#8
|
||||
ldr $t1,[$key,#4]
|
||||
eor $s2,$i3,$s2,lsl#8
|
||||
ldr $t2,[$key,#8]
|
||||
eor $s3,$t3,$s3,lsl#24
|
||||
ldr $t3,[$key,#12]
|
||||
|
||||
ldr lr,[sp],#4 @ pop lr
|
||||
ldr $t1,[$key,#0]
|
||||
ldr $t2,[$key,#4]
|
||||
ldr $t3,[$key,#8]
|
||||
ldr $i1,[$key,#12]
|
||||
eor $s0,$s0,$t1
|
||||
eor $s1,$s1,$t2
|
||||
eor $s2,$s2,$t3
|
||||
eor $s3,$s3,$i1
|
||||
eor $s0,$s0,$i1
|
||||
eor $s1,$s1,$t1
|
||||
eor $s2,$s2,$t2
|
||||
eor $s3,$s3,$t3
|
||||
|
||||
sub $tbl,$tbl,#1024
|
||||
mov pc,lr @ return
|
||||
ldr pc,[sp],#4 @ pop and return
|
||||
.size _armv4_AES_decrypt,.-_armv4_AES_decrypt
|
||||
.asciz "AES for ARMv4, CRYPTOGAMS by <appro\@openssl.org>"
|
||||
.align 2
|
||||
___
|
||||
|
||||
$code =~ s/\bbx\s+lr\b/.word\t0xe12fff1e/gm; # make it possible to compile with -march=armv4
|
||||
print $code;
|
||||
close STDOUT; # enforce flush
|
||||
|
@@ -16,6 +16,19 @@
|
||||
# at 1/2 of ppc_AES_encrypt speed, while ppc_AES_decrypt_compact -
|
||||
# at 1/3 of ppc_AES_decrypt.
|
||||
|
||||
# February 2010
|
||||
#
|
||||
# Rescheduling instructions to favour Power6 pipeline gives 10%
|
||||
# performance improvement on the platfrom in question (and marginal
|
||||
# improvement even on others). It should be noted that Power6 fails
|
||||
# to process byte in 18 cycles, only in 23, because it fails to issue
|
||||
# 4 load instructions in two cycles, only in 3. As result non-compact
|
||||
# block subroutines are 25% slower than one would expect. Compact
|
||||
# functions scale better, because they have pure computational part,
|
||||
# which scales perfectly with clock frequency. To be specific
|
||||
# ppc_AES_encrypt_compact operates at 42 cycles per byte, while
|
||||
# ppc_AES_decrypt_compact - at 55 (in 64-bit build).
|
||||
|
||||
$flavour = shift;
|
||||
|
||||
if ($flavour =~ /64/) {
|
||||
@@ -376,7 +389,7 @@ $code.=<<___;
|
||||
addi $sp,$sp,$FRAME
|
||||
blr
|
||||
|
||||
.align 4
|
||||
.align 5
|
||||
Lppc_AES_encrypt:
|
||||
lwz $acc00,240($key)
|
||||
lwz $t0,0($key)
|
||||
@@ -397,46 +410,46 @@ Lppc_AES_encrypt:
|
||||
Lenc_loop:
|
||||
rlwinm $acc00,$s0,`32-24+3`,21,28
|
||||
rlwinm $acc01,$s1,`32-24+3`,21,28
|
||||
lwz $t0,0($key)
|
||||
lwz $t1,4($key)
|
||||
rlwinm $acc02,$s2,`32-24+3`,21,28
|
||||
rlwinm $acc03,$s3,`32-24+3`,21,28
|
||||
lwz $t2,8($key)
|
||||
lwz $t3,12($key)
|
||||
lwz $t0,0($key)
|
||||
lwz $t1,4($key)
|
||||
rlwinm $acc04,$s1,`32-16+3`,21,28
|
||||
rlwinm $acc05,$s2,`32-16+3`,21,28
|
||||
lwzx $acc00,$Tbl0,$acc00
|
||||
lwzx $acc01,$Tbl0,$acc01
|
||||
lwz $t2,8($key)
|
||||
lwz $t3,12($key)
|
||||
rlwinm $acc06,$s3,`32-16+3`,21,28
|
||||
rlwinm $acc07,$s0,`32-16+3`,21,28
|
||||
lwzx $acc02,$Tbl0,$acc02
|
||||
lwzx $acc03,$Tbl0,$acc03
|
||||
lwzx $acc00,$Tbl0,$acc00
|
||||
lwzx $acc01,$Tbl0,$acc01
|
||||
rlwinm $acc08,$s2,`32-8+3`,21,28
|
||||
rlwinm $acc09,$s3,`32-8+3`,21,28
|
||||
lwzx $acc04,$Tbl1,$acc04
|
||||
lwzx $acc05,$Tbl1,$acc05
|
||||
lwzx $acc02,$Tbl0,$acc02
|
||||
lwzx $acc03,$Tbl0,$acc03
|
||||
rlwinm $acc10,$s0,`32-8+3`,21,28
|
||||
rlwinm $acc11,$s1,`32-8+3`,21,28
|
||||
lwzx $acc06,$Tbl1,$acc06
|
||||
lwzx $acc07,$Tbl1,$acc07
|
||||
lwzx $acc04,$Tbl1,$acc04
|
||||
lwzx $acc05,$Tbl1,$acc05
|
||||
rlwinm $acc12,$s3,`0+3`,21,28
|
||||
rlwinm $acc13,$s0,`0+3`,21,28
|
||||
lwzx $acc08,$Tbl2,$acc08
|
||||
lwzx $acc09,$Tbl2,$acc09
|
||||
lwzx $acc06,$Tbl1,$acc06
|
||||
lwzx $acc07,$Tbl1,$acc07
|
||||
rlwinm $acc14,$s1,`0+3`,21,28
|
||||
rlwinm $acc15,$s2,`0+3`,21,28
|
||||
lwzx $acc10,$Tbl2,$acc10
|
||||
lwzx $acc11,$Tbl2,$acc11
|
||||
lwzx $acc08,$Tbl2,$acc08
|
||||
lwzx $acc09,$Tbl2,$acc09
|
||||
xor $t0,$t0,$acc00
|
||||
xor $t1,$t1,$acc01
|
||||
lwzx $acc12,$Tbl3,$acc12
|
||||
lwzx $acc13,$Tbl3,$acc13
|
||||
lwzx $acc10,$Tbl2,$acc10
|
||||
lwzx $acc11,$Tbl2,$acc11
|
||||
xor $t2,$t2,$acc02
|
||||
xor $t3,$t3,$acc03
|
||||
lwzx $acc14,$Tbl3,$acc14
|
||||
lwzx $acc15,$Tbl3,$acc15
|
||||
lwzx $acc12,$Tbl3,$acc12
|
||||
lwzx $acc13,$Tbl3,$acc13
|
||||
xor $t0,$t0,$acc04
|
||||
xor $t1,$t1,$acc05
|
||||
lwzx $acc14,$Tbl3,$acc14
|
||||
lwzx $acc15,$Tbl3,$acc15
|
||||
xor $t2,$t2,$acc06
|
||||
xor $t3,$t3,$acc07
|
||||
xor $t0,$t0,$acc08
|
||||
@@ -452,60 +465,60 @@ Lenc_loop:
|
||||
|
||||
addi $Tbl2,$Tbl0,2048
|
||||
nop
|
||||
lwz $acc08,`2048+0`($Tbl0) ! prefetch Te4
|
||||
lwz $acc09,`2048+32`($Tbl0)
|
||||
lwz $acc10,`2048+64`($Tbl0)
|
||||
lwz $acc11,`2048+96`($Tbl0)
|
||||
lwz $acc08,`2048+128`($Tbl0)
|
||||
lwz $acc09,`2048+160`($Tbl0)
|
||||
lwz $acc10,`2048+192`($Tbl0)
|
||||
lwz $acc11,`2048+224`($Tbl0)
|
||||
rlwinm $acc00,$s0,`32-24`,24,31
|
||||
rlwinm $acc01,$s1,`32-24`,24,31
|
||||
lwz $t0,0($key)
|
||||
lwz $t1,4($key)
|
||||
rlwinm $acc02,$s2,`32-24`,24,31
|
||||
rlwinm $acc03,$s3,`32-24`,24,31
|
||||
rlwinm $acc00,$s0,`32-24`,24,31
|
||||
rlwinm $acc01,$s1,`32-24`,24,31
|
||||
lwz $t2,8($key)
|
||||
lwz $t3,12($key)
|
||||
rlwinm $acc02,$s2,`32-24`,24,31
|
||||
rlwinm $acc03,$s3,`32-24`,24,31
|
||||
lwz $acc08,`2048+0`($Tbl0) ! prefetch Te4
|
||||
lwz $acc09,`2048+32`($Tbl0)
|
||||
rlwinm $acc04,$s1,`32-16`,24,31
|
||||
rlwinm $acc05,$s2,`32-16`,24,31
|
||||
lbzx $acc00,$Tbl2,$acc00
|
||||
lbzx $acc01,$Tbl2,$acc01
|
||||
lwz $acc10,`2048+64`($Tbl0)
|
||||
lwz $acc11,`2048+96`($Tbl0)
|
||||
rlwinm $acc06,$s3,`32-16`,24,31
|
||||
rlwinm $acc07,$s0,`32-16`,24,31
|
||||
lbzx $acc02,$Tbl2,$acc02
|
||||
lbzx $acc03,$Tbl2,$acc03
|
||||
lwz $acc12,`2048+128`($Tbl0)
|
||||
lwz $acc13,`2048+160`($Tbl0)
|
||||
rlwinm $acc08,$s2,`32-8`,24,31
|
||||
rlwinm $acc09,$s3,`32-8`,24,31
|
||||
lbzx $acc04,$Tbl2,$acc04
|
||||
lbzx $acc05,$Tbl2,$acc05
|
||||
lwz $acc14,`2048+192`($Tbl0)
|
||||
lwz $acc15,`2048+224`($Tbl0)
|
||||
rlwinm $acc10,$s0,`32-8`,24,31
|
||||
rlwinm $acc11,$s1,`32-8`,24,31
|
||||
lbzx $acc06,$Tbl2,$acc06
|
||||
lbzx $acc07,$Tbl2,$acc07
|
||||
lbzx $acc00,$Tbl2,$acc00
|
||||
lbzx $acc01,$Tbl2,$acc01
|
||||
rlwinm $acc12,$s3,`0`,24,31
|
||||
rlwinm $acc13,$s0,`0`,24,31
|
||||
lbzx $acc08,$Tbl2,$acc08
|
||||
lbzx $acc09,$Tbl2,$acc09
|
||||
lbzx $acc02,$Tbl2,$acc02
|
||||
lbzx $acc03,$Tbl2,$acc03
|
||||
rlwinm $acc14,$s1,`0`,24,31
|
||||
rlwinm $acc15,$s2,`0`,24,31
|
||||
lbzx $acc10,$Tbl2,$acc10
|
||||
lbzx $acc11,$Tbl2,$acc11
|
||||
lbzx $acc04,$Tbl2,$acc04
|
||||
lbzx $acc05,$Tbl2,$acc05
|
||||
rlwinm $s0,$acc00,24,0,7
|
||||
rlwinm $s1,$acc01,24,0,7
|
||||
lbzx $acc12,$Tbl2,$acc12
|
||||
lbzx $acc13,$Tbl2,$acc13
|
||||
lbzx $acc06,$Tbl2,$acc06
|
||||
lbzx $acc07,$Tbl2,$acc07
|
||||
rlwinm $s2,$acc02,24,0,7
|
||||
rlwinm $s3,$acc03,24,0,7
|
||||
lbzx $acc14,$Tbl2,$acc14
|
||||
lbzx $acc15,$Tbl2,$acc15
|
||||
lbzx $acc08,$Tbl2,$acc08
|
||||
lbzx $acc09,$Tbl2,$acc09
|
||||
rlwimi $s0,$acc04,16,8,15
|
||||
rlwimi $s1,$acc05,16,8,15
|
||||
lbzx $acc10,$Tbl2,$acc10
|
||||
lbzx $acc11,$Tbl2,$acc11
|
||||
rlwimi $s2,$acc06,16,8,15
|
||||
rlwimi $s3,$acc07,16,8,15
|
||||
lbzx $acc12,$Tbl2,$acc12
|
||||
lbzx $acc13,$Tbl2,$acc13
|
||||
rlwimi $s0,$acc08,8,16,23
|
||||
rlwimi $s1,$acc09,8,16,23
|
||||
lbzx $acc14,$Tbl2,$acc14
|
||||
lbzx $acc15,$Tbl2,$acc15
|
||||
rlwimi $s2,$acc10,8,16,23
|
||||
rlwimi $s3,$acc11,8,16,23
|
||||
or $s0,$s0,$acc12
|
||||
@@ -542,40 +555,40 @@ Lenc_compact_loop:
|
||||
rlwinm $acc01,$s1,`32-24`,24,31
|
||||
rlwinm $acc02,$s2,`32-24`,24,31
|
||||
rlwinm $acc03,$s3,`32-24`,24,31
|
||||
lbzx $acc00,$Tbl1,$acc00
|
||||
lbzx $acc01,$Tbl1,$acc01
|
||||
rlwinm $acc04,$s1,`32-16`,24,31
|
||||
rlwinm $acc05,$s2,`32-16`,24,31
|
||||
lbzx $acc02,$Tbl1,$acc02
|
||||
lbzx $acc03,$Tbl1,$acc03
|
||||
rlwinm $acc06,$s3,`32-16`,24,31
|
||||
rlwinm $acc07,$s0,`32-16`,24,31
|
||||
lbzx $acc04,$Tbl1,$acc04
|
||||
lbzx $acc05,$Tbl1,$acc05
|
||||
lbzx $acc00,$Tbl1,$acc00
|
||||
lbzx $acc01,$Tbl1,$acc01
|
||||
rlwinm $acc08,$s2,`32-8`,24,31
|
||||
rlwinm $acc09,$s3,`32-8`,24,31
|
||||
lbzx $acc06,$Tbl1,$acc06
|
||||
lbzx $acc07,$Tbl1,$acc07
|
||||
lbzx $acc02,$Tbl1,$acc02
|
||||
lbzx $acc03,$Tbl1,$acc03
|
||||
rlwinm $acc10,$s0,`32-8`,24,31
|
||||
rlwinm $acc11,$s1,`32-8`,24,31
|
||||
lbzx $acc08,$Tbl1,$acc08
|
||||
lbzx $acc09,$Tbl1,$acc09
|
||||
lbzx $acc04,$Tbl1,$acc04
|
||||
lbzx $acc05,$Tbl1,$acc05
|
||||
rlwinm $acc12,$s3,`0`,24,31
|
||||
rlwinm $acc13,$s0,`0`,24,31
|
||||
lbzx $acc10,$Tbl1,$acc10
|
||||
lbzx $acc11,$Tbl1,$acc11
|
||||
lbzx $acc06,$Tbl1,$acc06
|
||||
lbzx $acc07,$Tbl1,$acc07
|
||||
rlwinm $acc14,$s1,`0`,24,31
|
||||
rlwinm $acc15,$s2,`0`,24,31
|
||||
lbzx $acc12,$Tbl1,$acc12
|
||||
lbzx $acc13,$Tbl1,$acc13
|
||||
lbzx $acc08,$Tbl1,$acc08
|
||||
lbzx $acc09,$Tbl1,$acc09
|
||||
rlwinm $s0,$acc00,24,0,7
|
||||
rlwinm $s1,$acc01,24,0,7
|
||||
lbzx $acc14,$Tbl1,$acc14
|
||||
lbzx $acc15,$Tbl1,$acc15
|
||||
lbzx $acc10,$Tbl1,$acc10
|
||||
lbzx $acc11,$Tbl1,$acc11
|
||||
rlwinm $s2,$acc02,24,0,7
|
||||
rlwinm $s3,$acc03,24,0,7
|
||||
lbzx $acc12,$Tbl1,$acc12
|
||||
lbzx $acc13,$Tbl1,$acc13
|
||||
rlwimi $s0,$acc04,16,8,15
|
||||
rlwimi $s1,$acc05,16,8,15
|
||||
lbzx $acc14,$Tbl1,$acc14
|
||||
lbzx $acc15,$Tbl1,$acc15
|
||||
rlwimi $s2,$acc06,16,8,15
|
||||
rlwimi $s3,$acc07,16,8,15
|
||||
rlwimi $s0,$acc08,8,16,23
|
||||
@@ -725,7 +738,7 @@ Lenc_compact_done:
|
||||
addi $sp,$sp,$FRAME
|
||||
blr
|
||||
|
||||
.align 4
|
||||
.align 5
|
||||
Lppc_AES_decrypt:
|
||||
lwz $acc00,240($key)
|
||||
lwz $t0,0($key)
|
||||
@@ -746,46 +759,46 @@ Lppc_AES_decrypt:
|
||||
Ldec_loop:
|
||||
rlwinm $acc00,$s0,`32-24+3`,21,28
|
||||
rlwinm $acc01,$s1,`32-24+3`,21,28
|
||||
lwz $t0,0($key)
|
||||
lwz $t1,4($key)
|
||||
rlwinm $acc02,$s2,`32-24+3`,21,28
|
||||
rlwinm $acc03,$s3,`32-24+3`,21,28
|
||||
lwz $t2,8($key)
|
||||
lwz $t3,12($key)
|
||||
lwz $t0,0($key)
|
||||
lwz $t1,4($key)
|
||||
rlwinm $acc04,$s3,`32-16+3`,21,28
|
||||
rlwinm $acc05,$s0,`32-16+3`,21,28
|
||||
lwzx $acc00,$Tbl0,$acc00
|
||||
lwzx $acc01,$Tbl0,$acc01
|
||||
lwz $t2,8($key)
|
||||
lwz $t3,12($key)
|
||||
rlwinm $acc06,$s1,`32-16+3`,21,28
|
||||
rlwinm $acc07,$s2,`32-16+3`,21,28
|
||||
lwzx $acc02,$Tbl0,$acc02
|
||||
lwzx $acc03,$Tbl0,$acc03
|
||||
lwzx $acc00,$Tbl0,$acc00
|
||||
lwzx $acc01,$Tbl0,$acc01
|
||||
rlwinm $acc08,$s2,`32-8+3`,21,28
|
||||
rlwinm $acc09,$s3,`32-8+3`,21,28
|
||||
lwzx $acc04,$Tbl1,$acc04
|
||||
lwzx $acc05,$Tbl1,$acc05
|
||||
lwzx $acc02,$Tbl0,$acc02
|
||||
lwzx $acc03,$Tbl0,$acc03
|
||||
rlwinm $acc10,$s0,`32-8+3`,21,28
|
||||
rlwinm $acc11,$s1,`32-8+3`,21,28
|
||||
lwzx $acc06,$Tbl1,$acc06
|
||||
lwzx $acc07,$Tbl1,$acc07
|
||||
lwzx $acc04,$Tbl1,$acc04
|
||||
lwzx $acc05,$Tbl1,$acc05
|
||||
rlwinm $acc12,$s1,`0+3`,21,28
|
||||
rlwinm $acc13,$s2,`0+3`,21,28
|
||||
lwzx $acc08,$Tbl2,$acc08
|
||||
lwzx $acc09,$Tbl2,$acc09
|
||||
lwzx $acc06,$Tbl1,$acc06
|
||||
lwzx $acc07,$Tbl1,$acc07
|
||||
rlwinm $acc14,$s3,`0+3`,21,28
|
||||
rlwinm $acc15,$s0,`0+3`,21,28
|
||||
lwzx $acc10,$Tbl2,$acc10
|
||||
lwzx $acc11,$Tbl2,$acc11
|
||||
lwzx $acc08,$Tbl2,$acc08
|
||||
lwzx $acc09,$Tbl2,$acc09
|
||||
xor $t0,$t0,$acc00
|
||||
xor $t1,$t1,$acc01
|
||||
lwzx $acc12,$Tbl3,$acc12
|
||||
lwzx $acc13,$Tbl3,$acc13
|
||||
lwzx $acc10,$Tbl2,$acc10
|
||||
lwzx $acc11,$Tbl2,$acc11
|
||||
xor $t2,$t2,$acc02
|
||||
xor $t3,$t3,$acc03
|
||||
lwzx $acc14,$Tbl3,$acc14
|
||||
lwzx $acc15,$Tbl3,$acc15
|
||||
lwzx $acc12,$Tbl3,$acc12
|
||||
lwzx $acc13,$Tbl3,$acc13
|
||||
xor $t0,$t0,$acc04
|
||||
xor $t1,$t1,$acc05
|
||||
lwzx $acc14,$Tbl3,$acc14
|
||||
lwzx $acc15,$Tbl3,$acc15
|
||||
xor $t2,$t2,$acc06
|
||||
xor $t3,$t3,$acc07
|
||||
xor $t0,$t0,$acc08
|
||||
@@ -801,56 +814,56 @@ Ldec_loop:
|
||||
|
||||
addi $Tbl2,$Tbl0,2048
|
||||
nop
|
||||
lwz $acc08,`2048+0`($Tbl0) ! prefetch Td4
|
||||
lwz $acc09,`2048+32`($Tbl0)
|
||||
lwz $acc10,`2048+64`($Tbl0)
|
||||
lwz $acc11,`2048+96`($Tbl0)
|
||||
lwz $acc08,`2048+128`($Tbl0)
|
||||
lwz $acc09,`2048+160`($Tbl0)
|
||||
lwz $acc10,`2048+192`($Tbl0)
|
||||
lwz $acc11,`2048+224`($Tbl0)
|
||||
rlwinm $acc00,$s0,`32-24`,24,31
|
||||
rlwinm $acc01,$s1,`32-24`,24,31
|
||||
lwz $t0,0($key)
|
||||
lwz $t1,4($key)
|
||||
rlwinm $acc02,$s2,`32-24`,24,31
|
||||
rlwinm $acc03,$s3,`32-24`,24,31
|
||||
rlwinm $acc00,$s0,`32-24`,24,31
|
||||
rlwinm $acc01,$s1,`32-24`,24,31
|
||||
lwz $t2,8($key)
|
||||
lwz $t3,12($key)
|
||||
rlwinm $acc02,$s2,`32-24`,24,31
|
||||
rlwinm $acc03,$s3,`32-24`,24,31
|
||||
lwz $acc08,`2048+0`($Tbl0) ! prefetch Td4
|
||||
lwz $acc09,`2048+32`($Tbl0)
|
||||
rlwinm $acc04,$s3,`32-16`,24,31
|
||||
rlwinm $acc05,$s0,`32-16`,24,31
|
||||
lwz $acc10,`2048+64`($Tbl0)
|
||||
lwz $acc11,`2048+96`($Tbl0)
|
||||
lbzx $acc00,$Tbl2,$acc00
|
||||
lbzx $acc01,$Tbl2,$acc01
|
||||
lwz $acc12,`2048+128`($Tbl0)
|
||||
lwz $acc13,`2048+160`($Tbl0)
|
||||
rlwinm $acc06,$s1,`32-16`,24,31
|
||||
rlwinm $acc07,$s2,`32-16`,24,31
|
||||
lbzx $acc02,$Tbl2,$acc02
|
||||
lbzx $acc03,$Tbl2,$acc03
|
||||
lwz $acc14,`2048+192`($Tbl0)
|
||||
lwz $acc15,`2048+224`($Tbl0)
|
||||
rlwinm $acc08,$s2,`32-8`,24,31
|
||||
rlwinm $acc09,$s3,`32-8`,24,31
|
||||
lbzx $acc04,$Tbl2,$acc04
|
||||
lbzx $acc05,$Tbl2,$acc05
|
||||
lbzx $acc02,$Tbl2,$acc02
|
||||
lbzx $acc03,$Tbl2,$acc03
|
||||
rlwinm $acc10,$s0,`32-8`,24,31
|
||||
rlwinm $acc11,$s1,`32-8`,24,31
|
||||
lbzx $acc06,$Tbl2,$acc06
|
||||
lbzx $acc07,$Tbl2,$acc07
|
||||
lbzx $acc04,$Tbl2,$acc04
|
||||
lbzx $acc05,$Tbl2,$acc05
|
||||
rlwinm $acc12,$s1,`0`,24,31
|
||||
rlwinm $acc13,$s2,`0`,24,31
|
||||
lbzx $acc08,$Tbl2,$acc08
|
||||
lbzx $acc09,$Tbl2,$acc09
|
||||
lbzx $acc06,$Tbl2,$acc06
|
||||
lbzx $acc07,$Tbl2,$acc07
|
||||
rlwinm $acc14,$s3,`0`,24,31
|
||||
rlwinm $acc15,$s0,`0`,24,31
|
||||
lbzx $acc10,$Tbl2,$acc10
|
||||
lbzx $acc11,$Tbl2,$acc11
|
||||
lbzx $acc08,$Tbl2,$acc08
|
||||
lbzx $acc09,$Tbl2,$acc09
|
||||
rlwinm $s0,$acc00,24,0,7
|
||||
rlwinm $s1,$acc01,24,0,7
|
||||
lbzx $acc12,$Tbl2,$acc12
|
||||
lbzx $acc13,$Tbl2,$acc13
|
||||
lbzx $acc10,$Tbl2,$acc10
|
||||
lbzx $acc11,$Tbl2,$acc11
|
||||
rlwinm $s2,$acc02,24,0,7
|
||||
rlwinm $s3,$acc03,24,0,7
|
||||
lbzx $acc14,$Tbl2,$acc14
|
||||
lbzx $acc15,$Tbl2,$acc15
|
||||
lbzx $acc12,$Tbl2,$acc12
|
||||
lbzx $acc13,$Tbl2,$acc13
|
||||
rlwimi $s0,$acc04,16,8,15
|
||||
rlwimi $s1,$acc05,16,8,15
|
||||
lbzx $acc14,$Tbl2,$acc14
|
||||
lbzx $acc15,$Tbl2,$acc15
|
||||
rlwimi $s2,$acc06,16,8,15
|
||||
rlwimi $s3,$acc07,16,8,15
|
||||
rlwimi $s0,$acc08,8,16,23
|
||||
@@ -897,40 +910,40 @@ Ldec_compact_loop:
|
||||
rlwinm $acc01,$s1,`32-24`,24,31
|
||||
rlwinm $acc02,$s2,`32-24`,24,31
|
||||
rlwinm $acc03,$s3,`32-24`,24,31
|
||||
lbzx $acc00,$Tbl1,$acc00
|
||||
lbzx $acc01,$Tbl1,$acc01
|
||||
rlwinm $acc04,$s3,`32-16`,24,31
|
||||
rlwinm $acc05,$s0,`32-16`,24,31
|
||||
lbzx $acc02,$Tbl1,$acc02
|
||||
lbzx $acc03,$Tbl1,$acc03
|
||||
rlwinm $acc06,$s1,`32-16`,24,31
|
||||
rlwinm $acc07,$s2,`32-16`,24,31
|
||||
lbzx $acc04,$Tbl1,$acc04
|
||||
lbzx $acc05,$Tbl1,$acc05
|
||||
lbzx $acc00,$Tbl1,$acc00
|
||||
lbzx $acc01,$Tbl1,$acc01
|
||||
rlwinm $acc08,$s2,`32-8`,24,31
|
||||
rlwinm $acc09,$s3,`32-8`,24,31
|
||||
lbzx $acc06,$Tbl1,$acc06
|
||||
lbzx $acc07,$Tbl1,$acc07
|
||||
lbzx $acc02,$Tbl1,$acc02
|
||||
lbzx $acc03,$Tbl1,$acc03
|
||||
rlwinm $acc10,$s0,`32-8`,24,31
|
||||
rlwinm $acc11,$s1,`32-8`,24,31
|
||||
lbzx $acc08,$Tbl1,$acc08
|
||||
lbzx $acc09,$Tbl1,$acc09
|
||||
lbzx $acc04,$Tbl1,$acc04
|
||||
lbzx $acc05,$Tbl1,$acc05
|
||||
rlwinm $acc12,$s1,`0`,24,31
|
||||
rlwinm $acc13,$s2,`0`,24,31
|
||||
lbzx $acc10,$Tbl1,$acc10
|
||||
lbzx $acc11,$Tbl1,$acc11
|
||||
lbzx $acc06,$Tbl1,$acc06
|
||||
lbzx $acc07,$Tbl1,$acc07
|
||||
rlwinm $acc14,$s3,`0`,24,31
|
||||
rlwinm $acc15,$s0,`0`,24,31
|
||||
lbzx $acc12,$Tbl1,$acc12
|
||||
lbzx $acc13,$Tbl1,$acc13
|
||||
lbzx $acc08,$Tbl1,$acc08
|
||||
lbzx $acc09,$Tbl1,$acc09
|
||||
rlwinm $s0,$acc00,24,0,7
|
||||
rlwinm $s1,$acc01,24,0,7
|
||||
lbzx $acc14,$Tbl1,$acc14
|
||||
lbzx $acc15,$Tbl1,$acc15
|
||||
lbzx $acc10,$Tbl1,$acc10
|
||||
lbzx $acc11,$Tbl1,$acc11
|
||||
rlwinm $s2,$acc02,24,0,7
|
||||
rlwinm $s3,$acc03,24,0,7
|
||||
lbzx $acc12,$Tbl1,$acc12
|
||||
lbzx $acc13,$Tbl1,$acc13
|
||||
rlwimi $s0,$acc04,16,8,15
|
||||
rlwimi $s1,$acc05,16,8,15
|
||||
lbzx $acc14,$Tbl1,$acc14
|
||||
lbzx $acc15,$Tbl1,$acc15
|
||||
rlwimi $s2,$acc06,16,8,15
|
||||
rlwimi $s3,$acc07,16,8,15
|
||||
rlwimi $s0,$acc08,8,16,23
|
||||
|
@@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env perl
|
||||
print <<'___';
|
||||
.text
|
||||
|
||||
.set noat
|
||||
@@ -68,9 +70,9 @@ OPENSSL_wipe_cpu:
|
||||
OPENSSL_atomic_add:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
1: ldl_l $0,($16)
|
||||
1: ldl_l $0,0($16)
|
||||
addl $0,$17,$1
|
||||
stl_c $1,($16)
|
||||
stl_c $1,0($16)
|
||||
beq $1,1b
|
||||
addl $0,$17,$0
|
||||
ret ($26)
|
||||
@@ -90,25 +92,26 @@ OPENSSL_rdtsc:
|
||||
OPENSSL_cleanse:
|
||||
.frame $30,0,$26
|
||||
.prologue 0
|
||||
beq $17,.Ldone
|
||||
and $16,7,$0
|
||||
bic $17,7,$at
|
||||
beq $at,.Little
|
||||
beq $0,.Laligned
|
||||
|
||||
.Little:
|
||||
subq $0,8,$0
|
||||
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
|
||||
addq $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:
|
||||
@@ -117,8 +120,7 @@ OPENSSL_cleanse:
|
||||
lda $16,8($16)
|
||||
bic $17,7,$at
|
||||
bne $at,.Laligned
|
||||
beq $17,.Ldone
|
||||
mov $17,$0
|
||||
br .Little
|
||||
bne $17,.Little
|
||||
.Ldone: ret ($26)
|
||||
.end OPENSSL_cleanse
|
||||
___
|
@@ -273,7 +273,7 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
|
||||
{
|
||||
ASN1_INTEGER *ret=NULL;
|
||||
const unsigned char *p;
|
||||
unsigned char *to,*s;
|
||||
unsigned char *s;
|
||||
long len;
|
||||
int inf,tag,xclass;
|
||||
int i;
|
||||
@@ -308,7 +308,6 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
|
||||
i=ERR_R_MALLOC_FAILURE;
|
||||
goto err;
|
||||
}
|
||||
to=s;
|
||||
ret->type=V_ASN1_INTEGER;
|
||||
if(len) {
|
||||
if ((*p == 0) && (len != 1))
|
||||
|
@@ -139,7 +139,7 @@ int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
|
||||
ASN1err(ASN1_F_A2D_ASN1_OBJECT,ASN1_R_INVALID_DIGIT);
|
||||
goto err;
|
||||
}
|
||||
if (!use_bn && l > (ULONG_MAX / 10L))
|
||||
if (!use_bn && l >= ((ULONG_MAX - 80) / 10L))
|
||||
{
|
||||
use_bn = 1;
|
||||
if (!bl)
|
||||
@@ -290,12 +290,12 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
|
||||
const unsigned char *p;
|
||||
unsigned char *data;
|
||||
int i;
|
||||
/* Sanity check OID encoding: can't have 0x80 in subidentifiers, see:
|
||||
* X.690 8.19.2
|
||||
/* Sanity check OID encoding: can't have leading 0x80 in
|
||||
* subidentifiers, see: X.690 8.19.2
|
||||
*/
|
||||
for (i = 0, p = *pp + 1; i < len - 1; i++, p++)
|
||||
for (i = 0, p = *pp; i < len; i++, p++)
|
||||
{
|
||||
if (*p == 0x80)
|
||||
if (*p == 0x80 && (!i || !(p[-1] & 0x80)))
|
||||
{
|
||||
ASN1err(ASN1_F_C2I_ASN1_OBJECT,ASN1_R_INVALID_OBJECT_ENCODING);
|
||||
return NULL;
|
||||
|
@@ -74,6 +74,11 @@
|
||||
|
||||
#define CHARTYPE_BS_ESC (ASN1_STRFLGS_ESC_2253 | CHARTYPE_FIRST_ESC_2253 | CHARTYPE_LAST_ESC_2253)
|
||||
|
||||
#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \
|
||||
ASN1_STRFLGS_ESC_QUOTE | \
|
||||
ASN1_STRFLGS_ESC_CTRL | \
|
||||
ASN1_STRFLGS_ESC_MSB)
|
||||
|
||||
|
||||
/* Three IO functions for sending data to memory, a BIO and
|
||||
* and a FILE pointer.
|
||||
@@ -148,6 +153,13 @@ static int do_esc_char(unsigned long c, unsigned char flags, char *do_quotes, ch
|
||||
if(!io_ch(arg, tmphex, 3)) return -1;
|
||||
return 3;
|
||||
}
|
||||
/* If we get this far and do any escaping at all must escape
|
||||
* the escape character itself: backslash.
|
||||
*/
|
||||
if (chtmp == '\\' && flags & ESC_FLAGS) {
|
||||
if(!io_ch(arg, "\\\\", 2)) return -1;
|
||||
return 2;
|
||||
}
|
||||
if(!io_ch(arg, &chtmp, 1)) return -1;
|
||||
return 1;
|
||||
}
|
||||
@@ -292,11 +304,6 @@ static const signed char tag2nbyte[] = {
|
||||
4, -1, 2 /* 28-30 */
|
||||
};
|
||||
|
||||
#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \
|
||||
ASN1_STRFLGS_ESC_QUOTE | \
|
||||
ASN1_STRFLGS_ESC_CTRL | \
|
||||
ASN1_STRFLGS_ESC_MSB)
|
||||
|
||||
/* This is the main function, print out an
|
||||
* ASN1_STRING taking note of various escape
|
||||
* and display options. Returns number of
|
||||
|
@@ -95,7 +95,7 @@ unsigned long ASN1_STRING_get_default_mask(void)
|
||||
* default: the default value, Printable, T61, BMP.
|
||||
*/
|
||||
|
||||
int ASN1_STRING_set_default_mask_asc(char *p)
|
||||
int ASN1_STRING_set_default_mask_asc(const char *p)
|
||||
{
|
||||
unsigned long mask;
|
||||
char *end;
|
||||
|
@@ -172,7 +172,6 @@ static const EVP_PKEY_ASN1_METHOD *pkey_asn1_find(int type)
|
||||
const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type)
|
||||
{
|
||||
const EVP_PKEY_ASN1_METHOD *t;
|
||||
ENGINE *e;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@@ -184,6 +183,7 @@ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type)
|
||||
if (pe)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e;
|
||||
/* type will contain the final unaliased type */
|
||||
e = ENGINE_get_pkey_asn1_meth_engine(type);
|
||||
if (e)
|
||||
|
@@ -1067,7 +1067,7 @@ ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
|
||||
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
|
||||
|
||||
void ASN1_STRING_set_default_mask(unsigned long mask);
|
||||
int ASN1_STRING_set_default_mask_asc(char *p);
|
||||
int ASN1_STRING_set_default_mask_asc(const char *p);
|
||||
unsigned long ASN1_STRING_get_default_mask(void);
|
||||
int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
|
||||
int inform, unsigned long mask);
|
||||
|
@@ -57,9 +57,6 @@
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
#ifndef OPENSSL_SYSNAME_NETWARE
|
||||
#include <memory.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
|
||||
/* Experimental NDEF ASN1 BIO support routines */
|
||||
|
@@ -242,7 +242,7 @@ RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
|
||||
int sgckey)
|
||||
{
|
||||
RSA *ret=NULL;
|
||||
const unsigned char *p, *kp;
|
||||
const unsigned char *p;
|
||||
NETSCAPE_ENCRYPTED_PKEY *enckey = NULL;
|
||||
|
||||
p = *pp;
|
||||
@@ -265,7 +265,6 @@ RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
|
||||
ASN1err(ASN1_F_D2I_RSA_NET,ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM);
|
||||
goto err;
|
||||
}
|
||||
kp = enckey->enckey->digest->data;
|
||||
if (cb == NULL)
|
||||
cb=EVP_read_pw_string;
|
||||
if ((ret=d2i_RSA_NET_2(a, enckey->enckey->digest,cb, sgckey)) == NULL) goto err;
|
||||
|
@@ -87,7 +87,7 @@ int X509_CRL_print(BIO *out, X509_CRL *x)
|
||||
STACK_OF(X509_REVOKED) *rev;
|
||||
X509_REVOKED *r;
|
||||
long l;
|
||||
int i, n;
|
||||
int i;
|
||||
char *p;
|
||||
|
||||
BIO_printf(out, "Certificate Revocation List (CRL):\n");
|
||||
@@ -107,7 +107,6 @@ int X509_CRL_print(BIO *out, X509_CRL *x)
|
||||
else BIO_printf(out,"NONE");
|
||||
BIO_printf(out,"\n");
|
||||
|
||||
n=X509_CRL_get_ext_count(x);
|
||||
X509V3_extensions_print(out, "CRL extensions",
|
||||
x->crl->extensions, 0, 8);
|
||||
|
||||
|
@@ -168,7 +168,7 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
int i;
|
||||
int otag;
|
||||
int ret = 0;
|
||||
ASN1_VALUE *pchval, **pchptr, *ptmpval;
|
||||
ASN1_VALUE **pchptr, *ptmpval;
|
||||
if (!pval)
|
||||
return 0;
|
||||
if (aux && aux->asn1_cb)
|
||||
@@ -319,7 +319,6 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
goto err;
|
||||
}
|
||||
/* CHOICE type, try each possibility in turn */
|
||||
pchval = NULL;
|
||||
p = *in;
|
||||
for (i = 0, tt=it->templates; i < it->tcount; i++, tt++)
|
||||
{
|
||||
|
@@ -214,7 +214,9 @@ static int x509_name_ex_d2i(ASN1_VALUE **val,
|
||||
*val = nm.a;
|
||||
*in = p;
|
||||
return ret;
|
||||
err:
|
||||
err:
|
||||
if (nm.x != NULL)
|
||||
X509_NAME_free(nm.x);
|
||||
ASN1err(ASN1_F_X509_NAME_EX_D2I, ERR_R_NESTED_ASN1_ERROR);
|
||||
return 0;
|
||||
}
|
||||
@@ -464,7 +466,8 @@ static int asn1_string_canon(ASN1_STRING *out, ASN1_STRING *in)
|
||||
}
|
||||
else
|
||||
{
|
||||
*to++ = tolower(*from++);
|
||||
*to++ = tolower(*from);
|
||||
from++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
@@ -63,7 +63,7 @@
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
ASN1_SEQUENCE(X509_CINF) = {
|
||||
ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = {
|
||||
ASN1_EXP_OPT(X509_CINF, version, ASN1_INTEGER, 0),
|
||||
ASN1_SIMPLE(X509_CINF, serialNumber, ASN1_INTEGER),
|
||||
ASN1_SIMPLE(X509_CINF, signature, X509_ALGOR),
|
||||
@@ -74,7 +74,7 @@ ASN1_SEQUENCE(X509_CINF) = {
|
||||
ASN1_IMP_OPT(X509_CINF, issuerUID, ASN1_BIT_STRING, 1),
|
||||
ASN1_IMP_OPT(X509_CINF, subjectUID, ASN1_BIT_STRING, 2),
|
||||
ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3)
|
||||
} ASN1_SEQUENCE_END(X509_CINF)
|
||||
} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF)
|
||||
|
||||
IMPLEMENT_ASN1_FUNCTIONS(X509_CINF)
|
||||
/* X509 top level structure needs a bit of customisation */
|
||||
|
@@ -551,7 +551,30 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
|
||||
#ifdef __DJGPP__
|
||||
i=ioctlsocket(fd,type,(char *)arg);
|
||||
#else
|
||||
i=ioctlsocket(fd,type,arg);
|
||||
# if defined(OPENSSL_SYS_VMS)
|
||||
/* 2011-02-18 SMS.
|
||||
* VMS ioctl() can't tolerate a 64-bit "void *arg", but we
|
||||
* observe that all the consumers pass in an "unsigned long *",
|
||||
* so we arrange a local copy with a short pointer, and use
|
||||
* that, instead.
|
||||
*/
|
||||
# if __INITIAL_POINTER_SIZE == 64
|
||||
# define ARG arg_32p
|
||||
# pragma pointer_size save
|
||||
# pragma pointer_size 32
|
||||
unsigned long arg_32;
|
||||
unsigned long *arg_32p;
|
||||
# pragma pointer_size restore
|
||||
arg_32p = &arg_32;
|
||||
arg_32 = *((unsigned long *) arg);
|
||||
# else /* __INITIAL_POINTER_SIZE == 64 */
|
||||
# define ARG arg
|
||||
# endif /* __INITIAL_POINTER_SIZE == 64 [else] */
|
||||
# else /* defined(OPENSSL_SYS_VMS) */
|
||||
# define ARG arg
|
||||
# endif /* defined(OPENSSL_SYS_VMS) [else] */
|
||||
|
||||
i=ioctlsocket(fd,type,ARG);
|
||||
#endif /* __DJGPP__ */
|
||||
if (i < 0)
|
||||
SYSerr(SYS_F_IOCTLSOCKET,get_last_socket_error());
|
||||
@@ -660,6 +683,7 @@ int BIO_get_accept_socket(char *host, int bind_mode)
|
||||
* note that commonly IPv6 wildchard socket can service
|
||||
* IPv4 connections just as well... */
|
||||
memset(&hint,0,sizeof(hint));
|
||||
hint.ai_flags = AI_PASSIVE;
|
||||
if (h)
|
||||
{
|
||||
if (strchr(h,':'))
|
||||
@@ -672,7 +696,10 @@ int BIO_get_accept_socket(char *host, int bind_mode)
|
||||
#endif
|
||||
}
|
||||
else if (h[0]=='*' && h[1]=='\0')
|
||||
{
|
||||
hint.ai_family = AF_INET;
|
||||
h=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if ((*p_getaddrinfo.f)(h,p,&hint,&res)) break;
|
||||
@@ -731,7 +758,14 @@ again:
|
||||
#ifdef SO_REUSEADDR
|
||||
err_num=get_last_socket_error();
|
||||
if ((bind_mode == BIO_BIND_REUSEADDR_IF_UNUSED) &&
|
||||
#ifdef OPENSSL_SYS_WINDOWS
|
||||
/* Some versions of Windows define EADDRINUSE to
|
||||
* a dummy value.
|
||||
*/
|
||||
(err_num == WSAEADDRINUSE))
|
||||
#else
|
||||
(err_num == EADDRINUSE))
|
||||
#endif
|
||||
{
|
||||
client = server;
|
||||
if (h == NULL || strcmp(h,"*") == 0)
|
||||
|
@@ -125,7 +125,6 @@ static int nbiof_free(BIO *a)
|
||||
|
||||
static int nbiof_read(BIO *b, char *out, int outl)
|
||||
{
|
||||
NBIO_TEST *nt;
|
||||
int ret=0;
|
||||
#if 1
|
||||
int num;
|
||||
@@ -134,7 +133,6 @@ static int nbiof_read(BIO *b, char *out, int outl)
|
||||
|
||||
if (out == NULL) return(0);
|
||||
if (b->next_bio == NULL) return(0);
|
||||
nt=(NBIO_TEST *)b->ptr;
|
||||
|
||||
BIO_clear_retry_flags(b);
|
||||
#if 1
|
||||
|
@@ -110,7 +110,7 @@ int BIO_set(BIO *bio, BIO_METHOD *method)
|
||||
|
||||
int BIO_free(BIO *a)
|
||||
{
|
||||
int ret=0,i;
|
||||
int i;
|
||||
|
||||
if (a == NULL) return(0);
|
||||
|
||||
@@ -133,7 +133,7 @@ int BIO_free(BIO *a)
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, a, &a->ex_data);
|
||||
|
||||
if ((a->method == NULL) || (a->method->destroy == NULL)) return(1);
|
||||
ret=a->method->destroy(a);
|
||||
a->method->destroy(a);
|
||||
OPENSSL_free(a);
|
||||
return(1);
|
||||
}
|
||||
|
@@ -340,7 +340,6 @@ static int acpt_write(BIO *b, const char *in, int inl)
|
||||
|
||||
static long acpt_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
{
|
||||
BIO *dbio;
|
||||
int *ip;
|
||||
long ret=1;
|
||||
BIO_ACCEPT *data;
|
||||
@@ -437,8 +436,8 @@ static long acpt_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
ret=(long)data->bind_mode;
|
||||
break;
|
||||
case BIO_CTRL_DUP:
|
||||
dbio=(BIO *)ptr;
|
||||
/* if (data->param_port) EAY EAY
|
||||
/* dbio=(BIO *)ptr;
|
||||
if (data->param_port) EAY EAY
|
||||
BIO_set_port(dbio,data->param_port);
|
||||
if (data->param_hostname)
|
||||
BIO_set_hostname(dbio,data->param_hostname);
|
||||
|
@@ -57,7 +57,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_NO_DGRAM
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
@@ -65,6 +64,7 @@
|
||||
#include "cryptlib.h"
|
||||
|
||||
#include <openssl/bio.h>
|
||||
#ifndef OPENSSL_NO_DGRAM
|
||||
|
||||
#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
|
||||
#include <sys/timeb.h>
|
||||
@@ -308,7 +308,6 @@ static int dgram_read(BIO *b, char *out, int outl)
|
||||
OPENSSL_assert(sa.len.s<=sizeof(sa.peer));
|
||||
sa.len.i = (int)sa.len.s;
|
||||
}
|
||||
dgram_reset_rcv_timeout(b);
|
||||
|
||||
if ( ! data->connected && ret >= 0)
|
||||
BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, &sa.peer);
|
||||
@@ -322,6 +321,8 @@ static int dgram_read(BIO *b, char *out, int outl)
|
||||
data->_errno = get_last_socket_error();
|
||||
}
|
||||
}
|
||||
|
||||
dgram_reset_rcv_timeout(b);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
@@ -340,7 +341,7 @@ static int dgram_write(BIO *b, const char *in, int inl)
|
||||
|
||||
if (data->peer.sa.sa_family == AF_INET)
|
||||
peerlen = sizeof(data->peer.sa_in);
|
||||
#if OPENSSL_USE_IVP6
|
||||
#if OPENSSL_USE_IPV6
|
||||
else if (data->peer.sa.sa_family == AF_INET6)
|
||||
peerlen = sizeof(data->peer.sa_in6);
|
||||
#endif
|
||||
@@ -745,9 +746,13 @@ static int BIO_dgram_should_retry(int i)
|
||||
{
|
||||
err=get_last_socket_error();
|
||||
|
||||
#if defined(OPENSSL_SYS_WINDOWS) && 0 /* more microsoft stupidity? perhaps not? Ben 4/1/99 */
|
||||
if ((i == -1) && (err == 0))
|
||||
return(1);
|
||||
#if defined(OPENSSL_SYS_WINDOWS)
|
||||
/* If the socket return value (i) is -1
|
||||
* and err is unexpectedly 0 at this point,
|
||||
* the error code was overwritten by
|
||||
* another system call before this error
|
||||
* handling is called.
|
||||
*/
|
||||
#endif
|
||||
|
||||
return(BIO_dgram_non_fatal_error(err));
|
||||
@@ -810,7 +815,6 @@ int BIO_dgram_non_fatal_error(int err)
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void get_current_time(struct timeval *t)
|
||||
{
|
||||
@@ -828,3 +832,5 @@ static void get_current_time(struct timeval *t)
|
||||
gettimeofday(t, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -118,10 +118,53 @@ static BIO_METHOD methods_filep=
|
||||
|
||||
BIO *BIO_new_file(const char *filename, const char *mode)
|
||||
{
|
||||
BIO *ret;
|
||||
FILE *file;
|
||||
BIO *ret;
|
||||
FILE *file=NULL;
|
||||
|
||||
if ((file=fopen(filename,mode)) == NULL)
|
||||
#if defined(_WIN32) && defined(CP_UTF8)
|
||||
int sz, len_0 = (int)strlen(filename)+1;
|
||||
DWORD flags;
|
||||
|
||||
/*
|
||||
* Basically there are three cases to cover: a) filename is
|
||||
* pure ASCII string; b) actual UTF-8 encoded string and
|
||||
* c) locale-ized string, i.e. one containing 8-bit
|
||||
* characters that are meaningful in current system locale.
|
||||
* If filename is pure ASCII or real UTF-8 encoded string,
|
||||
* MultiByteToWideChar succeeds and _wfopen works. If
|
||||
* filename is locale-ized string, chances are that
|
||||
* MultiByteToWideChar fails reporting
|
||||
* ERROR_NO_UNICODE_TRANSLATION, in which case we fall
|
||||
* back to fopen...
|
||||
*/
|
||||
if ((sz=MultiByteToWideChar(CP_UTF8,(flags=MB_ERR_INVALID_CHARS),
|
||||
filename,len_0,NULL,0))>0 ||
|
||||
(GetLastError()==ERROR_INVALID_FLAGS &&
|
||||
(sz=MultiByteToWideChar(CP_UTF8,(flags=0),
|
||||
filename,len_0,NULL,0))>0)
|
||||
)
|
||||
{
|
||||
WCHAR wmode[8];
|
||||
WCHAR *wfilename = _alloca(sz*sizeof(WCHAR));
|
||||
|
||||
if (MultiByteToWideChar(CP_UTF8,flags,
|
||||
filename,len_0,wfilename,sz) &&
|
||||
MultiByteToWideChar(CP_UTF8,0,mode,strlen(mode)+1,
|
||||
wmode,sizeof(wmode)/sizeof(wmode[0])) &&
|
||||
(file=_wfopen(wfilename,wmode))==NULL &&
|
||||
(errno==ENOENT || errno==EBADF)
|
||||
) /* UTF-8 decode succeeded, but no file, filename
|
||||
* could still have been locale-ized... */
|
||||
file = fopen(filename,mode);
|
||||
}
|
||||
else if (GetLastError()==ERROR_NO_UNICODE_TRANSLATION)
|
||||
{
|
||||
file = fopen(filename,mode);
|
||||
}
|
||||
#else
|
||||
file=fopen(filename,mode);
|
||||
#endif
|
||||
if (file == NULL)
|
||||
{
|
||||
SYSerr(SYS_F_FOPEN,get_last_sys_error());
|
||||
ERR_add_error_data(5,"fopen('",filename,"','",mode,"')");
|
||||
@@ -272,9 +315,9 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
BIO_clear_flags(b,BIO_FLAGS_UPLINK);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef UP_fsetmode
|
||||
#ifdef UP_fsetmod
|
||||
if (b->flags&BIO_FLAGS_UPLINK)
|
||||
UP_fsetmode(b->ptr,num&BIO_FP_TEXT?'t':'b');
|
||||
UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b'));
|
||||
else
|
||||
#endif
|
||||
{
|
||||
|
@@ -75,6 +75,15 @@
|
||||
# include <descrip.h>
|
||||
# include <lib$routines.h>
|
||||
# include <starlet.h>
|
||||
/* Some compiler options may mask the declaration of "_malloc32". */
|
||||
# if __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE
|
||||
# if __INITIAL_POINTER_SIZE == 64
|
||||
# pragma pointer_size save
|
||||
# pragma pointer_size 32
|
||||
void * _malloc32 (__size_t);
|
||||
# pragma pointer_size restore
|
||||
# endif /* __INITIAL_POINTER_SIZE == 64 */
|
||||
# endif /* __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE */
|
||||
#elif defined(__ultrix)
|
||||
# include <sys/syslog.h>
|
||||
#elif defined(OPENSSL_SYS_NETWARE)
|
||||
@@ -300,7 +309,24 @@ static void xopenlog(BIO* bp, char* name, int level)
|
||||
static void xsyslog(BIO *bp, int priority, const char *string)
|
||||
{
|
||||
struct dsc$descriptor_s opc_dsc;
|
||||
|
||||
/* Arrange 32-bit pointer to opcdef buffer and malloc(), if needed. */
|
||||
#if __INITIAL_POINTER_SIZE == 64
|
||||
# pragma pointer_size save
|
||||
# pragma pointer_size 32
|
||||
# define OPCDEF_TYPE __char_ptr32
|
||||
# define OPCDEF_MALLOC _malloc32
|
||||
#else /* __INITIAL_POINTER_SIZE == 64 */
|
||||
# define OPCDEF_TYPE char *
|
||||
# define OPCDEF_MALLOC OPENSSL_malloc
|
||||
#endif /* __INITIAL_POINTER_SIZE == 64 [else] */
|
||||
|
||||
struct opcdef *opcdef_p;
|
||||
|
||||
#if __INITIAL_POINTER_SIZE == 64
|
||||
# pragma pointer_size restore
|
||||
#endif /* __INITIAL_POINTER_SIZE == 64 */
|
||||
|
||||
char buf[10240];
|
||||
unsigned int len;
|
||||
struct dsc$descriptor_s buf_dsc;
|
||||
@@ -326,8 +352,8 @@ static void xsyslog(BIO *bp, int priority, const char *string)
|
||||
|
||||
lib$sys_fao(&fao_cmd, &len, &buf_dsc, priority_tag, string);
|
||||
|
||||
/* we know there's an 8 byte header. That's documented */
|
||||
opcdef_p = (struct opcdef *) OPENSSL_malloc(8 + len);
|
||||
/* We know there's an 8-byte header. That's documented. */
|
||||
opcdef_p = OPCDEF_MALLOC( 8+ len);
|
||||
opcdef_p->opc$b_ms_type = OPC$_RQ_RQST;
|
||||
memcpy(opcdef_p->opc$z_ms_target_classes, &VMS_OPC_target, 3);
|
||||
opcdef_p->opc$l_ms_rqstid = 0;
|
||||
@@ -335,7 +361,7 @@ static void xsyslog(BIO *bp, int priority, const char *string)
|
||||
|
||||
opc_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
|
||||
opc_dsc.dsc$b_class = DSC$K_CLASS_S;
|
||||
opc_dsc.dsc$a_pointer = (char *)opcdef_p;
|
||||
opc_dsc.dsc$a_pointer = (OPCDEF_TYPE) opcdef_p;
|
||||
opc_dsc.dsc$w_length = len + 8;
|
||||
|
||||
sys$sndopr(opc_dsc, 0);
|
||||
|
@@ -172,15 +172,6 @@ static long sock_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case BIO_CTRL_RESET:
|
||||
num=0;
|
||||
case BIO_C_FILE_SEEK:
|
||||
ret=0;
|
||||
break;
|
||||
case BIO_C_FILE_TELL:
|
||||
case BIO_CTRL_INFO:
|
||||
ret=0;
|
||||
break;
|
||||
case BIO_C_SET_FD:
|
||||
sock_free(b);
|
||||
b->num= *((int *)ptr);
|
||||
@@ -203,10 +194,6 @@ static long sock_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
case BIO_CTRL_SET_CLOSE:
|
||||
b->shutdown=(int)num;
|
||||
break;
|
||||
case BIO_CTRL_PENDING:
|
||||
case BIO_CTRL_WPENDING:
|
||||
ret=0;
|
||||
break;
|
||||
case BIO_CTRL_DUP:
|
||||
case BIO_CTRL_FLUSH:
|
||||
ret=1;
|
||||
|
@@ -41,8 +41,12 @@ $j="s4";
|
||||
$m1="s5";
|
||||
|
||||
$code=<<___;
|
||||
#ifdef __linux__
|
||||
#include <asm/regdef.h>
|
||||
#else
|
||||
#include <asm.h>
|
||||
#include <regdef.h>
|
||||
#endif
|
||||
|
||||
.text
|
||||
|
||||
@@ -53,15 +57,15 @@ $code=<<___;
|
||||
.align 5
|
||||
.ent bn_mul_mont
|
||||
bn_mul_mont:
|
||||
lda sp,-40(sp)
|
||||
lda sp,-48(sp)
|
||||
stq ra,0(sp)
|
||||
stq s3,8(sp)
|
||||
stq s4,16(sp)
|
||||
stq s5,24(sp)
|
||||
stq fp,32(sp)
|
||||
mov sp,fp
|
||||
.mask 0x0400f000,-40
|
||||
.frame fp,40,ra
|
||||
.mask 0x0400f000,-48
|
||||
.frame fp,48,ra
|
||||
.prologue 0
|
||||
|
||||
.align 4
|
||||
@@ -76,7 +80,7 @@ bn_mul_mont:
|
||||
ldq $aj,8($ap)
|
||||
subq sp,AT,sp
|
||||
ldq $bi,0($bp) # bp[0]
|
||||
mov -4096,AT
|
||||
lda AT,-4096(zero) # mov -4096,AT
|
||||
ldq $n0,0($n0)
|
||||
and sp,AT,sp
|
||||
|
||||
@@ -106,9 +110,9 @@ bn_mul_mont:
|
||||
.align 4
|
||||
.L1st:
|
||||
.set noreorder
|
||||
ldq $aj,($aj)
|
||||
ldq $aj,0($aj)
|
||||
addl $j,1,$j
|
||||
ldq $nj,($nj)
|
||||
ldq $nj,0($nj)
|
||||
lda $tp,8($tp)
|
||||
|
||||
addq $alo,$hi0,$lo0
|
||||
@@ -159,12 +163,12 @@ bn_mul_mont:
|
||||
.align 4
|
||||
.Louter:
|
||||
s8addq $i,$bp,$bi
|
||||
ldq $hi0,($ap)
|
||||
ldq $hi0,0($ap)
|
||||
ldq $aj,8($ap)
|
||||
ldq $bi,($bi)
|
||||
ldq $hi1,($np)
|
||||
ldq $bi,0($bi)
|
||||
ldq $hi1,0($np)
|
||||
ldq $nj,8($np)
|
||||
ldq $tj,(sp)
|
||||
ldq $tj,0(sp)
|
||||
|
||||
mulq $hi0,$bi,$lo0
|
||||
umulh $hi0,$bi,$hi0
|
||||
@@ -195,10 +199,10 @@ bn_mul_mont:
|
||||
.set noreorder
|
||||
ldq $tj,8($tp) #L0
|
||||
nop #U1
|
||||
ldq $aj,($aj) #L1
|
||||
ldq $aj,0($aj) #L1
|
||||
s8addq $j,$np,$nj #U0
|
||||
|
||||
ldq $nj,($nj) #L0
|
||||
ldq $nj,0($nj) #L0
|
||||
nop #U1
|
||||
addq $alo,$hi0,$lo0 #L1
|
||||
lda $tp,8($tp)
|
||||
@@ -247,7 +251,7 @@ bn_mul_mont:
|
||||
addq $hi1,v0,$hi1
|
||||
|
||||
addq $hi1,$hi0,$lo1
|
||||
stq $j,($tp)
|
||||
stq $j,0($tp)
|
||||
cmpult $lo1,$hi0,$hi1
|
||||
addq $lo1,$tj,$lo1
|
||||
cmpult $lo1,$tj,AT
|
||||
@@ -265,8 +269,8 @@ bn_mul_mont:
|
||||
mov 0,$hi0 # clear borrow bit
|
||||
|
||||
.align 4
|
||||
.Lsub: ldq $lo0,($tp)
|
||||
ldq $lo1,($np)
|
||||
.Lsub: ldq $lo0,0($tp)
|
||||
ldq $lo1,0($np)
|
||||
lda $tp,8($tp)
|
||||
lda $np,8($np)
|
||||
subq $lo0,$lo1,$lo1 # tp[i]-np[i]
|
||||
@@ -274,7 +278,7 @@ bn_mul_mont:
|
||||
subq $lo1,$hi0,$lo0
|
||||
cmpult $lo1,$lo0,$hi0
|
||||
or $hi0,AT,$hi0
|
||||
stq $lo0,($rp)
|
||||
stq $lo0,0($rp)
|
||||
cmpult $tp,$tj,v0
|
||||
lda $rp,8($rp)
|
||||
bne v0,.Lsub
|
||||
@@ -288,7 +292,7 @@ bn_mul_mont:
|
||||
bis $bp,$ap,$ap # ap=borrow?tp:rp
|
||||
|
||||
.align 4
|
||||
.Lcopy: ldq $aj,($ap) # copy or in-place refresh
|
||||
.Lcopy: ldq $aj,0($ap) # copy or in-place refresh
|
||||
lda $tp,8($tp)
|
||||
lda $rp,8($rp)
|
||||
lda $ap,8($ap)
|
||||
@@ -306,11 +310,11 @@ bn_mul_mont:
|
||||
ldq s4,16(sp)
|
||||
ldq s5,24(sp)
|
||||
ldq fp,32(sp)
|
||||
lda sp,40(sp)
|
||||
lda sp,48(sp)
|
||||
ret (ra)
|
||||
.end bn_mul_mont
|
||||
.rdata
|
||||
.asciiz "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro\@openssl.org>"
|
||||
.ascii "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro\@openssl.org>"
|
||||
.align 2
|
||||
___
|
||||
|
||||
print $code;
|
||||
|
@@ -193,6 +193,7 @@ bn_mul_mont:
|
||||
bx lr @ interoperable with Thumb ISA:-)
|
||||
.size bn_mul_mont,.-bn_mul_mont
|
||||
.asciz "Montgomery multiplication for ARMv4, CRYPTOGAMS by <appro\@openssl.org>"
|
||||
.align 2
|
||||
___
|
||||
|
||||
$code =~ s/\bbx\s+lr\b/.word\t0xe12fff1e/gm; # make it possible to compile with -march=armv4
|
||||
|
@@ -69,8 +69,8 @@ bn_mul_mont:
|
||||
cghi $num,16 #
|
||||
lghi %r2,0 #
|
||||
blr %r14 # if($num<16) return 0;
|
||||
cghi $num,128 #
|
||||
bhr %r14 # if($num>128) return 0;
|
||||
cghi $num,96 #
|
||||
bhr %r14 # if($num>96) return 0;
|
||||
|
||||
stmg %r3,%r15,24($sp)
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
.ident "s390x.S, version 1.0"
|
||||
.ident "s390x.S, version 1.1"
|
||||
// ====================================================================
|
||||
// Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
|
||||
// project.
|
||||
@@ -24,67 +24,67 @@ bn_mul_add_words:
|
||||
bler %r14 // if (len<=0) return 0;
|
||||
|
||||
stmg %r6,%r10,48(%r15)
|
||||
lghi %r10,3
|
||||
lghi %r8,0 // carry = 0
|
||||
srag %r10,%r4,2 // cnt=len/4
|
||||
jz .Loop1_madd
|
||||
nr %r10,%r4 // len%4
|
||||
sra %r4,2 // cnt=len/4
|
||||
jz .Loop1_madd // carry is incidentally cleared if branch taken
|
||||
algr zero,zero // clear carry
|
||||
|
||||
.Loop4_madd:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %r7,%r8 // +=carry
|
||||
alcgr %r7,%r8 // +=carry
|
||||
alcgr %r6,zero
|
||||
alg %r7,0(%r2,%r1) // +=rp[i]
|
||||
alcgr %r6,zero
|
||||
stg %r7,0(%r2,%r1) // rp[i]=
|
||||
|
||||
lg %r9,8(%r2,%r3)
|
||||
mlgr %r8,%r5
|
||||
algr %r9,%r6
|
||||
alcgr %r9,%r6
|
||||
alcgr %r8,zero
|
||||
alg %r9,8(%r2,%r1)
|
||||
alcgr %r8,zero
|
||||
stg %r9,8(%r2,%r1)
|
||||
|
||||
lg %r7,16(%r2,%r3)
|
||||
mlgr %r6,%r5
|
||||
algr %r7,%r8
|
||||
alcgr %r7,%r8
|
||||
alcgr %r6,zero
|
||||
alg %r7,16(%r2,%r1)
|
||||
alcgr %r6,zero
|
||||
stg %r7,16(%r2,%r1)
|
||||
|
||||
lg %r9,24(%r2,%r3)
|
||||
mlgr %r8,%r5
|
||||
algr %r9,%r6
|
||||
alcgr %r9,%r6
|
||||
alcgr %r8,zero
|
||||
alg %r9,24(%r2,%r1)
|
||||
alcgr %r8,zero
|
||||
stg %r9,24(%r2,%r1)
|
||||
|
||||
la %r2,32(%r2) // i+=4
|
||||
brct %r10,.Loop4_madd
|
||||
brct %r4,.Loop4_madd
|
||||
|
||||
lghi %r10,3
|
||||
nr %r4,%r10 // cnt=len%4
|
||||
jz .Lend_madd
|
||||
la %r10,1(%r10) // see if len%4 is zero ...
|
||||
brct %r10,.Loop1_madd // without touching condition code:-)
|
||||
|
||||
.Lend_madd:
|
||||
alcgr %r8,zero // collect carry bit
|
||||
lgr %r2,%r8
|
||||
lmg %r6,%r10,48(%r15)
|
||||
br %r14
|
||||
|
||||
.Loop1_madd:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %r7,%r8 // +=carry
|
||||
alcgr %r7,%r8 // +=carry
|
||||
alcgr %r6,zero
|
||||
alg %r7,0(%r2,%r1) // +=rp[i]
|
||||
alcgr %r6,zero
|
||||
stg %r7,0(%r2,%r1) // rp[i]=
|
||||
|
||||
lgr %r8,%r6
|
||||
la %r2,8(%r2) // i++
|
||||
brct %r4,.Loop1_madd
|
||||
brct %r10,.Loop1_madd
|
||||
|
||||
.Lend_madd:
|
||||
lgr %r2,%r8
|
||||
lmg %r6,%r10,48(%r15)
|
||||
br %r14
|
||||
j .Lend_madd
|
||||
.size bn_mul_add_words,.-bn_mul_add_words
|
||||
|
||||
// BN_ULONG bn_mul_words(BN_ULONG *r2,BN_ULONG *r3,int r4,BN_ULONG r5);
|
||||
@@ -99,57 +99,57 @@ bn_mul_words:
|
||||
bler %r14 // if (len<=0) return 0;
|
||||
|
||||
stmg %r6,%r10,48(%r15)
|
||||
lghi %r10,3
|
||||
lghi %r8,0 // carry = 0
|
||||
srag %r10,%r4,2 // cnt=len/4
|
||||
jz .Loop1_mul
|
||||
nr %r10,%r4 // len%4
|
||||
sra %r4,2 // cnt=len/4
|
||||
jz .Loop1_mul // carry is incidentally cleared if branch taken
|
||||
algr zero,zero // clear carry
|
||||
|
||||
.Loop4_mul:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %r7,%r8 // +=carry
|
||||
alcgr %r6,zero
|
||||
alcgr %r7,%r8 // +=carry
|
||||
stg %r7,0(%r2,%r1) // rp[i]=
|
||||
|
||||
lg %r9,8(%r2,%r3)
|
||||
mlgr %r8,%r5
|
||||
algr %r9,%r6
|
||||
alcgr %r8,zero
|
||||
alcgr %r9,%r6
|
||||
stg %r9,8(%r2,%r1)
|
||||
|
||||
lg %r7,16(%r2,%r3)
|
||||
mlgr %r6,%r5
|
||||
algr %r7,%r8
|
||||
alcgr %r6,zero
|
||||
alcgr %r7,%r8
|
||||
stg %r7,16(%r2,%r1)
|
||||
|
||||
lg %r9,24(%r2,%r3)
|
||||
mlgr %r8,%r5
|
||||
algr %r9,%r6
|
||||
alcgr %r8,zero
|
||||
alcgr %r9,%r6
|
||||
stg %r9,24(%r2,%r1)
|
||||
|
||||
la %r2,32(%r2) // i+=4
|
||||
brct %r10,.Loop4_mul
|
||||
brct %r4,.Loop4_mul
|
||||
|
||||
lghi %r10,3
|
||||
nr %r4,%r10 // cnt=len%4
|
||||
jz .Lend_mul
|
||||
la %r10,1(%r10) // see if len%4 is zero ...
|
||||
brct %r10,.Loop1_mul // without touching condition code:-)
|
||||
|
||||
.Lend_mul:
|
||||
alcgr %r8,zero // collect carry bit
|
||||
lgr %r2,%r8
|
||||
lmg %r6,%r10,48(%r15)
|
||||
br %r14
|
||||
|
||||
.Loop1_mul:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %r7,%r8 // +=carry
|
||||
alcgr %r6,zero
|
||||
alcgr %r7,%r8 // +=carry
|
||||
stg %r7,0(%r2,%r1) // rp[i]=
|
||||
|
||||
lgr %r8,%r6
|
||||
la %r2,8(%r2) // i++
|
||||
brct %r4,.Loop1_mul
|
||||
brct %r10,.Loop1_mul
|
||||
|
||||
.Lend_mul:
|
||||
lgr %r2,%r8
|
||||
lmg %r6,%r10,48(%r15)
|
||||
br %r14
|
||||
j .Lend_mul
|
||||
.size bn_mul_words,.-bn_mul_words
|
||||
|
||||
// void bn_sqr_words(BN_ULONG *r2,BN_ULONG *r2,int r4)
|
||||
|
@@ -63,6 +63,7 @@
|
||||
|
||||
#undef mul
|
||||
#undef mul_add
|
||||
#undef sqr
|
||||
|
||||
/*
|
||||
* "m"(a), "+m"(r) is the way to favor DirectPath <20>-code;
|
||||
|
@@ -253,6 +253,24 @@ extern "C" {
|
||||
#define BN_HEX_FMT2 "%08X"
|
||||
#endif
|
||||
|
||||
/* 2011-02-22 SMS.
|
||||
* In various places, a size_t variable or a type cast to size_t was
|
||||
* used to perform integer-only operations on pointers. This failed on
|
||||
* VMS with 64-bit pointers (CC /POINTER_SIZE = 64) because size_t is
|
||||
* still only 32 bits. What's needed in these cases is an integer type
|
||||
* with the same size as a pointer, which size_t is not certain to be.
|
||||
* The only fix here is VMS-specific.
|
||||
*/
|
||||
#if defined(OPENSSL_SYS_VMS)
|
||||
# if __INITIAL_POINTER_SIZE == 64
|
||||
# define PTR_SIZE_INT long long
|
||||
# else /* __INITIAL_POINTER_SIZE == 64 */
|
||||
# define PTR_SIZE_INT int
|
||||
# endif /* __INITIAL_POINTER_SIZE == 64 [else] */
|
||||
#else /* defined(OPENSSL_SYS_VMS) */
|
||||
# define PTR_SIZE_INT size_t
|
||||
#endif /* defined(OPENSSL_SYS_VMS) [else] */
|
||||
|
||||
#define BN_DEFAULT_BITS 1280
|
||||
|
||||
#define BN_FLG_MALLOCED 0x01
|
||||
|
@@ -102,7 +102,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
|
||||
/* The next 2 are needed so we can do a dv->d[0]|=1 later
|
||||
* since BN_lshift1 will only work once there is a value :-) */
|
||||
BN_zero(dv);
|
||||
bn_wexpand(dv,1);
|
||||
if(bn_wexpand(dv,1) == NULL) goto end;
|
||||
dv->top=1;
|
||||
|
||||
if (!BN_lshift(D,D,nm-nd)) goto end;
|
||||
|
@@ -301,7 +301,8 @@ int BN_mod_exp2_mont(BIGNUM *rr, const BIGNUM *a1, const BIGNUM *p1,
|
||||
r_is_one = 0;
|
||||
}
|
||||
}
|
||||
BN_from_montgomery(rr,r,mont,ctx);
|
||||
if (!BN_from_montgomery(rr,r,mont,ctx))
|
||||
goto err;
|
||||
ret=1;
|
||||
err:
|
||||
if ((in_mont == NULL) && (mont != NULL)) BN_MONT_CTX_free(mont);
|
||||
|
@@ -232,7 +232,8 @@ int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
|
||||
if (a->top < b->top) { at = b; bt = a; }
|
||||
else { at = a; bt = b; }
|
||||
|
||||
bn_wexpand(r, at->top);
|
||||
if(bn_wexpand(r, at->top) == NULL)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < bt->top; i++)
|
||||
{
|
||||
@@ -544,6 +545,7 @@ int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
|
||||
{
|
||||
while (!BN_is_odd(u))
|
||||
{
|
||||
if (BN_is_zero(u)) goto err;
|
||||
if (!BN_rshift1(u, u)) goto err;
|
||||
if (BN_is_odd(b))
|
||||
{
|
||||
|
@@ -277,7 +277,7 @@ static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)
|
||||
m1|=m2; /* (al!=ri) */
|
||||
m1|=(0-(size_t)v); /* (al!=ri || v) */
|
||||
m1&=~m2; /* (al!=ri || v) && !al>ri */
|
||||
nrp=(BN_ULONG *)(((size_t)rp&~m1)|((size_t)ap&m1));
|
||||
nrp=(BN_ULONG *)(((PTR_SIZE_INT)rp&~m1)|((PTR_SIZE_INT)ap&m1));
|
||||
}
|
||||
|
||||
/* 'i<ri' is chosen to eliminate dependency on input data, even
|
||||
|
@@ -551,7 +551,7 @@ void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n,
|
||||
int tna, int tnb, BN_ULONG *t)
|
||||
{
|
||||
int i,j,n2=n*2;
|
||||
int c1,c2,neg,zero;
|
||||
int c1,c2,neg;
|
||||
BN_ULONG ln,lo,*p;
|
||||
|
||||
# ifdef BN_COUNT
|
||||
@@ -567,7 +567,7 @@ void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n,
|
||||
/* r=(a[0]-a[1])*(b[1]-b[0]) */
|
||||
c1=bn_cmp_part_words(a,&(a[n]),tna,n-tna);
|
||||
c2=bn_cmp_part_words(&(b[n]),b,tnb,tnb-n);
|
||||
zero=neg=0;
|
||||
neg=0;
|
||||
switch (c1*3+c2)
|
||||
{
|
||||
case -4:
|
||||
@@ -575,7 +575,6 @@ void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n,
|
||||
bn_sub_part_words(&(t[n]),b, &(b[n]),tnb,n-tnb); /* - */
|
||||
break;
|
||||
case -3:
|
||||
zero=1;
|
||||
/* break; */
|
||||
case -2:
|
||||
bn_sub_part_words(t, &(a[n]),a, tna,tna-n); /* - */
|
||||
@@ -585,7 +584,6 @@ void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n,
|
||||
case -1:
|
||||
case 0:
|
||||
case 1:
|
||||
zero=1;
|
||||
/* break; */
|
||||
case 2:
|
||||
bn_sub_part_words(t, a, &(a[n]),tna,n-tna); /* + */
|
||||
@@ -593,7 +591,6 @@ void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n,
|
||||
neg=1;
|
||||
break;
|
||||
case 3:
|
||||
zero=1;
|
||||
/* break; */
|
||||
case 4:
|
||||
bn_sub_part_words(t, a, &(a[n]),tna,n-tna);
|
||||
@@ -1012,7 +1009,6 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
if (i >= -1 && i <= 1)
|
||||
{
|
||||
int sav_j =0;
|
||||
/* Find out the power of two lower or equal
|
||||
to the longest of the two numbers */
|
||||
if (i >= 0)
|
||||
@@ -1023,7 +1019,6 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
j = BN_num_bits_word((BN_ULONG)bl);
|
||||
}
|
||||
sav_j = j;
|
||||
j = 1<<(j-1);
|
||||
assert(j <= al || j <= bl);
|
||||
k = j+j;
|
||||
|
@@ -354,7 +354,7 @@ int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
buf[BN_NIST_192_TOP],
|
||||
c_d[BN_NIST_192_TOP],
|
||||
*res;
|
||||
size_t mask;
|
||||
PTR_SIZE_INT mask;
|
||||
static const BIGNUM _bignum_nist_p_192_sqr = {
|
||||
(BN_ULONG *)_nist_p_192_sqr,
|
||||
sizeof(_nist_p_192_sqr)/sizeof(_nist_p_192_sqr[0]),
|
||||
@@ -405,9 +405,10 @@ int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
* 'tmp=result-modulus; if (!carry || !borrow) result=tmp;'
|
||||
* this is what happens below, but without explicit if:-) a.
|
||||
*/
|
||||
mask = 0-(size_t)bn_sub_words(c_d,r_d,_nist_p_192[0],BN_NIST_192_TOP);
|
||||
mask &= 0-(size_t)carry;
|
||||
res = (BN_ULONG *)(((size_t)c_d&~mask) | ((size_t)r_d&mask));
|
||||
mask = 0-(PTR_SIZE_INT)bn_sub_words(c_d,r_d,_nist_p_192[0],BN_NIST_192_TOP);
|
||||
mask &= 0-(PTR_SIZE_INT)carry;
|
||||
res = (BN_ULONG *)
|
||||
(((PTR_SIZE_INT)c_d&~mask) | ((PTR_SIZE_INT)r_d&mask));
|
||||
nist_cp_bn(r_d, res, BN_NIST_192_TOP);
|
||||
r->top = BN_NIST_192_TOP;
|
||||
bn_correct_top(r);
|
||||
@@ -438,8 +439,8 @@ int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
buf[BN_NIST_224_TOP],
|
||||
c_d[BN_NIST_224_TOP],
|
||||
*res;
|
||||
size_t mask;
|
||||
union { bn_addsub_f f; size_t p; } u;
|
||||
PTR_SIZE_INT mask;
|
||||
union { bn_addsub_f f; PTR_SIZE_INT p; } u;
|
||||
static const BIGNUM _bignum_nist_p_224_sqr = {
|
||||
(BN_ULONG *)_nist_p_224_sqr,
|
||||
sizeof(_nist_p_224_sqr)/sizeof(_nist_p_224_sqr[0]),
|
||||
@@ -510,16 +511,18 @@ int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
* to be compared to the modulus and conditionally
|
||||
* adjusted by *subtracting* the latter. */
|
||||
carry = (int)bn_add_words(r_d,r_d,_nist_p_224[-carry-1],BN_NIST_224_TOP);
|
||||
mask = 0-(size_t)carry;
|
||||
u.p = ((size_t)bn_sub_words&mask) | ((size_t)bn_add_words&~mask);
|
||||
mask = 0-(PTR_SIZE_INT)carry;
|
||||
u.p = ((PTR_SIZE_INT)bn_sub_words&mask) |
|
||||
((PTR_SIZE_INT)bn_add_words&~mask);
|
||||
}
|
||||
else
|
||||
carry = 1;
|
||||
|
||||
/* otherwise it's effectively same as in BN_nist_mod_192... */
|
||||
mask = 0-(size_t)(*u.f)(c_d,r_d,_nist_p_224[0],BN_NIST_224_TOP);
|
||||
mask &= 0-(size_t)carry;
|
||||
res = (BN_ULONG *)(((size_t)c_d&~mask) | ((size_t)r_d&mask));
|
||||
mask = 0-(PTR_SIZE_INT)(*u.f)(c_d,r_d,_nist_p_224[0],BN_NIST_224_TOP);
|
||||
mask &= 0-(PTR_SIZE_INT)carry;
|
||||
res = (BN_ULONG *)(((PTR_SIZE_INT)c_d&~mask) |
|
||||
((PTR_SIZE_INT)r_d&mask));
|
||||
nist_cp_bn(r_d, res, BN_NIST_224_TOP);
|
||||
r->top = BN_NIST_224_TOP;
|
||||
bn_correct_top(r);
|
||||
@@ -549,8 +552,8 @@ int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
buf[BN_NIST_256_TOP],
|
||||
c_d[BN_NIST_256_TOP],
|
||||
*res;
|
||||
size_t mask;
|
||||
union { bn_addsub_f f; size_t p; } u;
|
||||
PTR_SIZE_INT mask;
|
||||
union { bn_addsub_f f; PTR_SIZE_INT p; } u;
|
||||
static const BIGNUM _bignum_nist_p_256_sqr = {
|
||||
(BN_ULONG *)_nist_p_256_sqr,
|
||||
sizeof(_nist_p_256_sqr)/sizeof(_nist_p_256_sqr[0]),
|
||||
@@ -629,15 +632,17 @@ int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
else if (carry < 0)
|
||||
{
|
||||
carry = (int)bn_add_words(r_d,r_d,_nist_p_256[-carry-1],BN_NIST_256_TOP);
|
||||
mask = 0-(size_t)carry;
|
||||
u.p = ((size_t)bn_sub_words&mask) | ((size_t)bn_add_words&~mask);
|
||||
mask = 0-(PTR_SIZE_INT)carry;
|
||||
u.p = ((PTR_SIZE_INT)bn_sub_words&mask) |
|
||||
((PTR_SIZE_INT)bn_add_words&~mask);
|
||||
}
|
||||
else
|
||||
carry = 1;
|
||||
|
||||
mask = 0-(size_t)(*u.f)(c_d,r_d,_nist_p_256[0],BN_NIST_256_TOP);
|
||||
mask &= 0-(size_t)carry;
|
||||
res = (BN_ULONG *)(((size_t)c_d&~mask) | ((size_t)r_d&mask));
|
||||
mask = 0-(PTR_SIZE_INT)(*u.f)(c_d,r_d,_nist_p_256[0],BN_NIST_256_TOP);
|
||||
mask &= 0-(PTR_SIZE_INT)carry;
|
||||
res = (BN_ULONG *)(((PTR_SIZE_INT)c_d&~mask) |
|
||||
((PTR_SIZE_INT)r_d&mask));
|
||||
nist_cp_bn(r_d, res, BN_NIST_256_TOP);
|
||||
r->top = BN_NIST_256_TOP;
|
||||
bn_correct_top(r);
|
||||
@@ -671,8 +676,8 @@ int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
buf[BN_NIST_384_TOP],
|
||||
c_d[BN_NIST_384_TOP],
|
||||
*res;
|
||||
size_t mask;
|
||||
union { bn_addsub_f f; size_t p; } u;
|
||||
PTR_SIZE_INT mask;
|
||||
union { bn_addsub_f f; PTR_SIZE_INT p; } u;
|
||||
static const BIGNUM _bignum_nist_p_384_sqr = {
|
||||
(BN_ULONG *)_nist_p_384_sqr,
|
||||
sizeof(_nist_p_384_sqr)/sizeof(_nist_p_384_sqr[0]),
|
||||
@@ -754,15 +759,17 @@ int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
else if (carry < 0)
|
||||
{
|
||||
carry = (int)bn_add_words(r_d,r_d,_nist_p_384[-carry-1],BN_NIST_384_TOP);
|
||||
mask = 0-(size_t)carry;
|
||||
u.p = ((size_t)bn_sub_words&mask) | ((size_t)bn_add_words&~mask);
|
||||
mask = 0-(PTR_SIZE_INT)carry;
|
||||
u.p = ((PTR_SIZE_INT)bn_sub_words&mask) |
|
||||
((PTR_SIZE_INT)bn_add_words&~mask);
|
||||
}
|
||||
else
|
||||
carry = 1;
|
||||
|
||||
mask = 0-(size_t)(*u.f)(c_d,r_d,_nist_p_384[0],BN_NIST_384_TOP);
|
||||
mask &= 0-(size_t)carry;
|
||||
res = (BN_ULONG *)(((size_t)c_d&~mask) | ((size_t)r_d&mask));
|
||||
mask = 0-(PTR_SIZE_INT)(*u.f)(c_d,r_d,_nist_p_384[0],BN_NIST_384_TOP);
|
||||
mask &= 0-(PTR_SIZE_INT)carry;
|
||||
res = (BN_ULONG *)(((PTR_SIZE_INT)c_d&~mask) |
|
||||
((PTR_SIZE_INT)r_d&mask));
|
||||
nist_cp_bn(r_d, res, BN_NIST_384_TOP);
|
||||
r->top = BN_NIST_384_TOP;
|
||||
bn_correct_top(r);
|
||||
@@ -781,7 +788,7 @@ int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
BN_ULONG *r_d, *a_d = a->d,
|
||||
t_d[BN_NIST_521_TOP],
|
||||
val,tmp,*res;
|
||||
size_t mask;
|
||||
PTR_SIZE_INT mask;
|
||||
static const BIGNUM _bignum_nist_p_521_sqr = {
|
||||
(BN_ULONG *)_nist_p_521_sqr,
|
||||
sizeof(_nist_p_521_sqr)/sizeof(_nist_p_521_sqr[0]),
|
||||
@@ -826,8 +833,9 @@ int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
|
||||
r_d[i] &= BN_NIST_521_TOP_MASK;
|
||||
|
||||
bn_add_words(r_d,r_d,t_d,BN_NIST_521_TOP);
|
||||
mask = 0-(size_t)bn_sub_words(t_d,r_d,_nist_p_521,BN_NIST_521_TOP);
|
||||
res = (BN_ULONG *)(((size_t)t_d&~mask) | ((size_t)r_d&mask));
|
||||
mask = 0-(PTR_SIZE_INT)bn_sub_words(t_d,r_d,_nist_p_521,BN_NIST_521_TOP);
|
||||
res = (BN_ULONG *)(((PTR_SIZE_INT)t_d&~mask) |
|
||||
((PTR_SIZE_INT)r_d&mask));
|
||||
nist_cp_bn(r_d,res,BN_NIST_521_TOP);
|
||||
r->top = BN_NIST_521_TOP;
|
||||
bn_correct_top(r);
|
||||
|
@@ -131,8 +131,8 @@ ASN1_NDEF_SEQUENCE(CMS_SignedData) = {
|
||||
} ASN1_NDEF_SEQUENCE_END(CMS_SignedData)
|
||||
|
||||
ASN1_SEQUENCE(CMS_OriginatorInfo) = {
|
||||
ASN1_IMP_SET_OF_OPT(CMS_SignedData, certificates, CMS_CertificateChoices, 0),
|
||||
ASN1_IMP_SET_OF_OPT(CMS_SignedData, crls, CMS_RevocationInfoChoice, 1)
|
||||
ASN1_IMP_SET_OF_OPT(CMS_OriginatorInfo, certificates, CMS_CertificateChoices, 0),
|
||||
ASN1_IMP_SET_OF_OPT(CMS_OriginatorInfo, crls, CMS_RevocationInfoChoice, 1)
|
||||
} ASN1_SEQUENCE_END(CMS_OriginatorInfo)
|
||||
|
||||
ASN1_NDEF_SEQUENCE(CMS_EncryptedContentInfo) = {
|
||||
|
@@ -406,7 +406,11 @@ int cms_DigestAlgorithm_find_ctx(EVP_MD_CTX *mctx, BIO *chain,
|
||||
return 0;
|
||||
}
|
||||
BIO_get_md_ctx(chain, &mtmp);
|
||||
if (EVP_MD_CTX_type(mtmp) == nid)
|
||||
if (EVP_MD_CTX_type(mtmp) == nid
|
||||
/* Workaround for broken implementations that use signature
|
||||
* algorithm OID instead of digest.
|
||||
*/
|
||||
|| EVP_MD_pkey_type(EVP_MD_CTX_md(mtmp)) == nid)
|
||||
{
|
||||
EVP_MD_CTX_copy_ex(mctx, mtmp);
|
||||
return 1;
|
||||
|
@@ -86,13 +86,12 @@ c_rle.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
c_rle.o: ../../include/openssl/symhacks.h c_rle.c
|
||||
c_zlib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
c_zlib.o: ../../include/openssl/comp.h ../../include/openssl/crypto.h
|
||||
c_zlib.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
|
||||
c_zlib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
c_zlib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
c_zlib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
c_zlib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
c_zlib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
c_zlib.o: c_zlib.c
|
||||
c_zlib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
c_zlib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
c_zlib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
c_zlib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
c_zlib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
c_zlib.o: ../../include/openssl/symhacks.h c_zlib.c
|
||||
comp_err.o: ../../include/openssl/bio.h ../../include/openssl/comp.h
|
||||
comp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
comp_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
|
@@ -46,7 +46,7 @@ static int rle_expand_block(COMP_CTX *ctx, unsigned char *out,
|
||||
{
|
||||
int i;
|
||||
|
||||
if (olen < (ilen-1))
|
||||
if (ilen == 0 || olen < (ilen-1))
|
||||
{
|
||||
/* ZZZZZZZZZZZZZZZZZZZZZZ */
|
||||
return(-1);
|
||||
@@ -59,4 +59,3 @@ static int rle_expand_block(COMP_CTX *ctx, unsigned char *out,
|
||||
}
|
||||
return(ilen-1);
|
||||
}
|
||||
|
||||
|
@@ -64,6 +64,7 @@
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/conf_api.h>
|
||||
@@ -285,7 +286,7 @@ CONF_VALUE *_CONF_new_section(CONF *conf, const char *section)
|
||||
v->value=(char *)sk;
|
||||
|
||||
vv=lh_CONF_VALUE_insert(conf->data,v);
|
||||
assert(vv == NULL);
|
||||
OPENSSL_assert(vv == NULL);
|
||||
ok=1;
|
||||
err:
|
||||
if (!ok)
|
||||
|
@@ -213,13 +213,12 @@ static int def_load_bio(CONF *conf, BIO *in, long *line)
|
||||
int bufnum=0,i,ii;
|
||||
BUF_MEM *buff=NULL;
|
||||
char *s,*p,*end;
|
||||
int again,n;
|
||||
int again;
|
||||
long eline=0;
|
||||
char btmp[DECIMAL_SIZE(eline)+1];
|
||||
CONF_VALUE *v=NULL,*tv;
|
||||
CONF_VALUE *sv=NULL;
|
||||
char *section=NULL,*buf;
|
||||
STACK_OF(CONF_VALUE) *section_sk=NULL,*ts;
|
||||
char *start,*psection,*pname;
|
||||
void *h = (void *)(conf->data);
|
||||
|
||||
@@ -250,7 +249,6 @@ static int def_load_bio(CONF *conf, BIO *in, long *line)
|
||||
CONF_R_UNABLE_TO_CREATE_NEW_SECTION);
|
||||
goto err;
|
||||
}
|
||||
section_sk=(STACK_OF(CONF_VALUE) *)sv->value;
|
||||
|
||||
bufnum=0;
|
||||
again=0;
|
||||
@@ -309,7 +307,6 @@ static int def_load_bio(CONF *conf, BIO *in, long *line)
|
||||
buf=buff->data;
|
||||
|
||||
clear_comments(conf, buf);
|
||||
n=strlen(buf);
|
||||
s=eat_ws(conf, buf);
|
||||
if (IS_EOF(conf,*s)) continue; /* blank line */
|
||||
if (*s == '[')
|
||||
@@ -343,7 +340,6 @@ again:
|
||||
CONF_R_UNABLE_TO_CREATE_NEW_SECTION);
|
||||
goto err;
|
||||
}
|
||||
section_sk=(STACK_OF(CONF_VALUE) *)sv->value;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
@@ -406,13 +402,9 @@ again:
|
||||
CONF_R_UNABLE_TO_CREATE_NEW_SECTION);
|
||||
goto err;
|
||||
}
|
||||
ts=(STACK_OF(CONF_VALUE) *)tv->value;
|
||||
}
|
||||
else
|
||||
{
|
||||
tv=sv;
|
||||
ts=section_sk;
|
||||
}
|
||||
#if 1
|
||||
if (_CONF_add_string(conf, tv, v) == 0)
|
||||
{
|
||||
@@ -465,9 +457,6 @@ err:
|
||||
|
||||
static void clear_comments(CONF *conf, char *p)
|
||||
{
|
||||
char *to;
|
||||
|
||||
to=p;
|
||||
for (;;)
|
||||
{
|
||||
if (IS_FCOMMENT(conf,*p))
|
||||
|
@@ -731,7 +731,6 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
|
||||
case DLL_THREAD_ATTACH:
|
||||
break;
|
||||
case DLL_THREAD_DETACH:
|
||||
ERR_remove_state(0);
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
@@ -743,12 +742,34 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
#include <tchar.h>
|
||||
#include <signal.h>
|
||||
#ifdef __WATCOMC__
|
||||
#if defined(_UNICODE) || defined(__UNICODE__)
|
||||
#define _vsntprintf _vsnwprintf
|
||||
#else
|
||||
#define _vsntprintf _vsnprintf
|
||||
#endif
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
#define alloca _alloca
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
|
||||
int OPENSSL_isservice(void)
|
||||
{ HWINSTA h;
|
||||
DWORD len;
|
||||
WCHAR *name;
|
||||
static union { void *p; int (*f)(void); } _OPENSSL_isservice = { NULL };
|
||||
|
||||
if (_OPENSSL_isservice.p == NULL) {
|
||||
HANDLE h = GetModuleHandle(NULL);
|
||||
if (h != NULL)
|
||||
_OPENSSL_isservice.p = GetProcAddress(h,"_OPENSSL_isservice");
|
||||
if (_OPENSSL_isservice.p == NULL)
|
||||
_OPENSSL_isservice.p = (void *)-1;
|
||||
}
|
||||
|
||||
if (_OPENSSL_isservice.p != (void *)-1)
|
||||
return (*_OPENSSL_isservice.f)();
|
||||
|
||||
(void)GetDesktopWindow(); /* return value is ignored */
|
||||
|
||||
@@ -761,11 +782,7 @@ int OPENSSL_isservice(void)
|
||||
|
||||
if (len>512) return -1; /* paranoia */
|
||||
len++,len&=~1; /* paranoia */
|
||||
#ifdef _MSC_VER
|
||||
name=(WCHAR *)_alloca(len+sizeof(WCHAR));
|
||||
#else
|
||||
name=(WCHAR *)alloca(len+sizeof(WCHAR));
|
||||
#endif
|
||||
if (!GetUserObjectInformationW (h,UOI_NAME,name,len,&len))
|
||||
return -1;
|
||||
|
||||
@@ -810,11 +827,7 @@ void OPENSSL_showfatal (const char *fmta,...)
|
||||
size_t len_0=strlen(fmta)+1,i;
|
||||
WCHAR *fmtw;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
fmtw = (WCHAR *)_alloca (len_0*sizeof(WCHAR));
|
||||
#else
|
||||
fmtw = (WCHAR *)alloca (len_0*sizeof(WCHAR));
|
||||
#endif
|
||||
fmtw = (WCHAR *)alloca(len_0*sizeof(WCHAR));
|
||||
if (fmtw == NULL) { fmt=(const TCHAR *)L"no stack?"; break; }
|
||||
|
||||
#ifndef OPENSSL_NO_MULTIBYTE
|
||||
|
@@ -103,7 +103,6 @@ extern unsigned long OPENSSL_ia32cap_P;
|
||||
void OPENSSL_showfatal(const char *,...);
|
||||
void *OPENSSL_stderr(void);
|
||||
extern int OPENSSL_NONPIC_relocated;
|
||||
int OPENSSL_isservice(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -47,11 +47,33 @@ $! P6, if defined, sets a choice of crypto methods to compile.
|
||||
$! WARNING: this should only be done to recompile some part of an already
|
||||
$! fully compiled library.
|
||||
$!
|
||||
$! P7, if defined, specifies the C pointer size. Ignored on VAX.
|
||||
$! ("64=ARGV" gives more efficient code with HP C V7.3 or newer.)
|
||||
$! Supported values are:
|
||||
$!
|
||||
$! "" Compile with default (/NOPOINTER_SIZE)
|
||||
$! 32 Compile with /POINTER_SIZE=32 (SHORT)
|
||||
$! 64 Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV]).
|
||||
$! (Automatically select ARGV if compiler supports it.)
|
||||
$! 64= Compile with /POINTER_SIZE=64 (LONG).
|
||||
$! 64=ARGV Compile with /POINTER_SIZE=64=ARGV (LONG=ARGV).
|
||||
$!
|
||||
$! P8, if defined, specifies a directory where ZLIB files (zlib.h,
|
||||
$! libz.olb) may be found. Optionally, a non-default object library
|
||||
$! name may be included ("dev:[dir]libz_64.olb", for example).
|
||||
$!
|
||||
$!
|
||||
$! Announce/identify.
|
||||
$!
|
||||
$ proc = f$environment( "procedure")
|
||||
$ write sys$output "@@@ "+ -
|
||||
f$parse( proc, , , "name")+ f$parse( proc, , , "type")
|
||||
$!
|
||||
$! Define A TCP/IP Library That We Will Need To Link To.
|
||||
$! (That Is, If We Need To Link To One.)
|
||||
$!
|
||||
$ TCPIP_LIB = ""
|
||||
$ ZLIB_LIB = ""
|
||||
$!
|
||||
$! Check Which Architecture We Are Using.
|
||||
$!
|
||||
@@ -60,7 +82,7 @@ $ THEN
|
||||
$!
|
||||
$! The Architecture Is VAX
|
||||
$!
|
||||
$ ARCH := VAX
|
||||
$ ARCH = "VAX"
|
||||
$!
|
||||
$! Else...
|
||||
$!
|
||||
@@ -75,39 +97,58 @@ $! End The Architecture Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$ ARCHD = ARCH
|
||||
$ LIB32 = "32"
|
||||
$ OPT_FILE = ""
|
||||
$ POINTER_SIZE = ""
|
||||
$!
|
||||
$! Define The Different Encryption Types.
|
||||
$! NOTE: Some might think this list ugly. However, it's made this way to
|
||||
$! reflect the SDIRS variable in [-]Makefile.org as closely as possible,
|
||||
$! thereby making it fairly easy to verify that the lists are the same.
|
||||
$!
|
||||
$ ET_WHIRLPOOL = "WHRLPOOL"
|
||||
$ IF ARCH .EQS. "VAX" THEN ET_WHIRLPOOL = ""
|
||||
$ ENCRYPT_TYPES = "Basic,"+ -
|
||||
"OBJECTS,"+ -
|
||||
"MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,WHRLPOOL,"+ -
|
||||
"MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ET_WHIRLPOOL+","+ -
|
||||
"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,EVP_2,EVP_3,ASN1,ASN1_2,PEM,X509,X509V3,"+ -
|
||||
"CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,"+ -
|
||||
"STORE,CMS,PQUEUE,TS,JPAKE"
|
||||
$! Define The OBJ Directory.
|
||||
$!
|
||||
$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
|
||||
$!
|
||||
$! Define The EXE Directory.
|
||||
$!
|
||||
$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
|
||||
$!
|
||||
$! Check To Make Sure We Have Valid Command Line Parameters.
|
||||
$!
|
||||
$ GOSUB CHECK_OPTIONS
|
||||
$!
|
||||
$! Define The OBJ and EXE Directories.
|
||||
$!
|
||||
$ OBJ_DIR := SYS$DISK:[-.'ARCHD'.OBJ.CRYPTO]
|
||||
$ EXE_DIR := SYS$DISK:[-.'ARCHD'.EXE.CRYPTO]
|
||||
$!
|
||||
$! Specify the destination directory in any /MAP option.
|
||||
$!
|
||||
$ if (LINKMAP .eqs. "MAP")
|
||||
$ then
|
||||
$ LINKMAP = LINKMAP+ "=''EXE_DIR'"
|
||||
$ endif
|
||||
$!
|
||||
$! Add the location prefix to the linker options file name.
|
||||
$!
|
||||
$ if (OPT_FILE .nes. "")
|
||||
$ then
|
||||
$ OPT_FILE = EXE_DIR+ OPT_FILE
|
||||
$ endif
|
||||
$!
|
||||
$! Initialise logical names and such
|
||||
$!
|
||||
$ GOSUB INITIALISE
|
||||
$!
|
||||
$! Tell The User What Kind of Machine We Run On.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
|
||||
$ WRITE SYS$OUTPUT "Host system architecture: ''ARCHD'"
|
||||
$!
|
||||
$!
|
||||
$! Check To See If The Architecture Specific OBJ Directory Exists.
|
||||
@@ -138,11 +179,11 @@ $ ENDIF
|
||||
$!
|
||||
$! Define The Library Name.
|
||||
$!
|
||||
$ LIB_NAME := 'EXE_DIR'LIBCRYPTO.OLB
|
||||
$ LIB_NAME := 'EXE_DIR'SSL_LIBCRYPTO'LIB32'.OLB
|
||||
$!
|
||||
$! Define The CRYPTO-LIB We Are To Use.
|
||||
$!
|
||||
$ CRYPTO_LIB := 'EXE_DIR'LIBCRYPTO.OLB
|
||||
$ CRYPTO_LIB := 'EXE_DIR'SSL_LIBCRYPTO'LIB32'.OLB
|
||||
$!
|
||||
$! Check To See If We Already Have A "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library...
|
||||
$!
|
||||
@@ -191,7 +232,7 @@ $ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64"
|
||||
$ LIB_CAMELLIA = "camellia,cmll_misc,cmll_ecb,cmll_cbc,cmll_ofb,"+ -
|
||||
"cmll_cfb,cmll_ctr"
|
||||
$ LIB_SEED = "seed,seed_ecb,seed_cbc,seed_cfb,seed_ofb"
|
||||
$ LIB_MODES = "cbc128,ctr128,cfb128,ofb128"
|
||||
$ LIB_MODES = "cbc128,ctr128,cts128,cfb128,ofb128"
|
||||
$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper"
|
||||
$ IF F$TRNLNM("OPENSSL_NO_ASM") .OR. ARCH .NES. "VAX" THEN -
|
||||
LIB_BN_ASM = "bn_asm"
|
||||
@@ -299,15 +340,23 @@ $ LIB_JPAKE = "jpake,jpake_err"
|
||||
$!
|
||||
$! Setup exceptional compilations
|
||||
$!
|
||||
$ ! Add definitions for no threads on OpenVMS 7.1 and higher
|
||||
$ CC3_SHOWN = 0
|
||||
$ CC4_SHOWN = 0
|
||||
$ CC5_SHOWN = 0
|
||||
$ CC6_SHOWN = 0
|
||||
$!
|
||||
$! The following lists must have leading and trailing commas, and no
|
||||
$! embedded spaces. (They are scanned for ",name,".)
|
||||
$!
|
||||
$ ! Add definitions for no threads on OpenVMS 7.1 and higher.
|
||||
$ COMPILEWITH_CC3 = ",bss_rtcp,"
|
||||
$ ! Disable the DOLLARID warning
|
||||
$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,o_dir"
|
||||
$ ! Disable disjoint optimization
|
||||
$ ! Disable the DOLLARID warning. Not needed with /STANDARD=RELAXED.
|
||||
$ COMPILEWITH_CC4 = "" !!! ",a_utctm,bss_log,o_time,o_dir,"
|
||||
$ ! Disable disjoint optimization on VAX with DECC.
|
||||
$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + -
|
||||
"seed,sha_dgst,sha1dgst,rmd_dgst,bf_enc,"
|
||||
$ ! Disable the MIXLINKAGE warning
|
||||
$ COMPILEWITH_CC6 = ",enc_read,set_key,"
|
||||
$ ! Disable the MIXLINKAGE warning.
|
||||
$ COMPILEWITH_CC6 = "" !!! ",enc_read,set_key,"
|
||||
$!
|
||||
$! Figure Out What Other Modules We Are To Build.
|
||||
$!
|
||||
@@ -367,7 +416,7 @@ $!
|
||||
$ IF F$TYPE('LIB_MODULE') .EQS. ""
|
||||
$ THEN
|
||||
$ WRITE SYS$ERROR ""
|
||||
$ WRITE SYS$ERROR "The module ",MODULE_NAME," does not exist. Continuing..."
|
||||
$ WRITE SYS$ERROR "The module ",MODULE_NAME1," does not exist. Continuing..."
|
||||
$ WRITE SYS$ERROR ""
|
||||
$ GOTO MODULE_NEXT
|
||||
$ ENDIF
|
||||
@@ -513,31 +562,60 @@ $ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME," File. (",BUILDALL,",",STATE,"
|
||||
$ ENDIF
|
||||
$ IF (MODULE_NAME.NES."")
|
||||
$ THEN
|
||||
$ WRITE SYS$OUTPUT " ",FILE_NAME,""
|
||||
$ WRITE SYS$OUTPUT " ",FILE_NAME,""
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Compile The File.
|
||||
$!
|
||||
$ ON ERROR THEN GOTO NEXT_FILE
|
||||
$ FILE_NAME0 = F$ELEMENT(0,".",FILE_NAME)
|
||||
$ FILE_NAME0 = ","+ F$ELEMENT(0,".",FILE_NAME)+ ","
|
||||
$ IF FILE_NAME - ".mar" .NES. FILE_NAME
|
||||
$ THEN
|
||||
$ MACRO/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ IF COMPILEWITH_CC3 - FILE_NAME0 .NES. COMPILEWITH_CC3
|
||||
$ THEN
|
||||
$ write sys$output " \Using special rule (3)"
|
||||
$ if (.not. CC3_SHOWN)
|
||||
$ then
|
||||
$ CC3_SHOWN = 1
|
||||
$ x = " "+ CC3
|
||||
$ write /symbol sys$output x
|
||||
$ endif
|
||||
$ CC3/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ IF COMPILEWITH_CC4 - FILE_NAME0 .NES. COMPILEWITH_CC4
|
||||
$ THEN
|
||||
$ write /symbol sys$output " \Using special rule (4)"
|
||||
$ if (.not. CC4_SHOWN)
|
||||
$ then
|
||||
$ CC4_SHOWN = 1
|
||||
$ x = " "+ CC4
|
||||
$ write /symbol sys$output x
|
||||
$ endif
|
||||
$ CC4/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ IF COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5
|
||||
$ IF CC5_DIFFERENT .AND. -
|
||||
(COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5)
|
||||
$ THEN
|
||||
$ write sys$output " \Using special rule (5)"
|
||||
$ if (.not. CC5_SHOWN)
|
||||
$ then
|
||||
$ CC5_SHOWN = 1
|
||||
$ x = " "+ CC5
|
||||
$ write /symbol sys$output x
|
||||
$ endif
|
||||
$ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ IF COMPILEWITH_CC6 - FILE_NAME0 .NES. COMPILEWITH_CC6
|
||||
$ THEN
|
||||
$ write sys$output " \Using special rule (6)"
|
||||
$ if (.not. CC6_SHOWN)
|
||||
$ then
|
||||
$ CC6_SHOWN = 1
|
||||
$ x = " "+ CC6
|
||||
$ write /symbol sys$output x
|
||||
$ endif
|
||||
$ CC6/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
$ ELSE
|
||||
$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
|
||||
@@ -584,38 +662,22 @@ $! SHOW SYMBOL APPLICATION*
|
||||
$!
|
||||
$! Tell the user what happens
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT " ",APPLICATION,".exe"
|
||||
$ WRITE SYS$OUTPUT " ",APPLICATION,".exe"
|
||||
$!
|
||||
$! Link The Program.
|
||||
$!
|
||||
$ ON ERROR THEN GOTO NEXT_APPLICATION
|
||||
$!
|
||||
$! Check To See If We Are To Link With A Specific TCP/IP Library.
|
||||
$! Link With A TCP/IP Library.
|
||||
$!
|
||||
$ IF (TCPIP_LIB.NES."")
|
||||
$ THEN
|
||||
$ LINK /'DEBUGGER' /'LINKMAP' /'TRACEBACK' -
|
||||
/EXE='EXE_DIR''APPLICATION'.EXE -
|
||||
'OBJ_DIR''APPLICATION_OBJECTS', -
|
||||
'CRYPTO_LIB'/LIBRARY -
|
||||
'TCPIP_LIB' -
|
||||
'ZLIB_LIB' -
|
||||
,'OPT_FILE' /OPTIONS
|
||||
$!
|
||||
$! Link With A TCP/IP Library.
|
||||
$!
|
||||
$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
|
||||
'OBJ_DIR''APPLICATION_OBJECTS', -
|
||||
'CRYPTO_LIB'/LIBRARY, -
|
||||
'TCPIP_LIB','OPT_FILE'/OPTION
|
||||
$!
|
||||
$! Else...
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
$! Don't Link With A TCP/IP Library.
|
||||
$!
|
||||
$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
|
||||
'OBJ_DIR''APPLICATION_OBJECTS',-
|
||||
'CRYPTO_LIB'/LIBRARY, -
|
||||
'OPT_FILE'/OPTION
|
||||
$!
|
||||
$! End The TCP/IP Library Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$ GOTO NEXT_APPLICATION
|
||||
$ APPLICATION_DONE:
|
||||
$ ENDIF
|
||||
@@ -654,7 +716,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File To Link Agianst
|
||||
! Default System Options File To Link Against
|
||||
! The Sharable VAX C Runtime Library.
|
||||
!
|
||||
SYS$SHARE:VAXCRTL.EXE/SHARE
|
||||
@@ -683,7 +745,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File To Link Agianst
|
||||
! Default System Options File To Link Against
|
||||
! The Sharable C Runtime Library.
|
||||
!
|
||||
GNU_CC:[000000]GCCLIB/LIBRARY
|
||||
@@ -718,7 +780,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File To Link Agianst
|
||||
! Default System Options File To Link Against
|
||||
! The Sharable DEC C Runtime Library.
|
||||
!
|
||||
SYS$SHARE:DECC$SHR.EXE/SHARE
|
||||
@@ -733,7 +795,7 @@ $!
|
||||
$ CREATE 'OPT_FILE'
|
||||
$DECK
|
||||
!
|
||||
! Default System Options File For non-VAX To Link Agianst
|
||||
! Default System Options File For non-VAX To Link Against
|
||||
! The Sharable C Runtime Library.
|
||||
!
|
||||
SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
|
||||
@@ -754,7 +816,7 @@ $ ENDIF
|
||||
$!
|
||||
$! Tell The User What Linker Option File We Are Using.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."
|
||||
$ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."
|
||||
$!
|
||||
$! Time To RETURN.
|
||||
$!
|
||||
@@ -777,12 +839,12 @@ $! Else...
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
$! Else, Check To See If P1 Has A Valid Arguement.
|
||||
$! Else, Check To See If P1 Has A Valid Argument.
|
||||
$!
|
||||
$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS")
|
||||
$ THEN
|
||||
$!
|
||||
$! A Valid Arguement.
|
||||
$! A Valid Argument.
|
||||
$!
|
||||
$ BUILDALL = P1
|
||||
$!
|
||||
@@ -801,8 +863,8 @@ $ WRITE SYS$OUTPUT " APPS : To Compile Just The [.xxx.EXE.CRYPTO]*.E
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
|
||||
$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
|
||||
$ WRITE SYS$OUTPUT " ALPHA[64]: Alpha Architecture."
|
||||
$ WRITE SYS$OUTPUT " IA64[64] : IA64 Architecture."
|
||||
$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$!
|
||||
@@ -810,7 +872,7 @@ $! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$! End The Valid Arguement Check.
|
||||
$! End The Valid Argument Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
@@ -823,15 +885,16 @@ $!
|
||||
$ IF (P2.EQS."NODEBUG")
|
||||
$ THEN
|
||||
$!
|
||||
$! P2 Is NODEBUG, So Compile Without The Debugger Information.
|
||||
$! P2 Is NODEBUG, So Compile Without The Debugger Information.
|
||||
$!
|
||||
$ DEBUGGER = "NODEBUG"
|
||||
$ TRACEBACK = "NOTRACEBACK"
|
||||
$ GCC_OPTIMIZE = "OPTIMIZE"
|
||||
$ CC_OPTIMIZE = "OPTIMIZE"
|
||||
$ MACRO_OPTIMIZE = "OPTIMIZE"
|
||||
$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
|
||||
$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
|
||||
$ DEBUGGER = "NODEBUG"
|
||||
$ LINKMAP = "NOMAP"
|
||||
$ TRACEBACK = "NOTRACEBACK"
|
||||
$ GCC_OPTIMIZE = "OPTIMIZE"
|
||||
$ CC_OPTIMIZE = "OPTIMIZE"
|
||||
$ MACRO_OPTIMIZE = "OPTIMIZE"
|
||||
$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
|
||||
$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
|
||||
$ ELSE
|
||||
$!
|
||||
$! Check To See If We Are To Compile With Debugger Information.
|
||||
@@ -842,6 +905,7 @@ $!
|
||||
$! Compile With Debugger Information.
|
||||
$!
|
||||
$ DEBUGGER = "DEBUG"
|
||||
$ LINKMAP = "MAP"
|
||||
$ TRACEBACK = "TRACEBACK"
|
||||
$ GCC_OPTIMIZE = "NOOPTIMIZE"
|
||||
$ CC_OPTIMIZE = "NOOPTIMIZE"
|
||||
@@ -850,7 +914,7 @@ $ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
|
||||
$ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
|
||||
$ ELSE
|
||||
$!
|
||||
$! They Entered An Invalid Option..
|
||||
$! They Entered An Invalid Option.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
|
||||
@@ -863,7 +927,7 @@ $! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$! End The Valid Arguement Check.
|
||||
$! End The Valid Argument Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
@@ -905,6 +969,60 @@ $! End The P5 Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Check P7 (POINTER_SIZE).
|
||||
$!
|
||||
$ IF (P7 .NES. "") .AND. (ARCH .NES. "VAX")
|
||||
$ THEN
|
||||
$!
|
||||
$ IF (P7 .EQS. "32")
|
||||
$ THEN
|
||||
$ POINTER_SIZE = " /POINTER_SIZE=32"
|
||||
$ ELSE
|
||||
$ POINTER_SIZE = F$EDIT( P7, "COLLAPSE, UPCASE")
|
||||
$ IF ((POINTER_SIZE .EQS. "64") .OR. -
|
||||
(POINTER_SIZE .EQS. "64=") .OR. -
|
||||
(POINTER_SIZE .EQS. "64=ARGV"))
|
||||
$ THEN
|
||||
$ ARCHD = ARCH+ "_64"
|
||||
$ LIB32 = ""
|
||||
$ POINTER_SIZE = " /POINTER_SIZE=64"
|
||||
$ ELSE
|
||||
$!
|
||||
$! Tell The User Entered An Invalid Option.
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ", P7, -
|
||||
" Is Invalid. The Valid Options Are:"
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" """" : Compile with default (short) pointers."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 32 : Compile with 32-bit (short) pointers."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 64 : Compile with 64-bit (long) pointers (auto ARGV)."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 64= : Compile with 64-bit (long) pointers (no ARGV)."
|
||||
$ WRITE SYS$OUTPUT -
|
||||
" 64=ARGV : Compile with 64-bit (long) pointers (ARGV)."
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$!
|
||||
$! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! End The P7 (POINTER_SIZE) Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Set basic C compiler /INCLUDE directories.
|
||||
$!
|
||||
$ CC_INCLUDES = "SYS$DISK:[.''ARCHD'],SYS$DISK:[],SYS$DISK:[-],"+ -
|
||||
"SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1]"
|
||||
$!
|
||||
$! Check To See If P3 Is Blank.
|
||||
$!
|
||||
$ IF (P3.EQS."")
|
||||
@@ -1005,11 +1123,64 @@ $ CCDEFS = "TCPIP_TYPE_''P4',DSO_VMS"
|
||||
$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
|
||||
$ CCEXTRAFLAGS = ""
|
||||
$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
|
||||
$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
|
||||
$ CCDISABLEWARNINGS = "" !!! "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
|
||||
$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
|
||||
CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
|
||||
$!
|
||||
$! Check To See If The User Entered A Valid Paramter.
|
||||
$! Check To See If We Have A ZLIB Option.
|
||||
$!
|
||||
$ ZLIB = P8
|
||||
$ IF (ZLIB .NES. "")
|
||||
$ THEN
|
||||
$!
|
||||
$! Check for expected ZLIB files.
|
||||
$!
|
||||
$ err = 0
|
||||
$ file1 = f$parse( "zlib.h", ZLIB, , , "SYNTAX_ONLY")
|
||||
$ if (f$search( file1) .eqs. "")
|
||||
$ then
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
|
||||
$ WRITE SYS$OUTPUT " Can't find header: ''file1'"
|
||||
$ err = 1
|
||||
$ endif
|
||||
$ file1 = f$parse( "A.;", ZLIB)- "A.;"
|
||||
$!
|
||||
$ file2 = f$parse( ZLIB, "libz.olb", , , "SYNTAX_ONLY")
|
||||
$ if (f$search( file2) .eqs. "")
|
||||
$ then
|
||||
$ if (err .eq. 0)
|
||||
$ then
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
|
||||
$ endif
|
||||
$ WRITE SYS$OUTPUT " Can't find library: ''file2'"
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ err = err+ 2
|
||||
$ endif
|
||||
$ if (err .eq. 1)
|
||||
$ then
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ endif
|
||||
$!
|
||||
$ if (err .ne. 0)
|
||||
$ then
|
||||
$ EXIT
|
||||
$ endif
|
||||
$!
|
||||
$ CCDEFS = """ZLIB=1"", "+ CCDEFS
|
||||
$ CC_INCLUDES = CC_INCLUDES+ ", "+ file1
|
||||
$ ZLIB_LIB = ", ''file2' /library"
|
||||
$!
|
||||
$! Print info
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "ZLIB library spec: ", file2
|
||||
$!
|
||||
$! End The ZLIB Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Check To See If The User Entered A Valid Parameter.
|
||||
$!
|
||||
$ IF (P3.EQS."VAXC").OR.(P3.EQS."DECC").OR.(P3.EQS."GNUC")
|
||||
$ THEN
|
||||
@@ -1032,14 +1203,14 @@ $!
|
||||
$ CC = "CC"
|
||||
$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
|
||||
THEN CC = "CC/DECC"
|
||||
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
|
||||
"/NOLIST/PREFIX=ALL" + -
|
||||
"/INCLUDE=(SYS$DISK:[],SYS$DISK:[.''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
|
||||
CCEXTRAFLAGS
|
||||
$ CC = CC + " /''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=RELAXED"+ -
|
||||
"''POINTER_SIZE' /NOLIST /PREFIX=ALL" + -
|
||||
" /INCLUDE=(''CC_INCLUDES')"+ -
|
||||
CCEXTRAFLAGS
|
||||
$!
|
||||
$! Define The Linker Options File Name.
|
||||
$!
|
||||
$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
|
||||
$ OPT_FILE = "VAX_DECC_OPTIONS.OPT"
|
||||
$!
|
||||
$! End DECC Check.
|
||||
$!
|
||||
@@ -1068,7 +1239,7 @@ $ EXIT
|
||||
$ ENDIF
|
||||
$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
|
||||
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
|
||||
"/INCLUDE=(SYS$DISK:[],SYS$DISK:[.''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
|
||||
"/INCLUDE=(''CC_INCLUDES')"+ -
|
||||
CCEXTRAFLAGS
|
||||
$ CCDEFS = """VAXC""," + CCDEFS
|
||||
$!
|
||||
@@ -1078,7 +1249,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
|
||||
$!
|
||||
$! Define The Linker Options File Name.
|
||||
$!
|
||||
$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
|
||||
$ OPT_FILE = "VAX_VAXC_OPTIONS.OPT"
|
||||
$!
|
||||
$! End VAXC Check
|
||||
$!
|
||||
@@ -1100,12 +1271,12 @@ $!
|
||||
$! Use GNU C...
|
||||
$!
|
||||
$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
|
||||
"/INCLUDE=(SYS$DISK:[],SYS$DISK:[.''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
|
||||
"/INCLUDE=(''CC_INCLUDES')"+ -
|
||||
CCEXTRAFLAGS
|
||||
$!
|
||||
$! Define The Linker Options File Name.
|
||||
$!
|
||||
$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
|
||||
$ OPT_FILE = "VAX_GNUC_OPTIONS.OPT"
|
||||
$!
|
||||
$! End The GNU C Check.
|
||||
$!
|
||||
@@ -1126,22 +1297,24 @@ $ CC6DISABLEWARNINGS = "MIXLINKAGE"
|
||||
$ ELSE
|
||||
$ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID"
|
||||
$ CC6DISABLEWARNINGS = CCDISABLEWARNINGS + ",MIXLINKAGE"
|
||||
$ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
|
||||
$ CCDISABLEWARNINGS = " /WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
|
||||
$ ENDIF
|
||||
$ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))"
|
||||
$ CC6DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC6DISABLEWARNINGS + "))"
|
||||
$ CC4DISABLEWARNINGS = " /WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))"
|
||||
$ CC6DISABLEWARNINGS = " /WARNING=(DISABLE=(" + CC6DISABLEWARNINGS + "))"
|
||||
$ ELSE
|
||||
$ CCDISABLEWARNINGS = ""
|
||||
$ CC4DISABLEWARNINGS = ""
|
||||
$ CC6DISABLEWARNINGS = ""
|
||||
$ ENDIF
|
||||
$ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS
|
||||
$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
|
||||
$ CC3 = CC + " /DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS
|
||||
$ CC = CC + " /DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
|
||||
$ IF ARCH .EQS. "VAX" .AND. COMPILER .EQS. "DECC" .AND. P2 .NES. "DEBUG"
|
||||
$ THEN
|
||||
$ CC5 = CC + "/OPTIMIZE=NODISJOINT"
|
||||
$ CC5 = CC + " /OPTIMIZE=NODISJOINT"
|
||||
$ CC5_DIFFERENT = 1
|
||||
$ ELSE
|
||||
$ CC5 = CC + "/NOOPTIMIZE"
|
||||
$ CC5 = CC
|
||||
$ CC5_DIFFERENT = 0
|
||||
$ ENDIF
|
||||
$ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS
|
||||
$ CC6 = CC - CCDISABLEWARNINGS + CC6DISABLEWARNINGS
|
||||
@@ -1150,7 +1323,7 @@ $! Show user the result
|
||||
$!
|
||||
$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC
|
||||
$!
|
||||
$! Else The User Entered An Invalid Arguement.
|
||||
$! Else The User Entered An Invalid Argument.
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
@@ -1168,7 +1341,7 @@ $! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$! End The Valid Arguement Check.
|
||||
$! End The Valid Argument Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
@@ -1194,7 +1367,7 @@ $ THEN
|
||||
$!
|
||||
$! Set the library to use SOCKETSHR
|
||||
$!
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
|
||||
$!
|
||||
$! Done with SOCKETSHR
|
||||
$!
|
||||
@@ -1220,13 +1393,13 @@ $ THEN
|
||||
$!
|
||||
$! Set the library to use UCX.
|
||||
$!
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
|
||||
$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
|
||||
$ THEN
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT /OPTIONS"
|
||||
$ ELSE
|
||||
$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
|
||||
TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT"
|
||||
TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT /OPTIONS"
|
||||
$ ENDIF
|
||||
$!
|
||||
$! Done with UCX
|
||||
@@ -1240,7 +1413,7 @@ $ THEN
|
||||
$!
|
||||
$! Set the library to use TCPIP (post UCX).
|
||||
$!
|
||||
$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
|
||||
$ TCPIP_LIB = ",SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
|
||||
$!
|
||||
$! Done with TCPIP
|
||||
$!
|
||||
@@ -1261,9 +1434,9 @@ $ ENDIF
|
||||
$!
|
||||
$! Print info
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
|
||||
$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB- ","
|
||||
$!
|
||||
$! Else The User Entered An Invalid Arguement.
|
||||
$! Else The User Entered An Invalid Argument.
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
|
@@ -545,6 +545,7 @@ void OpenSSLDie(const char *file,int line,const char *assertion);
|
||||
|
||||
unsigned long *OPENSSL_ia32cap_loc(void);
|
||||
#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
|
||||
int OPENSSL_isservice(void);
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
/* The following lines are auto generated by the script mkerr.pl. Any changes
|
||||
|
@@ -659,13 +659,13 @@ $! Else...
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
$! Else, Check To See If P1 Has A Valid Arguement.
|
||||
$! Else, Check To See If P1 Has A Valid Argument.
|
||||
$!
|
||||
$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DESTEST").OR.(P1.EQS."SPEED") -
|
||||
.OR.(P1.EQS."RPW").OR.(P1.EQS."DES").OR.(P1.EQS."DES_OPTS")
|
||||
$ THEN
|
||||
$!
|
||||
$! A Valid Arguement.
|
||||
$! A Valid Argument.
|
||||
$!
|
||||
$ BUILDALL = P1
|
||||
$!
|
||||
@@ -678,7 +678,7 @@ $!
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
|
||||
$ WRITE SYS$OUTPUT ""
|
||||
$ WRITE SYS$OUTPUT " ALL : Just Build Everything.
|
||||
$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
|
||||
$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.CRYPTO.DES]LIBDES.OLB Library."
|
||||
$ WRITE SYS$OUTPUT " DESTEST : To Compile Just The [.xxx.EXE.CRYPTO.DES]DESTEST.EXE Program."
|
||||
$ WRITE SYS$OUTPUT " SPEED : To Compile Just The [.xxx.EXE.CRYPTO.DES]SPEED.EXE Program."
|
||||
@@ -697,7 +697,7 @@ $! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$! End The Valid Arguement Check.
|
||||
$! End The Valid Argument Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
@@ -754,7 +754,7 @@ $! Time To EXIT.
|
||||
$!
|
||||
$ EXIT
|
||||
$!
|
||||
$! End The Valid Arguement Check.
|
||||
$! End The Valid Argument Check.
|
||||
$!
|
||||
$ ENDIF
|
||||
$!
|
||||
@@ -978,7 +978,7 @@ $! Show user the result
|
||||
$!
|
||||
$ WRITE SYS$OUTPUT "Main Compiling Command: ",CC
|
||||
$!
|
||||
$! Else The User Entered An Invalid Arguement.
|
||||
$! Else The User Entered An Invalid Argument.
|
||||
$!
|
||||
$ ELSE
|
||||
$!
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user