Merge branch 'PHP-8.0'

* PHP-8.0:
  Fix #52093: openssl_csr_sign truncates $serial
This commit is contained in:
Christoph M. Becker 2021-07-01 15:45:25 +02:00
commit 58ca47a06f
No known key found for this signature in database
GPG Key ID: D66C9593118BCCB6
2 changed files with 30 additions and 2 deletions

View File

@ -3220,8 +3220,11 @@ PHP_FUNCTION(openssl_csr_sign)
goto cleanup;
}
ASN1_INTEGER_set(X509_get_serialNumber(new_cert), (long)serial);
#if PHP_OPENSSL_API_VERSION >= 0x10100
ASN1_INTEGER_set_int64(X509_get_serialNumber(new_cert), serial);
#else
ASN1_INTEGER_set(X509_get_serialNumber(new_cert), serial);
#endif
X509_set_subject_name(new_cert, X509_REQ_get_subject_name(csr));

View File

@ -0,0 +1,25 @@
--TEST--
Bug #52093 (openssl_csr_sign truncates $serial)
--EXTENSIONS--
openssl
--SKIPIF--
<?php
if (PHP_INT_SIZE !== 8) die("skip this test is for 64bit platforms only");
?>
--FILE--
<?php
$dn = array(
"countryName" => "BR",
"stateOrProvinceName" => "Rio Grande do Sul",
"localityName" => "Porto Alegre",
"commonName" => "Henrique do N. Angelo",
"emailAddress" => "hnangelo@php.net"
);
$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privkey);
$cert = openssl_csr_sign($csr, null, $privkey, 365, [], PHP_INT_MAX);
var_dump(openssl_x509_parse($cert)['serialNumber']);
?>
--EXPECT--
string(19) "9223372036854775807"