提交 a528d4f0 编写于 作者: R Rich Salz 提交者: Rich Salz

Remove SSLeay history, etc., from docs

If something was "present in all versions" of SSLeay, or if it was
added to a version of SSLeay (and therefore predates OpenSSL),
remove mention of it.  Documentation history now starts with OpenSSL.

Remove mention of all history before OpenSSL 0.9.8, inclusive.

Remove all AUTHOR sections.
Reviewed-by: NTim Hudson <tjh@openssl.org>
上级 6f5c0303
......@@ -162,9 +162,7 @@ export encryption algorithms. Including 40 and 56 bits algorithms.
=item B<EXPORT56>
56 bit export encryption algorithms. In OpenSSL 0.9.8c and later the set of
56 bit export ciphers is empty unless OpenSSL has been explicitly configured
with support for experimental ciphers.
56 bit export encryption algorithms. This list is empty.
=item B<eNULL>, B<NULL>
......@@ -726,8 +724,6 @@ L<s_client(1)>, L<s_server(1)>, L<ssl(3)>
=head1 HISTORY
The B<COMPLENTOFALL> and B<COMPLEMENTOFDEFAULT> selection options
for cipherlist strings were added in OpenSSL 0.9.7.
The B<-V> option for the B<ciphers> command was added in OpenSSL 1.0.0.
=cut
......@@ -56,7 +56,7 @@ the sequences B<\n>, B<\r>, B<\b> and B<\t> are recognized.
=head1 OPENSSL LIBRARY CONFIGURATION
In OpenSSL 0.9.7 and later applications can automatically configure certain
Applications can automatically configure certain
aspects of OpenSSL using the master OpenSSL configuration file, or optionally
an alternative configuration file. The B<openssl> utility includes this
functionality: any sub command uses the master OpenSSL configuration file
......@@ -106,7 +106,7 @@ as any compliant applications. For example:
some_new_oid = 1.2.3.4
some_other_oid = 1.2.3.5
In OpenSSL 0.9.8 it is also possible to set the value to the long name followed
It is also possible to set the value to the long name followed
by a comma and the numerical OID form. For example:
shortName = some object long name, 1.2.3.4
......
......@@ -141,9 +141,4 @@ There should be a way to generate and manipulate DH keys.
L<dsaparam(1)>
=head1 HISTORY
The B<dhparam> command was added in OpenSSL 0.9.5.
The B<-dsaparam> option was added in OpenSSL 0.9.6.
=cut
......@@ -179,12 +179,4 @@ To change the point conversion form to B<compressed>:
L<ecparam(1)>, L<dsa(1)>, L<rsa(1)>
=head1 HISTORY
The ec command was first introduced in OpenSSL 0.9.8.
=head1 AUTHOR
Nils Larsch for the OpenSSL project (http://www.openssl.org).
=cut
......@@ -168,12 +168,4 @@ To print out the EC parameters to standard output:
L<ec(1)>, L<dsaparam(1)>
=head1 HISTORY
The ecparam command was first introduced in OpenSSL 0.9.8.
=head1 AUTHOR
Nils Larsch for the OpenSSL project (http://www.openssl.org)
=cut
......@@ -141,7 +141,7 @@ and 2048 bit group with 256 bit subgroup as mentioned in RFC5114 sections
=head1 EC PARAMETER GENERATION OPTIONS
In OpenSSL 1.0.2 and later the EC parameter generation options below can also
The EC parameter generation options below can also
be supplied as EC key generation options. This can (for example) generate a
key from a named curve without the need to use an explicit parameter file.
......@@ -149,8 +149,7 @@ key from a named curve without the need to use an explicit parameter file.
=item B<ec_paramgen_curve:curve>
the EC curve to use. OpenSSL 1.0.2 and later supports NIST curve names
such as "P-256".
the EC curve to use. OpenSSL supports NIST curve names such as "P-256".
=item B<ec_param_enc:encoding>
......@@ -243,11 +242,16 @@ Generate EC key from parameters:
openssl genpkey -paramfile ecp.pem -out eckey.pem
Generate EC key directly (OpenSSL 1.0.2+ only):
Generate EC key directly:
openssl genpkey -algorithm EC -out eckey.pem \
-pkeyopt ec_paramgen_curve:P-384 \
-pkeyopt ec_param_enc:named_curve
=head1 HISTORY
The ability to use NIST curve names, and to generate an EC key directly,
were added in OpenSSL 1.0.2.
=cut
......@@ -412,10 +412,7 @@ L<crypto(3)>, L<ssl(3)>, L<x509v3_config(5)>
=head1 HISTORY
The openssl(1) document appeared in OpenSSL 0.9.2.
The B<list->I<XXX>B<-commands> pseudo-commands were added in OpenSSL 0.9.3;
The B<list->I<XXX>B<-algorithms> pseudo-commands were added in OpenSSL 1.0.0;
the B<no->I<XXX> pseudo-commands were added in OpenSSL 0.9.5a.
For notes on the availability of other commands, see their individual
manual pages.
......
......@@ -348,30 +348,6 @@ Include some extra certificates:
openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate" \
-certfile othercerts.pem
=head1 BUGS
Some would argue that the PKCS#12 standard is one big bug :-)
Versions of OpenSSL before 0.9.6a had a bug in the PKCS#12 key generation
routines. Under rare circumstances this could produce a PKCS#12 file encrypted
with an invalid key. As a result some PKCS#12 files which triggered this bug
from other implementations (MSIE or Netscape) could not be decrypted
by OpenSSL and similarly OpenSSL could produce PKCS#12 files which could
not be decrypted by other implementations. The chances of producing such
a file are relatively small: less than 1 in 256.
A side effect of fixing this bug is that any old invalidly encrypted PKCS#12
files cannot no longer be parsed by the fixed version. Under such circumstances
the B<pkcs12> utility will report that the MAC is OK but fail with a decryption
error when extracting private keys.
This problem can be resolved by extracting the private keys and certificates
from the PKCS#12 file using an older version of OpenSSL and recreating the PKCS#12
file from the keys and certificates using a newer version of OpenSSL. For example:
old-openssl -in bad.p12 -out keycerts.pem
openssl -in keycerts.pem -export -name "My PKCS#12 file" -out fixed.p12
=head1 SEE ALSO
L<pkcs8(1)>
......
......@@ -581,10 +581,6 @@ test/testtsa).
=cut
=head1 AUTHOR
Zoltan Glozik <zglozik@opentsa.org>, OpenTSA project (http://www.opentsa.org)
=head1 SEE ALSO
L<tsget(1)>, L<openssl(1)>, L<req(1)>,
......
......@@ -182,10 +182,6 @@ example:
export TSGET
tsget file1.tsq
=head1 AUTHOR
Zoltan Glozik <zglozik@opentsa.org>, OpenTSA project (http://www.opentsa.org)
=head1 SEE ALSO
L<openssl(1)>, L<ts(1)>, L<curl(1)>,
......
......@@ -283,9 +283,8 @@ certificate. If a certificate is found which is its own issuer it is assumed
to be the root CA.
The process of 'looking up the issuers certificate' itself involves a number
of steps. In versions of OpenSSL before 0.9.5a the first certificate whose
subject name matched the issuer of the current certificate was assumed to be
the issuers certificate. In OpenSSL 0.9.6 and later all certificates
of steps.
Ater all certificates
whose subject name matches the issuer name of the current certificate are
subject to further tests. The relevant authority key identifier components
of the current certificate (if present) must match the subject key identifier
......
......@@ -58,8 +58,4 @@ OPENSSLDIR setting.
The output of B<openssl version -a> would typically be used when sending
in a bug report.
=head1 HISTORY
The B<-d> option was added in OpenSSL 0.9.7.
=cut
......@@ -869,11 +869,6 @@ be checked.
There should be options to explicitly set such things as start and end
dates rather than an offset from the current time.
The code to implement the verify behaviour described in the B<TRUST SETTINGS>
is currently being developed. It thus describes the intended behaviour rather
than the current behaviour. It is hoped that it will represent reality in
OpenSSL 0.9.5 and later.
=head1 SEE ALSO
L<req(1)>, L<ca(1)>, L<genrsa(1)>,
......@@ -882,8 +877,6 @@ L<x509v3_config(5)>
=head1 HISTORY
Before OpenSSL 0.9.8, the default digest for RSA keys was MD5.
The hash algorithm used in the B<-subject_hash> and B<-issuer_hash> options
before OpenSSL 1.0.0 was based on the deprecated MD5 algorithm and the encoding
of the distinguished name. In OpenSSL 1.0.0 and later it is based on a
......
......@@ -508,16 +508,6 @@ will only recognize the last value. This can be worked around by using the form:
email.1=steve@here
email.2=steve@there
=head1 HISTORY
The X509v3 extension code was first added to OpenSSL 0.9.2.
Policy mappings, inhibit any policy and name constraints support was added in
OpenSSL 0.9.8
The B<directoryName> and B<otherName> option as well as the B<ASN1> option
for arbitrary extensions was added in OpenSSL 0.9.8
=head1 SEE ALSO
L<req(1)>, L<ca(1)>, L<x509(1)>,
......
......@@ -39,8 +39,4 @@ ASN1_OBJECT_free() returns no value.
L<ERR_get_error(3)>, L<d2i_ASN1_OBJECT(3)>
=head1 HISTORY
ASN1_OBJECT_new() and ASN1_OBJECT_free() are available in all versions of SSLeay and OpenSSL.
=cut
......@@ -258,8 +258,4 @@ The error codes that can be obtained by L<ERR_get_error(3)>.
L<ERR_get_error(3)>
=head1 HISTORY
ASN1_generate_nconf() and ASN1_generate_v3() were added to OpenSSL 0.9.8
=cut
......@@ -58,10 +58,8 @@ If an application needs to call BIO_gets() or BIO_puts() through
a chain containing digest BIOs then this can be done by prepending
a buffering BIO.
Before OpenSSL 1.0.0 the call to BIO_get_md_ctx() would only work if the BIO
had been initialized for example by calling BIO_set_md() ). In OpenSSL
1.0.0 and later the context is always returned and the BIO is state is set
to initialized. This allows applications to initialize the context externally
Calling BIO_get_md_ctx() will return the context and initialize the BIO
state. This allows applications to initialize the context externally
if the standard calls such as BIO_set_md() are not sufficiently flexible.
=head1 RETURN VALUES
......@@ -139,6 +137,13 @@ and BIO_puts() should be passed to the next BIO in the chain and digest
the data passed through and that digests should be retrieved using a
separate BIO_ctrl() call.
=head1 HISTORY
Before OpenSSL 1.0.0., the call to BIO_get_md_ctx() would only work if the
BIO was initialized first.
=head1 SEE ALSO
TBA
=cut
......@@ -110,7 +110,7 @@ circumstances. Specifically this will happen if a session
renegotiation takes place during a BIO_read() operation, one
case where this happens is when step up occurs.
In OpenSSL 0.9.6 and later the SSL flag SSL_AUTO_RETRY can be
The SSL flag SSL_AUTO_RETRY can be
set to disable this behaviour. That is when this flag is set
an SSL BIO using a blocking transport will never request a
retry.
......
......@@ -63,19 +63,6 @@ BIO_next() returns the next BIO in a chain.
BIO_method_type() returns the type of the BIO B<b>.
=head1 NOTES
BIO_next() was added to OpenSSL 0.9.6 to provide a 'clean' way to traverse a BIO
chain or find multiple matches using BIO_find_type(). Previous versions had to
use:
next = bio->next_bio;
=head1 BUGS
BIO_find_type() in OpenSSL 0.9.5a and earlier could not be safely passed a
NULL pointer for the B<b> argument.
=head1 EXAMPLE
Traverse a chain looking for digest BIOs:
......
......@@ -102,15 +102,7 @@ L<bn(3)>
=head1 HISTORY
BN_BLINDING_thread_id was first introduced in OpenSSL 1.0.0, and it
deprecates BN_BLINDING_set_thread_id and BN_BLINDING_get_thread_id.
BN_BLINDING_convert_ex, BN_BLINDIND_invert_ex, BN_BLINDING_get_thread_id,
BN_BLINDING_set_thread_id, BN_BLINDING_set_flags, BN_BLINDING_get_flags
and BN_BLINDING_create_param were first introduced in OpenSSL 0.9.8
=head1 AUTHOR
Nils Larsch for the OpenSSL project (http://www.openssl.org).
BN_BLINDING_thread_id() was first introduced in OpenSSL 1.0.0, and it
deprecates BN_BLINDING_set_thread_id() and BN_BLINDING_get_thread_id().
=cut
......@@ -62,8 +62,6 @@ L<BN_CTX_start(3)>
=head1 HISTORY
BN_CTX_new() and BN_CTX_free() are available in all versions on SSLeay
and OpenSSL. BN_CTX_init() was added in SSLeay 0.9.1b and removed in OpenSSL
1.1.0.
BN_CTX_init() was removed in OpenSSL 1.1.0.
=cut
......@@ -45,8 +45,4 @@ can be obtained by L<ERR_get_error(3)>.
L<BN_CTX_new(3)>
=head1 HISTORY
BN_CTX_start(), BN_CTX_get() and BN_CTX_end() were added in OpenSSL 0.9.5.
=cut
......@@ -114,13 +114,4 @@ The error codes can be obtained by L<ERR_get_error(3)>.
L<bn(3)>, L<ERR_get_error(3)>, L<BN_CTX_new(3)>,
L<BN_add_word(3)>, L<BN_set_bit(3)>
=head1 HISTORY
BN_add(), BN_sub(), BN_sqr(), BN_div(), BN_mod(), BN_mod_mul(),
BN_mod_exp() and BN_gcd() are available in all versions of SSLeay and
OpenSSL. The I<ctx> argument to BN_mul() was added in SSLeay
0.9.1b. BN_exp() appeared in SSLeay 0.9.0.
BN_nnmod(), BN_mod_add(), BN_mod_sub(), and BN_mod_sqr() were added in
OpenSSL 0.9.7.
=cut
......@@ -49,13 +49,4 @@ B<(BN_ULONG)-1> if an error occurred.
L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>
=head1 HISTORY
BN_add_word() and BN_mod_word() are available in all versions of
SSLeay and OpenSSL. BN_div_word() was added in SSLeay 0.8, and
BN_sub_word() and BN_mul_word() in SSLeay 0.9.0.
Before 0.9.8a the return value for BN_div_word() and BN_mod_word()
in case of an error was 0.
=cut
......@@ -84,12 +84,4 @@ L<bn(3)>, L<ERR_get_error(3)>, L<BN_zero(3)>,
L<ASN1_INTEGER_to_BN(3)>,
L<BN_num_bytes(3)>
=head1 HISTORY
BN_bn2bin(), BN_bin2bn(), BN_print_fp() and BN_print() are available
in all versions of SSLeay and OpenSSL.
BN_bn2hex(), BN_bn2dec(), BN_hex2bn(), BN_dec2bn(), BN_bn2mpi() and
BN_mpi2bn() were added in SSLeay 0.9.0.
=cut
......@@ -39,10 +39,4 @@ the condition is true, 0 otherwise.
L<bn(3)>
=head1 HISTORY
BN_cmp(), BN_ucmp(), BN_is_zero(), BN_is_one() and BN_is_word() are
available in all versions of SSLeay and OpenSSL.
BN_is_odd() was added in SSLeay 0.8.
=cut
......@@ -27,8 +27,4 @@ by L<ERR_get_error(3)>.
L<bn(3)>, L<ERR_get_error(3)>
=head1 HISTORY
BN_copy() and BN_dup() are available in all versions of SSLeay and OpenSSL.
=cut
......@@ -177,10 +177,7 @@ L<bn(3)>, L<ERR_get_error(3)>, L<rand(3)>
=head1 HISTORY
The B<cb_arg> arguments to BN_generate_prime() and to BN_is_prime()
were added in SSLeay 0.9.0. The B<ret> argument to BN_generate_prime()
was added in SSLeay 0.9.1.
BN_is_prime_fasttest() was added in OpenSSL 0.9.5. BN_GENCB_new, BN_GENCB_free
and BN_GENCB_get_arg were added in OpenSSL 1.1.0
BN_GENCB_new(), BN_GENCB_free(),
and BN_GENCB_get_arg() were added in OpenSSL 1.1.0
=cut
......@@ -29,8 +29,4 @@ NULL on error. The error codes can be obtained by L<ERR_get_error(3)>.
L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>
=head1 HISTORY
BN_mod_inverse() is available in all versions of SSLeay and OpenSSL.
=cut
......@@ -96,11 +96,6 @@ L<BN_CTX_new(3)>
=head1 HISTORY
BN_MONT_CTX_new(), BN_MONT_CTX_free(), BN_MONT_CTX_set(),
BN_mod_mul_montgomery(), BN_from_montgomery() and BN_to_montgomery()
are available in all versions of SSLeay and OpenSSL.
BN_MONT_CTX_init() and BN_MONT_CTX_copy() were added in SSLeay 0.9.1b.
BN_MONT_CTX_init was removed in OpenSSL 1.1.0
BN_MONT_CTX_init() was removed in OpenSSL 1.1.0
=cut
......@@ -83,8 +83,6 @@ L<BN_CTX_new(3)>
=head1 HISTORY
B<BN_RECP_CTX> was added in SSLeay 0.9.0. Before that, the function
BN_reciprocal() was used instead, and the BN_mod_mul_reciprocal()
arguments were different. BN_RECP_CTX_init was removed in OpenSSL 1.1.0
BN_RECP_CTX_init was removed in OpenSSL 1.1.0
=cut
......@@ -61,8 +61,6 @@ L<bn(3)>, L<ERR_get_error(3)>
=head1 HISTORY
BN_new(), BN_clear(), BN_free() and BN_clear_free() are available in
all versions on SSLeay and OpenSSL. BN_init() was added in SSLeay
0.9.1b and removed in OpenSSL 1.1.0.
BN_init() was removed in OpenSSL 1.1.0.
=cut
......@@ -49,9 +49,4 @@ more probability).
L<bn(3)>, L<DH_size(3)>, L<DSA_size(3)>,
L<RSA_size(3)>
=head1 HISTORY
BN_num_bytes(), BN_num_bits() and BN_num_bits_word() are available in
all versions of SSLeay and OpenSSL.
=cut
......@@ -49,11 +49,4 @@ The error codes can be obtained by L<ERR_get_error(3)>.
L<bn(3)>, L<ERR_get_error(3)>, L<rand(3)>,
L<RAND_add(3)>, L<RAND_bytes(3)>
=head1 HISTORY
BN_rand() is available in all versions of SSLeay and OpenSSL.
BN_pseudo_rand() was added in OpenSSL 0.9.5. The B<top> == -1 case
and the function BN_rand_range() were added in OpenSSL 0.9.6a.
BN_pseudo_rand_range() was added in OpenSSL 0.9.6c.
=cut
......@@ -57,10 +57,4 @@ can be obtained by L<ERR_get_error(3)>.
L<bn(3)>, L<BN_num_bytes(3)>, L<BN_add(3)>
=head1 HISTORY
BN_set_bit(), BN_clear_bit(), BN_is_bit_set(), BN_mask_bits(),
BN_lshift(), BN_lshift1(), BN_rshift(), and BN_rshift1() are available
in all versions of SSLeay and OpenSSL.
=cut
......@@ -16,8 +16,4 @@ BN_swap() exchanges the values of I<a> and I<b>.
L<bn(3)>
=head1 HISTORY
BN_swap was added in OpenSSL 0.9.7.
=cut
......@@ -47,13 +47,4 @@ unsigned long but this value is also returned on error.
L<bn(3)>, L<BN_bn2bin(3)>
=head1 HISTORY
BN_zero(), BN_one() and BN_set_word() are available in all versions of
SSLeay and OpenSSL. BN_value_one() and BN_get_word() were added in
SSLeay 0.8.
BN_value_one() was changed to return a true const BIGNUM * in OpenSSL
0.9.7.
=cut
......@@ -58,9 +58,4 @@ L<ERR_get_error(3)>,
L<CMS_sign(3)>,
L<CMS_encrypt(3)>
=head1 HISTORY
CMS_add0_cert(), CMS_add1_cert(), CMS_get1_certs(), CMS_add0_crl()
and CMS_get1_crls() were all first added to OpenSSL 0.9.8
=cut
......@@ -54,9 +54,4 @@ occurs.
L<ERR_get_error(3)>, L<CMS_decrypt(3)>,
L<CMS_final(3)>,
=head1 HISTORY
CMS_add1_recipient_cert() and CMS_add0_recipient_key() were added to OpenSSL
0.9.8
=cut
......@@ -94,8 +94,4 @@ structure just added or NULL if an error occurs.
L<ERR_get_error(3)>, L<CMS_sign(3)>,
L<CMS_final(3)>,
=head1 HISTORY
CMS_add1_signer() was added to OpenSSL 0.9.8
=cut
......@@ -67,7 +67,6 @@ L<ERR_get_error(3)>, L<CMS_uncompress(3)>
=head1 HISTORY
CMS_compress() was added to OpenSSL 0.9.8
The B<CMS_STREAM> flag was first supported in OpenSSL 1.0.0.
The B<CMS_STREAM> flag was added in OpenSSL 1.0.0.
=cut
......@@ -72,8 +72,4 @@ mentioned in CMS_verify() also applies to CMS_decrypt().
L<ERR_get_error(3)>, L<CMS_encrypt(3)>
=head1 HISTORY
CMS_decrypt() was added to OpenSSL 0.9.8
=cut
......@@ -90,7 +90,6 @@ L<ERR_get_error(3)>, L<CMS_decrypt(3)>
=head1 HISTORY
CMS_decrypt() was added to OpenSSL 0.9.8
The B<CMS_STREAM> flag was first supported in OpenSSL 1.0.0.
=cut
......@@ -34,8 +34,4 @@ CMS_final() returns 1 for success or 0 for failure.
L<ERR_get_error(3)>, L<CMS_sign(3)>,
L<CMS_encrypt(3)>
=head1 HISTORY
CMS_final() was added to OpenSSL 0.9.8
=cut
......@@ -113,8 +113,4 @@ Any error can be obtained from L<ERR_get_error(3)>.
L<ERR_get_error(3)>, L<CMS_decrypt(3)>
=head1 HISTORY
These functions were first was added to OpenSSL 0.9.8
=cut
......@@ -74,8 +74,4 @@ Any error can be obtained from L<ERR_get_error(3)>
L<ERR_get_error(3)>, L<CMS_verify(3)>
=head1 HISTORY
These functions were first was added to OpenSSL 0.9.8
=cut
......@@ -69,9 +69,4 @@ error can be obtained from ERR_get_error(3).
L<ERR_get_error(3)>
=head1 HISTORY
CMS_get0_type(), CMS_set1_eContentType() and CMS_get0_eContentType() were all
first added to OpenSSL 0.9.8
=cut
......@@ -60,10 +60,4 @@ L<ERR_get_error(3)>, L<CMS_sign(3)>,
L<CMS_sign_receipt(3)>, L<CMS_verify(3)>
L<CMS_verify_receipt(3)>
=head1 HISTORY
CMS_ReceiptRequest_create0(), CMS_add1_ReceiptRequest(),
CMS_get1_ReceiptRequest() and CMS_ReceiptRequest_get0_values() were added to
OpenSSL 0.9.8
=cut
......@@ -113,8 +113,6 @@ L<ERR_get_error(3)>, L<CMS_verify(3)>
=head1 HISTORY
CMS_sign() was added to OpenSSL 0.9.8
The B<CMS_STREAM> flag is only supported for detached data in OpenSSL 0.9.8,
it is supported for embedded data in OpenSSL 1.0.0 and later.
......
......@@ -38,8 +38,4 @@ L<ERR_get_error(3)>,
L<CMS_verify_receipt(3)>,
L<CMS_sign(3)>
=head1 HISTORY
CMS_sign_receipt() was added to OpenSSL 0.9.8
=cut
......@@ -47,8 +47,4 @@ mentioned in CMS_verify() also applies to CMS_decompress().
L<ERR_get_error(3)>, L<CMS_compress(3)>
=head1 HISTORY
CMS_uncompress() was added to OpenSSL 0.9.8
=cut
......@@ -119,8 +119,4 @@ be held in memory if it is not detached.
L<ERR_get_error(3)>, L<CMS_sign(3)>
=head1 HISTORY
CMS_verify() was added to OpenSSL 0.9.8
=cut
......@@ -40,8 +40,4 @@ L<ERR_get_error(3)>,
L<CMS_sign_receipt(3)>,
L<CMS_verify(3)>,
=head1 HISTORY
CMS_verify_receipt() was added to OpenSSL 0.9.8
=cut
......@@ -39,9 +39,4 @@ None of the functions return a value.
L<conf(5)>, L<OPENSSL_config(3)>,
L<CONF_modules_load_file(3)>
=head1 HISTORY
CONF_modules_free(), CONF_modules_unload(), and CONF_modules_finish()
first appeared in OpenSSL 0.9.7.
=cut
......@@ -130,8 +130,4 @@ return value of the failing module (this will always be zero or negative).
L<conf(5)>, L<OPENSSL_config(3)>,
L<CONF_free(3)>, L<err(3)>
=head1 HISTORY
CONF_modules_load_file and CONF_modules_load first appeared in OpenSSL 0.9.7.
=cut
......@@ -46,8 +46,4 @@ L<RSA_get_ex_new_index(3)>,
L<DSA_get_ex_new_index(3)>,
L<DH_get_ex_new_index(3)>
=head1 HISTORY
CRYPTO_set_ex_data() and CRYPTO_get_ex_data() have been available since SSLeay 0.9.0.
=cut
......@@ -42,9 +42,4 @@ The error codes can be obtained by L<ERR_get_error(3)>.
L<dh(3)>, L<ERR_get_error(3)>, L<rand(3)>, L<DH_size(3)>
=head1 HISTORY
DH_generate_key() and DH_compute_key() are available in all versions
of SSLeay and OpenSSL.
=cut
......@@ -71,12 +71,4 @@ a usable generator.
L<dh(3)>, L<ERR_get_error(3)>, L<rand(3)>,
L<DH_free(3)>
=head1 HISTORY
DH_check() is available in all versions of SSLeay and OpenSSL.
The B<cb_arg> argument to DH_generate_parameters() was added in SSLeay 0.9.0.
In versions before OpenSSL 0.9.5, DH_CHECK_P_NOT_STRONG_PRIME is used
instead of DH_CHECK_P_NOT_SAFE_PRIME.
=cut
......@@ -28,9 +28,4 @@ as described in L<RSA_get_ex_new_index(3)>.
L<RSA_get_ex_new_index(3)>, L<dh(3)>
=head1 HISTORY
DH_get_ex_new_index(), DH_set_ex_data() and DH_get_ex_data() are
available since OpenSSL 0.9.5.
=cut
......@@ -34,8 +34,4 @@ L<dh(3)>, L<ERR_get_error(3)>,
L<DH_generate_parameters(3)>,
L<DH_generate_key(3)>
=head1 HISTORY
DH_new() and DH_free() are available in all versions of SSLeay and OpenSSL.
=cut
......@@ -97,33 +97,8 @@ DH_new_method() returns NULL and sets an error code that can be obtained by
L<ERR_get_error(3)> if the allocation fails. Otherwise it
returns a pointer to the newly allocated structure.
=head1 NOTES
As of version 0.9.7, DH_METHOD implementations are grouped together with other
algorithmic APIs (eg. RSA_METHOD, EVP_CIPHER, etc) in B<ENGINE> modules. If a
default ENGINE is specified for DH functionality using an ENGINE API function,
that will override any DH defaults set using the DH API (ie.
DH_set_default_method()). For this reason, the ENGINE API is the recommended way
to control default implementations for use in DH and other cryptographic
algorithms.
=head1 SEE ALSO
L<dh(3)>, L<DH_new(3)>
=head1 HISTORY
DH_set_default_method(), DH_get_default_method(), DH_set_method(),
DH_new_method() and DH_OpenSSL() were added in OpenSSL 0.9.4.
DH_set_default_openssl_method() and DH_get_default_openssl_method() replaced
DH_set_default_method() and DH_get_default_method() respectively, and
DH_set_method() and DH_new_method() were altered to use B<ENGINE>s rather than
B<DH_METHOD>s during development of the engine version of OpenSSL 0.9.6. For
0.9.7, the handling of defaults in the ENGINE API was restructured so that this
change was reversed, and behaviour of the other functions resembled more closely
the previous behaviour. The behaviour of defaults in the ENGINE API now
transparently overrides the behaviour of defaults in the DH API without
requiring changing these function prototypes.
=cut
......@@ -33,7 +33,6 @@ L<BN_num_bits(3)>
=head1 HISTORY
DH_size() is available in all versions of SSLeay and OpenSSL.
DH_bits() was added in OpenSSL 1.1.0.
=cut
......@@ -33,8 +33,4 @@ DSA_SIG_free() returns no value.
L<dsa(3)>, L<ERR_get_error(3)>,
L<DSA_do_sign(3)>
=head1 HISTORY
DSA_SIG_new() and DSA_SIG_free() were added in OpenSSL 0.9.3.
=cut
......@@ -40,8 +40,4 @@ L<dsa(3)>, L<ERR_get_error(3)>, L<rand(3)>,
L<DSA_SIG_new(3)>,
L<DSA_sign(3)>
=head1 HISTORY
DSA_do_sign() and DSA_do_verify() were added in OpenSSL 0.9.3.
=cut
......@@ -29,8 +29,4 @@ Be careful to avoid small subgroup attacks when using this.
L<dh(3)>, L<dsa(3)>, L<ERR_get_error(3)>
=head1 HISTORY
DSA_dup_DH() was added in OpenSSL 0.9.4.
=cut
......@@ -27,8 +27,4 @@ The error codes can be obtained by L<ERR_get_error(3)>.
L<dsa(3)>, L<ERR_get_error(3)>, L<rand(3)>,
L<DSA_generate_parameters(3)>
=head1 HISTORY
DSA_generate_key() is available since SSLeay 0.8.
=cut
......@@ -108,13 +108,4 @@ Seed lengths E<gt> 20 are not supported.
L<dsa(3)>, L<ERR_get_error(3)>, L<rand(3)>,
L<DSA_free(3)>, L<BN_generate_prime(3)>
=head1 HISTORY
DSA_generate_parameters() appeared in SSLeay 0.8. The B<cb_arg>
argument was added in SSLeay 0.9.0.
In versions up to OpenSSL 0.9.4, B<callback(1, ...)> was called
in the inner loop of the Miller-Rabin test whenever it reached the
squaring step (the parameters to B<callback> did not reveal how many
witnesses had been tested); since OpenSSL 0.9.5, B<callback(1, ...)>
is called as in BN_is_prime(3), i.e. once for each witness.
=cut
......@@ -28,9 +28,4 @@ as described in L<RSA_get_ex_new_index(3)>.
L<RSA_get_ex_new_index(3)>, L<dsa(3)>
=head1 HISTORY
DSA_get_ex_new_index(), DSA_set_ex_data() and DSA_get_ex_data() are
available since OpenSSL 0.9.5.
=cut
......@@ -36,8 +36,4 @@ L<dsa(3)>, L<ERR_get_error(3)>,
L<DSA_generate_parameters(3)>,
L<DSA_generate_key(3)>
=head1 HISTORY
DSA_new() and DSA_free() are available in all versions of SSLeay and OpenSSL.
=cut
......@@ -111,33 +111,8 @@ DSA_new_method() returns NULL and sets an error code that can be
obtained by L<ERR_get_error(3)> if the allocation
fails. Otherwise it returns a pointer to the newly allocated structure.
=head1 NOTES
As of version 0.9.7, DSA_METHOD implementations are grouped together with other
algorithmic APIs (eg. RSA_METHOD, EVP_CIPHER, etc) in B<ENGINE> modules. If a
default ENGINE is specified for DSA functionality using an ENGINE API function,
that will override any DSA defaults set using the DSA API (ie.
DSA_set_default_method()). For this reason, the ENGINE API is the recommended way
to control default implementations for use in DSA and other cryptographic
algorithms.
=head1 SEE ALSO
L<dsa(3)>, L<DSA_new(3)>
=head1 HISTORY
DSA_set_default_method(), DSA_get_default_method(), DSA_set_method(),
DSA_new_method() and DSA_OpenSSL() were added in OpenSSL 0.9.4.
DSA_set_default_openssl_method() and DSA_get_default_openssl_method() replaced
DSA_set_default_method() and DSA_get_default_method() respectively, and
DSA_set_method() and DSA_new_method() were altered to use B<ENGINE>s rather than
B<DSA_METHOD>s during development of the engine version of OpenSSL 0.9.6. For
0.9.7, the handling of defaults in the ENGINE API was restructured so that this
change was reversed, and behaviour of the other functions resembled more closely
the previous behaviour. The behaviour of defaults in the ENGINE API now
transparently overrides the behaviour of defaults in the DSA API without
requiring changing these function prototypes.
=cut
......@@ -58,9 +58,4 @@ Standard, DSS), ANSI X9.30
L<dsa(3)>, L<ERR_get_error(3)>, L<rand(3)>,
L<DSA_do_sign(3)>
=head1 HISTORY
DSA_sign() and DSA_verify() are available in all versions of SSLeay.
DSA_sign_setup() was added in SSLeay 0.8.
=cut
......@@ -26,8 +26,4 @@ The size in bytes.
L<dsa(3)>, L<DSA_sign(3)>
=head1 HISTORY
DSA_size() is available in all versions of SSLeay and OpenSSL.
=cut
......@@ -46,6 +46,6 @@ L<err(3)>, L<ERR_get_error(3)>
=head1 HISTORY
ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() are available in
all versions of SSLeay and OpenSSL.
all versions of OpenSSL.
=cut
......@@ -22,8 +22,4 @@ ERR_clear_error() has no return value.
L<err(3)>, L<ERR_get_error(3)>
=head1 HISTORY
ERR_clear_error() is available in all versions of SSLeay and OpenSSL.
=cut
......@@ -65,9 +65,4 @@ L<ERR_load_crypto_strings(3)>,
L<SSL_load_error_strings(3)>
L<ERR_print_errors(3)>
=head1 HISTORY
ERR_error_string() is available in all versions of SSLeay and OpenSSL.
ERR_error_string_n() was added in OpenSSL 0.9.6.
=cut
......@@ -67,13 +67,4 @@ The error code, or 0 if there is no error in the queue.
L<err(3)>, L<ERR_error_string(3)>,
L<ERR_GET_LIB(3)>
=head1 HISTORY
ERR_get_error(), ERR_peek_error(), ERR_get_error_line() and
ERR_peek_error_line() are available in all versions of SSLeay and
OpenSSL. ERR_get_error_line_data() and ERR_peek_error_line_data()
were added in SSLeay 0.9.0.
ERR_peek_last_error(), ERR_peek_last_error_line() and
ERR_peek_last_error_line_data() were added in OpenSSL 0.9.7.
=cut
......@@ -37,10 +37,4 @@ ERR_free_strings() return no values.
L<err(3)>, L<ERR_error_string(3)>
=head1 HISTORY
ERR_load_error_strings(), SSL_load_error_strings() and
ERR_free_strings() are available in all versions of SSLeay and
OpenSSL.
=cut
......@@ -45,10 +45,4 @@ ERR_get_next_error_library() returns a new library number.
L<err(3)>, L<ERR_load_strings(3)>
=head1 HISTORY
ERR_load_error_strings() and ERR_PACK() are available in all versions
of SSLeay and OpenSSL. ERR_get_next_error_library() was added in
SSLeay 0.9.0.
=cut
......@@ -43,9 +43,4 @@ L<ERR_get_error(3)>,
L<ERR_load_crypto_strings(3)>,
L<SSL_load_error_strings(3)>
=head1 HISTORY
ERR_print_errors() and ERR_print_errors_fp()
are available in all versions of SSLeay and OpenSSL.
=cut
......@@ -36,9 +36,4 @@ no values.
L<err(3)>, L<ERR_load_strings(3)>
=head1 HISTORY
ERR_put_error() is available in all versions of SSLeay and OpenSSL.
ERR_add_error_data() was added in SSLeay 0.9.0.
=cut
......@@ -38,8 +38,8 @@ L<err(3)>
=head1 HISTORY
ERR_remove_state() is available in all versions of SSLeay and OpenSSL. It
was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state was introduced
ERR_remove_state()
was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state() was introduced
and thread IDs were introduced to identify threads instead of 'unsigned long'.
=cut
......@@ -31,8 +31,4 @@ implies that the stack became empty, otherwise 1.
L<err(3)>
=head1 HISTORY
ERR_set_mark() and ERR_pop_to_mark() were added in OpenSSL 0.9.8.
=cut
......@@ -189,7 +189,7 @@ EVP_MD_CTX_copy_ex() because they can efficiently reuse a digest context
instead of initializing and cleaning it up on each call and allow non default
implementations of digests to be specified.
In OpenSSL 0.9.7 and later if digest contexts are not cleaned up after use
If digest contexts are not cleaned up after use
memory leaks will occur.
Stack allocation of EVP_MD_CTX structures is common, for example:
......@@ -260,22 +260,8 @@ L<evp(3)>
=head1 HISTORY
EVP_DigestInit(), EVP_DigestUpdate() and EVP_DigestFinal() are
available in all versions of SSLeay and OpenSSL.
EVP_MD_CTX_init(), EVP_MD_CTX_create(), EVP_MD_CTX_copy_ex(),
EVP_MD_CTX_cleanup(), EVP_MD_CTX_destroy(), EVP_DigestInit_ex()
and EVP_DigestFinal_ex() were added in OpenSSL 0.9.7.
EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha1(),
EVP_dss1(), EVP_mdc2() and EVP_ripemd160() were
changed to return truly const EVP_MD * in OpenSSL 0.9.7.
The link between digests and signing algorithms was fixed in OpenSSL 1.0 and
later, so now EVP_sha1() can be used with RSA and DSA; there is no need to
use EVP_dss1() any more.
OpenSSL 1.0 and later does not include the MD2 digest algorithm in the
default configuration due to its security weaknesses.
=cut
......@@ -614,13 +614,6 @@ L<evp(3)>
=head1 HISTORY
EVP_CIPHER_CTX_init(), EVP_EncryptInit_ex(), EVP_EncryptFinal_ex(),
EVP_DecryptInit_ex(), EVP_DecryptFinal_ex(), EVP_CipherInit_ex(),
EVP_CipherFinal_ex() and EVP_CIPHER_CTX_set_padding() appeared in
OpenSSL 0.9.7.
IDEA appeared in OpenSSL 0.9.7 but was often disabled due to
patent concerns; the last patents expired in 2012.
Support for OCB mode was added in OpenSSL 1.1.0
=cut
......@@ -108,8 +108,8 @@ for DH parameter generation. If not specified 2 is used.
The EVP_PKEY_CTX_set_ec_paramgen_curve_nid() sets the EC curve for EC parameter
generation to B<nid>. For EC parameter generation this macro must be called
or an error occurs because there is no default curve. In OpenSSL 1.0.2 and
later this function can also be called to set the curve explicitly when
or an error occurs because there is no default curve.
This function can also be called to set the curve explicitly when
generating an EC key.
The EVP_PKEY_CTX_set_ec_param_enc() sets the EC parameter encoding to
......@@ -117,7 +117,7 @@ B<param_enc> when generating EC parameters or an EC key. The encoding can be
B<OPENSSL_EC_EXPLICIT_CURVE> for explicit parameters (the default in versions
of OpenSSL before 1.1.0) or B<OPENSSL_EC_NAMED_CURVE> to use named curve form.
For maximum compatibility the named curve form should be used. Note: the
B<OPENSSL_EC_NAMED_CURVE> value was only added to OpenSSL 1.1.0: previous
B<OPENSSL_EC_NAMED_CURVE> value was only added to OpenSSL 1.1.0; previous
versions should use 0 instead.
=head1 RETURN VALUES
......
......@@ -78,8 +78,4 @@ L<evp(3)>, L<rand(3)>,
L<EVP_EncryptInit(3)>,
L<EVP_OpenInit(3)>
=head1 HISTORY
EVP_SealFinal() did not return a value before OpenSSL 0.9.7.
=cut
......@@ -96,11 +96,4 @@ L<evp(3)>, L<hmac(3)>, L<md2(3)>,
L<md5(3)>, L<mdc2(3)>, L<ripemd(3)>,
L<sha(3)>, L<dgst(1)>
=head1 HISTORY
EVP_SignInit(), EVP_SignUpdate() and EVP_SignFinal() are
available in all versions of SSLeay and OpenSSL.
EVP_SignInit_ex() was added in OpenSSL 0.9.7.
=cut
......@@ -85,11 +85,4 @@ L<evp(3)>, L<hmac(3)>, L<md2(3)>,
L<md5(3)>, L<mdc2(3)>, L<ripemd(3)>,
L<sha(3)>, L<dgst(1)>
=head1 HISTORY
EVP_VerifyInit(), EVP_VerifyUpdate() and EVP_VerifyFinal() are
available in all versions of SSLeay and OpenSSL.
EVP_VerifyInit_ex() was added in OpenSSL 0.9.7
=cut
......@@ -2,7 +2,7 @@
=head1 NAME
OPENSSL_VERSION_NUMBER, SSLeay, SSLeay_version - get OpenSSL version number
OPENSSL_VERSION_NUMBER, OpenSSL_version - get OpenSSL version number
=head1 SYNOPSIS
......@@ -10,8 +10,7 @@ OPENSSL_VERSION_NUMBER, SSLeay, SSLeay_version - get OpenSSL version number
#define OPENSSL_VERSION_NUMBER 0xnnnnnnnnnL
#include <openssl/crypto.h>
long SSLeay(void);
const char *SSLeay_version(int t);
const char *OpenSSL_version(int t);
=head1 DESCRIPTION
......@@ -44,38 +43,34 @@ except the patch level got the highest bit set, to keep continuity. The
number was therefore 0x0090581f.
For backward compatibility, SSLEAY_VERSION_NUMBER is also defined.
For backward compatibility, OPENSSL_VERSION_NUMBER is also defined.
SSLeay() returns this number. The return value can be compared to the
macro to make sure that the correct version of the library has been
loaded, especially when using DLLs on Windows systems.
SSLeay_version() returns different strings depending on B<t>:
OpenSSL_version() returns different strings depending on B<t>:
=over 4
=item SSLEAY_VERSION
=item OPENSSL_VERSION
The text variant of the version number and the release date. For example,
"OpenSSL 0.9.5a 1 Apr 2000".
"OpenSSL 1.0.1a 15 Oct 2015".
=item SSLEAY_CFLAGS
=item OPENSSL_CFLAGS
The compiler flags set for the compilation process in the form
"compiler: ..." if available or "compiler: information not available"
otherwise.
=item SSLEAY_BUILT_ON
=item OPENSSL_BUILT_ON
The date of the build process in the form "built on: ..." if available
or "built on: date not available" otherwise.
=item SSLEAY_PLATFORM
=item OPENSSL_PLATFORM
The "Configure" target of the library build in the form "platform: ..."
if available or "platform: information not available" otherwise.
=item SSLEAY_DIR
=item OPENSSL_DIR
The "OPENSSLDIR" setting of the library build in the form "OPENSSLDIR: "...""
if available or "OPENSSLDIR: N/A" otherwise.
......@@ -92,10 +87,4 @@ The version number.
L<crypto(3)>
=head1 HISTORY
SSLeay() and SSLEAY_VERSION_NUMBER are available in all versions of SSLeay and OpenSSL.
OPENSSL_VERSION_NUMBER is available in all versions of OpenSSL.
B<SSLEAY_DIR> was added in OpenSSL 0.9.7.
=cut
......@@ -42,9 +42,7 @@ Applications should instead call CONF_modules_load() during
initialization (that is before starting any threads).
There are several reasons why calling the OpenSSL configuration routines is
advisable. For example new ENGINE functionality was added to OpenSSL 0.9.7.
In OpenSSL 0.9.7 control functions can be supported by ENGINEs, this can be
used (among other things) to load dynamic ENGINEs from shared libraries (DSOs).
advisable. For example, to load dynamic ENGINEs from shared libraries (DSOs).
However very few applications currently support the control interface and so
very few can load and use dynamic ENGINEs. Equally in future more sophisticated
ENGINEs will require certain control operations to customize them. If an
......@@ -62,8 +60,4 @@ L<conf(5)>,
L<CONF_modules_load_file(3)>,
L<CONF_modules_free(3)>
=head1 HISTORY
OPENSSL_config() and OPENSSL_no_config() first appeared in OpenSSL 0.9.7
=cut
......@@ -44,8 +44,4 @@ None of the functions return a value.
L<conf(3)>, L<OPENSSL_config(3)>
=head1 HISTORY
These functions first appeared in OpenSSL 0.9.7.
=cut
......@@ -46,11 +46,6 @@ export grade software which could use signing only keys of arbitrary size but
had restrictions on the permissible sizes of keys which could be used for
encryption.
=head1 NEW FUNCTIONALITY IN OPENSSL 0.9.8
Some additional functionality was added to PKCS12_create() in OpenSSL
0.9.8. These extensions are detailed below.
If a certificate contains an B<alias> or B<keyid> then this will be
used for the corresponding B<friendlyName> or B<localKeyID> in the
PKCS12 structure.
......@@ -68,8 +63,4 @@ B<mac_iter> can be set to -1 and the MAC will then be omitted entirely.
L<d2i_PKCS12(3)>
=head1 HISTORY
PKCS12_create was added in OpenSSL 0.9.3
=cut
......@@ -50,8 +50,4 @@ Attributes currently cannot be stored in the private key B<EVP_PKEY> structure.
L<d2i_PKCS12(3)>
=head1 HISTORY
PKCS12_parse was added in OpenSSL 0.9.3
=cut
......@@ -48,8 +48,4 @@ mentioned in PKCS7_sign() also applies to PKCS7_verify().
L<ERR_get_error(3)>, L<PKCS7_encrypt(3)>
=head1 HISTORY
PKCS7_decrypt() was added to OpenSSL 0.9.5
=cut
......@@ -74,7 +74,6 @@ L<ERR_get_error(3)>, L<PKCS7_decrypt(3)>
=head1 HISTORY
PKCS7_decrypt() was added to OpenSSL 0.9.5
The B<PKCS7_STREAM> flag was first supported in OpenSSL 1.0.0.
The B<PKCS7_STREAM> flag was added in OpenSSL 1.0.0.
=cut
......@@ -80,13 +80,13 @@ BIO_new_PKCS7().
If a signer is specified it will use the default digest for the signing
algorithm. This is B<SHA1> for both RSA and DSA keys.
In OpenSSL 1.0.0 the B<certs>, B<signcert> and B<pkey> parameters can all be
The B<certs>, B<signcert> and B<pkey> parameters can all be
B<NULL> if the B<PKCS7_PARTIAL> flag is set. One or more signers can be added
using the function B<PKCS7_sign_add_signer()>. B<PKCS7_final()> must also be
called to finalize the structure if streaming is not enabled. Alternative
signing digests can also be specified using this method.
In OpenSSL 1.0.0 if B<signcert> and B<pkey> are NULL then a certificates only
If B<signcert> and B<pkey> are NULL then a certificates only
PKCS#7 structure is output.
In versions of OpenSSL before 1.0.0 the B<signcert> and B<pkey> parameters must
......@@ -107,9 +107,8 @@ L<ERR_get_error(3)>, L<PKCS7_verify(3)>
=head1 HISTORY
PKCS7_sign() was added to OpenSSL 0.9.5
The B<PKCS7_PARTIAL> flag was added in OpenSSL 1.0.0
The B<PKCS7_PARTIAL> flag, and the ability for B<certs>, B<signcert>,
and B<pkey> parameters to be B<NULL> to be was added in OpenSSL 1.0.0
The B<PKCS7_STREAM> flag was added in OpenSSL 1.0.0
......
......@@ -111,8 +111,4 @@ mentioned in PKCS7_sign() also applies to PKCS7_verify().
L<ERR_get_error(3)>, L<PKCS7_sign(3)>
=head1 HISTORY
PKCS7_verify() was added to OpenSSL 0.9.5
=cut
......@@ -68,10 +68,4 @@ The other functions do not return values.
L<rand(3)>, L<RAND_egd(3)>,
L<RAND_load_file(3)>, L<RAND_cleanup(3)>
=head1 HISTORY
RAND_seed() and RAND_screen() are available in all versions of SSLeay
and OpenSSL. RAND_add() and RAND_status() have been added in OpenSSL
0.9.5, RAND_event() in OpenSSL 0.9.5a.
=cut
......@@ -44,10 +44,4 @@ method.
L<rand(3)>, L<ERR_get_error(3)>,
L<RAND_add(3)>
=head1 HISTORY
RAND_bytes() is available in all versions of SSLeay and OpenSSL. It
has a return value since OpenSSL 0.9.5. RAND_pseudo_bytes() was added
in OpenSSL 0.9.5.
=cut
......@@ -22,8 +22,4 @@ RAND_cleanup() returns no value.
L<rand(3)>
=head1 HISTORY
RAND_cleanup() is available in all versions of SSLeay and OpenSSL.
=cut
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册