1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace LiquidWeb\SslCertificate; |
4
|
|
|
|
5
|
|
|
use Carbon\Carbon; |
6
|
|
|
|
7
|
|
|
class SslRevocationList |
8
|
|
|
{ |
9
|
|
|
/** @var Carbon */ |
10
|
|
|
protected $timestamp; |
11
|
|
|
|
12
|
|
|
/** @var IssuerMeta */ |
13
|
|
|
protected $issuer; |
14
|
|
|
|
15
|
|
|
/** @var Carbon */ |
16
|
|
|
protected $createdAt; |
17
|
|
|
|
18
|
|
|
/** @var Carbon */ |
19
|
|
|
protected $expiration; |
20
|
|
|
|
21
|
|
|
/** @var int */ |
22
|
|
|
protected $ttl; |
23
|
|
|
|
24
|
|
|
/** @var string */ |
25
|
|
|
protected $signature; |
26
|
|
|
|
27
|
|
|
/** @var array */ |
28
|
|
|
protected $signatureAlgorithm = []; |
29
|
|
|
|
30
|
|
|
/** @var array */ |
31
|
|
|
protected $revokedCertsList = []; |
32
|
|
|
|
33
|
2 |
|
public static function createFromUrl(string $url): self |
34
|
|
|
{ |
35
|
2 |
|
$downloadResults = Downloader::downloadRevocationListFromUrl($url); |
36
|
2 |
|
$tbsCertList = $downloadResults['tbsCertList']; |
37
|
2 |
|
$issuer = IssuerMeta::fromRdnSequence($tbsCertList['issuer']['rdnSequence']); |
38
|
2 |
|
$createdAt = $tbsCertList['thisUpdate']['utcTime']; |
39
|
2 |
|
$expiration = $tbsCertList['nextUpdate']['utcTime']; |
40
|
2 |
|
$signature = $downloadResults['signature']; |
41
|
2 |
|
$signatureAlgorithm = $downloadResults['signatureAlgorithm']; |
42
|
2 |
|
$certsList = $tbsCertList['revokedCertificates']; |
43
|
|
|
|
44
|
2 |
|
return new static($issuer, $createdAt, $expiration, $signature, $signatureAlgorithm, $certsList); |
45
|
|
|
} |
46
|
|
|
|
47
|
2 |
|
public function __construct(IssuerMeta $issuer = null, string $createdAt = '', string $expiration = '', string $signature = '', array $signatureAlgorithm = [], array $certsList = []) |
48
|
|
|
{ |
49
|
2 |
|
$this->timestamp = Carbon::now(); |
50
|
2 |
|
$this->issuer = $issuer; |
51
|
2 |
|
$this->createdAt = Carbon::parse($createdAt)->setTimezone('UTC'); |
52
|
2 |
|
$this->expiration = Carbon::parse($expiration)->setTimezone('UTC'); |
53
|
2 |
|
$this->ttl = Carbon::parse($expiration)->diffInMinutes(Carbon::now()); |
54
|
2 |
|
$this->signature = $signature; |
55
|
2 |
|
$this->signatureAlgorithm = $signatureAlgorithm; |
56
|
2 |
|
$this->revokedCertsList = $certsList; |
57
|
2 |
|
} |
58
|
|
|
|
59
|
2 |
|
public function getRevokedList(): array |
60
|
|
|
{ |
61
|
2 |
|
return $this->revokedCertsList; |
62
|
|
|
} |
63
|
|
|
} |
64
|
|
|
|