1
0
mirror of https://github.com/php/php-src.git synced 2026-04-22 15:38:49 +02:00
Commit Graph

125219 Commits

Author SHA1 Message Date
Nikita Popov f9e701cde8 Use param API for creating EC keys
Rather than the deprecated low level APIs.
2021-08-09 12:22:57 +02:00
Nikita Popov 246698671f Test calculation of EC public key from private key 2021-08-09 12:01:35 +02:00
Nikita Popov 14d7c7e9ae Extract EC key initialization 2021-08-09 12:00:13 +02:00
Jakub Zelenka c90c9c7545 Make CertificateGenerator not dependent on external config in OpenSSL 3.0 2021-08-08 20:54:46 +01:00
Derick Rethans 69fb3efe80 Fixed test by adding echo and expected string 2021-08-08 18:48:39 +01:00
Derick Rethans d9c8e5a42e Fixed bug #80963: DateTimeZone::getTransitions() truncated 2021-08-08 17:27:21 +01:00
Derick Rethans 66ea59e38e Import timelib 2021.07
Fixes:
- Bug #80998 (Missing second with inverted interval). (Derick)
- Bug #81106 (Regression in 8.1: add() now truncate ->f). (Derick)
2021-08-08 17:22:06 +01:00
Nikita Popov 94bc5fce26 Use OpenSSL NCONF APIs (#7337) 2021-08-08 16:39:06 +01:00
Remi Collet a0972deb0f minimal fix for openssl 3.0 (#7002) 2021-08-08 16:38:30 +01:00
Derick Rethans 8426623521 Upgrade timelib to 2021.06
Fixes among others:
. Bug #79580 (date_create_from_format misses leap year).
. Bug #80974 (Wrong diff between 2 dates in different timezones).
. Bug #81097 (DateTimeZone silently falls back to UTC when providing an offset with seconds).
. Bug #81273 (Date interval calculation not correct).
2021-08-08 13:41:33 +01:00
Derick Rethans f094ee245a Fake merge timelib upgrade to 2020.03 into master, which will get a 2021.x upgrade very soon 2021-08-08 12:12:02 +01:00
Derick Rethans 4aeff60f34 Upgrade timelib to version 2020.03 2021-08-08 12:11:18 +01:00
Joe Watkins 00c668a15d Drop TsHashTable (#7351) 2021-08-08 10:45:44 +02:00
Ben Morss e0e2e9a547 Disable strict pixi requirement for libavif >= 0.9.1
Some AVIF image generators didn't include the PixelInformationProperty
(pixi), even though strictly speaking they should. In v0.9.2, libavif
began requiring this. Let's disable it so we can read those images too.

We also remove xfail from test on FreeBSD.

Closes GH-7253.
2021-08-06 20:24:59 +02:00
Nikita Popov 2bf316fdfc Switch manual DSA key generation to param API
This is very similar to the DH case, with the primary difference
that priv_key is ignored if pub_key is not given, rather than
generating pub_key from priv_key. Would be nice if these worked
the same (in which case we should probably also unify the keygen
for FFC algorithms, as it's very similar).
2021-08-06 17:17:07 +02:00
Nikita Popov a7740a0bf0 Switch manual DH key generation to param API
Instead of using the deprecated low-level interface.

This should also avoid issues with fetching parameters from
legacy keys, cf. https://github.com/openssl/openssl/issues/16247.
2021-08-06 16:55:24 +02:00
Nikita Popov f2d3e75933 Do not special case export of EC keys
All other private keys are exported in PKCS#8 format, while EC
keys use traditional format. Switch them to use PKCS#8 format as
well.

As the OpenSSL docs say:

> PEM_write_bio_PrivateKey_traditional() writes out a private key
> in the "traditional" format with a simple private key marker and
> should only be used for compatibility with legacy programs.
2021-08-06 11:25:44 +02:00
Nikita Popov 5843ba518c Generate pkcs12_read test inputs on the fly
The old p12_with_extra_certs.p12 file uses an unsupported something.
2021-08-06 10:48:03 +02:00
Nikita Popov a2c201351b Use different cipher in one more CMS test
Followup to ec4d926a80 -- I failed
to squash in this commit.
2021-08-06 10:23:23 +02:00
Nikita Popov d23a8b33ab Skip some tests if cipher not available 2021-08-06 10:22:39 +02:00
Nikita Popov 1cf4fb739f Use larger key size for DSA/DH tests
OpenSSL 3 validates allowed sizes strictly, pick minimum sizes
that are supported.
2021-08-05 17:47:56 +02:00
Nikita Popov ec4d926a80 Use different algorithm in cms tests
Same as with pkcs7, switch these tests to use an algorithm that
OpenSSL 3 supports out of the box.

Once again, we should consider changing the default or making it
required.
2021-08-05 16:32:27 +02:00
Nikita Popov 563b3e3472 Use different algorithm in pkcs7 tests
The default of OPENSSL_CIPHER_RC2_40 is no longer (non-legacy)
supported in OpenSSL 3, specify a newer cipher instead.

We should probably either change the default (if acceptable) or
make the parameter required.
2021-08-05 16:16:58 +02:00
Nikita Popov cb48260fdd Avoid DH_compute_key() with OpenSSL 3
Instead construct a proper EVP_PKEY for the public key and
perform a derive operation.

Unfortunately we can't use a common code path here, because
EVP_PKEY_set1_encoded_public_key() formerly known as
EVP_PKEY_set1_tls_encodedpoint() does not appear to work with
DH keys prior to OpenSSL 3.
2021-08-05 16:03:07 +02:00
Nikita Popov c6542b2a1e Extract php_openssl_pkey_derive() function
To allow sharing it with the openssl_dh_compute_key() implementation.
2021-08-05 15:50:25 +02:00
Nikita Popov 7168f71e00 Add test for openssl_dh_compute_key()
This function was not tested at all :(
2021-08-05 15:49:35 +02:00
Nikita Popov f878bbd96b Store whether pkey object contains private key
Rather than querying whether the EVP_PKEY contains private key
information, determine this at time of construction and store it
in the PHP object.

OpenSSL doesn't provide an API for this purpose, and seems
somewhat reluctant to add one, see
https://github.com/openssl/openssl/issues/9467.

To avoid using deprecated low-level APIs to determine whether
something is a private key ourselves, remember it at the point
of construction.
2021-08-05 12:59:13 +02:00
Nikita Popov cd8bf0b6bd Relax error check
The precise error is version-dependent, just check that there
is some kind of error reported.
2021-08-05 11:50:11 +02:00
Nikita Popov 13313d9b1b Use EVP_PKEY APIs for key generation
Use high level API instead of deprecated low level API.
2021-08-05 11:17:13 +02:00
Máté Kocsis da2cd931e5 Fix another DOMNameSpaceNode casing issue 2021-08-05 09:05:33 +02:00
Máté Kocsis ff32d39cdc Merge branch 'PHP-8.0'
* PHP-8.0
  Fix DOMNameSpaceNode casing
2021-08-05 09:03:34 +02:00
Máté Kocsis ee11a6065c Fix DOMNameSpaceNode casing 2021-08-05 09:02:31 +02:00
Christoph M. Becker 86bc48c9e7 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix #81327: Error build openssl extension on php 7.4.22
2021-08-04 18:45:56 +02:00
Christoph M. Becker 5628afb782 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix #81327: Error build openssl extension on php 7.4.22
2021-08-04 18:44:06 +02:00
Christoph M. Becker 6724d5d4c2 Fix #81327: Error build openssl extension on php 7.4.22
The recent fix for bug 52093 is not compatible with LibreSSL ≥ 2.7.0,
which we recognize as mostly OpenSSL 1.1.0 compatible, but they still
do not support `ASN1_INTEGER_set_int64()`.

Closes GH-7339.
2021-08-04 18:41:04 +02:00
Nikita Popov 384ad6e224 Use EVP_PKEY APIs for openssl_private_encrypt/public_decrypt
Use high level APIs instead of deprecated low level APIs.
2021-08-04 16:58:41 +02:00
Nikita Popov 0233afae27 Use EVP_PKEY API for openssl_public_encrypt/private_decrypt
Use the high level API instead of the deprecated low level API.
2021-08-04 16:44:29 +02:00
Nikita Popov 503146aa87 Avoid RC4 use in another test 2021-08-04 12:57:15 +02:00
Nikita Popov a80ae97d31 Only report provided ciphers in openssl_get_cipher_methods()
With OpenSSL 3 ciphers may be registered, but not provided. Make
sure that openssl_get_cipher_methods() only returns provided
ciphers, so that "in_array openssl_get_cipher_methods" style
checks continue working as expected.
2021-08-04 12:56:32 +02:00
Nikita Popov 9695936341 Don't test legacy algorithms in SPKI tests
MD4 and RMD160 may not be available on newer OpenSSL versions.
2021-08-04 12:02:58 +02:00
Nikita Popov 046b36bcf8 Use different cipher in openssl_seal() test
RC4 is insecure and not supported in newer versions.
2021-08-04 12:02:57 +02:00
Nikita Popov 0a530d7650 Adjust some tests for whitespace differences in OpenSSL 3
A trailing newline is no longer present in OpenSSL 3.
2021-08-04 10:01:19 +02:00
Nikita Popov 3ea57cf838 Reduce security level in some OpenSSL tests
This allows tests using older protocols and algorithms to work
under OpenSSL 3.

Also account for minor changes in error reporting.
2021-08-04 10:00:40 +02:00
Nikita Popov 6249172ae3 Optimize openssl memory leak test
Just do one call and check whether memory usage changes. Looping
this 100000 times is extremely slow with debug builds of openssl.
2021-08-04 10:00:28 +02:00
Christoph M. Becker c2b017a96d Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix #51498: imagefilledellipse does not work for large circles
2021-08-03 16:22:22 +02:00
Christoph M. Becker 213ad544e4 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix #51498: imagefilledellipse does not work for large circles
2021-08-03 16:20:16 +02:00
Christoph M. Becker c565555f03 Fix #51498: imagefilledellipse does not work for large circles
We backport the respective upstream fix[1].

[1] <https://github.com/libgd/libgd/commit/ace7fd88dc7571b3aa182f6b2604292f8461a819>

Closes GH-7329.
2021-08-03 16:17:47 +02:00
Ben Ramsey d23e601286 The master branch is now for 8.1.0beta3 2021-08-03 08:36:49 -05:00
Remi Collet 1aaec4df67 SKIPIF to EXTENSIONS 2021-08-03 12:16:13 +02:00
Remi Collet 649af56ad6 Merge branch 'PHP-8.0'
* PHP-8.0:
  typo
2021-08-03 12:10:30 +02:00