Skip to content
This repository was archived by the owner on Apr 23, 2023. It is now read-only.

Commit a2cf8f6

Browse files
committed
Create example for issue #43
1 parent ee6d1ab commit a2cf8f6

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

examples/Issue43.php

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
/*
3+
* This file is part of the PHPASN1 library.
4+
*
5+
* Copyright © Friedrich Große <[email protected]>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
11+
use FG\ASN1\ExplicitlyTaggedObject;
12+
use FG\ASN1\Universal\Enumerated;
13+
use FG\ASN1\Universal\ObjectIdentifier;
14+
use FG\ASN1\Universal\Sequence;
15+
16+
require_once __DIR__.'/../vendor/autoload.php';
17+
18+
// $data has been generated using https://pkijs.org/examples/OCSP_resp_complex_example.html
19+
$data = "MIIEXgoBAKCCBFcwggRTBgkrBgEFBQcwAQEEggREMIIEQDBeoSAwHjEcMAkGA1UE
20+
BhMCUlUwDwYDVQQDHggAVABlAHMAdBgPMjAxNTA3MTYxNzU0MjFaMCkwJzASMAcG
21+
BSsOAwIaBAEBBAEBAgEBgAAYDzIwMTUwNzE2MTc1NDIxWjALBgkqhkiG9w0BAQUD
22+
ggEBAG5B1xOnhgzgpsnspWd9c4eLIeOY1XXl7q2DUO2kGji4WbBXtWDMEv7QQO9/
23+
8devmyWNTFlkScbhiMPIEfoES6AyW8lZu9aON2tMssgj/Ev9+H+A2Z2WHQdeDtv7
24+
AS2mYa/7e3Ucsb63pAmBcxgDY55eHwmivBfZIWF6RjbzuJ0Uxz6NvrVEHlWz2KE0
25+
1n/7qbcwbHx8nu1s/IdswFG9iePm5sTsHPsbvsMQ5ZfkvkuL/t5WlLONlRYunOA4
26+
Nytf2lUIZbZznB0dvQG4vm1F9IQEcv1V0aU0D/ZU81I7lSPlPEv/DMTEo1vePTZv
27+
Gv8S1K+keDD/bfwM22d663Vfmt+gggLKMIICxjCCAsIwggGsoAMCAQICAQEwCwYJ
28+
KoZIhvcNAQEFMB4xHDAJBgNVBAYTAlJVMA8GA1UEAx4IAFQAZQBzAHQwHhcNMTMw
29+
MjAxMDAwMDAwWhcNMTYwMjAxMDAwMDAwWjAeMRwwCQYDVQQGEwJSVTAPBgNVBAMe
30+
CABUAGUAcwB0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsFlz/3yl
31+
mk+8uP4/x61UWBliqW08/1jMA83Qj2yuCAvhMhmuq8BvyWP4jnXoxTy3iTZFDXIj
32+
5Vg2FlHWna0TMsU5jlmv8W/mu9U3+q7i1+339JrEZkrDLNDpJ23gqKBgC1OaNH7+
33+
vicBRmoP5kj2X62XMaKT5TMFBZzTtSF7IaUjt9SVXQjG3aHIy7D1mOypvEw4LSS+
34+
RvvJTezSQeCoLpX7HziRnoVUNkJWZHL2wG5rb/SJzpXwHkRa7R250vN8TFtSSsp4
35+
YXzK6aks/qkxRJ1UkBLUAZlRasUD+zu8gyTIz0sNgFrOtx8EOzjZRiJ/vBiVOn88
36+
Brf4i0D+fVXmJQIDAQABow8wDTALBgNVHQ8EBAMCAAIwCwYJKoZIhvcNAQEFA4IB
37+
AQBfubKPTvmDGrDxoqCbPwFoPRC0STwPL2GV8f5sD/Sbyc0NoJdygUO2DvquGGn5
38+
6UJCfLo1u6Dn4zuuDs3m6if86HTpAf9Z3a72ok2Tor/NFwYt+vDOrFY5F4bXDZkf
39+
u4zuDLmjpj26Dk4te3BVohsLTXbvJ5a/TT2VanwNOyx85lXPxy3V8Rr1AwlmHZoz
40+
DDbUGbe/noUDJCgMjvaKKvLykIhIcW+g6W7SOcKRflw5H8kzDv816XFODSC3X1Uw
41+
o3aVy9du/0mH+g4HvyVVplO90tdoHD1gHUMZwuen4dbTzhWv4dtLFelWM5lGWbLE
42+
Wn7kJghclgIxv10nkGyfrowt";
43+
44+
// OCSP response status according to
45+
// https://tools.ietf.org/html/rfc6960#section-4.2.1
46+
$validResponseStatuses = [
47+
0 => 'Response has valid confirmations',
48+
1 => 'Illegal confirmation request',
49+
2 => 'Internal error in issuer',
50+
3 => 'Try again later',
51+
// (4) is not used
52+
5 => 'Must sign the request',
53+
6 => 'Request unauthorized',
54+
];
55+
56+
$ocspResponse = Sequence::fromBinary(base64_decode($data));
57+
58+
/** @var Enumerated $responseStatus */
59+
$elements = $ocspResponse->getChildren();
60+
$responseStatus = $elements[0];
61+
$responseStatusCode = $responseStatus->getContent();
62+
63+
echo PHP_EOL;
64+
echo "OCSP response status: $responseStatusCode ({$validResponseStatuses[$responseStatusCode]})" . PHP_EOL;
65+
66+
/** @var ExplicitlyTaggedObject $responseBytes */
67+
$responseBytes = $elements[1];
68+
69+
/** @var Sequence $responseBytesSequence */
70+
$responseBytesSequence = $responseBytes->getContent();
71+
72+
/** @var ObjectIdentifier $responseType */
73+
$responseType = $responseBytesSequence->getChildren()[0];
74+
echo "ResponseType: {$responseType}" . PHP_EOL;
75+
76+
$response = $responseBytesSequence->getChildren()[1];
77+
echo "Response (octet string): {$response}" . PHP_EOL;

0 commit comments

Comments
 (0)