Compare commits
143 Commits
OpenSSL-fi
...
OpenSSL_0_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2bf03f2389 | ||
![]() |
d761421e1d | ||
![]() |
2339c5d722 | ||
![]() |
dd00266757 | ||
![]() |
bb99ce5f80 | ||
![]() |
49f42ec0f6 | ||
![]() |
91d509f0d9 | ||
![]() |
d5e858c55f | ||
![]() |
fb8fcce2ac | ||
![]() |
d4736ae701 | ||
![]() |
3e1158522a | ||
![]() |
57191f86d9 | ||
![]() |
0a89c575de | ||
![]() |
4c860910df | ||
![]() |
0fc3d51b7d | ||
![]() |
c4b0d7879e | ||
![]() |
aab1ec3f36 | ||
![]() |
fbfa11fb29 | ||
![]() |
284498fcef | ||
![]() |
07d9808496 | ||
![]() |
4ab0088bfe | ||
![]() |
3bd1690bfb | ||
![]() |
29f4b05954 | ||
![]() |
48ca0c99b2 | ||
![]() |
015052cf7b | ||
![]() |
9ce3ee47ba | ||
![]() |
2e3fd54337 | ||
![]() |
625782f7ee | ||
![]() |
1c90899eef | ||
![]() |
4f2b7d48b1 | ||
![]() |
458c3900e1 | ||
![]() |
ba75b4e750 | ||
![]() |
ab011d51be | ||
![]() |
898d9b1a87 | ||
![]() |
4f9a9d2b79 | ||
![]() |
346f2f93e1 | ||
![]() |
25b0e072dd | ||
![]() |
dc13c882fb | ||
![]() |
12a52467c8 | ||
![]() |
22e6c73dcc | ||
![]() |
53b9696f3f | ||
![]() |
7e4fe4662b | ||
![]() |
18fd413f37 | ||
![]() |
80ed5f84de | ||
![]() |
b48111df7c | ||
![]() |
73e3edd70d | ||
![]() |
d4cfbdf2c0 | ||
![]() |
294f03a812 | ||
![]() |
272f9f3d27 | ||
![]() |
927a28ba3b | ||
![]() |
a938c4284e | ||
![]() |
7a44a0cee7 | ||
![]() |
82430309ac | ||
![]() |
c2079de880 | ||
![]() |
967ead7269 | ||
![]() |
c9255df519 | ||
![]() |
27c824a1c9 | ||
![]() |
5b96d1ccf9 | ||
![]() |
29c0866b38 | ||
![]() |
0214ea0dfe | ||
![]() |
80355002a1 | ||
![]() |
0e36825228 | ||
![]() |
95a8f1469f | ||
![]() |
afdbadc704 | ||
![]() |
004cc26abf | ||
![]() |
35a924c576 | ||
![]() |
99279ac97a | ||
![]() |
87605ca1e2 | ||
![]() |
7cc586f117 | ||
![]() |
c263a6092c | ||
![]() |
f92fd85400 | ||
![]() |
e71520ddd6 | ||
![]() |
275f34b5d2 | ||
![]() |
50fbb6ed36 | ||
![]() |
34fdacbd35 | ||
![]() |
77f2d20dbc | ||
![]() |
0dbfbf26cb | ||
![]() |
2863a6878f | ||
![]() |
ae46e91e4d | ||
![]() |
865a90eb4f | ||
![]() |
0269c4507c | ||
![]() |
a5d3574984 | ||
![]() |
1040deb0c5 | ||
![]() |
05ea800faf | ||
![]() |
341f87862c | ||
![]() |
f805d30769 | ||
![]() |
4fb9472cc2 | ||
![]() |
a8098740c6 | ||
![]() |
e3af0d041e | ||
![]() |
28cfda9f30 | ||
![]() |
a313e23fff | ||
![]() |
4d2a292e8a | ||
![]() |
5a84b7fc2d | ||
![]() |
d8e660a6dc | ||
![]() |
761f3b403b | ||
![]() |
4570d29404 | ||
![]() |
14346b3456 | ||
![]() |
769f58aaaa | ||
![]() |
a166e96d16 | ||
![]() |
8dd8ce1dc3 | ||
![]() |
4c5979a107 | ||
![]() |
649ab2dcfa | ||
![]() |
71fc9b37ae | ||
![]() |
283aedf498 | ||
![]() |
1a56614af2 | ||
![]() |
693c33e407 | ||
![]() |
d9a9aa027d | ||
![]() |
b22250bb67 | ||
![]() |
d446120527 | ||
![]() |
bb9d68489c | ||
![]() |
affaea59fe | ||
![]() |
81fc4c93ef | ||
![]() |
8957121c14 | ||
![]() |
50241bc84e | ||
![]() |
e7f077f1ba | ||
![]() |
c3b82c7610 | ||
![]() |
2c12e7f6f5 | ||
![]() |
8db10d9ac4 | ||
![]() |
c3cc4662af | ||
![]() |
22892f9803 | ||
![]() |
27eb115fb6 | ||
![]() |
51a596ef4f | ||
![]() |
97de8bd1e0 | ||
![]() |
1cb7e5be5b | ||
![]() |
84dd04e761 | ||
![]() |
2ac061e487 | ||
![]() |
7cdb81582c | ||
![]() |
8f33b40302 | ||
![]() |
e600614ef5 | ||
![]() |
02581dea1f | ||
![]() |
40ad08bcc2 | ||
![]() |
9c4456a13f | ||
![]() |
f4d0392faa | ||
![]() |
45ba6cfe03 | ||
![]() |
4f23a0c797 | ||
![]() |
f6c32bbf2b | ||
![]() |
d040c951f0 | ||
![]() |
69abfb0e33 | ||
![]() |
9a1daf8482 | ||
![]() |
9de6dc3af3 | ||
![]() |
248834dcaa | ||
![]() |
11a7da7c9f | ||
![]() |
9fea0b9937 |
373
CHANGES
373
CHANGES
@@ -2,311 +2,88 @@
|
||||
OpenSSL CHANGES
|
||||
_______________
|
||||
|
||||
Changes between 0.9.8e and 0.9.8f-fips [xx XXX xxxx]
|
||||
Changes between 0.9.8e and 0.9.8f [11 Oct 2007]
|
||||
|
||||
*) DTLS Handshake overhaul. There were longstanding issues with
|
||||
OpenSSL DTLS implementation, which were making it impossible for
|
||||
RFC 4347 compliant client to communicate with OpenSSL server.
|
||||
Unfortunately just fixing these incompatibilities would "cut off"
|
||||
pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
|
||||
server keeps tolerating non RFC compliant syntax. The opposite is
|
||||
not true, 0.9.8f client can not communicate with earlier server.
|
||||
This update even addresses CVE-2007-4995.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) Add option --with-fipslibdir to specify location of fipscanister.lib
|
||||
and friends. When combined with fips build option fipscanister.lib is
|
||||
not built but linked from the supplied directory. Always link fips
|
||||
utilities against fiscanister.lib only except in fipsdso builds.
|
||||
*) Changes to avoid need for function casts in OpenSSL: some compilers
|
||||
(gcc 4.2 and later) reject their use.
|
||||
[Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
|
||||
Steve Henson]
|
||||
|
||||
*) Add RFC4507 support to OpenSSL. This includes the corrections in
|
||||
RFC4507bis. The encrypted ticket format is an encrypted encoded
|
||||
SSL_SESSION structure, that way new session features are automatically
|
||||
supported.
|
||||
|
||||
If a client application caches session in an SSL_SESSION structure
|
||||
support is transparent because tickets are now stored in the encoded
|
||||
SSL_SESSION.
|
||||
|
||||
The SSL_CTX structure automatically generates keys for ticket
|
||||
protection in servers so again support should be possible
|
||||
with no application modification.
|
||||
|
||||
If a client or server wishes to disable RFC4507 support then the option
|
||||
SSL_OP_NO_TICKET can be set.
|
||||
|
||||
Add a TLS extension debugging callback to allow the contents of any client
|
||||
or server extensions to be examined.
|
||||
|
||||
This work was sponsored by Google.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add SSE2 instruction support to WIN32 build. These will be compiled
|
||||
by default and used if an appopriate CPU is detected. Some older versions
|
||||
of NASM or MASM which don't support SSE2 will need to be updated.
|
||||
*) Add initial support for TLS extensions, specifically for the server_name
|
||||
extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
|
||||
have new members for a host name. The SSL data structure has an
|
||||
additional member SSL_CTX *initial_ctx so that new sessions can be
|
||||
stored in that context to allow for session resumption, even after the
|
||||
SSL has been switched to a new SSL_CTX in reaction to a client's
|
||||
server_name extension.
|
||||
|
||||
New functions (subject to change):
|
||||
|
||||
SSL_get_servername()
|
||||
SSL_get_servername_type()
|
||||
SSL_set_SSL_CTX()
|
||||
|
||||
New CTRL codes and macros (subject to change):
|
||||
|
||||
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
|
||||
- SSL_CTX_set_tlsext_servername_callback()
|
||||
SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
|
||||
- SSL_CTX_set_tlsext_servername_arg()
|
||||
SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
|
||||
|
||||
openssl s_client has a new '-servername ...' option.
|
||||
|
||||
openssl s_server has new options '-servername_host ...', '-cert2 ...',
|
||||
'-key2 ...', '-servername_fatal' (subject to change). This allows
|
||||
testing the HostName extension for a specific single host name ('-cert'
|
||||
and '-key' remain fallbacks for handshakes without HostName
|
||||
negotiation). If the unrecogninzed_name alert has to be sent, this by
|
||||
default is a warning; it becomes fatal with the '-servername_fatal'
|
||||
option.
|
||||
|
||||
[Peter Sylvester, Remy Allais, Christophe Renou, Steve Henson]
|
||||
|
||||
*) Add AES and SSE2 assembly language support to VC++ build.
|
||||
[Steve Henson]
|
||||
|
||||
*) Tolerate DigestInfo structure with absent parameters in FIPS mode
|
||||
(as required by several standards).
|
||||
[Steve Henson]
|
||||
*) Mitigate attack on final subtraction in Montgomery reduction.
|
||||
[Andy Polyakov]
|
||||
|
||||
*) Enhance mkfipsscr.pl to cope with different directory layouts. It now
|
||||
relies on the filename and makes no assumptions about the pathname.
|
||||
In the case of PSS it scans the file to determine the salt length.
|
||||
Paths can be filtered. Also reports duplicate and missing files.
|
||||
[Steve Henson]
|
||||
|
||||
*) Updates to WIN32 build system. Make use of AES assembly language routines.
|
||||
Use assembly language routines in FIPS compilation.
|
||||
[Steve Henson]
|
||||
|
||||
*) Use standard implementations of SHAx, DES, AES under crypto/ in FIPS
|
||||
mode to avoid having to maintain two versions. This will also make use
|
||||
of appropriate assembly language optimizations.
|
||||
[Steve Henson]
|
||||
|
||||
*) Check for selftest status in all crypto operations and exit with a
|
||||
fatal error if selftest failed.
|
||||
[Steve Henson]
|
||||
|
||||
*) New flag in EVP_CIPHER: EVP_CIPH_FLAG_DEFAULT_ASN1. This will
|
||||
automatically use EVP_CIPHER_{get,set}_asn1_iv and avoid the
|
||||
need for any ASN1 dependencies in FIPS library. Move AES and 3DES
|
||||
cipher definitions to fips library and modify AES and 3DES algorithm
|
||||
tests and self tests to use EVP.
|
||||
[Steve Henson]
|
||||
|
||||
*) Move EVP cipher code into enc_min.c to support a minimal implementation
|
||||
for use by FIPS applications.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add algorithm config module. Currently just handles setting FIPS mode.
|
||||
[Steve Henson]
|
||||
|
||||
*) Rewrite self tests and pairwise tests to use EVP. Add more extensive
|
||||
self tests for RSA in all digests and modes.
|
||||
[Steve Henson]
|
||||
|
||||
*) New flags RSA_FIPS_METHOD and DSA_FIPS_METHOD to indicate a method is
|
||||
allowed in FIPS mode. Disable direct low level RSA and DSA signature
|
||||
operations in FIPS mode so all operations have to be made via EVP.
|
||||
[Steve Henson]
|
||||
|
||||
*) New flag EVP_MD_FLAG_SVCTX which passes EVP_MD_CTX and key to underlying
|
||||
sign/verify method. This permits the method to perform finalization
|
||||
and signing itself and have access to the EVP_MD_CTX structure in case
|
||||
additional parameters are needed. Modify fips_{dsa,rsa}_{sign,verify}
|
||||
to use EVP_MD_FLAG_SVCTX and support PSS and X9.31 RSA modes.
|
||||
Modify RSA algorithm test programs to use new parameters.
|
||||
[Steve Henson]
|
||||
|
||||
*) Add small standalone ASN1 encoder/decoder to handle DSA signature format.
|
||||
Modify test, algorithm test and selftest routines to use EVP for DSA.
|
||||
Move FIPS implementation of EVP_sha*() and EVP_dss1() under fips-1.0.
|
||||
[Steve Henson]
|
||||
|
||||
*) Modify VC++ build system to rename .text and .rdata segments in
|
||||
FIPS sources to .fipst${a,b,c}, and $fipsr${a,b,c} and place them
|
||||
in a static library fipscanister.lib using a perl script. These are
|
||||
then combined by the VC++ linker into a single segment in suffix
|
||||
order but without the suffix (i.e. .fipstx, .fipsrd and .fipsda).
|
||||
This serves the same purpose as fipscanister.o on other platforms
|
||||
but has the advantage that it can be created using only standard VC++
|
||||
utilities.
|
||||
[Steve Henson and Andy Polyakov]
|
||||
|
||||
*) Modify WIN32 build system to forward references functions implemented
|
||||
in FIPS DLL.
|
||||
[Steve Henson]
|
||||
|
||||
*) Move error library so that all lhash dependencies are in a separate
|
||||
file. Include a simplified ERR_get_state() function for stand alone
|
||||
FIPS applications. Include a initialization function OPENSSL_init()
|
||||
to set all callbacks, automatically call OPENSSL_init() once when
|
||||
a cipher or digest is added. This should mean that almost all applications
|
||||
set the callbacks automatically. Exceptional cases can call OPENSSL_init()
|
||||
manually like this:
|
||||
|
||||
#ifdef OPENSSL_HAVE_INIT
|
||||
OPENSSL_init();
|
||||
#endif
|
||||
before starting any threads.
|
||||
[Steve Henson]
|
||||
|
||||
*) Collect common functions into header file "fips_utl.h".
|
||||
[Steve Henson]
|
||||
|
||||
*) Only enable dynamic lock functionality in CRYPTO_lock() when it is really
|
||||
needed. Move some lock functionality into new file dyn_lck.c .
|
||||
This further reduces FIPS dependencies allowing the complete removal
|
||||
of STACK and OBJ_bsearch().
|
||||
[Steve Henson]
|
||||
|
||||
*) Reduce FIPS test program dependencies by providing stand alone
|
||||
versions of some existing functions in libcrypto. Avoid use
|
||||
of BIOs by converting to system stdio. Move some functions in FIPS
|
||||
files: e.g. all use of BIO_printf().
|
||||
[Steve Henson]
|
||||
|
||||
*) Modify build of libcrypto in FIPS mode by using a perl
|
||||
script "arx.pl" which calls the archiver specifically
|
||||
excluding any FIPS dependencies in libcrypto.
|
||||
[Steve Henson]
|
||||
|
||||
*) Port OpenSSL 0.9.7 FIPS code to 0.9.8. Convert to new
|
||||
Makefile form. Update Configure. Convert and update
|
||||
FIPS source files. Update libcrypto, libssl and apps
|
||||
with additional functionality from 0.9.7 FIPS code.
|
||||
Update Windows build system.
|
||||
[Steve Henson]
|
||||
|
||||
Changes between 0.9.8e and 0.9.8f [23 Feb 2007]
|
||||
|
||||
*) Mitigate branch prediction attacks, which can be practical if a
|
||||
single processor is shared, allowing a spy process to extract
|
||||
information. For detailed background information, see
|
||||
http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
|
||||
J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
|
||||
and Necessary Software Countermeasures"). The core of the change
|
||||
are new versions BN_div_no_branch() and
|
||||
BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
|
||||
respectively, which are slower, but avoid the security-relevant
|
||||
conditional branches. These are automatically called by BN_div()
|
||||
and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for the
|
||||
modulus. Also, BN_is_bit_set() has been changed to remove a
|
||||
conditional branch.
|
||||
|
||||
BN_FLG_CONSTTIME is the new name for the previous
|
||||
BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
|
||||
modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag
|
||||
in the exponent causes BN_mod_exp_mont() to use the alternative
|
||||
implementation in BN_mod_exp_mont_consttime().) The old name
|
||||
remains as a deprecated alias.
|
||||
|
||||
Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
|
||||
RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
|
||||
constant-time implementations for more than just exponentiation.
|
||||
Here too the old name is kept as a deprecated alias.
|
||||
|
||||
BN_BLINDING_new() will now use BN_dup() for the modulus so that
|
||||
the BN_BLINDING structure gets an independent copy of the
|
||||
modulus. This means that the previous "BIGNUM *m" argument to
|
||||
BN_BLINDING_new() and to BN_BLINDING_create_param() now
|
||||
essentially becomes "const BIGNUM *m", although we can't actually
|
||||
change this in the header file before 0.9.9. It allows
|
||||
RSA_setup_blinding() to use BN_with_flags() on the modulus to
|
||||
enable BN_FLG_CONSTTIME.
|
||||
|
||||
[Matthew D Wood (Intel Corp)]
|
||||
|
||||
*) Mitigate branch prediction attacks, which can be practical if a
|
||||
single processor is shared, allowing a spy process to extract
|
||||
information. For detailed background information, see
|
||||
http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
|
||||
J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
|
||||
and Necessary Software Countermeasures"). The core of the change
|
||||
are new versions BN_div_no_branch() and
|
||||
BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
|
||||
respectively, which are slower, but avoid the security-relevant
|
||||
conditional branches. These are automatically called by BN_div()
|
||||
and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
|
||||
of the input BIGNUMs. Also, BN_is_bit_set() has been changed to
|
||||
remove a conditional branch.
|
||||
|
||||
BN_FLG_CONSTTIME is the new name for the previous
|
||||
BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
|
||||
modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag
|
||||
in the exponent causes BN_mod_exp_mont() to use the alternative
|
||||
implementation in BN_mod_exp_mont_consttime().) The old name
|
||||
remains as a deprecated alias.
|
||||
|
||||
Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
|
||||
RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
|
||||
constant-time implementations for more than just exponentiation.
|
||||
Here too the old name is kept as a deprecated alias.
|
||||
|
||||
BN_BLINDING_new() will now use BN_dup() for the modulus so that
|
||||
the BN_BLINDING structure gets an independent copy of the
|
||||
modulus. This means that the previous "BIGNUM *m" argument to
|
||||
BN_BLINDING_new() and to BN_BLINDING_create_param() now
|
||||
essentially becomes "const BIGNUM *m", although we can't actually
|
||||
change this in the header file before 0.9.9. It allows
|
||||
RSA_setup_blinding() to use BN_with_flags() on the modulus to
|
||||
enable BN_FLG_CONSTTIME.
|
||||
|
||||
[Matthew D Wood (Intel Corp)]
|
||||
|
||||
*) Add the Korean symmetric 128-bit cipher SEED (see
|
||||
http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
|
||||
add SEED ciphersuites from RFC 4162:
|
||||
|
||||
TLS_RSA_WITH_SEED_CBC_SHA = "SEED-SHA"
|
||||
TLS_DHE_DSS_WITH_SEED_CBC_SHA = "DHE-DSS-SEED-SHA"
|
||||
TLS_DHE_RSA_WITH_SEED_CBC_SHA = "DHE-RSA-SEED-SHA"
|
||||
TLS_DH_anon_WITH_SEED_CBC_SHA = "ADH-SEED-SHA"
|
||||
|
||||
To minimize changes between patchlevels in the OpenSSL 0.9.8
|
||||
series, SEED remains excluded from compilation unless OpenSSL
|
||||
is configured with 'enable-seed'.
|
||||
[KISA, Bodo Moeller]
|
||||
|
||||
*) Mitigate branch prediction attacks, which can be practical if a
|
||||
single processor is shared, allowing a spy process to extract
|
||||
information. For detailed background information, see
|
||||
http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
|
||||
J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
|
||||
and Necessary Software Countermeasures"). The core of the change
|
||||
are new versions BN_div_no_branch() and
|
||||
BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
|
||||
respectively, which are slower, but avoid the security-relevant
|
||||
conditional branches. These are automatically called by BN_div()
|
||||
and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
|
||||
of the input BIGNUMs. Also, BN_is_bit_set() has been changed to
|
||||
remove a conditional branch.
|
||||
|
||||
BN_FLG_CONSTTIME is the new name for the previous
|
||||
BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
|
||||
modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag
|
||||
in the exponent causes BN_mod_exp_mont() to use the alternative
|
||||
implementation in BN_mod_exp_mont_consttime().) The old name
|
||||
remains as a deprecated alias.
|
||||
|
||||
Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
|
||||
RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
|
||||
constant-time implementations for more than just exponentiation.
|
||||
Here too the old name is kept as a deprecated alias.
|
||||
|
||||
BN_BLINDING_new() will now use BN_dup() for the modulus so that
|
||||
the BN_BLINDING structure gets an independent copy of the
|
||||
modulus. This means that the previous "BIGNUM *m" argument to
|
||||
BN_BLINDING_new() and to BN_BLINDING_create_param() now
|
||||
essentially becomes "const BIGNUM *m", although we can't actually
|
||||
change this in the header file before 0.9.9. It allows
|
||||
RSA_setup_blinding() to use BN_with_flags() on the modulus to
|
||||
enable BN_FLG_CONSTTIME.
|
||||
|
||||
[Matthew D Wood (Intel Corp)]
|
||||
|
||||
*) Add the Korean symmetric 128-bit cipher SEED (see
|
||||
http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
|
||||
add SEED ciphersuites from RFC 4162:
|
||||
|
||||
TLS_RSA_WITH_SEED_CBC_SHA = "SEED-SHA"
|
||||
TLS_DHE_DSS_WITH_SEED_CBC_SHA = "DHE-DSS-SEED-SHA"
|
||||
TLS_DHE_RSA_WITH_SEED_CBC_SHA = "DHE-RSA-SEED-SHA"
|
||||
TLS_DH_anon_WITH_SEED_CBC_SHA = "ADH-SEED-SHA"
|
||||
|
||||
To minimize changes between patchlevels in the OpenSSL 0.9.8
|
||||
series, SEED remains excluded from compilation unless OpenSSL
|
||||
is configured with 'enable-seed'.
|
||||
[KISA, Bodo Moeller]
|
||||
|
||||
*) Mitigate branch prediction attacks, which can be practical if a
|
||||
single processor is shared, allowing a spy process to extract
|
||||
information. For detailed background information, see
|
||||
http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
|
||||
J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
|
||||
and Necessary Software Countermeasures"). The core of the change
|
||||
are new versions BN_div_no_branch() and
|
||||
BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
|
||||
respectively, which are slower, but avoid the security-relevant
|
||||
conditional branches. These are automatically called by BN_div()
|
||||
and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
|
||||
of the input BIGNUMs. Also, BN_is_bit_set() has been changed to
|
||||
remove a conditional branch.
|
||||
|
||||
BN_FLG_CONSTTIME is the new name for the previous
|
||||
BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
|
||||
modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag
|
||||
in the exponent causes BN_mod_exp_mont() to use the alternative
|
||||
implementation in BN_mod_exp_mont_consttime().) The old name
|
||||
remains as a deprecated alias.
|
||||
|
||||
Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
|
||||
RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
|
||||
constant-time implementations for more than just exponentiation.
|
||||
Here too the old name is kept as a deprecated alias.
|
||||
|
||||
BN_BLINDING_new() will now use BN_dup() for the modulus so that
|
||||
the BN_BLINDING structure gets an independent copy of the
|
||||
modulus. This means that the previous "BIGNUM *m" argument to
|
||||
BN_BLINDING_new() and to BN_BLINDING_create_param() now
|
||||
essentially becomes "const BIGNUM *m", although we can't actually
|
||||
change this in the header file before 0.9.9. It allows
|
||||
RSA_setup_blinding() to use BN_with_flags() on the modulus to
|
||||
enable BN_FLG_CONSTTIME.
|
||||
|
||||
[Matthew D Wood (Intel Corp)]
|
||||
*) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
|
||||
(which previously caused an internal error).
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Squeeze another 10% out of IGE mode when in != out.
|
||||
[Ben Laurie]
|
||||
|
263
Configure
263
Configure
@@ -6,9 +6,7 @@ eval 'exec perl -S $0 ${1+"$@"}'
|
||||
##
|
||||
|
||||
require 5.000;
|
||||
eval 'use strict;';
|
||||
|
||||
print STDERR "Warning: perl module strict not found.\n" if ($@);
|
||||
use strict;
|
||||
|
||||
# see INSTALL for instructions.
|
||||
|
||||
@@ -116,17 +114,15 @@ my $tlib="-lnsl -lsocket";
|
||||
my $bits1="THIRTY_TWO_BIT ";
|
||||
my $bits2="SIXTY_FOUR_BIT ";
|
||||
|
||||
my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o mo86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o:rm86-elf.o:r586-elf.o";
|
||||
my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o mo86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o:rm86-cof.o:r586-cof.o";
|
||||
my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o mo86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o:rm86-out.o:r586-out.o";
|
||||
my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o:rm86-elf.o:r586-elf.o";
|
||||
my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o:rm86-cof.o:r586-cof.o";
|
||||
my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o:rm86-out.o:r586-out.o";
|
||||
|
||||
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o::";
|
||||
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o::::md5-x86_64.o:::rc4-x86_64.o::";
|
||||
my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o::";
|
||||
|
||||
my $no_asm="::::::::::";
|
||||
|
||||
my $ia64_asm=$no_asm;
|
||||
my $s390x_asm=$no_asm;
|
||||
|
||||
# As for $BSDthreads. Idea is to maintain "collective" set of flags,
|
||||
# which would cover all BSD flavors. -pthread applies to them all,
|
||||
# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD
|
||||
@@ -159,7 +155,7 @@ my %table=(
|
||||
"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
|
||||
"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
|
||||
"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
|
||||
"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
|
||||
"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
|
||||
"debug-steve-linux-pseudo64", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
|
||||
"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
@@ -203,25 +199,25 @@ my %table=(
|
||||
|
||||
#### SPARC Solaris with GNU C setups
|
||||
"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
|
||||
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
####
|
||||
"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
#### SPARC Solaris with Sun C setups
|
||||
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
|
||||
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
|
||||
# SC5.0 note: Compiler common patch 107357-01 or later is required!
|
||||
"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
|
||||
"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
|
||||
####
|
||||
"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o::::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
#### SunOS configs, assuming sparc for the gcc one.
|
||||
#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
|
||||
@@ -234,11 +230,11 @@ my %table=(
|
||||
#### IRIX 6.x configs
|
||||
# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
|
||||
# './Configure irix-cc -o32' manually.
|
||||
"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${no_asm}:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${no_asm}:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# N64 ABI builds.
|
||||
"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${no_asm}:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${no_asm}:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
#### Unified HP-UX ANSI C configs.
|
||||
# Special notes:
|
||||
@@ -271,8 +267,8 @@ my %table=(
|
||||
# Since there is mention of this in shlib/hpux10-cc.sh
|
||||
"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
# More attempts at unified 10.X and 11.X targets for HP C compiler.
|
||||
#
|
||||
@@ -280,8 +276,8 @@ my %table=(
|
||||
# Kevin Steves <ks@hp.se>
|
||||
"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
# HP/UX IA-64 targets
|
||||
"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
@@ -318,28 +314,27 @@ my %table=(
|
||||
# *-generic* is endian-neutral target, but ./config is free to
|
||||
# throw in -D[BL]_ENDIAN, whichever appropriate...
|
||||
"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
#### IA-32 targets...
|
||||
"linux-ia32-icc", "icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
|
||||
####
|
||||
"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
#### SPARC Linux setups
|
||||
# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
|
||||
# assisted with debugging of following two configs.
|
||||
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# it's a real mess with -mcpu=ultrasparc option under Linux, but
|
||||
# -Wa,-Av8plus should do the trick no matter what.
|
||||
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# GCC 3.1 is a requirement
|
||||
"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::md5-sparcv9.o::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
#### Alpha Linux with GNU C and Compaq C setups
|
||||
# Special notes:
|
||||
# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
|
||||
@@ -363,13 +358,13 @@ my %table=(
|
||||
"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
|
||||
# simply *happens* to work around a compiler bug in gcc 3.3.3,
|
||||
# triggered by RIPEMD160 code.
|
||||
"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
|
||||
@@ -407,12 +402,12 @@ my %table=(
|
||||
|
||||
#### IBM's AIX.
|
||||
"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
|
||||
"aix-gcc", "gcc:-O -DB_ENDIAN::-D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR:${no_asm}:dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-maix64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
|
||||
"aix-gcc", "gcc:-O -DB_ENDIAN::-D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
|
||||
# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
|
||||
# at build time. $OBJECT_MODE is respected at ./config stage!
|
||||
"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-q64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
|
||||
"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
|
||||
"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
|
||||
|
||||
#
|
||||
# Cray T90 and similar (SDSC)
|
||||
@@ -504,9 +499,11 @@ 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:-O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-i386-cc","cc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:ppccpuid_osx64.o:osx_ppc64.o osx_ppc64-mont.o:::::sha1-ppc_osx64.o sha256-ppc_osx64.o sha512-ppc_osx64.o:::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
|
||||
|
||||
##### A/UX
|
||||
"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
|
||||
@@ -567,11 +564,6 @@ my $prefix="";
|
||||
my $openssldir="";
|
||||
my $exe_ext="";
|
||||
my $install_prefix="";
|
||||
my $fipslibdir="/usr/local/ssl/lib/fips-1.0/";
|
||||
my $nofipscanistercheck=0;
|
||||
my $fipsdso=0;
|
||||
my $fipscanisterinternal="n";
|
||||
my $baseaddr="0xFB00000";
|
||||
my $no_threads=0;
|
||||
my $threads=0;
|
||||
my $no_shared=0; # but "no-shared" is default
|
||||
@@ -594,7 +586,6 @@ my $rc2 ="crypto/rc2/rc2.h";
|
||||
my $bf ="crypto/bf/bf_locl.h";
|
||||
my $bn_asm ="bn_asm.o";
|
||||
my $des_enc="des_enc.o fcrypt_b.o";
|
||||
my $fips_des_enc="fips_des_enc.o";
|
||||
my $aes_enc="aes_core.o aes_cbc.o";
|
||||
my $bf_enc ="bf_enc.o";
|
||||
my $cast_enc="c_enc.o";
|
||||
@@ -606,7 +597,6 @@ my $rmd160_obj="";
|
||||
my $processor="";
|
||||
my $default_ranlib;
|
||||
my $perl;
|
||||
my $fips=0;
|
||||
|
||||
|
||||
# All of the following is disabled by default (RC5 was enabled before 0.9.8):
|
||||
@@ -619,6 +609,7 @@ my %disabled = ( # "what" => "comment"
|
||||
"rfc3779" => "default",
|
||||
"seed" => "default",
|
||||
"shared" => "default",
|
||||
"tlsext" => "default",
|
||||
"zlib" => "default",
|
||||
"zlib-dynamic" => "default"
|
||||
);
|
||||
@@ -628,7 +619,7 @@ my %disabled = ( # "what" => "comment"
|
||||
# For symmetry, "disable-..." is a synonym for "no-...".
|
||||
|
||||
# This is what $depflags will look like with the above default:
|
||||
my $default_depflags = "-DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED ";
|
||||
my $default_depflags = "-DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED -DOPENSSL_NO_TLSEXT ";
|
||||
|
||||
|
||||
my $no_sse2=0;
|
||||
@@ -731,36 +722,12 @@ PROCESS_ARGS:
|
||||
}
|
||||
elsif (/^386$/)
|
||||
{ $processor=386; }
|
||||
elsif (/^fips$/)
|
||||
{
|
||||
$fips=1;
|
||||
}
|
||||
elsif (/^rsaref$/)
|
||||
{
|
||||
# No RSAref support any more since it's not needed.
|
||||
# The check for the option is there so scripts aren't
|
||||
# broken
|
||||
}
|
||||
elsif (/^nofipscanistercheck$/)
|
||||
{
|
||||
$fips = 1;
|
||||
$nofipscanistercheck = 1;
|
||||
}
|
||||
elsif (/^fipscanisterbuild$/)
|
||||
{
|
||||
$fips = 1;
|
||||
$nofipscanistercheck = 1;
|
||||
$fipslibdir="";
|
||||
$fipscanisterinternal="y";
|
||||
}
|
||||
elsif (/^fipsdso$/)
|
||||
{
|
||||
$fips = 1;
|
||||
$nofipscanistercheck = 1;
|
||||
$fipslibdir="";
|
||||
$fipscanisterinternal="y";
|
||||
$fipsdso = 1;
|
||||
}
|
||||
elsif (/^[-+]/)
|
||||
{
|
||||
if (/^-[lL](.*)$/)
|
||||
@@ -795,14 +762,6 @@ PROCESS_ARGS:
|
||||
{
|
||||
$withargs{"zlib-include"}="-I$1";
|
||||
}
|
||||
elsif (/^--with-fipslibdir=(.*)$/)
|
||||
{
|
||||
$fipslibdir="$1/";
|
||||
}
|
||||
elsif (/^--with-baseaddr=(.*)$/)
|
||||
{
|
||||
$baseaddr="$1";
|
||||
}
|
||||
else
|
||||
{
|
||||
print STDERR $usage;
|
||||
@@ -882,6 +841,10 @@ if (defined($disabled{"md5"}) || defined($disabled{"sha"})
|
||||
$disabled{"tls1"} = "forced";
|
||||
}
|
||||
|
||||
if (defined($disabled{"tls1"}))
|
||||
{
|
||||
$disabled{"tlsext"} = "forced";
|
||||
}
|
||||
|
||||
if ($target eq "TABLE") {
|
||||
foreach $target (sort keys %table) {
|
||||
@@ -906,41 +869,6 @@ print "Configuring for $target\n";
|
||||
|
||||
&usage if (!defined($table{$target}));
|
||||
|
||||
my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
|
||||
my $cc = $fields[$idx_cc];
|
||||
my $cflags = $fields[$idx_cflags];
|
||||
my $unistd = $fields[$idx_unistd];
|
||||
my $thread_cflag = $fields[$idx_thread_cflag];
|
||||
my $sys_id = $fields[$idx_sys_id];
|
||||
my $lflags = $fields[$idx_lflags];
|
||||
my $bn_ops = $fields[$idx_bn_ops];
|
||||
my $cpuid_obj = $fields[$idx_cpuid_obj];
|
||||
my $bn_obj = $fields[$idx_bn_obj];
|
||||
my $des_obj = $fields[$idx_des_obj];
|
||||
my $aes_obj = $fields[$idx_aes_obj];
|
||||
my $bf_obj = $fields[$idx_bf_obj];
|
||||
my $md5_obj = $fields[$idx_md5_obj];
|
||||
my $sha1_obj = $fields[$idx_sha1_obj];
|
||||
my $cast_obj = $fields[$idx_cast_obj];
|
||||
my $rc4_obj = $fields[$idx_rc4_obj];
|
||||
my $rmd160_obj = $fields[$idx_rmd160_obj];
|
||||
my $rc5_obj = $fields[$idx_rc5_obj];
|
||||
my $dso_scheme = $fields[$idx_dso_scheme];
|
||||
my $shared_target = $fields[$idx_shared_target];
|
||||
my $shared_cflag = $fields[$idx_shared_cflag];
|
||||
my $shared_ldflag = $fields[$idx_shared_ldflag];
|
||||
my $shared_extension = $fields[$idx_shared_extension];
|
||||
my $ranlib = $fields[$idx_ranlib];
|
||||
my $arflags = $fields[$idx_arflags];
|
||||
|
||||
if ($fips)
|
||||
{
|
||||
delete $disabled{"shared"} if ($disabled{"shared"} eq "default");
|
||||
$disabled{"asm"}="forced"
|
||||
if ($target !~ "VC\-.*" &&
|
||||
"$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
|
||||
}
|
||||
|
||||
|
||||
foreach (sort (keys %disabled))
|
||||
{
|
||||
@@ -1002,21 +930,9 @@ my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
|
||||
|
||||
$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
|
||||
|
||||
$no_shared = 0 if ($fipsdso && !$IsMK1MF);
|
||||
|
||||
$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
|
||||
$exe_ext=".pm" if ($target =~ /vos/);
|
||||
if ($openssldir eq "" and $prefix eq "")
|
||||
{
|
||||
if ($fips)
|
||||
{
|
||||
$openssldir="/usr/local/ssl/fips-1.0";
|
||||
}
|
||||
else
|
||||
{
|
||||
$openssldir="/usr/local/ssl";
|
||||
}
|
||||
}
|
||||
$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
|
||||
$prefix=$openssldir if $prefix eq "";
|
||||
|
||||
$default_ranlib= &which("ranlib") or $default_ranlib="true";
|
||||
@@ -1032,6 +948,33 @@ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/]
|
||||
|
||||
print "IsMK1MF=$IsMK1MF\n";
|
||||
|
||||
my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
|
||||
my $cc = $fields[$idx_cc];
|
||||
my $cflags = $fields[$idx_cflags];
|
||||
my $unistd = $fields[$idx_unistd];
|
||||
my $thread_cflag = $fields[$idx_thread_cflag];
|
||||
my $sys_id = $fields[$idx_sys_id];
|
||||
my $lflags = $fields[$idx_lflags];
|
||||
my $bn_ops = $fields[$idx_bn_ops];
|
||||
my $cpuid_obj = $fields[$idx_cpuid_obj];
|
||||
my $bn_obj = $fields[$idx_bn_obj];
|
||||
my $des_obj = $fields[$idx_des_obj];
|
||||
my $aes_obj = $fields[$idx_aes_obj];
|
||||
my $bf_obj = $fields[$idx_bf_obj];
|
||||
my $md5_obj = $fields[$idx_md5_obj];
|
||||
my $sha1_obj = $fields[$idx_sha1_obj];
|
||||
my $cast_obj = $fields[$idx_cast_obj];
|
||||
my $rc4_obj = $fields[$idx_rc4_obj];
|
||||
my $rmd160_obj = $fields[$idx_rmd160_obj];
|
||||
my $rc5_obj = $fields[$idx_rc5_obj];
|
||||
my $dso_scheme = $fields[$idx_dso_scheme];
|
||||
my $shared_target = $fields[$idx_shared_target];
|
||||
my $shared_cflag = $fields[$idx_shared_cflag];
|
||||
my $shared_ldflag = $fields[$idx_shared_ldflag];
|
||||
my $shared_extension = $fields[$idx_shared_extension];
|
||||
my $ranlib = $fields[$idx_ranlib];
|
||||
my $arflags = $fields[$idx_arflags];
|
||||
|
||||
# '%' in $lflags is used to split flags to "pre-" and post-flags
|
||||
my ($prelflags,$postlflags)=split('%',$lflags);
|
||||
if (defined($postlflags)) { $lflags=$postlflags; }
|
||||
@@ -1165,8 +1108,6 @@ if ($no_asm)
|
||||
{
|
||||
$cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
|
||||
$sha1_obj=$md5_obj=$rmd160_obj="";
|
||||
$cflags=~s/\-D[BL]_ENDIAN// if ($fips);
|
||||
$thread_cflags=~s/\-D[BL]_ENDIAN// if ($fips);
|
||||
}
|
||||
|
||||
if (!$no_shared)
|
||||
@@ -1197,7 +1138,7 @@ if ($zlib)
|
||||
my $shared_mark = "";
|
||||
if ($shared_target eq "")
|
||||
{
|
||||
$no_shared_warn = 1 if !$no_shared && !$fips;
|
||||
$no_shared_warn = 1 if !$no_shared;
|
||||
$no_shared = 1;
|
||||
}
|
||||
if (!$no_shared)
|
||||
@@ -1233,7 +1174,6 @@ if ($target =~ /\-icc$/) # Intel C compiler
|
||||
while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
|
||||
close(FD);
|
||||
}
|
||||
|
||||
if ($iccver>=8)
|
||||
{
|
||||
# Eliminate unnecessary dependency from libirc.a. This is
|
||||
@@ -1288,13 +1228,6 @@ $bn_obj = $bn_asm unless $bn_obj ne "";
|
||||
$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/);
|
||||
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
|
||||
|
||||
$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/);
|
||||
|
||||
if ($fips)
|
||||
{
|
||||
$openssl_other_defines.="#define OPENSSL_FIPS\n";
|
||||
}
|
||||
|
||||
$des_obj=$des_enc unless ($des_obj =~ /\.o$/);
|
||||
$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
|
||||
$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
|
||||
@@ -1423,24 +1356,9 @@ while (<IN>)
|
||||
s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
|
||||
s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
|
||||
s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
|
||||
s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
|
||||
if ($fipsdso)
|
||||
{
|
||||
s/^FIPSCANLIB=.*/FIPSCANLIB=libfips/;
|
||||
s/^SHARED_FIPS=.*/SHARED_FIPS=libfips\$(SHLIB_EXT)/;
|
||||
s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl fips/;
|
||||
}
|
||||
else
|
||||
{
|
||||
s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
|
||||
s/^SHARED_FIPS=.*/SHARED_FIPS=/;
|
||||
s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/;
|
||||
}
|
||||
s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/;
|
||||
s/^BASEADDR=.*/BASEADDR=$baseaddr/;
|
||||
s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
|
||||
s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
|
||||
s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_FIPS) \$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
|
||||
s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
|
||||
if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
|
||||
{
|
||||
my $sotmp = $1;
|
||||
@@ -1735,16 +1653,9 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
#if defined(FIPS)
|
||||
VALUE "Comments", "WARNING: TEST VERSION ONLY ***NOT*** FIPS 140-2 VALIDATED.\\0"
|
||||
#endif
|
||||
// Required:
|
||||
VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
|
||||
#if defined(FIPS)
|
||||
VALUE "FileDescription", "TEST UNVALIDATED FIPS140-2 DLL\\0"
|
||||
#else
|
||||
VALUE "FileDescription", "OpenSSL Shared Library\\0"
|
||||
#endif
|
||||
VALUE "FileVersion", "$version\\0"
|
||||
#if defined(CRYPTO)
|
||||
VALUE "InternalName", "libeay32\\0"
|
||||
@@ -1752,15 +1663,12 @@ BEGIN
|
||||
#elif defined(SSL)
|
||||
VALUE "InternalName", "ssleay32\\0"
|
||||
VALUE "OriginalFilename", "ssleay32.dll\\0"
|
||||
#elif defined(FIPS)
|
||||
VALUE "InternalName", "libosslfips\\0"
|
||||
VALUE "OriginalFilename", "libosslfips.dll\\0"
|
||||
#endif
|
||||
VALUE "ProductName", "The OpenSSL Toolkit\\0"
|
||||
VALUE "ProductVersion", "$version\\0"
|
||||
// Optional:
|
||||
//VALUE "Comments", "\\0"
|
||||
VALUE "LegalCopyright", "Copyright <20> 1998-2007 The OpenSSL Project. Copyright <20> 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
|
||||
VALUE "LegalCopyright", "Copyright <20> 1998-2005 The OpenSSL Project. Copyright <20> 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
|
||||
//VALUE "LegalTrademarks", "\\0"
|
||||
//VALUE "PrivateBuild", "\\0"
|
||||
//VALUE "SpecialBuild", "\\0"
|
||||
@@ -1797,21 +1705,6 @@ libraries on this platform, they will at least look at it and try their best
|
||||
(but please first make sure you have tried with a current version of OpenSSL).
|
||||
EOF
|
||||
|
||||
print <<\EOF if ($fipscanisterinternal eq "y");
|
||||
|
||||
WARNING: OpenSSL has been configured using unsupported option(s) to internally
|
||||
generate a fipscanister.o object module for TESTING PURPOSES ONLY; that
|
||||
compiled module is NOT FIPS 140-2 validated and CANNOT be used to replace the
|
||||
OpenSSL FIPS Object Module as identified by the CMVP
|
||||
(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
|
||||
140-2 validated software.
|
||||
|
||||
This is an OpenSSL 0.9.8-fips test version.
|
||||
|
||||
See the file README.FIPS for details of how to build a test library.
|
||||
|
||||
EOF
|
||||
|
||||
exit(0);
|
||||
|
||||
sub usage
|
||||
|
13
FAQ
13
FAQ
@@ -66,6 +66,7 @@ OpenSSL - Frequently Asked Questions
|
||||
* Why doesn't my server application receive a client certificate?
|
||||
* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier?
|
||||
* I think I've detected a memory leak, is this a bug?
|
||||
* Why does Valgrind complain about the use of uninitialized data?
|
||||
|
||||
===============================================================================
|
||||
|
||||
@@ -74,7 +75,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.8e was released on February 23rd, 2007.
|
||||
OpenSSL 0.9.8f was released on October 11th, 2007.
|
||||
|
||||
In addition to the current stable release, you can also access daily
|
||||
snapshots of the OpenSSL development version at <URL:
|
||||
@@ -894,5 +895,15 @@ thread-safe):
|
||||
ERR_free_strings(), EVP_cleanup() and CRYPTO_cleanup_all_ex_data().
|
||||
|
||||
|
||||
* Why does Valgrind complain about the use of uninitialized data?
|
||||
|
||||
When OpenSSL's PRNG routines are called to generate random numbers the supplied
|
||||
buffer contents are mixed into the entropy pool: so it technically does not
|
||||
matter whether the buffer is initialized at this point or not. Valgrind (and
|
||||
other test tools) will complain about this. When using Valgrind, make sure the
|
||||
OpenSSL library has been compiled with the PURIFY macro defined (-DPURIFY)
|
||||
to get rid of these warnings.
|
||||
|
||||
|
||||
===============================================================================
|
||||
|
||||
|
153
Makefile.org
153
Makefile.org
@@ -65,7 +65,6 @@ EX_LIBS=
|
||||
EXE_EXT=
|
||||
ARFLAGS=
|
||||
AR=ar $(ARFLAGS) r
|
||||
ARD=ar $(ARFLAGS) d
|
||||
RANLIB= ranlib
|
||||
PERL= perl
|
||||
TAR= tar
|
||||
@@ -105,34 +104,8 @@ LIBKRB5=
|
||||
ZLIB_INCLUDE=
|
||||
LIBZLIB=
|
||||
|
||||
# This is the location of fipscanister.o and friends.
|
||||
# The FIPS module build will place it $(INSTALLTOP)/lib
|
||||
# but since $(INSTALLTOP) can only take the default value
|
||||
# when the module is built it will be in /usr/local/ssl/lib
|
||||
# $(INSTALLTOP) for this build make be different so hard
|
||||
# code the path.
|
||||
|
||||
FIPSLIBDIR=/usr/local/ssl/lib/
|
||||
|
||||
# This is set to "y" if fipscanister.o is compiled internally as
|
||||
# opposed to coming from an external validated location.
|
||||
|
||||
FIPSCANISTERINTERNAL=n
|
||||
|
||||
# The location of the library which contains fipscanister.o
|
||||
# normally it will be libcrypto unless fipsdso is set in which
|
||||
# case it will be libfips. If not compiling in FIPS mode at all
|
||||
# this is empty making it a useful test for a FIPS compile.
|
||||
|
||||
FIPSCANLIB=
|
||||
|
||||
# Shared library base address. Currently only used on Windows.
|
||||
#
|
||||
|
||||
BASEADDR=
|
||||
|
||||
DIRS= crypto fips ssl engines apps test tools
|
||||
SHLIBDIRS= crypto ssl fips
|
||||
DIRS= crypto ssl engines apps test tools
|
||||
SHLIBDIRS= crypto ssl
|
||||
|
||||
# dirs in crypto to build
|
||||
SDIRS= \
|
||||
@@ -165,14 +138,13 @@ WDIRS= windows
|
||||
LIBS= libcrypto.a libssl.a
|
||||
SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
|
||||
SHARED_SSL=libssl$(SHLIB_EXT)
|
||||
SHARED_FIPS=
|
||||
SHARED_LIBS=
|
||||
SHARED_LIBS_LINK_EXTS=
|
||||
SHARED_LDFLAGS=
|
||||
|
||||
GENERAL= Makefile
|
||||
BASENAME= openssl
|
||||
NAME= $(BASENAME)-fips-$(VERSION)
|
||||
NAME= $(BASENAME)-$(VERSION)
|
||||
TARFILE= $(NAME).tar
|
||||
WTARFILE= $(NAME)-win.tar
|
||||
EXHEADER= e_os2.h
|
||||
@@ -219,9 +191,6 @@ BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
|
||||
SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' \
|
||||
MD5_ASM_OBJ='${MD5_ASM_OBJ}' \
|
||||
RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' \
|
||||
FIPSLIBDIR='${FIPSLIBDIR}' FIPSCANLIB='${FIPSCANLIB}' \
|
||||
FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}' \
|
||||
FIPS_EX_OBJ='${FIPS_EX_OBJ}' \
|
||||
THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
|
||||
# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
|
||||
# which in turn eliminates ambiguities in variable treatment with -e.
|
||||
@@ -253,84 +222,13 @@ BUILD_ONE_CMD=\
|
||||
reflect:
|
||||
@[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
|
||||
|
||||
FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
|
||||
../crypto/aes/aes_ecb.o \
|
||||
../crypto/aes/aes_ofb.o \
|
||||
../crypto/bn/bn_add.o \
|
||||
../crypto/bn/bn_blind.o \
|
||||
../crypto/bn/bn_ctx.o \
|
||||
../crypto/bn/bn_div.o \
|
||||
../crypto/bn/bn_exp2.o \
|
||||
../crypto/bn/bn_exp.o \
|
||||
../crypto/bn/bn_gcd.o \
|
||||
../crypto/bn/bn_lib.o \
|
||||
../crypto/bn/bn_mod.o \
|
||||
../crypto/bn/bn_mont.o \
|
||||
../crypto/bn/bn_mul.o \
|
||||
../crypto/bn/bn_prime.o \
|
||||
../crypto/bn/bn_rand.o \
|
||||
../crypto/bn/bn_recp.o \
|
||||
../crypto/bn/bn_shift.o \
|
||||
../crypto/bn/bn_sqr.o \
|
||||
../crypto/bn/bn_word.o \
|
||||
../crypto/bn/bn_x931p.o \
|
||||
../crypto/buffer/buf_str.o \
|
||||
../crypto/cryptlib.o \
|
||||
../crypto/des/cfb64ede.o \
|
||||
../crypto/des/cfb64enc.o \
|
||||
../crypto/des/cfb_enc.o \
|
||||
../crypto/des/ecb3_enc.o \
|
||||
../crypto/des/ecb_enc.o \
|
||||
../crypto/des/ofb64ede.o \
|
||||
../crypto/des/ofb64enc.o \
|
||||
../crypto/des/fcrypt.o \
|
||||
../crypto/des/set_key.o \
|
||||
../crypto/dsa/dsa_utl.o \
|
||||
../crypto/dsa/dsa_sign.o \
|
||||
../crypto/dsa/dsa_vrf.o \
|
||||
../crypto/err/err.o \
|
||||
../crypto/evp/digest.o \
|
||||
../crypto/evp/enc_min.o \
|
||||
../crypto/evp/e_aes.o \
|
||||
../crypto/evp/e_des3.o \
|
||||
../crypto/evp/p_sign.o \
|
||||
../crypto/evp/p_verify.o \
|
||||
../crypto/mem_clr.o \
|
||||
../crypto/mem.o \
|
||||
../crypto/rand/md_rand.o \
|
||||
../crypto/rand/rand_egd.o \
|
||||
../crypto/rand/randfile.o \
|
||||
../crypto/rand/rand_lib.o \
|
||||
../crypto/rand/rand_os2.o \
|
||||
../crypto/rand/rand_unix.o \
|
||||
../crypto/rand/rand_win.o \
|
||||
../crypto/rsa/rsa_lib.o \
|
||||
../crypto/rsa/rsa_none.o \
|
||||
../crypto/rsa/rsa_oaep.o \
|
||||
../crypto/rsa/rsa_pk1.o \
|
||||
../crypto/rsa/rsa_pss.o \
|
||||
../crypto/rsa/rsa_ssl.o \
|
||||
../crypto/rsa/rsa_x931.o \
|
||||
../crypto/sha/sha1dgst.o \
|
||||
../crypto/sha/sha256.o \
|
||||
../crypto/sha/sha512.o \
|
||||
../crypto/uid.o
|
||||
|
||||
sub_all: build_all
|
||||
build_all: build_libs build_apps build_tests build_tools
|
||||
|
||||
build_libs: build_crypto build_fips build_ssl build_shared build_engines
|
||||
build_libs: build_crypto build_ssl build_engines
|
||||
|
||||
build_crypto:
|
||||
if [ -n "$(FIPSCANLIB)" ]; then \
|
||||
EXCL_OBJ='$(AES_ASM_OBJ) $(BN_ASM) $(DES_ENC) $(CPUID_OBJ) $(SHA1_ASM_OBJ) $(FIPS_EX_OBJ)' ; export EXCL_OBJ ; \
|
||||
ARX='$(PERL) $${TOP}/util/arx.pl $(AR)' ; \
|
||||
else \
|
||||
ARX='${AR}' ; \
|
||||
fi ; export ARX ; \
|
||||
dir=crypto; target=all; $(BUILD_ONE_CMD)
|
||||
build_fips:
|
||||
@dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
|
||||
@dir=crypto; target=all; $(BUILD_ONE_CMD)
|
||||
build_ssl:
|
||||
@dir=ssl; target=all; $(BUILD_ONE_CMD)
|
||||
build_engines:
|
||||
@@ -346,20 +244,9 @@ all_testapps: build_libs build_testapps
|
||||
build_testapps:
|
||||
@dir=crypto; target=testapps; $(BUILD_ONE_CMD)
|
||||
|
||||
build_shared: $(SHARED_LIBS)
|
||||
libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
|
||||
libcrypto$(SHLIB_EXT): libcrypto.a
|
||||
@if [ "$(SHLIB_TARGET)" != "" ]; then \
|
||||
if [ "$(FIPSCANLIB)" = "libfips" ]; then \
|
||||
$(ARD) libcrypto.a fipscanister.o ; \
|
||||
$(MAKE) SHLIBDIRS='crypto' SHLIBDEPS='-lfips' build-shared; \
|
||||
$(AR) libcrypto.a fips/fipscanister.o ; \
|
||||
else \
|
||||
if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
|
||||
FIPSLD_CC=$(CC); CC=fips/fipsld; \
|
||||
export CC FIPSLD_CC; \
|
||||
fi; \
|
||||
$(MAKE) -e SHLIBDIRS='crypto' build-shared; \
|
||||
fi \
|
||||
$(MAKE) SHLIBDIRS=crypto build-shared; \
|
||||
else \
|
||||
echo "There's no support for shared libraries on this platform" >&2; \
|
||||
exit 1; \
|
||||
@@ -367,32 +254,12 @@ libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
|
||||
|
||||
libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
|
||||
@if [ "$(SHLIB_TARGET)" != "" ]; then \
|
||||
shlibdeps=-lcrypto; \
|
||||
[ "$(FIPSCANLIB)" = "libfips" ] && shlibdeps="$$shlibdeps -lfips"; \
|
||||
$(MAKE) SHLIBDIRS=ssl SHLIBDEPS="$$shlibdeps" build-shared; \
|
||||
else \
|
||||
echo "There's no support for shared libraries on this platform" >&2 ; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
fips/fipscanister.o: build_fips
|
||||
libfips$(SHLIB_EXT): fips/fipscanister.o
|
||||
@if [ "$(SHLIB_TARGET)" != "" ]; then \
|
||||
FIPSLD_CC=$(CC); CC=fips/fipsld; export CC FIPSLD_CC; \
|
||||
$(MAKE) -f Makefile.shared -e $(BUILDENV) \
|
||||
CC=$${CC} LIBNAME=fips THIS=$@ \
|
||||
LIBEXTRAS=fips/fipscanister.o \
|
||||
LIBDEPS="$(EX_LIBS)" \
|
||||
LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
|
||||
link_o.$(SHLIB_TARGET) || { rm -f $@; exit 1; } \
|
||||
$(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
|
||||
else \
|
||||
echo "There's no support for shared libraries on this platform" >&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
libfips.a:
|
||||
dir=fips; target=all; $(BUILD_ONE_CMD)
|
||||
|
||||
clean-shared:
|
||||
@set -e; for i in $(SHLIBDIRS); do \
|
||||
if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
|
||||
@@ -584,7 +451,7 @@ tar:
|
||||
$(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
|
||||
tardy --user_number=0 --user_name=openssl \
|
||||
--group_number=0 --group_name=openssl \
|
||||
--prefix=openssl-fips-$(VERSION) - |\
|
||||
--prefix=openssl-$(VERSION) - |\
|
||||
gzip --best >../$(TARFILE).gz; \
|
||||
rm -f ../$(TARFILE).list; \
|
||||
ls -l ../$(TARFILE).gz
|
||||
@@ -606,7 +473,7 @@ dist:
|
||||
dist_pem_h:
|
||||
(cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
|
||||
|
||||
install: all install_sw
|
||||
install: all install_docs install_sw
|
||||
|
||||
install_sw:
|
||||
@$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
|
||||
|
@@ -101,13 +101,15 @@ LINK_SO= \
|
||||
LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
|
||||
SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
|
||||
SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
|
||||
nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
|
||||
LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
|
||||
LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
|
||||
LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
|
||||
$${SHAREDCMD} $${SHAREDFLAGS} \
|
||||
-o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
|
||||
$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
|
||||
) && $(SYMLINK_SO)
|
||||
) && $(SYMLINK_SO); \
|
||||
( $(SET_X); rm -f lib$(LIBNAME).exp )
|
||||
|
||||
SYMLINK_SO= \
|
||||
if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
|
||||
@@ -200,10 +202,8 @@ link_app.bsd:
|
||||
# to use native NSModule(3) API and refers to dlfcn as termporary hack.
|
||||
link_o.darwin:
|
||||
@ $(CALC_VERSIONS); \
|
||||
SHLIB=`expr "$$THIS" : '.*/\([^/\.]*\)\.'`; \
|
||||
SHLIB=$${SHLIB:-lib$(LIBNAME)}; \
|
||||
SHLIB_SUFFIX=`expr "$$THIS" : '.*\(\.[^\.]*\)$$'`; \
|
||||
SHLIB_SUFFIX=$${SHLIB_SUFFIX:-.so}; \
|
||||
SHLIB=lib$(LIBNAME); \
|
||||
SHLIB_SUFFIX=.so; \
|
||||
ALLSYMSFLAGS='-all_load'; \
|
||||
NOALLSYMSFLAGS=''; \
|
||||
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
|
||||
|
11
NEWS
11
NEWS
@@ -5,6 +5,17 @@
|
||||
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.8e and OpenSSL 0.9.8f:
|
||||
|
||||
o Add gcc 4.2 support.
|
||||
o Add support for AES and SSE2 assembly lanugauge optimization
|
||||
for VC++ build.
|
||||
o Support for RFC4507bis and server name extensions if explicitly
|
||||
selected at compile time.
|
||||
o DTLS improvements.
|
||||
o RFC4507bis support.
|
||||
o TLS Extensions support.
|
||||
|
||||
Major changes between OpenSSL 0.9.8d and OpenSSL 0.9.8e:
|
||||
|
||||
o Various ciphersuite selection fixes.
|
||||
|
8
README
8
README
@@ -1,16 +1,10 @@
|
||||
|
||||
OpenSSL 0.9.8f-fips-dev test version
|
||||
OpenSSL 0.9.8f
|
||||
|
||||
Copyright (c) 1998-2007 The OpenSSL Project
|
||||
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
|
||||
All rights reserved.
|
||||
|
||||
WARNING
|
||||
-------
|
||||
|
||||
This version of OpenSSL is an initial port of the FIPS 140-2 code to OpenSSL
|
||||
0.9.8. See the file README.FIPS for brief usage details.
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
|
35
README.FIPS
35
README.FIPS
@@ -1,35 +0,0 @@
|
||||
|
||||
Brief instructions on using OpenSSL 0.9.8 FIPS test branch.
|
||||
|
||||
To avoid any confusion that this might generate a validate library just
|
||||
supplying "fips" on the command line wont work. Additional options are
|
||||
needed...
|
||||
|
||||
To build fipscanister and produce a usable distribution the configuration
|
||||
option "fipscanisterbuild" is used to either the config or Configure scripts.
|
||||
For example:
|
||||
|
||||
./config fipscanisterbuild
|
||||
|
||||
This builds static libraries in a way similar to the FIPS 1.1.1 distro.
|
||||
|
||||
To build the shared library fipscanister version use the configuration
|
||||
options "fipsdso".
|
||||
|
||||
Note that the fipscanister.o file is totally incompatible with the version
|
||||
produced by the FIPS 1.1.1 distribution and cannot be made to work with
|
||||
it.
|
||||
|
||||
Both options should also work under Windows and VC++. With this version the
|
||||
use of MinGW is unnecessary and the normal VC++ build procedure can be
|
||||
followed *except* the GNU linker "ld.exe" (for example from MinGW) must be
|
||||
accessible somewhere on the PATH. For example:
|
||||
|
||||
perl Configure VC-WIN32 fipsdso
|
||||
ms\do_masm
|
||||
nmake -f ms\ntdll.mak
|
||||
|
||||
Note that any warnings from a Windows version of "tar" about being unable to
|
||||
create symbolic links can be ignored.
|
||||
|
||||
|
3
STATUS
3
STATUS
@@ -1,10 +1,11 @@
|
||||
|
||||
OpenSSL STATUS Last modified at
|
||||
______________ $Date: 2007/02/23 12:12:27 $
|
||||
______________ $Date: 2007/10/11 14:58:14 $
|
||||
|
||||
DEVELOPMENT STATE
|
||||
|
||||
o OpenSSL 0.9.9: Under development...
|
||||
o OpenSSL 0.9.8f: Released on October 11th, 2007
|
||||
o OpenSSL 0.9.8e: Released on February 23rd, 2007
|
||||
o OpenSSL 0.9.8d: Released on September 28th, 2006
|
||||
o OpenSSL 0.9.8c: Released on September 5th, 2006
|
||||
|
323
TABLE
323
TABLE
@@ -117,14 +117,14 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -145,10 +145,10 @@ $lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv9.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -171,8 +171,8 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
@@ -198,7 +198,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-out.o
|
||||
$bn_obj = bn86-out.o co86-out.o mo86-out.o
|
||||
$bn_obj = bn86-out.o co86-out.o
|
||||
$des_obj = dx86-out.o yx86-out.o
|
||||
$aes_obj = ax86-out.o
|
||||
$bf_obj = bx86-out.o
|
||||
@@ -225,7 +225,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -252,12 +252,12 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
|
||||
$cpuid_obj = x86_64cpuid.o
|
||||
$bn_obj = x86_64-gcc.o x86_64-mont.o
|
||||
$bn_obj = x86_64-gcc.o
|
||||
$des_obj =
|
||||
$aes_obj = aes-x86_64.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj = md5-x86_64.o
|
||||
$sha1_obj = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj = rc4-x86_64.o
|
||||
$rmd160_obj =
|
||||
@@ -279,7 +279,7 @@ $sys_id = CYGWIN32
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-cof.o
|
||||
$bn_obj = bn86-cof.o co86-cof.o mo86-cof.o
|
||||
$bn_obj = bn86-cof.o co86-cof.o
|
||||
$des_obj = dx86-cof.o yx86-cof.o
|
||||
$aes_obj = ax86-cof.o
|
||||
$bf_obj = bx86-cof.o
|
||||
@@ -333,7 +333,7 @@ $sys_id = MSDOS
|
||||
$lflags = -L/dev/env/WATT_ROOT/lib -lwatt
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-out.o
|
||||
$bn_obj = bn86-out.o co86-out.o mo86-out.o
|
||||
$bn_obj = bn86-out.o co86-out.o
|
||||
$des_obj = dx86-out.o yx86-out.o
|
||||
$aes_obj = ax86-out.o
|
||||
$bf_obj = bx86-out.o
|
||||
@@ -684,7 +684,7 @@ $sys_id = AIX
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG RC4_CHAR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = aix_ppc32.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -711,7 +711,7 @@ $sys_id = AIX
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG RC4_CHAR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = aix_ppc32.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -765,7 +765,7 @@ $sys_id = AIX
|
||||
$lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = aix_ppc64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -792,7 +792,7 @@ $sys_id = AIX
|
||||
$lflags =
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = aix_ppc64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -846,7 +846,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -947,7 +947,7 @@ $arflags =
|
||||
|
||||
*** darwin-i386-cc
|
||||
$cc = cc
|
||||
$cflags = -O3 -fomit-frame-pointer -fno-common
|
||||
$cflags = -arch i386 -O3 -fomit-frame-pointer -fno-common
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id = MACOSX
|
||||
@@ -967,20 +967,74 @@ $rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
$shared_target= darwin-shared
|
||||
$shared_cflag = -fPIC -fno-common
|
||||
$shared_ldflag = -dynamiclib
|
||||
$shared_ldflag = -arch i386 -dynamiclib
|
||||
$shared_extension = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
|
||||
$ranlib =
|
||||
$arflags =
|
||||
|
||||
*** darwin-ppc-cc
|
||||
$cc = cc
|
||||
$cflags = -O3 -DB_ENDIAN
|
||||
$cflags = -arch ppc -O3 -DB_ENDIAN
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id = MACOSX
|
||||
$lflags = -Wl,-search_paths_first%
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj = osx_ppc32.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
$shared_target= darwin-shared
|
||||
$shared_cflag = -fPIC -fno-common
|
||||
$shared_ldflag = -arch ppc -dynamiclib
|
||||
$shared_extension = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
|
||||
$ranlib =
|
||||
$arflags =
|
||||
|
||||
*** darwin64-ppc-cc
|
||||
$cc = cc
|
||||
$cflags = -arch ppc64 -O3 -DB_ENDIAN
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id = MACOSX
|
||||
$lflags = -Wl,-search_paths_first%
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj = ppccpuid_osx64.o
|
||||
$bn_obj = osx_ppc64.o osx_ppc64-mont.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj = sha1-ppc_osx64.o sha256-ppc_osx64.o sha512-ppc_osx64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme =
|
||||
$shared_target=
|
||||
$shared_cflag = dlfcn
|
||||
$shared_ldflag = darwin-shared
|
||||
$shared_extension = -fPIC -fno-common
|
||||
$ranlib = -arch ppc64 -dynamiclib
|
||||
$arflags = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
|
||||
|
||||
*** darwin64-x86_64-cc
|
||||
$cc = cc
|
||||
$cflags = -arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id = MACOSX
|
||||
$lflags = -Wl,-search_paths_first%
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
@@ -994,7 +1048,7 @@ $rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
$shared_target= darwin-shared
|
||||
$shared_cflag = -fPIC -fno-common
|
||||
$shared_ldflag = -dynamiclib
|
||||
$shared_ldflag = -arch x86_64 -dynamiclib
|
||||
$shared_extension = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
|
||||
$ranlib =
|
||||
$arflags =
|
||||
@@ -1035,7 +1089,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1224,7 +1278,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1251,7 +1305,7 @@ $sys_id = MACOSX
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = osx_ppc32.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -1305,7 +1359,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1332,7 +1386,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1413,7 +1467,7 @@ $sys_id =
|
||||
$lflags = -lefence -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1440,7 +1494,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1467,7 +1521,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1494,7 +1548,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1521,7 +1575,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1548,7 +1602,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = sparcv8.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -1575,7 +1629,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = sparcv8.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -1602,11 +1656,11 @@ $sys_id = ULTRASPARC
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = sparcv8plus.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv8plus.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -1629,11 +1683,11 @@ $sys_id = ULTRASPARC
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8plus.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv8plus.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -1649,14 +1703,14 @@ $arflags =
|
||||
|
||||
*** debug-steve
|
||||
$cc = gcc
|
||||
$cflags = -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe
|
||||
$cflags = -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id =
|
||||
$lflags = -rdynamic -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1818,7 +1872,7 @@ $sys_id =
|
||||
$lflags = -lnsl -lsocket
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -1953,14 +2007,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -1980,14 +2034,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -2115,7 +2169,7 @@ $sys_id =
|
||||
$lflags = -Wl,+s -ldld
|
||||
$bn_ops = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = pa-risc2.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2142,7 +2196,7 @@ $sys_id =
|
||||
$lflags = -Wl,+s -ldld
|
||||
$bn_ops = SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = pa-risc2.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2169,14 +2223,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -2196,14 +2250,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -2223,7 +2277,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = pa-risc2W.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2250,7 +2304,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = pa-risc2W.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2277,7 +2331,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -2358,7 +2412,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-mips3.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2385,7 +2439,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-mips3.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2412,7 +2466,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-mips3.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2439,7 +2493,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-mips3.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2574,7 +2628,7 @@ $sys_id =
|
||||
$lflags =
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-out.o
|
||||
$bn_obj = bn86-out.o co86-out.o mo86-out.o
|
||||
$bn_obj = bn86-out.o co86-out.o
|
||||
$des_obj = dx86-out.o yx86-out.o
|
||||
$aes_obj = ax86-out.o
|
||||
$bf_obj = bx86-out.o
|
||||
@@ -2601,7 +2655,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -2682,7 +2736,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -2709,14 +2763,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -2736,14 +2790,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -2763,14 +2817,14 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = bn-ia64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$aes_obj = aes_core.o aes_cbc.o aes-ia64.o
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$sha1_obj = sha1-ia64.o sha256-ia64.o sha512-ia64.o
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rc4_obj = rc4-ia64.o
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
@@ -2790,7 +2844,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = linux_ppc32.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2817,34 +2871,7 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
$shared_target= linux-shared
|
||||
$shared_cflag = -fPIC
|
||||
$shared_ldflag = -m64
|
||||
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
|
||||
$ranlib =
|
||||
$arflags =
|
||||
|
||||
*** linux-s390x
|
||||
$cc = gcc
|
||||
$cflags = -m64 -DB_ENDIAN -DTERMIO -O3 -Wall
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$bn_obj = linux_ppc64.o
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
@@ -2871,8 +2898,8 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
@@ -2898,11 +2925,11 @@ $sys_id = ULTRASPARC
|
||||
$lflags = -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8plus.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv8plus.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -2925,12 +2952,12 @@ $sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
|
||||
$cpuid_obj = x86_64cpuid.o
|
||||
$bn_obj = x86_64-gcc.o x86_64-mont.o
|
||||
$bn_obj = x86_64-gcc.o
|
||||
$des_obj =
|
||||
$aes_obj = aes-x86_64.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj = md5-x86_64.o
|
||||
$sha1_obj = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj = rc4-x86_64.o
|
||||
$rmd160_obj =
|
||||
@@ -2956,7 +2983,7 @@ $bn_obj =
|
||||
$des_obj =
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv9.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -2979,7 +3006,7 @@ $sys_id = MINGW32
|
||||
$lflags = -lwsock32 -lgdi32
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
|
||||
$cpuid_obj = x86cpuid-cof.o
|
||||
$bn_obj = bn86-cof.o co86-cof.o mo86-cof.o
|
||||
$bn_obj = bn86-cof.o co86-cof.o
|
||||
$des_obj = dx86-cof.o yx86-cof.o
|
||||
$aes_obj = ax86-cof.o
|
||||
$bf_obj = bx86-cof.o
|
||||
@@ -3384,7 +3411,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl
|
||||
$bn_ops = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -3411,7 +3438,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -3492,8 +3519,8 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
@@ -3519,8 +3546,8 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
@@ -3546,11 +3573,11 @@ $sys_id = ULTRASPARC
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8plus.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv8plus.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -3573,11 +3600,11 @@ $sys_id = ULTRASPARC
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bn_obj = sparcv8plus.o
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv8plus.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -3627,7 +3654,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -3655,10 +3682,10 @@ $lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv9.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -3682,10 +3709,10 @@ $lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
|
||||
$cpuid_obj =
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$des_obj = des_enc-sparc.o fcrypt_b.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$md5_obj = md5-sparcv9.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
@@ -3708,12 +3735,12 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
|
||||
$cpuid_obj = x86_64cpuid.o
|
||||
$bn_obj = x86_64-gcc.o x86_64-mont.o
|
||||
$bn_obj = x86_64-gcc.o
|
||||
$des_obj =
|
||||
$aes_obj = aes-x86_64.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj = md5-x86_64.o
|
||||
$sha1_obj = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj = rc4-x86_64.o
|
||||
$rmd160_obj =
|
||||
@@ -3735,12 +3762,12 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
|
||||
$cpuid_obj = x86_64cpuid.o
|
||||
$bn_obj = x86_64-gcc.o x86_64-mont.o
|
||||
$bn_obj = x86_64-gcc.o
|
||||
$des_obj =
|
||||
$aes_obj = aes-x86_64.o
|
||||
$aes_obj =
|
||||
$bf_obj =
|
||||
$md5_obj = md5-x86_64.o
|
||||
$sha1_obj = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj = rc4-x86_64.o
|
||||
$rmd160_obj =
|
||||
@@ -3951,7 +3978,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl
|
||||
$bn_ops = BN_LLONG MD2_CHAR RC4_INDEX DES_PTR DES_RISC1 DES_UNROLL
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
@@ -3978,7 +4005,7 @@ $sys_id =
|
||||
$lflags = -lsocket -lnsl
|
||||
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
|
||||
$cpuid_obj = x86cpuid-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o mo86-elf.o
|
||||
$bn_obj = bn86-elf.o co86-elf.o
|
||||
$des_obj = dx86-elf.o yx86-elf.o
|
||||
$aes_obj = ax86-elf.o
|
||||
$bf_obj = bx86-elf.o
|
||||
|
921
apps/Makefile
921
apps/Makefile
File diff suppressed because it is too large
Load Diff
@@ -146,11 +146,9 @@ int WIN32_rename(const char *oldname,const char *newname);
|
||||
#ifndef NON_MAIN
|
||||
CONF *config=NULL;
|
||||
BIO *bio_err=NULL;
|
||||
int in_FIPS_mode=0;
|
||||
#else
|
||||
extern CONF *config;
|
||||
extern BIO *bio_err;
|
||||
extern int in_FIPS_mode;
|
||||
#endif
|
||||
|
||||
#else
|
||||
@@ -159,7 +157,6 @@ extern int in_FIPS_mode;
|
||||
extern CONF *config;
|
||||
extern char *default_config_file;
|
||||
extern BIO *bio_err;
|
||||
extern int in_FIPS_mode;
|
||||
|
||||
#endif
|
||||
|
||||
|
49
apps/dgst.c
49
apps/dgst.c
@@ -76,7 +76,7 @@
|
||||
|
||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
|
||||
const char *file,BIO *bmd,const char *hmac_key, int non_fips_allow);
|
||||
const char *file,BIO *bmd,const char *hmac_key);
|
||||
|
||||
int MAIN(int, char **);
|
||||
|
||||
@@ -101,16 +101,14 @@ int MAIN(int argc, char **argv)
|
||||
EVP_PKEY *sigkey = NULL;
|
||||
unsigned char *sigbuf = NULL;
|
||||
int siglen = 0;
|
||||
unsigned int sig_flags = 0;
|
||||
char *passargin = NULL, *passin = NULL;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
char *engine=NULL;
|
||||
#endif
|
||||
char *hmac_key=NULL;
|
||||
int non_fips_allow = 0;
|
||||
|
||||
apps_startup();
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
if ((buf=(unsigned char *)OPENSSL_malloc(BUFSIZE)) == NULL)
|
||||
{
|
||||
BIO_printf(bio_err,"out of memory\n");
|
||||
@@ -169,27 +167,6 @@ ERR_load_crypto_strings();
|
||||
keyfile=*(++argv);
|
||||
do_verify = 1;
|
||||
}
|
||||
else if (strcmp(*argv,"-x931") == 0)
|
||||
sig_flags = EVP_MD_CTX_FLAG_PAD_X931;
|
||||
else if (strcmp(*argv,"-pss_saltlen") == 0)
|
||||
{
|
||||
int saltlen;
|
||||
if (--argc < 1) break;
|
||||
saltlen=atoi(*(++argv));
|
||||
if (saltlen == -1)
|
||||
sig_flags = EVP_MD_CTX_FLAG_PSS_MREC;
|
||||
else if (saltlen == -2)
|
||||
sig_flags = EVP_MD_CTX_FLAG_PSS_MDLEN;
|
||||
else if (saltlen < -2 || saltlen >= 0xFFFE)
|
||||
{
|
||||
BIO_printf(bio_err, "Invalid PSS salt length %d\n", saltlen);
|
||||
goto end;
|
||||
}
|
||||
else
|
||||
sig_flags = saltlen;
|
||||
sig_flags <<= 16;
|
||||
sig_flags |= EVP_MD_CTX_FLAG_PAD_PSS;
|
||||
}
|
||||
else if (strcmp(*argv,"-signature") == 0)
|
||||
{
|
||||
if (--argc < 1) break;
|
||||
@@ -213,8 +190,6 @@ ERR_load_crypto_strings();
|
||||
out_bin = 1;
|
||||
else if (strcmp(*argv,"-d") == 0)
|
||||
debug=1;
|
||||
else if (strcmp(*argv,"-non-fips-allow") == 0)
|
||||
non_fips_allow=1;
|
||||
else if (!strcmp(*argv,"-hmac"))
|
||||
{
|
||||
if (--argc < 1)
|
||||
@@ -378,20 +353,8 @@ ERR_load_crypto_strings();
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (non_fips_allow)
|
||||
{
|
||||
EVP_MD_CTX *md_ctx;
|
||||
BIO_get_md_ctx(bmd,&md_ctx);
|
||||
EVP_MD_CTX_set_flags(md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
|
||||
}
|
||||
|
||||
if (sig_flags)
|
||||
{
|
||||
EVP_MD_CTX *md_ctx;
|
||||
BIO_get_md_ctx(bmd,&md_ctx);
|
||||
EVP_MD_CTX_set_flags(md_ctx, sig_flags);
|
||||
}
|
||||
|
||||
/* we use md as a filter, reading from 'in' */
|
||||
if (!BIO_set_md(bmd,md))
|
||||
@@ -407,7 +370,7 @@ ERR_load_crypto_strings();
|
||||
{
|
||||
BIO_set_fp(in,stdin,BIO_NOCLOSE);
|
||||
err=do_fp(out, buf,inp,separator, out_bin, sigkey, sigbuf,
|
||||
siglen,"","(stdin)",bmd,hmac_key,non_fips_allow);
|
||||
siglen,"","(stdin)",bmd,hmac_key);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -433,7 +396,7 @@ ERR_load_crypto_strings();
|
||||
else
|
||||
tmp="";
|
||||
r=do_fp(out,buf,inp,separator,out_bin,sigkey,sigbuf,
|
||||
siglen,tmp,argv[i],bmd,hmac_key,non_fips_allow);
|
||||
siglen,tmp,argv[i],bmd,hmac_key);
|
||||
if(r)
|
||||
err=r;
|
||||
if(tofree)
|
||||
@@ -460,7 +423,7 @@ end:
|
||||
|
||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
|
||||
const char *file,BIO *bmd,const char *hmac_key,int non_fips_allow)
|
||||
const char *file,BIO *bmd,const char *hmac_key)
|
||||
{
|
||||
unsigned int len;
|
||||
int i;
|
||||
|
13
apps/enc.c
13
apps/enc.c
@@ -127,7 +127,6 @@ int MAIN(int argc, char **argv)
|
||||
char *engine = NULL;
|
||||
#endif
|
||||
const EVP_MD *dgst=NULL;
|
||||
int non_fips_allow = 0;
|
||||
|
||||
apps_startup();
|
||||
|
||||
@@ -262,8 +261,6 @@ int MAIN(int argc, char **argv)
|
||||
if (--argc < 1) goto bad;
|
||||
md= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-non-fips-allow") == 0)
|
||||
non_fips_allow = 1;
|
||||
else if ((argv[0][0] == '-') &&
|
||||
((c=EVP_get_cipherbyname(&(argv[0][1]))) != NULL))
|
||||
{
|
||||
@@ -317,10 +314,7 @@ bad:
|
||||
|
||||
if (dgst == NULL)
|
||||
{
|
||||
if (in_FIPS_mode)
|
||||
dgst = EVP_sha1();
|
||||
else
|
||||
dgst = EVP_md5();
|
||||
dgst = EVP_md5();
|
||||
}
|
||||
|
||||
if (bufsize != NULL)
|
||||
@@ -555,11 +549,6 @@ bad:
|
||||
*/
|
||||
|
||||
BIO_get_cipher_ctx(benc, &ctx);
|
||||
|
||||
if (non_fips_allow)
|
||||
EVP_CIPHER_CTX_set_flags(ctx,
|
||||
EVP_CIPH_FLAG_NON_FIPS_ALLOW);
|
||||
|
||||
if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc))
|
||||
{
|
||||
BIO_printf(bio_err, "Error setting cipher %s\n",
|
||||
|
@@ -95,7 +95,6 @@ int MAIN(int argc, char **argv)
|
||||
int ret=1;
|
||||
int i,num=DEFBITS;
|
||||
long l;
|
||||
int use_x931 = 0;
|
||||
const EVP_CIPHER *enc=NULL;
|
||||
unsigned long f4=RSA_F4;
|
||||
char *outfile=NULL;
|
||||
@@ -139,8 +138,6 @@ int MAIN(int argc, char **argv)
|
||||
f4=3;
|
||||
else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0)
|
||||
f4=RSA_F4;
|
||||
else if (strcmp(*argv,"-x931") == 0)
|
||||
use_x931 = 1;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
else if (strcmp(*argv,"-engine") == 0)
|
||||
{
|
||||
@@ -269,17 +266,7 @@ bad:
|
||||
BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
|
||||
num);
|
||||
|
||||
if (use_x931)
|
||||
{
|
||||
BIGNUM *pubexp;
|
||||
pubexp = BN_new();
|
||||
if (!BN_set_word(pubexp, f4))
|
||||
goto err;
|
||||
if (!RSA_X931_generate_key_ex(rsa, num, pubexp, &cb))
|
||||
goto err;
|
||||
BN_free(pubexp);
|
||||
}
|
||||
else if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
|
||||
if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
|
||||
goto err;
|
||||
|
||||
app_RAND_write_file(NULL, bio_err);
|
||||
|
@@ -8,8 +8,9 @@
|
||||
HOME = .
|
||||
RANDFILE = $ENV::HOME/.rnd
|
||||
|
||||
# Uncomment out to enable OpenSSL configuration see config(3)
|
||||
# openssl_conf = openssl_init
|
||||
# Extra OBJECT IDENTIFIER info:
|
||||
#oid_file = $ENV::HOME/.oid
|
||||
oid_section = new_oids
|
||||
|
||||
# To use this configuration file with the "-extfile" option of the
|
||||
# "openssl x509" utility, name here the section containing the
|
||||
@@ -18,22 +19,13 @@ RANDFILE = $ENV::HOME/.rnd
|
||||
# (Alternatively, use a configuration file that has only
|
||||
# X.509v3 extensions in its main [= default] section.)
|
||||
|
||||
[openssl_init]
|
||||
# Extra OBJECT IDENTIFIER info:
|
||||
oid_section = new_oids
|
||||
alg_section = algs
|
||||
|
||||
[ new_oids ]
|
||||
|
||||
# We can add new OIDs in here for use by any config aware application
|
||||
# We can add new OIDs in here for use by 'ca' and 'req'.
|
||||
# Add a simple OID like this:
|
||||
# shortname=Long Object Identifier Name, 1.2.3.4
|
||||
# testoid1=1.2.3.4
|
||||
# Or use config file substitution like this:
|
||||
# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
|
||||
|
||||
[ algs ]
|
||||
# Algorithm configuration options. Currently just fips_mode
|
||||
fips_mode = no
|
||||
# testoid2=${testoid1}.5.6
|
||||
|
||||
####################################################################
|
||||
[ ca ]
|
||||
|
@@ -147,7 +147,6 @@ char *default_config_file=NULL;
|
||||
#ifdef MONOLITH
|
||||
CONF *config=NULL;
|
||||
BIO *bio_err=NULL;
|
||||
int in_FIPS_mode=0;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -233,19 +232,6 @@ int main(int Argc, char *Argv[])
|
||||
arg.data=NULL;
|
||||
arg.count=0;
|
||||
|
||||
in_FIPS_mode = 0;
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
if(getenv("OPENSSL_FIPS")) {
|
||||
if (!FIPS_mode_set(1)) {
|
||||
ERR_load_crypto_strings();
|
||||
ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
|
||||
EXIT(1);
|
||||
}
|
||||
in_FIPS_mode = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (bio_err == NULL)
|
||||
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
|
||||
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
|
||||
|
@@ -8,8 +8,9 @@
|
||||
HOME = .
|
||||
RANDFILE = $ENV::HOME/.rnd
|
||||
|
||||
# Uncomment out to enable OpenSSL configuration see config(3)
|
||||
# openssl_conf = openssl_init
|
||||
# Extra OBJECT IDENTIFIER info:
|
||||
#oid_file = $ENV::HOME/.oid
|
||||
oid_section = new_oids
|
||||
|
||||
# To use this configuration file with the "-extfile" option of the
|
||||
# "openssl x509" utility, name here the section containing the
|
||||
@@ -18,22 +19,13 @@ RANDFILE = $ENV::HOME/.rnd
|
||||
# (Alternatively, use a configuration file that has only
|
||||
# X.509v3 extensions in its main [= default] section.)
|
||||
|
||||
[openssl_init]
|
||||
# Extra OBJECT IDENTIFIER info:
|
||||
oid_section = new_oids
|
||||
alg_section = algs
|
||||
|
||||
[ new_oids ]
|
||||
|
||||
# We can add new OIDs in here for use by any config aware application
|
||||
# We can add new OIDs in here for use by 'ca' and 'req'.
|
||||
# Add a simple OID like this:
|
||||
# shortname=Long Object Identifier Name, 1.2.3.4
|
||||
# testoid1=1.2.3.4
|
||||
# Or use config file substitution like this:
|
||||
# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
|
||||
|
||||
[ algs ]
|
||||
# Algorithm configuration options. Currently just fips_mode
|
||||
fips_mode = no
|
||||
# testoid2=${testoid1}.5.6
|
||||
|
||||
####################################################################
|
||||
[ ca ]
|
||||
|
@@ -110,7 +110,7 @@ int MAIN(int argc, char **argv)
|
||||
int maciter = PKCS12_DEFAULT_ITER;
|
||||
int twopass = 0;
|
||||
int keytype = 0;
|
||||
int cert_pbe;
|
||||
int cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
|
||||
int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
|
||||
int ret = 1;
|
||||
int macver = 1;
|
||||
@@ -127,13 +127,6 @@ int MAIN(int argc, char **argv)
|
||||
|
||||
apps_startup();
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
if (FIPS_mode())
|
||||
cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
|
||||
else
|
||||
#endif
|
||||
cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
|
||||
|
||||
enc = EVP_des_ede3_cbc();
|
||||
if (bio_err == NULL ) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||
|
||||
@@ -484,7 +477,7 @@ int MAIN(int argc, char **argv)
|
||||
X509_keyid_set1(ucert, NULL, 0);
|
||||
X509_alias_set1(ucert, NULL, 0);
|
||||
/* Remove from list */
|
||||
sk_X509_delete(certs, i);
|
||||
(void)sk_X509_delete(certs, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -167,4 +167,7 @@ long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
|
||||
#ifdef HEADER_SSL_H
|
||||
void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret);
|
||||
void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg);
|
||||
void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
|
||||
unsigned char *data, int len,
|
||||
void *arg);
|
||||
#endif
|
||||
|
59
apps/s_cb.c
59
apps/s_cb.c
@@ -575,3 +575,62 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
|
||||
}
|
||||
(void)BIO_flush(bio);
|
||||
}
|
||||
|
||||
void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
|
||||
unsigned char *data, int len,
|
||||
void *arg)
|
||||
{
|
||||
BIO *bio = arg;
|
||||
char *extname;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case TLSEXT_TYPE_server_name:
|
||||
extname = "server name";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_max_fragment_length:
|
||||
extname = "max fragment length";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_client_certificate_url:
|
||||
extname = "client certificate URL";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_trusted_ca_keys:
|
||||
extname = "trusted CA keys";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_truncated_hmac:
|
||||
extname = "truncated HMAC";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_status_request:
|
||||
extname = "status request";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_elliptic_curves:
|
||||
extname = "elliptic curves";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_ec_point_formats:
|
||||
extname = "EC point formats";
|
||||
break;
|
||||
|
||||
case TLSEXT_TYPE_session_ticket:
|
||||
extname = "server ticket";
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
extname = "unknown";
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
BIO_printf(bio, "TLS %s extension \"%s\" (id=%d), len=%d\n",
|
||||
client_server ? "server": "client",
|
||||
extname, type, len);
|
||||
BIO_dump(bio, (char *)data, len);
|
||||
(void)BIO_flush(bio);
|
||||
}
|
||||
|
126
apps/s_client.c
126
apps/s_client.c
@@ -171,6 +171,9 @@ static int c_nbio=0;
|
||||
#endif
|
||||
static int c_Pause=0;
|
||||
static int c_debug=0;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
static int c_tlsextdebug=0;
|
||||
#endif
|
||||
static int c_msg=0;
|
||||
static int c_showcerts=0;
|
||||
|
||||
@@ -231,9 +234,36 @@ static void sc_usage(void)
|
||||
BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n");
|
||||
#endif
|
||||
BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
|
||||
|
||||
BIO_printf(bio_err," -sess_out arg - file to write SSL session to\n");
|
||||
BIO_printf(bio_err," -sess_in arg - file to read SSL session from\n");
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
BIO_printf(bio_err," -servername host - Set TLS extension servername in ClientHello\n");
|
||||
BIO_printf(bio_err," -tlsextdebug - hex dump of all TLS extensions received\n");
|
||||
BIO_printf(bio_err," -no_ticket - disable use of RFC4507bis session tickets\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
|
||||
/* This is a context that we pass to callbacks */
|
||||
typedef struct tlsextctx_st {
|
||||
BIO * biodebug;
|
||||
int ack;
|
||||
} tlsextctx;
|
||||
|
||||
|
||||
static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
|
||||
{
|
||||
tlsextctx * p = (tlsextctx *) arg;
|
||||
const char * hn= SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
|
||||
if (SSL_get_servername_type(s) != -1)
|
||||
p->ack = !SSL_session_reused(s) && hn != NULL;
|
||||
else
|
||||
BIO_printf(bio_err,"Can't use SSL_get_servername\n");
|
||||
|
||||
return SSL_TLSEXT_ERR_OK;
|
||||
}
|
||||
#endif
|
||||
enum
|
||||
{
|
||||
PROTO_OFF = 0,
|
||||
@@ -287,6 +317,13 @@ int MAIN(int argc, char **argv)
|
||||
struct timeval tv;
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
char *servername = NULL;
|
||||
tlsextctx tlsextcbp =
|
||||
{NULL,0};
|
||||
#endif
|
||||
char *sess_in = NULL;
|
||||
char *sess_out = NULL;
|
||||
struct sockaddr peer;
|
||||
int peerlen = sizeof(peer);
|
||||
int enable_timeouts = 0 ;
|
||||
@@ -361,6 +398,16 @@ int MAIN(int argc, char **argv)
|
||||
if (--argc < 1) goto bad;
|
||||
cert_file= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-sess_out") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
sess_out = *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-sess_in") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
sess_in = *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-certform") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
@@ -385,6 +432,10 @@ int MAIN(int argc, char **argv)
|
||||
c_Pause=1;
|
||||
else if (strcmp(*argv,"-debug") == 0)
|
||||
c_debug=1;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-tlsextdebug") == 0)
|
||||
c_tlsextdebug=1;
|
||||
#endif
|
||||
#ifdef WATT32
|
||||
else if (strcmp(*argv,"-wdebug") == 0)
|
||||
dbug_init();
|
||||
@@ -460,6 +511,10 @@ int MAIN(int argc, char **argv)
|
||||
off|=SSL_OP_NO_SSLv3;
|
||||
else if (strcmp(*argv,"-no_ssl2") == 0)
|
||||
off|=SSL_OP_NO_SSLv2;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-no_ticket") == 0)
|
||||
{ off|=SSL_OP_NO_TICKET; }
|
||||
#endif
|
||||
else if (strcmp(*argv,"-serverpref") == 0)
|
||||
off|=SSL_OP_CIPHER_SERVER_PREFERENCE;
|
||||
else if (strcmp(*argv,"-cipher") == 0)
|
||||
@@ -498,6 +553,14 @@ int MAIN(int argc, char **argv)
|
||||
if (--argc < 1) goto bad;
|
||||
inrand= *(++argv);
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-servername") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
servername= *(++argv);
|
||||
/* meth=TLSv1_client_method(); */
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err,"unknown option %s\n",*argv);
|
||||
@@ -621,8 +684,51 @@ bad:
|
||||
|
||||
store = SSL_CTX_get_cert_store(ctx);
|
||||
X509_STORE_set_flags(store, vflags);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (servername != NULL)
|
||||
{
|
||||
tlsextcbp.biodebug = bio_err;
|
||||
SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb);
|
||||
SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp);
|
||||
}
|
||||
#endif
|
||||
|
||||
con=SSL_new(ctx);
|
||||
if (sess_in)
|
||||
{
|
||||
SSL_SESSION *sess;
|
||||
BIO *stmp = BIO_new_file(sess_in, "r");
|
||||
if (!stmp)
|
||||
{
|
||||
BIO_printf(bio_err, "Can't open session file %s\n",
|
||||
sess_in);
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
sess = PEM_read_bio_SSL_SESSION(stmp, NULL, 0, NULL);
|
||||
BIO_free(stmp);
|
||||
if (!sess)
|
||||
{
|
||||
BIO_printf(bio_err, "Can't open session file %s\n",
|
||||
sess_in);
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
SSL_set_session(con, sess);
|
||||
SSL_SESSION_free(sess);
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (servername != NULL)
|
||||
{
|
||||
if (!SSL_set_tlsext_host_name(con,servername))
|
||||
{
|
||||
BIO_printf(bio_err,"Unable to set TLS servername extension.\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_KRB5
|
||||
if (con && (con->kssl_ctx = kssl_ctx_new()) != NULL)
|
||||
{
|
||||
@@ -714,6 +820,13 @@ re_start:
|
||||
SSL_set_msg_callback(con, msg_cb);
|
||||
SSL_set_msg_callback_arg(con, bio_c_out);
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (c_tlsextdebug)
|
||||
{
|
||||
SSL_set_tlsext_debug_callback(con, tlsext_cb);
|
||||
SSL_set_tlsext_debug_arg(con, bio_c_out);
|
||||
}
|
||||
#endif
|
||||
|
||||
SSL_set_bio(con,sbio,sbio);
|
||||
SSL_set_connect_state(con);
|
||||
@@ -837,6 +950,17 @@ re_start:
|
||||
if (in_init)
|
||||
{
|
||||
in_init=0;
|
||||
if (sess_out)
|
||||
{
|
||||
BIO *stmp = BIO_new_file(sess_out, "w");
|
||||
if (stmp)
|
||||
{
|
||||
PEM_write_bio_SSL_SESSION(stmp, SSL_get_session(con));
|
||||
BIO_free(stmp);
|
||||
}
|
||||
else
|
||||
BIO_printf(bio_err, "Error writing session file %s\n", sess_out);
|
||||
}
|
||||
print_stuff(bio_c_out,con,full_log);
|
||||
if (full_log > 0) full_log--;
|
||||
|
||||
|
296
apps/s_server.c
296
apps/s_server.c
@@ -238,6 +238,9 @@ static int bufsize=BUFSIZZ;
|
||||
static int accept_socket= -1;
|
||||
|
||||
#define TEST_CERT "server.pem"
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
#define TEST_CERT2 "server2.pem"
|
||||
#endif
|
||||
#undef PROG
|
||||
#define PROG s_server_main
|
||||
|
||||
@@ -247,6 +250,9 @@ static char *cipher=NULL;
|
||||
static int s_server_verify=SSL_VERIFY_NONE;
|
||||
static int s_server_session_id_context = 1; /* anything will do */
|
||||
static const char *s_cert_file=TEST_CERT,*s_key_file=NULL;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
static const char *s_cert_file2=TEST_CERT2,*s_key_file2=NULL;
|
||||
#endif
|
||||
static char *s_dcert_file=NULL,*s_dkey_file=NULL;
|
||||
#ifdef FIONBIO
|
||||
static int s_nbio=0;
|
||||
@@ -254,10 +260,16 @@ static int s_nbio=0;
|
||||
static int s_nbio_test=0;
|
||||
int s_crlf=0;
|
||||
static SSL_CTX *ctx=NULL;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
static SSL_CTX *ctx2=NULL;
|
||||
#endif
|
||||
static int www=0;
|
||||
|
||||
static BIO *bio_s_out=NULL;
|
||||
static int s_debug=0;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
static int s_tlsextdebug=0;
|
||||
#endif
|
||||
static int s_msg=0;
|
||||
static int s_quiet=0;
|
||||
|
||||
@@ -285,6 +297,11 @@ static void s_server_init(void)
|
||||
s_dkey_file=NULL;
|
||||
s_cert_file=TEST_CERT;
|
||||
s_key_file=NULL;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
s_cert_file2=TEST_CERT2;
|
||||
s_key_file2=NULL;
|
||||
ctx2=NULL;
|
||||
#endif
|
||||
#ifdef FIONBIO
|
||||
s_nbio=0;
|
||||
#endif
|
||||
@@ -371,6 +388,16 @@ static void sv_usage(void)
|
||||
#endif
|
||||
BIO_printf(bio_err," -id_prefix arg - Generate SSL/TLS session IDs prefixed by 'arg'\n");
|
||||
BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
BIO_printf(bio_err," -servername host - servername for HostName TLS extension\n");
|
||||
BIO_printf(bio_err," -servername_fatal - on mismatch send fatal alert (default warning alert)\n");
|
||||
BIO_printf(bio_err," -cert2 arg - certificate file to use for servername\n");
|
||||
BIO_printf(bio_err," (default is %s)\n",TEST_CERT2);
|
||||
BIO_printf(bio_err," -key2 arg - Private Key file to use for servername, in cert file if\n");
|
||||
BIO_printf(bio_err," not specified (default is %s)\n",TEST_CERT2);
|
||||
BIO_printf(bio_err," -tlsextdebug - hex dump of all TLS extensions received\n");
|
||||
BIO_printf(bio_err," -no_ticket - disable use of RFC4507bis session tickets\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
static int local_argc=0;
|
||||
@@ -526,6 +553,39 @@ static int ebcdic_puts(BIO *bp, const char *str)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
|
||||
/* This is a context that we pass to callbacks */
|
||||
typedef struct tlsextctx_st {
|
||||
char * servername;
|
||||
BIO * biodebug;
|
||||
int extension_error;
|
||||
} tlsextctx;
|
||||
|
||||
|
||||
static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
|
||||
{
|
||||
tlsextctx * p = (tlsextctx *) arg;
|
||||
const char * servername = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
|
||||
if (servername && p->biodebug)
|
||||
BIO_printf(p->biodebug,"Hostname in TLS extension: \"%s\"\n",servername);
|
||||
|
||||
if (!p->servername)
|
||||
return SSL_TLSEXT_ERR_NOACK;
|
||||
|
||||
if (servername)
|
||||
{
|
||||
if (strcmp(servername,p->servername))
|
||||
return p->extension_error;
|
||||
if (ctx2)
|
||||
{
|
||||
BIO_printf(p->biodebug,"Swiching server context.\n");
|
||||
SSL_set_SSL_CTX(s,ctx2);
|
||||
}
|
||||
}
|
||||
return SSL_TLSEXT_ERR_OK;
|
||||
}
|
||||
#endif
|
||||
int MAIN(int, char **);
|
||||
|
||||
int MAIN(int argc, char *argv[])
|
||||
@@ -545,10 +605,7 @@ int MAIN(int argc, char *argv[])
|
||||
int no_tmp_rsa=0,no_dhe=0,no_ecdhe=0,nocert=0;
|
||||
int state=0;
|
||||
SSL_METHOD *meth=NULL;
|
||||
#ifdef sock_type
|
||||
#undef sock_type
|
||||
#endif
|
||||
int sock_type=SOCK_STREAM;
|
||||
int socket_type=SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE *e=NULL;
|
||||
#endif
|
||||
@@ -559,6 +616,14 @@ int MAIN(int argc, char *argv[])
|
||||
int s_dcert_format = FORMAT_PEM, s_dkey_format = FORMAT_PEM;
|
||||
X509 *s_cert = NULL, *s_dcert = NULL;
|
||||
EVP_PKEY *s_key = NULL, *s_dkey = NULL;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
EVP_PKEY *s_key2 = NULL;
|
||||
X509 *s_cert2 = NULL;
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING};
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
|
||||
meth=SSLv23_server_method();
|
||||
@@ -724,6 +789,10 @@ int MAIN(int argc, char *argv[])
|
||||
}
|
||||
else if (strcmp(*argv,"-debug") == 0)
|
||||
{ s_debug=1; }
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-tlsextdebug") == 0)
|
||||
s_tlsextdebug=1;
|
||||
#endif
|
||||
else if (strcmp(*argv,"-msg") == 0)
|
||||
{ s_msg=1; }
|
||||
else if (strcmp(*argv,"-hack") == 0)
|
||||
@@ -754,6 +823,10 @@ int MAIN(int argc, char *argv[])
|
||||
{ off|=SSL_OP_NO_SSLv3; }
|
||||
else if (strcmp(*argv,"-no_tls1") == 0)
|
||||
{ off|=SSL_OP_NO_TLSv1; }
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-no_ticket") == 0)
|
||||
{ off|=SSL_OP_NO_TICKET; }
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SSL2
|
||||
else if (strcmp(*argv,"-ssl2") == 0)
|
||||
{ meth=SSLv2_server_method(); }
|
||||
@@ -770,7 +843,7 @@ int MAIN(int argc, char *argv[])
|
||||
else if (strcmp(*argv,"-dtls1") == 0)
|
||||
{
|
||||
meth=DTLSv1_server_method();
|
||||
sock_type = SOCK_DGRAM;
|
||||
socket_type = SOCK_DGRAM;
|
||||
}
|
||||
else if (strcmp(*argv,"-timeout") == 0)
|
||||
enable_timeouts = 1;
|
||||
@@ -799,6 +872,25 @@ int MAIN(int argc, char *argv[])
|
||||
if (--argc < 1) goto bad;
|
||||
inrand= *(++argv);
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
else if (strcmp(*argv,"-servername") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
tlsextcbp.servername= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-servername_fatal") == 0)
|
||||
{ tlsextcbp.extension_error = SSL_TLSEXT_ERR_ALERT_FATAL; }
|
||||
else if (strcmp(*argv,"-cert2") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
s_cert_file2= *(++argv);
|
||||
}
|
||||
else if (strcmp(*argv,"-key2") == 0)
|
||||
{
|
||||
if (--argc < 1) goto bad;
|
||||
s_key_file2= *(++argv);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err,"unknown option %s\n",*argv);
|
||||
@@ -831,6 +923,10 @@ bad:
|
||||
|
||||
if (s_key_file == NULL)
|
||||
s_key_file = s_cert_file;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (s_key_file2 == NULL)
|
||||
s_key_file2 = s_cert_file2;
|
||||
#endif
|
||||
|
||||
if (nocert == 0)
|
||||
{
|
||||
@@ -850,8 +946,29 @@ bad:
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (tlsextcbp.servername)
|
||||
{
|
||||
s_key2 = load_key(bio_err, s_key_file2, s_key_format, 0, pass, e,
|
||||
"second server certificate private key file");
|
||||
if (!s_key2)
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
|
||||
s_cert2 = load_cert(bio_err,s_cert_file2,s_cert_format,
|
||||
NULL, e, "second server certificate file");
|
||||
|
||||
if (!s_cert2)
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (s_dcert_file)
|
||||
{
|
||||
|
||||
@@ -908,6 +1025,10 @@ bad:
|
||||
s_key_file=NULL;
|
||||
s_dcert_file=NULL;
|
||||
s_dkey_file=NULL;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
s_cert_file2=NULL;
|
||||
s_key_file2=NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
ctx=SSL_CTX_new(meth);
|
||||
@@ -939,7 +1060,7 @@ bad:
|
||||
/* DTLS: partial reads end up discarding unread UDP bytes :-(
|
||||
* Setting read ahead solves this problem.
|
||||
*/
|
||||
if (sock_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
|
||||
if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
|
||||
|
||||
if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback);
|
||||
|
||||
@@ -966,6 +1087,62 @@ bad:
|
||||
}
|
||||
store = SSL_CTX_get_cert_store(ctx);
|
||||
X509_STORE_set_flags(store, vflags);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (s_cert2)
|
||||
{
|
||||
ctx2=SSL_CTX_new(meth);
|
||||
if (ctx2 == NULL)
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx2)
|
||||
{
|
||||
BIO_printf(bio_s_out,"Setting secondary ctx parameters\n");
|
||||
|
||||
if (session_id_prefix)
|
||||
{
|
||||
if(strlen(session_id_prefix) >= 32)
|
||||
BIO_printf(bio_err,
|
||||
"warning: id_prefix is too long, only one new session will be possible\n");
|
||||
else if(strlen(session_id_prefix) >= 16)
|
||||
BIO_printf(bio_err,
|
||||
"warning: id_prefix is too long if you use SSLv2\n");
|
||||
if(!SSL_CTX_set_generate_session_id(ctx2, generate_session_id))
|
||||
{
|
||||
BIO_printf(bio_err,"error setting 'id_prefix'\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
BIO_printf(bio_err,"id_prefix '%s' set.\n", session_id_prefix);
|
||||
}
|
||||
SSL_CTX_set_quiet_shutdown(ctx2,1);
|
||||
if (bugs) SSL_CTX_set_options(ctx2,SSL_OP_ALL);
|
||||
if (hack) SSL_CTX_set_options(ctx2,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);
|
||||
SSL_CTX_set_options(ctx2,off);
|
||||
|
||||
/* DTLS: partial reads end up discarding unread UDP bytes :-(
|
||||
* Setting read ahead solves this problem.
|
||||
*/
|
||||
if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx2, 1);
|
||||
|
||||
|
||||
if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback);
|
||||
|
||||
SSL_CTX_sess_set_cache_size(ctx2,128);
|
||||
|
||||
if ((!SSL_CTX_load_verify_locations(ctx2,CAfile,CApath)) ||
|
||||
(!SSL_CTX_set_default_verify_paths(ctx2)))
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
}
|
||||
store = SSL_CTX_get_cert_store(ctx2);
|
||||
X509_STORE_set_flags(store, vflags);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef OPENSSL_NO_DH
|
||||
if (!no_dhe)
|
||||
@@ -989,6 +1166,24 @@ bad:
|
||||
(void)BIO_flush(bio_s_out);
|
||||
|
||||
SSL_CTX_set_tmp_dh(ctx,dh);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
{
|
||||
if (!dhfile)
|
||||
{
|
||||
DH *dh2=load_dh_param(s_cert_file2);
|
||||
if (dh2 != NULL)
|
||||
{
|
||||
BIO_printf(bio_s_out,"Setting temp DH parameters\n");
|
||||
(void)BIO_flush(bio_s_out);
|
||||
|
||||
DH_free(dh);
|
||||
dh = dh2;
|
||||
}
|
||||
}
|
||||
SSL_CTX_set_tmp_dh(ctx2,dh);
|
||||
}
|
||||
#endif
|
||||
DH_free(dh);
|
||||
}
|
||||
#endif
|
||||
@@ -1034,12 +1229,20 @@ bad:
|
||||
(void)BIO_flush(bio_s_out);
|
||||
|
||||
SSL_CTX_set_tmp_ecdh(ctx,ecdh);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
SSL_CTX_set_tmp_ecdh(ctx2,ecdh);
|
||||
#endif
|
||||
EC_KEY_free(ecdh);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!set_cert_key_stuff(ctx,s_cert,s_key))
|
||||
goto end;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2 && !set_cert_key_stuff(ctx2,s_cert2,s_key2))
|
||||
goto end;
|
||||
#endif
|
||||
if (s_dcert != NULL)
|
||||
{
|
||||
if (!set_cert_key_stuff(ctx,s_dcert,s_dkey))
|
||||
@@ -1049,7 +1252,13 @@ bad:
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
#if 1
|
||||
if (!no_tmp_rsa)
|
||||
{
|
||||
SSL_CTX_set_tmp_rsa_callback(ctx,tmp_rsa_cb);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
SSL_CTX_set_tmp_rsa_callback(ctx2,tmp_rsa_cb);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx))
|
||||
{
|
||||
@@ -1065,6 +1274,16 @@ bad:
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
{
|
||||
if (!SSL_CTX_set_tmp_rsa(ctx2,rsa))
|
||||
{
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
RSA_free(rsa);
|
||||
BIO_printf(bio_s_out,"\n");
|
||||
}
|
||||
@@ -1076,19 +1295,46 @@ bad:
|
||||
BIO_printf(bio_err,"error setting cipher list\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2 && !SSL_CTX_set_cipher_list(ctx2,cipher))
|
||||
{
|
||||
BIO_printf(bio_err,"error setting cipher list\n");
|
||||
ERR_print_errors(bio_err);
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
SSL_CTX_set_verify(ctx,s_server_verify,verify_callback);
|
||||
SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context,
|
||||
sizeof s_server_session_id_context);
|
||||
|
||||
if (CAfile != NULL)
|
||||
SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
{
|
||||
SSL_CTX_set_verify(ctx2,s_server_verify,verify_callback);
|
||||
SSL_CTX_set_session_id_context(ctx2,(void*)&s_server_session_id_context,
|
||||
sizeof s_server_session_id_context);
|
||||
|
||||
tlsextcbp.biodebug = bio_s_out;
|
||||
SSL_CTX_set_tlsext_servername_callback(ctx2, ssl_servername_cb);
|
||||
SSL_CTX_set_tlsext_servername_arg(ctx2, &tlsextcbp);
|
||||
SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb);
|
||||
SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp);
|
||||
}
|
||||
#endif
|
||||
if (CAfile != NULL)
|
||||
{
|
||||
SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2)
|
||||
SSL_CTX_set_client_CA_list(ctx2,SSL_load_client_CA_file(CAfile));
|
||||
#endif
|
||||
}
|
||||
BIO_printf(bio_s_out,"ACCEPT\n");
|
||||
if (www)
|
||||
do_server(port,sock_type,&accept_socket,www_body, context);
|
||||
do_server(port,socket_type,&accept_socket,www_body, context);
|
||||
else
|
||||
do_server(port,sock_type,&accept_socket,sv_body, context);
|
||||
do_server(port,socket_type,&accept_socket,sv_body, context);
|
||||
print_stats(bio_s_out,ctx);
|
||||
ret=0;
|
||||
end:
|
||||
@@ -1105,6 +1351,13 @@ end:
|
||||
OPENSSL_free(pass);
|
||||
if (dpass)
|
||||
OPENSSL_free(dpass);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (ctx2 != NULL) SSL_CTX_free(ctx2);
|
||||
if (s_cert2)
|
||||
X509_free(s_cert2);
|
||||
if (s_key2)
|
||||
EVP_PKEY_free(s_key2);
|
||||
#endif
|
||||
if (bio_s_out != NULL)
|
||||
{
|
||||
BIO_free(bio_s_out);
|
||||
@@ -1171,6 +1424,13 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
|
||||
if (con == NULL) {
|
||||
con=SSL_new(ctx);
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (s_tlsextdebug)
|
||||
{
|
||||
SSL_set_tlsext_debug_callback(con, tlsext_cb);
|
||||
SSL_set_tlsext_debug_arg(con, bio_s_out);
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_KRB5
|
||||
if ((con->kssl_ctx = kssl_ctx_new()) != NULL)
|
||||
{
|
||||
@@ -1241,6 +1501,13 @@ static int sv_body(char *hostname, int s, unsigned char *context)
|
||||
SSL_set_msg_callback(con, msg_cb);
|
||||
SSL_set_msg_callback_arg(con, bio_s_out);
|
||||
}
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (s_tlsextdebug)
|
||||
{
|
||||
SSL_set_tlsext_debug_callback(con, tlsext_cb);
|
||||
SSL_set_tlsext_debug_arg(con, bio_s_out);
|
||||
}
|
||||
#endif
|
||||
|
||||
width=s+1;
|
||||
for (;;)
|
||||
@@ -1606,6 +1873,13 @@ static int www_body(char *hostname, int s, unsigned char *context)
|
||||
if (!BIO_set_write_buffer_size(io,bufsize)) goto err;
|
||||
|
||||
if ((con=SSL_new(ctx)) == NULL) goto err;
|
||||
#ifndef OPENSSL_NO_TLSEXT
|
||||
if (s_tlsextdebug)
|
||||
{
|
||||
SSL_set_tlsext_debug_callback(con, tlsext_cb);
|
||||
SSL_set_tlsext_debug_arg(con, bio_s_out);
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_KRB5
|
||||
if ((con->kssl_ctx = kssl_ctx_new()) != NULL)
|
||||
{
|
||||
|
76
config
76
config
@@ -501,7 +501,20 @@ case "$GUESSOS" in
|
||||
OUT="irix-mips3-$CC"
|
||||
;;
|
||||
mips4-sgi-irix64)
|
||||
OUT="irix64-mips4-$CC"
|
||||
echo "WARNING! If you wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure irix64-mips4-$CC' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
#CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
|
||||
#CPU=${CPU:-0}
|
||||
#if [ $CPU -ge 5000 ]; then
|
||||
# options="$options -mips4"
|
||||
#else
|
||||
# options="$options -mips3"
|
||||
#fi
|
||||
OUT="irix-mips3-$CC"
|
||||
;;
|
||||
ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
|
||||
ppc-apple-darwin*) OUT="darwin-ppc-cc" ;;
|
||||
@@ -521,12 +534,25 @@ case "$GUESSOS" in
|
||||
fi
|
||||
;;
|
||||
ppc64-*-linux2)
|
||||
OUT="linux-ppc64"
|
||||
echo "WARNING! If you wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure linux-ppc64' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
OUT="linux-ppc"
|
||||
;;
|
||||
ppc-*-linux2) OUT="linux-ppc" ;;
|
||||
ia64-*-linux?) OUT="linux-ia64" ;;
|
||||
sparc64-*-linux2)
|
||||
OUT="linux64-sparcv9" ;;
|
||||
echo "WARNING! If you *know* that your GNU C supports 64-bit/V9 ABI"
|
||||
echo " and wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure linux64-sparcv9' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
OUT="linux-sparcv9" ;;
|
||||
sparc-*-linux2)
|
||||
KARCH=`awk '/^type/{print$3;exit(0);}' /proc/cpuinfo`
|
||||
case ${KARCH:-sun4} in
|
||||
@@ -563,7 +589,7 @@ case "$GUESSOS" in
|
||||
sh*-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
|
||||
m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
|
||||
s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN -DNO_ASM" ;;
|
||||
s390x-*-linux2) OUT="linux-s390x" ;;
|
||||
s390x-*-linux2) OUT="linux-generic64"; options="$options -DB_ENDIAN" ;;
|
||||
x86_64-*-linux?) OUT="linux-x86_64" ;;
|
||||
*86-*-linux2) OUT="linux-elf"
|
||||
if [ "$GCCVER" -gt 28 ]; then
|
||||
@@ -584,13 +610,32 @@ case "$GUESSOS" in
|
||||
ISA64=`(isalist) 2>/dev/null | grep sparcv9`
|
||||
if [ "$ISA64" != "" ]; then
|
||||
if [ "$CC" = "cc" -a $CCVER -ge 50 ]; then
|
||||
OUT="solaris64-sparcv9-cc"
|
||||
echo "WARNING! If you wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure solaris64-sparcv9-cc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
elif [ "$CC" = "gcc" -a "$GCC_ARCH" = "-m64" ]; then
|
||||
# $GCC_ARCH denotes default ABI chosen by compiler driver
|
||||
# (first one found on the $PATH). I assume that user
|
||||
# expects certain consistency with the rest of his builds
|
||||
# and therefore switch over to 64-bit. <appro>
|
||||
OUT="solaris64-sparcv9-gcc"
|
||||
echo "WARNING! If you wish to build 32-bit library, then you have to"
|
||||
echo " invoke './Configure solaris-sparcv9-gcc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
elif [ "$GCC_ARCH" = "-m32" ]; then
|
||||
echo "NOTICE! If you *know* that your GNU C supports 64-bit/V9 ABI"
|
||||
echo " and wish to build 64-bit library, then you have to"
|
||||
echo " invoke './Configure solaris64-sparcv9-gcc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
@@ -657,11 +702,23 @@ case "$GUESSOS" in
|
||||
CPU_VERSION=${CPU_VERSION:-0}
|
||||
# See <sys/unistd.h> for further info on CPU_VERSION.
|
||||
if [ $CPU_VERSION -ge 768 ]; then # IA-64 CPU
|
||||
echo "WARNING! 64-bit ABI is the default configured ABI on HP-UXi."
|
||||
echo " If you wish to build 32-bit library, the you have to"
|
||||
echo " invoke './Configure hpux-ia64-cc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
OUT="hpux64-ia64-cc"
|
||||
elif [ $CPU_VERSION -ge 532 ]; then # PA-RISC 2.x CPU
|
||||
OUT=${OUT:-"hpux-parisc2-${CC}"}
|
||||
if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
|
||||
OUT="hpux64-parisc2-${CC}"
|
||||
echo "WARNING! If you wish to build 64-bit library then you have to"
|
||||
echo " invoke './Configure hpux64-parisc2-cc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have about 5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
fi
|
||||
elif [ $CPU_VERSION -ge 528 ]; then # PA-RISC 1.1+ CPU
|
||||
OUT="hpux-parisc-${CC}"
|
||||
@@ -684,7 +741,12 @@ case "$GUESSOS" in
|
||||
else
|
||||
OUT="aix-cc"
|
||||
if [ $KERNEL_BITS -eq 64 ]; then
|
||||
OUT="aix64-cc"
|
||||
echo "WARNING! If you wish to build 64-bit kit, then you have to"
|
||||
echo " invoke './Configure aix64-cc' *manually*."
|
||||
if [ "$TEST" = "false" -a -t 1 ]; then
|
||||
echo " You have ~5 seconds to press Ctrl-C to abort."
|
||||
(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if (lsattr -E -O -l `lsdev -c processor|awk '{print$1;exit}'` | grep -i powerpc) >/dev/null 2>&1; then
|
||||
|
@@ -33,8 +33,8 @@ GENERAL=Makefile README crypto-lib.com install.com
|
||||
|
||||
LIB= $(TOP)/libcrypto.a
|
||||
SHARED_LIB= libcrypto$(SHLIB_EXT)
|
||||
LIBSRC= cryptlib.c dyn_lck.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c o_init.c fips_err.c
|
||||
LIBOBJ= cryptlib.o dyn_lck.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o o_init.o fips_err.o $(CPUID_OBJ)
|
||||
LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c
|
||||
LIBOBJ= cryptlib.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o $(CPUID_OBJ)
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
@@ -47,7 +47,7 @@ ALL= $(GENERAL) $(SRC) $(HEADER)
|
||||
top:
|
||||
@(cd ..; $(MAKE) DIRS=$(DIR) all)
|
||||
|
||||
all: lib
|
||||
all: shared
|
||||
|
||||
buildinf.h: ../Makefile
|
||||
( echo "#ifndef MK1MF_BUILD"; \
|
||||
@@ -95,10 +95,10 @@ links:
|
||||
@target=links; $(RECURSIVE_MAKE)
|
||||
|
||||
# lib: and $(LIB): are splitted to avoid end-less loop
|
||||
lib: buildinf.h $(LIB) subdirs
|
||||
lib: $(LIB)
|
||||
@touch lib
|
||||
$(LIB): $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
|
||||
shared: buildinf.h lib subdirs
|
||||
@@ -159,13 +159,6 @@ cversion.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
|
||||
cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h
|
||||
cversion.o: cryptlib.h cversion.c
|
||||
dyn_lck.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
|
||||
dyn_lck.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
dyn_lck.o: ../include/openssl/err.h ../include/openssl/lhash.h
|
||||
dyn_lck.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
dyn_lck.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
|
||||
dyn_lck.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
|
||||
dyn_lck.o: dyn_lck.c
|
||||
ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c
|
||||
ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
|
||||
ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
@@ -174,13 +167,6 @@ ex_data.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
|
||||
ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
|
||||
ex_data.o: ex_data.c
|
||||
fips_err.o: ../include/openssl/bio.h ../include/openssl/crypto.h
|
||||
fips_err.o: ../include/openssl/e_os2.h ../include/openssl/err.h
|
||||
fips_err.o: ../include/openssl/fips.h ../include/openssl/lhash.h
|
||||
fips_err.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
fips_err.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
|
||||
fips_err.o: ../include/openssl/stack.h ../include/openssl/symhacks.h fips_err.c
|
||||
fips_err.o: fips_err.h
|
||||
mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
|
||||
mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
mem.o: ../include/openssl/err.h ../include/openssl/lhash.h
|
||||
@@ -201,12 +187,6 @@ mem_dbg.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
|
||||
mem_dbg.o: mem_dbg.c
|
||||
o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
|
||||
o_dir.o: LPdir_unix.c o_dir.c o_dir.h
|
||||
o_init.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/crypto.h
|
||||
o_init.o: ../include/openssl/e_os2.h ../include/openssl/err.h
|
||||
o_init.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
|
||||
o_init.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
|
||||
o_init.o: ../include/openssl/safestack.h ../include/openssl/stack.h
|
||||
o_init.o: ../include/openssl/symhacks.h o_init.c
|
||||
o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
|
||||
o_str.o: o_str.c o_str.h
|
||||
o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
|
||||
|
@@ -41,7 +41,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -57,11 +57,6 @@ ax86-cof.s: asm/aes-586.pl ../perlasm/x86asm.pl
|
||||
ax86-out.s: asm/aes-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) aes-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
|
||||
|
||||
aes-x86_64.s: asm/aes-x86_64.pl
|
||||
$(PERL) asm/aes-x86_64.pl $@
|
||||
# GNU make "catch all"
|
||||
aes-%.s: asm/aes-%.pl; $(PERL) $< $(CFLAGS) > $@
|
||||
|
||||
files:
|
||||
$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
|
||||
|
||||
|
@@ -66,10 +66,6 @@
|
||||
#define AES_MAXNR 14
|
||||
#define AES_BLOCK_SIZE 16
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
#define FIPS_AES_SIZE_T int
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@@ -59,7 +59,6 @@
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_locl.h"
|
||||
|
||||
#if !defined(OPENSSL_FIPS_AES_ASM)
|
||||
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const unsigned long length, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc) {
|
||||
@@ -130,4 +129,3 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@@ -37,7 +37,6 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <openssl/aes.h>
|
||||
#include <openssl/fips.h>
|
||||
#include "aes_locl.h"
|
||||
|
||||
/*
|
||||
@@ -632,10 +631,6 @@ int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
||||
int i = 0;
|
||||
u32 temp;
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
FIPS_selftest_check();
|
||||
#endif
|
||||
|
||||
if (!userKey || !key)
|
||||
return -1;
|
||||
if (bits != 128 && bits != 192 && bits != 256)
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -63,7 +63,7 @@ pk: pk.c
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -142,9 +142,9 @@ a_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
a_digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
a_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
a_digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
a_digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
a_digest.o: ../../include/openssl/opensslconf.h
|
||||
a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -250,27 +250,27 @@ a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
a_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
a_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
a_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
a_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_sign.c
|
||||
a_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
a_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
a_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
a_sign.o: ../cryptlib.h a_sign.c
|
||||
a_strex.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
a_strex.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
a_strex.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
a_strex.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
a_strex.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
a_strex.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h
|
||||
a_strex.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
a_strex.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
a_strex.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
a_strex.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
a_strex.o: ../cryptlib.h a_strex.c charmap.h
|
||||
a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
@@ -317,9 +317,8 @@ a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
a_verify.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
a_verify.o: ../../include/openssl/opensslconf.h
|
||||
a_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
a_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -338,9 +337,8 @@ asn1_gen.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
asn1_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
asn1_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
asn1_gen.o: ../../include/openssl/opensslconf.h
|
||||
asn1_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
asn1_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -370,9 +368,9 @@ asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
|
||||
asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
asn_moid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
asn_moid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
asn_moid.o: ../../include/openssl/opensslconf.h
|
||||
asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -391,23 +389,23 @@ d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
d2i_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
|
||||
d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pr.c
|
||||
d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
d2i_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
d2i_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
d2i_pr.o: ../cryptlib.h d2i_pr.c
|
||||
d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
d2i_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
d2i_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
d2i_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
d2i_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
|
||||
d2i_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pu.c
|
||||
d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
d2i_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
d2i_pu.o: ../cryptlib.h d2i_pu.c
|
||||
evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
|
||||
evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
@@ -443,73 +441,71 @@ i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
i2d_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
i2d_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
i2d_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
i2d_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
|
||||
i2d_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
i2d_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pr.c
|
||||
i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
i2d_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
i2d_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
i2d_pr.o: ../cryptlib.h i2d_pr.c
|
||||
i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
i2d_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
i2d_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
i2d_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
i2d_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
|
||||
i2d_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pu.c
|
||||
i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
i2d_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
i2d_pu.o: ../cryptlib.h i2d_pu.c
|
||||
n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h
|
||||
n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
|
||||
n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
n_pkey.o: ../cryptlib.h n_pkey.c
|
||||
n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
n_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h n_pkey.c
|
||||
nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
|
||||
nsseq.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
nsseq.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c
|
||||
nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
nsseq.o: ../../include/openssl/x509_vfy.h nsseq.c
|
||||
p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
p5_pbe.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
|
||||
p5_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
p5_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
p5_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbe.c
|
||||
p5_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
p5_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
p5_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
p5_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
|
||||
p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
p5_pbe.o: ../cryptlib.h p5_pbe.c
|
||||
p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
p5_pbev2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
p5_pbev2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
p5_pbev2.o: ../../include/openssl/opensslconf.h
|
||||
p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
|
||||
p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
@@ -522,42 +518,41 @@ p8_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
p8_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
p8_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
p8_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
p8_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
p8_pkey.o: ../cryptlib.h p8_pkey.c
|
||||
p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
p8_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
p8_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
p8_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p8_pkey.c
|
||||
t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
t_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
t_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_bitst.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_bitst.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c
|
||||
t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
t_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
t_bitst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
t_bitst.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
t_bitst.o: ../cryptlib.h t_bitst.c
|
||||
t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
t_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
t_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
t_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
t_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h t_crl.c
|
||||
t_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
t_crl.o: ../cryptlib.h t_crl.c
|
||||
t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
|
||||
@@ -575,57 +570,57 @@ t_req.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
t_req.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
t_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
|
||||
t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h t_req.c
|
||||
t_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
t_req.o: ../cryptlib.h t_req.c
|
||||
t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
t_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_spki.c
|
||||
t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
|
||||
t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
t_spki.o: ../cryptlib.h t_spki.c
|
||||
t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
t_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
t_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
|
||||
t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h t_x509.c
|
||||
t_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
|
||||
t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
t_x509.o: ../cryptlib.h t_x509.c
|
||||
t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c
|
||||
t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
t_x509a.o: ../cryptlib.h t_x509a.c
|
||||
tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
@@ -678,23 +673,21 @@ x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
|
||||
x_algor.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_algor.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_algor.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_algor.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_algor.o: x_algor.c
|
||||
x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_algor.o: ../../include/openssl/x509_vfy.h x_algor.c
|
||||
x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_attrib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_attrib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_attrib.o: ../../include/openssl/opensslconf.h
|
||||
x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -715,40 +708,37 @@ x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_crl.o: ../cryptlib.h x_crl.c
|
||||
x_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_crl.c
|
||||
x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
|
||||
x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
|
||||
x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
|
||||
x_exten.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_exten.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_exten.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_exten.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_exten.o: x_exten.c
|
||||
x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_exten.o: ../../include/openssl/x509_vfy.h x_exten.c
|
||||
x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
|
||||
x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_info.o: ../cryptlib.h x_info.c
|
||||
x_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_info.c
|
||||
x_long.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
@@ -764,37 +754,35 @@ x_name.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_name.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_name.o: ../cryptlib.h x_name.c
|
||||
x_name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_name.c
|
||||
x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
|
||||
x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_pkey.o: ../cryptlib.h x_pkey.c
|
||||
x_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c
|
||||
x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
x_pubkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_pubkey.o: ../../include/openssl/opensslconf.h
|
||||
x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
|
||||
x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
@@ -807,82 +795,76 @@ x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_req.o: ../cryptlib.h x_req.c
|
||||
x_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c
|
||||
x_sig.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_sig.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_sig.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_sig.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_sig.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_sig.o: ../cryptlib.h x_sig.c
|
||||
x_sig.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_sig.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_sig.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_sig.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c
|
||||
x_spki.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_spki.o: ../cryptlib.h x_spki.c
|
||||
x_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c
|
||||
x_val.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_val.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_val.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_val.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_val.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_val.o: ../cryptlib.h x_val.c
|
||||
x_val.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_val.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_val.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_val.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c
|
||||
x_x509.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
|
||||
x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
x_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
|
||||
x_x509.o: ../cryptlib.h x_x509.c
|
||||
x_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
x_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c
|
||||
x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
|
||||
x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
|
||||
x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
x_x509a.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
x_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
x_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
x_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
|
||||
x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
|
||||
x_x509a.o: ../cryptlib.h x_x509a.c
|
||||
x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
x_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
x_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
|
||||
x_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_x509a.c
|
||||
|
@@ -322,6 +322,17 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
|
||||
#define I2D_OF(type) int (*)(type *,unsigned char **)
|
||||
#define I2D_OF_const(type) int (*)(const type *,unsigned char **)
|
||||
|
||||
#define CHECKED_D2I_OF(type, d2i) \
|
||||
((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
|
||||
#define CHECKED_I2D_OF(type, i2d) \
|
||||
((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0)))
|
||||
#define CHECKED_NEW_OF(type, xnew) \
|
||||
((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0)))
|
||||
#define CHECKED_PTR_OF(type, p) \
|
||||
((void*) (1 ? p : (type*)0))
|
||||
#define CHECKED_PPTR_OF(type, p) \
|
||||
((void**) (1 ? p : (type**)0))
|
||||
|
||||
#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
|
||||
#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
|
||||
#define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
|
||||
@@ -902,23 +913,41 @@ int ASN1_object_size(int constructed, int length, int tag);
|
||||
|
||||
/* Used to implement other functions */
|
||||
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
|
||||
|
||||
#define ASN1_dup_of(type,i2d,d2i,x) \
|
||||
((type *(*)(I2D_OF(type),D2I_OF(type),type *))openssl_fcast(ASN1_dup))(i2d,d2i,x)
|
||||
((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
|
||||
CHECKED_D2I_OF(type, d2i), \
|
||||
CHECKED_PTR_OF(type, x)))
|
||||
|
||||
#define ASN1_dup_of_const(type,i2d,d2i,x) \
|
||||
((type *(*)(I2D_OF_const(type),D2I_OF(type),type *))openssl_fcast(ASN1_dup))(i2d,d2i,x)
|
||||
((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \
|
||||
CHECKED_D2I_OF(type, d2i), \
|
||||
CHECKED_PTR_OF(const type, x)))
|
||||
|
||||
void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
|
||||
|
||||
#ifndef OPENSSL_NO_FP_API
|
||||
void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x);
|
||||
|
||||
#define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
|
||||
((type *(*)(type *(*)(void),D2I_OF(type),FILE *,type **))openssl_fcast(ASN1_d2i_fp))(xnew,d2i,in,x)
|
||||
((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \
|
||||
CHECKED_D2I_OF(type, d2i), \
|
||||
in, \
|
||||
CHECKED_PPTR_OF(type, x)))
|
||||
|
||||
void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
|
||||
int ASN1_i2d_fp(i2d_of_void *i2d,FILE *out,void *x);
|
||||
|
||||
#define ASN1_i2d_fp_of(type,i2d,out,x) \
|
||||
((int (*)(I2D_OF(type),FILE *,type *))openssl_fcast(ASN1_i2d_fp))(i2d,out,x)
|
||||
(ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(type, x)))
|
||||
|
||||
#define ASN1_i2d_fp_of_const(type,i2d,out,x) \
|
||||
((int (*)(I2D_OF_const(type),FILE *,type *))openssl_fcast(ASN1_i2d_fp))(i2d,out,x)
|
||||
(ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(const type, x)))
|
||||
|
||||
int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
|
||||
int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
|
||||
#endif
|
||||
@@ -927,14 +956,26 @@ int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
|
||||
|
||||
#ifndef OPENSSL_NO_BIO
|
||||
void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x);
|
||||
|
||||
#define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
|
||||
((type *(*)(type *(*)(void),D2I_OF(type),BIO *,type **))openssl_fcast(ASN1_d2i_bio))(xnew,d2i,in,x)
|
||||
((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \
|
||||
CHECKED_D2I_OF(type, d2i), \
|
||||
in, \
|
||||
CHECKED_PPTR_OF(type, x)))
|
||||
|
||||
void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
|
||||
int ASN1_i2d_bio(i2d_of_void *i2d,BIO *out, unsigned char *x);
|
||||
|
||||
#define ASN1_i2d_bio_of(type,i2d,out,x) \
|
||||
((int (*)(I2D_OF(type),BIO *,type *))openssl_fcast(ASN1_i2d_bio))(i2d,out,x)
|
||||
(ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(type, x)))
|
||||
|
||||
#define ASN1_i2d_bio_of_const(type,i2d,out,x) \
|
||||
((int (*)(I2D_OF_const(type),BIO *,const type *))openssl_fcast(ASN1_i2d_bio))(i2d,out,x)
|
||||
(ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(const type, x)))
|
||||
|
||||
int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
|
||||
int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a);
|
||||
int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a);
|
||||
@@ -977,8 +1018,12 @@ void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
|
||||
void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
|
||||
ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
|
||||
ASN1_OCTET_STRING **oct);
|
||||
|
||||
#define ASN1_pack_string_of(type,obj,i2d,oct) \
|
||||
((ASN1_STRING *(*)(type *,I2D_OF(type),ASN1_OCTET_STRING **))openssl_fcast(ASN1_pack_string))(obj,i2d,oct)
|
||||
(ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
|
||||
CHECKED_I2D_OF(type, i2d), \
|
||||
oct))
|
||||
|
||||
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
|
||||
|
||||
void ASN1_STRING_set_default_mask(unsigned long mask);
|
||||
|
@@ -244,7 +244,7 @@ get_next:
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!(cflag & X509_FLAG_NO_ATTRIBUTES))
|
||||
if(!(cflag & X509_FLAG_NO_EXTENSIONS))
|
||||
{
|
||||
exts = X509_REQ_get_extensions(x);
|
||||
if(exts)
|
||||
@@ -262,7 +262,7 @@ get_next:
|
||||
j=X509_EXTENSION_get_critical(ex);
|
||||
if (BIO_printf(bp,": %s\n",j?"critical":"") <= 0)
|
||||
goto err;
|
||||
if(!X509V3_EXT_print(bp, ex, 0, 16))
|
||||
if(!X509V3_EXT_print(bp, ex, cflag, 16))
|
||||
{
|
||||
BIO_printf(bp, "%16s", "");
|
||||
M_ASN1_OCTET_STRING_print(bp,ex->value);
|
||||
|
@@ -130,7 +130,7 @@ ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **pval,
|
||||
ASN1_VALUE *ptmpval = NULL;
|
||||
if (!pval)
|
||||
pval = &ptmpval;
|
||||
asn1_tlc_clear(&c);
|
||||
c.valid = 0;
|
||||
if (ASN1_item_ex_d2i(pval, in, len, it, -1, 0, 0, &c) > 0)
|
||||
return *pval;
|
||||
return NULL;
|
||||
@@ -140,7 +140,7 @@ int ASN1_template_d2i(ASN1_VALUE **pval,
|
||||
const unsigned char **in, long len, const ASN1_TEMPLATE *tt)
|
||||
{
|
||||
ASN1_TLC c;
|
||||
asn1_tlc_clear(&c);
|
||||
c.valid = 0;
|
||||
return asn1_template_ex_d2i(pval, in, len, tt, 0, &c);
|
||||
}
|
||||
|
||||
|
@@ -494,7 +494,7 @@ static int asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out,
|
||||
{
|
||||
for (i = 0, tder = derlst; i < sk_ASN1_VALUE_num(sk);
|
||||
i++, tder++)
|
||||
sk_ASN1_VALUE_set(sk, i, tder->field);
|
||||
(void)sk_ASN1_VALUE_set(sk, i, tder->field);
|
||||
}
|
||||
OPENSSL_free(derlst);
|
||||
OPENSSL_free(tmpdat);
|
||||
|
@@ -84,7 +84,7 @@ static int crl_inf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
|
||||
* would affect the output of X509_CRL_print().
|
||||
*/
|
||||
case ASN1_OP_D2I_POST:
|
||||
sk_X509_REVOKED_set_cmp_func(a->revoked,X509_REVOKED_cmp);
|
||||
(void)sk_X509_REVOKED_set_cmp_func(a->revoked,X509_REVOKED_cmp);
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
|
@@ -40,7 +40,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -103,9 +103,5 @@ bf_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
|
||||
bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h
|
||||
bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
|
||||
bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c
|
||||
bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/crypto.h
|
||||
bf_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h
|
||||
bf_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
bf_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
bf_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
bf_skey.o: bf_locl.h bf_pi.h bf_skey.c
|
||||
bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
|
||||
bf_skey.o: ../../include/openssl/opensslconf.h bf_locl.h bf_pi.h bf_skey.c
|
||||
|
@@ -59,12 +59,10 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <openssl/blowfish.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/fips.h>
|
||||
#include "bf_locl.h"
|
||||
#include "bf_pi.h"
|
||||
|
||||
FIPS_NON_FIPS_VCIPHER_Init(BF)
|
||||
void BF_set_key(BF_KEY *key, int len, const unsigned char *data)
|
||||
{
|
||||
int i;
|
||||
BF_LONG *p,ri,in[2];
|
||||
|
@@ -104,9 +104,7 @@ typedef struct bf_key_st
|
||||
BF_LONG S[4*256];
|
||||
} BF_KEY;
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
void private_BF_set_key(BF_KEY *key, int len, const unsigned char *data);
|
||||
#endif
|
||||
|
||||
void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
|
||||
|
||||
void BF_encrypt(BF_LONG *data,const BF_KEY *key);
|
||||
|
@@ -45,7 +45,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
@@ -28,13 +28,13 @@ LIBSRC= bn_add.c bn_div.c bn_exp.c bn_lib.c bn_ctx.c bn_mul.c bn_mod.c \
|
||||
bn_print.c bn_rand.c bn_shift.c bn_word.c bn_blind.c \
|
||||
bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c bn_asm.c \
|
||||
bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \
|
||||
bn_depr.c bn_const.c bn_x931p.c bn_opt.c
|
||||
bn_depr.c bn_const.c
|
||||
|
||||
LIBOBJ= bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o bn_mod.o \
|
||||
bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o \
|
||||
bn_kron.o bn_sqrt.o bn_gcd.o bn_prime.o bn_err.o bn_sqr.o $(BN_ASM) \
|
||||
bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o bn_gf2m.o bn_nist.o \
|
||||
bn_depr.o bn_const.o bn_x931p.o bn_opt.o
|
||||
bn_depr.o bn_const.o
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
@@ -58,7 +58,7 @@ bnbug: bnbug.c ../../libcrypto.a top
|
||||
cc -g -I../../include bnbug.c -o bnbug ../../libcrypto.a
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -67,22 +67,16 @@ bn86-elf.s: asm/bn-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) bn-586.pl elf $(CFLAGS) > ../$@)
|
||||
co86-elf.s: asm/co-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) co-586.pl elf $(CFLAGS) > ../$@)
|
||||
mo86-elf.s: asm/x86-mont.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) x86-mont.pl elf $(CFLAGS) > ../$@)
|
||||
# COFF
|
||||
bn86-cof.s: asm/bn-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) bn-586.pl coff $(CFLAGS) > ../$@)
|
||||
co86-cof.s: asm/co-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) co-586.pl coff $(CFLAGS) > ../$@)
|
||||
mo86-cof.s: asm/x86-mont.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) x86-mont.pl coff $(CFLAGS) > ../$@)
|
||||
# a.out
|
||||
bn86-out.s: asm/bn-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) bn-586.pl a.out $(CFLAGS) > ../$@)
|
||||
co86-out.s: asm/co-586.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) co-586.pl a.out $(CFLAGS) > ../$@)
|
||||
mo86-out.s: asm/x86-mont.pl ../perlasm/x86asm.pl
|
||||
(cd asm; $(PERL) x86-mont.pl a.out $(CFLAGS) > ../$@)
|
||||
|
||||
sparcv8.o: asm/sparcv8.S
|
||||
$(CC) $(CFLAGS) -c asm/sparcv8.S
|
||||
@@ -97,15 +91,10 @@ bn-mips3.o: asm/mips3.s
|
||||
|
||||
x86_64-gcc.o: asm/x86_64-gcc.c
|
||||
$(CC) $(CFLAGS) -c -o $@ asm/x86_64-gcc.c
|
||||
x86_64-mont.s: asm/x86_64-mont.pl
|
||||
$(PERL) asm/x86_64-mont.pl $@
|
||||
|
||||
bn-ia64.s: asm/ia64.S
|
||||
$(CC) $(CFLAGS) -E asm/ia64.S > $@
|
||||
|
||||
bn-s390x.s: asm/s390x.S
|
||||
$(CC) $(CFLAGS) -E asm/s390x.S > $@
|
||||
|
||||
# GNU assembler fails to compile PA-RISC2 modules, insist on calling
|
||||
# vendor assembler...
|
||||
pa-risc2W.o: asm/pa-risc2W.s
|
||||
@@ -120,9 +109,6 @@ aix_ppc32.s: asm/ppc.pl; $(PERL) asm/ppc.pl $@
|
||||
aix_ppc64.s: asm/ppc.pl; $(PERL) asm/ppc.pl $@
|
||||
osx_ppc32.s: asm/ppc.pl; $(PERL) $< $@
|
||||
|
||||
# GNU make "catch all"
|
||||
%-mont.s: asm/%-mont.pl; $(PERL) $< $(CFLAGS) > $@
|
||||
|
||||
files:
|
||||
$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
|
||||
|
||||
@@ -297,13 +283,6 @@ bn_nist.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
bn_nist.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
bn_nist.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
bn_nist.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_nist.c
|
||||
bn_opt.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
bn_opt.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
bn_opt.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
bn_opt.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
bn_opt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
bn_opt.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
bn_opt.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_opt.c
|
||||
bn_prime.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
bn_prime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
bn_prime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
@@ -362,6 +341,3 @@ bn_word.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
bn_word.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
bn_word.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
bn_word.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_word.c
|
||||
bn_x931p.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
|
||||
bn_x931p.o: ../../include/openssl/opensslconf.h
|
||||
bn_x931p.o: ../../include/openssl/ossl_typ.h bn_x931p.c
|
||||
|
@@ -171,15 +171,14 @@
|
||||
.skip 32 // makes the loop body aligned at 64-byte boundary
|
||||
bn_add_words:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
{ .mii; alloc r2=ar.pfs,4,12,0,16
|
||||
cmp4.le p6,p0=r35,r0 };;
|
||||
{ .mfb; mov r8=r0 // return value
|
||||
(p6) br.ret.spnt.many b0 };;
|
||||
|
||||
.save ar.lc,r3
|
||||
{ .mib; sub r10=r35,r0,1
|
||||
.save ar.lc,r3
|
||||
mov r3=ar.lc
|
||||
brp.loop.imp .L_bn_add_words_ctop,.L_bn_add_words_cend-16
|
||||
}
|
||||
@@ -224,15 +223,14 @@ bn_add_words:
|
||||
.skip 32 // makes the loop body aligned at 64-byte boundary
|
||||
bn_sub_words:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
{ .mii; alloc r2=ar.pfs,4,12,0,16
|
||||
cmp4.le p6,p0=r35,r0 };;
|
||||
{ .mfb; mov r8=r0 // return value
|
||||
(p6) br.ret.spnt.many b0 };;
|
||||
|
||||
.save ar.lc,r3
|
||||
{ .mib; sub r10=r35,r0,1
|
||||
.save ar.lc,r3
|
||||
mov r3=ar.lc
|
||||
brp.loop.imp .L_bn_sub_words_ctop,.L_bn_sub_words_cend-16
|
||||
}
|
||||
@@ -283,7 +281,6 @@ bn_sub_words:
|
||||
.skip 32 // makes the loop body aligned at 64-byte boundary
|
||||
bn_mul_words:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
#ifdef XMA_TEMPTATION
|
||||
{ .mfi; alloc r2=ar.pfs,4,0,0,0 };;
|
||||
@@ -294,8 +291,8 @@ bn_mul_words:
|
||||
cmp4.le p6,p0=r34,r0
|
||||
(p6) br.ret.spnt.many b0 };;
|
||||
|
||||
.save ar.lc,r3
|
||||
{ .mii; sub r10=r34,r0,1
|
||||
.save ar.lc,r3
|
||||
mov r3=ar.lc
|
||||
mov r9=pr };;
|
||||
|
||||
@@ -397,12 +394,10 @@ bn_mul_words:
|
||||
.skip 48 // makes the loop body aligned at 64-byte boundary
|
||||
bn_mul_add_words:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
.save ar.lc,r3
|
||||
.save pr,r9
|
||||
{ .mmi; alloc r2=ar.pfs,4,4,0,8
|
||||
cmp4.le p6,p0=r34,r0
|
||||
.save ar.lc,r3
|
||||
mov r3=ar.lc };;
|
||||
{ .mib; mov r8=r0 // return value
|
||||
sub r10=r34,r0,1
|
||||
@@ -410,6 +405,7 @@ bn_mul_add_words:
|
||||
|
||||
.body
|
||||
{ .mib; setf.sig f8=r35 // w
|
||||
.save pr,r9
|
||||
mov r9=pr
|
||||
brp.loop.imp .L_bn_mul_add_words_ctop,.L_bn_mul_add_words_cend-16
|
||||
}
|
||||
@@ -466,7 +462,6 @@ bn_mul_add_words:
|
||||
.skip 32 // makes the loop body aligned at 64-byte boundary
|
||||
bn_sqr_words:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
{ .mii; alloc r2=ar.pfs,3,0,0,0
|
||||
sxt4 r34=r34 };;
|
||||
@@ -476,9 +471,10 @@ bn_sqr_words:
|
||||
nop.f 0x0
|
||||
(p6) br.ret.spnt.many b0 };;
|
||||
|
||||
.save ar.lc,r3
|
||||
{ .mii; sub r10=r34,r0,1
|
||||
.save ar.lc,r3
|
||||
mov r3=ar.lc
|
||||
.save pr,r9
|
||||
mov r9=pr };;
|
||||
|
||||
.body
|
||||
@@ -545,7 +541,6 @@ bn_sqr_words:
|
||||
.align 64
|
||||
bn_sqr_comba8:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
#if defined(_HPUX_SOURCE) && !defined(_LP64)
|
||||
{ .mii; alloc r2=ar.pfs,2,1,0,0
|
||||
@@ -617,7 +612,6 @@ bn_sqr_comba8:
|
||||
.align 64
|
||||
bn_mul_comba8:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
#if defined(_HPUX_SOURCE) && !defined(_LP64)
|
||||
{ .mii; alloc r2=ar.pfs,3,0,0,0
|
||||
@@ -1175,7 +1169,6 @@ bn_mul_comba8:
|
||||
.align 64
|
||||
bn_sqr_comba4:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
#if defined(_HPUX_SOURCE) && !defined(_LP64)
|
||||
{ .mii; alloc r2=ar.pfs,2,1,0,0
|
||||
@@ -1208,7 +1201,6 @@ bn_sqr_comba4:
|
||||
.align 64
|
||||
bn_mul_comba4:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
#if defined(_HPUX_SOURCE) && !defined(_LP64)
|
||||
{ .mii; alloc r2=ar.pfs,3,0,0,0
|
||||
@@ -1411,10 +1403,9 @@ equ=p24
|
||||
.align 64
|
||||
bn_div_words:
|
||||
.prologue
|
||||
.fframe 0
|
||||
.save ar.pfs,r2
|
||||
.save b0,r3
|
||||
{ .mii; alloc r2=ar.pfs,3,5,0,8
|
||||
.save b0,r3
|
||||
mov r3=b0
|
||||
mov r10=pr };;
|
||||
{ .mmb; cmp.eq p6,p0=r34,r0
|
||||
|
@@ -1,678 +0,0 @@
|
||||
.ident "s390x.S, version 1.0"
|
||||
// ====================================================================
|
||||
// Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
|
||||
// project.
|
||||
//
|
||||
// Rights for redistribution and usage in source and binary forms are
|
||||
// granted according to the OpenSSL license. Warranty of any kind is
|
||||
// disclaimed.
|
||||
// ====================================================================
|
||||
|
||||
.text
|
||||
|
||||
#define zero %r0
|
||||
|
||||
// BN_ULONG bn_mul_add_words(BN_ULONG *r2,BN_ULONG *r3,int r4,BN_ULONG r5);
|
||||
.globl bn_mul_add_words
|
||||
.type bn_mul_add_words,@function
|
||||
.align 4
|
||||
bn_mul_add_words:
|
||||
lghi zero,0 // zero = 0
|
||||
la %r1,0(%r2) // put rp aside
|
||||
lghi %r2,0 // i=0;
|
||||
ltgfr %r4,%r4
|
||||
bler %r14 // if (len<=0) return 0;
|
||||
|
||||
stmg %r6,%r10,48(%r15)
|
||||
lghi %r8,0 // carry = 0
|
||||
srag %r10,%r4,2 // cnt=len/4
|
||||
jz .Loop1_madd
|
||||
|
||||
.Loop4_madd:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %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 %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 %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 %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
|
||||
|
||||
lghi %r10,3
|
||||
nr %r4,%r10 // cnt=len%4
|
||||
jz .Lend_madd
|
||||
|
||||
.Loop1_madd:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %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
|
||||
|
||||
.Lend_madd:
|
||||
lgr %r2,%r8
|
||||
lmg %r6,%r10,48(%r15)
|
||||
br %r14
|
||||
.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);
|
||||
.globl bn_mul_words
|
||||
.type bn_mul_words,@function
|
||||
.align 4
|
||||
bn_mul_words:
|
||||
lghi zero,0 // zero = 0
|
||||
la %r1,0(%r2) // put rp aside
|
||||
lghi %r2,0 // i=0;
|
||||
ltgfr %r4,%r4
|
||||
bler %r14 // if (len<=0) return 0;
|
||||
|
||||
stmg %r6,%r10,48(%r15)
|
||||
lghi %r8,0 // carry = 0
|
||||
srag %r10,%r4,2 // cnt=len/4
|
||||
jz .Loop1_mul
|
||||
|
||||
.Loop4_mul:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %r7,%r8 // +=carry
|
||||
alcgr %r6,zero
|
||||
stg %r7,0(%r2,%r1) // rp[i]=
|
||||
|
||||
lg %r9,8(%r2,%r3)
|
||||
mlgr %r8,%r5
|
||||
algr %r9,%r6
|
||||
alcgr %r8,zero
|
||||
stg %r9,8(%r2,%r1)
|
||||
|
||||
lg %r7,16(%r2,%r3)
|
||||
mlgr %r6,%r5
|
||||
algr %r7,%r8
|
||||
alcgr %r6,zero
|
||||
stg %r7,16(%r2,%r1)
|
||||
|
||||
lg %r9,24(%r2,%r3)
|
||||
mlgr %r8,%r5
|
||||
algr %r9,%r6
|
||||
alcgr %r8,zero
|
||||
stg %r9,24(%r2,%r1)
|
||||
|
||||
la %r2,32(%r2) // i+=4
|
||||
brct %r10,.Loop4_mul
|
||||
|
||||
lghi %r10,3
|
||||
nr %r4,%r10 // cnt=len%4
|
||||
jz .Lend_mul
|
||||
|
||||
.Loop1_mul:
|
||||
lg %r7,0(%r2,%r3) // ap[i]
|
||||
mlgr %r6,%r5 // *=w
|
||||
algr %r7,%r8 // +=carry
|
||||
alcgr %r6,zero
|
||||
stg %r7,0(%r2,%r1) // rp[i]=
|
||||
|
||||
lgr %r8,%r6
|
||||
la %r2,8(%r2) // i++
|
||||
brct %r4,.Loop1_mul
|
||||
|
||||
.Lend_mul:
|
||||
lgr %r2,%r8
|
||||
lmg %r6,%r10,48(%r15)
|
||||
br %r14
|
||||
.size bn_mul_words,.-bn_mul_words
|
||||
|
||||
// void bn_sqr_words(BN_ULONG *r2,BN_ULONG *r2,int r4)
|
||||
.globl bn_sqr_words
|
||||
.type bn_sqr_words,@function
|
||||
.align 4
|
||||
bn_sqr_words:
|
||||
ltgfr %r4,%r4
|
||||
bler %r14
|
||||
|
||||
stmg %r6,%r7,48(%r15)
|
||||
srag %r1,%r4,2 // cnt=len/4
|
||||
jz .Loop1_sqr
|
||||
|
||||
.Loop4_sqr:
|
||||
lg %r7,0(%r3)
|
||||
mlgr %r6,%r7
|
||||
stg %r7,0(%r2)
|
||||
stg %r6,8(%r2)
|
||||
|
||||
lg %r7,8(%r3)
|
||||
mlgr %r6,%r7
|
||||
stg %r7,16(%r2)
|
||||
stg %r6,24(%r2)
|
||||
|
||||
lg %r7,16(%r3)
|
||||
mlgr %r6,%r7
|
||||
stg %r7,32(%r2)
|
||||
stg %r6,40(%r2)
|
||||
|
||||
lg %r7,24(%r3)
|
||||
mlgr %r6,%r7
|
||||
stg %r7,48(%r2)
|
||||
stg %r6,56(%r2)
|
||||
|
||||
la %r3,32(%r3)
|
||||
la %r2,64(%r2)
|
||||
brct %r1,.Loop4_sqr
|
||||
|
||||
lghi %r1,3
|
||||
nr %r4,%r1 // cnt=len%4
|
||||
jz .Lend_sqr
|
||||
|
||||
.Loop1_sqr:
|
||||
lg %r7,0(%r3)
|
||||
mlgr %r6,%r7
|
||||
stg %r7,0(%r2)
|
||||
stg %r6,8(%r2)
|
||||
|
||||
la %r3,8(%r3)
|
||||
la %r2,16(%r2)
|
||||
brct %r4,.Loop1_sqr
|
||||
|
||||
.Lend_sqr:
|
||||
lmg %r6,%r7,48(%r15)
|
||||
br %r14
|
||||
.size bn_sqr_words,.-bn_sqr_words
|
||||
|
||||
// BN_ULONG bn_div_words(BN_ULONG h,BN_ULONG l,BN_ULONG d);
|
||||
.globl bn_div_words
|
||||
.type bn_div_words,@function
|
||||
.align 4
|
||||
bn_div_words:
|
||||
dlgr %r2,%r4
|
||||
lgr %r2,%r3
|
||||
br %r14
|
||||
.size bn_div_words,.-bn_div_words
|
||||
|
||||
// BN_ULONG bn_add_words(BN_ULONG *r2,BN_ULONG *r3,BN_ULONG *r4,int r5);
|
||||
.globl bn_add_words
|
||||
.type bn_add_words,@function
|
||||
.align 4
|
||||
bn_add_words:
|
||||
la %r1,0(%r2) // put rp aside
|
||||
lghi %r2,0 // i=0
|
||||
ltgfr %r5,%r5
|
||||
bler %r14 // if (len<=0) return 0;
|
||||
|
||||
stg %r6,48(%r15)
|
||||
lghi %r6,3
|
||||
nr %r6,%r5 // len%4
|
||||
sra %r5,2 // len/4, use sra because it sets condition code
|
||||
jz .Loop1_add // carry is incidentally cleared if branch taken
|
||||
algr %r2,%r2 // clear carry
|
||||
|
||||
.Loop4_add:
|
||||
lg %r0,0(%r2,%r3)
|
||||
alcg %r0,0(%r2,%r4)
|
||||
stg %r0,0(%r2,%r1)
|
||||
lg %r0,8(%r2,%r3)
|
||||
alcg %r0,8(%r2,%r4)
|
||||
stg %r0,8(%r2,%r1)
|
||||
lg %r0,16(%r2,%r3)
|
||||
alcg %r0,16(%r2,%r4)
|
||||
stg %r0,16(%r2,%r1)
|
||||
lg %r0,24(%r2,%r3)
|
||||
alcg %r0,24(%r2,%r4)
|
||||
stg %r0,24(%r2,%r1)
|
||||
|
||||
la %r2,32(%r2) // i+=4
|
||||
brct %r5,.Loop4_add
|
||||
|
||||
la %r6,1(%r6) // see if len%4 is zero ...
|
||||
brct %r6,.Loop1_add // without touching condition code:-)
|
||||
|
||||
.Lexit_add:
|
||||
lghi %r2,0
|
||||
alcgr %r2,%r2
|
||||
lg %r6,48(%r15)
|
||||
br %r14
|
||||
|
||||
.Loop1_add:
|
||||
lg %r0,0(%r2,%r3)
|
||||
alcg %r0,0(%r2,%r4)
|
||||
stg %r0,0(%r2,%r1)
|
||||
|
||||
la %r2,8(%r2) // i++
|
||||
brct %r6,.Loop1_add
|
||||
|
||||
j .Lexit_add
|
||||
.size bn_add_words,.-bn_add_words
|
||||
|
||||
// BN_ULONG bn_sub_words(BN_ULONG *r2,BN_ULONG *r3,BN_ULONG *r4,int r5);
|
||||
.globl bn_sub_words
|
||||
.type bn_sub_words,@function
|
||||
.align 4
|
||||
bn_sub_words:
|
||||
la %r1,0(%r2) // put rp aside
|
||||
lghi %r2,0 // i=0
|
||||
ltgfr %r5,%r5
|
||||
bler %r14 // if (len<=0) return 0;
|
||||
|
||||
stg %r6,48(%r15)
|
||||
lghi %r6,3
|
||||
nr %r6,%r5 // len%4
|
||||
sra %r5,2 // len/4, use sra because it sets condition code
|
||||
jnz .Loop4_sub // borrow is incidentally cleared if branch taken
|
||||
slgr %r2,%r2 // clear borrow
|
||||
|
||||
.Loop1_sub:
|
||||
lg %r0,0(%r2,%r3)
|
||||
slbg %r0,0(%r2,%r4)
|
||||
stg %r0,0(%r2,%r1)
|
||||
|
||||
la %r2,8(%r2) // i++
|
||||
brct %r6,.Loop1_sub
|
||||
j .Lexit_sub
|
||||
|
||||
.Loop4_sub:
|
||||
lg %r0,0(%r2,%r3)
|
||||
slbg %r0,0(%r2,%r4)
|
||||
stg %r0,0(%r2,%r1)
|
||||
lg %r0,8(%r2,%r3)
|
||||
slbg %r0,8(%r2,%r4)
|
||||
stg %r0,8(%r2,%r1)
|
||||
lg %r0,16(%r2,%r3)
|
||||
slbg %r0,16(%r2,%r4)
|
||||
stg %r0,16(%r2,%r1)
|
||||
lg %r0,24(%r2,%r3)
|
||||
slbg %r0,24(%r2,%r4)
|
||||
stg %r0,24(%r2,%r1)
|
||||
|
||||
la %r2,32(%r2) // i+=4
|
||||
brct %r5,.Loop4_sub
|
||||
|
||||
la %r6,1(%r6) // see if len%4 is zero ...
|
||||
brct %r6,.Loop1_sub // without touching condition code:-)
|
||||
|
||||
.Lexit_sub:
|
||||
lghi %r2,0
|
||||
slbgr %r2,%r2
|
||||
lcgr %r2,%r2
|
||||
lg %r6,48(%r15)
|
||||
br %r14
|
||||
.size bn_sub_words,.-bn_sub_words
|
||||
|
||||
#define c1 %r1
|
||||
#define c2 %r5
|
||||
#define c3 %r8
|
||||
|
||||
#define mul_add_c(ai,bi,c1,c2,c3) \
|
||||
lg %r7,ai*8(%r3); \
|
||||
mlg %r6,bi*8(%r4); \
|
||||
algr c1,%r7; \
|
||||
alcgr c2,%r6; \
|
||||
alcgr c3,zero
|
||||
|
||||
// void bn_mul_comba8(BN_ULONG *r2,BN_ULONG *r3,BN_ULONG *r4);
|
||||
.globl bn_mul_comba8
|
||||
.type bn_mul_comba8,@function
|
||||
.align 4
|
||||
bn_mul_comba8:
|
||||
stmg %r6,%r8,48(%r15)
|
||||
|
||||
lghi c1,0
|
||||
lghi c2,0
|
||||
lghi c3,0
|
||||
lghi zero,0
|
||||
|
||||
mul_add_c(0,0,c1,c2,c3);
|
||||
stg c1,0*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
mul_add_c(0,1,c2,c3,c1);
|
||||
mul_add_c(1,0,c2,c3,c1);
|
||||
stg c2,1*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(2,0,c3,c1,c2);
|
||||
mul_add_c(1,1,c3,c1,c2);
|
||||
mul_add_c(0,2,c3,c1,c2);
|
||||
stg c3,2*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
mul_add_c(0,3,c1,c2,c3);
|
||||
mul_add_c(1,2,c1,c2,c3);
|
||||
mul_add_c(2,1,c1,c2,c3);
|
||||
mul_add_c(3,0,c1,c2,c3);
|
||||
stg c1,3*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
mul_add_c(4,0,c2,c3,c1);
|
||||
mul_add_c(3,1,c2,c3,c1);
|
||||
mul_add_c(2,2,c2,c3,c1);
|
||||
mul_add_c(1,3,c2,c3,c1);
|
||||
mul_add_c(0,4,c2,c3,c1);
|
||||
stg c2,4*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(0,5,c3,c1,c2);
|
||||
mul_add_c(1,4,c3,c1,c2);
|
||||
mul_add_c(2,3,c3,c1,c2);
|
||||
mul_add_c(3,2,c3,c1,c2);
|
||||
mul_add_c(4,1,c3,c1,c2);
|
||||
mul_add_c(5,0,c3,c1,c2);
|
||||
stg c3,5*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
mul_add_c(6,0,c1,c2,c3);
|
||||
mul_add_c(5,1,c1,c2,c3);
|
||||
mul_add_c(4,2,c1,c2,c3);
|
||||
mul_add_c(3,3,c1,c2,c3);
|
||||
mul_add_c(2,4,c1,c2,c3);
|
||||
mul_add_c(1,5,c1,c2,c3);
|
||||
mul_add_c(0,6,c1,c2,c3);
|
||||
stg c1,6*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
mul_add_c(0,7,c2,c3,c1);
|
||||
mul_add_c(1,6,c2,c3,c1);
|
||||
mul_add_c(2,5,c2,c3,c1);
|
||||
mul_add_c(3,4,c2,c3,c1);
|
||||
mul_add_c(4,3,c2,c3,c1);
|
||||
mul_add_c(5,2,c2,c3,c1);
|
||||
mul_add_c(6,1,c2,c3,c1);
|
||||
mul_add_c(7,0,c2,c3,c1);
|
||||
stg c2,7*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(7,1,c3,c1,c2);
|
||||
mul_add_c(6,2,c3,c1,c2);
|
||||
mul_add_c(5,3,c3,c1,c2);
|
||||
mul_add_c(4,4,c3,c1,c2);
|
||||
mul_add_c(3,5,c3,c1,c2);
|
||||
mul_add_c(2,6,c3,c1,c2);
|
||||
mul_add_c(1,7,c3,c1,c2);
|
||||
stg c3,8*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
mul_add_c(2,7,c1,c2,c3);
|
||||
mul_add_c(3,6,c1,c2,c3);
|
||||
mul_add_c(4,5,c1,c2,c3);
|
||||
mul_add_c(5,4,c1,c2,c3);
|
||||
mul_add_c(6,3,c1,c2,c3);
|
||||
mul_add_c(7,2,c1,c2,c3);
|
||||
stg c1,9*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
mul_add_c(7,3,c2,c3,c1);
|
||||
mul_add_c(6,4,c2,c3,c1);
|
||||
mul_add_c(5,5,c2,c3,c1);
|
||||
mul_add_c(4,6,c2,c3,c1);
|
||||
mul_add_c(3,7,c2,c3,c1);
|
||||
stg c2,10*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(4,7,c3,c1,c2);
|
||||
mul_add_c(5,6,c3,c1,c2);
|
||||
mul_add_c(6,5,c3,c1,c2);
|
||||
mul_add_c(7,4,c3,c1,c2);
|
||||
stg c3,11*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
mul_add_c(7,5,c1,c2,c3);
|
||||
mul_add_c(6,6,c1,c2,c3);
|
||||
mul_add_c(5,7,c1,c2,c3);
|
||||
stg c1,12*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
|
||||
mul_add_c(6,7,c2,c3,c1);
|
||||
mul_add_c(7,6,c2,c3,c1);
|
||||
stg c2,13*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(7,7,c3,c1,c2);
|
||||
stg c3,14*8(%r2)
|
||||
stg c1,15*8(%r2)
|
||||
|
||||
lmg %r6,%r8,48(%r15)
|
||||
br %r14
|
||||
.size bn_mul_comba8,.-bn_mul_comba8
|
||||
|
||||
// void bn_mul_comba4(BN_ULONG *r2,BN_ULONG *r3,BN_ULONG *r4);
|
||||
.globl bn_mul_comba4
|
||||
.type bn_mul_comba4,@function
|
||||
.align 4
|
||||
bn_mul_comba4:
|
||||
stmg %r6,%r8,48(%r15)
|
||||
|
||||
lghi c1,0
|
||||
lghi c2,0
|
||||
lghi c3,0
|
||||
lghi zero,0
|
||||
|
||||
mul_add_c(0,0,c1,c2,c3);
|
||||
stg c1,0*8(%r3)
|
||||
lghi c1,0
|
||||
|
||||
mul_add_c(0,1,c2,c3,c1);
|
||||
mul_add_c(1,0,c2,c3,c1);
|
||||
stg c2,1*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(2,0,c3,c1,c2);
|
||||
mul_add_c(1,1,c3,c1,c2);
|
||||
mul_add_c(0,2,c3,c1,c2);
|
||||
stg c3,2*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
mul_add_c(0,3,c1,c2,c3);
|
||||
mul_add_c(1,2,c1,c2,c3);
|
||||
mul_add_c(2,1,c1,c2,c3);
|
||||
mul_add_c(3,0,c1,c2,c3);
|
||||
stg c1,3*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
mul_add_c(3,1,c2,c3,c1);
|
||||
mul_add_c(2,2,c2,c3,c1);
|
||||
mul_add_c(1,3,c2,c3,c1);
|
||||
stg c2,4*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
mul_add_c(2,3,c3,c1,c2);
|
||||
mul_add_c(3,2,c3,c1,c2);
|
||||
stg c3,5*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
mul_add_c(3,3,c1,c2,c3);
|
||||
stg c1,6*8(%r2)
|
||||
stg c2,7*8(%r2)
|
||||
|
||||
stmg %r6,%r8,48(%r15)
|
||||
br %r14
|
||||
.size bn_mul_comba4,.-bn_mul_comba4
|
||||
|
||||
#define sqr_add_c(ai,c1,c2,c3) \
|
||||
lg %r7,ai*8(%r3); \
|
||||
mlgr %r6,%r7; \
|
||||
algr c1,%r7; \
|
||||
alcgr c2,%r6; \
|
||||
alcgr c3,zero
|
||||
|
||||
#define sqr_add_c2(ai,aj,c1,c2,c3) \
|
||||
lg %r7,ai*8(%r3); \
|
||||
mlg %r6,aj*8(%r3); \
|
||||
algr c1,%r7; \
|
||||
alcgr c2,%r6; \
|
||||
alcgr c3,zero; \
|
||||
algr c1,%r7; \
|
||||
alcgr c2,%r6; \
|
||||
alcgr c3,zero
|
||||
|
||||
// void bn_sqr_comba8(BN_ULONG *r2,BN_ULONG *r3);
|
||||
.globl bn_sqr_comba8
|
||||
.type bn_sqr_comba8,@function
|
||||
.align 4
|
||||
bn_sqr_comba8:
|
||||
stmg %r6,%r8,48(%r15)
|
||||
|
||||
lghi c1,0
|
||||
lghi c2,0
|
||||
lghi c3,0
|
||||
lghi zero,0
|
||||
|
||||
sqr_add_c(0,c1,c2,c3);
|
||||
stg c1,0*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c2(1,0,c2,c3,c1);
|
||||
stg c2,1*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c(1,c3,c1,c2);
|
||||
sqr_add_c2(2,0,c3,c1,c2);
|
||||
stg c3,2*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
sqr_add_c2(3,0,c1,c2,c3);
|
||||
sqr_add_c2(2,1,c1,c2,c3);
|
||||
stg c1,3*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c(2,c2,c3,c1);
|
||||
sqr_add_c2(3,1,c2,c3,c1);
|
||||
sqr_add_c2(4,0,c2,c3,c1);
|
||||
stg c2,4*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c2(5,0,c3,c1,c2);
|
||||
sqr_add_c2(4,1,c3,c1,c2);
|
||||
sqr_add_c2(3,2,c3,c1,c2);
|
||||
stg c3,5*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
sqr_add_c(3,c1,c2,c3);
|
||||
sqr_add_c2(4,2,c1,c2,c3);
|
||||
sqr_add_c2(5,1,c1,c2,c3);
|
||||
sqr_add_c2(6,0,c1,c2,c3);
|
||||
stg c1,6*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c2(7,0,c2,c3,c1);
|
||||
sqr_add_c2(6,1,c2,c3,c1);
|
||||
sqr_add_c2(5,2,c2,c3,c1);
|
||||
sqr_add_c2(4,3,c2,c3,c1);
|
||||
stg c2,7*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c(4,c3,c1,c2);
|
||||
sqr_add_c2(5,3,c3,c1,c2);
|
||||
sqr_add_c2(6,2,c3,c1,c2);
|
||||
sqr_add_c2(7,1,c3,c1,c2);
|
||||
stg c3,8*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
sqr_add_c2(7,2,c1,c2,c3);
|
||||
sqr_add_c2(6,3,c1,c2,c3);
|
||||
sqr_add_c2(5,4,c1,c2,c3);
|
||||
stg c1,9*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c(5,c2,c3,c1);
|
||||
sqr_add_c2(6,4,c2,c3,c1);
|
||||
sqr_add_c2(7,3,c2,c3,c1);
|
||||
stg c2,10*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c2(7,4,c3,c1,c2);
|
||||
sqr_add_c2(6,5,c3,c1,c2);
|
||||
stg c3,11*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
sqr_add_c(6,c1,c2,c3);
|
||||
sqr_add_c2(7,5,c1,c2,c3);
|
||||
stg c1,12*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c2(7,6,c2,c3,c1);
|
||||
stg c2,13*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c(7,c3,c1,c2);
|
||||
stg c3,14*8(%r2)
|
||||
stg c1,15*8(%r2)
|
||||
|
||||
lmg %r6,%r8,48(%r15)
|
||||
br %r14
|
||||
.size bn_sqr_comba8,.-bn_sqr_comba8
|
||||
|
||||
// void bn_sqr_comba4(BN_ULONG *r2,BN_ULONG *r3);
|
||||
.globl bn_sqr_comba4
|
||||
.type bn_sqr_comba4,@function
|
||||
.align 4
|
||||
bn_sqr_comba4:
|
||||
stmg %r6,%r8,48(%r15)
|
||||
|
||||
lghi c1,0
|
||||
lghi c2,0
|
||||
lghi c3,0
|
||||
lghi zero,0
|
||||
|
||||
sqr_add_c(0,c1,c2,c3);
|
||||
stg c1,0*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c2(1,0,c2,c3,c1);
|
||||
stg c2,1*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c(1,c3,c1,c2);
|
||||
sqr_add_c2(2,0,c3,c1,c2);
|
||||
stg c3,2*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
sqr_add_c2(3,0,c1,c2,c3);
|
||||
sqr_add_c2(2,1,c1,c2,c3);
|
||||
stg c1,3*8(%r2)
|
||||
lghi c1,0
|
||||
|
||||
sqr_add_c(2,c2,c3,c1);
|
||||
sqr_add_c2(3,1,c2,c3,c1);
|
||||
stg c2,4*8(%r2)
|
||||
lghi c2,0
|
||||
|
||||
sqr_add_c2(3,2,c3,c1,c2);
|
||||
stg c3,5*8(%r2)
|
||||
lghi c3,0
|
||||
|
||||
sqr_add_c(3,c1,c2,c3);
|
||||
stg c1,6*8(%r2)
|
||||
stg c2,7*8(%r2)
|
||||
|
||||
lmg %r6,%r8,48(%r15)
|
||||
br %r14
|
||||
.size bn_sqr_comba4,.-bn_sqr_comba4
|
@@ -1,591 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
# ====================================================================
|
||||
# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
|
||||
# project. The module is, however, dual licensed under OpenSSL and
|
||||
# CRYPTOGAMS licenses depending on where you obtain it. For further
|
||||
# details see http://www.openssl.org/~appro/cryptogams/.
|
||||
# ====================================================================
|
||||
|
||||
# October 2005
|
||||
#
|
||||
# This is a "teaser" code, as it can be improved in several ways...
|
||||
# First of all non-SSE2 path should be implemented (yes, for now it
|
||||
# performs Montgomery multiplication/convolution only on SSE2-capable
|
||||
# CPUs such as P4, others fall down to original code). Then inner loop
|
||||
# can be unrolled and modulo-scheduled to improve ILP and possibly
|
||||
# moved to 128-bit XMM register bank (though it would require input
|
||||
# rearrangement and/or increase bus bandwidth utilization). Dedicated
|
||||
# squaring procedure should give further performance improvement...
|
||||
# Yet, for being draft, the code improves rsa512 *sign* benchmark by
|
||||
# 110%(!), rsa1024 one - by 70% and rsa4096 - by 20%:-)
|
||||
|
||||
# December 2006
|
||||
#
|
||||
# Modulo-scheduling SSE2 loops results in further 15-20% improvement.
|
||||
# Integer-only code [being equipped with dedicated squaring procedure]
|
||||
# gives ~40% on rsa512 sign benchmark...
|
||||
|
||||
$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
|
||||
push(@INC,"${dir}","${dir}../../perlasm");
|
||||
require "x86asm.pl";
|
||||
|
||||
&asm_init($ARGV[0],$0);
|
||||
|
||||
$sse2=0;
|
||||
for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
|
||||
|
||||
&external_label("OPENSSL_ia32cap_P") if ($sse2);
|
||||
|
||||
&function_begin("bn_mul_mont");
|
||||
|
||||
$i="edx";
|
||||
$j="ecx";
|
||||
$ap="esi"; $tp="esi"; # overlapping variables!!!
|
||||
$rp="edi"; $bp="edi"; # overlapping variables!!!
|
||||
$np="ebp";
|
||||
$num="ebx";
|
||||
|
||||
$_num=&DWP(4*0,"esp"); # stack top layout
|
||||
$_rp=&DWP(4*1,"esp");
|
||||
$_ap=&DWP(4*2,"esp");
|
||||
$_bp=&DWP(4*3,"esp");
|
||||
$_np=&DWP(4*4,"esp");
|
||||
$_n0=&DWP(4*5,"esp"); $_n0q=&QWP(4*5,"esp");
|
||||
$_sp=&DWP(4*6,"esp");
|
||||
$_bpend=&DWP(4*7,"esp");
|
||||
$frame=32; # size of above frame rounded up to 16n
|
||||
|
||||
&xor ("eax","eax");
|
||||
&mov ("edi",&wparam(5)); # int num
|
||||
&cmp ("edi",4);
|
||||
&jl (&label("just_leave"));
|
||||
|
||||
&lea ("esi",&wparam(0)); # put aside pointer to argument block
|
||||
&lea ("edx",&wparam(1)); # load ap
|
||||
&mov ("ebp","esp"); # saved stack pointer!
|
||||
&add ("edi",2); # extra two words on top of tp
|
||||
&neg ("edi");
|
||||
&lea ("esp",&DWP(-$frame,"esp","edi",4)); # alloca($frame+4*(num+2))
|
||||
&neg ("edi");
|
||||
|
||||
# minimize cache contention by arraning 2K window between stack
|
||||
# pointer and ap argument [np is also position sensitive vector,
|
||||
# but it's assumed to be near ap, as it's allocated at ~same
|
||||
# time].
|
||||
&mov ("eax","esp");
|
||||
&sub ("eax","edx");
|
||||
&and ("eax",2047);
|
||||
&sub ("esp","eax"); # this aligns sp and ap modulo 2048
|
||||
|
||||
&xor ("edx","esp");
|
||||
&and ("edx",2048);
|
||||
&xor ("edx",2048);
|
||||
&sub ("esp","edx"); # this splits them apart modulo 4096
|
||||
|
||||
&and ("esp",-64); # align to cache line
|
||||
|
||||
################################# load argument block...
|
||||
&mov ("eax",&DWP(0*4,"esi"));# BN_ULONG *rp
|
||||
&mov ("ebx",&DWP(1*4,"esi"));# const BN_ULONG *ap
|
||||
&mov ("ecx",&DWP(2*4,"esi"));# const BN_ULONG *bp
|
||||
&mov ("edx",&DWP(3*4,"esi"));# const BN_ULONG *np
|
||||
&mov ("esi",&DWP(4*4,"esi"));# const BN_ULONG *n0
|
||||
#&mov ("edi",&DWP(5*4,"esi"));# int num
|
||||
|
||||
&mov ("esi",&DWP(0,"esi")); # pull n0[0]
|
||||
&mov ($_rp,"eax"); # ... save a copy of argument block
|
||||
&mov ($_ap,"ebx");
|
||||
&mov ($_bp,"ecx");
|
||||
&mov ($_np,"edx");
|
||||
&mov ($_n0,"esi");
|
||||
&lea ($num,&DWP(-3,"edi")); # num=num-1 to assist modulo-scheduling
|
||||
#&mov ($_num,$num); # redundant as $num is not reused
|
||||
&mov ($_sp,"ebp"); # saved stack pointer!
|
||||
|
||||
if($sse2) {
|
||||
$acc0="mm0"; # mmx register bank layout
|
||||
$acc1="mm1";
|
||||
$car0="mm2";
|
||||
$car1="mm3";
|
||||
$mul0="mm4";
|
||||
$mul1="mm5";
|
||||
$temp="mm6";
|
||||
$mask="mm7";
|
||||
|
||||
&picmeup("eax","OPENSSL_ia32cap_P");
|
||||
&bt (&DWP(0,"eax"),26);
|
||||
&jnc (&label("non_sse2"));
|
||||
|
||||
&mov ("eax",-1);
|
||||
&movd ($mask,"eax"); # mask 32 lower bits
|
||||
|
||||
&mov ($ap,$_ap); # load input pointers
|
||||
&mov ($bp,$_bp);
|
||||
&mov ($np,$_np);
|
||||
|
||||
&xor ($i,$i); # i=0
|
||||
&xor ($j,$j); # j=0
|
||||
|
||||
&movd ($mul0,&DWP(0,$bp)); # bp[0]
|
||||
&movd ($mul1,&DWP(0,$ap)); # ap[0]
|
||||
&movd ($car1,&DWP(0,$np)); # np[0]
|
||||
|
||||
&pmuludq($mul1,$mul0); # ap[0]*bp[0]
|
||||
&movq ($car0,$mul1);
|
||||
&movq ($acc0,$mul1); # I wish movd worked for
|
||||
&pand ($acc0,$mask); # inter-register transfers
|
||||
|
||||
&pmuludq($mul1,$_n0q); # *=n0
|
||||
|
||||
&pmuludq($car1,$mul1); # "t[0]"*np[0]*n0
|
||||
&paddq ($car1,$acc0);
|
||||
|
||||
&movd ($acc1,&DWP(4,$np)); # np[1]
|
||||
&movd ($acc0,&DWP(4,$ap)); # ap[1]
|
||||
|
||||
&psrlq ($car0,32);
|
||||
&psrlq ($car1,32);
|
||||
|
||||
&inc ($j); # j++
|
||||
&set_label("1st",16);
|
||||
&pmuludq($acc0,$mul0); # ap[j]*bp[0]
|
||||
&pmuludq($acc1,$mul1); # np[j]*m1
|
||||
&paddq ($car0,$acc0); # +=c0
|
||||
&paddq ($car1,$acc1); # +=c1
|
||||
|
||||
&movq ($acc0,$car0);
|
||||
&pand ($acc0,$mask);
|
||||
&movd ($acc1,&DWP(4,$np,$j,4)); # np[j+1]
|
||||
&paddq ($car1,$acc0); # +=ap[j]*bp[0];
|
||||
&movd ($acc0,&DWP(4,$ap,$j,4)); # ap[j+1]
|
||||
&psrlq ($car0,32);
|
||||
&movd (&DWP($frame-4,"esp",$j,4),$car1); # tp[j-1]=
|
||||
&psrlq ($car1,32);
|
||||
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&cmp ($j,$num);
|
||||
&jl (&label("1st"));
|
||||
|
||||
&pmuludq($acc0,$mul0); # ap[num-1]*bp[0]
|
||||
&pmuludq($acc1,$mul1); # np[num-1]*m1
|
||||
&paddq ($car0,$acc0); # +=c0
|
||||
&paddq ($car1,$acc1); # +=c1
|
||||
|
||||
&movq ($acc0,$car0);
|
||||
&pand ($acc0,$mask);
|
||||
&paddq ($car1,$acc0); # +=ap[num-1]*bp[0];
|
||||
&movd (&DWP($frame-4,"esp",$j,4),$car1); # tp[num-2]=
|
||||
|
||||
&psrlq ($car0,32);
|
||||
&psrlq ($car1,32);
|
||||
|
||||
&paddq ($car1,$car0);
|
||||
&movq (&QWP($frame,"esp",$num,4),$car1); # tp[num].tp[num-1]
|
||||
|
||||
&inc ($i); # i++
|
||||
&set_label("outer");
|
||||
&xor ($j,$j); # j=0
|
||||
|
||||
&movd ($mul0,&DWP(0,$bp,$i,4)); # bp[i]
|
||||
&movd ($mul1,&DWP(0,$ap)); # ap[0]
|
||||
&movd ($temp,&DWP($frame,"esp")); # tp[0]
|
||||
&movd ($car1,&DWP(0,$np)); # np[0]
|
||||
&pmuludq($mul1,$mul0); # ap[0]*bp[i]
|
||||
|
||||
&paddq ($mul1,$temp); # +=tp[0]
|
||||
&movq ($acc0,$mul1);
|
||||
&movq ($car0,$mul1);
|
||||
&pand ($acc0,$mask);
|
||||
|
||||
&pmuludq($mul1,$_n0q); # *=n0
|
||||
|
||||
&pmuludq($car1,$mul1);
|
||||
&paddq ($car1,$acc0);
|
||||
|
||||
&movd ($temp,&DWP($frame+4,"esp")); # tp[1]
|
||||
&movd ($acc1,&DWP(4,$np)); # np[1]
|
||||
&movd ($acc0,&DWP(4,$ap)); # ap[1]
|
||||
|
||||
&psrlq ($car0,32);
|
||||
&psrlq ($car1,32);
|
||||
&paddq ($car0,$temp); # +=tp[1]
|
||||
|
||||
&inc ($j); # j++
|
||||
&dec ($num);
|
||||
&set_label("inner");
|
||||
&pmuludq($acc0,$mul0); # ap[j]*bp[i]
|
||||
&pmuludq($acc1,$mul1); # np[j]*m1
|
||||
&paddq ($car0,$acc0); # +=c0
|
||||
&paddq ($car1,$acc1); # +=c1
|
||||
|
||||
&movq ($acc0,$car0);
|
||||
&movd ($temp,&DWP($frame+4,"esp",$j,4));# tp[j+1]
|
||||
&pand ($acc0,$mask);
|
||||
&movd ($acc1,&DWP(4,$np,$j,4)); # np[j+1]
|
||||
&paddq ($car1,$acc0); # +=ap[j]*bp[i]+tp[j]
|
||||
&movd ($acc0,&DWP(4,$ap,$j,4)); # ap[j+1]
|
||||
&psrlq ($car0,32);
|
||||
&movd (&DWP($frame-4,"esp",$j,4),$car1);# tp[j-1]=
|
||||
&psrlq ($car1,32);
|
||||
&paddq ($car0,$temp); # +=tp[j+1]
|
||||
|
||||
&dec ($num);
|
||||
&lea ($j,&DWP(1,$j)); # j++
|
||||
&jnz (&label("inner"));
|
||||
|
||||
&mov ($num,$j);
|
||||
&pmuludq($acc0,$mul0); # ap[num-1]*bp[i]
|
||||
&pmuludq($acc1,$mul1); # np[num-1]*m1
|
||||
&paddq ($car0,$acc0); # +=c0
|
||||
&paddq ($car1,$acc1); # +=c1
|
||||
|
||||
&movq ($acc0,$car0);
|
||||
&pand ($acc0,$mask);
|
||||
&paddq ($car1,$acc0); # +=ap[num-1]*bp[i]+tp[num-1]
|
||||
&movd (&DWP($frame-4,"esp",$j,4),$car1); # tp[num-2]=
|
||||
&psrlq ($car0,32);
|
||||
&psrlq ($car1,32);
|
||||
|
||||
&movd ($temp,&DWP($frame+4,"esp",$num,4)); # += tp[num]
|
||||
&paddq ($car1,$car0);
|
||||
&paddq ($car1,$temp);
|
||||
&movq (&QWP($frame,"esp",$num,4),$car1); # tp[num].tp[num-1]
|
||||
|
||||
&lea ($i,&DWP(1,$i)); # i++
|
||||
&cmp ($i,$num);
|
||||
&jle (&label("outer"));
|
||||
|
||||
&emms (); # done with mmx bank
|
||||
&jmp (&label("common_tail"));
|
||||
|
||||
&set_label("non_sse2",16);
|
||||
}
|
||||
|
||||
if (0) {
|
||||
&mov ("esp",$_sp);
|
||||
&xor ("eax","eax"); # signal "not fast enough [yet]"
|
||||
&jmp (&label("just_leave"));
|
||||
# While the below code provides competitive performance for
|
||||
# all key lengthes on modern Intel cores, it's still more
|
||||
# than 10% slower for 4096-bit key elsewhere:-( "Competitive"
|
||||
# means compared to the original integer-only assembler.
|
||||
# 512-bit RSA sign is better by ~40%, but that's about all
|
||||
# one can say about all CPUs...
|
||||
} else {
|
||||
$inp="esi"; # integer path uses these registers differently
|
||||
$word="edi";
|
||||
$carry="ebp";
|
||||
|
||||
&mov ($inp,$_ap);
|
||||
&lea ($carry,&DWP(1,$num));
|
||||
&mov ($word,$_bp);
|
||||
&xor ($j,$j); # j=0
|
||||
&mov ("edx",$inp);
|
||||
&and ($carry,1); # see if num is even
|
||||
&sub ("edx",$word); # see if ap==bp
|
||||
&lea ("eax",&DWP(4,$word,$num,4)); # &bp[num]
|
||||
&or ($carry,"edx");
|
||||
&mov ($word,&DWP(0,$word)); # bp[0]
|
||||
&jz (&label("bn_sqr_mont"));
|
||||
&mov ($_bpend,"eax");
|
||||
&mov ("eax",&DWP(0,$inp));
|
||||
&xor ("edx","edx");
|
||||
|
||||
&set_label("mull",16);
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[j]*bp[0]
|
||||
&add ($carry,"eax");
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&adc ("edx",0);
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # ap[j+1]
|
||||
&cmp ($j,$num);
|
||||
&mov (&DWP($frame-4,"esp",$j,4),$carry); # tp[j]=
|
||||
&jl (&label("mull"));
|
||||
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[num-1]*bp[0]
|
||||
&mov ($word,$_n0);
|
||||
&add ("eax",$carry);
|
||||
&mov ($inp,$_np);
|
||||
&adc ("edx",0);
|
||||
&imul ($word,&DWP($frame,"esp")); # n0*tp[0]
|
||||
|
||||
&mov (&DWP($frame,"esp",$num,4),"eax"); # tp[num-1]=
|
||||
&xor ($j,$j);
|
||||
&mov (&DWP($frame+4,"esp",$num,4),"edx"); # tp[num]=
|
||||
&mov (&DWP($frame+8,"esp",$num,4),$j); # tp[num+1]=
|
||||
|
||||
&mov ("eax",&DWP(0,$inp)); # np[0]
|
||||
&mul ($word); # np[0]*m
|
||||
&add ("eax",&DWP($frame,"esp")); # +=tp[0]
|
||||
&mov ("eax",&DWP(4,$inp)); # np[1]
|
||||
&adc ("edx",0);
|
||||
&inc ($j);
|
||||
|
||||
&jmp (&label("2ndmadd"));
|
||||
|
||||
&set_label("1stmadd",16);
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[j]*bp[i]
|
||||
&add ($carry,&DWP($frame,"esp",$j,4)); # +=tp[j]
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&adc ("edx",0);
|
||||
&add ($carry,"eax");
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # ap[j+1]
|
||||
&adc ("edx",0);
|
||||
&cmp ($j,$num);
|
||||
&mov (&DWP($frame-4,"esp",$j,4),$carry); # tp[j]=
|
||||
&jl (&label("1stmadd"));
|
||||
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[num-1]*bp[i]
|
||||
&add ("eax",&DWP($frame,"esp",$num,4)); # +=tp[num-1]
|
||||
&mov ($word,$_n0);
|
||||
&adc ("edx",0);
|
||||
&mov ($inp,$_np);
|
||||
&add ($carry,"eax");
|
||||
&adc ("edx",0);
|
||||
&imul ($word,&DWP($frame,"esp")); # n0*tp[0]
|
||||
|
||||
&xor ($j,$j);
|
||||
&add ("edx",&DWP($frame+4,"esp",$num,4)); # carry+=tp[num]
|
||||
&mov (&DWP($frame,"esp",$num,4),$carry); # tp[num-1]=
|
||||
&adc ($j,0);
|
||||
&mov ("eax",&DWP(0,$inp)); # np[0]
|
||||
&mov (&DWP($frame+4,"esp",$num,4),"edx"); # tp[num]=
|
||||
&mov (&DWP($frame+8,"esp",$num,4),$j); # tp[num+1]=
|
||||
|
||||
&mul ($word); # np[0]*m
|
||||
&add ("eax",&DWP($frame,"esp")); # +=tp[0]
|
||||
&mov ("eax",&DWP(4,$inp)); # np[1]
|
||||
&adc ("edx",0);
|
||||
&mov ($j,1);
|
||||
|
||||
&set_label("2ndmadd",16);
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # np[j]*m
|
||||
&add ($carry,&DWP($frame,"esp",$j,4)); # +=tp[j]
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&adc ("edx",0);
|
||||
&add ($carry,"eax");
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # np[j+1]
|
||||
&adc ("edx",0);
|
||||
&cmp ($j,$num);
|
||||
&mov (&DWP($frame-8,"esp",$j,4),$carry); # tp[j-1]=
|
||||
&jl (&label("2ndmadd"));
|
||||
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # np[j]*m
|
||||
&add ($carry,&DWP($frame,"esp",$num,4)); # +=tp[num-1]
|
||||
&adc ("edx",0);
|
||||
&add ($carry,"eax");
|
||||
&adc ("edx",0);
|
||||
&mov (&DWP($frame-4,"esp",$num,4),$carry); # tp[num-2]=
|
||||
|
||||
&xor ("eax","eax");
|
||||
&mov ($j,$_bp); # &bp[i]
|
||||
&add ("edx",&DWP($frame+4,"esp",$num,4)); # carry+=tp[num]
|
||||
&adc ("eax",&DWP($frame+8,"esp",$num,4)); # +=tp[num+1]
|
||||
&lea ($j,&DWP(4,$j));
|
||||
&mov (&DWP($frame,"esp",$num,4),"edx"); # tp[num-1]=
|
||||
&cmp ($j,$_bpend);
|
||||
&mov (&DWP($frame+4,"esp",$num,4),"eax"); # tp[num]=
|
||||
&je (&label("common_tail"));
|
||||
|
||||
&mov ($word,&DWP(0,$j)); # bp[i+1]
|
||||
&mov ($inp,$_ap);
|
||||
&mov ($_bp,$j); # &bp[++i]
|
||||
&xor ($j,$j);
|
||||
&xor ("edx","edx");
|
||||
&mov ("eax",&DWP(0,$inp));
|
||||
&jmp (&label("1stmadd"));
|
||||
|
||||
&set_label("bn_sqr_mont",16);
|
||||
$sbit=$num;
|
||||
&mov ($_num,$num);
|
||||
&mov ($_bp,$j); # i=0
|
||||
|
||||
&mov ("eax",$word); # ap[0]
|
||||
&mul ($word); # ap[0]*ap[0]
|
||||
&mov (&DWP($frame,"esp"),"eax"); # tp[0]=
|
||||
&mov ($sbit,"edx");
|
||||
&shr ("edx",1);
|
||||
&and ($sbit,1);
|
||||
&inc ($j);
|
||||
&set_label("sqr",16);
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # ap[j]
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[j]*ap[0]
|
||||
&add ("eax",$carry);
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&adc ("edx",0);
|
||||
&lea ($carry,&DWP(0,$sbit,"eax",2));
|
||||
&shr ("eax",31);
|
||||
&cmp ($j,$_num);
|
||||
&mov ($sbit,"eax");
|
||||
&mov (&DWP($frame-4,"esp",$j,4),$carry); # tp[j]=
|
||||
&jl (&label("sqr"));
|
||||
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # ap[num-1]
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[num-1]*ap[0]
|
||||
&add ("eax",$carry);
|
||||
&mov ($word,$_n0);
|
||||
&adc ("edx",0);
|
||||
&mov ($inp,$_np);
|
||||
&lea ($carry,&DWP(0,$sbit,"eax",2));
|
||||
&imul ($word,&DWP($frame,"esp")); # n0*tp[0]
|
||||
&shr ("eax",31);
|
||||
&mov (&DWP($frame,"esp",$j,4),$carry); # tp[num-1]=
|
||||
|
||||
&lea ($carry,&DWP(0,"eax","edx",2));
|
||||
&mov ("eax",&DWP(0,$inp)); # np[0]
|
||||
&shr ("edx",31);
|
||||
&mov (&DWP($frame+4,"esp",$j,4),$carry); # tp[num]=
|
||||
&mov (&DWP($frame+8,"esp",$j,4),"edx"); # tp[num+1]=
|
||||
|
||||
&mul ($word); # np[0]*m
|
||||
&add ("eax",&DWP($frame,"esp")); # +=tp[0]
|
||||
&mov ($num,$j);
|
||||
&adc ("edx",0);
|
||||
&mov ("eax",&DWP(4,$inp)); # np[1]
|
||||
&mov ($j,1);
|
||||
|
||||
&set_label("3rdmadd",16);
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # np[j]*m
|
||||
&add ($carry,&DWP($frame,"esp",$j,4)); # +=tp[j]
|
||||
&adc ("edx",0);
|
||||
&add ($carry,"eax");
|
||||
&mov ("eax",&DWP(4,$inp,$j,4)); # np[j+1]
|
||||
&adc ("edx",0);
|
||||
&mov (&DWP($frame-4,"esp",$j,4),$carry); # tp[j-1]=
|
||||
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # np[j+1]*m
|
||||
&add ($carry,&DWP($frame+4,"esp",$j,4)); # +=tp[j+1]
|
||||
&lea ($j,&DWP(2,$j));
|
||||
&adc ("edx",0);
|
||||
&add ($carry,"eax");
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # np[j+2]
|
||||
&adc ("edx",0);
|
||||
&cmp ($j,$num);
|
||||
&mov (&DWP($frame-8,"esp",$j,4),$carry); # tp[j]=
|
||||
&jl (&label("3rdmadd"));
|
||||
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # np[j]*m
|
||||
&add ($carry,&DWP($frame,"esp",$num,4)); # +=tp[num-1]
|
||||
&adc ("edx",0);
|
||||
&add ($carry,"eax");
|
||||
&adc ("edx",0);
|
||||
&mov (&DWP($frame-4,"esp",$num,4),$carry); # tp[num-2]=
|
||||
|
||||
&mov ($j,$_bp); # i
|
||||
&xor ("eax","eax");
|
||||
&mov ($inp,$_ap);
|
||||
&add ("edx",&DWP($frame+4,"esp",$num,4)); # carry+=tp[num]
|
||||
&adc ("eax",&DWP($frame+8,"esp",$num,4)); # +=tp[num+1]
|
||||
&mov (&DWP($frame,"esp",$num,4),"edx"); # tp[num-1]=
|
||||
&cmp ($j,$num);
|
||||
&mov (&DWP($frame+4,"esp",$num,4),"eax"); # tp[num]=
|
||||
&je (&label("common_tail"));
|
||||
|
||||
&mov ($word,&DWP(4,$inp,$j,4)); # ap[i]
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&mov ("eax",$word);
|
||||
&mov ($_bp,$j); # ++i
|
||||
&mul ($word); # ap[i]*ap[i]
|
||||
&add ("eax",&DWP($frame,"esp",$j,4)); # +=tp[i]
|
||||
&adc ("edx",0);
|
||||
&mov (&DWP($frame,"esp",$j,4),"eax"); # tp[i]=
|
||||
&xor ($carry,$carry);
|
||||
&cmp ($j,$num);
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&je (&label("sqrlast"));
|
||||
|
||||
&mov ($sbit,"edx"); # zaps $num
|
||||
&shr ("edx",1);
|
||||
&and ($sbit,1);
|
||||
&set_label("sqradd",16);
|
||||
&mov ("eax",&DWP(0,$inp,$j,4)); # ap[j]
|
||||
&mov ($carry,"edx");
|
||||
&mul ($word); # ap[j]*ap[i]
|
||||
&add ("eax",$carry);
|
||||
&lea ($carry,&DWP(0,"eax","eax"));
|
||||
&adc ("edx",0);
|
||||
&shr ("eax",31);
|
||||
&add ($carry,&DWP($frame,"esp",$j,4)); # +=tp[j]
|
||||
&lea ($j,&DWP(1,$j));
|
||||
&adc ("eax",0);
|
||||
&add ($carry,$sbit);
|
||||
&adc ("eax",0);
|
||||
&cmp ($j,$_num);
|
||||
&mov (&DWP($frame-4,"esp",$j,4),$carry); # tp[j]=
|
||||
&mov ($sbit,"eax");
|
||||
&jle (&label("sqradd"));
|
||||
|
||||
&mov ($carry,"edx");
|
||||
&lea ("edx",&DWP(0,$sbit,"edx",2));
|
||||
&shr ($carry,31);
|
||||
&set_label("sqrlast");
|
||||
&mov ($word,$_n0);
|
||||
&mov ($inp,$_np);
|
||||
&imul ($word,&DWP($frame,"esp")); # n0*tp[0]
|
||||
|
||||
&add ("edx",&DWP($frame,"esp",$j,4)); # +=tp[num]
|
||||
&mov ("eax",&DWP(0,$inp)); # np[0]
|
||||
&adc ($carry,0);
|
||||
&mov (&DWP($frame,"esp",$j,4),"edx"); # tp[num]=
|
||||
&mov (&DWP($frame+4,"esp",$j,4),$carry); # tp[num+1]=
|
||||
|
||||
&mul ($word); # np[0]*m
|
||||
&add ("eax",&DWP($frame,"esp")); # +=tp[0]
|
||||
&lea ($num,&DWP(-1,$j));
|
||||
&adc ("edx",0);
|
||||
&mov ($j,1);
|
||||
&mov ("eax",&DWP(4,$inp)); # np[1]
|
||||
|
||||
&jmp (&label("3rdmadd"));
|
||||
}
|
||||
|
||||
&set_label("common_tail",16);
|
||||
&mov ($np,$_np); # load modulus pointer
|
||||
&mov ($rp,$_rp); # load result pointer
|
||||
&lea ($tp,&DWP($frame,"esp")); # [$ap and $bp are zapped]
|
||||
|
||||
&mov ("eax",&DWP(0,$tp)); # tp[0]
|
||||
&mov ($j,$num); # j=num-1
|
||||
&xor ($i,$i); # i=0 and clear CF!
|
||||
|
||||
&set_label("sub",16);
|
||||
&sbb ("eax",&DWP(0,$np,$i,4));
|
||||
&mov (&DWP(0,$rp,$i,4),"eax"); # rp[i]=tp[i]-np[i]
|
||||
&dec ($j); # doesn't affect CF!
|
||||
&mov ("eax",&DWP(4,$tp,$i,4)); # tp[i+1]
|
||||
&lea ($i,&DWP(1,$i)); # i++
|
||||
&jge (&label("sub"));
|
||||
|
||||
&sbb ("eax",0); # handle upmost overflow bit
|
||||
&and ($tp,"eax");
|
||||
¬ ("eax");
|
||||
&mov ($np,$rp);
|
||||
&and ($np,"eax");
|
||||
&or ($tp,$np); # tp=carry?tp:rp
|
||||
|
||||
&set_label("copy",16); # copy or in-place refresh
|
||||
&mov ("eax",&DWP(0,$tp,$num,4));
|
||||
&mov (&DWP(0,$rp,$num,4),"eax"); # rp[i]=tp[i]
|
||||
&mov (&DWP($frame,"esp",$num,4),$j); # zap temporary vector
|
||||
&dec ($num);
|
||||
&jge (&label("copy"));
|
||||
|
||||
&mov ("esp",$_sp); # pull saved stack pointer
|
||||
&mov ("eax",1);
|
||||
&set_label("just_leave");
|
||||
&function_end("bn_mul_mont");
|
||||
|
||||
&asciz("Montgomery Multiplication for x86, CRYPTOGAMS by <appro\@openssl.org>");
|
||||
|
||||
&asm_finish();
|
@@ -1,213 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
# ====================================================================
|
||||
# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
|
||||
# project. The module is, however, dual licensed under OpenSSL and
|
||||
# CRYPTOGAMS licenses depending on where you obtain it. For further
|
||||
# details see http://www.openssl.org/~appro/cryptogams/.
|
||||
# ====================================================================
|
||||
|
||||
# October 2005.
|
||||
#
|
||||
# Montgomery multiplication routine for x86_64. While it gives modest
|
||||
# 9% improvement of rsa4096 sign on Opteron, rsa512 sign runs more
|
||||
# than twice, >2x, as fast. Most common rsa1024 sign is improved by
|
||||
# respectful 50%. It remains to be seen if loop unrolling and
|
||||
# dedicated squaring routine can provide further improvement...
|
||||
|
||||
$output=shift;
|
||||
|
||||
$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
|
||||
( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
|
||||
( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
|
||||
die "can't locate x86_64-xlate.pl";
|
||||
|
||||
open STDOUT,"| $^X $xlate $output";
|
||||
|
||||
# int bn_mul_mont(
|
||||
$rp="%rdi"; # BN_ULONG *rp,
|
||||
$ap="%rsi"; # const BN_ULONG *ap,
|
||||
$bp="%rdx"; # const BN_ULONG *bp,
|
||||
$np="%rcx"; # const BN_ULONG *np,
|
||||
$n0="%r8"; # const BN_ULONG *n0,
|
||||
$num="%r9"; # int num);
|
||||
$lo0="%r10";
|
||||
$hi0="%r11";
|
||||
$bp="%r12"; # reassign $bp
|
||||
$hi1="%r13";
|
||||
$i="%r14";
|
||||
$j="%r15";
|
||||
$m0="%rbx";
|
||||
$m1="%rbp";
|
||||
|
||||
$code=<<___;
|
||||
.text
|
||||
|
||||
.globl bn_mul_mont
|
||||
.type bn_mul_mont,\@function,6
|
||||
.align 16
|
||||
bn_mul_mont:
|
||||
push %rbx
|
||||
push %rbp
|
||||
push %r12
|
||||
push %r13
|
||||
push %r14
|
||||
push %r15
|
||||
|
||||
lea 2($num),%rax
|
||||
mov %rsp,%rbp
|
||||
neg %rax
|
||||
lea (%rsp,%rax,8),%rsp # tp=alloca(8*(num+2))
|
||||
and \$-1024,%rsp # minimize TLB usage
|
||||
|
||||
mov %rbp,8(%rsp,$num,8) # tp[num+1]=%rsp
|
||||
mov %rdx,$bp # $bp reassigned, remember?
|
||||
|
||||
mov ($n0),$n0 # pull n0[0] value
|
||||
|
||||
xor $i,$i # i=0
|
||||
xor $j,$j # j=0
|
||||
|
||||
mov ($bp),$m0 # m0=bp[0]
|
||||
mov ($ap),%rax
|
||||
mulq $m0 # ap[0]*bp[0]
|
||||
mov %rax,$lo0
|
||||
mov %rdx,$hi0
|
||||
|
||||
imulq $n0,%rax # "tp[0]"*n0
|
||||
mov %rax,$m1
|
||||
|
||||
mulq ($np) # np[0]*m1
|
||||
add $lo0,%rax # discarded
|
||||
adc \$0,%rdx
|
||||
mov %rdx,$hi1
|
||||
|
||||
lea 1($j),$j # j++
|
||||
.L1st:
|
||||
mov ($ap,$j,8),%rax
|
||||
mulq $m0 # ap[j]*bp[0]
|
||||
add $hi0,%rax
|
||||
adc \$0,%rdx
|
||||
mov %rax,$lo0
|
||||
mov ($np,$j,8),%rax
|
||||
mov %rdx,$hi0
|
||||
|
||||
mulq $m1 # np[j]*m1
|
||||
add $hi1,%rax
|
||||
lea 1($j),$j # j++
|
||||
adc \$0,%rdx
|
||||
add $lo0,%rax # np[j]*m1+ap[j]*bp[0]
|
||||
adc \$0,%rdx
|
||||
mov %rax,-16(%rsp,$j,8) # tp[j-1]
|
||||
cmp $num,$j
|
||||
mov %rdx,$hi1
|
||||
jl .L1st
|
||||
|
||||
xor %rdx,%rdx
|
||||
add $hi0,$hi1
|
||||
adc \$0,%rdx
|
||||
mov $hi1,-8(%rsp,$num,8)
|
||||
mov %rdx,(%rsp,$num,8) # store upmost overflow bit
|
||||
|
||||
lea 1($i),$i # i++
|
||||
.align 4
|
||||
.Louter:
|
||||
xor $j,$j # j=0
|
||||
|
||||
mov ($bp,$i,8),$m0 # m0=bp[i]
|
||||
mov ($ap),%rax # ap[0]
|
||||
mulq $m0 # ap[0]*bp[i]
|
||||
add (%rsp),%rax # ap[0]*bp[i]+tp[0]
|
||||
adc \$0,%rdx
|
||||
mov %rax,$lo0
|
||||
mov %rdx,$hi0
|
||||
|
||||
imulq $n0,%rax # tp[0]*n0
|
||||
mov %rax,$m1
|
||||
|
||||
mulq ($np,$j,8) # np[0]*m1
|
||||
add $lo0,%rax # discarded
|
||||
mov 8(%rsp),$lo0 # tp[1]
|
||||
adc \$0,%rdx
|
||||
mov %rdx,$hi1
|
||||
|
||||
lea 1($j),$j # j++
|
||||
.align 4
|
||||
.Linner:
|
||||
mov ($ap,$j,8),%rax
|
||||
mulq $m0 # ap[j]*bp[i]
|
||||
add $hi0,%rax
|
||||
adc \$0,%rdx
|
||||
add %rax,$lo0 # ap[j]*bp[i]+tp[j]
|
||||
mov ($np,$j,8),%rax
|
||||
adc \$0,%rdx
|
||||
mov %rdx,$hi0
|
||||
|
||||
mulq $m1 # np[j]*m1
|
||||
add $hi1,%rax
|
||||
lea 1($j),$j # j++
|
||||
adc \$0,%rdx
|
||||
add $lo0,%rax # np[j]*m1+ap[j]*bp[i]+tp[j]
|
||||
adc \$0,%rdx
|
||||
mov (%rsp,$j,8),$lo0
|
||||
cmp $num,$j
|
||||
mov %rax,-16(%rsp,$j,8) # tp[j-1]
|
||||
mov %rdx,$hi1
|
||||
jl .Linner
|
||||
|
||||
xor %rdx,%rdx
|
||||
add $hi0,$hi1
|
||||
adc \$0,%rdx
|
||||
add $lo0,$hi1 # pull upmost overflow bit
|
||||
adc \$0,%rdx
|
||||
mov $hi1,-8(%rsp,$num,8)
|
||||
mov %rdx,(%rsp,$num,8) # store upmost overflow bit
|
||||
|
||||
lea 1($i),$i # i++
|
||||
cmp $num,$i
|
||||
jl .Louter
|
||||
|
||||
lea (%rsp),$ap # borrow ap for tp
|
||||
lea -1($num),$j # j=num-1
|
||||
|
||||
mov ($ap),%rax # tp[0]
|
||||
xor $i,$i # i=0 and clear CF!
|
||||
jmp .Lsub
|
||||
.align 16
|
||||
.Lsub: sbb ($np,$i,8),%rax
|
||||
mov %rax,($rp,$i,8) # rp[i]=tp[i]-np[i]
|
||||
dec $j # doesn't affect CF!
|
||||
mov 8($ap,$i,8),%rax # tp[i+1]
|
||||
lea 1($i),$i # i++
|
||||
jge .Lsub
|
||||
|
||||
sbb \$0,%rax # handle upmost overflow bit
|
||||
and %rax,$ap
|
||||
not %rax
|
||||
mov $rp,$np
|
||||
and %rax,$np
|
||||
lea -1($num),$j
|
||||
or $np,$ap # ap=borrow?tp:rp
|
||||
.align 16
|
||||
.Lcopy: # copy or in-place refresh
|
||||
mov ($ap,$j,8),%rax
|
||||
mov %rax,($rp,$j,8) # rp[i]=tp[i]
|
||||
mov $i,(%rsp,$j,8) # zap temporary vector
|
||||
dec $j
|
||||
jge .Lcopy
|
||||
|
||||
mov 8(%rsp,$num,8),%rsp # restore %rsp
|
||||
mov \$1,%rax
|
||||
pop %r15
|
||||
pop %r14
|
||||
pop %r13
|
||||
pop %r12
|
||||
pop %rbp
|
||||
pop %rbx
|
||||
ret
|
||||
.size bn_mul_mont,.-bn_mul_mont
|
||||
.asciz "Montgomery Multiplication for x86_64, CRYPTOGAMS by <appro\@openssl.org>"
|
||||
___
|
||||
|
||||
print $code;
|
||||
close STDOUT;
|
@@ -526,26 +526,6 @@ int BN_is_prime_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx, BN_GENCB *cb);
|
||||
int BN_is_prime_fasttest_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx,
|
||||
int do_trial_division, BN_GENCB *cb);
|
||||
|
||||
int BN_X931_derive_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
void (*cb)(int, int, void *), void *cb_arg,
|
||||
const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
|
||||
const BIGNUM *e, BN_CTX *ctx);
|
||||
int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
|
||||
int BN_X931_generate_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
BIGNUM *Xp1, BIGNUM *Xp2,
|
||||
const BIGNUM *Xp,
|
||||
const BIGNUM *e, BN_CTX *ctx,
|
||||
void (*cb)(int, int, void *), void *cb_arg);
|
||||
|
||||
int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
|
||||
const BIGNUM *e, BN_CTX *ctx, BN_GENCB *cb);
|
||||
int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
BIGNUM *Xp1, BIGNUM *Xp2,
|
||||
const BIGNUM *Xp,
|
||||
const BIGNUM *e, BN_CTX *ctx,
|
||||
BN_GENCB *cb);
|
||||
|
||||
BN_MONT_CTX *BN_MONT_CTX_new(void );
|
||||
void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
|
||||
int BN_mod_mul_montgomery(BIGNUM *r,const BIGNUM *a,const BIGNUM *b,
|
||||
|
@@ -109,26 +109,4 @@ int BN_is_prime_fasttest(const BIGNUM *a, int checks,
|
||||
return BN_is_prime_fasttest_ex(a, checks, ctx_passed,
|
||||
do_trial_division, &cb);
|
||||
}
|
||||
|
||||
int BN_X931_derive_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
void (*callback)(int, int, void *), void *cb_arg,
|
||||
const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
|
||||
const BIGNUM *e, BN_CTX *ctx)
|
||||
{
|
||||
BN_GENCB cb;
|
||||
BN_GENCB_set_old(&cb, callback, cb_arg);
|
||||
return BN_X931_derive_prime_ex(p, p1, p2, Xp, Xp1, Xp2, e, ctx, &cb);
|
||||
}
|
||||
|
||||
int BN_X931_generate_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
BIGNUM *Xp1, BIGNUM *Xp2,
|
||||
const BIGNUM *Xp,
|
||||
const BIGNUM *e, BN_CTX *ctx,
|
||||
void (*callback)(int, int, void *), void *cb_arg)
|
||||
{
|
||||
BN_GENCB cb;
|
||||
BN_GENCB_set_old(&cb, callback, cb_arg);
|
||||
return BN_X931_generate_prime_ex(p, p1, p2, Xp1, Xp2, Xp, e, ctx, &cb);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -481,7 +481,6 @@ BN_ULONG bn_add_part_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
||||
int cl, int dl);
|
||||
BN_ULONG bn_sub_part_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
||||
int cl, int dl);
|
||||
int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0, int num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -139,6 +139,25 @@ const BIGNUM *BN_value_one(void)
|
||||
return(&const_one);
|
||||
}
|
||||
|
||||
char *BN_options(void)
|
||||
{
|
||||
static int init=0;
|
||||
static char data[16];
|
||||
|
||||
if (!init)
|
||||
{
|
||||
init++;
|
||||
#ifdef BN_LLONG
|
||||
BIO_snprintf(data,sizeof data,"bn(%d,%d)",
|
||||
(int)sizeof(BN_ULLONG)*8,(int)sizeof(BN_ULONG)*8);
|
||||
#else
|
||||
BIO_snprintf(data,sizeof data,"bn(%d,%d)",
|
||||
(int)sizeof(BN_ULONG)*8,(int)sizeof(BN_ULONG)*8);
|
||||
#endif
|
||||
}
|
||||
return(data);
|
||||
}
|
||||
|
||||
int BN_num_bits_word(BN_ULONG l)
|
||||
{
|
||||
static const char bits[256]={
|
||||
|
@@ -127,21 +127,6 @@ int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
{
|
||||
BIGNUM *tmp;
|
||||
int ret=0;
|
||||
#if defined(OPENSSL_BN_ASM_MONT) && defined(MONT_WORD)
|
||||
int num = mont->N.top;
|
||||
|
||||
if (num>1 && a->top==num && b->top==num)
|
||||
{
|
||||
if (bn_wexpand(r,num) == NULL) return(0);
|
||||
if (bn_mul_mont(r->d,a->d,b->d,mont->N.d,&mont->n0,num))
|
||||
{
|
||||
r->neg = a->neg^b->neg;
|
||||
r->top = num;
|
||||
bn_correct_top(r);
|
||||
return(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
tmp = BN_CTX_get(ctx);
|
||||
|
@@ -1,87 +0,0 @@
|
||||
/* crypto/bn/bn_opt.c */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#ifndef BN_DEBUG
|
||||
# undef NDEBUG /* avoid conflicting definitions */
|
||||
# define NDEBUG
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include "cryptlib.h"
|
||||
#include "bn_lcl.h"
|
||||
|
||||
char *BN_options(void)
|
||||
{
|
||||
static int init=0;
|
||||
static char data[16];
|
||||
|
||||
if (!init)
|
||||
{
|
||||
init++;
|
||||
#ifdef BN_LLONG
|
||||
BIO_snprintf(data,sizeof data,"bn(%d,%d)",
|
||||
(int)sizeof(BN_ULLONG)*8,(int)sizeof(BN_ULONG)*8);
|
||||
#else
|
||||
BIO_snprintf(data,sizeof data,"bn(%d,%d)",
|
||||
(int)sizeof(BN_ULONG)*8,(int)sizeof(BN_ULONG)*8);
|
||||
#endif
|
||||
}
|
||||
return(data);
|
||||
}
|
@@ -1,272 +0,0 @@
|
||||
/* bn_x931p.c */
|
||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
|
||||
* project 2005.
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2005 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <openssl/bn.h>
|
||||
|
||||
/* X9.31 routines for prime derivation */
|
||||
|
||||
/* X9.31 prime derivation. This is used to generate the primes pi
|
||||
* (p1, p2, q1, q2) from a parameter Xpi by checking successive odd
|
||||
* integers.
|
||||
*/
|
||||
|
||||
static int bn_x931_derive_pi(BIGNUM *pi, const BIGNUM *Xpi, BN_CTX *ctx,
|
||||
BN_GENCB *cb)
|
||||
{
|
||||
int i = 0;
|
||||
if (!BN_copy(pi, Xpi))
|
||||
return 0;
|
||||
if (!BN_is_odd(pi) && !BN_add_word(pi, 1))
|
||||
return 0;
|
||||
for(;;)
|
||||
{
|
||||
i++;
|
||||
BN_GENCB_call(cb, 0, i);
|
||||
/* NB 27 MR is specificed in X9.31 */
|
||||
if (BN_is_prime_fasttest_ex(pi, 27, ctx, 1, cb))
|
||||
break;
|
||||
if (!BN_add_word(pi, 2))
|
||||
return 0;
|
||||
}
|
||||
BN_GENCB_call(cb, 2, i);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* This is the main X9.31 prime derivation function. From parameters
|
||||
* Xp1, Xp2 and Xp derive the prime p. If the parameters p1 or p2 are
|
||||
* not NULL they will be returned too: this is needed for testing.
|
||||
*/
|
||||
|
||||
int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
|
||||
const BIGNUM *e, BN_CTX *ctx, BN_GENCB *cb)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
BIGNUM *t, *p1p2, *pm1;
|
||||
|
||||
/* Only even e supported */
|
||||
if (!BN_is_odd(e))
|
||||
return 0;
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
if (!p1)
|
||||
p1 = BN_CTX_get(ctx);
|
||||
|
||||
if (!p2)
|
||||
p2 = BN_CTX_get(ctx);
|
||||
|
||||
t = BN_CTX_get(ctx);
|
||||
|
||||
p1p2 = BN_CTX_get(ctx);
|
||||
|
||||
pm1 = BN_CTX_get(ctx);
|
||||
|
||||
if (!bn_x931_derive_pi(p1, Xp1, ctx, cb))
|
||||
goto err;
|
||||
|
||||
if (!bn_x931_derive_pi(p2, Xp2, ctx, cb))
|
||||
goto err;
|
||||
|
||||
if (!BN_mul(p1p2, p1, p2, ctx))
|
||||
goto err;
|
||||
|
||||
/* First set p to value of Rp */
|
||||
|
||||
if (!BN_mod_inverse(p, p2, p1, ctx))
|
||||
goto err;
|
||||
|
||||
if (!BN_mul(p, p, p2, ctx))
|
||||
goto err;
|
||||
|
||||
if (!BN_mod_inverse(t, p1, p2, ctx))
|
||||
goto err;
|
||||
|
||||
if (!BN_mul(t, t, p1, ctx))
|
||||
goto err;
|
||||
|
||||
if (!BN_sub(p, p, t))
|
||||
goto err;
|
||||
|
||||
if (p->neg && !BN_add(p, p, p1p2))
|
||||
goto err;
|
||||
|
||||
/* p now equals Rp */
|
||||
|
||||
if (!BN_mod_sub(p, p, Xp, p1p2, ctx))
|
||||
goto err;
|
||||
|
||||
if (!BN_add(p, p, Xp))
|
||||
goto err;
|
||||
|
||||
/* p now equals Yp0 */
|
||||
|
||||
for (;;)
|
||||
{
|
||||
int i = 1;
|
||||
BN_GENCB_call(cb, 0, i++);
|
||||
if (!BN_copy(pm1, p))
|
||||
goto err;
|
||||
if (!BN_sub_word(pm1, 1))
|
||||
goto err;
|
||||
if (!BN_gcd(t, pm1, e, ctx))
|
||||
goto err;
|
||||
if (BN_is_one(t)
|
||||
/* X9.31 specifies 8 MR and 1 Lucas test or any prime test
|
||||
* offering similar or better guarantees 50 MR is considerably
|
||||
* better.
|
||||
*/
|
||||
&& BN_is_prime_fasttest_ex(p, 50, ctx, 1, cb))
|
||||
break;
|
||||
if (!BN_add(p, p, p1p2))
|
||||
goto err;
|
||||
}
|
||||
|
||||
BN_GENCB_call(cb, 3, 0);
|
||||
|
||||
ret = 1;
|
||||
|
||||
err:
|
||||
|
||||
BN_CTX_end(ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Generate pair of paramters Xp, Xq for X9.31 prime generation.
|
||||
* Note: nbits paramter is sum of number of bits in both.
|
||||
*/
|
||||
|
||||
int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *t;
|
||||
int i;
|
||||
/* Number of bits for each prime is of the form
|
||||
* 512+128s for s = 0, 1, ...
|
||||
*/
|
||||
if ((nbits < 1024) || (nbits & 0xff))
|
||||
return 0;
|
||||
nbits >>= 1;
|
||||
/* The random value Xp must be between sqrt(2) * 2^(nbits-1) and
|
||||
* 2^nbits - 1. By setting the top two bits we ensure that the lower
|
||||
* bound is exceeded.
|
||||
*/
|
||||
if (!BN_rand(Xp, nbits, 1, 0))
|
||||
return 0;
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
t = BN_CTX_get(ctx);
|
||||
|
||||
for (i = 0; i < 1000; i++)
|
||||
{
|
||||
if (!BN_rand(Xq, nbits, 1, 0))
|
||||
return 0;
|
||||
/* Check that |Xp - Xq| > 2^(nbits - 100) */
|
||||
BN_sub(t, Xp, Xq);
|
||||
if (BN_num_bits(t) > (nbits - 100))
|
||||
break;
|
||||
}
|
||||
|
||||
BN_CTX_end(ctx);
|
||||
|
||||
if (i < 1000)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/* Generate primes using X9.31 algorithm. Of the values p, p1, p2, Xp1
|
||||
* and Xp2 only 'p' needs to be non-NULL. If any of the others are not NULL
|
||||
* the relevant parameter will be stored in it.
|
||||
*
|
||||
* Due to the fact that |Xp - Xq| > 2^(nbits - 100) must be satisfied Xp and Xq
|
||||
* are generated using the previous function and supplied as input.
|
||||
*/
|
||||
|
||||
int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
BIGNUM *Xp1, BIGNUM *Xp2,
|
||||
const BIGNUM *Xp,
|
||||
const BIGNUM *e, BN_CTX *ctx,
|
||||
BN_GENCB *cb)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
if (!Xp1)
|
||||
Xp1 = BN_CTX_get(ctx);
|
||||
if (!Xp2)
|
||||
Xp2 = BN_CTX_get(ctx);
|
||||
|
||||
if (!BN_rand(Xp1, 101, 0, 0))
|
||||
goto error;
|
||||
if (!BN_rand(Xp2, 101, 0, 0))
|
||||
goto error;
|
||||
if (!BN_X931_derive_prime_ex(p, p1, p2, Xp, Xp1, Xp2, e, ctx, cb))
|
||||
goto error;
|
||||
|
||||
ret = 1;
|
||||
|
||||
error:
|
||||
BN_CTX_end(ctx);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
@@ -17,8 +17,8 @@ TEST=
|
||||
APPS=
|
||||
|
||||
LIB=$(TOP)/libcrypto.a
|
||||
LIBSRC= buffer.c buf_str.c buf_err.c
|
||||
LIBOBJ= buffer.o buf_str.o buf_err.o
|
||||
LIBSRC= buffer.c buf_err.c
|
||||
LIBOBJ= buffer.o buf_err.o
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
@@ -33,7 +33,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -81,13 +81,6 @@ buf_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
buf_err.o: buf_err.c
|
||||
buf_str.o: ../../e_os.h ../../include/openssl/bio.h
|
||||
buf_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
buf_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
buf_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
buf_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
buf_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
buf_str.o: ../../include/openssl/symhacks.h ../cryptlib.h buf_str.c
|
||||
buffer.o: ../../e_os.h ../../include/openssl/bio.h
|
||||
buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
|
@@ -1,116 +0,0 @@
|
||||
/* crypto/buffer/buf_str.c */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2007 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/buffer.h>
|
||||
|
||||
char *BUF_strdup(const char *str)
|
||||
{
|
||||
if (str == NULL) return(NULL);
|
||||
return BUF_strndup(str, strlen(str));
|
||||
}
|
||||
|
||||
char *BUF_strndup(const char *str, size_t siz)
|
||||
{
|
||||
char *ret;
|
||||
|
||||
if (str == NULL) return(NULL);
|
||||
|
||||
ret=OPENSSL_malloc(siz+1);
|
||||
if (ret == NULL)
|
||||
{
|
||||
BUFerr(BUF_F_BUF_STRNDUP,ERR_R_MALLOC_FAILURE);
|
||||
return(NULL);
|
||||
}
|
||||
BUF_strlcpy(ret,str,siz+1);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void *BUF_memdup(const void *data, size_t siz)
|
||||
{
|
||||
void *ret;
|
||||
|
||||
if (data == NULL) return(NULL);
|
||||
|
||||
ret=OPENSSL_malloc(siz);
|
||||
if (ret == NULL)
|
||||
{
|
||||
BUFerr(BUF_F_BUF_MEMDUP,ERR_R_MALLOC_FAILURE);
|
||||
return(NULL);
|
||||
}
|
||||
return memcpy(ret, data, siz);
|
||||
}
|
||||
|
||||
size_t BUF_strlcpy(char *dst, const char *src, size_t size)
|
||||
{
|
||||
size_t l = 0;
|
||||
for(; size > 1 && *src; size--)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
l++;
|
||||
}
|
||||
if (size)
|
||||
*dst = '\0';
|
||||
return l + strlen(src);
|
||||
}
|
||||
|
||||
size_t BUF_strlcat(char *dst, const char *src, size_t size)
|
||||
{
|
||||
size_t l = 0;
|
||||
for(; size > 0 && *dst; size--, dst++)
|
||||
l++;
|
||||
return l + BUF_strlcpy(dst, src, size);
|
||||
}
|
@@ -161,3 +161,61 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int len)
|
||||
}
|
||||
return(len);
|
||||
}
|
||||
|
||||
char *BUF_strdup(const char *str)
|
||||
{
|
||||
if (str == NULL) return(NULL);
|
||||
return BUF_strndup(str, strlen(str));
|
||||
}
|
||||
|
||||
char *BUF_strndup(const char *str, size_t siz)
|
||||
{
|
||||
char *ret;
|
||||
|
||||
if (str == NULL) return(NULL);
|
||||
|
||||
ret=OPENSSL_malloc(siz+1);
|
||||
if (ret == NULL)
|
||||
{
|
||||
BUFerr(BUF_F_BUF_STRNDUP,ERR_R_MALLOC_FAILURE);
|
||||
return(NULL);
|
||||
}
|
||||
BUF_strlcpy(ret,str,siz+1);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void *BUF_memdup(const void *data, size_t siz)
|
||||
{
|
||||
void *ret;
|
||||
|
||||
if (data == NULL) return(NULL);
|
||||
|
||||
ret=OPENSSL_malloc(siz);
|
||||
if (ret == NULL)
|
||||
{
|
||||
BUFerr(BUF_F_BUF_MEMDUP,ERR_R_MALLOC_FAILURE);
|
||||
return(NULL);
|
||||
}
|
||||
return memcpy(ret, data, siz);
|
||||
}
|
||||
|
||||
size_t BUF_strlcpy(char *dst, const char *src, size_t size)
|
||||
{
|
||||
size_t l = 0;
|
||||
for(; size > 1 && *src; size--)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
l++;
|
||||
}
|
||||
if (size)
|
||||
*dst = '\0';
|
||||
return l + strlen(src);
|
||||
}
|
||||
|
||||
size_t BUF_strlcat(char *dst, const char *src, size_t size)
|
||||
{
|
||||
size_t l = 0;
|
||||
for(; size > 0 && *dst; size--, dst++)
|
||||
l++;
|
||||
return l + BUF_strlcpy(dst, src, size);
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
@@ -38,7 +38,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -102,8 +102,5 @@ c_ofb64.o: ../../e_os.h ../../include/openssl/cast.h
|
||||
c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
c_ofb64.o: c_ofb64.c cast_lcl.h
|
||||
c_skey.o: ../../e_os.h ../../include/openssl/cast.h
|
||||
c_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
c_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h
|
||||
c_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
c_skey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
c_skey.o: ../../include/openssl/symhacks.h c_skey.c cast_lcl.h cast_s.h
|
||||
c_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
c_skey.o: c_skey.c cast_lcl.h cast_s.h
|
||||
|
@@ -57,8 +57,6 @@
|
||||
*/
|
||||
|
||||
#include <openssl/cast.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/fips.h>
|
||||
#include "cast_lcl.h"
|
||||
#include "cast_s.h"
|
||||
|
||||
@@ -74,7 +72,7 @@
|
||||
#define S6 CAST_S_table6
|
||||
#define S7 CAST_S_table7
|
||||
|
||||
FIPS_NON_FIPS_VCIPHER_Init(CAST)
|
||||
void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data)
|
||||
{
|
||||
CAST_LONG x[16];
|
||||
CAST_LONG z[16];
|
||||
|
@@ -83,9 +83,7 @@ typedef struct cast_key_st
|
||||
int short_key; /* Use reduced rounds for short key */
|
||||
} CAST_KEY;
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
void private_CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
|
||||
#endif
|
||||
|
||||
void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
|
||||
void CAST_ecb_encrypt(const unsigned char *in,unsigned char *out,CAST_KEY *key,
|
||||
int enc);
|
||||
|
@@ -36,7 +36,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
@@ -36,7 +36,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -114,8 +114,8 @@ conf_mall.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
|
||||
conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
|
||||
conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
conf_mall.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
conf_mall.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
conf_mall.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
conf_mall.o: ../../include/openssl/objects.h
|
||||
conf_mall.o: ../../include/openssl/opensslconf.h
|
||||
conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
@@ -128,9 +128,9 @@ conf_mod.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
|
||||
conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
|
||||
conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
|
||||
conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
|
||||
conf_mod.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
conf_mod.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
|
||||
conf_mod.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
conf_mod.o: ../../include/openssl/opensslconf.h
|
||||
conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -143,9 +143,8 @@ conf_sap.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
|
||||
conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
|
||||
conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
|
||||
conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
conf_sap.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
conf_sap.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
conf_sap.o: ../../include/openssl/opensslconf.h
|
||||
conf_sap.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
conf_sap.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
|
||||
conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
|
@@ -121,7 +121,7 @@ int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value)
|
||||
v = (CONF_VALUE *)lh_insert(conf->data, value);
|
||||
if (v != NULL)
|
||||
{
|
||||
sk_CONF_VALUE_delete_ptr(ts,v);
|
||||
(void)sk_CONF_VALUE_delete_ptr(ts,v);
|
||||
OPENSSL_free(v->name);
|
||||
OPENSSL_free(v->value);
|
||||
OPENSSL_free(v);
|
||||
|
@@ -63,7 +63,6 @@
|
||||
#include <openssl/dso.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/evp.h>
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#endif
|
||||
@@ -77,6 +76,5 @@ void OPENSSL_load_builtin_modules(void)
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE_add_conf_module();
|
||||
#endif
|
||||
EVP_add_alg_module();
|
||||
}
|
||||
|
||||
|
@@ -432,7 +432,7 @@ void CONF_modules_unload(int all)
|
||||
if (((md->links > 0) || !md->dso) && !all)
|
||||
continue;
|
||||
/* Since we're working in reverse this is OK */
|
||||
sk_CONF_MODULE_delete(supported_modules, i);
|
||||
(void)sk_CONF_MODULE_delete(supported_modules, i);
|
||||
module_free(md);
|
||||
}
|
||||
if (sk_CONF_MODULE_num(supported_modules) == 0)
|
||||
|
@@ -121,17 +121,275 @@
|
||||
static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */
|
||||
#endif
|
||||
|
||||
DECLARE_STACK_OF(CRYPTO_dynlock)
|
||||
IMPLEMENT_STACK_OF(CRYPTO_dynlock)
|
||||
|
||||
/* real #defines in crypto.h, keep these upto date */
|
||||
static const char* const lock_names[CRYPTO_NUM_LOCKS] =
|
||||
{
|
||||
"<<ERROR>>",
|
||||
"err",
|
||||
"ex_data",
|
||||
"x509",
|
||||
"x509_info",
|
||||
"x509_pkey",
|
||||
"x509_crl",
|
||||
"x509_req",
|
||||
"dsa",
|
||||
"rsa",
|
||||
"evp_pkey",
|
||||
"x509_store",
|
||||
"ssl_ctx",
|
||||
"ssl_cert",
|
||||
"ssl_session",
|
||||
"ssl_sess_cert",
|
||||
"ssl",
|
||||
"ssl_method",
|
||||
"rand",
|
||||
"rand2",
|
||||
"debug_malloc",
|
||||
"BIO",
|
||||
"gethostbyname",
|
||||
"getservbyname",
|
||||
"readdir",
|
||||
"RSA_blinding",
|
||||
"dh",
|
||||
"debug_malloc2",
|
||||
"dso",
|
||||
"dynlock",
|
||||
"engine",
|
||||
"ui",
|
||||
"ecdsa",
|
||||
"ec",
|
||||
"ecdh",
|
||||
"bn",
|
||||
"ec_pre_comp",
|
||||
"store",
|
||||
"comp",
|
||||
#if CRYPTO_NUM_LOCKS != 39
|
||||
# error "Inconsistency between crypto.h and cryptlib.c"
|
||||
#endif
|
||||
};
|
||||
|
||||
/* This is for applications to allocate new type names in the non-dynamic
|
||||
array of lock names. These are numbered with positive numbers. */
|
||||
static STACK *app_locks=NULL;
|
||||
|
||||
/* For applications that want a more dynamic way of handling threads, the
|
||||
following stack is used. These are externally numbered with negative
|
||||
numbers. */
|
||||
static STACK_OF(CRYPTO_dynlock) *dyn_locks=NULL;
|
||||
|
||||
|
||||
static void (MS_FAR *locking_callback)(int mode,int type,
|
||||
const char *file,int line)=NULL;
|
||||
static int (MS_FAR *add_lock_callback)(int *pointer,int amount,
|
||||
int type,const char *file,int line)=NULL;
|
||||
static unsigned long (MS_FAR *id_callback)(void)=NULL;
|
||||
static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback)
|
||||
(const char *file,int line)=NULL;
|
||||
static void (MS_FAR *dynlock_lock_callback)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file,int line)=NULL;
|
||||
static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l,
|
||||
const char *file,int line)=NULL;
|
||||
|
||||
int CRYPTO_get_new_lockid(char *name)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
|
||||
/* A hack to make Visual C++ 5.0 work correctly when linking as
|
||||
* a DLL using /MT. Without this, the application cannot use
|
||||
* and floating point printf's.
|
||||
* It also seems to be needed for Visual C 1.5 (win16) */
|
||||
SSLeay_MSVC5_hack=(double)name[0]*(double)name[1];
|
||||
#endif
|
||||
|
||||
if ((app_locks == NULL) && ((app_locks=sk_new_null()) == NULL))
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
if ((str=BUF_strdup(name)) == NULL)
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
i=sk_push(app_locks,str);
|
||||
if (!i)
|
||||
OPENSSL_free(str);
|
||||
else
|
||||
i+=CRYPTO_NUM_LOCKS; /* gap of one :-) */
|
||||
return(i);
|
||||
}
|
||||
|
||||
int CRYPTO_num_locks(void)
|
||||
{
|
||||
return CRYPTO_NUM_LOCKS;
|
||||
}
|
||||
|
||||
int CRYPTO_get_new_dynlockid(void)
|
||||
{
|
||||
int i = 0;
|
||||
CRYPTO_dynlock *pointer = NULL;
|
||||
|
||||
if (dynlock_create_callback == NULL)
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK);
|
||||
return(0);
|
||||
}
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
if ((dyn_locks == NULL)
|
||||
&& ((dyn_locks=sk_CRYPTO_dynlock_new_null()) == NULL))
|
||||
{
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
pointer = (CRYPTO_dynlock *)OPENSSL_malloc(sizeof(CRYPTO_dynlock));
|
||||
if (pointer == NULL)
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
pointer->references = 1;
|
||||
pointer->data = dynlock_create_callback(__FILE__,__LINE__);
|
||||
if (pointer->data == NULL)
|
||||
{
|
||||
OPENSSL_free(pointer);
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
/* First, try to find an existing empty slot */
|
||||
i=sk_CRYPTO_dynlock_find(dyn_locks,NULL);
|
||||
/* If there was none, push, thereby creating a new one */
|
||||
if (i == -1)
|
||||
/* Since sk_push() returns the number of items on the
|
||||
stack, not the location of the pushed item, we need
|
||||
to transform the returned number into a position,
|
||||
by decreasing it. */
|
||||
i=sk_CRYPTO_dynlock_push(dyn_locks,pointer) - 1;
|
||||
else
|
||||
/* If we found a place with a NULL pointer, put our pointer
|
||||
in it. */
|
||||
(void)sk_CRYPTO_dynlock_set(dyn_locks,i,pointer);
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (i == -1)
|
||||
{
|
||||
dynlock_destroy_callback(pointer->data,__FILE__,__LINE__);
|
||||
OPENSSL_free(pointer);
|
||||
}
|
||||
else
|
||||
i += 1; /* to avoid 0 */
|
||||
return -i;
|
||||
}
|
||||
|
||||
void CRYPTO_destroy_dynlockid(int i)
|
||||
{
|
||||
CRYPTO_dynlock *pointer = NULL;
|
||||
if (i)
|
||||
i = -i-1;
|
||||
if (dynlock_destroy_callback == NULL)
|
||||
return;
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (dyn_locks == NULL || i >= sk_CRYPTO_dynlock_num(dyn_locks))
|
||||
{
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
return;
|
||||
}
|
||||
pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
|
||||
if (pointer != NULL)
|
||||
{
|
||||
--pointer->references;
|
||||
#ifdef REF_CHECK
|
||||
if (pointer->references < 0)
|
||||
{
|
||||
fprintf(stderr,"CRYPTO_destroy_dynlockid, bad reference count\n");
|
||||
abort();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (pointer->references <= 0)
|
||||
{
|
||||
(void)sk_CRYPTO_dynlock_set(dyn_locks, i, NULL);
|
||||
}
|
||||
else
|
||||
pointer = NULL;
|
||||
}
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (pointer)
|
||||
{
|
||||
dynlock_destroy_callback(pointer->data,__FILE__,__LINE__);
|
||||
OPENSSL_free(pointer);
|
||||
}
|
||||
}
|
||||
|
||||
struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i)
|
||||
{
|
||||
CRYPTO_dynlock *pointer = NULL;
|
||||
if (i)
|
||||
i = -i-1;
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (dyn_locks != NULL && i < sk_CRYPTO_dynlock_num(dyn_locks))
|
||||
pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
|
||||
if (pointer)
|
||||
pointer->references++;
|
||||
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (pointer)
|
||||
return pointer->data;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void))
|
||||
(const char *file,int line)
|
||||
{
|
||||
return(dynlock_create_callback);
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_dynlock_lock_callback(void))(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file,int line)
|
||||
{
|
||||
return(dynlock_lock_callback);
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_dynlock_destroy_callback(void))
|
||||
(struct CRYPTO_dynlock_value *l, const char *file,int line)
|
||||
{
|
||||
return(dynlock_destroy_callback);
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*func)
|
||||
(const char *file, int line))
|
||||
{
|
||||
dynlock_create_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_lock_callback(void (*func)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
dynlock_lock_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_destroy_callback(void (*func)
|
||||
(struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
dynlock_destroy_callback=func;
|
||||
}
|
||||
|
||||
|
||||
void (*CRYPTO_get_locking_callback(void))(int mode,int type,const char *file,
|
||||
int line)
|
||||
{
|
||||
@@ -187,14 +445,6 @@ unsigned long CRYPTO_thread_id(void)
|
||||
return(ret);
|
||||
}
|
||||
|
||||
static void (*do_dynlock_cb)(int mode, int type, const char *file, int line);
|
||||
|
||||
void int_CRYPTO_set_do_dynlock_callback(
|
||||
void (*dyn_cb)(int mode, int type, const char *file, int line))
|
||||
{
|
||||
do_dynlock_cb = dyn_cb;
|
||||
}
|
||||
|
||||
void CRYPTO_lock(int mode, int type, const char *file, int line)
|
||||
{
|
||||
#ifdef LOCK_DEBUG
|
||||
@@ -222,8 +472,17 @@ void CRYPTO_lock(int mode, int type, const char *file, int line)
|
||||
#endif
|
||||
if (type < 0)
|
||||
{
|
||||
if (do_dynlock_cb)
|
||||
do_dynlock_cb(mode, type, file, line);
|
||||
if (dynlock_lock_callback != NULL)
|
||||
{
|
||||
struct CRYPTO_dynlock_value *pointer
|
||||
= CRYPTO_get_dynlock_value(type);
|
||||
|
||||
OPENSSL_assert(pointer != NULL);
|
||||
|
||||
dynlock_lock_callback(mode, pointer, file, line);
|
||||
|
||||
CRYPTO_destroy_dynlockid(type);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (locking_callback != NULL)
|
||||
@@ -268,9 +527,21 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
|
||||
return(ret);
|
||||
}
|
||||
|
||||
const char *CRYPTO_get_lock_name(int type)
|
||||
{
|
||||
if (type < 0)
|
||||
return("dynamic");
|
||||
else if (type < CRYPTO_NUM_LOCKS)
|
||||
return(lock_names[type]);
|
||||
else if (type-CRYPTO_NUM_LOCKS > sk_num(app_locks))
|
||||
return("ERROR");
|
||||
else
|
||||
return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS));
|
||||
}
|
||||
|
||||
#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
|
||||
defined(__INTEL__) || \
|
||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
|
||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64)
|
||||
|
||||
unsigned long OPENSSL_ia32cap_P=0;
|
||||
unsigned long *OPENSSL_ia32cap_loc(void) { return &OPENSSL_ia32cap_P; }
|
||||
@@ -306,62 +577,6 @@ void OPENSSL_cpuid_setup(void) {}
|
||||
#endif
|
||||
|
||||
#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(_WINDLL)
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
|
||||
#include <tlhelp32.h>
|
||||
#if defined(__GNUC__) && __GNUC__>=2
|
||||
static int DllInit(void) __attribute__((constructor));
|
||||
#elif defined(_MSC_VER)
|
||||
static int DllInit(void);
|
||||
# ifdef _WIN64
|
||||
# pragma section(".CRT$XCU",read)
|
||||
__declspec(allocate(".CRT$XCU"))
|
||||
# else
|
||||
# pragma data_seg(".CRT$XCU")
|
||||
# endif
|
||||
static int (*p)(void) = DllInit;
|
||||
# pragma data_seg()
|
||||
#endif
|
||||
|
||||
static int DllInit(void)
|
||||
{
|
||||
#if defined(_WIN32_WINNT)
|
||||
union { int(*f)(void); BYTE *p; } t = { DllInit };
|
||||
HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
|
||||
IMAGE_DOS_HEADER *dos_header;
|
||||
IMAGE_NT_HEADERS *nt_headers;
|
||||
MODULEENTRY32 me32 = {sizeof(me32)};
|
||||
|
||||
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,0);
|
||||
if (hModuleSnap != INVALID_HANDLE_VALUE &&
|
||||
Module32First(hModuleSnap,&me32)) do
|
||||
{
|
||||
if (t.p >= me32.modBaseAddr &&
|
||||
t.p < me32.modBaseAddr+me32.modBaseSize)
|
||||
{
|
||||
dos_header=(IMAGE_DOS_HEADER *)me32.modBaseAddr;
|
||||
if (dos_header->e_magic==IMAGE_DOS_SIGNATURE)
|
||||
{
|
||||
nt_headers=(IMAGE_NT_HEADERS *)
|
||||
((BYTE *)dos_header+dos_header->e_lfanew);
|
||||
if (nt_headers->Signature==IMAGE_NT_SIGNATURE &&
|
||||
me32.modBaseAddr!=(BYTE*)nt_headers->OptionalHeader.ImageBase)
|
||||
OPENSSL_NONPIC_relocated=1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} while (Module32Next(hModuleSnap,&me32));
|
||||
|
||||
if (hModuleSnap != INVALID_HANDLE_VALUE)
|
||||
CloseHandle(hModuleSnap);
|
||||
#endif
|
||||
OPENSSL_cpuid_setup();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
/* pick DLL_[PROCESS|THREAD]_[ATTACH|DETACH] definitions */
|
||||
#include <windows.h>
|
||||
@@ -405,8 +620,6 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
#include <tchar.h>
|
||||
|
||||
|
@@ -219,9 +219,7 @@ typedef struct openssl_item_st
|
||||
#define CRYPTO_LOCK_EC_PRE_COMP 36
|
||||
#define CRYPTO_LOCK_STORE 37
|
||||
#define CRYPTO_LOCK_COMP 38
|
||||
#define CRYPTO_LOCK_FIPS 39
|
||||
#define CRYPTO_LOCK_FIPS2 40
|
||||
#define CRYPTO_NUM_LOCKS 41
|
||||
#define CRYPTO_NUM_LOCKS 39
|
||||
|
||||
#define CRYPTO_LOCK 1
|
||||
#define CRYPTO_UNLOCK 2
|
||||
@@ -343,7 +341,14 @@ DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS)
|
||||
|
||||
/* Set standard debugging functions (not done by default
|
||||
* unless CRYPTO_MDEBUG is defined) */
|
||||
void CRYPTO_malloc_debug_init(void);
|
||||
#define CRYPTO_malloc_debug_init() do {\
|
||||
CRYPTO_set_mem_debug_functions(\
|
||||
CRYPTO_dbg_malloc,\
|
||||
CRYPTO_dbg_realloc,\
|
||||
CRYPTO_dbg_free,\
|
||||
CRYPTO_dbg_set_options,\
|
||||
CRYPTO_dbg_get_options);\
|
||||
} while(0)
|
||||
|
||||
int CRYPTO_mem_ctrl(int mode);
|
||||
int CRYPTO_is_mem_check_on(void);
|
||||
@@ -422,9 +427,6 @@ const char *CRYPTO_get_lock_name(int type);
|
||||
int CRYPTO_add_lock(int *pointer,int amount,int type, const char *file,
|
||||
int line);
|
||||
|
||||
void int_CRYPTO_set_do_dynlock_callback(
|
||||
void (*do_dynlock_cb)(int mode, int type, const char *file, int line));
|
||||
|
||||
int CRYPTO_get_new_dynlockid(void);
|
||||
void CRYPTO_destroy_dynlockid(int i);
|
||||
struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i);
|
||||
@@ -449,10 +451,6 @@ int CRYPTO_set_mem_debug_functions(void (*m)(void *,int,const char *,int,int),
|
||||
void (*f)(void *,int),
|
||||
void (*so)(long),
|
||||
long (*go)(void));
|
||||
void CRYPTO_set_mem_info_functions(
|
||||
int (*push_info_fn)(const char *info, const char *file, int line),
|
||||
int (*pop_info_fn)(void),
|
||||
int (*remove_all_info_fn)(void));
|
||||
void CRYPTO_get_mem_functions(void *(**m)(size_t),void *(**r)(void *, size_t), void (**f)(void *));
|
||||
void CRYPTO_get_locked_mem_functions(void *(**m)(size_t), void (**f)(void *));
|
||||
void CRYPTO_get_mem_ex_functions(void *(**m)(size_t,const char *,int),
|
||||
@@ -508,9 +506,6 @@ void CRYPTO_dbg_free(void *addr,int before_p);
|
||||
void CRYPTO_dbg_set_options(long bits);
|
||||
long CRYPTO_dbg_get_options(void);
|
||||
|
||||
int CRYPTO_dbg_push_info(const char *info, const char *file, int line);
|
||||
int CRYPTO_dbg_pop_info(void);
|
||||
int CRYPTO_dbg_remove_all_info(void);
|
||||
|
||||
#ifndef OPENSSL_NO_FP_API
|
||||
void CRYPTO_mem_leaks_fp(FILE *);
|
||||
@@ -527,69 +522,12 @@ void OpenSSLDie(const char *file,int line,const char *assertion);
|
||||
unsigned long *OPENSSL_ia32cap_loc(void);
|
||||
#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \
|
||||
alg " previous FIPS forbidden algorithm error ignored");
|
||||
|
||||
#define FIPS_BAD_ABORT(alg) OpenSSLDie(__FILE__, __LINE__, \
|
||||
#alg " Algorithm forbidden in FIPS mode");
|
||||
|
||||
#ifdef OPENSSL_FIPS_STRICT
|
||||
#define FIPS_BAD_ALGORITHM(alg) FIPS_BAD_ABORT(alg)
|
||||
#else
|
||||
#define FIPS_BAD_ALGORITHM(alg) \
|
||||
{ \
|
||||
FIPSerr(FIPS_F_HASH_FINAL,FIPS_R_NON_FIPS_METHOD); \
|
||||
ERR_add_error_data(2, "Algorithm=", #alg); \
|
||||
return 0; \
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Low level digest API blocking macro */
|
||||
|
||||
#define FIPS_NON_FIPS_MD_Init(alg) \
|
||||
int alg##_Init(alg##_CTX *c) \
|
||||
{ \
|
||||
if (FIPS_mode()) \
|
||||
FIPS_BAD_ALGORITHM(alg) \
|
||||
return private_##alg##_Init(c); \
|
||||
} \
|
||||
int private_##alg##_Init(alg##_CTX *c)
|
||||
|
||||
/* For ciphers the API often varies from cipher to cipher and each needs to
|
||||
* be treated as a special case. Variable key length ciphers (Blowfish, RC4,
|
||||
* CAST) however are very similar and can use a blocking macro.
|
||||
*/
|
||||
|
||||
#define FIPS_NON_FIPS_VCIPHER_Init(alg) \
|
||||
void alg##_set_key(alg##_KEY *key, int len, const unsigned char *data) \
|
||||
{ \
|
||||
if (FIPS_mode()) \
|
||||
FIPS_BAD_ABORT(alg) \
|
||||
private_##alg##_set_key(key, len, data); \
|
||||
} \
|
||||
void private_##alg##_set_key(alg##_KEY *key, int len, \
|
||||
const unsigned char *data)
|
||||
|
||||
#else
|
||||
|
||||
#define FIPS_NON_FIPS_VCIPHER_Init(alg) \
|
||||
void alg##_set_key(alg##_KEY *key, int len, const unsigned char *data)
|
||||
|
||||
#define FIPS_NON_FIPS_MD_Init(alg) \
|
||||
int alg##_Init(alg##_CTX *c)
|
||||
|
||||
#endif /* def OPENSSL_FIPS */
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
/* The following lines are auto generated by the script mkerr.pl. Any changes
|
||||
* made after this point may be overwritten when the script is next run.
|
||||
*/
|
||||
void ERR_load_CRYPTO_strings(void);
|
||||
|
||||
#define OPENSSL_HAVE_INIT 1
|
||||
void OPENSSL_init(void);
|
||||
|
||||
/* Error codes for the CRYPTO functions. */
|
||||
|
||||
/* Function codes. */
|
||||
|
@@ -24,7 +24,7 @@ TEST=destest.c
|
||||
APPS=
|
||||
|
||||
LIB=$(TOP)/libcrypto.a
|
||||
LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
|
||||
LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
|
||||
ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \
|
||||
fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \
|
||||
qud_cksm.c rand_key.c rpc_enc.c set_key.c \
|
||||
@@ -33,7 +33,7 @@ LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
|
||||
str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \
|
||||
read2pwd.c
|
||||
|
||||
LIBOBJ= des_lib.o set_key.o ecb_enc.o cbc_enc.o \
|
||||
LIBOBJ= set_key.o ecb_enc.o cbc_enc.o \
|
||||
ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \
|
||||
enc_read.o enc_writ.o ofb64enc.o \
|
||||
ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \
|
||||
@@ -54,7 +54,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -157,13 +157,6 @@ des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
|
||||
des_enc.o: des_enc.c des_locl.h ncbc_enc.c
|
||||
des_lib.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
|
||||
des_lib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
|
||||
des_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
des_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
des_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
des_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
|
||||
des_lib.o: ../../include/openssl/ui_compat.h des_lib.c des_locl.h des_ver.h
|
||||
des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
|
||||
des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
|
||||
@@ -182,12 +175,14 @@ ecb3_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
|
||||
ecb3_enc.o: des_locl.h ecb3_enc.c
|
||||
ecb_enc.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
|
||||
ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
|
||||
ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
|
||||
ecb_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
ecb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
ecb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
|
||||
ecb_enc.o: des_locl.h ecb_enc.c spr.h
|
||||
ecb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
ecb_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
ecb_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
|
||||
ecb_enc.o: ../../include/openssl/ui_compat.h des_locl.h des_ver.h ecb_enc.c
|
||||
ecb_enc.o: spr.h
|
||||
ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
|
||||
ede_cbcm_enc.o: ../../include/openssl/e_os2.h
|
||||
ede_cbcm_enc.o: ../../include/openssl/opensslconf.h
|
||||
|
@@ -289,8 +289,6 @@ void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
|
||||
|
||||
#ifndef DES_DEFAULT_OPTIONS
|
||||
|
||||
#if !defined(OPENSSL_FIPS_DES_ASM)
|
||||
|
||||
#undef CBC_ENC_C__DONT_UPDATE_IV
|
||||
#include "ncbc_enc.c" /* DES_ncbc_encrypt */
|
||||
|
||||
@@ -406,6 +404,4 @@ void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||
tin[0]=tin[1]=0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* DES_DEFAULT_OPTIONS */
|
||||
|
@@ -1,106 +0,0 @@
|
||||
/* crypto/des/ecb_enc.c */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
#include "des_ver.h"
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/bio.h>
|
||||
|
||||
OPENSSL_GLOBAL const char libdes_version[]="libdes" OPENSSL_VERSION_PTEXT;
|
||||
OPENSSL_GLOBAL const char DES_version[]="DES" OPENSSL_VERSION_PTEXT;
|
||||
|
||||
const char *DES_options(void)
|
||||
{
|
||||
static int init=1;
|
||||
static char buf[32];
|
||||
|
||||
if (init)
|
||||
{
|
||||
const char *ptr,*unroll,*risc,*size;
|
||||
|
||||
#ifdef DES_PTR
|
||||
ptr="ptr";
|
||||
#else
|
||||
ptr="idx";
|
||||
#endif
|
||||
#if defined(DES_RISC1) || defined(DES_RISC2)
|
||||
#ifdef DES_RISC1
|
||||
risc="risc1";
|
||||
#endif
|
||||
#ifdef DES_RISC2
|
||||
risc="risc2";
|
||||
#endif
|
||||
#else
|
||||
risc="cisc";
|
||||
#endif
|
||||
#ifdef DES_UNROLL
|
||||
unroll="16";
|
||||
#else
|
||||
unroll="4";
|
||||
#endif
|
||||
if (sizeof(DES_LONG) != sizeof(long))
|
||||
size="int";
|
||||
else
|
||||
size="long";
|
||||
BIO_snprintf(buf,sizeof buf,"des(%s,%s,%s,%s)",ptr,risc,unroll,
|
||||
size);
|
||||
init=0;
|
||||
}
|
||||
return(buf);
|
||||
}
|
||||
|
@@ -57,7 +57,54 @@
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
#include "des_ver.h"
|
||||
#include "spr.h"
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/bio.h>
|
||||
|
||||
OPENSSL_GLOBAL const char libdes_version[]="libdes" OPENSSL_VERSION_PTEXT;
|
||||
OPENSSL_GLOBAL const char DES_version[]="DES" OPENSSL_VERSION_PTEXT;
|
||||
|
||||
const char *DES_options(void)
|
||||
{
|
||||
static int init=1;
|
||||
static char buf[32];
|
||||
|
||||
if (init)
|
||||
{
|
||||
const char *ptr,*unroll,*risc,*size;
|
||||
|
||||
#ifdef DES_PTR
|
||||
ptr="ptr";
|
||||
#else
|
||||
ptr="idx";
|
||||
#endif
|
||||
#if defined(DES_RISC1) || defined(DES_RISC2)
|
||||
#ifdef DES_RISC1
|
||||
risc="risc1";
|
||||
#endif
|
||||
#ifdef DES_RISC2
|
||||
risc="risc2";
|
||||
#endif
|
||||
#else
|
||||
risc="cisc";
|
||||
#endif
|
||||
#ifdef DES_UNROLL
|
||||
unroll="16";
|
||||
#else
|
||||
unroll="4";
|
||||
#endif
|
||||
if (sizeof(DES_LONG) != sizeof(long))
|
||||
size="int";
|
||||
else
|
||||
size="long";
|
||||
BIO_snprintf(buf,sizeof buf,"des(%s,%s,%s,%s)",ptr,risc,unroll,
|
||||
size);
|
||||
init=0;
|
||||
}
|
||||
return(buf);
|
||||
}
|
||||
|
||||
|
||||
void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
|
||||
DES_key_schedule *ks, int enc)
|
||||
|
@@ -63,7 +63,6 @@
|
||||
* 1.1 added norm_expand_bits
|
||||
* 1.0 First working version
|
||||
*/
|
||||
#include <openssl/fips.h>
|
||||
#include "des_locl.h"
|
||||
|
||||
OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key); /* defaults to false */
|
||||
@@ -350,10 +349,6 @@ void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
|
||||
k = &schedule->ks->deslong[0];
|
||||
in = &(*key)[0];
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
FIPS_selftest_check();
|
||||
#endif
|
||||
|
||||
c2l(in,c);
|
||||
c2l(in,d);
|
||||
|
||||
@@ -410,4 +405,3 @@ void des_fixup_key_parity(des_cblock *key)
|
||||
des_set_odd_parity(key);
|
||||
}
|
||||
*/
|
||||
|
||||
|
@@ -33,7 +33,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
@@ -77,8 +77,6 @@
|
||||
# define OPENSSL_DH_MAX_MODULUS_BITS 10000
|
||||
#endif
|
||||
|
||||
#define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024
|
||||
|
||||
#define DH_FLAG_CACHE_MONT_P 0x01
|
||||
#define DH_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DH
|
||||
* implementation now uses constant time
|
||||
@@ -169,11 +167,6 @@ struct dh_st
|
||||
|
||||
const DH_METHOD *DH_OpenSSL(void);
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
DH * FIPS_dh_new(void);
|
||||
void FIPS_dh_free(DH *dh);
|
||||
#endif
|
||||
|
||||
void DH_set_default_method(const DH_METHOD *meth);
|
||||
const DH_METHOD *DH_get_default_method(void);
|
||||
int DH_set_method(DH *dh, const DH_METHOD *meth);
|
||||
@@ -225,9 +218,6 @@ void ERR_load_DH_strings(void);
|
||||
#define DH_F_DHPARAMS_PRINT 100
|
||||
#define DH_F_DHPARAMS_PRINT_FP 101
|
||||
#define DH_F_DH_BUILTIN_GENPARAMS 106
|
||||
#define DH_F_DH_COMPUTE_KEY 107
|
||||
#define DH_F_DH_GENERATE_KEY 108
|
||||
#define DH_F_DH_GENERATE_PARAMETERS 109
|
||||
#define DH_F_DH_NEW_METHOD 105
|
||||
#define DH_F_GENERATE_KEY 103
|
||||
#define DH_F_GENERATE_PARAMETERS 104
|
||||
@@ -235,7 +225,6 @@ void ERR_load_DH_strings(void);
|
||||
/* Reason codes. */
|
||||
#define DH_R_BAD_GENERATOR 101
|
||||
#define DH_R_INVALID_PUBKEY 102
|
||||
#define DH_R_KEY_SIZE_TOO_SMALL 104
|
||||
#define DH_R_MODULUS_TOO_LARGE 103
|
||||
#define DH_R_NO_PRIVATE_VALUE 100
|
||||
|
||||
|
@@ -62,7 +62,7 @@
|
||||
#include <openssl/dh.h>
|
||||
|
||||
/* Check that p is a safe prime and
|
||||
* if g is 2, 3 or 5, check that is is a suitable generator
|
||||
* if g is 2, 3 or 5, check that it is a suitable generator
|
||||
* where
|
||||
* for 2, p mod 24 == 11
|
||||
* for 3, p mod 12 == 5
|
||||
@@ -70,8 +70,6 @@
|
||||
* should hold.
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_FIPS
|
||||
|
||||
int DH_check(const DH *dh, int *ret)
|
||||
{
|
||||
int ok=0;
|
||||
@@ -142,5 +140,3 @@ err:
|
||||
if (q != NULL) BN_free(q);
|
||||
return(ok);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -1,247 +0,0 @@
|
||||
/* crypto/dh/dh_lib.c */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/dh.h>
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#endif
|
||||
|
||||
const char DH_version[]="Diffie-Hellman" OPENSSL_VERSION_PTEXT;
|
||||
|
||||
static const DH_METHOD *default_DH_method = NULL;
|
||||
|
||||
void DH_set_default_method(const DH_METHOD *meth)
|
||||
{
|
||||
default_DH_method = meth;
|
||||
}
|
||||
|
||||
const DH_METHOD *DH_get_default_method(void)
|
||||
{
|
||||
if(!default_DH_method)
|
||||
default_DH_method = DH_OpenSSL();
|
||||
return default_DH_method;
|
||||
}
|
||||
|
||||
int DH_set_method(DH *dh, const DH_METHOD *meth)
|
||||
{
|
||||
/* NB: The caller is specifically setting a method, so it's not up to us
|
||||
* to deal with which ENGINE it comes from. */
|
||||
const DH_METHOD *mtmp;
|
||||
mtmp = dh->meth;
|
||||
if (mtmp->finish) mtmp->finish(dh);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (dh->engine)
|
||||
{
|
||||
ENGINE_finish(dh->engine);
|
||||
dh->engine = NULL;
|
||||
}
|
||||
#endif
|
||||
dh->meth = meth;
|
||||
if (meth->init) meth->init(dh);
|
||||
return 1;
|
||||
}
|
||||
|
||||
DH *DH_new(void)
|
||||
{
|
||||
return DH_new_method(NULL);
|
||||
}
|
||||
|
||||
DH *DH_new_method(ENGINE *engine)
|
||||
{
|
||||
DH *ret;
|
||||
|
||||
ret=(DH *)OPENSSL_malloc(sizeof(DH));
|
||||
if (ret == NULL)
|
||||
{
|
||||
DHerr(DH_F_DH_NEW_METHOD,ERR_R_MALLOC_FAILURE);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
ret->meth = DH_get_default_method();
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (engine)
|
||||
{
|
||||
if (!ENGINE_init(engine))
|
||||
{
|
||||
DHerr(DH_F_DH_NEW_METHOD, ERR_R_ENGINE_LIB);
|
||||
OPENSSL_free(ret);
|
||||
return NULL;
|
||||
}
|
||||
ret->engine = engine;
|
||||
}
|
||||
else
|
||||
ret->engine = ENGINE_get_default_DH();
|
||||
if(ret->engine)
|
||||
{
|
||||
ret->meth = ENGINE_get_DH(ret->engine);
|
||||
if(!ret->meth)
|
||||
{
|
||||
DHerr(DH_F_DH_NEW_METHOD,ERR_R_ENGINE_LIB);
|
||||
ENGINE_finish(ret->engine);
|
||||
OPENSSL_free(ret);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ret->pad=0;
|
||||
ret->version=0;
|
||||
ret->p=NULL;
|
||||
ret->g=NULL;
|
||||
ret->length=0;
|
||||
ret->pub_key=NULL;
|
||||
ret->priv_key=NULL;
|
||||
ret->q=NULL;
|
||||
ret->j=NULL;
|
||||
ret->seed = NULL;
|
||||
ret->seedlen = 0;
|
||||
ret->counter = NULL;
|
||||
ret->method_mont_p=NULL;
|
||||
ret->references = 1;
|
||||
ret->flags=ret->meth->flags;
|
||||
CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data);
|
||||
if ((ret->meth->init != NULL) && !ret->meth->init(ret))
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (ret->engine)
|
||||
ENGINE_finish(ret->engine);
|
||||
#endif
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data);
|
||||
OPENSSL_free(ret);
|
||||
ret=NULL;
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void DH_free(DH *r)
|
||||
{
|
||||
int i;
|
||||
if(r == NULL) return;
|
||||
i = CRYPTO_add(&r->references, -1, CRYPTO_LOCK_DH);
|
||||
#ifdef REF_PRINT
|
||||
REF_PRINT("DH",r);
|
||||
#endif
|
||||
if (i > 0) return;
|
||||
#ifdef REF_CHECK
|
||||
if (i < 0)
|
||||
{
|
||||
fprintf(stderr,"DH_free, bad reference count\n");
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (r->meth->finish)
|
||||
r->meth->finish(r);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (r->engine)
|
||||
ENGINE_finish(r->engine);
|
||||
#endif
|
||||
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, r, &r->ex_data);
|
||||
|
||||
if (r->p != NULL) BN_clear_free(r->p);
|
||||
if (r->g != NULL) BN_clear_free(r->g);
|
||||
if (r->q != NULL) BN_clear_free(r->q);
|
||||
if (r->j != NULL) BN_clear_free(r->j);
|
||||
if (r->seed) OPENSSL_free(r->seed);
|
||||
if (r->counter != NULL) BN_clear_free(r->counter);
|
||||
if (r->pub_key != NULL) BN_clear_free(r->pub_key);
|
||||
if (r->priv_key != NULL) BN_clear_free(r->priv_key);
|
||||
OPENSSL_free(r);
|
||||
}
|
||||
|
||||
int DH_up_ref(DH *r)
|
||||
{
|
||||
int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DH);
|
||||
#ifdef REF_PRINT
|
||||
REF_PRINT("DH",r);
|
||||
#endif
|
||||
#ifdef REF_CHECK
|
||||
if (i < 2)
|
||||
{
|
||||
fprintf(stderr, "DH_up, bad reference count\n");
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
return ((i > 1) ? 1 : 0);
|
||||
}
|
||||
|
||||
int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
|
||||
CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
|
||||
{
|
||||
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, argl, argp,
|
||||
new_func, dup_func, free_func);
|
||||
}
|
||||
|
||||
int DH_set_ex_data(DH *d, int idx, void *arg)
|
||||
{
|
||||
return(CRYPTO_set_ex_data(&d->ex_data,idx,arg));
|
||||
}
|
||||
|
||||
void *DH_get_ex_data(DH *d, int idx)
|
||||
{
|
||||
return(CRYPTO_get_ex_data(&d->ex_data,idx));
|
||||
}
|
||||
|
||||
int DH_size(const DH *dh)
|
||||
{
|
||||
return(BN_num_bytes(dh->p));
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
/* crypto/dh/dh_err.c */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1999-2005 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
|
||||
@@ -74,9 +74,6 @@ static ERR_STRING_DATA DH_str_functs[]=
|
||||
{ERR_FUNC(DH_F_DHPARAMS_PRINT), "DHparams_print"},
|
||||
{ERR_FUNC(DH_F_DHPARAMS_PRINT_FP), "DHparams_print_fp"},
|
||||
{ERR_FUNC(DH_F_DH_BUILTIN_GENPARAMS), "DH_BUILTIN_GENPARAMS"},
|
||||
{ERR_FUNC(DH_F_DH_COMPUTE_KEY), "DH_compute_key"},
|
||||
{ERR_FUNC(DH_F_DH_GENERATE_KEY), "DH_generate_key"},
|
||||
{ERR_FUNC(DH_F_DH_GENERATE_PARAMETERS), "DH_generate_parameters"},
|
||||
{ERR_FUNC(DH_F_DH_NEW_METHOD), "DH_new_method"},
|
||||
{ERR_FUNC(DH_F_GENERATE_KEY), "GENERATE_KEY"},
|
||||
{ERR_FUNC(DH_F_GENERATE_PARAMETERS), "GENERATE_PARAMETERS"},
|
||||
@@ -87,7 +84,6 @@ static ERR_STRING_DATA DH_str_reasons[]=
|
||||
{
|
||||
{ERR_REASON(DH_R_BAD_GENERATOR) ,"bad generator"},
|
||||
{ERR_REASON(DH_R_INVALID_PUBKEY) ,"invalid public key"},
|
||||
{ERR_REASON(DH_R_KEY_SIZE_TOO_SMALL) ,"key size too small"},
|
||||
{ERR_REASON(DH_R_MODULUS_TOO_LARGE) ,"modulus too large"},
|
||||
{ERR_REASON(DH_R_NO_PRIVATE_VALUE) ,"no private value"},
|
||||
{0,NULL}
|
||||
|
@@ -66,8 +66,6 @@
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/dh.h>
|
||||
|
||||
#ifndef OPENSSL_FIPS
|
||||
|
||||
static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb);
|
||||
|
||||
int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb)
|
||||
@@ -175,5 +173,3 @@ err:
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -62,8 +62,6 @@
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/dh.h>
|
||||
|
||||
#ifndef OPENSSL_FIPS
|
||||
|
||||
static int generate_key(DH *dh);
|
||||
static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh);
|
||||
static int dh_bn_mod_exp(const DH *dh, BIGNUM *r,
|
||||
@@ -263,5 +261,3 @@ static int dh_finish(DH *dh)
|
||||
BN_MONT_CTX_free(dh->method_mont_p);
|
||||
return(1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -1,247 +0,0 @@
|
||||
/* crypto/dh/dh_lib.c */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/dh.h>
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#endif
|
||||
|
||||
const char DH_version[]="Diffie-Hellman" OPENSSL_VERSION_PTEXT;
|
||||
|
||||
static const DH_METHOD *default_DH_method = NULL;
|
||||
|
||||
void DH_set_default_method(const DH_METHOD *meth)
|
||||
{
|
||||
default_DH_method = meth;
|
||||
}
|
||||
|
||||
const DH_METHOD *DH_get_default_method(void)
|
||||
{
|
||||
if(!default_DH_method)
|
||||
default_DH_method = DH_OpenSSL();
|
||||
return default_DH_method;
|
||||
}
|
||||
|
||||
int DH_set_method(DH *dh, const DH_METHOD *meth)
|
||||
{
|
||||
/* NB: The caller is specifically setting a method, so it's not up to us
|
||||
* to deal with which ENGINE it comes from. */
|
||||
const DH_METHOD *mtmp;
|
||||
mtmp = dh->meth;
|
||||
if (mtmp->finish) mtmp->finish(dh);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (dh->engine)
|
||||
{
|
||||
ENGINE_finish(dh->engine);
|
||||
dh->engine = NULL;
|
||||
}
|
||||
#endif
|
||||
dh->meth = meth;
|
||||
if (meth->init) meth->init(dh);
|
||||
return 1;
|
||||
}
|
||||
|
||||
DH *DH_new(void)
|
||||
{
|
||||
return DH_new_method(NULL);
|
||||
}
|
||||
|
||||
DH *DH_new_method(ENGINE *engine)
|
||||
{
|
||||
DH *ret;
|
||||
|
||||
ret=(DH *)OPENSSL_malloc(sizeof(DH));
|
||||
if (ret == NULL)
|
||||
{
|
||||
DHerr(DH_F_DH_NEW_METHOD,ERR_R_MALLOC_FAILURE);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
ret->meth = DH_get_default_method();
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (engine)
|
||||
{
|
||||
if (!ENGINE_init(engine))
|
||||
{
|
||||
DHerr(DH_F_DH_NEW_METHOD, ERR_R_ENGINE_LIB);
|
||||
OPENSSL_free(ret);
|
||||
return NULL;
|
||||
}
|
||||
ret->engine = engine;
|
||||
}
|
||||
else
|
||||
ret->engine = ENGINE_get_default_DH();
|
||||
if(ret->engine)
|
||||
{
|
||||
ret->meth = ENGINE_get_DH(ret->engine);
|
||||
if(!ret->meth)
|
||||
{
|
||||
DHerr(DH_F_DH_NEW_METHOD,ERR_R_ENGINE_LIB);
|
||||
ENGINE_finish(ret->engine);
|
||||
OPENSSL_free(ret);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ret->pad=0;
|
||||
ret->version=0;
|
||||
ret->p=NULL;
|
||||
ret->g=NULL;
|
||||
ret->length=0;
|
||||
ret->pub_key=NULL;
|
||||
ret->priv_key=NULL;
|
||||
ret->q=NULL;
|
||||
ret->j=NULL;
|
||||
ret->seed = NULL;
|
||||
ret->seedlen = 0;
|
||||
ret->counter = NULL;
|
||||
ret->method_mont_p=NULL;
|
||||
ret->references = 1;
|
||||
ret->flags=ret->meth->flags;
|
||||
CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data);
|
||||
if ((ret->meth->init != NULL) && !ret->meth->init(ret))
|
||||
{
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (ret->engine)
|
||||
ENGINE_finish(ret->engine);
|
||||
#endif
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data);
|
||||
OPENSSL_free(ret);
|
||||
ret=NULL;
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void DH_free(DH *r)
|
||||
{
|
||||
int i;
|
||||
if(r == NULL) return;
|
||||
i = CRYPTO_add(&r->references, -1, CRYPTO_LOCK_DH);
|
||||
#ifdef REF_PRINT
|
||||
REF_PRINT("DH",r);
|
||||
#endif
|
||||
if (i > 0) return;
|
||||
#ifdef REF_CHECK
|
||||
if (i < 0)
|
||||
{
|
||||
fprintf(stderr,"DH_free, bad reference count\n");
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (r->meth->finish)
|
||||
r->meth->finish(r);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (r->engine)
|
||||
ENGINE_finish(r->engine);
|
||||
#endif
|
||||
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, r, &r->ex_data);
|
||||
|
||||
if (r->p != NULL) BN_clear_free(r->p);
|
||||
if (r->g != NULL) BN_clear_free(r->g);
|
||||
if (r->q != NULL) BN_clear_free(r->q);
|
||||
if (r->j != NULL) BN_clear_free(r->j);
|
||||
if (r->seed) OPENSSL_free(r->seed);
|
||||
if (r->counter != NULL) BN_clear_free(r->counter);
|
||||
if (r->pub_key != NULL) BN_clear_free(r->pub_key);
|
||||
if (r->priv_key != NULL) BN_clear_free(r->priv_key);
|
||||
OPENSSL_free(r);
|
||||
}
|
||||
|
||||
int DH_up_ref(DH *r)
|
||||
{
|
||||
int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DH);
|
||||
#ifdef REF_PRINT
|
||||
REF_PRINT("DH",r);
|
||||
#endif
|
||||
#ifdef REF_CHECK
|
||||
if (i < 2)
|
||||
{
|
||||
fprintf(stderr, "DH_up, bad reference count\n");
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
return ((i > 1) ? 1 : 0);
|
||||
}
|
||||
|
||||
int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
|
||||
CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
|
||||
{
|
||||
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, argl, argp,
|
||||
new_func, dup_func, free_func);
|
||||
}
|
||||
|
||||
int DH_set_ex_data(DH *d, int idx, void *arg)
|
||||
{
|
||||
return(CRYPTO_set_ex_data(&d->ex_data,idx,arg));
|
||||
}
|
||||
|
||||
void *DH_get_ex_data(DH *d, int idx)
|
||||
{
|
||||
return(CRYPTO_get_ex_data(&d->ex_data,idx));
|
||||
}
|
||||
|
||||
int DH_size(const DH *dh)
|
||||
{
|
||||
return(BN_num_bytes(dh->p));
|
||||
}
|
@@ -18,9 +18,9 @@ APPS=
|
||||
|
||||
LIB=$(TOP)/libcrypto.a
|
||||
LIBSRC= dsa_gen.c dsa_key.c dsa_lib.c dsa_asn1.c dsa_vrf.c dsa_sign.c \
|
||||
dsa_err.c dsa_ossl.c dsa_depr.c dsa_utl.c
|
||||
dsa_err.c dsa_ossl.c dsa_depr.c
|
||||
LIBOBJ= dsa_gen.o dsa_key.o dsa_lib.o dsa_asn1.o dsa_vrf.o dsa_sign.o \
|
||||
dsa_err.o dsa_ossl.o dsa_depr.o dsa_utl.o
|
||||
dsa_err.o dsa_ossl.o dsa_depr.o
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
@@ -35,7 +35,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
@@ -80,8 +80,8 @@ dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
|
||||
dsa_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
dsa_asn1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
dsa_asn1.o: ../../include/openssl/err.h ../../include/openssl/fips.h
|
||||
dsa_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
dsa_asn1.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
dsa_asn1.o: ../../include/openssl/opensslconf.h
|
||||
dsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
dsa_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
dsa_asn1.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_asn1.c
|
||||
@@ -90,9 +90,8 @@ dsa_depr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
dsa_depr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
dsa_depr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
dsa_depr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
dsa_depr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
dsa_depr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
dsa_depr.o: ../../include/openssl/opensslconf.h
|
||||
dsa_depr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
dsa_depr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
dsa_depr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
dsa_depr.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
|
||||
dsa_depr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
@@ -109,13 +108,12 @@ dsa_gen.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
dsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
|
||||
dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
dsa_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
|
||||
dsa_gen.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
|
||||
dsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
|
||||
dsa_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
dsa_gen.o: ../cryptlib.h dsa_gen.c
|
||||
dsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
|
||||
dsa_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
|
||||
dsa_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
dsa_gen.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
|
||||
dsa_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
|
||||
dsa_gen.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_gen.c
|
||||
dsa_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
dsa_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
@@ -148,29 +146,19 @@ dsa_sign.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
dsa_sign.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
dsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
|
||||
dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/fips.h
|
||||
dsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
dsa_sign.o: ../../include/openssl/opensslconf.h
|
||||
dsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
dsa_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
|
||||
dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
dsa_sign.o: ../cryptlib.h dsa_sign.c
|
||||
dsa_utl.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
dsa_utl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
|
||||
dsa_utl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
dsa_utl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
|
||||
dsa_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
|
||||
dsa_utl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
|
||||
dsa_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
dsa_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
|
||||
dsa_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
dsa_utl.o: ../cryptlib.h dsa_utl.c
|
||||
dsa_vrf.o: ../../e_os.h ../../include/openssl/asn1.h
|
||||
dsa_vrf.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
|
||||
dsa_vrf.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
|
||||
dsa_vrf.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
|
||||
dsa_vrf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
dsa_vrf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
|
||||
dsa_vrf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
|
||||
dsa_vrf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
|
||||
dsa_vrf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
|
||||
dsa_vrf.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_vrf.c
|
||||
dsa_vrf.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
|
||||
dsa_vrf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
|
||||
dsa_vrf.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
|
||||
dsa_vrf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
dsa_vrf.o: ../cryptlib.h dsa_vrf.c
|
||||
|
@@ -88,8 +88,6 @@
|
||||
# define OPENSSL_DSA_MAX_MODULUS_BITS 10000
|
||||
#endif
|
||||
|
||||
#define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024
|
||||
|
||||
#define DSA_FLAG_CACHE_MONT_P 0x01
|
||||
#define DSA_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DSA
|
||||
* implementation now uses constant time
|
||||
@@ -99,25 +97,6 @@
|
||||
* be used for all exponents.
|
||||
*/
|
||||
|
||||
/* If this flag is set the DSA method is FIPS compliant and can be used
|
||||
* in FIPS mode. This is set in the validated module method. If an
|
||||
* application sets this flag in its own methods it is its reposibility
|
||||
* to ensure the result is compliant.
|
||||
*/
|
||||
|
||||
#define DSA_FLAG_FIPS_METHOD 0x0400
|
||||
|
||||
/* If this flag is set the operations normally disabled in FIPS mode are
|
||||
* permitted it is then the applications responsibility to ensure that the
|
||||
* usage is compliant.
|
||||
*/
|
||||
|
||||
#define DSA_FLAG_NON_FIPS_ALLOW 0x0400
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
#define FIPS_DSA_SIZE_T int
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -210,11 +189,6 @@ void DSA_set_default_method(const DSA_METHOD *);
|
||||
const DSA_METHOD *DSA_get_default_method(void);
|
||||
int DSA_set_method(DSA *dsa, const DSA_METHOD *);
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
DSA * FIPS_dsa_new(void);
|
||||
void FIPS_dsa_free (DSA *r);
|
||||
#endif
|
||||
|
||||
DSA * DSA_new(void);
|
||||
DSA * DSA_new_method(ENGINE *engine);
|
||||
void DSA_free (DSA *r);
|
||||
@@ -275,11 +249,6 @@ int DSA_print_fp(FILE *bp, const DSA *x, int off);
|
||||
DH *DSA_dup_DH(const DSA *r);
|
||||
#endif
|
||||
|
||||
#ifdef OPENSSL_FIPS
|
||||
int FIPS_dsa_sig_encode(unsigned char *out, DSA_SIG *sig);
|
||||
int FIPS_dsa_sig_decode(DSA_SIG *sig, const unsigned char *in, int inlen);
|
||||
#endif
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
/* The following lines are auto generated by the script mkerr.pl. Any changes
|
||||
* made after this point may be overwritten when the script is next run.
|
||||
@@ -292,16 +261,11 @@ void ERR_load_DSA_strings(void);
|
||||
#define DSA_F_D2I_DSA_SIG 110
|
||||
#define DSA_F_DSAPARAMS_PRINT 100
|
||||
#define DSA_F_DSAPARAMS_PRINT_FP 101
|
||||
#define DSA_F_DSA_BUILTIN_KEYGEN 119
|
||||
#define DSA_F_DSA_BUILTIN_PARAMGEN 118
|
||||
#define DSA_F_DSA_DO_SIGN 112
|
||||
#define DSA_F_DSA_DO_VERIFY 113
|
||||
#define DSA_F_DSA_GENERATE_PARAMETERS 117
|
||||
#define DSA_F_DSA_NEW_METHOD 103
|
||||
#define DSA_F_DSA_PRINT 104
|
||||
#define DSA_F_DSA_PRINT_FP 105
|
||||
#define DSA_F_DSA_SET_DEFAULT_METHOD 115
|
||||
#define DSA_F_DSA_SET_METHOD 116
|
||||
#define DSA_F_DSA_SIGN 106
|
||||
#define DSA_F_DSA_SIGN_SETUP 107
|
||||
#define DSA_F_DSA_SIG_NEW 109
|
||||
@@ -312,11 +276,8 @@ void ERR_load_DSA_strings(void);
|
||||
/* Reason codes. */
|
||||
#define DSA_R_BAD_Q_VALUE 102
|
||||
#define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100
|
||||
#define DSA_R_KEY_SIZE_TOO_SMALL 106
|
||||
#define DSA_R_MISSING_PARAMETERS 101
|
||||
#define DSA_R_MODULUS_TOO_LARGE 103
|
||||
#define DSA_R_NON_FIPS_METHOD 104
|
||||
#define DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE 105
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -61,7 +61,6 @@
|
||||
#include <openssl/dsa.h>
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/asn1t.h>
|
||||
#include <openssl/fips.h>
|
||||
|
||||
/* Override the default new methods */
|
||||
static int sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
|
||||
@@ -84,7 +83,7 @@ ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = {
|
||||
ASN1_SIMPLE(DSA_SIG, s, CBIGNUM)
|
||||
} ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG)
|
||||
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA_SIG,DSA_SIG,DSA_SIG)
|
||||
IMPLEMENT_ASN1_FUNCTIONS_const(DSA_SIG)
|
||||
|
||||
/* Override the default free and new methods */
|
||||
static int dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
|
||||
@@ -139,76 +138,3 @@ ASN1_CHOICE_cb(DSAPublicKey, dsa_cb) = {
|
||||
} ASN1_CHOICE_END_cb(DSA, DSAPublicKey, write_params)
|
||||
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA, DSAPublicKey, DSAPublicKey)
|
||||
|
||||
int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig,
|
||||
unsigned int *siglen, DSA *dsa)
|
||||
{
|
||||
DSA_SIG *s;
|
||||
#ifdef OPENSSL_FIPS
|
||||
if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_SIGN, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
s=DSA_do_sign(dgst,dlen,dsa);
|
||||
if (s == NULL)
|
||||
{
|
||||
*siglen=0;
|
||||
return(0);
|
||||
}
|
||||
*siglen=i2d_DSA_SIG(s,&sig);
|
||||
DSA_SIG_free(s);
|
||||
return(1);
|
||||
}
|
||||
|
||||
int DSA_size(const DSA *r)
|
||||
{
|
||||
int ret,i;
|
||||
ASN1_INTEGER bs;
|
||||
unsigned char buf[4]; /* 4 bytes looks really small.
|
||||
However, i2d_ASN1_INTEGER() will not look
|
||||
beyond the first byte, as long as the second
|
||||
parameter is NULL. */
|
||||
|
||||
i=BN_num_bits(r->q);
|
||||
bs.length=(i+7)/8;
|
||||
bs.data=buf;
|
||||
bs.type=V_ASN1_INTEGER;
|
||||
/* If the top bit is set the asn1 encoding is 1 larger. */
|
||||
buf[0]=0xff;
|
||||
|
||||
i=i2d_ASN1_INTEGER(&bs,NULL);
|
||||
i+=i; /* r and s */
|
||||
ret=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/* data has already been hashed (probably with SHA or SHA-1). */
|
||||
/* returns
|
||||
* 1: correct signature
|
||||
* 0: incorrect signature
|
||||
* -1: error
|
||||
*/
|
||||
int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
|
||||
const unsigned char *sigbuf, int siglen, DSA *dsa)
|
||||
{
|
||||
DSA_SIG *s;
|
||||
int ret=-1;
|
||||
#ifdef OPENSSL_FIPS
|
||||
if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_VERIFY, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
s = DSA_SIG_new();
|
||||
if (s == NULL) return(ret);
|
||||
if (d2i_DSA_SIG(&s,&sigbuf,siglen) == NULL) goto err;
|
||||
ret=DSA_do_verify(dgst,dgst_len,s,dsa);
|
||||
err:
|
||||
DSA_SIG_free(s);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/* crypto/dsa/dsa_err.c */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1999-2005 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
|
||||
@@ -73,16 +73,11 @@ static ERR_STRING_DATA DSA_str_functs[]=
|
||||
{ERR_FUNC(DSA_F_D2I_DSA_SIG), "d2i_DSA_SIG"},
|
||||
{ERR_FUNC(DSA_F_DSAPARAMS_PRINT), "DSAparams_print"},
|
||||
{ERR_FUNC(DSA_F_DSAPARAMS_PRINT_FP), "DSAparams_print_fp"},
|
||||
{ERR_FUNC(DSA_F_DSA_BUILTIN_KEYGEN), "DSA_BUILTIN_KEYGEN"},
|
||||
{ERR_FUNC(DSA_F_DSA_BUILTIN_PARAMGEN), "DSA_BUILTIN_PARAMGEN"},
|
||||
{ERR_FUNC(DSA_F_DSA_DO_SIGN), "DSA_do_sign"},
|
||||
{ERR_FUNC(DSA_F_DSA_DO_VERIFY), "DSA_do_verify"},
|
||||
{ERR_FUNC(DSA_F_DSA_GENERATE_PARAMETERS), "DSA_generate_parameters"},
|
||||
{ERR_FUNC(DSA_F_DSA_NEW_METHOD), "DSA_new_method"},
|
||||
{ERR_FUNC(DSA_F_DSA_PRINT), "DSA_print"},
|
||||
{ERR_FUNC(DSA_F_DSA_PRINT_FP), "DSA_print_fp"},
|
||||
{ERR_FUNC(DSA_F_DSA_SET_DEFAULT_METHOD), "DSA_set_default_method"},
|
||||
{ERR_FUNC(DSA_F_DSA_SET_METHOD), "DSA_set_method"},
|
||||
{ERR_FUNC(DSA_F_DSA_SIGN), "DSA_sign"},
|
||||
{ERR_FUNC(DSA_F_DSA_SIGN_SETUP), "DSA_sign_setup"},
|
||||
{ERR_FUNC(DSA_F_DSA_SIG_NEW), "DSA_SIG_new"},
|
||||
@@ -96,11 +91,8 @@ static ERR_STRING_DATA DSA_str_reasons[]=
|
||||
{
|
||||
{ERR_REASON(DSA_R_BAD_Q_VALUE) ,"bad q value"},
|
||||
{ERR_REASON(DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE),"data too large for key size"},
|
||||
{ERR_REASON(DSA_R_KEY_SIZE_TOO_SMALL) ,"key size too small"},
|
||||
{ERR_REASON(DSA_R_MISSING_PARAMETERS) ,"missing parameters"},
|
||||
{ERR_REASON(DSA_R_MODULUS_TOO_LARGE) ,"modulus too large"},
|
||||
{ERR_REASON(DSA_R_NON_FIPS_METHOD) ,"non fips method"},
|
||||
{ERR_REASON(DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE),"operation not allowed in fips mode"},
|
||||
{0,NULL}
|
||||
};
|
||||
|
||||
|
@@ -82,8 +82,6 @@
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/sha.h>
|
||||
|
||||
#ifndef OPENSSL_FIPS
|
||||
|
||||
static int dsa_builtin_paramgen(DSA *ret, int bits,
|
||||
unsigned char *seed_in, int seed_len,
|
||||
int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
|
||||
@@ -322,4 +320,3 @@ err:
|
||||
return ok;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -64,8 +64,6 @@
|
||||
#include <openssl/dsa.h>
|
||||
#include <openssl/rand.h>
|
||||
|
||||
#ifndef OPENSSL_FIPS
|
||||
|
||||
static int dsa_builtin_keygen(DSA *dsa);
|
||||
|
||||
int DSA_generate_key(DSA *dsa)
|
||||
@@ -128,5 +126,3 @@ err:
|
||||
return(ok);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -76,14 +76,6 @@ static const DSA_METHOD *default_DSA_method = NULL;
|
||||
|
||||
void DSA_set_default_method(const DSA_METHOD *meth)
|
||||
{
|
||||
#ifdef OPENSSL_FIPS
|
||||
if (FIPS_mode() && !(meth->flags & DSA_FLAG_FIPS_METHOD))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_SET_DEFAULT_METHOD, DSA_R_NON_FIPS_METHOD);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
default_DSA_method = meth;
|
||||
}
|
||||
|
||||
@@ -104,13 +96,6 @@ int DSA_set_method(DSA *dsa, const DSA_METHOD *meth)
|
||||
/* NB: The caller is specifically setting a method, so it's not up to us
|
||||
* to deal with which ENGINE it comes from. */
|
||||
const DSA_METHOD *mtmp;
|
||||
#ifdef OPENSSL_FIPS
|
||||
if (FIPS_mode() && !(meth->flags & DSA_FLAG_FIPS_METHOD))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_SET_METHOD, DSA_R_NON_FIPS_METHOD);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
mtmp = dsa->meth;
|
||||
if (mtmp->finish) mtmp->finish(dsa);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
@@ -162,18 +147,6 @@ DSA *DSA_new_method(ENGINE *engine)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef OPENSSL_FIPS
|
||||
if (FIPS_mode() && !(ret->meth->flags & DSA_FLAG_FIPS_METHOD))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_NEW_METHOD, DSA_R_NON_FIPS_METHOD);
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
if (ret->engine)
|
||||
ENGINE_finish(ret->engine);
|
||||
#endif
|
||||
OPENSSL_free(ret);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
ret->pad=0;
|
||||
ret->version=0;
|
||||
@@ -260,6 +233,28 @@ int DSA_up_ref(DSA *r)
|
||||
return ((i > 1) ? 1 : 0);
|
||||
}
|
||||
|
||||
int DSA_size(const DSA *r)
|
||||
{
|
||||
int ret,i;
|
||||
ASN1_INTEGER bs;
|
||||
unsigned char buf[4]; /* 4 bytes looks really small.
|
||||
However, i2d_ASN1_INTEGER() will not look
|
||||
beyond the first byte, as long as the second
|
||||
parameter is NULL. */
|
||||
|
||||
i=BN_num_bits(r->q);
|
||||
bs.length=(i+7)/8;
|
||||
bs.data=buf;
|
||||
bs.type=V_ASN1_INTEGER;
|
||||
/* If the top bit is set the asn1 encoding is 1 larger. */
|
||||
buf[0]=0xff;
|
||||
|
||||
i=i2d_ASN1_INTEGER(&bs,NULL);
|
||||
i+=i; /* r and s */
|
||||
ret=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
|
||||
CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
|
||||
{
|
||||
|
@@ -65,8 +65,6 @@
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
#ifndef OPENSSL_FIPS
|
||||
|
||||
static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
|
||||
static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp);
|
||||
static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
|
||||
@@ -393,4 +391,3 @@ static int dsa_finish(DSA *dsa)
|
||||
return(1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -64,29 +64,29 @@
|
||||
#include <openssl/dsa.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/fips.h>
|
||||
|
||||
DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
|
||||
{
|
||||
#ifdef OPENSSL_FIPS
|
||||
if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_DO_SIGN, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
return dsa->meth->dsa_do_sign(dgst, dlen, dsa);
|
||||
}
|
||||
|
||||
int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig,
|
||||
unsigned int *siglen, DSA *dsa)
|
||||
{
|
||||
DSA_SIG *s;
|
||||
s=DSA_do_sign(dgst,dlen,dsa);
|
||||
if (s == NULL)
|
||||
{
|
||||
*siglen=0;
|
||||
return(0);
|
||||
}
|
||||
*siglen=i2d_DSA_SIG(s,&sig);
|
||||
DSA_SIG_free(s);
|
||||
return(1);
|
||||
}
|
||||
|
||||
int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
|
||||
{
|
||||
#ifdef OPENSSL_FIPS
|
||||
if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp);
|
||||
}
|
||||
|
||||
|
@@ -1,95 +0,0 @@
|
||||
/* crypto/dsa/dsa_lib.c */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/dsa.h>
|
||||
#include <openssl/asn1.h>
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DH
|
||||
#include <openssl/dh.h>
|
||||
#endif
|
||||
|
||||
DSA_SIG *DSA_SIG_new(void)
|
||||
{
|
||||
DSA_SIG *sig;
|
||||
sig = OPENSSL_malloc(sizeof(DSA_SIG));
|
||||
if (!sig)
|
||||
return NULL;
|
||||
sig->r = NULL;
|
||||
sig->s = NULL;
|
||||
return sig;
|
||||
}
|
||||
|
||||
void DSA_SIG_free(DSA_SIG *sig)
|
||||
{
|
||||
if (sig)
|
||||
{
|
||||
if (sig->r)
|
||||
BN_free(sig->r);
|
||||
if (sig->s)
|
||||
BN_free(sig->s);
|
||||
OPENSSL_free(sig);
|
||||
}
|
||||
}
|
||||
|
@@ -64,18 +64,31 @@
|
||||
#include <openssl/dsa.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/fips.h>
|
||||
#include <openssl/asn1_mac.h>
|
||||
|
||||
int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
|
||||
DSA *dsa)
|
||||
{
|
||||
#ifdef OPENSSL_FIPS
|
||||
if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||
{
|
||||
DSAerr(DSA_F_DSA_DO_VERIFY, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
return dsa->meth->dsa_do_verify(dgst, dgst_len, sig, dsa);
|
||||
}
|
||||
|
||||
/* data has already been hashed (probably with SHA or SHA-1). */
|
||||
/* returns
|
||||
* 1: correct signature
|
||||
* 0: incorrect signature
|
||||
* -1: error
|
||||
*/
|
||||
int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
|
||||
const unsigned char *sigbuf, int siglen, DSA *dsa)
|
||||
{
|
||||
DSA_SIG *s;
|
||||
int ret=-1;
|
||||
|
||||
s = DSA_SIG_new();
|
||||
if (s == NULL) return(ret);
|
||||
if (d2i_DSA_SIG(&s,&sigbuf,siglen) == NULL) goto err;
|
||||
ret=DSA_do_verify(dgst,dgst_len,s,dsa);
|
||||
err:
|
||||
DSA_SIG_free(s);
|
||||
return(ret);
|
||||
}
|
||||
|
@@ -35,7 +35,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
422
crypto/dyn_lck.c
422
crypto/dyn_lck.c
@@ -1,422 +0,0 @@
|
||||
/* crypto/cryptlib.c */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* openssl-core@openssl.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
|
||||
* ECDH support in OpenSSL originally developed by
|
||||
* SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
|
||||
*/
|
||||
|
||||
#include "cryptlib.h"
|
||||
#include <openssl/safestack.h>
|
||||
|
||||
#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
|
||||
static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */
|
||||
#endif
|
||||
|
||||
DECLARE_STACK_OF(CRYPTO_dynlock)
|
||||
IMPLEMENT_STACK_OF(CRYPTO_dynlock)
|
||||
|
||||
/* real #defines in crypto.h, keep these upto date */
|
||||
static const char* const lock_names[CRYPTO_NUM_LOCKS] =
|
||||
{
|
||||
"<<ERROR>>",
|
||||
"err",
|
||||
"ex_data",
|
||||
"x509",
|
||||
"x509_info",
|
||||
"x509_pkey",
|
||||
"x509_crl",
|
||||
"x509_req",
|
||||
"dsa",
|
||||
"rsa",
|
||||
"evp_pkey",
|
||||
"x509_store",
|
||||
"ssl_ctx",
|
||||
"ssl_cert",
|
||||
"ssl_session",
|
||||
"ssl_sess_cert",
|
||||
"ssl",
|
||||
"ssl_method",
|
||||
"rand",
|
||||
"rand2",
|
||||
"debug_malloc",
|
||||
"BIO",
|
||||
"gethostbyname",
|
||||
"getservbyname",
|
||||
"readdir",
|
||||
"RSA_blinding",
|
||||
"dh",
|
||||
"debug_malloc2",
|
||||
"dso",
|
||||
"dynlock",
|
||||
"engine",
|
||||
"ui",
|
||||
"ecdsa",
|
||||
"ec",
|
||||
"ecdh",
|
||||
"bn",
|
||||
"ec_pre_comp",
|
||||
"store",
|
||||
"comp",
|
||||
"fips",
|
||||
"fips2",
|
||||
#if CRYPTO_NUM_LOCKS != 41
|
||||
# error "Inconsistency between crypto.h and cryptlib.c"
|
||||
#endif
|
||||
};
|
||||
|
||||
/* This is for applications to allocate new type names in the non-dynamic
|
||||
array of lock names. These are numbered with positive numbers. */
|
||||
static STACK *app_locks=NULL;
|
||||
|
||||
/* For applications that want a more dynamic way of handling threads, the
|
||||
following stack is used. These are externally numbered with negative
|
||||
numbers. */
|
||||
static STACK_OF(CRYPTO_dynlock) *dyn_locks=NULL;
|
||||
|
||||
|
||||
static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback)
|
||||
(const char *file,int line)=NULL;
|
||||
static void (MS_FAR *dynlock_lock_callback)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file,int line)=NULL;
|
||||
static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l,
|
||||
const char *file,int line)=NULL;
|
||||
|
||||
int CRYPTO_get_new_lockid(char *name)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
|
||||
/* A hack to make Visual C++ 5.0 work correctly when linking as
|
||||
* a DLL using /MT. Without this, the application cannot use
|
||||
* and floating point printf's.
|
||||
* It also seems to be needed for Visual C 1.5 (win16) */
|
||||
SSLeay_MSVC5_hack=(double)name[0]*(double)name[1];
|
||||
#endif
|
||||
|
||||
if ((app_locks == NULL) && ((app_locks=sk_new_null()) == NULL))
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
if ((str=BUF_strdup(name)) == NULL)
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
i=sk_push(app_locks,str);
|
||||
if (!i)
|
||||
OPENSSL_free(str);
|
||||
else
|
||||
i+=CRYPTO_NUM_LOCKS; /* gap of one :-) */
|
||||
return(i);
|
||||
}
|
||||
|
||||
int CRYPTO_get_new_dynlockid(void)
|
||||
{
|
||||
int i = 0;
|
||||
CRYPTO_dynlock *pointer = NULL;
|
||||
|
||||
if (dynlock_create_callback == NULL)
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK);
|
||||
return(0);
|
||||
}
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
if ((dyn_locks == NULL)
|
||||
&& ((dyn_locks=sk_CRYPTO_dynlock_new_null()) == NULL))
|
||||
{
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
pointer = (CRYPTO_dynlock *)OPENSSL_malloc(sizeof(CRYPTO_dynlock));
|
||||
if (pointer == NULL)
|
||||
{
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
pointer->references = 1;
|
||||
pointer->data = dynlock_create_callback(__FILE__,__LINE__);
|
||||
if (pointer->data == NULL)
|
||||
{
|
||||
OPENSSL_free(pointer);
|
||||
CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
|
||||
return(0);
|
||||
}
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
/* First, try to find an existing empty slot */
|
||||
i=sk_CRYPTO_dynlock_find(dyn_locks,NULL);
|
||||
/* If there was none, push, thereby creating a new one */
|
||||
if (i == -1)
|
||||
/* Since sk_push() returns the number of items on the
|
||||
stack, not the location of the pushed item, we need
|
||||
to transform the returned number into a position,
|
||||
by decreasing it. */
|
||||
i=sk_CRYPTO_dynlock_push(dyn_locks,pointer) - 1;
|
||||
else
|
||||
/* If we found a place with a NULL pointer, put our pointer
|
||||
in it. */
|
||||
sk_CRYPTO_dynlock_set(dyn_locks,i,pointer);
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (i == -1)
|
||||
{
|
||||
dynlock_destroy_callback(pointer->data,__FILE__,__LINE__);
|
||||
OPENSSL_free(pointer);
|
||||
}
|
||||
else
|
||||
i += 1; /* to avoid 0 */
|
||||
return -i;
|
||||
}
|
||||
|
||||
void CRYPTO_destroy_dynlockid(int i)
|
||||
{
|
||||
CRYPTO_dynlock *pointer = NULL;
|
||||
if (i)
|
||||
i = -i-1;
|
||||
if (dynlock_destroy_callback == NULL)
|
||||
return;
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (dyn_locks == NULL || i >= sk_CRYPTO_dynlock_num(dyn_locks))
|
||||
{
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
return;
|
||||
}
|
||||
pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
|
||||
if (pointer != NULL)
|
||||
{
|
||||
--pointer->references;
|
||||
#ifdef REF_CHECK
|
||||
if (pointer->references < 0)
|
||||
{
|
||||
fprintf(stderr,"CRYPTO_destroy_dynlockid, bad reference count\n");
|
||||
abort();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (pointer->references <= 0)
|
||||
{
|
||||
sk_CRYPTO_dynlock_set(dyn_locks, i, NULL);
|
||||
}
|
||||
else
|
||||
pointer = NULL;
|
||||
}
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (pointer)
|
||||
{
|
||||
dynlock_destroy_callback(pointer->data,__FILE__,__LINE__);
|
||||
OPENSSL_free(pointer);
|
||||
}
|
||||
}
|
||||
|
||||
struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i)
|
||||
{
|
||||
CRYPTO_dynlock *pointer = NULL;
|
||||
if (i)
|
||||
i = -i-1;
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (dyn_locks != NULL && i < sk_CRYPTO_dynlock_num(dyn_locks))
|
||||
pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
|
||||
if (pointer)
|
||||
pointer->references++;
|
||||
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (pointer)
|
||||
return pointer->data;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void))
|
||||
(const char *file,int line)
|
||||
{
|
||||
return(dynlock_create_callback);
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_dynlock_lock_callback(void))(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file,int line)
|
||||
{
|
||||
return(dynlock_lock_callback);
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_dynlock_destroy_callback(void))
|
||||
(struct CRYPTO_dynlock_value *l, const char *file,int line)
|
||||
{
|
||||
return(dynlock_destroy_callback);
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*func)
|
||||
(const char *file, int line))
|
||||
{
|
||||
dynlock_create_callback=func;
|
||||
}
|
||||
|
||||
static void do_dynlock(int mode, int type, const char *file, int line)
|
||||
{
|
||||
if (dynlock_lock_callback != NULL)
|
||||
{
|
||||
struct CRYPTO_dynlock_value *pointer
|
||||
= CRYPTO_get_dynlock_value(type);
|
||||
|
||||
OPENSSL_assert(pointer != NULL);
|
||||
|
||||
dynlock_lock_callback(mode, pointer, file, line);
|
||||
|
||||
CRYPTO_destroy_dynlockid(type);
|
||||
}
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_lock_callback(void (*func)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
/* Set callback so CRYPTO_lock() can now handle dynamic locks.
|
||||
* This is OK because at this point and application shouldn't be using
|
||||
* OpenSSL from multiple threads because it is setting up the locking
|
||||
* callbacks.
|
||||
*/
|
||||
static int done = 0;
|
||||
if (!done)
|
||||
{
|
||||
int_CRYPTO_set_do_dynlock_callback(do_dynlock);
|
||||
done = 1;
|
||||
}
|
||||
|
||||
dynlock_lock_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_destroy_callback(void (*func)
|
||||
(struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
dynlock_destroy_callback=func;
|
||||
}
|
||||
|
||||
const char *CRYPTO_get_lock_name(int type)
|
||||
{
|
||||
if (type < 0)
|
||||
return("dynamic");
|
||||
else if (type < CRYPTO_NUM_LOCKS)
|
||||
return(lock_names[type]);
|
||||
else if (type-CRYPTO_NUM_LOCKS > sk_num(app_locks))
|
||||
return("ERROR");
|
||||
else
|
||||
return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS));
|
||||
}
|
||||
|
@@ -38,7 +38,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
@@ -471,6 +471,7 @@ void ERR_load_EC_strings(void);
|
||||
#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126
|
||||
#define EC_F_EC_POINT_SET_TO_INFINITY 127
|
||||
#define EC_F_EC_PRE_COMP_DUP 207
|
||||
#define EC_F_EC_PRE_COMP_NEW 196
|
||||
#define EC_F_EC_WNAF_MUL 187
|
||||
#define EC_F_EC_WNAF_PRECOMPUTE_MULT 188
|
||||
#define EC_F_I2D_ECPARAMETERS 190
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/* crypto/ec/ec_err.c */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1999-2007 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
|
||||
@@ -170,6 +170,7 @@ static ERR_STRING_DATA EC_str_functs[]=
|
||||
{ERR_FUNC(EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP), "EC_POINT_set_Jprojective_coordinates_GFp"},
|
||||
{ERR_FUNC(EC_F_EC_POINT_SET_TO_INFINITY), "EC_POINT_set_to_infinity"},
|
||||
{ERR_FUNC(EC_F_EC_PRE_COMP_DUP), "EC_PRE_COMP_DUP"},
|
||||
{ERR_FUNC(EC_F_EC_PRE_COMP_NEW), "EC_PRE_COMP_NEW"},
|
||||
{ERR_FUNC(EC_F_EC_WNAF_MUL), "ec_wNAF_mul"},
|
||||
{ERR_FUNC(EC_F_EC_WNAF_PRECOMPUTE_MULT), "ec_wNAF_precompute_mult"},
|
||||
{ERR_FUNC(EC_F_I2D_ECPARAMETERS), "i2d_ECParameters"},
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project.
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1998-2007 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
|
||||
@@ -104,7 +104,10 @@ static EC_PRE_COMP *ec_pre_comp_new(const EC_GROUP *group)
|
||||
|
||||
ret = (EC_PRE_COMP *)OPENSSL_malloc(sizeof(EC_PRE_COMP));
|
||||
if (!ret)
|
||||
{
|
||||
ECerr(EC_F_EC_PRE_COMP_NEW, ERR_R_MALLOC_FAILURE);
|
||||
return ret;
|
||||
}
|
||||
ret->group = group;
|
||||
ret->blocksize = 8; /* default */
|
||||
ret->numblocks = 0;
|
||||
@@ -194,6 +197,19 @@ static signed char *compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len)
|
||||
int bit, next_bit, mask;
|
||||
size_t len = 0, j;
|
||||
|
||||
if (BN_is_zero(scalar))
|
||||
{
|
||||
r = OPENSSL_malloc(1);
|
||||
if (!r)
|
||||
{
|
||||
ECerr(EC_F_COMPUTE_WNAF, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
r[0] = 0;
|
||||
*ret_len = 1;
|
||||
return r;
|
||||
}
|
||||
|
||||
if (w <= 0 || w > 7) /* 'signed char' can represent integers with absolute values less than 2^7 */
|
||||
{
|
||||
ECerr(EC_F_COMPUTE_WNAF, ERR_R_INTERNAL_ERROR);
|
||||
@@ -212,7 +228,11 @@ static signed char *compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len)
|
||||
r = OPENSSL_malloc(len + 1); /* modified wNAF may be one digit longer than binary representation
|
||||
* (*ret_len will be set to the actual length, i.e. at most
|
||||
* BN_num_bits(scalar) + 1) */
|
||||
if (r == NULL) goto err;
|
||||
if (r == NULL)
|
||||
{
|
||||
ECerr(EC_F_COMPUTE_WNAF, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (scalar->d == NULL || scalar->top == 0)
|
||||
{
|
||||
@@ -425,7 +445,10 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
val_sub = OPENSSL_malloc(totalnum * sizeof val_sub[0]);
|
||||
|
||||
if (!wsize || !wNAF_len || !wNAF || !val_sub)
|
||||
{
|
||||
ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
wNAF[0] = NULL; /* preliminary pivot */
|
||||
|
||||
@@ -538,6 +561,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
wNAF[i] = OPENSSL_malloc(wNAF_len[i]);
|
||||
if (wNAF[i] == NULL)
|
||||
{
|
||||
ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE);
|
||||
OPENSSL_free(tmp_wNAF);
|
||||
goto err;
|
||||
}
|
||||
@@ -564,7 +588,11 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
* 'val_sub[i]' is a pointer to the subarray for the i-th point,
|
||||
* or to a subarray of 'pre_comp->points' if we already have precomputation. */
|
||||
val = OPENSSL_malloc((num_val + 1) * sizeof val[0]);
|
||||
if (val == NULL) goto err;
|
||||
if (val == NULL)
|
||||
{
|
||||
ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
val[num_val] = NULL; /* pivot element */
|
||||
|
||||
/* allocate points for precomputation */
|
||||
|
@@ -659,13 +659,15 @@ void prime_field_tests()
|
||||
if (!EC_POINT_is_at_infinity(group, R)) ABORT; /* R = P + 2Q */
|
||||
|
||||
{
|
||||
const EC_POINT *points[3];
|
||||
const BIGNUM *scalars[3];
|
||||
const EC_POINT *points[4];
|
||||
const BIGNUM *scalars[4];
|
||||
BIGNUM scalar3;
|
||||
|
||||
if (EC_POINT_is_at_infinity(group, Q)) ABORT;
|
||||
points[0] = Q;
|
||||
points[1] = Q;
|
||||
points[2] = Q;
|
||||
points[3] = Q;
|
||||
|
||||
if (!BN_add(y, z, BN_value_one())) ABORT;
|
||||
if (BN_is_odd(y)) ABORT;
|
||||
@@ -704,10 +706,16 @@ void prime_field_tests()
|
||||
scalars[1] = y;
|
||||
scalars[2] = z; /* z = -(x+y) */
|
||||
|
||||
if (!EC_POINTs_mul(group, P, NULL, 3, points, scalars, ctx)) ABORT;
|
||||
BN_init(&scalar3);
|
||||
BN_zero(&scalar3);
|
||||
scalars[3] = &scalar3;
|
||||
|
||||
if (!EC_POINTs_mul(group, P, NULL, 4, points, scalars, ctx)) ABORT;
|
||||
if (!EC_POINT_is_at_infinity(group, P)) ABORT;
|
||||
|
||||
fprintf(stdout, " ok\n\n");
|
||||
|
||||
BN_free(&scalar3);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -34,7 +34,7 @@ top:
|
||||
all: lib
|
||||
|
||||
lib: $(LIBOBJ)
|
||||
$(ARX) $(LIB) $(LIBOBJ)
|
||||
$(AR) $(LIB) $(LIBOBJ)
|
||||
$(RANLIB) $(LIB) || echo Never mind.
|
||||
@touch lib
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user