mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-11-15 17:57:12 +00:00
Merge branch '3.0'
This commit is contained in:
commit
1e44f1fc8d
@ -26,22 +26,23 @@
|
|||||||
|
|
||||||
namespace phpseclib3\File;
|
namespace phpseclib3\File;
|
||||||
|
|
||||||
|
use DateTimeImmutable;
|
||||||
|
use DateTimeInterface;
|
||||||
|
use DateTimeZone;
|
||||||
use ParagonIE\ConstantTime\Base64;
|
use ParagonIE\ConstantTime\Base64;
|
||||||
use ParagonIE\ConstantTime\Hex;
|
use ParagonIE\ConstantTime\Hex;
|
||||||
|
use phpseclib3\Crypt\Common\PrivateKey;
|
||||||
|
use phpseclib3\Crypt\Common\PublicKey;
|
||||||
|
use phpseclib3\Crypt\DSA;
|
||||||
|
use phpseclib3\Crypt\EC;
|
||||||
use phpseclib3\Crypt\Hash;
|
use phpseclib3\Crypt\Hash;
|
||||||
use phpseclib3\Crypt\Random;
|
use phpseclib3\Crypt\Random;
|
||||||
use phpseclib3\Crypt\RSA;
|
use phpseclib3\Crypt\RSA;
|
||||||
use phpseclib3\Crypt\DSA;
|
use phpseclib3\Crypt\RSA\Formats\Keys\PSS;
|
||||||
use phpseclib3\Crypt\EC;
|
|
||||||
use phpseclib3\Crypt\Common\PublicKey;
|
|
||||||
use phpseclib3\Crypt\Common\PrivateKey;
|
|
||||||
use phpseclib3\Exception\UnsupportedAlgorithmException;
|
use phpseclib3\Exception\UnsupportedAlgorithmException;
|
||||||
use phpseclib3\File\ASN1\Element;
|
use phpseclib3\File\ASN1\Element;
|
||||||
use phpseclib3\Math\BigInteger;
|
|
||||||
use phpseclib3\File\ASN1\Maps;
|
use phpseclib3\File\ASN1\Maps;
|
||||||
use phpseclib3\Crypt\RSA\Formats\Keys\PSS;
|
use phpseclib3\Math\BigInteger;
|
||||||
use DateTime;
|
|
||||||
use DateTimeZone;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pure-PHP X.509 Parser
|
* Pure-PHP X.509 Parser
|
||||||
@ -1046,7 +1047,7 @@ class X509
|
|||||||
*
|
*
|
||||||
* If $date isn't defined it is assumed to be the current date.
|
* If $date isn't defined it is assumed to be the current date.
|
||||||
*
|
*
|
||||||
* @param \DateTime|string $date optional
|
* @param DateTimeInterface|string $date optional
|
||||||
* @access public
|
* @access public
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
@ -1057,7 +1058,7 @@ class X509
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($date)) {
|
if (!isset($date)) {
|
||||||
$date = new DateTime(null, new DateTimeZone(@date_default_timezone_get()));
|
$date = new DateTimeImmutable(null, new DateTimeZone(@date_default_timezone_get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
$notBefore = $this->currentCert['tbsCertificate']['validity']['notBefore'];
|
$notBefore = $this->currentCert['tbsCertificate']['validity']['notBefore'];
|
||||||
@ -1067,19 +1068,13 @@ class X509
|
|||||||
$notAfter = isset($notAfter['generalTime']) ? $notAfter['generalTime'] : $notAfter['utcTime'];
|
$notAfter = isset($notAfter['generalTime']) ? $notAfter['generalTime'] : $notAfter['utcTime'];
|
||||||
|
|
||||||
if (is_string($date)) {
|
if (is_string($date)) {
|
||||||
$date = new DateTime($date, new DateTimeZone(@date_default_timezone_get()));
|
$date = new DateTimeImmutable($date, new DateTimeZone(@date_default_timezone_get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
$notBefore = new DateTime($notBefore, new DateTimeZone(@date_default_timezone_get()));
|
$notBefore = new DateTimeImmutable($notBefore, new DateTimeZone(@date_default_timezone_get()));
|
||||||
$notAfter = new DateTime($notAfter, new DateTimeZone(@date_default_timezone_get()));
|
$notAfter = new DateTimeImmutable($notAfter, new DateTimeZone(@date_default_timezone_get()));
|
||||||
|
|
||||||
switch (true) {
|
return $date >= $notBefore && $date<= $notAfter;
|
||||||
case $date < $notBefore:
|
|
||||||
case $date > $notAfter:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2495,7 +2490,7 @@ class X509
|
|||||||
if ($date instanceof Element) {
|
if ($date instanceof Element) {
|
||||||
return $date;
|
return $date;
|
||||||
}
|
}
|
||||||
$dateObj = new DateTime($date, new DateTimeZone('GMT'));
|
$dateObj = new DateTimeImmutable($date, new DateTimeZone('GMT'));
|
||||||
$year = $dateObj->format('Y'); // the same way ASN1.php parses this
|
$year = $dateObj->format('Y'); // the same way ASN1.php parses this
|
||||||
if ($year < 2050) {
|
if ($year < 2050) {
|
||||||
return ['utcTime' => $date];
|
return ['utcTime' => $date];
|
||||||
@ -2571,10 +2566,10 @@ class X509
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$startDate = new DateTime('now', new DateTimeZone(@date_default_timezone_get()));
|
$startDate = new DateTimeImmutable('now', new DateTimeZone(@date_default_timezone_get()));
|
||||||
$startDate = !empty($this->startDate) ? $this->startDate : $startDate->format('D, d M Y H:i:s O');
|
$startDate = !empty($this->startDate) ? $this->startDate : $startDate->format('D, d M Y H:i:s O');
|
||||||
|
|
||||||
$endDate = new DateTime('+1 year', new DateTimeZone(@date_default_timezone_get()));
|
$endDate = new DateTimeImmutable('+1 year', new DateTimeZone(@date_default_timezone_get()));
|
||||||
$endDate = !empty($this->endDate) ? $this->endDate : $endDate->format('D, d M Y H:i:s O');
|
$endDate = !empty($this->endDate) ? $this->endDate : $endDate->format('D, d M Y H:i:s O');
|
||||||
|
|
||||||
/* "The serial number MUST be a positive integer"
|
/* "The serial number MUST be a positive integer"
|
||||||
@ -2839,7 +2834,7 @@ class X509
|
|||||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject : null;
|
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject : null;
|
||||||
$signatureAlgorithm = self::identifySignatureAlgorithm($issuer->privateKey);
|
$signatureAlgorithm = self::identifySignatureAlgorithm($issuer->privateKey);
|
||||||
|
|
||||||
$thisUpdate = new DateTime('now', new DateTimeZone(@date_default_timezone_get()));
|
$thisUpdate = new DateTimeImmutable('now', new DateTimeZone(@date_default_timezone_get()));
|
||||||
$thisUpdate = !empty($this->startDate) ? $this->startDate : $thisUpdate->format('D, d M Y H:i:s O');
|
$thisUpdate = !empty($this->startDate) ? $this->startDate : $thisUpdate->format('D, d M Y H:i:s O');
|
||||||
|
|
||||||
if (isset($crl->currentCert) && is_array($crl->currentCert) && isset($crl->currentCert['tbsCertList'])) {
|
if (isset($crl->currentCert) && is_array($crl->currentCert) && isset($crl->currentCert['tbsCertList'])) {
|
||||||
@ -3013,13 +3008,13 @@ class X509
|
|||||||
/**
|
/**
|
||||||
* Set certificate start date
|
* Set certificate start date
|
||||||
*
|
*
|
||||||
* @param string $date
|
* @param DateTimeInterface|string $date
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
public function setStartDate($date)
|
public function setStartDate($date)
|
||||||
{
|
{
|
||||||
if (!is_object($date) || !is_a($date, 'DateTime')) {
|
if (!is_object($date) || !($date instanceof DateTimeInterface)) {
|
||||||
$date = new DateTime($date, new DateTimeZone(@date_default_timezone_get()));
|
$date = new DateTimeImmutable($date, new DateTimeZone(@date_default_timezone_get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->startDate = $date->format('D, d M Y H:i:s O');
|
$this->startDate = $date->format('D, d M Y H:i:s O');
|
||||||
@ -3028,7 +3023,7 @@ class X509
|
|||||||
/**
|
/**
|
||||||
* Set certificate end date
|
* Set certificate end date
|
||||||
*
|
*
|
||||||
* @param string $date
|
* @param DateTimeInterface|string $date
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
public function setEndDate($date)
|
public function setEndDate($date)
|
||||||
@ -3045,8 +3040,8 @@ class X509
|
|||||||
$temp = chr(ASN1::TYPE_GENERALIZED_TIME) . ASN1::encodeLength(strlen($temp)) . $temp;
|
$temp = chr(ASN1::TYPE_GENERALIZED_TIME) . ASN1::encodeLength(strlen($temp)) . $temp;
|
||||||
$this->endDate = new Element($temp);
|
$this->endDate = new Element($temp);
|
||||||
} else {
|
} else {
|
||||||
if (!is_object($date) || !is_a($date, 'DateTime')) {
|
if (!is_object($date) || !($date instanceof DateTimeInterface)) {
|
||||||
$date = new DateTime($date, new DateTimeZone(@date_default_timezone_get()));
|
$date = new DateTimeImmutable($date, new DateTimeZone(@date_default_timezone_get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->endDate = $date->format('D, d M Y H:i:s O');
|
$this->endDate = $date->format('D, d M Y H:i:s O');
|
||||||
@ -3785,7 +3780,7 @@ class X509
|
|||||||
}
|
}
|
||||||
|
|
||||||
$i = count($rclist);
|
$i = count($rclist);
|
||||||
$revocationDate = new DateTime('now', new DateTimeZone(@date_default_timezone_get()));
|
$revocationDate = new DateTimeImmutable('now', new DateTimeZone(@date_default_timezone_get()));
|
||||||
$rclist[] = ['userCertificate' => $serial,
|
$rclist[] = ['userCertificate' => $serial,
|
||||||
'revocationDate' => $this->timeField($revocationDate->format('D, d M Y H:i:s O'))];
|
'revocationDate' => $this->timeField($revocationDate->format('D, d M Y H:i:s O'))];
|
||||||
return $i;
|
return $i;
|
||||||
|
Loading…
Reference in New Issue
Block a user