Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HardenedBSD
HardenedBSD
Commits
375b8e67
Commit
375b8e67
authored
May 28, 2019
by
Jung-uk Kim
Browse files
Import OpenSSL 1.1.1c.
parent
851f7386
Changes
167
Expand all
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
375b8e67
...
...
@@ -7,6 +7,77 @@
https://github.com/openssl/openssl/commits/ and pick the appropriate
release branch.
Changes between 1.1.1b and 1.1.1c [28 May 2019]
*) Add build tests for C++. These are generated files that only do one
thing, to include one public OpenSSL head file each. This tests that
the public header files can be usefully included in a C++ application.
This test isn't enabled by default. It can be enabled with the option
'enable-buildtest-c++'.
[Richard Levitte]
*) Enable SHA3 pre-hashing for ECDSA and DSA.
[Patrick Steuer]
*) Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
This changes the size when using the genpkey app when no size is given. It
fixes an omission in earlier changes that changed all RSA, DSA and DH
generation apps to use 2048 bits by default.
[Kurt Roeckx]
*) Reorganize the manual pages to consistently have RETURN VALUES,
EXAMPLES, SEE ALSO and HISTORY come in that order, and adjust
util/fix-doc-nits accordingly.
[Paul Yang, Joshua Lock]
*) Add the missing accessor EVP_PKEY_get0_engine()
[Matt Caswell]
*) Have apps like 's_client' and 's_server' output the signature scheme
along with other cipher suite parameters when debugging.
[Lorinczy Zsigmond]
*) Make OPENSSL_config() error agnostic again.
[Richard Levitte]
*) Do the error handling in RSA decryption constant time.
[Bernd Edlinger]
*) Prevent over long nonces in ChaCha20-Poly1305.
ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
for every encryption operation. RFC 7539 specifies that the nonce value
(IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
and front pads the nonce with 0 bytes if it is less than 12
bytes. However it also incorrectly allows a nonce to be set of up to 16
bytes. In this case only the last 12 bytes are significant and any
additional leading bytes are ignored.
It is a requirement of using this cipher that nonce values are
unique. Messages encrypted using a reused nonce value are susceptible to
serious confidentiality and integrity attacks. If an application changes
the default nonce length to be longer than 12 bytes and then makes a
change to the leading bytes of the nonce expecting the new value to be a
new unique nonce then such an application could inadvertently encrypt
messages with a reused nonce.
Additionally the ignored bytes in a long nonce are not covered by the
integrity guarantee of this cipher. Any application that relies on the
integrity of these ignored leading bytes of a long nonce may be further
affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
is safe because no such use sets such a long nonce value. However user
applications that use this cipher directly and set a non-default nonce
length to be longer than 12 bytes may be vulnerable.
This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
Greef of Ronomon.
(CVE-2019-1543)
[Matt Caswell]
*) Ensure that SM2 only uses SM3 as digest algorithm
[Paul Yang]
Changes between 1.1.1a and 1.1.1b [26 Feb 2019]
*) Added SCA hardening for modular field inversion in EC_GROUP through
...
...
Configure
View file @
375b8e67
This diff is collapsed.
Click to expand it.
INSTALL
View file @
375b8e67
...
...
@@ -287,6 +287,19 @@
Typically OpenSSL will automatically load a system config
file which configures default ssl options.
enable-buildtest-c++
While testing, generate C++ buildtest files that
simply check that the public OpenSSL header files
are usable standalone with C++.
Enabling this option demands extra care. For any
compiler flag given directly as configuration
option, you must ensure that it's valid for both
the C and the C++ compiler. If not, the C++ build
test will most likely break. As an alternative,
you can use the language specific variables, CFLAGS
and CXXFLAGS.
no-capieng
Don't build the CAPI engine. This option will be forced if
on a platform that does not support CAPI.
...
...
@@ -331,9 +344,6 @@
on BSD implementations, in which case it can be disabled with
no-devcryptoeng.
no-dso
Don't build support for loading Dynamic Shared Objects.
no-dynamic-engine
Don't build the dynamically loaded engines. This only has an
effect in a "shared" build
...
...
@@ -665,6 +675,11 @@
CC=gcc CROSS_COMPILE=x86_64-w64-mingw32- \
./config -DCOOKIE
If CC is set, it is advisable to also set CXX to ensure
both C and C++ compilers are in the same "family". This
becomes relevant with 'enable-external-tests' and
'enable-buildtest-c++'.
reconf
reconfigure
Reconfigure from earlier data. This fetches the previous
...
...
NEWS
View file @
375b8e67
...
...
@@ -5,6 +5,10 @@
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 1.1.1b and OpenSSL 1.1.1c [28 May 2019]
o Prevent over long nonces in ChaCha20-Poly1305 (CVE-2019-1543)
Major changes between OpenSSL 1.1.1a and OpenSSL 1.1.1b [26 Feb 2019]
o Change the info callback signals for the start and end of a post-handshake
...
...
NOTES.PERL
View file @
375b8e67
...
...
@@ -78,7 +78,7 @@
---------------------------------
There are a number of ways to install a perl module. In all
descriptions below, Text::Template will serve
r
as an example.
descriptions below, Text::Template will serve as an example.
1. for Linux users, the easiest is to install with the use of your
favorite package manager. Usually, all you need to do is search
...
...
README
View file @
375b8e67
OpenSSL 1.1.1
b
2
6 Feb
2019
OpenSSL 1.1.1
c
2
8 May
2019
Copyright (c) 1998-201
8
The OpenSSL Project
Copyright (c) 1998-201
9
The OpenSSL Project
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
All rights reserved.
...
...
apps/asn1pars.c
View file @
375b8e67
/*
* Copyright 1995-201
8
The OpenSSL Project Authors. All Rights Reserved.
* Copyright 1995-201
9
The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
...
...
@@ -170,17 +170,17 @@ int asn1parse_main(int argc, char **argv)
if
(
derfile
&&
(
derout
=
bio_open_default
(
derfile
,
'w'
,
FORMAT_ASN1
))
==
NULL
)
goto
end
;
if
((
buf
=
BUF_MEM_new
())
==
NULL
)
goto
end
;
if
(
strictpem
)
{
if
(
PEM_read_bio
(
in
,
&
name
,
&
header
,
&
str
,
&
num
)
!=
1
)
{
if
(
PEM_read_bio
(
in
,
&
name
,
&
header
,
&
str
,
&
num
)
!=
1
)
{
BIO_printf
(
bio_err
,
"Error reading PEM file
\n
"
);
ERR_print_errors
(
bio_err
);
goto
end
;
}
buf
->
data
=
(
char
*
)
str
;
buf
->
length
=
buf
->
max
=
num
;
}
else
{
if
((
buf
=
BUF_MEM_new
())
==
NULL
)
goto
end
;
if
(
!
BUF_MEM_grow
(
buf
,
BUFSIZ
*
8
))
goto
end
;
/* Pre-allocate :-) */
...
...
@@ -303,8 +303,6 @@ int asn1parse_main(int argc, char **argv)
BUF_MEM_free
(
buf
);
OPENSSL_free
(
name
);
OPENSSL_free
(
header
);
if
(
strictpem
)
OPENSSL_free
(
str
);
ASN1_TYPE_free
(
at
);
sk_OPENSSL_STRING_free
(
osk
);
return
ret
;
...
...
apps/cms.c
View file @
375b8e67
/*
* Copyright 2008-201
8
The OpenSSL Project Authors. All Rights Reserved.
* Copyright 2008-201
9
The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
...
...
@@ -636,6 +636,7 @@ int cms_main(int argc, char **argv)
goto
opthelp
;
}
}
else
if
(
!
operation
)
{
BIO_printf
(
bio_err
,
"No operation option (-encrypt|-decrypt|-sign|-verify|...) specified.
\n
"
);
goto
opthelp
;
}
...
...
apps/enc.c
View file @
375b8e67
/*
* Copyright 1995-201
8
The OpenSSL Project Authors. All Rights Reserved.
* Copyright 1995-201
9
The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
...
...
@@ -500,7 +500,7 @@ int enc_main(int argc, char **argv)
if
(
hiv
!=
NULL
)
{
int
siz
=
EVP_CIPHER_iv_length
(
cipher
);
if
(
siz
==
0
)
{
BIO_printf
(
bio_err
,
"warning: iv not use by this cipher
\n
"
);
BIO_printf
(
bio_err
,
"warning: iv not use
d
by this cipher
\n
"
);
}
else
if
(
!
set_hex
(
hiv
,
iv
,
siz
))
{
BIO_printf
(
bio_err
,
"invalid hex iv value
\n
"
);
goto
end
;
...
...
apps/ocsp.c
View file @
375b8e67
...
...
@@ -641,8 +641,10 @@ int ocsp_main(int argc, char **argv)
goto
end
;
}
if
(
req
!=
NULL
&&
add_nonce
)
OCSP_request_add1_nonce
(
req
,
NULL
,
-
1
);
if
(
req
!=
NULL
&&
add_nonce
)
{
if
(
!
OCSP_request_add1_nonce
(
req
,
NULL
,
-
1
))
goto
end
;
}
if
(
signfile
!=
NULL
)
{
if
(
keyfile
==
NULL
)
...
...
@@ -1245,7 +1247,10 @@ static void make_ocsp_response(BIO *err, OCSP_RESPONSE **resp, OCSP_REQUEST *req
goto
end
;
}
}
OCSP_basic_sign_ctx
(
bs
,
rcert
,
mctx
,
rother
,
flags
);
if
(
!
OCSP_basic_sign_ctx
(
bs
,
rcert
,
mctx
,
rother
,
flags
))
{
*
resp
=
OCSP_response_create
(
OCSP_RESPONSE_STATUS_INTERNALERROR
,
bs
);
goto
end
;
}
if
(
badsig
)
{
const
ASN1_OCTET_STRING
*
sig
=
OCSP_resp_get0_signature
(
bs
);
...
...
apps/s_cb.c
View file @
375b8e67
...
...
@@ -683,6 +683,53 @@ static STRINT_PAIR tlsext_types[] = {
{
NULL
}
};
/* from rfc8446 4.2.3. + gost (https://tools.ietf.org/id/draft-smyshlyaev-tls12-gost-suites-04.html) */
static
STRINT_PAIR
signature_tls13_scheme_list
[]
=
{
{
"rsa_pkcs1_sha1"
,
0x0201
/* TLSEXT_SIGALG_rsa_pkcs1_sha1 */
},
{
"ecdsa_sha1"
,
0x0203
/* TLSEXT_SIGALG_ecdsa_sha1 */
},
/* {"rsa_pkcs1_sha224", 0x0301 TLSEXT_SIGALG_rsa_pkcs1_sha224}, not in rfc8446 */
/* {"ecdsa_sha224", 0x0303 TLSEXT_SIGALG_ecdsa_sha224} not in rfc8446 */
{
"rsa_pkcs1_sha256"
,
0x0401
/* TLSEXT_SIGALG_rsa_pkcs1_sha256 */
},
{
"ecdsa_secp256r1_sha256"
,
0x0403
/* TLSEXT_SIGALG_ecdsa_secp256r1_sha256 */
},
{
"rsa_pkcs1_sha384"
,
0x0501
/* TLSEXT_SIGALG_rsa_pkcs1_sha384 */
},
{
"ecdsa_secp384r1_sha384"
,
0x0503
/* TLSEXT_SIGALG_ecdsa_secp384r1_sha384 */
},
{
"rsa_pkcs1_sha512"
,
0x0601
/* TLSEXT_SIGALG_rsa_pkcs1_sha512 */
},
{
"ecdsa_secp521r1_sha512"
,
0x0603
/* TLSEXT_SIGALG_ecdsa_secp521r1_sha512 */
},
{
"rsa_pss_rsae_sha256"
,
0x0804
/* TLSEXT_SIGALG_rsa_pss_rsae_sha256 */
},
{
"rsa_pss_rsae_sha384"
,
0x0805
/* TLSEXT_SIGALG_rsa_pss_rsae_sha384 */
},
{
"rsa_pss_rsae_sha512"
,
0x0806
/* TLSEXT_SIGALG_rsa_pss_rsae_sha512 */
},
{
"ed25519"
,
0x0807
/* TLSEXT_SIGALG_ed25519 */
},
{
"ed448"
,
0x0808
/* TLSEXT_SIGALG_ed448 */
},
{
"rsa_pss_pss_sha256"
,
0x0809
/* TLSEXT_SIGALG_rsa_pss_pss_sha256 */
},
{
"rsa_pss_pss_sha384"
,
0x080a
/* TLSEXT_SIGALG_rsa_pss_pss_sha384 */
},
{
"rsa_pss_pss_sha512"
,
0x080b
/* TLSEXT_SIGALG_rsa_pss_pss_sha512 */
},
{
"gostr34102001"
,
0xeded
/* TLSEXT_SIGALG_gostr34102001_gostr3411 */
},
{
"gostr34102012_256"
,
0xeeee
/* TLSEXT_SIGALG_gostr34102012_256_gostr34112012_256 */
},
{
"gostr34102012_512"
,
0xefef
/* TLSEXT_SIGALG_gostr34102012_512_gostr34112012_512 */
},
{
NULL
}
};
/* from rfc5246 7.4.1.4.1. */
static
STRINT_PAIR
signature_tls12_alg_list
[]
=
{
{
"anonymous"
,
TLSEXT_signature_anonymous
/* 0 */
},
{
"RSA"
,
TLSEXT_signature_rsa
/* 1 */
},
{
"DSA"
,
TLSEXT_signature_dsa
/* 2 */
},
{
"ECDSA"
,
TLSEXT_signature_ecdsa
/* 3 */
},
{
NULL
}
};
/* from rfc5246 7.4.1.4.1. */
static
STRINT_PAIR
signature_tls12_hash_list
[]
=
{
{
"none"
,
TLSEXT_hash_none
/* 0 */
},
{
"MD5"
,
TLSEXT_hash_md5
/* 1 */
},
{
"SHA1"
,
TLSEXT_hash_sha1
/* 2 */
},
{
"SHA224"
,
TLSEXT_hash_sha224
/* 3 */
},
{
"SHA256"
,
TLSEXT_hash_sha256
/* 4 */
},
{
"SHA384"
,
TLSEXT_hash_sha384
/* 5 */
},
{
"SHA512"
,
TLSEXT_hash_sha512
/* 6 */
},
{
NULL
}
};
void
tlsext_cb
(
SSL
*
s
,
int
client_server
,
int
type
,
const
unsigned
char
*
data
,
int
len
,
void
*
arg
)
{
...
...
@@ -1282,9 +1329,9 @@ static STRINT_PAIR callback_types[] = {
{
"Supported Curve"
,
SSL_SECOP_CURVE_SUPPORTED
},
{
"Shared Curve"
,
SSL_SECOP_CURVE_SHARED
},
{
"Check Curve"
,
SSL_SECOP_CURVE_CHECK
},
{
"Supported Signature Algorithm
digest
"
,
SSL_SECOP_SIGALG_SUPPORTED
},
{
"Shared Signature Algorithm
digest
"
,
SSL_SECOP_SIGALG_SHARED
},
{
"Check Signature Algorithm
digest
"
,
SSL_SECOP_SIGALG_CHECK
},
{
"Supported Signature Algorithm"
,
SSL_SECOP_SIGALG_SUPPORTED
},
{
"Shared Signature Algorithm"
,
SSL_SECOP_SIGALG_SHARED
},
{
"Check Signature Algorithm"
,
SSL_SECOP_SIGALG_CHECK
},
{
"Signature Algorithm mask"
,
SSL_SECOP_SIGALG_MASK
},
{
"Certificate chain EE key"
,
SSL_SECOP_EE_KEY
},
{
"Certificate chain CA key"
,
SSL_SECOP_CA_KEY
},
...
...
@@ -1304,29 +1351,37 @@ static int security_callback_debug(const SSL *s, const SSL_CTX *ctx,
security_debug_ex
*
sdb
=
ex
;
int
rv
,
show_bits
=
1
,
cert_md
=
0
;
const
char
*
nm
;
int
show_nm
;
rv
=
sdb
->
old_cb
(
s
,
ctx
,
op
,
bits
,
nid
,
other
,
ex
);
if
(
rv
==
1
&&
sdb
->
verbose
<
2
)
return
1
;
BIO_puts
(
sdb
->
out
,
"Security callback: "
);
nm
=
lookup
(
op
,
callback_types
,
NULL
);
show_nm
=
nm
!=
NULL
;
switch
(
op
)
{
case
SSL_SECOP_TICKET
:
case
SSL_SECOP_COMPRESSION
:
show_bits
=
0
;
nm
=
NULL
;
show_
nm
=
0
;
break
;
case
SSL_SECOP_VERSION
:
BIO_printf
(
sdb
->
out
,
"Version=%s"
,
lookup
(
nid
,
ssl_versions
,
"???"
));
show_bits
=
0
;
nm
=
NULL
;
show_
nm
=
0
;
break
;
case
SSL_SECOP_CA_MD
:
case
SSL_SECOP_PEER_CA_MD
:
cert_md
=
1
;
break
;
case
SSL_SECOP_SIGALG_SUPPORTED
:
case
SSL_SECOP_SIGALG_SHARED
:
case
SSL_SECOP_SIGALG_CHECK
:
case
SSL_SECOP_SIGALG_MASK
:
show_nm
=
0
;
break
;
}
if
(
nm
!=
NULL
)
if
(
show_nm
)
BIO_printf
(
sdb
->
out
,
"%s="
,
nm
);
switch
(
op
&
SSL_SECOP_OTHER_TYPE
)
{
...
...
@@ -1373,27 +1428,28 @@ static int security_callback_debug(const SSL *s, const SSL_CTX *ctx,
{
const
unsigned
char
*
salg
=
other
;
const
char
*
sname
=
NULL
;
switch
(
salg
[
1
])
{
case
TLSEXT_signature_anonymous
:
sname
=
"anonymous"
;
break
;
case
TLSEXT_signature_rsa
:
sname
=
"RSA"
;
break
;
case
TLSEXT_signature_dsa
:
sname
=
"DSA"
;
break
;
case
TLSEXT_signature_ecdsa
:
sname
=
"ECDSA"
;
break
;
}
int
raw_sig_code
=
(
salg
[
0
]
<<
8
)
+
salg
[
1
];
/* always big endian (msb, lsb) */
/* raw_sig_code: signature_scheme from tls1.3, or signature_and_hash from tls1.2 */
BIO_puts
(
sdb
->
out
,
OBJ_nid2sn
(
nid
));
if
(
sname
)
BIO_printf
(
sdb
->
out
,
", algorithm=%s"
,
sname
);
if
(
nm
!=
NULL
)
BIO_printf
(
sdb
->
out
,
"%s"
,
nm
);
else
BIO_printf
(
sdb
->
out
,
", algid=%d"
,
salg
[
1
]);
break
;
BIO_printf
(
sdb
->
out
,
"s_cb.c:security_callback_debug op=0x%x"
,
op
);
sname
=
lookup
(
raw_sig_code
,
signature_tls13_scheme_list
,
NULL
);
if
(
sname
!=
NULL
)
{
BIO_printf
(
sdb
->
out
,
" scheme=%s"
,
sname
);
}
else
{
int
alg_code
=
salg
[
1
];
int
hash_code
=
salg
[
0
];
const
char
*
alg_str
=
lookup
(
alg_code
,
signature_tls12_alg_list
,
NULL
);
const
char
*
hash_str
=
lookup
(
hash_code
,
signature_tls12_hash_list
,
NULL
);
if
(
alg_str
!=
NULL
&&
hash_str
!=
NULL
)
BIO_printf
(
sdb
->
out
,
" digest=%s, algorithm=%s"
,
hash_str
,
alg_str
);
else
BIO_printf
(
sdb
->
out
,
" scheme=unknown(0x%04x)"
,
raw_sig_code
);
}
}
}
...
...
apps/s_client.c
View file @
375b8e67
...
...
@@ -2253,7 +2253,7 @@ int s_client_main(int argc, char **argv)
do
{
mbuf_len
=
BIO_gets
(
fbio
,
mbuf
,
BUFSIZZ
);
}
while
(
mbuf_len
>
3
&&
mbuf
[
3
]
=
=
'
-'
);
while
(
mbuf_len
>
3
&&
(
!
isdigit
(
mbuf
[
0
])
||
!
isdigit
(
mbuf
[
1
])
||
!
isdigit
(
mbuf
[
2
])
||
mbuf
[
3
]
!
=
'
'
)
);
(
void
)
BIO_flush
(
fbio
);
BIO_pop
(
fbio
);
BIO_free
(
fbio
);
...
...
apps/speed.c
View file @
375b8e67
...
...
@@ -489,30 +489,35 @@ static const OPT_PAIR rsa_choices[] = {
static
double
rsa_results
[
RSA_NUM
][
2
];
/* 2 ops: sign then verify */
#endif
/* OPENSSL_NO_RSA */
#define R_EC_P160 0
#define R_EC_P192 1
#define R_EC_P224 2
#define R_EC_P256 3
#define R_EC_P384 4
#define R_EC_P521 5
#define R_EC_K163 6
#define R_EC_K233 7
#define R_EC_K283 8
#define R_EC_K409 9
#define R_EC_K571 10
#define R_EC_B163 11
#define R_EC_B233 12
#define R_EC_B283 13
#define R_EC_B409 14
#define R_EC_B571 15
#define R_EC_BRP256R1 16
#define R_EC_BRP256T1 17
#define R_EC_BRP384R1 18
#define R_EC_BRP384T1 19
#define R_EC_BRP512R1 20
#define R_EC_BRP512T1 21
#define R_EC_X25519 22
#define R_EC_X448 23
enum
{
R_EC_P160
,
R_EC_P192
,
R_EC_P224
,
R_EC_P256
,
R_EC_P384
,
R_EC_P521
,
#ifndef OPENSSL_NO_EC2M
R_EC_K163
,
R_EC_K233
,
R_EC_K283
,
R_EC_K409
,
R_EC_K571
,
R_EC_B163
,
R_EC_B233
,
R_EC_B283
,
R_EC_B409
,
R_EC_B571
,
#endif
R_EC_BRP256R1
,
R_EC_BRP256T1
,
R_EC_BRP384R1
,
R_EC_BRP384T1
,
R_EC_BRP512R1
,
R_EC_BRP512T1
,
R_EC_X25519
,
R_EC_X448
};
#ifndef OPENSSL_NO_EC
static
OPT_PAIR
ecdsa_choices
[]
=
{
{
"ecdsap160"
,
R_EC_P160
},
...
...
@@ -521,6 +526,7 @@ static OPT_PAIR ecdsa_choices[] = {
{
"ecdsap256"
,
R_EC_P256
},
{
"ecdsap384"
,
R_EC_P384
},
{
"ecdsap521"
,
R_EC_P521
},
# ifndef OPENSSL_NO_EC2M
{
"ecdsak163"
,
R_EC_K163
},
{
"ecdsak233"
,
R_EC_K233
},
{
"ecdsak283"
,
R_EC_K283
},
...
...
@@ -531,6 +537,7 @@ static OPT_PAIR ecdsa_choices[] = {
{
"ecdsab283"
,
R_EC_B283
},
{
"ecdsab409"
,
R_EC_B409
},
{
"ecdsab571"
,
R_EC_B571
},
# endif
{
"ecdsabrp256r1"
,
R_EC_BRP256R1
},
{
"ecdsabrp256t1"
,
R_EC_BRP256T1
},
{
"ecdsabrp384r1"
,
R_EC_BRP384R1
},
...
...
@@ -549,6 +556,7 @@ static const OPT_PAIR ecdh_choices[] = {
{
"ecdhp256"
,
R_EC_P256
},
{
"ecdhp384"
,
R_EC_P384
},
{
"ecdhp521"
,
R_EC_P521
},
# ifndef OPENSSL_NO_EC2M
{
"ecdhk163"
,
R_EC_K163
},
{
"ecdhk233"
,
R_EC_K233
},
{
"ecdhk283"
,
R_EC_K283
},
...
...
@@ -559,6 +567,7 @@ static const OPT_PAIR ecdh_choices[] = {
{
"ecdhb283"
,
R_EC_B283
},
{
"ecdhb409"
,
R_EC_B409
},
{
"ecdhb571"
,
R_EC_B571
},
# endif
{
"ecdhbrp256r1"
,
R_EC_BRP256R1
},
{
"ecdhbrp256t1"
,
R_EC_BRP256T1
},
{
"ecdhbrp384r1"
,
R_EC_BRP384R1
},
...
...
@@ -1501,6 +1510,7 @@ int speed_main(int argc, char **argv)
{
"nistp256"
,
NID_X9_62_prime256v1
,
256
},
{
"nistp384"
,
NID_secp384r1
,
384
},
{
"nistp521"
,
NID_secp521r1
,
521
},
# ifndef OPENSSL_NO_EC2M
/* Binary Curves */
{
"nistk163"
,
NID_sect163k1
,
163
},
{
"nistk233"
,
NID_sect233k1
,
233
},
...
...
@@ -1512,6 +1522,7 @@ int speed_main(int argc, char **argv)
{
"nistb283"
,
NID_sect283r1
,
283
},
{
"nistb409"
,
NID_sect409r1
,
409
},
{
"nistb571"
,
NID_sect571r1
,
571
},
# endif
{
"brainpoolP256r1"
,
NID_brainpoolP256r1
,
256
},
{
"brainpoolP256t1"
,
NID_brainpoolP256t1
,
256
},
{
"brainpoolP384r1"
,
NID_brainpoolP384r1
,
384
},
...
...
@@ -2031,6 +2042,7 @@ int speed_main(int argc, char **argv)
}
}
}
# ifndef OPENSSL_NO_EC2M
ecdsa_c
[
R_EC_K163
][
0
]
=
count
/
1000
;
ecdsa_c
[
R_EC_K163
][
1
]
=
count
/
1000
/
2
;
for
(
i
=
R_EC_K233
;
i
<=
R_EC_K571
;
i
++
)
{
...
...
@@ -2059,6 +2071,7 @@ int speed_main(int argc, char **argv)
}
}
}
# endif
ecdh_c
[
R_EC_P160
][
0
]
=
count
/
1000
;
for
(
i
=
R_EC_P192
;
i
<=
R_EC_P521
;
i
++
)
{
...
...
@@ -2071,6 +2084,7 @@ int speed_main(int argc, char **argv)
}
}
}
# ifndef OPENSSL_NO_EC2M
ecdh_c
[
R_EC_K163
][
0
]
=
count
/
1000
;
for
(
i
=
R_EC_K233
;
i
<=
R_EC_K571
;
i
++
)
{
ecdh_c
[
i
][
0
]
=
ecdh_c
[
i
-
1
][
0
]
/
2
;
...
...
@@ -2093,6 +2107,7 @@ int speed_main(int argc, char **argv)
}
}
}
# endif
/* repeated code good to factorize */
ecdh_c
[
R_EC_BRP256R1
][
0
]
=
count
/
1000
;
for
(
i
=
R_EC_BRP384R1
;
i
<=
R_EC_BRP512R1
;
i
+=
2
)
{
...
...
@@ -2614,16 +2629,28 @@ int speed_main(int argc, char **argv)
for
(
k
=
0
;
k
<
loopargs_len
;
k
++
)
{
loopargs
[
k
].
ctx
=
EVP_CIPHER_CTX_new
();
EVP_CipherInit_ex
(
loopargs
[
k
].
ctx
,
evp_cipher
,
NULL
,
NULL
,
iv
,
decrypt
?
0
:
1
);
if
(
loopargs
[
k
].
ctx
==
NULL
)
{
BIO_printf
(
bio_err
,
"
\n
EVP_CIPHER_CTX_new failure
\n
"
);
exit
(
1
);
}
if
(
!
EVP_CipherInit_ex
(
loopargs
[
k
].
ctx
,
evp_cipher
,
NULL
,
NULL
,
iv
,
decrypt
?
0
:
1
))
{
BIO_printf
(
bio_err
,
"
\n
EVP_CipherInit_ex failure
\n
"
);
ERR_print_errors
(
bio_err
);
exit
(
1
);
}
EVP_CIPHER_CTX_set_padding
(
loopargs
[
k
].
ctx
,
0
);
keylen
=
EVP_CIPHER_CTX_key_length
(
loopargs
[
k
].
ctx
);
loopargs
[
k
].
key
=
app_malloc
(
keylen
,
"evp_cipher key"
);
EVP_CIPHER_CTX_rand_key
(
loopargs
[
k
].
ctx
,
loopargs
[
k
].
key
);
EVP_CipherInit_ex
(
loopargs
[
k
].
ctx
,
NULL
,
NULL
,
loopargs
[
k
].
key
,
NULL
,
-
1
);
if
(
!
EVP_CipherInit_ex
(
loopargs
[
k
].
ctx
,
NULL
,
NULL
,
loopargs
[
k
].
key
,
NULL
,
-
1
))
{
BIO_printf
(
bio_err
,
"
\n
EVP_CipherInit_ex failure
\n
"
);
ERR_print_errors
(
bio_err
);
exit
(
1
);
}
OPENSSL_clear_free
(
loopargs
[
k
].
key
,
keylen
);
}
...
...
crypto/aes/asm/aesp8-ppc.pl
View file @
375b8e67
#! /usr/bin/env perl
# Copyright 2014-201
8
The OpenSSL Project Authors. All Rights Reserved.
# Copyright 2014-201
9
The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
...
...
@@ -1829,7 +1829,7 @@ Lctr32_enc8x_three:
stvx_u $out1,$x10,$out
stvx_u $out2,$x20,$out
addi $out,$out,0x30
b Lc
bc_de
c8x_done
b Lc
tr32_en
c8x_done
.align 5
Lctr32_enc8x_two:
...
...
@@ -1841,7 +1841,7 @@ Lctr32_enc8x_two:
stvx_u $out0,$x00,$out
stvx_u $out1,$x10,$out
addi $out,$out,0x20
b Lc
bc_de
c8x_done
b Lc
tr32_en
c8x_done
.align 5
Lctr32_enc8x_one:
...
...
crypto/bio/b_addr.c
View file @
375b8e67
...
...
@@ -683,6 +683,12 @@ int BIO_lookup_ex(const char *host, const char *service, int lookup_type,
hints
.
ai_family
=
family
;
hints
.
ai_socktype
=
socktype
;
hints
.
ai_protocol
=
protocol
;
#ifdef AI_ADDRCONFIG
#ifdef AF_UNSPEC
if
(
family
==
AF_UNSPEC
)
#endif
hints
.
ai_flags
|=
AI_ADDRCONFIG
;
#endif
if
(
lookup_type
==
BIO_LOOKUP_SERVER
)
hints
.
ai_flags
|=
AI_PASSIVE
;
...
...
crypto/bio/bss_mem.c
View file @
375b8e67
...
...
@@ -57,7 +57,12 @@ static const BIO_METHOD secmem_method = {
NULL
,
/* mem_callback_ctrl */
};
/* BIO memory stores buffer and read pointer */
/*
* BIO memory stores buffer and read pointer
* however the roles are different for read only BIOs.
* In that case the readp just stores the original state