Version Description
- Bug fix in webhook.
- Updated Razorpay SDK.
- Tested up to Woocommerce 6.4.1
Download this release
Release Info
Developer | razorpay |
Plugin | Razorpay for WooCommerce |
Version | 3.4.1 |
Comparing to | |
See all releases |
Code changes from version 3.4.0 to 3.4.1
- includes/razorpay-webhook.php +27 -6
- razorpay-sdk/Razorpay.php +6 -4
- razorpay-sdk/libs/Requests-2.0.0/.editorconfig +15 -0
- razorpay-sdk/libs/Requests-2.0.0/CHANGELOG.md +946 -0
- razorpay-sdk/libs/Requests-2.0.0/LICENSE +49 -0
- razorpay-sdk/libs/Requests-2.0.0/README.md +168 -0
- razorpay-sdk/libs/Requests-2.0.0/certificates/cacert.pem +3232 -0
- razorpay-sdk/libs/Requests-2.0.0/composer.json +83 -0
- razorpay-sdk/libs/Requests-2.0.0/library/Deprecated.php +19 -0
- razorpay-sdk/libs/Requests-2.0.0/library/README.md +6 -0
- razorpay-sdk/libs/Requests-2.0.0/library/Requests.php +78 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Auth.php +36 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Auth/Basic.php +103 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Autoload.php +187 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Capability.php +36 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Cookie.php +527 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Cookie/Jar.php +186 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception.php +66 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/ArgumentCount.php +47 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http.php +78 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status304.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status305.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status306.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status400.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status401.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status402.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status403.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status404.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status405.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status406.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status407.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status408.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status409.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status410.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status411.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status412.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status413.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status414.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status415.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status416.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status417.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status418.php +35 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status428.php +35 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status429.php +35 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status431.php +35 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status500.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status501.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status502.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status503.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status504.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status505.php +31 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status511.php +35 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/StatusUnknown.php +49 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/InvalidArgument.php +41 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Transport.php +17 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Exception/Transport/Curl.php +80 -0
- razorpay-sdk/libs/Requests-2.0.0/src/HookManager.php +33 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Hooks.php +97 -0
- razorpay-sdk/libs/Requests-2.0.0/src/IdnaEncoder.php +418 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Ipv6.php +205 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Iri.php +1101 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Port.php +75 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Proxy.php +38 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Proxy/Http.php +167 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Requests.php +1079 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Response.php +166 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Response/Headers.php +124 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Session.php +304 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Ssl.php +182 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Transport.php +45 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Transport/Curl.php +641 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Transport/Fsockopen.php +506 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Utility/CaseInsensitiveDictionary.php +127 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Utility/FilteredIterator.php +82 -0
- razorpay-sdk/libs/Requests-2.0.0/src/Utility/InputValidator.php +109 -0
- razorpay-sdk/src/Api.php +1 -1
- razorpay-sdk/src/Collection.php +1 -1
- razorpay-sdk/src/Resource.php +9 -4
- readme.txt +6 -1
- woo-razorpay.php +2 -2
includes/razorpay-webhook.php
CHANGED
@@ -197,8 +197,10 @@ class RZP_Webhook
|
|
197 |
|
198 |
rzpLogInfo("Woocommerce orderId: $orderId webhook process intitiated for payment authorized event");
|
199 |
|
200 |
-
|
201 |
-
|
|
|
|
|
202 |
//To give the priority to callback script to compleate the execution fist adding this locking.
|
203 |
$transientData = get_transient('webhook_trigger_count_for_' . $orderId);
|
204 |
|
@@ -290,8 +292,10 @@ class RZP_Webhook
|
|
290 |
//
|
291 |
$orderId = $data['payload']['payment']['entity']['notes']['woocommerce_order_number'];
|
292 |
|
293 |
-
|
294 |
-
|
|
|
|
|
295 |
// If it is already marked as paid, ignore the event
|
296 |
if ($order->needs_payment() === false) {
|
297 |
return;
|
@@ -427,8 +431,11 @@ class RZP_Webhook
|
|
427 |
//
|
428 |
$orderId = $payment['notes']['woocommerce_order_number'];
|
429 |
|
430 |
-
|
431 |
-
|
|
|
|
|
|
|
432 |
// If it is already marked as unpaid, ignore the event
|
433 |
if ($order->needs_payment() === true) {
|
434 |
return;
|
@@ -485,4 +492,18 @@ class RZP_Webhook
|
|
485 |
// Graceful exit since payment is now refunded.
|
486 |
exit();
|
487 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
488 |
}
|
197 |
|
198 |
rzpLogInfo("Woocommerce orderId: $orderId webhook process intitiated for payment authorized event");
|
199 |
|
200 |
+
if(!empty($orderId))
|
201 |
+
{
|
202 |
+
$order = $this->checkIsObject($orderId);
|
203 |
+
}
|
204 |
//To give the priority to callback script to compleate the execution fist adding this locking.
|
205 |
$transientData = get_transient('webhook_trigger_count_for_' . $orderId);
|
206 |
|
292 |
//
|
293 |
$orderId = $data['payload']['payment']['entity']['notes']['woocommerce_order_number'];
|
294 |
|
295 |
+
if(!empty($orderId))
|
296 |
+
{
|
297 |
+
$order = $this->checkIsObject($orderId);
|
298 |
+
}
|
299 |
// If it is already marked as paid, ignore the event
|
300 |
if ($order->needs_payment() === false) {
|
301 |
return;
|
431 |
//
|
432 |
$orderId = $payment['notes']['woocommerce_order_number'];
|
433 |
|
434 |
+
if(!empty($orderId))
|
435 |
+
{
|
436 |
+
$order = $this->checkIsObject($orderId);
|
437 |
+
}
|
438 |
+
|
439 |
// If it is already marked as unpaid, ignore the event
|
440 |
if ($order->needs_payment() === true) {
|
441 |
return;
|
492 |
// Graceful exit since payment is now refunded.
|
493 |
exit();
|
494 |
}
|
495 |
+
|
496 |
+
public function checkIsObject($orderId)
|
497 |
+
{
|
498 |
+
$order = wc_get_order($orderId);
|
499 |
+
if(is_object($order))
|
500 |
+
{
|
501 |
+
return wc_get_order($orderId);
|
502 |
+
}
|
503 |
+
else
|
504 |
+
{
|
505 |
+
rzpLogInfo("Woocommerce order Object does not exist");
|
506 |
+
exit();
|
507 |
+
}
|
508 |
+
}
|
509 |
}
|
razorpay-sdk/Razorpay.php
CHANGED
@@ -1,14 +1,16 @@
|
|
1 |
<?php
|
2 |
|
3 |
// Include Requests only if not already defined
|
4 |
-
|
|
|
|
|
5 |
{
|
6 |
-
require_once __DIR__.'/libs/Requests-
|
7 |
}
|
8 |
|
9 |
try
|
10 |
{
|
11 |
-
Requests::
|
12 |
|
13 |
if (version_compare(Requests::VERSION, '1.6.0') === -1)
|
14 |
{
|
@@ -52,4 +54,4 @@ spl_autoload_register(function ($class)
|
|
52 |
{
|
53 |
require $file;
|
54 |
}
|
55 |
-
});
|
1 |
<?php
|
2 |
|
3 |
// Include Requests only if not already defined
|
4 |
+
const REQUESTS_SILENCE_PSR0_DEPRECATIONS = true;
|
5 |
+
|
6 |
+
if (class_exists('WpOrg\Requests\Autoload') === false)
|
7 |
{
|
8 |
+
require_once __DIR__.'/libs/Requests-2.0.0/src/Autoload.php';
|
9 |
}
|
10 |
|
11 |
try
|
12 |
{
|
13 |
+
WpOrg\Requests\Autoload::register();
|
14 |
|
15 |
if (version_compare(Requests::VERSION, '1.6.0') === -1)
|
16 |
{
|
54 |
{
|
55 |
require $file;
|
56 |
}
|
57 |
+
});
|
razorpay-sdk/libs/Requests-2.0.0/.editorconfig
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
root = true
|
2 |
+
|
3 |
+
[*]
|
4 |
+
charset = utf-8
|
5 |
+
end_of_line = lf
|
6 |
+
insert_final_newline = true
|
7 |
+
trim_trailing_whitespace = true
|
8 |
+
indent_style = tab
|
9 |
+
|
10 |
+
[{*.json,*.yml}]
|
11 |
+
indent_style = space
|
12 |
+
indent_size = 2
|
13 |
+
|
14 |
+
[*.md]
|
15 |
+
trim_trailing_whitespace = false
|
razorpay-sdk/libs/Requests-2.0.0/CHANGELOG.md
ADDED
@@ -0,0 +1,946 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Changelog
|
2 |
+
=========
|
3 |
+
|
4 |
+
2.0.0
|
5 |
+
-----
|
6 |
+
|
7 |
+
### BREAKING CHANGES
|
8 |
+
|
9 |
+
As Requests 2.0.0 is a major release, this version contains breaking changes. There is an [upgrade guide](https://requests.ryanmccue.info/docs/upgrading.html) available to guide you through making the necessary changes in your own code.
|
10 |
+
|
11 |
+
### Overview of changes
|
12 |
+
|
13 |
+
- **New minimum PHP version**
|
14 |
+
|
15 |
+
Support for PHP 5.2 - 5.5 has been dropped. The new minimum supported PHP version is now 5.6.
|
16 |
+
|
17 |
+
Support for HHVM has also been dropped formally now.
|
18 |
+
|
19 |
+
(props [@datagutten][gh-datagutten], [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#378][gh-378], [#470][gh-470], [#509][gh-509])
|
20 |
+
|
21 |
+
- **New release branch name**
|
22 |
+
|
23 |
+
The stable version of Requests can be found in the `stable` branch (was `master`).
|
24 |
+
Development of Requests happens in the `develop` branch.
|
25 |
+
|
26 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#463][gh-463], [#490][gh-490])
|
27 |
+
|
28 |
+
- **All code is now namespaced (PSR-4)**
|
29 |
+
|
30 |
+
The code within the Requests library has all been namespaced and now lives in the `WpOrg\Requests` namespace.
|
31 |
+
|
32 |
+
The namespaced classes can be found in the `src` directory. The old `library` directory and the files within are deprecated.
|
33 |
+
|
34 |
+
For a number of classes, some subtle changes have also been made to their base class name, like renaming the `Hooker` interface to `HookManager`.
|
35 |
+
|
36 |
+
A full backward-compatibility layer is available and using the non-namespaced class names will still work during the 2.x and 3.x release cycles, though a deprecation notice will be thrown the first time a class using one of the old PSR-0 based class names is requested.
|
37 |
+
For the lifetime of Requests 2.x, the deprecation notices can be disabled by defining a global `REQUESTS_SILENCE_PSR0_DEPRECATIONS` constant and
|
38 |
+
setting the value of this constant to `true`.
|
39 |
+
|
40 |
+
A complete "translation table" between the Requests 1.x and 2.x class names is available in the [upgrade guide](https://requests.ryanmccue.info/docs/upgrading.html).
|
41 |
+
|
42 |
+
Users of the Requests native custom autoloader will need to adjust their code to initialize the autoloader:
|
43 |
+
```php
|
44 |
+
// OLD: Using the custom autoloader in Requests 1.x.
|
45 |
+
require_once 'path/to/Requests/library/Requests.php';
|
46 |
+
Requests::register_autoloader();
|
47 |
+
|
48 |
+
// NEW: Using the custom autoloader in Requests 2.x.
|
49 |
+
require_once 'path/to/Requests/src/Autoload.php';
|
50 |
+
WpOrg\Requests\Autoload::register();
|
51 |
+
```
|
52 |
+
|
53 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#503][gh-503], [#519][gh-519], [#586][gh-586], [#587][gh-587], [#594][gh-594])
|
54 |
+
|
55 |
+
- **A large number of classes have been marked as `final`**
|
56 |
+
|
57 |
+
Marking a class as `final` prohibits extending it.
|
58 |
+
|
59 |
+
These changes were made after researching which classes were being extended in userland code and due diligence has been applied before making these changes. If this change is causing a problem we didn't anticipate, please [open an issue to report it](https://github.com/WordPress/Requests/issues/new/choose).
|
60 |
+
|
61 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#514][gh-514], [#534][gh-534])
|
62 |
+
|
63 |
+
- **Input validation**
|
64 |
+
|
65 |
+
All typical entry point methods in Requests will now, directly or indirectly, validate the received input parameters for being of the correct type.
|
66 |
+
When an incorrect parameter type is received, a catchable `WpOrg\Requests\Exception\InvalidArgument` exception will be thrown.
|
67 |
+
|
68 |
+
The input validation has been set up to be reasonably liberal, so if Requests was being used as per the documentation, this change should not affect you.
|
69 |
+
If you still find the input validation to be too strict and you have a good use-case of why it should be loosened for a particular entry point, please [open an issue to discuss this](https://github.com/WordPress/Requests/issues/new/choose).
|
70 |
+
|
71 |
+
The code within Requests itself has also received various improvements to be more type safe.
|
72 |
+
|
73 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#499][gh-499], [#542][gh-542], [#547][gh-547], [#558][gh-558], [#572][gh-572], [#573][gh-573], [#574][gh-574], [#591][gh-591], [#592][gh-592], [#593][gh-593], [#601][gh-601], [#602][gh-602], [#603][gh-603], [#604][gh-604], [#605][gh-605], [#609][gh-609], [#610][gh-610], [#611][gh-611], [#613][gh-613], [#614][gh-614], [#615][gh-615], [#620][gh-620], [#621][gh-621], [#629][gh-629])
|
74 |
+
|
75 |
+
- **Update bundled certificates**
|
76 |
+
|
77 |
+
The bundled certificates were updated with the latest version available (published 2021-10-26).
|
78 |
+
|
79 |
+
Previously the bundled certificates in Requests would include a small subset of expired certificates for legacy reasons.
|
80 |
+
This is no longer the case as of Requests 2.0.0.
|
81 |
+
|
82 |
+
> :warning: **Note**: the included certificates bundle is only intended as a fallback.
|
83 |
+
>
|
84 |
+
> This fallback should only be used for servers that are not properly configured for SSL verification. A continuously managed server should provide a more up-to-date certificate authority list than a software library which only gets updates once in a while.
|
85 |
+
>
|
86 |
+
> Setting the `$options['verify']` key to `true` when initiating a request enables certificate verification using the certificate authority list provided by the server environment, which is recommended.
|
87 |
+
|
88 |
+
The [documentation regarding Secure Requests with SSL](https://requests.ryanmccue.info/docs/usage-advanced.html#secure-requests-with-ssl) has also been updated to reflect this and it is recommended to have a read through.
|
89 |
+
|
90 |
+
The included certificates _file_ has now also been moved to a dedicated `/certificates` directory off the project root.
|
91 |
+
|
92 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [@wojsmol][gh-wojsmol], [@ZsgsDesign][gh-ZsgsDesign], [#535][gh-535], [#571][gh-571], [#577][gh-577], [#622][gh-622], [#632][gh-632])
|
93 |
+
|
94 |
+
- **New functionality**
|
95 |
+
|
96 |
+
The following new functionality has been added:
|
97 |
+
- A `public static` `WpOrg\Requests\Requests::has_capabilities($capabilities = array())` method is now available to check whether there is a transport available which supports the requested capabilities.
|
98 |
+
- A `public` `WpOrg\Requests\Response::decode_body($associative = true, $depth = 512, $options = 0)` method is now available to handle JSON-decoding a response body.
|
99 |
+
The method parameters correspond to the parameters of the PHP native [`json_decode()`](https://php.net/json-decode) function.
|
100 |
+
The method will throw an `WpOrg\Requests\Exception` when the response body is not valid JSON.
|
101 |
+
- A `WpOrg\Requests\Capability` interface. This interface provides constants for the known capabilities. Transports can be tested whether or not they support these capabilities.
|
102 |
+
Currently, the only capability supported is `Capability::SSL`.
|
103 |
+
- A `WpOrg\Requests\Port` class. This class encapsulates typical port numbers as constants and offers a `static` `Port::get($type)` method to retrieve a port number based on a request type.
|
104 |
+
Using this class when referring to port numbers is recommended.
|
105 |
+
- An `WpOrg\Requests\Exceptions\InvalidArgument` class. This class is intended for internal use only.
|
106 |
+
- An `WpOrg\Requests\Utility\InputValidator` class with helper methods for input validation. This class is intended for internal use only.
|
107 |
+
|
108 |
+
(props [@ccrims0n][gh-ccrims0n], [@dd32][gh-dd32], [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#167][gh-167], [#214][gh-214], [#250][gh-250], [#251][gh-251], [#492][gh-492], [#499][gh-499], [#538][gh-538], [#542][gh-542], [#547][gh-547], [#559][gh-559])
|
109 |
+
|
110 |
+
- **Changed functionality**
|
111 |
+
|
112 |
+
- The `WpOrg\Requests\Requests::decompress()` method has been fixed to recognize more compression levels and handle these correctly.
|
113 |
+
- The method signature of the `WpOrg\Requests\Transport::test()` interface method has been adjusted to enforce support for an optional `$capabilities` parameter.
|
114 |
+
The Request native `WpOrg\Requests\Transport\Curl::test()` and `WpOrg\Requests\Transport\Fsockopen::test()` methods both already supported this parameter.
|
115 |
+
- The `WpOrg\Requests\Transport\Curl::request()` and the `WpOrg\Requests\Transport\Fsockopen::request()` methods will now throw an `WpOrg\Requests\Exception` when the `$options['filename']` contains an invalid path.
|
116 |
+
- The `WpOrg\Requests\Transport\Curl::request()` method will no longer set the `CURLOPT_REFERER` option.
|
117 |
+
- The default value of the `$key` parameter in the `WpOrg\Requests\Cookie\Jar::normalize_cookie()` method has been changed from `null` to an empty string.
|
118 |
+
|
119 |
+
(props [@datagutten][gh-datagutten], [@dustinrue][gh-dustinrue], [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [@soulseekah][gh-soulseekah], [@twdnhfr][gh-twdnhfr], [#301][gh-301], [#309][gh-309], [#379][gh-379], [#444][gh-444], [#492][gh-492], [#610][gh-610])
|
120 |
+
|
121 |
+
- **Removed functionality**
|
122 |
+
|
123 |
+
The following methods, which were deprecated during the 1.x cycle, have now been removed:
|
124 |
+
- `Requests::flattern()`, use `WpOrg\Requests\Requests::flatten()` instead.
|
125 |
+
- `Requests_Cookie::formatForHeader()`, use `WpOrg\Requests\Cookie::format_for_header()` instead.
|
126 |
+
- `Requests_Cookie::formatForSetCookie()`, use `WpOrg\Requests\Cookie::format_for_set_cookie()` instead.
|
127 |
+
- `Requests_Cookie::parseFromHeaders()`, use `WpOrg\Requests\Cookie::parse_from_headers()` instead.
|
128 |
+
- `Requests_Cookie_Jar::normalizeCookie()`, use `WpOrg\Requests\Cookie\Jar::normalize_cookie()` instead
|
129 |
+
|
130 |
+
A duplicate method has been removed:
|
131 |
+
- `Requests::match_domain()`, use `WpOrg\Requests\Ssl::match_domain()` instead.
|
132 |
+
|
133 |
+
A redundant method has been removed:
|
134 |
+
- `Hooks::__construct()`.
|
135 |
+
|
136 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#510][gh-510], [#525][gh-525], [#617][gh-617])
|
137 |
+
|
138 |
+
- **Compatibility with PHP 8.0 named parameters**
|
139 |
+
|
140 |
+
All parameter names have been reviewed to prevent issues for users using PHP 8.0 named parameters and where relevant, a number of parameter names have been changed.
|
141 |
+
|
142 |
+
After this release, a parameter name rename will be treated as a breaking change (reserved for major releases) and will be marked as such in the changelog.
|
143 |
+
|
144 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#533][gh-533], [#560][gh-560], [#561][gh-561], [#599][gh-599], [#612][gh-612])
|
145 |
+
|
146 |
+
- **PHP 8.1 compatibility**
|
147 |
+
|
148 |
+
All known PHP 8.1 compatibility issues have been fixed and tests are now running (and passing) against PHP 8.1.
|
149 |
+
|
150 |
+
In case you still run into a PHP 8.1 deprecation notice or other PHP 8.1 related issue, please [open an issue to report it](https://github.com/WordPress/Requests/issues/new/choose).
|
151 |
+
|
152 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#498][gh-498], [#499][gh-499], [#500][gh-500], [#501][gh-501], [#505][gh-505], [#634][gh-634])
|
153 |
+
|
154 |
+
- **Updated documentation**
|
155 |
+
|
156 |
+
The [documentation website](https://requests.ryanmccue.info/) has been updated to reflect all the changes in Requests 2.0.0.
|
157 |
+
|
158 |
+
The [API documentation for Requests 2.x](https://requests.ryanmccue.info/api-2.x/) is now generated using [phpDocumentor](https://www.phpdoc.org/) :heart: and available on the website.
|
159 |
+
For the time being, the [Requests 1.x API documentation](https://requests.ryanmccue.info/api/) will still be available on the website as well.
|
160 |
+
|
161 |
+
(props [@costdev][gh-costdev], [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [@szepeviktor][gh-szepeviktor], [#476][gh-476], [#480][gh-480], [#489][gh-489], [#495][gh-495], [#526][gh-526], [#528][gh-528], [#532][gh-532], [#543][gh-543], [#562][gh-562], [#578][gh-578], [#590][gh-590], [#606][gh-606], [#607][gh-607], [#608][gh-608], [#618][gh-618], [#622][gh-622], [#625][gh-625], [#626][gh-626], [#630][gh-630], [#642][gh-642])
|
162 |
+
|
163 |
+
- **General housekeeping**
|
164 |
+
|
165 |
+
- In a number of places, code modernizations, possible now the minimum PHP version has gone up to PHP 5.6, have been applied.
|
166 |
+
([#504][gh-504], [#506][gh-506], [#512][gh-512], [#539][gh-539], [#541][gh-541], [#599][gh-599], [#623][gh-623])
|
167 |
+
|
168 |
+
- Lots of improvements were made to render the tests more reliable and increase the coverage.
|
169 |
+
([#446][gh-446], [#459][gh-459], [#472][gh-472], [#503][gh-503], [#508][gh-508], [#511][gh-511], [#520][gh-520], [#521][gh-521], [#548][gh-548], [#549][gh-549], [#550][gh-550], [#551][gh-551], [#552][gh-552], [#553][gh-553], [#554][gh-554], [#555][gh-555], [#556][gh-556], [#557][gh-557], [#558][gh-558], [#566][gh-566], [#581][gh-581], [#591][gh-591], [#595][gh-595], [#640][gh-640])
|
170 |
+
|
171 |
+
- The move for all CI to GitHub Actions has been finalized. Travis is dead, long live Travis and thanks for all the fish.
|
172 |
+
([#447][gh-447], [#575][gh-575], [#579][gh-579])
|
173 |
+
|
174 |
+
- A GitHub Actions workflow has been put in place to allow for automatically updating the website on releases.
|
175 |
+
This should allow for more rapid releases from now on.
|
176 |
+
([#466][gh-466], [#544][gh-544], [#545][gh-545], [#563][gh-563], [#569][gh-569], [#583][gh-583], [#626][gh-626])
|
177 |
+
|
178 |
+
- Development-only dependencies have been updated.
|
179 |
+
([#516][gh-516], [#517][gh-517])
|
180 |
+
|
181 |
+
- Various other general housekeeping and improvements for contributors.
|
182 |
+
([#488][gh-488], [#491][gh-491], [#523][gh-523], [#513][gh-513], [#515][gh-515], [#522][gh-522], [#524][gh-524], [#531][gh-531], [#535][gh-535], [#536][gh-536], [#537][gh-537], [#540][gh-540], [#588][gh-588], [#616][gh-616])
|
183 |
+
|
184 |
+
(props [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera])
|
185 |
+
|
186 |
+
[gh-642]: https://github.com/WordPress/Requests/pull/642
|
187 |
+
[gh-640]: https://github.com/WordPress/Requests/pull/640
|
188 |
+
[gh-634]: https://github.com/WordPress/Requests/pull/634
|
189 |
+
[gh-632]: https://github.com/WordPress/Requests/pull/632
|
190 |
+
[gh-630]: https://github.com/WordPress/Requests/pull/630
|
191 |
+
[gh-629]: https://github.com/WordPress/Requests/pull/629
|
192 |
+
[gh-626]: https://github.com/WordPress/Requests/pull/626
|
193 |
+
[gh-625]: https://github.com/WordPress/Requests/pull/625
|
194 |
+
[gh-623]: https://github.com/WordPress/Requests/pull/623
|
195 |
+
[gh-622]: https://github.com/WordPress/Requests/pull/622
|
196 |
+
[gh-621]: https://github.com/WordPress/Requests/pull/621
|
197 |
+
[gh-620]: https://github.com/WordPress/Requests/pull/620
|
198 |
+
[gh-618]: https://github.com/WordPress/Requests/pull/618
|
199 |
+
[gh-617]: https://github.com/WordPress/Requests/pull/617
|
200 |
+
[gh-616]: https://github.com/WordPress/Requests/pull/616
|
201 |
+
[gh-615]: https://github.com/WordPress/Requests/pull/615
|
202 |
+
[gh-614]: https://github.com/WordPress/Requests/pull/614
|
203 |
+
[gh-613]: https://github.com/WordPress/Requests/pull/613
|
204 |
+
[gh-612]: https://github.com/WordPress/Requests/pull/612
|
205 |
+
[gh-611]: https://github.com/WordPress/Requests/pull/611
|
206 |
+
[gh-610]: https://github.com/WordPress/Requests/pull/610
|
207 |
+
[gh-609]: https://github.com/WordPress/Requests/pull/609
|
208 |
+
[gh-608]: https://github.com/WordPress/Requests/pull/608
|
209 |
+
[gh-607]: https://github.com/WordPress/Requests/pull/607
|
210 |
+
[gh-606]: https://github.com/WordPress/Requests/pull/606
|
211 |
+
[gh-605]: https://github.com/WordPress/Requests/pull/605
|
212 |
+
[gh-604]: https://github.com/WordPress/Requests/pull/604
|
213 |
+
[gh-603]: https://github.com/WordPress/Requests/pull/603
|
214 |
+
[gh-602]: https://github.com/WordPress/Requests/pull/602
|
215 |
+
[gh-601]: https://github.com/WordPress/Requests/pull/601
|
216 |
+
[gh-599]: https://github.com/WordPress/Requests/pull/599
|
217 |
+
[gh-595]: https://github.com/WordPress/Requests/pull/595
|
218 |
+
[gh-594]: https://github.com/WordPress/Requests/pull/594
|
219 |
+
[gh-593]: https://github.com/WordPress/Requests/issues/593
|
220 |
+
[gh-592]: https://github.com/WordPress/Requests/pull/592
|
221 |
+
[gh-591]: https://github.com/WordPress/Requests/pull/591
|
222 |
+
[gh-590]: https://github.com/WordPress/Requests/issues/590
|
223 |
+
[gh-588]: https://github.com/WordPress/Requests/pull/588
|
224 |
+
[gh-587]: https://github.com/WordPress/Requests/pull/587
|
225 |
+
[gh-586]: https://github.com/WordPress/Requests/pull/586
|
226 |
+
[gh-583]: https://github.com/WordPress/Requests/pull/583
|
227 |
+
[gh-581]: https://github.com/WordPress/Requests/pull/581
|
228 |
+
[gh-579]: https://github.com/WordPress/Requests/pull/579
|
229 |
+
[gh-578]: https://github.com/WordPress/Requests/pull/578
|
230 |
+
[gh-577]: https://github.com/WordPress/Requests/pull/577
|
231 |
+
[gh-575]: https://github.com/WordPress/Requests/pull/575
|
232 |
+
[gh-574]: https://github.com/WordPress/Requests/pull/574
|
233 |
+
[gh-573]: https://github.com/WordPress/Requests/pull/573
|
234 |
+
[gh-572]: https://github.com/WordPress/Requests/pull/572
|
235 |
+
[gh-571]: https://github.com/WordPress/Requests/pull/571
|
236 |
+
[gh-569]: https://github.com/WordPress/Requests/pull/569
|
237 |
+
[gh-566]: https://github.com/WordPress/Requests/pull/566
|
238 |
+
[gh-563]: https://github.com/WordPress/Requests/pull/563
|
239 |
+
[gh-562]: https://github.com/WordPress/Requests/pull/562
|
240 |
+
[gh-561]: https://github.com/WordPress/Requests/pull/561
|
241 |
+
[gh-560]: https://github.com/WordPress/Requests/pull/560
|
242 |
+
[gh-559]: https://github.com/WordPress/Requests/pull/559
|
243 |
+
[gh-558]: https://github.com/WordPress/Requests/pull/558
|
244 |
+
[gh-557]: https://github.com/WordPress/Requests/pull/557
|
245 |
+
[gh-556]: https://github.com/WordPress/Requests/pull/556
|
246 |
+
[gh-555]: https://github.com/WordPress/Requests/pull/555
|
247 |
+
[gh-554]: https://github.com/WordPress/Requests/pull/554
|
248 |
+
[gh-553]: https://github.com/WordPress/Requests/pull/553
|
249 |
+
[gh-552]: https://github.com/WordPress/Requests/pull/552
|
250 |
+
[gh-551]: https://github.com/WordPress/Requests/pull/551
|
251 |
+
[gh-550]: https://github.com/WordPress/Requests/pull/550
|
252 |
+
[gh-549]: https://github.com/WordPress/Requests/pull/549
|
253 |
+
[gh-548]: https://github.com/WordPress/Requests/pull/548
|
254 |
+
[gh-547]: https://github.com/WordPress/Requests/pull/547
|
255 |
+
[gh-545]: https://github.com/WordPress/Requests/pull/545
|
256 |
+
[gh-544]: https://github.com/WordPress/Requests/pull/544
|
257 |
+
[gh-543]: https://github.com/WordPress/Requests/pull/543
|
258 |
+
[gh-542]: https://github.com/WordPress/Requests/pull/542
|
259 |
+
[gh-541]: https://github.com/WordPress/Requests/pull/541
|
260 |
+
[gh-540]: https://github.com/WordPress/Requests/pull/540
|
261 |
+
[gh-539]: https://github.com/WordPress/Requests/pull/539
|
262 |
+
[gh-538]: https://github.com/WordPress/Requests/pull/538
|
263 |
+
[gh-537]: https://github.com/WordPress/Requests/pull/537
|
264 |
+
[gh-536]: https://github.com/WordPress/Requests/pull/536
|
265 |
+
[gh-535]: https://github.com/WordPress/Requests/pull/535
|
266 |
+
[gh-534]: https://github.com/WordPress/Requests/pull/534
|
267 |
+
[gh-533]: https://github.com/WordPress/Requests/issues/533
|
268 |
+
[gh-532]: https://github.com/WordPress/Requests/pull/532
|
269 |
+
[gh-531]: https://github.com/WordPress/Requests/pull/531
|
270 |
+
[gh-528]: https://github.com/WordPress/Requests/pull/528
|
271 |
+
[gh-526]: https://github.com/WordPress/Requests/pull/526
|
272 |
+
[gh-525]: https://github.com/WordPress/Requests/pull/525
|
273 |
+
[gh-524]: https://github.com/WordPress/Requests/pull/524
|
274 |
+
[gh-523]: https://github.com/WordPress/Requests/pull/523
|
275 |
+
[gh-522]: https://github.com/WordPress/Requests/pull/522
|
276 |
+
[gh-521]: https://github.com/WordPress/Requests/pull/521
|
277 |
+
[gh-520]: https://github.com/WordPress/Requests/pull/520
|
278 |
+
[gh-519]: https://github.com/WordPress/Requests/pull/519
|
279 |
+
[gh-517]: https://github.com/WordPress/Requests/pull/517
|
280 |
+
[gh-516]: https://github.com/WordPress/Requests/pull/516
|
281 |
+
[gh-515]: https://github.com/WordPress/Requests/issues/515
|
282 |
+
[gh-514]: https://github.com/WordPress/Requests/issues/514
|
283 |
+
[gh-513]: https://github.com/WordPress/Requests/issues/513
|
284 |
+
[gh-512]: https://github.com/WordPress/Requests/issues/512
|
285 |
+
[gh-511]: https://github.com/WordPress/Requests/pull/511
|
286 |
+
[gh-510]: https://github.com/WordPress/Requests/pull/510
|
287 |
+
[gh-509]: https://github.com/WordPress/Requests/pull/509
|
288 |
+
[gh-508]: https://github.com/WordPress/Requests/pull/508
|
289 |
+
[gh-506]: https://github.com/WordPress/Requests/pull/506
|
290 |
+
[gh-505]: https://github.com/WordPress/Requests/pull/505
|
291 |
+
[gh-504]: https://github.com/WordPress/Requests/pull/504
|
292 |
+
[gh-503]: https://github.com/WordPress/Requests/pull/503
|
293 |
+
[gh-501]: https://github.com/WordPress/Requests/pull/501
|
294 |
+
[gh-500]: https://github.com/WordPress/Requests/pull/500
|
295 |
+
[gh-499]: https://github.com/WordPress/Requests/pull/499
|
296 |
+
[gh-498]: https://github.com/WordPress/Requests/issues/498
|
297 |
+
[gh-498]: https://github.com/WordPress/Requests/issues/495
|
298 |
+
[gh-492]: https://github.com/WordPress/Requests/pull/492
|
299 |
+
[gh-491]: https://github.com/WordPress/Requests/pull/491
|
300 |
+
[gh-490]: https://github.com/WordPress/Requests/pull/490
|
301 |
+
[gh-489]: https://github.com/WordPress/Requests/pull/489
|
302 |
+
[gh-488]: https://github.com/WordPress/Requests/pull/488
|
303 |
+
[gh-480]: https://github.com/WordPress/Requests/issues/480
|
304 |
+
[gh-476]: https://github.com/WordPress/Requests/issues/476
|
305 |
+
[gh-472]: https://github.com/WordPress/Requests/issues/472
|
306 |
+
[gh-470]: https://github.com/WordPress/Requests/pull/470
|
307 |
+
[gh-466]: https://github.com/WordPress/Requests/issues/466
|
308 |
+
[gh-463]: https://github.com/WordPress/Requests/issues/463
|
309 |
+
[gh-460]: https://github.com/WordPress/Requests/issues/460
|
310 |
+
[gh-459]: https://github.com/WordPress/Requests/issues/459
|
311 |
+
[gh-447]: https://github.com/WordPress/Requests/pull/447
|
312 |
+
[gh-446]: https://github.com/WordPress/Requests/pull/446
|
313 |
+
[gh-444]: https://github.com/WordPress/Requests/pull/444
|
314 |
+
[gh-379]: https://github.com/WordPress/Requests/pull/379
|
315 |
+
[gh-378]: https://github.com/WordPress/Requests/issues/378
|
316 |
+
[gh-309]: https://github.com/WordPress/Requests/pull/309
|
317 |
+
[gh-301]: https://github.com/WordPress/Requests/issues/301
|
318 |
+
[gh-251]: https://github.com/WordPress/Requests/pull/251
|
319 |
+
[gh-250]: https://github.com/WordPress/Requests/issues/250
|
320 |
+
[gh-214]: https://github.com/WordPress/Requests/pull/214
|
321 |
+
[gh-167]: https://github.com/WordPress/Requests/issues/167
|
322 |
+
|
323 |
+
1.8.1
|
324 |
+
-----
|
325 |
+
|
326 |
+
### Overview of changes
|
327 |
+
- The `Requests::VERSION` constant has been updated to reflect the actual version for the release. [@jrfnl][gh-jrfnl], [#485][gh-485]
|
328 |
+
- Update the `.gitattributes` file to include fewer files in the distribution. [@mbabker][gh-mbabker], [#484][gh-484]
|
329 |
+
- Added a release checklist. [@jrfnl][gh-jrfnl], [#483][gh-483]
|
330 |
+
- Various minor updates to the documentation and the website. [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#477][gh-477], [#478][gh-478], [#479][gh-479], [#481][gh-481], [#482][gh-482]
|
331 |
+
|
332 |
+
[gh-477]: https://github.com/WordPress/Requests/issues/477
|
333 |
+
[gh-478]: https://github.com/WordPress/Requests/issues/478
|
334 |
+
[gh-479]: https://github.com/WordPress/Requests/issues/479
|
335 |
+
[gh-481]: https://github.com/WordPress/Requests/issues/481
|
336 |
+
[gh-482]: https://github.com/WordPress/Requests/issues/482
|
337 |
+
[gh-483]: https://github.com/WordPress/Requests/issues/483
|
338 |
+
[gh-484]: https://github.com/WordPress/Requests/issues/484
|
339 |
+
[gh-485]: https://github.com/WordPress/Requests/issues/485
|
340 |
+
|
341 |
+
|
342 |
+
1.8.0
|
343 |
+
-----
|
344 |
+
|
345 |
+
### IMPORTANT NOTES
|
346 |
+
|
347 |
+
#### Last release supporting PHP 5.2 - 5.5
|
348 |
+
|
349 |
+
Release 1.8.0 will be the last release with compatibility for PHP 5.2 - 5.5. With the next release (v2.0.0), the minimum PHP version will be bumped to 5.6.
|
350 |
+
|
351 |
+
#### Last release supporting PEAR distribution
|
352 |
+
|
353 |
+
Release 1.8.0 will be the last release to be distributed via PEAR. From release 2.0.0 onwards, consumers of this library will have to switch to Composer to receive updates.
|
354 |
+
|
355 |
+
### Overview of changes
|
356 |
+
|
357 |
+
- **[SECURITY FIX] Disable deserialization in `FilteredIterator`**
|
358 |
+
|
359 |
+
A `Deserialization of Untrusted Data` weakness was found in the `FilteredIterator` class.
|
360 |
+
|
361 |
+
This security vulnerability was first reported to the WordPress project. The security fix applied to WordPress has been ported back into the library.
|
362 |
+
|
363 |
+
GitHub security advisory: [Insecure Deserialization of untrusted data](https://github.com/WordPress/Requests/security/advisories/GHSA-52qp-jpq7-6c54)
|
364 |
+
|
365 |
+
CVE: [CVE-2021-29476 - Deserialization of Untrusted Data](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2021-29476)
|
366 |
+
|
367 |
+
Related WordPress CVE: [https://cve.mitre.org/cgi-bin/cvename.cgi?name=2020-28032](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2020-28032)
|
368 |
+
|
369 |
+
(props [@dd32][gh-dd32], [@desrosj][gh-desrosj], [@jrfnl][gh-jrfnl], [@peterwilsoncc][gh-peterwilsoncc], [@SergeyBiryukov][gh-SergeyBiryukov], [@whyisjake][gh-whyisjake], [@xknown][gh-xknown], [#421][gh-421], [#422][gh-422])
|
370 |
+
|
371 |
+
|
372 |
+
- **Repository moved to `WordPress\Requests`**
|
373 |
+
|
374 |
+
The `Requests` library has been moved to the WordPress GitHub organization and can now be found under `https://github.com/WordPress/Requests`.
|
375 |
+
|
376 |
+
All links in code and documentation were updated accordingly.
|
377 |
+
|
378 |
+
Note: the Composer package name remains unchanged ([`rmccue/requests`](https://packagist.org/packages/rmccue/requests)), as well as the documentation site ([requests.ryanmccue.info](https://requests.ryanmccue.info/)).
|
379 |
+
|
380 |
+
(props [@dd32][gh-dd32], [@JustinyAhin][gh-JustinyAhin], [@jrfnl][gh-jrfnl], [@rmccue][gh-rmccue], [#440][gh-440], [#441][gh-441], [#448][gh-448])
|
381 |
+
|
382 |
+
|
383 |
+
- **Manage `"Expect"` header with `cURL` transport**
|
384 |
+
|
385 |
+
By default, `cURL` adds a `Expect: 100-Continue` header to certain requests. This can add as much as a second delay to requests done using `cURL`. This is [discussed on the cURL mailing list](https://curl.se/mail/lib-2017-07/0013.html).
|
386 |
+
|
387 |
+
To prevent this, `Requests` now adds an empty `"Expect"` header to requests that are smaller than 1 MB and use HTTP/1.1.
|
388 |
+
|
389 |
+
(props [@carlalexander][gh-carlalexander], [@schlessera][gh-schlessera], [@TimothyBJacobs][gh-TimothyBJacobs], [#453][gh-453], [#454][gh-454], [#469][gh-469])
|
390 |
+
|
391 |
+
|
392 |
+
- **Update bundled certificates as of 2021-02-12**
|
393 |
+
|
394 |
+
The bundled certificates were updated. A small subset of expired certificates are still included for legacy reasons (and support).
|
395 |
+
|
396 |
+
(props [@ozh][gh-ozh], [@patmead][gh-patmead], [@schlessera][gh-schlessera], [@todeveni][gh-todeveni], [#385][gh-385], [#398][gh-398], [#451][gh-451])
|
397 |
+
|
398 |
+
|
399 |
+
- **Add required `Content-*` headers for empty `POST` requests**
|
400 |
+
|
401 |
+
Sends the `Content-Length` and `Content-Type` headers even for empty `POST` requests, as the length is expected as per [RFC2616 Section 14.13](https://tools.ietf.org/html/rfc2616#section-14.13):
|
402 |
+
```
|
403 |
+
Content-Length header "SHOULD" be included. In practice, it is not
|
404 |
+
used for GET nor HEAD requests, but is expected for POST requests.
|
405 |
+
```
|
406 |
+
|
407 |
+
(props [@dd32][gh-dd32], [@gstrauss][gh-gstrauss], [@jrfnl][gh-jrfnl], [@soulseekah][gh-soulseekah], [#248][gh-248], [#249][gh-249], [#318][gh-318], [#368][gh-368])
|
408 |
+
|
409 |
+
|
410 |
+
- **Ignore locale when creating the HTTP version string from a float**
|
411 |
+
|
412 |
+
The previous behavior allowed for the locale to mess up the float to string conversion resulting in a `GET / HTTP/1,1` instead of `GET / HTTP/1.1` request.
|
413 |
+
|
414 |
+
(props [@tonebender][gh-tonebender], [@Zegnat][gh-Zegnat], [#335][gh-335], [#339][gh-339])
|
415 |
+
|
416 |
+
|
417 |
+
- **Make `verify => false` work with `fsockopen`**
|
418 |
+
|
419 |
+
This allows the `fsockopen` transport now to ignore SSL failures when requested.
|
420 |
+
|
421 |
+
(props [@soulseekah][gh-soulseekah], [#310][gh-310], [#311][gh-311])
|
422 |
+
|
423 |
+
|
424 |
+
- **Only include port number in the `Host` header if it differs from the default**
|
425 |
+
|
426 |
+
The code was not violating the RFC per se, but also not following standard practice of leaving the port off when it is the default port for the scheme, which could lead to connectivity issues.
|
427 |
+
|
428 |
+
(props [@amandato][gh-amandato], [@dd32][gh-dd32], [#238][gh-238])
|
429 |
+
|
430 |
+
|
431 |
+
- **Fix PHP cross-version compatibility**
|
432 |
+
|
433 |
+
Important fixes have been made to improve cross-version compatibility of the code across all supported PHP versions.
|
434 |
+
|
435 |
+
- Use documented order for `implode()` arguments.
|
436 |
+
- Harden type handling when no domain was passed.
|
437 |
+
- Explicitly cast `$url` property to `string` in `Requests::parse_response()`.
|
438 |
+
- Initialize `$body` property to an empty string in `Requests::parse_response()`.
|
439 |
+
- Ensure the stream handle is valid before trying to close it.
|
440 |
+
- Ensure the `$callback` in the `FilteredIterator` is callable before calling it.
|
441 |
+
|
442 |
+
(props [@aaronjorbin][gh-aaronjorbin], [@jrfnl][gh-jrfnl], [#346][gh-346], [#370][gh-370], [#425][gh-425], [#426][gh-426], [#456][gh-456], [#457][gh-457])
|
443 |
+
|
444 |
+
|
445 |
+
- **Improve testing**
|
446 |
+
|
447 |
+
Lots of improvements were made to render the tests more reliable and increase the coverage.
|
448 |
+
|
449 |
+
And to top it all off, all tests are now run against all supported PHP versions, including PHP 8.0.
|
450 |
+
|
451 |
+
(props [@datagutten][gh-datagutten], [@jrfnl][gh-jrfnl], [@schlessera][gh-schlessera], [#345][gh-345], [#351][gh-351], [#355][gh-355], [#366][gh-366], [#412][gh-412], [#414][gh-414], [#445][gh-445], [#458][gh-458], [#464][gh-464])
|
452 |
+
|
453 |
+
|
454 |
+
- **Improve code quality and style**
|
455 |
+
|
456 |
+
A whole swoop of changes has been made to harden the code and make it more consistent.
|
457 |
+
|
458 |
+
The code style has been made consistent across both code and tests and is now enforced via a custom PHPCS rule set.
|
459 |
+
|
460 |
+
The WordPress Coding Standards were chosen as the basis for the code style checks as most contributors to this library originate from the WordPress community and will be familiar with this code style.
|
461 |
+
|
462 |
+
Main differences from the WordPress Coding Standards based on discussions and an analysis of the code styles already in use:
|
463 |
+
|
464 |
+
- No whitespace on the inside of parentheses.
|
465 |
+
- No Yoda conditions.
|
466 |
+
|
467 |
+
A more detailed overview of the decisions that went into the final code style rules can be found at [#434][gh-434].
|
468 |
+
|
469 |
+
(props [@jrfnl][gh-jrfnl], [@KasperFranz][gh-KasperFranz], [@ozh][gh-ozh], [@schlessera][gh-schlessera], [@TysonAndre][gh-TysonAndre], [#263][gh-263], [#296][gh-296], [#328][gh-328], [#358][gh-358], [#359][gh-359], [#360][gh-360], [#361][gh-361], [#362][gh-362], [#363][gh-363], [#364][gh-364], [#386][gh-386], [#396][gh-396], [#399][gh-399], [#400][gh-400], [#401][gh-401], [#402][gh-402], [#403][gh-403], [#404][gh-404], [#405][gh-405], [#406][gh-406], [#408][gh-408], [#409][gh-409], [#410][gh-410], [#411][gh-411], [#413][gh-413], [#415][gh-415], [#416][gh-416], [#417][gh-417], [#423][gh-423], [#424][gh-424], [#434][gh-434])
|
470 |
+
|
471 |
+
|
472 |
+
- **Replace Travis CI with GitHub Actions (partial)**
|
473 |
+
|
474 |
+
The entire CI setup is gradually being moved from Travis CI to GitHub Actions.
|
475 |
+
|
476 |
+
At this point, GitHub Actions takes over the CI from PHP 5.5 onwards, leaving Travis CI as a fallback for lower PHP versions.
|
477 |
+
|
478 |
+
This move will be completed after the planned minimum version bump to PHP 5.6+ with the next release, at which point we will get rid of all the remaining Travis CI integrations.
|
479 |
+
|
480 |
+
(props [@dd32][gh-dd32], [@desrosj][gh-desrosj], [@jrfnl][gh-jrfnl], [@ntwb][gh-ntwb], [@ozh][gh-ozh], [@schlessera][gh-schlessera], [@TimothyBJacobs][gh-TimothyBJacobs], [@TysonAndre][gh-TysonAndre], [#280][gh-280], [#298][gh-298], [#302][gh-302], [#303][gh-303], [#352][gh-352], [#353][gh-353], [#354][gh-354], [#356][gh-356], [#388][gh-388], [#397][gh-397], [#428][gh-428], [#436][gh-436], [#439][gh-439], [#461][gh-461], [#467][gh-467])
|
481 |
+
|
482 |
+
|
483 |
+
- **Update and improve documentation**
|
484 |
+
- Use clearer and more inclusive language.
|
485 |
+
- Update the GitHub Pages site.
|
486 |
+
- Update content and various tweaks to the markdown.
|
487 |
+
- Fix code blocks in `README.md` file.
|
488 |
+
- Add pagination to documentation pages.
|
489 |
+
|
490 |
+
(props [@desrosj][gh-desrosj], [@jrfnl][gh-jrfnl], [@JustinyAhin][gh-JustinyAhin], [@tnorthcutt][gh-tnorthcutt], [#334][gh-334], [#367][gh-367], [#387][gh-387], [#443][gh-443], [#462][gh-462], [#465][gh-465], [#468][gh-468], [#471][gh-471] )
|
491 |
+
|
492 |
+
[gh-194]: https://github.com/WordPress/Requests/issues/194
|
493 |
+
[gh-238]: https://github.com/WordPress/Requests/issues/238
|
494 |
+
[gh-248]: https://github.com/WordPress/Requests/issues/248
|
495 |
+
[gh-249]: https://github.com/WordPress/Requests/issues/249
|
496 |
+
[gh-263]: https://github.com/WordPress/Requests/issues/263
|
497 |
+
[gh-280]: https://github.com/WordPress/Requests/issues/280
|
498 |
+
[gh-296]: https://github.com/WordPress/Requests/issues/296
|
499 |
+
[gh-298]: https://github.com/WordPress/Requests/issues/298
|
500 |
+
[gh-302]: https://github.com/WordPress/Requests/issues/302
|
501 |
+
[gh-303]: https://github.com/WordPress/Requests/issues/303
|
502 |
+
[gh-310]: https://github.com/WordPress/Requests/issues/310
|
503 |
+
[gh-311]: https://github.com/WordPress/Requests/issues/311
|
504 |
+
[gh-318]: https://github.com/WordPress/Requests/issues/318
|
505 |
+
[gh-328]: https://github.com/WordPress/Requests/issues/328
|
506 |
+
[gh-334]: https://github.com/WordPress/Requests/issues/334
|
507 |
+
[gh-335]: https://github.com/WordPress/Requests/issues/335
|
508 |
+
[gh-339]: https://github.com/WordPress/Requests/issues/339
|
509 |
+
[gh-345]: https://github.com/WordPress/Requests/issues/345
|
510 |
+
[gh-346]: https://github.com/WordPress/Requests/issues/346
|
511 |
+
[gh-351]: https://github.com/WordPress/Requests/issues/351
|
512 |
+
[gh-352]: https://github.com/WordPress/Requests/issues/352
|
513 |
+
[gh-353]: https://github.com/WordPress/Requests/issues/353
|
514 |
+
[gh-354]: https://github.com/WordPress/Requests/issues/354
|
515 |
+
[gh-355]: https://github.com/WordPress/Requests/issues/355
|
516 |
+
[gh-356]: https://github.com/WordPress/Requests/issues/356
|
517 |
+
[gh-358]: https://github.com/WordPress/Requests/issues/358
|
518 |
+
[gh-359]: https://github.com/WordPress/Requests/issues/359
|
519 |
+
[gh-360]: https://github.com/WordPress/Requests/issues/360
|
520 |
+
[gh-361]: https://github.com/WordPress/Requests/issues/361
|
521 |
+
[gh-362]: https://github.com/WordPress/Requests/issues/362
|
522 |
+
[gh-363]: https://github.com/WordPress/Requests/issues/363
|
523 |
+
[gh-364]: https://github.com/WordPress/Requests/issues/364
|
524 |
+
[gh-366]: https://github.com/WordPress/Requests/issues/366
|
525 |
+
[gh-367]: https://github.com/WordPress/Requests/issues/367
|
526 |
+
[gh-367]: https://github.com/WordPress/Requests/issues/367
|
527 |
+
[gh-368]: https://github.com/WordPress/Requests/issues/368
|
528 |
+
[gh-370]: https://github.com/WordPress/Requests/issues/370
|
529 |
+
[gh-385]: https://github.com/WordPress/Requests/issues/385
|
530 |
+
[gh-386]: https://github.com/WordPress/Requests/issues/386
|
531 |
+
[gh-387]: https://github.com/WordPress/Requests/issues/387
|
532 |
+
[gh-388]: https://github.com/WordPress/Requests/issues/388
|
533 |
+
[gh-396]: https://github.com/WordPress/Requests/issues/396
|
534 |
+
[gh-397]: https://github.com/WordPress/Requests/issues/397
|
535 |
+
[gh-398]: https://github.com/WordPress/Requests/issues/398
|
536 |
+
[gh-399]: https://github.com/WordPress/Requests/issues/399
|
537 |
+
[gh-400]: https://github.com/WordPress/Requests/issues/400
|
538 |
+
[gh-401]: https://github.com/WordPress/Requests/issues/401
|
539 |
+
[gh-402]: https://github.com/WordPress/Requests/issues/402
|
540 |
+
[gh-403]: https://github.com/WordPress/Requests/issues/403
|
541 |
+
[gh-404]: https://github.com/WordPress/Requests/issues/404
|
542 |
+
[gh-405]: https://github.com/WordPress/Requests/issues/405
|
543 |
+
[gh-406]: https://github.com/WordPress/Requests/issues/406
|
544 |
+
[gh-408]: https://github.com/WordPress/Requests/issues/408
|
545 |
+
[gh-409]: https://github.com/WordPress/Requests/issues/409
|
546 |
+
[gh-410]: https://github.com/WordPress/Requests/issues/410
|
547 |
+
[gh-411]: https://github.com/WordPress/Requests/issues/411
|
548 |
+
[gh-412]: https://github.com/WordPress/Requests/issues/412
|
549 |
+
[gh-413]: https://github.com/WordPress/Requests/issues/413
|
550 |
+
[gh-414]: https://github.com/WordPress/Requests/issues/414
|
551 |
+
[gh-415]: https://github.com/WordPress/Requests/issues/415
|
552 |
+
[gh-416]: https://github.com/WordPress/Requests/issues/416
|
553 |
+
[gh-417]: https://github.com/WordPress/Requests/issues/417
|
554 |
+
[gh-421]: https://github.com/WordPress/Requests/issues/421
|
555 |
+
[gh-422]: https://github.com/WordPress/Requests/issues/422
|
556 |
+
[gh-423]: https://github.com/WordPress/Requests/issues/423
|
557 |
+
[gh-424]: https://github.com/WordPress/Requests/issues/424
|
558 |
+
[gh-425]: https://github.com/WordPress/Requests/issues/425
|
559 |
+
[gh-426]: https://github.com/WordPress/Requests/issues/426
|
560 |
+
[gh-428]: https://github.com/WordPress/Requests/issues/428
|
561 |
+
[gh-434]: https://github.com/WordPress/Requests/issues/434
|
562 |
+
[gh-436]: https://github.com/WordPress/Requests/issues/436
|
563 |
+
[gh-439]: https://github.com/WordPress/Requests/issues/439
|
564 |
+
[gh-440]: https://github.com/WordPress/Requests/issues/440
|
565 |
+
[gh-441]: https://github.com/WordPress/Requests/issues/441
|
566 |
+
[gh-443]: https://github.com/WordPress/Requests/issues/443
|
567 |
+
[gh-445]: https://github.com/WordPress/Requests/issues/445
|
568 |
+
[gh-448]: https://github.com/WordPress/Requests/issues/448
|
569 |
+
[gh-451]: https://github.com/WordPress/Requests/issues/451
|
570 |
+
[gh-453]: https://github.com/WordPress/Requests/issues/453
|
571 |
+
[gh-454]: https://github.com/WordPress/Requests/issues/454
|
572 |
+
[gh-456]: https://github.com/WordPress/Requests/issues/456
|
573 |
+
[gh-457]: https://github.com/WordPress/Requests/issues/457
|
574 |
+
[gh-458]: https://github.com/WordPress/Requests/issues/458
|
575 |
+
[gh-461]: https://github.com/WordPress/Requests/issues/461
|
576 |
+
[gh-462]: https://github.com/WordPress/Requests/issues/462
|
577 |
+
[gh-464]: https://github.com/WordPress/Requests/issues/464
|
578 |
+
[gh-465]: https://github.com/WordPress/Requests/issues/465
|
579 |
+
[gh-467]: https://github.com/WordPress/Requests/issues/467
|
580 |
+
[gh-468]: https://github.com/WordPress/Requests/issues/468
|
581 |
+
[gh-469]: https://github.com/WordPress/Requests/issues/469
|
582 |
+
[gh-471]: https://github.com/WordPress/Requests/issues/471
|
583 |
+
|
584 |
+
1.7.0
|
585 |
+
-----
|
586 |
+
|
587 |
+
- Add support for HHVM and PHP 7
|
588 |
+
|
589 |
+
Requests is now tested against both HHVM and PHP 7, and they are supported as
|
590 |
+
first-party platforms.
|
591 |
+
|
592 |
+
(props [@rmccue][gh-rmccue], [#106][gh-106], [#176][gh-176])
|
593 |
+
|
594 |
+
- Transfer & connect timeouts, in seconds & milliseconds
|
595 |
+
|
596 |
+
cURL is unable to handle timeouts under a second in DNS lookups, so we round
|
597 |
+
those up to ensure 1-999ms isn't counted as an instant failure.
|
598 |
+
|
599 |
+
(props [@ozh][gh-ozh], [@rmccue][gh-rmccue], [#97][gh-97], [#216][gh-216])
|
600 |
+
|
601 |
+
- Rework cookie handling to be more thorough.
|
602 |
+
|
603 |
+
Cookies are now restricted to the same-origin by default, expiration is checked.
|
604 |
+
|
605 |
+
(props [@catharsisjelly][gh-catharsisjelly], [@rmccue][gh-rmccue], [#120][gh-120], [#124][gh-124], [#130][gh-130], [#132][gh-132], [#156][gh-156])
|
606 |
+
|
607 |
+
- Improve testing
|
608 |
+
|
609 |
+
Tests are now run locally to speed them up, as well as further general
|
610 |
+
improvements to the quality of the testing suite. There are now also
|
611 |
+
comprehensive proxy tests to ensure coverage there.
|
612 |
+
|
613 |
+
(props [@rmccue][gh-rmccue], [#75][gh-75], [#107][gh-107], [#170][gh-170], [#177][gh-177], [#181][gh-181], [#183][gh-183], [#185][gh-185], [#196][gh-196], [#202][gh-202], [#203][gh-203])
|
614 |
+
|
615 |
+
- Support custom HTTP methods
|
616 |
+
|
617 |
+
Previously, custom HTTP methods were only supported on sockets; they are now
|
618 |
+
supported across all transports.
|
619 |
+
|
620 |
+
(props [@ocean90][gh-ocean90], [#227][gh-227])
|
621 |
+
|
622 |
+
- Add byte limit option
|
623 |
+
|
624 |
+
(props [@rmccue][gh-rmccue], [#172][gh-172])
|
625 |
+
|
626 |
+
- Support a Requests_Proxy_HTTP() instance for the proxy setting.
|
627 |
+
|
628 |
+
(props [@ocean90][gh-ocean90], [#223][gh-223])
|
629 |
+
|
630 |
+
- Add progress hook
|
631 |
+
|
632 |
+
(props [@rmccue][gh-rmccue], [#180][gh-180])
|
633 |
+
|
634 |
+
- Add a before_redirect hook to alter redirects
|
635 |
+
|
636 |
+
(props [@rmccue][gh-rmccue], [#205][gh-205])
|
637 |
+
|
638 |
+
- Pass cURL info to after_request
|
639 |
+
|
640 |
+
(props [@rmccue][gh-rmccue], [#206][gh-206])
|
641 |
+
|
642 |
+
- Remove explicit autoload in Composer installation instructions
|
643 |
+
|
644 |
+
(props [@SlikNL][gh-SlikNL], [#86][gh-86])
|
645 |
+
|
646 |
+
- Restrict CURLOPT_PROTOCOLS on `defined()` instead of `version_compare()`
|
647 |
+
|
648 |
+
(props [@ozh][gh-ozh], [#92][gh-92])
|
649 |
+
|
650 |
+
- Fix doc - typo in "Authentication"
|
651 |
+
|
652 |
+
(props [@remik][gh-remik], [#99][gh-99])
|
653 |
+
|
654 |
+
- Contextually check for a valid transport
|
655 |
+
|
656 |
+
(props [@ozh][gh-ozh], [#101][gh-101])
|
657 |
+
|
658 |
+
- Follow relative redirects correctly
|
659 |
+
|
660 |
+
(props [@ozh][gh-ozh], [#103][gh-103])
|
661 |
+
|
662 |
+
- Use cURL's version_number
|
663 |
+
|
664 |
+
(props [@mishan][gh-mishan], [#104][gh-104])
|
665 |
+
|
666 |
+
- Removed duplicated option docs
|
667 |
+
|
668 |
+
(props [@staabm][gh-staabm], [#112][gh-112])
|
669 |
+
|
670 |
+
- code styling fixed
|
671 |
+
|
672 |
+
(props [@imsaintx][gh-imsaintx], [#113][gh-113])
|
673 |
+
|
674 |
+
- Fix IRI "normalization"
|
675 |
+
|
676 |
+
(props [@ozh][gh-ozh], [#128][gh-128])
|
677 |
+
|
678 |
+
- Mention two PHP extension dependencies in the README.
|
679 |
+
|
680 |
+
(props [@orlitzky][gh-orlitzky], [#136][gh-136])
|
681 |
+
|
682 |
+
- Ignore coverage report files
|
683 |
+
|
684 |
+
(props [@ozh][gh-ozh], [#148][gh-148])
|
685 |
+
|
686 |
+
- drop obsolete "return" after throw
|
687 |
+
|
688 |
+
(props [@staabm][gh-staabm], [#150][gh-150])
|
689 |
+
|
690 |
+
- Updated exception message to specify both http + https
|
691 |
+
|
692 |
+
(props [@beutnagel][gh-beutnagel], [#162][gh-162])
|
693 |
+
|
694 |
+
- Sets `stream_headers` method to public to allow calling it from other
|
695 |
+
places.
|
696 |
+
|
697 |
+
(props [@adri][gh-adri], [#158][gh-158])
|
698 |
+
|
699 |
+
- Remove duplicated stream_get_meta_data call
|
700 |
+
|
701 |
+
(props [@rmccue][gh-rmccue], [#179][gh-179])
|
702 |
+
|
703 |
+
- Transmits $errno from stream_socket_client in exception
|
704 |
+
|
705 |
+
(props [@laurentmartelli][gh-laurentmartelli], [#174][gh-174])
|
706 |
+
|
707 |
+
- Correct methods to use snake_case
|
708 |
+
|
709 |
+
(props [@rmccue][gh-rmccue], [#184][gh-184])
|
710 |
+
|
711 |
+
- Improve code quality
|
712 |
+
|
713 |
+
(props [@rmccue][gh-rmccue], [#186][gh-186])
|
714 |
+
|
715 |
+
- Update Build Status image
|
716 |
+
|
717 |
+
(props [@rmccue][gh-rmccue], [#187][gh-187])
|
718 |
+
|
719 |
+
- Fix/Rationalize transports (v2)
|
720 |
+
|
721 |
+
(props [@rmccue][gh-rmccue], [#188][gh-188])
|
722 |
+
|
723 |
+
- Surface cURL errors
|
724 |
+
|
725 |
+
(props [@ifwe][gh-ifwe], [#194][gh-194])
|
726 |
+
|
727 |
+
- Fix for memleak and curl_close() never being called
|
728 |
+
|
729 |
+
(props [@kwuerl][gh-kwuerl], [#200][gh-200])
|
730 |
+
|
731 |
+
- addex how to install with composer
|
732 |
+
|
733 |
+
(props [@royopa][gh-royopa], [#164][gh-164])
|
734 |
+
|
735 |
+
- Uppercase the method to ensure compatibility
|
736 |
+
|
737 |
+
(props [@rmccue][gh-rmccue], [#207][gh-207])
|
738 |
+
|
739 |
+
- Store default certificate path
|
740 |
+
|
741 |
+
(props [@rmccue][gh-rmccue], [#210][gh-210])
|
742 |
+
|
743 |
+
- Force closing keep-alive connections on old cURL
|
744 |
+
|
745 |
+
(props [@rmccue][gh-rmccue], [#211][gh-211])
|
746 |
+
|
747 |
+
- Docs: Updated HTTP links with HTTPS links where applicable
|
748 |
+
|
749 |
+
(props [@ntwb][gh-ntwb], [#215][gh-215])
|
750 |
+
|
751 |
+
- Remove the executable bit
|
752 |
+
|
753 |
+
(props [@ocean90][gh-ocean90], [#224][gh-224])
|
754 |
+
|
755 |
+
- Change more links to HTTPS
|
756 |
+
|
757 |
+
(props [@rmccue][gh-rmccue], [#217][gh-217])
|
758 |
+
|
759 |
+
- Bail from cURL when either `curl_init()` OR `curl_exec()` are unavailable
|
760 |
+
|
761 |
+
(props [@dd32][gh-dd32], [#230][gh-230])
|
762 |
+
|
763 |
+
- Disable OpenSSL's internal peer_name checking when `verifyname` is disabled.
|
764 |
+
|
765 |
+
(props [@dd32][gh-dd32], [#239][gh-239])
|
766 |
+
|
767 |
+
- Only include the port number in the `Host` header when it differs from
|
768 |
+
default
|
769 |
+
|
770 |
+
(props [@dd32][gh-dd32], [#238][gh-238])
|
771 |
+
|
772 |
+
- Respect port if specified for HTTPS connections
|
773 |
+
|
774 |
+
(props [@dd32][gh-dd32], [#237][gh-237])
|
775 |
+
|
776 |
+
- Allow paths starting with a double-slash
|
777 |
+
|
778 |
+
(props [@rmccue][gh-rmccue], [#240][gh-240])
|
779 |
+
|
780 |
+
- Fixes bug in rfc2616 #3.6.1 implementation.
|
781 |
+
|
782 |
+
(props [@stephenharris][gh-stephenharris], [#236][gh-236], [#3][gh-3])
|
783 |
+
|
784 |
+
- CURLOPT_HTTPHEADER在php7接受空数组导致php-fpm奔溃
|
785 |
+
|
786 |
+
(props [@qibinghua][gh-qibinghua], [#219][gh-219])
|
787 |
+
|
788 |
+
[gh-3]: https://github.com/WordPress/Requests/issues/3
|
789 |
+
[gh-75]: https://github.com/WordPress/Requests/issues/75
|
790 |
+
[gh-86]: https://github.com/WordPress/Requests/issues/86
|
791 |
+
[gh-92]: https://github.com/WordPress/Requests/issues/92
|
792 |
+
[gh-97]: https://github.com/WordPress/Requests/issues/97
|
793 |
+
[gh-99]: https://github.com/WordPress/Requests/issues/99
|
794 |
+
[gh-101]: https://github.com/WordPress/Requests/issues/101
|
795 |
+
[gh-103]: https://github.com/WordPress/Requests/issues/103
|
796 |
+
[gh-104]: https://github.com/WordPress/Requests/issues/104
|
797 |
+
[gh-106]: https://github.com/WordPress/Requests/issues/106
|
798 |
+
[gh-107]: https://github.com/WordPress/Requests/issues/107
|
799 |
+
[gh-112]: https://github.com/WordPress/Requests/issues/112
|
800 |
+
[gh-113]: https://github.com/WordPress/Requests/issues/113
|
801 |
+
[gh-120]: https://github.com/WordPress/Requests/issues/120
|
802 |
+
[gh-124]: https://github.com/WordPress/Requests/issues/124
|
803 |
+
[gh-128]: https://github.com/WordPress/Requests/issues/128
|
804 |
+
[gh-130]: https://github.com/WordPress/Requests/issues/130
|
805 |
+
[gh-132]: https://github.com/WordPress/Requests/issues/132
|
806 |
+
[gh-136]: https://github.com/WordPress/Requests/issues/136
|
807 |
+
[gh-148]: https://github.com/WordPress/Requests/issues/148
|
808 |
+
[gh-150]: https://github.com/WordPress/Requests/issues/150
|
809 |
+
[gh-156]: https://github.com/WordPress/Requests/issues/156
|
810 |
+
[gh-158]: https://github.com/WordPress/Requests/issues/158
|
811 |
+
[gh-162]: https://github.com/WordPress/Requests/issues/162
|
812 |
+
[gh-164]: https://github.com/WordPress/Requests/issues/164
|
813 |
+
[gh-170]: https://github.com/WordPress/Requests/issues/170
|
814 |
+
[gh-172]: https://github.com/WordPress/Requests/issues/172
|
815 |
+
[gh-174]: https://github.com/WordPress/Requests/issues/174
|
816 |
+
[gh-176]: https://github.com/WordPress/Requests/issues/176
|
817 |
+
[gh-177]: https://github.com/WordPress/Requests/issues/177
|
818 |
+
[gh-179]: https://github.com/WordPress/Requests/issues/179
|
819 |
+
[gh-180]: https://github.com/WordPress/Requests/issues/180
|
820 |
+
[gh-181]: https://github.com/WordPress/Requests/issues/181
|
821 |
+
[gh-183]: https://github.com/WordPress/Requests/issues/183
|
822 |
+
[gh-184]: https://github.com/WordPress/Requests/issues/184
|
823 |
+
[gh-185]: https://github.com/WordPress/Requests/issues/185
|
824 |
+
[gh-186]: https://github.com/WordPress/Requests/issues/186
|
825 |
+
[gh-187]: https://github.com/WordPress/Requests/issues/187
|
826 |
+
[gh-188]: https://github.com/WordPress/Requests/issues/188
|
827 |
+
[gh-194]: https://github.com/WordPress/Requests/issues/194
|
828 |
+
[gh-196]: https://github.com/WordPress/Requests/issues/196
|
829 |
+
[gh-200]: https://github.com/WordPress/Requests/issues/200
|
830 |
+
[gh-202]: https://github.com/WordPress/Requests/issues/202
|
831 |
+
[gh-203]: https://github.com/WordPress/Requests/issues/203
|
832 |
+
[gh-205]: https://github.com/WordPress/Requests/issues/205
|
833 |
+
[gh-206]: https://github.com/WordPress/Requests/issues/206
|
834 |
+
[gh-207]: https://github.com/WordPress/Requests/issues/207
|
835 |
+
[gh-210]: https://github.com/WordPress/Requests/issues/210
|
836 |
+
[gh-211]: https://github.com/WordPress/Requests/issues/211
|
837 |
+
[gh-215]: https://github.com/WordPress/Requests/issues/215
|
838 |
+
[gh-216]: https://github.com/WordPress/Requests/issues/216
|
839 |
+
[gh-217]: https://github.com/WordPress/Requests/issues/217
|
840 |
+
[gh-219]: https://github.com/WordPress/Requests/issues/219
|
841 |
+
[gh-223]: https://github.com/WordPress/Requests/issues/223
|
842 |
+
[gh-224]: https://github.com/WordPress/Requests/issues/224
|
843 |
+
[gh-227]: https://github.com/WordPress/Requests/issues/227
|
844 |
+
[gh-230]: https://github.com/WordPress/Requests/issues/230
|
845 |
+
[gh-236]: https://github.com/WordPress/Requests/issues/236
|
846 |
+
[gh-237]: https://github.com/WordPress/Requests/issues/237
|
847 |
+
[gh-238]: https://github.com/WordPress/Requests/issues/238
|
848 |
+
[gh-239]: https://github.com/WordPress/Requests/issues/239
|
849 |
+
[gh-240]: https://github.com/WordPress/Requests/issues/240
|
850 |
+
|
851 |
+
1.6.0
|
852 |
+
-----
|
853 |
+
- [Add multiple request support][#23] - Send multiple HTTP requests with both
|
854 |
+
fsockopen and cURL, transparently falling back to synchronous when
|
855 |
+
not supported.
|
856 |
+
|
857 |
+
- [Add proxy support][#70] - HTTP proxies are now natively supported via a
|
858 |
+
[high-level API][docs/proxy]. Major props to Ozh for his fantastic work
|
859 |
+
on this.
|
860 |
+
|
861 |
+
- [Verify host name for SSL requests][#63] - Requests is now the first and only
|
862 |
+
standalone HTTP library to fully verify SSL hostnames even with socket
|
863 |
+
connections. Thanks to Michael Adams, Dion Hulse, Jon Cave, and Pádraic Brady
|
864 |
+
for reviewing the crucial code behind this.
|
865 |
+
|
866 |
+
- [Add cookie support][#64] - Adds built-in support for cookies (built entirely
|
867 |
+
as a high-level API)
|
868 |
+
|
869 |
+
- [Add sessions][#62] - To compliment cookies, [sessions][docs/usage-advanced]
|
870 |
+
can be created with a base URL and default options, plus a shared cookie jar.
|
871 |
+
|
872 |
+
- Add [PUT][#1], [DELETE][#3], and [PATCH][#2] request support
|
873 |
+
|
874 |
+
- [Add Composer support][#6] - You can now install Requests via the
|
875 |
+
`rmccue/requests` package on Composer
|
876 |
+
|
877 |
+
[docs/proxy]: https://requests.ryanmccue.info/docs/proxy.html
|
878 |
+
[docs/usage-advanced]: https://requests.ryanmccue.info/docs/usage-advanced.html
|
879 |
+
|
880 |
+
[#1]: https://github.com/WordPress/Requests/issues/1
|
881 |
+
[#2]: https://github.com/WordPress/Requests/issues/2
|
882 |
+
[#3]: https://github.com/WordPress/Requests/issues/3
|
883 |
+
[#6]: https://github.com/WordPress/Requests/issues/6
|
884 |
+
[#9]: https://github.com/WordPress/Requests/issues/9
|
885 |
+
[#23]: https://github.com/WordPress/Requests/issues/23
|
886 |
+
[#62]: https://github.com/WordPress/Requests/issues/62
|
887 |
+
[#63]: https://github.com/WordPress/Requests/issues/63
|
888 |
+
[#64]: https://github.com/WordPress/Requests/issues/64
|
889 |
+
[#70]: https://github.com/WordPress/Requests/issues/70
|
890 |
+
|
891 |
+
[View all changes][https://github.com/WordPress/Requests/compare/v1.5.0...v1.6.0]
|
892 |
+
|
893 |
+
1.5.0
|
894 |
+
-----
|
895 |
+
Initial release!
|
896 |
+
|
897 |
+
[gh-aaronjorbin]: https://github.com/aaronjorbin
|
898 |
+
[gh-adri]: https://github.com/adri
|
899 |
+
[gh-amandato]: https://github.com/amandato
|
900 |
+
[gh-beutnagel]: https://github.com/beutnagel
|
901 |
+
[gh-carlalexander]: https://github.com/carlalexander
|
902 |
+
[gh-catharsisjelly]: https://github.com/catharsisjelly
|
903 |
+
[gh-ccrims0n]: https://github.com/ccrims0n
|
904 |
+
[gh-costdev]: https://github.com/costdev
|
905 |
+
[gh-datagutten]: https://github.com/datagutten
|
906 |
+
[gh-dustinrue]: https://github.com/dustinrue
|
907 |
+
[gh-dd32]: https://github.com/dd32
|
908 |
+
[gh-desrosj]: https://github.com/desrosj
|
909 |
+
[gh-gstrauss]: https://github.com/gstrauss
|
910 |
+
[gh-ifwe]: https://github.com/ifwe
|
911 |
+
[gh-imsaintx]: https://github.com/imsaintx
|
912 |
+
[gh-JustinyAhin]: https://github.com/JustinyAhin
|
913 |
+
[gh-jrfnl]: https://github.com/jrfnl
|
914 |
+
[gh-KasperFranz]: https://github.com/KasperFranz
|
915 |
+
[gh-kwuerl]: https://github.com/kwuerl
|
916 |
+
[gh-laurentmartelli]: https://github.com/laurentmartelli
|
917 |
+
[gh-mbabker]: https://github.com/mbabker
|
918 |
+
[gh-mishan]: https://github.com/mishan
|
919 |
+
[gh-ntwb]: https://github.com/ntwb
|
920 |
+
[gh-ocean90]: https://github.com/ocean90
|
921 |
+
[gh-orlitzky]: https://github.com/orlitzky
|
922 |
+
[gh-ozh]: https://github.com/ozh
|
923 |
+
[gh-patmead]: https://github.com/patmead
|
924 |
+
[gh-peterwilsoncc]: https://github.com/peterwilsoncc
|
925 |
+
[gh-qibinghua]: https://github.com/qibinghua
|
926 |
+
[gh-remik]: https://github.com/remik
|
927 |
+
[gh-rmccue]: https://github.com/rmccue
|
928 |
+
[gh-royopa]: https://github.com/royopa
|
929 |
+
[gh-schlessera]: https://github.com/schlessera
|
930 |
+
[gh-SergeyBiryukov]: https://github.com/SergeyBiryukov
|
931 |
+
[gh-SlikNL]: https://github.com/SlikNL
|
932 |
+
[gh-soulseekah]: https://github.com/soulseekah
|
933 |
+
[gh-staabm]: https://github.com/staabm
|
934 |
+
[gh-stephenharris]: https://github.com/stephenharris
|
935 |
+
[gh-szepeviktor]: https://github.com/szepeviktor
|
936 |
+
[gh-TimothyBJacobs]: https://github.com/TimothyBJacobs
|
937 |
+
[gh-tnorthcutt]: https://github.com/tnorthcutt
|
938 |
+
[gh-todeveni]: https://github.com/todeveni
|
939 |
+
[gh-tonebender]: https://github.com/tonebender
|
940 |
+
[gh-twdnhfr]: https://github.com/twdnhfr
|
941 |
+
[gh-TysonAndre]: https://github.com/TysonAndre
|
942 |
+
[gh-whyisjake]: https://github.com/whyisjake
|
943 |
+
[gh-wojsmol]: https://github.com/wojsmol
|
944 |
+
[gh-xknown]: https://github.com/xknown
|
945 |
+
[gh-Zegnat]: https://github.com/Zegnat
|
946 |
+
[gh-ZsgsDesign]: https://github.com/ZsgsDesign
|
razorpay-sdk/libs/Requests-2.0.0/LICENSE
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Requests
|
2 |
+
========
|
3 |
+
|
4 |
+
Copyright (c) 2010-2012 Ryan McCue and contributors
|
5 |
+
|
6 |
+
Permission to use, copy, modify, and/or distribute this software for any
|
7 |
+
purpose with or without fee is hereby granted, provided that the above
|
8 |
+
copyright notice and this permission notice appear in all copies.
|
9 |
+
|
10 |
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
11 |
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
12 |
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
13 |
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
14 |
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
15 |
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
16 |
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
17 |
+
|
18 |
+
|
19 |
+
ComplexPie IRI Parser
|
20 |
+
=====================
|
21 |
+
|
22 |
+
Copyright (c) 2007-2010, Geoffrey Sneddon and Steve Minutillo.
|
23 |
+
All rights reserved.
|
24 |
+
|
25 |
+
Redistribution and use in source and binary forms, with or without
|
26 |
+
modification, are permitted provided that the following conditions are met:
|
27 |
+
|
28 |
+
* Redistributions of source code must retain the above copyright notice,
|
29 |
+
this list of conditions and the following disclaimer.
|
30 |
+
|
31 |
+
* Redistributions in binary form must reproduce the above copyright notice,
|
32 |
+
this list of conditions and the following disclaimer in the documentation
|
33 |
+
and/or other materials provided with the distribution.
|
34 |
+
|
35 |
+
* Neither the name of the SimplePie Team nor the names of its contributors
|
36 |
+
may be used to endorse or promote products derived from this software
|
37 |
+
without specific prior written permission.
|
38 |
+
|
39 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
40 |
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
41 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
42 |
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE
|
43 |
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
44 |
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
45 |
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
46 |
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
47 |
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
48 |
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
49 |
+
POSSIBILITY OF SUCH DAMAGE.
|
razorpay-sdk/libs/Requests-2.0.0/README.md
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Requests for PHP
|
2 |
+
================
|
3 |
+
|
4 |
+
[![CS](https://github.com/WordPress/Requests/actions/workflows/cs.yml/badge.svg)](https://github.com/WordPress/Requests/actions/workflows/cs.yml)
|
5 |
+
[![Lint](https://github.com/WordPress/Requests/actions/workflows/lint.yml/badge.svg)](https://github.com/WordPress/Requests/actions/workflows/lint.yml)
|
6 |
+
[![Test](https://github.com/WordPress/Requests/actions/workflows/test.yml/badge.svg)](https://github.com/WordPress/Requests/actions/workflows/test.yml)
|
7 |
+
[![codecov.io](https://codecov.io/gh/WordPress/Requests/branch/stable/graph/badge.svg?token=AfpxK7WMxj&branch=stable)](https://codecov.io/gh/WordPress/Requests?branch=stable)
|
8 |
+
|
9 |
+
Requests is a HTTP library written in PHP, for human beings. It is roughly
|
10 |
+
based on the API from the excellent [Requests Python
|
11 |
+
library](http://python-requests.org/). Requests is [ISC
|
12 |
+
Licensed](https://github.com/WordPress/Requests/blob/stable/LICENSE) (similar to
|
13 |
+
the new BSD license) and has no dependencies, except for PHP 5.6+.
|
14 |
+
|
15 |
+
Despite PHP's use as a language for the web, its tools for sending HTTP requests
|
16 |
+
are severely lacking. cURL has an
|
17 |
+
[interesting API](https://www.php.net/curl-setopt), to say the
|
18 |
+
least, and you can't always rely on it being available. Sockets provide only low
|
19 |
+
level access, and require you to build most of the HTTP response parsing
|
20 |
+
yourself.
|
21 |
+
|
22 |
+
We all have better things to do. That's why Requests was born.
|
23 |
+
|
24 |
+
```php
|
25 |
+
$headers = array('Accept' => 'application/json');
|
26 |
+
$options = array('auth' => array('user', 'pass'));
|
27 |
+
$request = WpOrg\Requests\Requests::get('https://api.github.com/gists', $headers, $options);
|
28 |
+
|
29 |
+
var_dump($request->status_code);
|
30 |
+
// int(200)
|
31 |
+
|
32 |
+
var_dump($request->headers['content-type']);
|
33 |
+
// string(31) "application/json; charset=utf-8"
|
34 |
+
|
35 |
+
var_dump($request->body);
|
36 |
+
// string(26891) "[...]"
|
37 |
+
```
|
38 |
+
|
39 |
+
Requests allows you to send **HEAD**, **GET**, **POST**, **PUT**, **DELETE**,
|
40 |
+
and **PATCH** HTTP requests. You can add headers, form data, multipart files,
|
41 |
+
and parameters with basic arrays, and access the response data in the same way.
|
42 |
+
Requests uses cURL and fsockopen, depending on what your system has available,
|
43 |
+
but abstracts all the nasty stuff out of your way, providing a consistent API.
|
44 |
+
|
45 |
+
|
46 |
+
Features
|
47 |
+
--------
|
48 |
+
|
49 |
+
- International Domains and URLs
|
50 |
+
- Browser-style SSL Verification
|
51 |
+
- Basic/Digest Authentication
|
52 |
+
- Automatic Decompression
|
53 |
+
- Connection Timeouts
|
54 |
+
|
55 |
+
|
56 |
+
Installation
|
57 |
+
------------
|
58 |
+
|
59 |
+
### Install with Composer
|
60 |
+
If you're using [Composer](https://getcomposer.org/) to manage
|
61 |
+
dependencies, you can add Requests with it.
|
62 |
+
|
63 |
+
```sh
|
64 |
+
composer require rmccue/requests
|
65 |
+
```
|
66 |
+
|
67 |
+
or
|
68 |
+
```json
|
69 |
+
{
|
70 |
+
"require": {
|
71 |
+
"rmccue/requests": "^2.0"
|
72 |
+
}
|
73 |
+
}
|
74 |
+
```
|
75 |
+
|
76 |
+
### Install source from GitHub
|
77 |
+
To install the source code:
|
78 |
+
```bash
|
79 |
+
$ git clone git://github.com/WordPress/Requests.git
|
80 |
+
```
|
81 |
+
|
82 |
+
Next, include the autoloader in your scripts:
|
83 |
+
```php
|
84 |
+
require_once '/path/to/Requests/src/Autoload.php';
|
85 |
+
```
|
86 |
+
|
87 |
+
You'll probably also want to register the autoloader:
|
88 |
+
```php
|
89 |
+
WpOrg\Requests\Autoload::register();
|
90 |
+
```
|
91 |
+
|
92 |
+
### Install source from zip/tarball
|
93 |
+
Alternatively, you can fetch a [tarball][] or [zipball][]:
|
94 |
+
|
95 |
+
```bash
|
96 |
+
$ curl -L https://github.com/WordPress/Requests/tarball/stable | tar xzv
|
97 |
+
(or)
|
98 |
+
$ wget https://github.com/WordPress/Requests/tarball/stable -O - | tar xzv
|
99 |
+
```
|
100 |
+
|
101 |
+
[tarball]: https://github.com/WordPress/Requests/tarball/stable
|
102 |
+
[zipball]: https://github.com/WordPress/Requests/zipball/stable
|
103 |
+
|
104 |
+
|
105 |
+
### Using a Class Loader
|
106 |
+
If you're using a class loader (e.g., [Symfony Class Loader][]) for
|
107 |
+
[PSR-4][]-style class loading:
|
108 |
+
```php
|
109 |
+
$loader = new Psr4ClassLoader();
|
110 |
+
$loader->addPrefix('WpOrg\\Requests\\', 'path/to/vendor/Requests/src');
|
111 |
+
$loader->register();
|
112 |
+
```
|
113 |
+
|
114 |
+
[Symfony Class Loader]: https://github.com/symfony/ClassLoader
|
115 |
+
[PSR-4]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4.md
|
116 |
+
|
117 |
+
|
118 |
+
Documentation
|
119 |
+
-------------
|
120 |
+
The best place to start is our [prose-based documentation][], which will guide
|
121 |
+
you through using Requests.
|
122 |
+
|
123 |
+
After that, take a look at [the documentation for
|
124 |
+
`\WpOrg\Requests\Requests::request()`][request_method], where all the parameters are fully
|
125 |
+
documented.
|
126 |
+
|
127 |
+
Requests is [100% documented with PHPDoc](https://requests.ryanmccue.info/api-2.x/).
|
128 |
+
If you find any problems with it, [create a new
|
129 |
+
issue](https://github.com/WordPress/Requests/issues/new)!
|
130 |
+
|
131 |
+
[prose-based documentation]: https://github.com/WordPress/Requests/blob/stable/docs/README.md
|
132 |
+
[request_method]: https://requests.ryanmccue.info/api-2.x/classes/WpOrg-Requests-Requests.html#method_request
|
133 |
+
|
134 |
+
Testing
|
135 |
+
-------
|
136 |
+
|
137 |
+
Requests strives to have 100% code-coverage of the library with an extensive
|
138 |
+
set of tests. We're not quite there yet, but [we're getting close][codecov].
|
139 |
+
|
140 |
+
[codecov]: https://codecov.io/github/WordPress/Requests/
|
141 |
+
|
142 |
+
To run the test suite, first check that you have the [PHP
|
143 |
+
JSON extension ](https://www.php.net/book.json) enabled. Then
|
144 |
+
simply:
|
145 |
+
```bash
|
146 |
+
$ phpunit
|
147 |
+
```
|
148 |
+
|
149 |
+
If you'd like to run a single set of tests, specify just the name:
|
150 |
+
```bash
|
151 |
+
$ phpunit Transport/cURL
|
152 |
+
```
|
153 |
+
|
154 |
+
Contribute
|
155 |
+
----------
|
156 |
+
|
157 |
+
1. Check for open issues or open a new issue for a feature request or a bug.
|
158 |
+
2. Fork [the repository][] on Github to start making your changes to the
|
159 |
+
`develop` branch (or branch off of it).
|
160 |
+
3. Write one or more tests which show that the bug was fixed or that the feature works as expected.
|
161 |
+
4. Send in a pull request.
|
162 |
+
|
163 |
+
If you have questions while working on your contribution and you use Slack, there is
|
164 |
+
a [#core-http-api] channel available in the [WordPress Slack] in which contributions can be discussed.
|
165 |
+
|
166 |
+
[the repository]: https://github.com/WordPress/Requests
|
167 |
+
[#core-http-api]: https://wordpress.slack.com/archives/C02BBE29V42
|
168 |
+
[WordPress Slack]: https://make.wordpress.org/chat/
|
razorpay-sdk/libs/Requests-2.0.0/certificates/cacert.pem
ADDED
@@ -0,0 +1,3232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Certificate data from Mozilla as of: Tue Oct 26 03:12:05 2021 GMT
|
5 |
+
##
|
6 |
+
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
+
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
+
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
+
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
|
10 |
+
##
|
11 |
+
## It contains the certificates in PEM format and therefore
|
12 |
+
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
+
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
+
## Just configure this file as the SSLCACertificateFile.
|
15 |
+
##
|
16 |
+
## Conversion done with mk-ca-bundle.pl version 1.28.
|
17 |
+
## SHA256: bb36818a81feaa4cca61101e6d6276cd09e972efcb08112dfed846918ca41d7f
|
18 |
+
##
|
19 |
+
|
20 |
+
|
21 |
+
GlobalSign Root CA
|
22 |
+
==================
|
23 |
+
-----BEGIN CERTIFICATE-----
|
24 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
25 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
26 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
27 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
28 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
29 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
30 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
31 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
32 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
33 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
34 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
35 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
36 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
37 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
38 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
39 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
40 |
+
-----END CERTIFICATE-----
|
41 |
+
|
42 |
+
GlobalSign Root CA - R2
|
43 |
+
=======================
|
44 |
+
-----BEGIN CERTIFICATE-----
|
45 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
46 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
47 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
48 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
49 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
50 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
51 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
52 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
53 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
54 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
55 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
56 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
57 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
58 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
59 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
60 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
61 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
62 |
+
-----END CERTIFICATE-----
|
63 |
+
|
64 |
+
Entrust.net Premium 2048 Secure Server CA
|
65 |
+
=========================================
|
66 |
+
-----BEGIN CERTIFICATE-----
|
67 |
+
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
68 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
69 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
70 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
71 |
+
NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
72 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
73 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
74 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
75 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
76 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
77 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
78 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
79 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
|
80 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
|
81 |
+
KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
|
82 |
+
T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
|
83 |
+
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
|
84 |
+
J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
|
85 |
+
nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
|
86 |
+
-----END CERTIFICATE-----
|
87 |
+
|
88 |
+
Baltimore CyberTrust Root
|
89 |
+
=========================
|
90 |
+
-----BEGIN CERTIFICATE-----
|
91 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
92 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
93 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
94 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
95 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
96 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
97 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
98 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
99 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
100 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
101 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
102 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
103 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
104 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
105 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
106 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
107 |
+
-----END CERTIFICATE-----
|
108 |
+
|
109 |
+
Entrust Root Certification Authority
|
110 |
+
====================================
|
111 |
+
-----BEGIN CERTIFICATE-----
|
112 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
113 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
114 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
115 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
116 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
117 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
118 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
119 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
120 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
121 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
122 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
123 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
124 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
125 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
126 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
127 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
128 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
129 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
130 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
131 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
132 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
133 |
+
-----END CERTIFICATE-----
|
134 |
+
|
135 |
+
Comodo AAA Services root
|
136 |
+
========================
|
137 |
+
-----BEGIN CERTIFICATE-----
|
138 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
139 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
140 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
141 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
142 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
143 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
144 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
145 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
146 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
147 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
148 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
149 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
150 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
151 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
152 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
153 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
154 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
155 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
156 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
157 |
+
-----END CERTIFICATE-----
|
158 |
+
|
159 |
+
QuoVadis Root CA 2
|
160 |
+
==================
|
161 |
+
-----BEGIN CERTIFICATE-----
|
162 |
+
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
|
188 |
+
-----END CERTIFICATE-----
|
189 |
+
|
190 |
+
QuoVadis Root CA 3
|
191 |
+
==================
|
192 |
+
-----BEGIN CERTIFICATE-----
|
193 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
194 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
195 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
196 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
197 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
198 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
199 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
200 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
201 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
202 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
203 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
204 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
205 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
206 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
207 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
208 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
209 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
210 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
211 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
212 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
213 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
214 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
215 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
216 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
217 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
218 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
219 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
220 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
221 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
222 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
223 |
+
-----END CERTIFICATE-----
|
224 |
+
|
225 |
+
Security Communication Root CA
|
226 |
+
==============================
|
227 |
+
-----BEGIN CERTIFICATE-----
|
228 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
229 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
230 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
231 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
232 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
233 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
234 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
235 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
236 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
237 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
238 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
239 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
240 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
241 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
242 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
243 |
+
FL39vmwLAw==
|
244 |
+
-----END CERTIFICATE-----
|
245 |
+
|
246 |
+
XRamp Global CA Root
|
247 |
+
====================
|
248 |
+
-----BEGIN CERTIFICATE-----
|
249 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
250 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
251 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
252 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
253 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
254 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
255 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
256 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
257 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
258 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
259 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
260 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
261 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
262 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
263 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
264 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
265 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
266 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
267 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
268 |
+
-----END CERTIFICATE-----
|
269 |
+
|
270 |
+
Go Daddy Class 2 CA
|
271 |
+
===================
|
272 |
+
-----BEGIN CERTIFICATE-----
|
273 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
274 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
275 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
276 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
277 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
278 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
279 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
280 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
281 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
282 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
283 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
284 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
285 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
286 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
287 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
288 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
289 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
290 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
291 |
+
vZ8=
|
292 |
+
-----END CERTIFICATE-----
|
293 |
+
|
294 |
+
Starfield Class 2 CA
|
295 |
+
====================
|
296 |
+
-----BEGIN CERTIFICATE-----
|
297 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
298 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
299 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
300 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
301 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
302 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
303 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
304 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
305 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
306 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
307 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
308 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
309 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
310 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
311 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
312 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
313 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
314 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
315 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
316 |
+
-----END CERTIFICATE-----
|
317 |
+
|
318 |
+
DigiCert Assured ID Root CA
|
319 |
+
===========================
|
320 |
+
-----BEGIN CERTIFICATE-----
|
321 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
322 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
323 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
324 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
325 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
326 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
327 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
328 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
329 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
330 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
331 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
332 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
333 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
334 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
335 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
336 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
337 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
338 |
+
-----END CERTIFICATE-----
|
339 |
+
|
340 |
+
DigiCert Global Root CA
|
341 |
+
=======================
|
342 |
+
-----BEGIN CERTIFICATE-----
|
343 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
344 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
345 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
346 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
347 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
348 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
349 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
350 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
351 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
352 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
353 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
354 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
355 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
356 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
357 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
358 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
359 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
360 |
+
-----END CERTIFICATE-----
|
361 |
+
|
362 |
+
DigiCert High Assurance EV Root CA
|
363 |
+
==================================
|
364 |
+
-----BEGIN CERTIFICATE-----
|
365 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
366 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
367 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
368 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
369 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
370 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
371 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
372 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
373 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
374 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
375 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
376 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
377 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
378 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
379 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
380 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
381 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
382 |
+
-----END CERTIFICATE-----
|
383 |
+
|
384 |
+
SwissSign Gold CA - G2
|
385 |
+
======================
|
386 |
+
-----BEGIN CERTIFICATE-----
|
387 |
+
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
|
413 |
+
-----END CERTIFICATE-----
|
414 |
+
|
415 |
+
SwissSign Silver CA - G2
|
416 |
+
========================
|
417 |
+
-----BEGIN CERTIFICATE-----
|
418 |
+
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
|
444 |
+
-----END CERTIFICATE-----
|
445 |
+
|
446 |
+
SecureTrust CA
|
447 |
+
==============
|
448 |
+
-----BEGIN CERTIFICATE-----
|
449 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
450 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
451 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
452 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
453 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
454 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
455 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
456 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
457 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
458 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
459 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
460 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
461 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
462 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
463 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
464 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
465 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
466 |
+
-----END CERTIFICATE-----
|
467 |
+
|
468 |
+
Secure Global CA
|
469 |
+
================
|
470 |
+
-----BEGIN CERTIFICATE-----
|
471 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
472 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
473 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
474 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
475 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
476 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
477 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
478 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
479 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
480 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
481 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
482 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
483 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
484 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
485 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
486 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
487 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
488 |
+
-----END CERTIFICATE-----
|
489 |
+
|
490 |
+
COMODO Certification Authority
|
491 |
+
==============================
|
492 |
+
-----BEGIN CERTIFICATE-----
|
493 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
494 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
495 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
496 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
497 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
498 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
499 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
500 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
501 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
502 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
503 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
504 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
505 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
506 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
507 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
508 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
509 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
510 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
511 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
512 |
+
-----END CERTIFICATE-----
|
513 |
+
|
514 |
+
Network Solutions Certificate Authority
|
515 |
+
=======================================
|
516 |
+
-----BEGIN CERTIFICATE-----
|
517 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
518 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
519 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
520 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
521 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
522 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
523 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
524 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
525 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
526 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
527 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
528 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
529 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
530 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
531 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
532 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
533 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
534 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
535 |
+
-----END CERTIFICATE-----
|
536 |
+
|
537 |
+
COMODO ECC Certification Authority
|
538 |
+
==================================
|
539 |
+
-----BEGIN CERTIFICATE-----
|
540 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
541 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
542 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
543 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
544 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
545 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
546 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
547 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
548 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
549 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
550 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
551 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
552 |
+
-----END CERTIFICATE-----
|
553 |
+
|
554 |
+
Certigna
|
555 |
+
========
|
556 |
+
-----BEGIN CERTIFICATE-----
|
557 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
558 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
559 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
560 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
561 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
562 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
563 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
564 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
565 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
566 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
567 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
568 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
569 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
570 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
571 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
572 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
573 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
574 |
+
-----END CERTIFICATE-----
|
575 |
+
|
576 |
+
Cybertrust Global Root
|
577 |
+
======================
|
578 |
+
-----BEGIN CERTIFICATE-----
|
579 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
580 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
581 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
582 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
583 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
584 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
585 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
586 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
587 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
588 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
589 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
590 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
591 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
592 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
593 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
594 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
595 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
596 |
+
-----END CERTIFICATE-----
|
597 |
+
|
598 |
+
ePKI Root Certification Authority
|
599 |
+
=================================
|
600 |
+
-----BEGIN CERTIFICATE-----
|
601 |
+
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
|
627 |
+
-----END CERTIFICATE-----
|
628 |
+
|
629 |
+
certSIGN ROOT CA
|
630 |
+
================
|
631 |
+
-----BEGIN CERTIFICATE-----
|
632 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
633 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
634 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
635 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
636 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
637 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
638 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
639 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
640 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
641 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
642 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
643 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
644 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
645 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
646 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
647 |
+
-----END CERTIFICATE-----
|
648 |
+
|
649 |
+
NetLock Arany (Class Gold) Főtanúsítvány
|
650 |
+
========================================
|
651 |
+
-----BEGIN CERTIFICATE-----
|
652 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
653 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
654 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
655 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
656 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
657 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
658 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
659 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
660 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
661 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
662 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
663 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
664 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
665 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
666 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
667 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
668 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
669 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
670 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
671 |
+
-----END CERTIFICATE-----
|
672 |
+
|
673 |
+
Hongkong Post Root CA 1
|
674 |
+
=======================
|
675 |
+
-----BEGIN CERTIFICATE-----
|
676 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
677 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
678 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
679 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
680 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
681 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
682 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
683 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
684 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
685 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
686 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
687 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
688 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
689 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
690 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
691 |
+
-----END CERTIFICATE-----
|
692 |
+
|
693 |
+
SecureSign RootCA11
|
694 |
+
===================
|
695 |
+
-----BEGIN CERTIFICATE-----
|
696 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
697 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
698 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
699 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
700 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
701 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
702 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
703 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
704 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
705 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
706 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
707 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
708 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
709 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
710 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
711 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
712 |
+
-----END CERTIFICATE-----
|
713 |
+
|
714 |
+
Microsec e-Szigno Root CA 2009
|
715 |
+
==============================
|
716 |
+
-----BEGIN CERTIFICATE-----
|
717 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
718 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
719 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
720 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
721 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
722 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
723 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
724 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
725 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
726 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
727 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
728 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
729 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
730 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
731 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
732 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
733 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
734 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
735 |
+
LXpUq3DDfSJlgnCW
|
736 |
+
-----END CERTIFICATE-----
|
737 |
+
|
738 |
+
GlobalSign Root CA - R3
|
739 |
+
=======================
|
740 |
+
-----BEGIN CERTIFICATE-----
|
741 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
742 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
743 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
744 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
745 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
746 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
747 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
748 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
749 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
750 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
751 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
752 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
753 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
754 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
755 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
756 |
+
kpeDMdmztcpHWD9f
|
757 |
+
-----END CERTIFICATE-----
|
758 |
+
|
759 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
760 |
+
=========================================================
|
761 |
+
-----BEGIN CERTIFICATE-----
|
762 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
763 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
764 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
765 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
766 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
767 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
768 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
769 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
770 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
771 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
772 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
773 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
774 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
775 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
776 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
777 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
778 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
779 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
780 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
781 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
782 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
783 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
784 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
785 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
786 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
787 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
788 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
789 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
790 |
+
-----END CERTIFICATE-----
|
791 |
+
|
792 |
+
Izenpe.com
|
793 |
+
==========
|
794 |
+
-----BEGIN CERTIFICATE-----
|
795 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
796 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
797 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
798 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
799 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
800 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
801 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
802 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
803 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
804 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
805 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
806 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
807 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
808 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
809 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
810 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
811 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
812 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
813 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
814 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
815 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
816 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
817 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
818 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
819 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
820 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
821 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
822 |
+
-----END CERTIFICATE-----
|
823 |
+
|
824 |
+
Go Daddy Root Certificate Authority - G2
|
825 |
+
========================================
|
826 |
+
-----BEGIN CERTIFICATE-----
|
827 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
828 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
829 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
830 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
831 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
832 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
833 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
834 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
835 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
836 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
837 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
838 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
839 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
840 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
841 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
842 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
843 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
844 |
+
-----END CERTIFICATE-----
|
845 |
+
|
846 |
+
Starfield Root Certificate Authority - G2
|
847 |
+
=========================================
|
848 |
+
-----BEGIN CERTIFICATE-----
|
849 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
850 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
851 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
852 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
853 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
854 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
855 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
856 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
857 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
858 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
859 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
860 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
861 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
862 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
863 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
864 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
865 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
866 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
867 |
+
-----END CERTIFICATE-----
|
868 |
+
|
869 |
+
Starfield Services Root Certificate Authority - G2
|
870 |
+
==================================================
|
871 |
+
-----BEGIN CERTIFICATE-----
|
872 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
873 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
874 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
875 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
876 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
877 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
878 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
879 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
880 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
881 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
882 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
883 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
884 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
885 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
886 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
887 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
888 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
889 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
890 |
+
-----END CERTIFICATE-----
|
891 |
+
|
892 |
+
AffirmTrust Commercial
|
893 |
+
======================
|
894 |
+
-----BEGIN CERTIFICATE-----
|
895 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
896 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
897 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
898 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
899 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
900 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
901 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
902 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
903 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
904 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
905 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
906 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
907 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
908 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
909 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
910 |
+
-----END CERTIFICATE-----
|
911 |
+
|
912 |
+
AffirmTrust Networking
|
913 |
+
======================
|
914 |
+
-----BEGIN CERTIFICATE-----
|
915 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
916 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
917 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
918 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
919 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
920 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
921 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
922 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
923 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
924 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
925 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
926 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
927 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
928 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
929 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
930 |
+
-----END CERTIFICATE-----
|
931 |
+
|
932 |
+
AffirmTrust Premium
|
933 |
+
===================
|
934 |
+
-----BEGIN CERTIFICATE-----
|
935 |
+
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
|
959 |
+
-----END CERTIFICATE-----
|
960 |
+
|
961 |
+
AffirmTrust Premium ECC
|
962 |
+
=======================
|
963 |
+
-----BEGIN CERTIFICATE-----
|
964 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
965 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
966 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
967 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
968 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
969 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
970 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
971 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
972 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
973 |
+
eQ==
|
974 |
+
-----END CERTIFICATE-----
|
975 |
+
|
976 |
+
Certum Trusted Network CA
|
977 |
+
=========================
|
978 |
+
-----BEGIN CERTIFICATE-----
|
979 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
980 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
981 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
982 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
983 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
984 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
985 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
986 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
987 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
988 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
989 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
990 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
991 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
992 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
993 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
994 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
995 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
996 |
+
-----END CERTIFICATE-----
|
997 |
+
|
998 |
+
TWCA Root Certification Authority
|
999 |
+
=================================
|
1000 |
+
-----BEGIN CERTIFICATE-----
|
1001 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
1002 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
1003 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
1004 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
1005 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
1006 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
1007 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
1008 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
1009 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
1010 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
1011 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
1012 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
1013 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
1014 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
1015 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
1016 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
1017 |
+
-----END CERTIFICATE-----
|
1018 |
+
|
1019 |
+
Security Communication RootCA2
|
1020 |
+
==============================
|
1021 |
+
-----BEGIN CERTIFICATE-----
|
1022 |
+
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
1023 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
1024 |
+
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
1025 |
+
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
1026 |
+
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
1027 |
+
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
1028 |
+
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
1029 |
+
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
1030 |
+
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
1031 |
+
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
1032 |
+
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
1033 |
+
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
1034 |
+
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
1035 |
+
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
1036 |
+
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
1037 |
+
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
1038 |
+
-----END CERTIFICATE-----
|
1039 |
+
|
1040 |
+
EC-ACC
|
1041 |
+
======
|
1042 |
+
-----BEGIN CERTIFICATE-----
|
1043 |
+
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
1044 |
+
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
1045 |
+
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
1046 |
+
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
1047 |
+
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
1048 |
+
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
1049 |
+
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
1050 |
+
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
1051 |
+
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
1052 |
+
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
1053 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
1054 |
+
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
1055 |
+
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
1056 |
+
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
1057 |
+
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
1058 |
+
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
1059 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
1060 |
+
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
1061 |
+
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
1062 |
+
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
1063 |
+
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
1064 |
+
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
1065 |
+
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
1066 |
+
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
1067 |
+
5EI=
|
1068 |
+
-----END CERTIFICATE-----
|
1069 |
+
|
1070 |
+
Hellenic Academic and Research Institutions RootCA 2011
|
1071 |
+
=======================================================
|
1072 |
+
-----BEGIN CERTIFICATE-----
|
1073 |
+
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
|
1074 |
+
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
|
1075 |
+
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
1076 |
+
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
|
1077 |
+
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
1078 |
+
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
|
1079 |
+
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
1080 |
+
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
|
1081 |
+
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
|
1082 |
+
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
|
1083 |
+
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
|
1084 |
+
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
|
1085 |
+
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
|
1086 |
+
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
|
1087 |
+
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
|
1088 |
+
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
|
1089 |
+
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
|
1090 |
+
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
|
1091 |
+
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
|
1092 |
+
-----END CERTIFICATE-----
|
1093 |
+
|
1094 |
+
Actalis Authentication Root CA
|
1095 |
+
==============================
|
1096 |
+
-----BEGIN CERTIFICATE-----
|
1097 |
+
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
1098 |
+
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
1099 |
+
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
1100 |
+
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
1101 |
+
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
1102 |
+
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
1103 |
+
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
1104 |
+
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
1105 |
+
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
1106 |
+
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
1107 |
+
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
1108 |
+
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
1109 |
+
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
1110 |
+
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
1111 |
+
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
1112 |
+
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
1113 |
+
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
1114 |
+
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
1115 |
+
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
1116 |
+
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
1117 |
+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
1118 |
+
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
1119 |
+
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
1120 |
+
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
1121 |
+
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
1122 |
+
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
1123 |
+
-----END CERTIFICATE-----
|
1124 |
+
|
1125 |
+
Buypass Class 2 Root CA
|
1126 |
+
=======================
|
1127 |
+
-----BEGIN CERTIFICATE-----
|
1128 |
+
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
1129 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
|
1130 |
+
DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
|
1131 |
+
eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
|
1132 |
+
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
|
1133 |
+
g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
|
1134 |
+
9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
|
1135 |
+
/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU
|
1136 |
+
CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff
|
1137 |
+
awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI
|
1138 |
+
zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn
|
1139 |
+
Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX
|
1140 |
+
Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs
|
1141 |
+
M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
1142 |
+
VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
|
1143 |
+
AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
|
1144 |
+
A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI
|
1145 |
+
osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S
|
1146 |
+
aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd
|
1147 |
+
DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
|
1148 |
+
LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0
|
1149 |
+
oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC
|
1150 |
+
wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS
|
1151 |
+
CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN
|
1152 |
+
rJgWVqA=
|
1153 |
+
-----END CERTIFICATE-----
|
1154 |
+
|
1155 |
+
Buypass Class 3 Root CA
|
1156 |
+
=======================
|
1157 |
+
-----BEGIN CERTIFICATE-----
|
1158 |
+
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
|
1182 |
+
Cp/HuZc=
|
1183 |
+
-----END CERTIFICATE-----
|
1184 |
+
|
1185 |
+
T-TeleSec GlobalRoot Class 3
|
1186 |
+
============================
|
1187 |
+
-----BEGIN CERTIFICATE-----
|
1188 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
1189 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
1190 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
|
1191 |
+
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
1192 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
1193 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
|
1194 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
|
1195 |
+
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
|
1196 |
+
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
|
1197 |
+
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
|
1198 |
+
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
|
1199 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
|
1200 |
+
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
|
1201 |
+
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
|
1202 |
+
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
|
1203 |
+
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
|
1204 |
+
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
|
1205 |
+
-----END CERTIFICATE-----
|
1206 |
+
|
1207 |
+
D-TRUST Root Class 3 CA 2 2009
|
1208 |
+
==============================
|
1209 |
+
-----BEGIN CERTIFICATE-----
|
1210 |
+
MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
1211 |
+
DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
|
1212 |
+
Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
|
1213 |
+
LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
|
1214 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
|
1215 |
+
ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
|
1216 |
+
BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
|
1217 |
+
KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
|
1218 |
+
p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
|
1219 |
+
AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
|
1220 |
+
4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
|
1221 |
+
eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
|
1222 |
+
MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
|
1223 |
+
PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
|
1224 |
+
OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
|
1225 |
+
2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
|
1226 |
+
o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
|
1227 |
+
dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
|
1228 |
+
X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
|
1229 |
+
-----END CERTIFICATE-----
|
1230 |
+
|
1231 |
+
D-TRUST Root Class 3 CA 2 EV 2009
|
1232 |
+
=================================
|
1233 |
+
-----BEGIN CERTIFICATE-----
|
1234 |
+
MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
1235 |
+
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
|
1236 |
+
OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
1237 |
+
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
|
1238 |
+
OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
|
1239 |
+
egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
|
1240 |
+
zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
|
1241 |
+
7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
|
1242 |
+
sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
|
1243 |
+
11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
|
1244 |
+
cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
|
1245 |
+
ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
|
1246 |
+
MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
|
1247 |
+
b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
|
1248 |
+
c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
|
1249 |
+
PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
|
1250 |
+
nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
|
1251 |
+
ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
|
1252 |
+
NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
|
1253 |
+
w9y4AyHqnxbxLFS1
|
1254 |
+
-----END CERTIFICATE-----
|
1255 |
+
|
1256 |
+
CA Disig Root R2
|
1257 |
+
================
|
1258 |
+
-----BEGIN CERTIFICATE-----
|
1259 |
+
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
|
1283 |
+
7+ZtsH8tZ/3zbBt1RqPlShfppNcL
|
1284 |
+
-----END CERTIFICATE-----
|
1285 |
+
|
1286 |
+
ACCVRAIZ1
|
1287 |
+
=========
|
1288 |
+
-----BEGIN CERTIFICATE-----
|
1289 |
+
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
|
1290 |
+
SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
|
1291 |
+
MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
|
1292 |
+
UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1293 |
+
DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
|
1294 |
+
jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
|
1295 |
+
RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
|
1296 |
+
aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
|
1297 |
+
0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
|
1298 |
+
WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
|
1299 |
+
8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
|
1300 |
+
5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
|
1301 |
+
9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
|
1302 |
+
Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
|
1303 |
+
Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
|
1304 |
+
Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
|
1305 |
+
VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
|
1306 |
+
Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
|
1307 |
+
QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
|
1308 |
+
AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
|
1309 |
+
YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
|
1310 |
+
AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
|
1311 |
+
IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
|
1312 |
+
aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
|
1313 |
+
dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
|
1314 |
+
MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
|
1315 |
+
hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
|
1316 |
+
R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
|
1317 |
+
YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
|
1318 |
+
nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
|
1319 |
+
TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
|
1320 |
+
sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
|
1321 |
+
I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
|
1322 |
+
Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
|
1323 |
+
3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
|
1324 |
+
EfbRD0tVNEYqi4Y7
|
1325 |
+
-----END CERTIFICATE-----
|
1326 |
+
|
1327 |
+
TWCA Global Root CA
|
1328 |
+
===================
|
1329 |
+
-----BEGIN CERTIFICATE-----
|
1330 |
+
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
|
1354 |
+
-----END CERTIFICATE-----
|
1355 |
+
|
1356 |
+
TeliaSonera Root CA v1
|
1357 |
+
======================
|
1358 |
+
-----BEGIN CERTIFICATE-----
|
1359 |
+
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
|
1382 |
+
WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
|
1383 |
+
-----END CERTIFICATE-----
|
1384 |
+
|
1385 |
+
E-Tugra Certification Authority
|
1386 |
+
===============================
|
1387 |
+
-----BEGIN CERTIFICATE-----
|
1388 |
+
MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
|
1389 |
+
DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
|
1390 |
+
ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
|
1391 |
+
ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
|
1392 |
+
NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
|
1393 |
+
QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
|
1394 |
+
cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
|
1395 |
+
DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
|
1396 |
+
MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
|
1397 |
+
hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
|
1398 |
+
CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
|
1399 |
+
ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
|
1400 |
+
BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
|
1401 |
+
E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
|
1402 |
+
rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
|
1403 |
+
jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
|
1404 |
+
rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
|
1405 |
+
dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
|
1406 |
+
/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
|
1407 |
+
MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
|
1408 |
+
kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
|
1409 |
+
XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
|
1410 |
+
VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
|
1411 |
+
a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
|
1412 |
+
dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
|
1413 |
+
KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
|
1414 |
+
Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
|
1415 |
+
8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
|
1416 |
+
C7TbO6Orb1wdtn7os4I07QZcJA==
|
1417 |
+
-----END CERTIFICATE-----
|
1418 |
+
|
1419 |
+
T-TeleSec GlobalRoot Class 2
|
1420 |
+
============================
|
1421 |
+
-----BEGIN CERTIFICATE-----
|
1422 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
1423 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
1424 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
|
1425 |
+
MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
1426 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
1427 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
|
1428 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
|
1429 |
+
SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
|
1430 |
+
vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
|
1431 |
+
2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
|
1432 |
+
WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
|
1433 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
|
1434 |
+
YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
|
1435 |
+
r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
|
1436 |
+
vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
|
1437 |
+
3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
|
1438 |
+
9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
|
1439 |
+
-----END CERTIFICATE-----
|
1440 |
+
|
1441 |
+
Atos TrustedRoot 2011
|
1442 |
+
=====================
|
1443 |
+
-----BEGIN CERTIFICATE-----
|
1444 |
+
MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
|
1445 |
+
cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
|
1446 |
+
MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
|
1447 |
+
A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
|
1448 |
+
hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
|
1449 |
+
54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
|
1450 |
+
DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
|
1451 |
+
HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
|
1452 |
+
z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
|
1453 |
+
l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
|
1454 |
+
bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
|
1455 |
+
CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
|
1456 |
+
k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
|
1457 |
+
TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
|
1458 |
+
61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
|
1459 |
+
3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
|
1460 |
+
-----END CERTIFICATE-----
|
1461 |
+
|
1462 |
+
QuoVadis Root CA 1 G3
|
1463 |
+
=====================
|
1464 |
+
-----BEGIN CERTIFICATE-----
|
1465 |
+
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
|
1489 |
+
hMJKzRwuJIczYOXD
|
1490 |
+
-----END CERTIFICATE-----
|
1491 |
+
|
1492 |
+
QuoVadis Root CA 2 G3
|
1493 |
+
=====================
|
1494 |
+
-----BEGIN CERTIFICATE-----
|
1495 |
+
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
|
1519 |
+
O3jtZsSOeWmD3n+M
|
1520 |
+
-----END CERTIFICATE-----
|
1521 |
+
|
1522 |
+
QuoVadis Root CA 3 G3
|
1523 |
+
=====================
|
1524 |
+
-----BEGIN CERTIFICATE-----
|
1525 |
+
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
|
1549 |
+
PpxxVJkES/1Y+Zj0
|
1550 |
+
-----END CERTIFICATE-----
|
1551 |
+
|
1552 |
+
DigiCert Assured ID Root G2
|
1553 |
+
===========================
|
1554 |
+
-----BEGIN CERTIFICATE-----
|
1555 |
+
MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
|
1556 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1557 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
|
1558 |
+
MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1559 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
|
1560 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
|
1561 |
+
35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
|
1562 |
+
bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
|
1563 |
+
VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
|
1564 |
+
YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
|
1565 |
+
lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
|
1566 |
+
w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
|
1567 |
+
0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
|
1568 |
+
d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
|
1569 |
+
hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
|
1570 |
+
jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
|
1571 |
+
IhNzbM8m9Yop5w==
|
1572 |
+
-----END CERTIFICATE-----
|
1573 |
+
|
1574 |
+
DigiCert Assured ID Root G3
|
1575 |
+
===========================
|
1576 |
+
-----BEGIN CERTIFICATE-----
|
1577 |
+
MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
|
1578 |
+
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
|
1579 |
+
VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
|
1580 |
+
MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
1581 |
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
|
1582 |
+
BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
|
1583 |
+
RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
|
1584 |
+
KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
|
1585 |
+
UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
|
1586 |
+
YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
|
1587 |
+
1vUhZscv6pZjamVFkpUBtA==
|
1588 |
+
-----END CERTIFICATE-----
|
1589 |
+
|
1590 |
+
DigiCert Global Root G2
|
1591 |
+
=======================
|
1592 |
+
-----BEGIN CERTIFICATE-----
|
1593 |
+
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
|
1594 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1595 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
|
1596 |
+
MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1597 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
|
1598 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
|
1599 |
+
kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
|
1600 |
+
3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
|
1601 |
+
BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
|
1602 |
+
UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
|
1603 |
+
o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
|
1604 |
+
5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
|
1605 |
+
F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
|
1606 |
+
WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
|
1607 |
+
QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
|
1608 |
+
iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
|
1609 |
+
MrY=
|
1610 |
+
-----END CERTIFICATE-----
|
1611 |
+
|
1612 |
+
DigiCert Global Root G3
|
1613 |
+
=======================
|
1614 |
+
-----BEGIN CERTIFICATE-----
|
1615 |
+
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
|
1616 |
+
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
|
1617 |
+
VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
|
1618 |
+
MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
|
1619 |
+
aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
|
1620 |
+
AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
|
1621 |
+
YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
|
1622 |
+
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
|
1623 |
+
Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
|
1624 |
+
3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
|
1625 |
+
VOKa5Vt8sycX
|
1626 |
+
-----END CERTIFICATE-----
|
1627 |
+
|
1628 |
+
DigiCert Trusted Root G4
|
1629 |
+
========================
|
1630 |
+
-----BEGIN CERTIFICATE-----
|
1631 |
+
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
|
1656 |
+
82Z+
|
1657 |
+
-----END CERTIFICATE-----
|
1658 |
+
|
1659 |
+
COMODO RSA Certification Authority
|
1660 |
+
==================================
|
1661 |
+
-----BEGIN CERTIFICATE-----
|
1662 |
+
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
|
1688 |
+
LaZRfyHBNVOFBkpdn627G190
|
1689 |
+
-----END CERTIFICATE-----
|
1690 |
+
|
1691 |
+
USERTrust RSA Certification Authority
|
1692 |
+
=====================================
|
1693 |
+
-----BEGIN CERTIFICATE-----
|
1694 |
+
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
|
1720 |
+
Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
|
1721 |
+
-----END CERTIFICATE-----
|
1722 |
+
|
1723 |
+
USERTrust ECC Certification Authority
|
1724 |
+
=====================================
|
1725 |
+
-----BEGIN CERTIFICATE-----
|
1726 |
+
MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
|
1727 |
+
VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
|
1728 |
+
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
|
1729 |
+
biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
|
1730 |
+
VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
|
1731 |
+
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
|
1732 |
+
biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
|
1733 |
+
0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
|
1734 |
+
nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
|
1735 |
+
HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
|
1736 |
+
HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
|
1737 |
+
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
|
1738 |
+
-----END CERTIFICATE-----
|
1739 |
+
|
1740 |
+
GlobalSign ECC Root CA - R4
|
1741 |
+
===========================
|
1742 |
+
-----BEGIN CERTIFICATE-----
|
1743 |
+
MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
|
1744 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
1745 |
+
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
|
1746 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
1747 |
+
EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
|
1748 |
+
OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
|
1749 |
+
AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
|
1750 |
+
MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
|
1751 |
+
JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
|
1752 |
+
-----END CERTIFICATE-----
|
1753 |
+
|
1754 |
+
GlobalSign ECC Root CA - R5
|
1755 |
+
===========================
|
1756 |
+
-----BEGIN CERTIFICATE-----
|
1757 |
+
MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
|
1758 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
1759 |
+
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
|
1760 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
1761 |
+
EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
|
1762 |
+
SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
|
1763 |
+
h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
|
1764 |
+
BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
|
1765 |
+
uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
|
1766 |
+
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
|
1767 |
+
-----END CERTIFICATE-----
|
1768 |
+
|
1769 |
+
Staat der Nederlanden EV Root CA
|
1770 |
+
================================
|
1771 |
+
-----BEGIN CERTIFICATE-----
|
1772 |
+
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
|
1796 |
+
eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
|
1797 |
+
-----END CERTIFICATE-----
|
1798 |
+
|
1799 |
+
IdenTrust Commercial Root CA 1
|
1800 |
+
==============================
|
1801 |
+
-----BEGIN CERTIFICATE-----
|
1802 |
+
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
|
1826 |
+
cGzM7vRX+Bi6hG6H
|
1827 |
+
-----END CERTIFICATE-----
|
1828 |
+
|
1829 |
+
IdenTrust Public Sector Root CA 1
|
1830 |
+
=================================
|
1831 |
+
-----BEGIN CERTIFICATE-----
|
1832 |
+
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
|
1856 |
+
3Wl9af0AVqW3rLatt8o+Ae+c
|
1857 |
+
-----END CERTIFICATE-----
|
1858 |
+
|
1859 |
+
Entrust Root Certification Authority - G2
|
1860 |
+
=========================================
|
1861 |
+
-----BEGIN CERTIFICATE-----
|
1862 |
+
MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
|
1863 |
+
BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
|
1864 |
+
bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
|
1865 |
+
b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
|
1866 |
+
HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
|
1867 |
+
DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
|
1868 |
+
OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
|
1869 |
+
eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
|
1870 |
+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
|
1871 |
+
/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
|
1872 |
+
HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
|
1873 |
+
s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
|
1874 |
+
TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
|
1875 |
+
AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
|
1876 |
+
0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
|
1877 |
+
iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
|
1878 |
+
Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
|
1879 |
+
nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
|
1880 |
+
vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
|
1881 |
+
e4pIb4tF9g==
|
1882 |
+
-----END CERTIFICATE-----
|
1883 |
+
|
1884 |
+
Entrust Root Certification Authority - EC1
|
1885 |
+
==========================================
|
1886 |
+
-----BEGIN CERTIFICATE-----
|
1887 |
+
MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
|
1888 |
+
FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
|
1889 |
+
YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
|
1890 |
+
ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
1891 |
+
IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
|
1892 |
+
FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
|
1893 |
+
LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
|
1894 |
+
dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
|
1895 |
+
IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
|
1896 |
+
AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
|
1897 |
+
9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
1898 |
+
FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
|
1899 |
+
vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
|
1900 |
+
kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
|
1901 |
+
-----END CERTIFICATE-----
|
1902 |
+
|
1903 |
+
CFCA EV ROOT
|
1904 |
+
============
|
1905 |
+
-----BEGIN CERTIFICATE-----
|
1906 |
+
MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE
|
1907 |
+
CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB
|
1908 |
+
IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw
|
1909 |
+
MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD
|
1910 |
+
DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV
|
1911 |
+
BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD
|
1912 |
+
7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
|
1913 |
+
uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW
|
1914 |
+
ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7
|
1915 |
+
xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f
|
1916 |
+
py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K
|
1917 |
+
gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
|
1918 |
+
hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
|
1919 |
+
tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf
|
1920 |
+
BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
|
1921 |
+
/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
|
1922 |
+
ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q
|
1923 |
+
ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua
|
1924 |
+
4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG
|
1925 |
+
E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX
|
1926 |
+
BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn
|
1927 |
+
aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy
|
1928 |
+
PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
|
1929 |
+
kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
|
1930 |
+
ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
|
1931 |
+
-----END CERTIFICATE-----
|
1932 |
+
|
1933 |
+
OISTE WISeKey Global Root GB CA
|
1934 |
+
===============================
|
1935 |
+
-----BEGIN CERTIFICATE-----
|
1936 |
+
MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG
|
1937 |
+
EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
|
1938 |
+
ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw
|
1939 |
+
MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD
|
1940 |
+
VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds
|
1941 |
+
b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX
|
1942 |
+
scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP
|
1943 |
+
rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk
|
1944 |
+
9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o
|
1945 |
+
Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg
|
1946 |
+
GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
|
1947 |
+
/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
|
1948 |
+
hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD
|
1949 |
+
dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0
|
1950 |
+
VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui
|
1951 |
+
HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
|
1952 |
+
Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
|
1953 |
+
-----END CERTIFICATE-----
|
1954 |
+
|
1955 |
+
SZAFIR ROOT CA2
|
1956 |
+
===============
|
1957 |
+
-----BEGIN CERTIFICATE-----
|
1958 |
+
MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
|
1959 |
+
A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
|
1960 |
+
BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
|
1961 |
+
BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
|
1962 |
+
VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
|
1963 |
+
qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
|
1964 |
+
DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
|
1965 |
+
2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
|
1966 |
+
ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
|
1967 |
+
ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
|
1968 |
+
AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
|
1969 |
+
AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
|
1970 |
+
O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
|
1971 |
+
oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
|
1972 |
+
4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
|
1973 |
+
+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
|
1974 |
+
-----END CERTIFICATE-----
|
1975 |
+
|
1976 |
+
Certum Trusted Network CA 2
|
1977 |
+
===========================
|
1978 |
+
-----BEGIN CERTIFICATE-----
|
1979 |
+
MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
|
1980 |
+
BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
|
1981 |
+
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
|
1982 |
+
ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
|
1983 |
+
TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
|
1984 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
|
1985 |
+
IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
|
1986 |
+
7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
|
1987 |
+
CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
|
1988 |
+
Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
|
1989 |
+
uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
|
1990 |
+
GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
|
1991 |
+
9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
|
1992 |
+
Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
|
1993 |
+
hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
|
1994 |
+
BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1995 |
+
AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
|
1996 |
+
hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
|
1997 |
+
Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
|
1998 |
+
L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
|
1999 |
+
clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
|
2000 |
+
pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
|
2001 |
+
w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
|
2002 |
+
J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
|
2003 |
+
ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
|
2004 |
+
is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
|
2005 |
+
zAYspsbiDrW5viSP
|
2006 |
+
-----END CERTIFICATE-----
|
2007 |
+
|
2008 |
+
Hellenic Academic and Research Institutions RootCA 2015
|
2009 |
+
=======================================================
|
2010 |
+
-----BEGIN CERTIFICATE-----
|
2011 |
+
MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
|
2012 |
+
BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
|
2013 |
+
aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
|
2014 |
+
YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
|
2015 |
+
MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
|
2016 |
+
QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
|
2017 |
+
BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
|
2018 |
+
MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
|
2019 |
+
bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
|
2020 |
+
iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
|
2021 |
+
6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
|
2022 |
+
FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
|
2023 |
+
i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
|
2024 |
+
GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
|
2025 |
+
fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
|
2026 |
+
iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
|
2027 |
+
Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
2028 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
|
2029 |
+
hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
|
2030 |
+
D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
|
2031 |
+
d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
|
2032 |
+
d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
|
2033 |
+
82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
|
2034 |
+
davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
|
2035 |
+
Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
|
2036 |
+
J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
|
2037 |
+
JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
|
2038 |
+
p/UsQu0yrbYhnr68
|
2039 |
+
-----END CERTIFICATE-----
|
2040 |
+
|
2041 |
+
Hellenic Academic and Research Institutions ECC RootCA 2015
|
2042 |
+
===========================================================
|
2043 |
+
-----BEGIN CERTIFICATE-----
|
2044 |
+
MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
|
2045 |
+
aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
|
2046 |
+
cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
|
2047 |
+
aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
|
2048 |
+
MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
|
2049 |
+
IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
|
2050 |
+
VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
|
2051 |
+
Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
|
2052 |
+
dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
|
2053 |
+
Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
2054 |
+
BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
|
2055 |
+
GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
|
2056 |
+
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
2057 |
+
-----END CERTIFICATE-----
|
2058 |
+
|
2059 |
+
ISRG Root X1
|
2060 |
+
============
|
2061 |
+
-----BEGIN CERTIFICATE-----
|
2062 |
+
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
|
2086 |
+
m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
2087 |
+
-----END CERTIFICATE-----
|
2088 |
+
|
2089 |
+
AC RAIZ FNMT-RCM
|
2090 |
+
================
|
2091 |
+
-----BEGIN CERTIFICATE-----
|
2092 |
+
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
|
2117 |
+
-----END CERTIFICATE-----
|
2118 |
+
|
2119 |
+
Amazon Root CA 1
|
2120 |
+
================
|
2121 |
+
-----BEGIN CERTIFICATE-----
|
2122 |
+
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
|
2123 |
+
VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
|
2124 |
+
MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
|
2125 |
+
bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2126 |
+
ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
|
2127 |
+
FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
|
2128 |
+
gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
|
2129 |
+
dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
|
2130 |
+
VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
|
2131 |
+
/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
|
2132 |
+
DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
|
2133 |
+
CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
|
2134 |
+
8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
|
2135 |
+
2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
|
2136 |
+
xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
|
2137 |
+
-----END CERTIFICATE-----
|
2138 |
+
|
2139 |
+
Amazon Root CA 2
|
2140 |
+
================
|
2141 |
+
-----BEGIN CERTIFICATE-----
|
2142 |
+
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
|
2166 |
+
-----END CERTIFICATE-----
|
2167 |
+
|
2168 |
+
Amazon Root CA 3
|
2169 |
+
================
|
2170 |
+
-----BEGIN CERTIFICATE-----
|
2171 |
+
MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
|
2172 |
+
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
|
2173 |
+
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
|
2174 |
+
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
|
2175 |
+
f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
|
2176 |
+
Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
|
2177 |
+
rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
|
2178 |
+
eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
|
2179 |
+
-----END CERTIFICATE-----
|
2180 |
+
|
2181 |
+
Amazon Root CA 4
|
2182 |
+
================
|
2183 |
+
-----BEGIN CERTIFICATE-----
|
2184 |
+
MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
|
2185 |
+
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
|
2186 |
+
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
|
2187 |
+
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
|
2188 |
+
/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
|
2189 |
+
83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
|
2190 |
+
HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
|
2191 |
+
MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
|
2192 |
+
AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
|
2193 |
+
-----END CERTIFICATE-----
|
2194 |
+
|
2195 |
+
TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
|
2196 |
+
=============================================
|
2197 |
+
-----BEGIN CERTIFICATE-----
|
2198 |
+
MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
|
2199 |
+
D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
|
2200 |
+
IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
|
2201 |
+
TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
|
2202 |
+
ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
|
2203 |
+
VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
|
2204 |
+
c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
|
2205 |
+
bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
|
2206 |
+
IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2207 |
+
MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
|
2208 |
+
6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
|
2209 |
+
wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
|
2210 |
+
3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
|
2211 |
+
WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
|
2212 |
+
ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
|
2213 |
+
KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
|
2214 |
+
AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
|
2215 |
+
lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
|
2216 |
+
e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
|
2217 |
+
q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
|
2218 |
+
-----END CERTIFICATE-----
|
2219 |
+
|
2220 |
+
GDCA TrustAUTH R5 ROOT
|
2221 |
+
======================
|
2222 |
+
-----BEGIN CERTIFICATE-----
|
2223 |
+
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
|
2248 |
+
-----END CERTIFICATE-----
|
2249 |
+
|
2250 |
+
TrustCor RootCert CA-1
|
2251 |
+
======================
|
2252 |
+
-----BEGIN CERTIFICATE-----
|
2253 |
+
MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP
|
2254 |
+
MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
|
2255 |
+
U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
|
2256 |
+
dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx
|
2257 |
+
MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu
|
2258 |
+
YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe
|
2259 |
+
VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy
|
2260 |
+
dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq
|
2261 |
+
jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4
|
2262 |
+
pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0
|
2263 |
+
JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h
|
2264 |
+
gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw
|
2265 |
+
/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j
|
2266 |
+
BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2267 |
+
AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5
|
2268 |
+
mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
|
2269 |
+
ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C
|
2270 |
+
qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P
|
2271 |
+
3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk=
|
2272 |
+
-----END CERTIFICATE-----
|
2273 |
+
|
2274 |
+
TrustCor RootCert CA-2
|
2275 |
+
======================
|
2276 |
+
-----BEGIN CERTIFICATE-----
|
2277 |
+
MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w
|
2278 |
+
DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT
|
2279 |
+
eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0
|
2280 |
+
eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy
|
2281 |
+
MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h
|
2282 |
+
bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
|
2283 |
+
cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0
|
2284 |
+
IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb
|
2285 |
+
ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk
|
2286 |
+
RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1
|
2287 |
+
oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb
|
2288 |
+
XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1
|
2289 |
+
/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q
|
2290 |
+
jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP
|
2291 |
+
eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg
|
2292 |
+
rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
|
2293 |
+
8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU
|
2294 |
+
2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD
|
2295 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h
|
2296 |
+
Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp
|
2297 |
+
kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv
|
2298 |
+
2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3
|
2299 |
+
S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw
|
2300 |
+
PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv
|
2301 |
+
DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU
|
2302 |
+
RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE
|
2303 |
+
xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX
|
2304 |
+
RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ
|
2305 |
+
-----END CERTIFICATE-----
|
2306 |
+
|
2307 |
+
TrustCor ECA-1
|
2308 |
+
==============
|
2309 |
+
-----BEGIN CERTIFICATE-----
|
2310 |
+
MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP
|
2311 |
+
MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
|
2312 |
+
U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
|
2313 |
+
dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw
|
2314 |
+
N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5
|
2315 |
+
MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y
|
2316 |
+
IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG
|
2317 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR
|
2318 |
+
MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23
|
2319 |
+
xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc
|
2320 |
+
p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+
|
2321 |
+
fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj
|
2322 |
+
YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL
|
2323 |
+
f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
|
2324 |
+
AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u
|
2325 |
+
/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
|
2326 |
+
hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs
|
2327 |
+
J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC
|
2328 |
+
jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g==
|
2329 |
+
-----END CERTIFICATE-----
|
2330 |
+
|
2331 |
+
SSL.com Root Certification Authority RSA
|
2332 |
+
========================================
|
2333 |
+
-----BEGIN CERTIFICATE-----
|
2334 |
+
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
|
2360 |
+
WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k=
|
2361 |
+
-----END CERTIFICATE-----
|
2362 |
+
|
2363 |
+
SSL.com Root Certification Authority ECC
|
2364 |
+
========================================
|
2365 |
+
-----BEGIN CERTIFICATE-----
|
2366 |
+
MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV
|
2367 |
+
BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv
|
2368 |
+
BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy
|
2369 |
+
MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO
|
2370 |
+
BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
|
2371 |
+
bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
2372 |
+
BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+
|
2373 |
+
8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR
|
2374 |
+
hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT
|
2375 |
+
jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW
|
2376 |
+
e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z
|
2377 |
+
5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
|
2378 |
+
-----END CERTIFICATE-----
|
2379 |
+
|
2380 |
+
SSL.com EV Root Certification Authority RSA R2
|
2381 |
+
==============================================
|
2382 |
+
-----BEGIN CERTIFICATE-----
|
2383 |
+
MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w
|
2384 |
+
DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u
|
2385 |
+
MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
|
2386 |
+
MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI
|
2387 |
+
DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD
|
2388 |
+
VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN
|
2389 |
+
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh
|
2390 |
+
hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w
|
2391 |
+
cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO
|
2392 |
+
Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+
|
2393 |
+
B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh
|
2394 |
+
CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim
|
2395 |
+
9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto
|
2396 |
+
RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm
|
2397 |
+
JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48
|
2398 |
+
+qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
|
2399 |
+
HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp
|
2400 |
+
qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1
|
2401 |
+
++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx
|
2402 |
+
Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G
|
2403 |
+
guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz
|
2404 |
+
OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7
|
2405 |
+
CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq
|
2406 |
+
lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR
|
2407 |
+
rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1
|
2408 |
+
hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX
|
2409 |
+
9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
|
2410 |
+
-----END CERTIFICATE-----
|
2411 |
+
|
2412 |
+
SSL.com EV Root Certification Authority ECC
|
2413 |
+
===========================================
|
2414 |
+
-----BEGIN CERTIFICATE-----
|
2415 |
+
MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV
|
2416 |
+
BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy
|
2417 |
+
BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw
|
2418 |
+
MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx
|
2419 |
+
EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM
|
2420 |
+
LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
|
2421 |
+
BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy
|
2422 |
+
3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O
|
2423 |
+
BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
|
2424 |
+
5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ
|
2425 |
+
N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
|
2426 |
+
m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
|
2427 |
+
-----END CERTIFICATE-----
|
2428 |
+
|
2429 |
+
GlobalSign Root CA - R6
|
2430 |
+
=======================
|
2431 |
+
-----BEGIN CERTIFICATE-----
|
2432 |
+
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
|
2457 |
+
-----END CERTIFICATE-----
|
2458 |
+
|
2459 |
+
OISTE WISeKey Global Root GC CA
|
2460 |
+
===============================
|
2461 |
+
-----BEGIN CERTIFICATE-----
|
2462 |
+
MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
|
2463 |
+
SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
|
2464 |
+
MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
|
2465 |
+
Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
|
2466 |
+
ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
|
2467 |
+
bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
|
2468 |
+
VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
|
2469 |
+
NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
|
2470 |
+
BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
|
2471 |
+
AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
|
2472 |
+
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
|
2473 |
+
-----END CERTIFICATE-----
|
2474 |
+
|
2475 |
+
GTS Root R1
|
2476 |
+
===========
|
2477 |
+
-----BEGIN CERTIFICATE-----
|
2478 |
+
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
|
2502 |
+
CFF1pkgl
|
2503 |
+
-----END CERTIFICATE-----
|
2504 |
+
|
2505 |
+
GTS Root R2
|
2506 |
+
===========
|
2507 |
+
-----BEGIN CERTIFICATE-----
|
2508 |
+
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
|
2532 |
+
o/DUhgkC
|
2533 |
+
-----END CERTIFICATE-----
|
2534 |
+
|
2535 |
+
GTS Root R3
|
2536 |
+
===========
|
2537 |
+
-----BEGIN CERTIFICATE-----
|
2538 |
+
MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
|
2539 |
+
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
|
2540 |
+
UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
|
2541 |
+
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
|
2542 |
+
hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
|
2543 |
+
Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
|
2544 |
+
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
|
2545 |
+
0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
|
2546 |
+
glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
|
2547 |
+
KaqW04MjyaR7YbPMAuhd
|
2548 |
+
-----END CERTIFICATE-----
|
2549 |
+
|
2550 |
+
GTS Root R4
|
2551 |
+
===========
|
2552 |
+
-----BEGIN CERTIFICATE-----
|
2553 |
+
MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
|
2554 |
+
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
|
2555 |
+
UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
|
2556 |
+
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
|
2557 |
+
hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
|
2558 |
+
6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
|
2559 |
+
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
|
2560 |
+
2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
|
2561 |
+
N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
|
2562 |
+
zPKwTdb+mciUqXWi4w==
|
2563 |
+
-----END CERTIFICATE-----
|
2564 |
+
|
2565 |
+
UCA Global G2 Root
|
2566 |
+
==================
|
2567 |
+
-----BEGIN CERTIFICATE-----
|
2568 |
+
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
|
2592 |
+
-----END CERTIFICATE-----
|
2593 |
+
|
2594 |
+
UCA Extended Validation Root
|
2595 |
+
============================
|
2596 |
+
-----BEGIN CERTIFICATE-----
|
2597 |
+
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
|
2621 |
+
dhh2n1ax
|
2622 |
+
-----END CERTIFICATE-----
|
2623 |
+
|
2624 |
+
Certigna Root CA
|
2625 |
+
================
|
2626 |
+
-----BEGIN CERTIFICATE-----
|
2627 |
+
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
|
2656 |
+
-----END CERTIFICATE-----
|
2657 |
+
|
2658 |
+
emSign Root CA - G1
|
2659 |
+
===================
|
2660 |
+
-----BEGIN CERTIFICATE-----
|
2661 |
+
MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET
|
2662 |
+
MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl
|
2663 |
+
ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx
|
2664 |
+
ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk
|
2665 |
+
aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB
|
2666 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN
|
2667 |
+
LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1
|
2668 |
+
cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW
|
2669 |
+
DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ
|
2670 |
+
6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH
|
2671 |
+
hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG
|
2672 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2
|
2673 |
+
vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q
|
2674 |
+
NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q
|
2675 |
+
+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih
|
2676 |
+
U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
|
2677 |
+
iN66zB+Afko=
|
2678 |
+
-----END CERTIFICATE-----
|
2679 |
+
|
2680 |
+
emSign ECC Root CA - G3
|
2681 |
+
=======================
|
2682 |
+
-----BEGIN CERTIFICATE-----
|
2683 |
+
MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG
|
2684 |
+
A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg
|
2685 |
+
MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4
|
2686 |
+
MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11
|
2687 |
+
ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
|
2688 |
+
RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc
|
2689 |
+
58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr
|
2690 |
+
MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC
|
2691 |
+
AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D
|
2692 |
+
CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7
|
2693 |
+
jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj
|
2694 |
+
-----END CERTIFICATE-----
|
2695 |
+
|
2696 |
+
emSign Root CA - C1
|
2697 |
+
===================
|
2698 |
+
-----BEGIN CERTIFICATE-----
|
2699 |
+
MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx
|
2700 |
+
EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp
|
2701 |
+
Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE
|
2702 |
+
BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD
|
2703 |
+
ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up
|
2704 |
+
ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/
|
2705 |
+
Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX
|
2706 |
+
OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V
|
2707 |
+
I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms
|
2708 |
+
lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+
|
2709 |
+
XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD
|
2710 |
+
ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp
|
2711 |
+
/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1
|
2712 |
+
NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9
|
2713 |
+
wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ
|
2714 |
+
BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
|
2715 |
+
-----END CERTIFICATE-----
|
2716 |
+
|
2717 |
+
emSign ECC Root CA - C3
|
2718 |
+
=======================
|
2719 |
+
-----BEGIN CERTIFICATE-----
|
2720 |
+
MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG
|
2721 |
+
A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF
|
2722 |
+
Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE
|
2723 |
+
BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD
|
2724 |
+
ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd
|
2725 |
+
6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9
|
2726 |
+
SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA
|
2727 |
+
B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA
|
2728 |
+
MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU
|
2729 |
+
ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
|
2730 |
+
-----END CERTIFICATE-----
|
2731 |
+
|
2732 |
+
Hongkong Post Root CA 3
|
2733 |
+
=======================
|
2734 |
+
-----BEGIN CERTIFICATE-----
|
2735 |
+
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
|
2761 |
+
dBb9HxEGmpv0
|
2762 |
+
-----END CERTIFICATE-----
|
2763 |
+
|
2764 |
+
Entrust Root Certification Authority - G4
|
2765 |
+
=========================================
|
2766 |
+
-----BEGIN CERTIFICATE-----
|
2767 |
+
MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV
|
2768 |
+
BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu
|
2769 |
+
bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1
|
2770 |
+
dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
|
2771 |
+
dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT
|
2772 |
+
AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
|
2773 |
+
L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv
|
2774 |
+
cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
2775 |
+
cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D
|
2776 |
+
umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV
|
2777 |
+
3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds
|
2778 |
+
8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ
|
2779 |
+
e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7
|
2780 |
+
ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X
|
2781 |
+
xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV
|
2782 |
+
7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
|
2783 |
+
dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW
|
2784 |
+
Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T
|
2785 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n
|
2786 |
+
MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q
|
2787 |
+
jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht
|
2788 |
+
7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK
|
2789 |
+
YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt
|
2790 |
+
jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+
|
2791 |
+
m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW
|
2792 |
+
RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA
|
2793 |
+
JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G
|
2794 |
+
+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT
|
2795 |
+
kcpG2om3PVODLAgfi49T3f+sHw==
|
2796 |
+
-----END CERTIFICATE-----
|
2797 |
+
|
2798 |
+
Microsoft ECC Root Certificate Authority 2017
|
2799 |
+
=============================================
|
2800 |
+
-----BEGIN CERTIFICATE-----
|
2801 |
+
MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
|
2802 |
+
UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND
|
2803 |
+
IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4
|
2804 |
+
MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw
|
2805 |
+
NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ
|
2806 |
+
BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6
|
2807 |
+
thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB
|
2808 |
+
eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM
|
2809 |
+
+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf
|
2810 |
+
Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR
|
2811 |
+
eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=
|
2812 |
+
-----END CERTIFICATE-----
|
2813 |
+
|
2814 |
+
Microsoft RSA Root Certificate Authority 2017
|
2815 |
+
=============================================
|
2816 |
+
-----BEGIN CERTIFICATE-----
|
2817 |
+
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
|
2842 |
+
5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E
|
2843 |
+
-----END CERTIFICATE-----
|
2844 |
+
|
2845 |
+
e-Szigno Root CA 2017
|
2846 |
+
=====================
|
2847 |
+
-----BEGIN CERTIFICATE-----
|
2848 |
+
MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw
|
2849 |
+
DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt
|
2850 |
+
MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa
|
2851 |
+
Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE
|
2852 |
+
CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp
|
2853 |
+
Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx
|
2854 |
+
s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G
|
2855 |
+
A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv
|
2856 |
+
vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA
|
2857 |
+
tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO
|
2858 |
+
svxyqltZ+efcMQ==
|
2859 |
+
-----END CERTIFICATE-----
|
2860 |
+
|
2861 |
+
certSIGN Root CA G2
|
2862 |
+
===================
|
2863 |
+
-----BEGIN CERTIFICATE-----
|
2864 |
+
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
|
2888 |
+
-----END CERTIFICATE-----
|
2889 |
+
|
2890 |
+
Trustwave Global Certification Authority
|
2891 |
+
========================================
|
2892 |
+
-----BEGIN CERTIFICATE-----
|
2893 |
+
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
|
2919 |
+
29FpHOTKyeC2nOnOcXHebD8WpHk=
|
2920 |
+
-----END CERTIFICATE-----
|
2921 |
+
|
2922 |
+
Trustwave Global ECC P256 Certification Authority
|
2923 |
+
=================================================
|
2924 |
+
-----BEGIN CERTIFICATE-----
|
2925 |
+
MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER
|
2926 |
+
MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
|
2927 |
+
b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp
|
2928 |
+
Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD
|
2929 |
+
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
|
2930 |
+
dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1
|
2931 |
+
NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj
|
2932 |
+
43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm
|
2933 |
+
P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt
|
2934 |
+
0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz
|
2935 |
+
RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7
|
2936 |
+
-----END CERTIFICATE-----
|
2937 |
+
|
2938 |
+
Trustwave Global ECC P384 Certification Authority
|
2939 |
+
=================================================
|
2940 |
+
-----BEGIN CERTIFICATE-----
|
2941 |
+
MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER
|
2942 |
+
MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
|
2943 |
+
b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp
|
2944 |
+
Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD
|
2945 |
+
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
|
2946 |
+
dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4
|
2947 |
+
NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH
|
2948 |
+
Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr
|
2949 |
+
/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV
|
2950 |
+
HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn
|
2951 |
+
ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl
|
2952 |
+
CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw==
|
2953 |
+
-----END CERTIFICATE-----
|
2954 |
+
|
2955 |
+
NAVER Global Root Certification Authority
|
2956 |
+
=========================================
|
2957 |
+
-----BEGIN CERTIFICATE-----
|
2958 |
+
MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG
|
2959 |
+
A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD
|
2960 |
+
DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4
|
2961 |
+
NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT
|
2962 |
+
UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv
|
2963 |
+
biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb
|
2964 |
+
UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW
|
2965 |
+
+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7
|
2966 |
+
XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2
|
2967 |
+
aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4
|
2968 |
+
Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z
|
2969 |
+
VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B
|
2970 |
+
A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai
|
2971 |
+
cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy
|
2972 |
+
YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV
|
2973 |
+
HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
|
2974 |
+
Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK
|
2975 |
+
21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB
|
2976 |
+
jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx
|
2977 |
+
hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg
|
2978 |
+
E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH
|
2979 |
+
D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ
|
2980 |
+
A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY
|
2981 |
+
qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG
|
2982 |
+
I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg
|
2983 |
+
kpzNNIaRkPpkUZ3+/uul9XXeifdy
|
2984 |
+
-----END CERTIFICATE-----
|
2985 |
+
|
2986 |
+
AC RAIZ FNMT-RCM SERVIDORES SEGUROS
|
2987 |
+
===================================
|
2988 |
+
-----BEGIN CERTIFICATE-----
|
2989 |
+
MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF
|
2990 |
+
UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy
|
2991 |
+
NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4
|
2992 |
+
MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt
|
2993 |
+
UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB
|
2994 |
+
QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
2995 |
+
BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2
|
2996 |
+
LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw
|
2997 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG
|
2998 |
+
SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD
|
2999 |
+
zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c=
|
3000 |
+
-----END CERTIFICATE-----
|
3001 |
+
|
3002 |
+
GlobalSign Root R46
|
3003 |
+
===================
|
3004 |
+
-----BEGIN CERTIFICATE-----
|
3005 |
+
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
|
3029 |
+
QEUxeCp6
|
3030 |
+
-----END CERTIFICATE-----
|
3031 |
+
|
3032 |
+
GlobalSign Root E46
|
3033 |
+
===================
|
3034 |
+
-----BEGIN CERTIFICATE-----
|
3035 |
+
MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT
|
3036 |
+
AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg
|
3037 |
+
RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV
|
3038 |
+
BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq
|
3039 |
+
hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB
|
3040 |
+
jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj
|
3041 |
+
QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL
|
3042 |
+
gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk
|
3043 |
+
vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
|
3044 |
+
CAezNIm8BZ/3Hobui3A=
|
3045 |
+
-----END CERTIFICATE-----
|
3046 |
+
|
3047 |
+
GLOBALTRUST 2020
|
3048 |
+
================
|
3049 |
+
-----BEGIN CERTIFICATE-----
|
3050 |
+
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
|
3075 |
+
-----END CERTIFICATE-----
|
3076 |
+
|
3077 |
+
ANF Secure Server Root CA
|
3078 |
+
=========================
|
3079 |
+
-----BEGIN CERTIFICATE-----
|
3080 |
+
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
|
3107 |
+
-----END CERTIFICATE-----
|
3108 |
+
|
3109 |
+
Certum EC-384 CA
|
3110 |
+
================
|
3111 |
+
-----BEGIN CERTIFICATE-----
|
3112 |
+
MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ
|
3113 |
+
TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy
|
3114 |
+
dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2
|
3115 |
+
MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh
|
3116 |
+
dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx
|
3117 |
+
GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq
|
3118 |
+
vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn
|
3119 |
+
iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
3120 |
+
VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo
|
3121 |
+
ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0
|
3122 |
+
QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=
|
3123 |
+
-----END CERTIFICATE-----
|
3124 |
+
|
3125 |
+
Certum Trusted Root CA
|
3126 |
+
======================
|
3127 |
+
-----BEGIN CERTIFICATE-----
|
3128 |
+
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
|
3154 |
+
-----END CERTIFICATE-----
|
3155 |
+
|
3156 |
+
TunTrust Root CA
|
3157 |
+
================
|
3158 |
+
-----BEGIN CERTIFICATE-----
|
3159 |
+
MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG
|
3160 |
+
A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj
|
3161 |
+
dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw
|
3162 |
+
NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD
|
3163 |
+
ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw
|
3164 |
+
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz
|
3165 |
+
2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b
|
3166 |
+
bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7
|
3167 |
+
NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd
|
3168 |
+
gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW
|
3169 |
+
VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f
|
3170 |
+
Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ
|
3171 |
+
juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas
|
3172 |
+
DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS
|
3173 |
+
VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI
|
3174 |
+
04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0
|
3175 |
+
90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl
|
3176 |
+
0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd
|
3177 |
+
Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY
|
3178 |
+
YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp
|
3179 |
+
adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x
|
3180 |
+
xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP
|
3181 |
+
jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM
|
3182 |
+
MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z
|
3183 |
+
ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r
|
3184 |
+
AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o=
|
3185 |
+
-----END CERTIFICATE-----
|
3186 |
+
|
3187 |
+
HARICA TLS RSA Root CA 2021
|
3188 |
+
===========================
|
3189 |
+
-----BEGIN CERTIFICATE-----
|
3190 |
+
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
|
3215 |
+
kf3/W9b3raYvAwtt41dU63ZTGI0RmLo=
|
3216 |
+
-----END CERTIFICATE-----
|
3217 |
+
|
3218 |
+
HARICA TLS ECC Root CA 2021
|
3219 |
+
===========================
|
3220 |
+
-----BEGIN CERTIFICATE-----
|
3221 |
+
MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH
|
3222 |
+
UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD
|
3223 |
+
QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX
|
3224 |
+
DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj
|
3225 |
+
IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv
|
3226 |
+
b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l
|
3227 |
+
AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b
|
3228 |
+
ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW
|
3229 |
+
0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi
|
3230 |
+
rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw
|
3231 |
+
CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
|
3232 |
+
-----END CERTIFICATE-----
|
razorpay-sdk/libs/Requests-2.0.0/composer.json
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "rmccue/requests",
|
3 |
+
"description": "A HTTP library written in PHP, for human beings.",
|
4 |
+
"homepage": "https://requests.ryanmccue.info/",
|
5 |
+
"license": "ISC",
|
6 |
+
"keywords": [
|
7 |
+
"http",
|
8 |
+
"idna",
|
9 |
+
"iri",
|
10 |
+
"ipv6",
|
11 |
+
"curl",
|
12 |
+
"sockets",
|
13 |
+
"fsockopen"
|
14 |
+
],
|
15 |
+
"authors": [
|
16 |
+
{
|
17 |
+
"name": "Ryan McCue",
|
18 |
+
"homepage": "https://rmccue.io/"
|
19 |
+
},
|
20 |
+
{
|
21 |
+
"name": "Alain Schlesser",
|
22 |
+
"homepage": "https://github.com/schlessera"
|
23 |
+
},
|
24 |
+
{
|
25 |
+
"name": "Juliette Reinders Folmer",
|
26 |
+
"homepage": "https://github.com/jrfnl"
|
27 |
+
},
|
28 |
+
{
|
29 |
+
"name": "Contributors",
|
30 |
+
"homepage": "https://github.com/WordPress/Requests/graphs/contributors"
|
31 |
+
}
|
32 |
+
],
|
33 |
+
"support": {
|
34 |
+
"issues": "https://github.com/WordPress/Requests/issues",
|
35 |
+
"source": "https://github.com/WordPress/Requests",
|
36 |
+
"docs": "https://requests.ryanmccue.info/"
|
37 |
+
},
|
38 |
+
"require": {
|
39 |
+
"php": ">=5.6",
|
40 |
+
"ext-json": "*"
|
41 |
+
},
|
42 |
+
"require-dev": {
|
43 |
+
"requests/test-server": "dev-master",
|
44 |
+
"squizlabs/php_codesniffer": "^3.6",
|
45 |
+
"phpcompatibility/php-compatibility": "^9.0",
|
46 |
+
"wp-coding-standards/wpcs": "^2.0",
|
47 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.7",
|
48 |
+
"php-parallel-lint/php-parallel-lint": "^1.3.1",
|
49 |
+
"php-parallel-lint/php-console-highlighter": "^0.5.0",
|
50 |
+
"yoast/phpunit-polyfills": "^1.0.0",
|
51 |
+
"roave/security-advisories": "dev-latest"
|
52 |
+
},
|
53 |
+
"type": "library",
|
54 |
+
"autoload": {
|
55 |
+
"psr-4": {
|
56 |
+
"WpOrg\\Requests\\": "src/"
|
57 |
+
},
|
58 |
+
"classmap": ["library/Requests.php"],
|
59 |
+
"files": ["library/Deprecated.php"]
|
60 |
+
},
|
61 |
+
"autoload-dev": {
|
62 |
+
"psr-4": {
|
63 |
+
"WpOrg\\Requests\\Tests\\": "tests/"
|
64 |
+
}
|
65 |
+
},
|
66 |
+
"scripts": {
|
67 |
+
"lint": [
|
68 |
+
"@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . -e php --exclude vendor --exclude .git"
|
69 |
+
],
|
70 |
+
"checkcs": [
|
71 |
+
"@php ./vendor/squizlabs/php_codesniffer/bin/phpcs"
|
72 |
+
],
|
73 |
+
"fixcs": [
|
74 |
+
"@php ./vendor/squizlabs/php_codesniffer/bin/phpcbf"
|
75 |
+
],
|
76 |
+
"test": [
|
77 |
+
"@php ./vendor/phpunit/phpunit/phpunit --no-coverage"
|
78 |
+
],
|
79 |
+
"coverage": [
|
80 |
+
"@php ./vendor/phpunit/phpunit/phpunit"
|
81 |
+
]
|
82 |
+
}
|
83 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/library/Deprecated.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Backwards compatibility layer for Requests.
|
4 |
+
*
|
5 |
+
* Allows for Composer to autoload the old PSR-0 classes via the custom autoloader.
|
6 |
+
* This prevents issues with _extending final classes_ (which was the previous solution).
|
7 |
+
*
|
8 |
+
* Please see the Changelog for the 2.0.0 release for upgrade notes.
|
9 |
+
*
|
10 |
+
* @package Requests
|
11 |
+
*
|
12 |
+
* @deprecated 2.0.0 Use the PSR-4 class names instead.
|
13 |
+
*/
|
14 |
+
|
15 |
+
if (class_exists('WpOrg\Requests\Autoload') === false) {
|
16 |
+
require_once dirname(__DIR__) . '/src/Autoload.php';
|
17 |
+
}
|
18 |
+
|
19 |
+
WpOrg\Requests\Autoload::register();
|
razorpay-sdk/libs/Requests-2.0.0/library/README.md
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
## The Library directory is deprecated.
|
2 |
+
|
3 |
+
The files in this directory are only still in place to provide backward compatibility with Requests 1.x.
|
4 |
+
Please see the release notes of Requests 2.0.0 on how to upgrade.
|
5 |
+
|
6 |
+
This directory will be removed in Requests v 4.0.0.
|
razorpay-sdk/libs/Requests-2.0.0/library/Requests.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Requests for PHP
|
4 |
+
*
|
5 |
+
* Inspired by Requests for Python.
|
6 |
+
*
|
7 |
+
* Based on concepts from SimplePie_File, RequestCore and WP_Http.
|
8 |
+
*
|
9 |
+
* @package Requests
|
10 |
+
*
|
11 |
+
* @deprecated 2.0.0
|
12 |
+
*/
|
13 |
+
|
14 |
+
/*
|
15 |
+
* Integrators who cannot yet upgrade to the PSR-4 class names can silence deprecations
|
16 |
+
* by defining a `REQUESTS_SILENCE_PSR0_DEPRECATIONS` constant and setting it to `true`.
|
17 |
+
* The constant needs to be defined before this class is required.
|
18 |
+
*/
|
19 |
+
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS') || REQUESTS_SILENCE_PSR0_DEPRECATIONS !== true) {
|
20 |
+
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error
|
21 |
+
trigger_error(
|
22 |
+
'The PSR-0 `Requests_...` class names in the Request library are deprecated.'
|
23 |
+
. ' Switch to the PSR-4 `WpOrg\Requests\...` class names at your earliest convenience.',
|
24 |
+
E_USER_DEPRECATED
|
25 |
+
);
|
26 |
+
|
27 |
+
// Prevent the deprecation notice from being thrown twice.
|
28 |
+
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS')) {
|
29 |
+
define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true);
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
require_once dirname(__DIR__) . '/src/Requests.php';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Requests for PHP
|
37 |
+
*
|
38 |
+
* Inspired by Requests for Python.
|
39 |
+
*
|
40 |
+
* Based on concepts from SimplePie_File, RequestCore and WP_Http.
|
41 |
+
*
|
42 |
+
* @package Requests
|
43 |
+
*
|
44 |
+
* @deprecated 2.0.0 Use `WpOrg\Requests\Requests` instead for the actual functionality and
|
45 |
+
* use `WpOrg\Requests\Autoload` for the autoloading.
|
46 |
+
*/
|
47 |
+
class Requests extends WpOrg\Requests\Requests {
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Deprecated autoloader for Requests.
|
51 |
+
*
|
52 |
+
* @deprecated 2.0.0 Use the `WpOrg\Requests\Autoload::load()` method instead.
|
53 |
+
*
|
54 |
+
* @codeCoverageIgnore
|
55 |
+
*
|
56 |
+
* @param string $class Class name to load
|
57 |
+
*/
|
58 |
+
public static function autoloader($class) {
|
59 |
+
if (class_exists('WpOrg\Requests\Autoload') === false) {
|
60 |
+
require_once dirname(__DIR__) . '/src/Autoload.php';
|
61 |
+
}
|
62 |
+
|
63 |
+
return WpOrg\Requests\Autoload::load($class);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Register the built-in autoloader
|
68 |
+
*
|
69 |
+
* @deprecated 2.0.0 Include the `WpOrg\Requests\Autoload` class and
|
70 |
+
* call `WpOrg\Requests\Autoload::register()` instead.
|
71 |
+
*
|
72 |
+
* @codeCoverageIgnore
|
73 |
+
*/
|
74 |
+
public static function register_autoloader() {
|
75 |
+
require_once dirname(__DIR__) . '/src/Autoload.php';
|
76 |
+
WpOrg\Requests\Autoload::register();
|
77 |
+
}
|
78 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Auth.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Authentication provider interface
|
4 |
+
*
|
5 |
+
* @package Requests\Authentication
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Hooks;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Authentication provider interface
|
14 |
+
*
|
15 |
+
* Implement this interface to act as an authentication provider.
|
16 |
+
*
|
17 |
+
* Parameters should be passed via the constructor where possible, as this
|
18 |
+
* makes it much easier for users to use your provider.
|
19 |
+
*
|
20 |
+
* @see \WpOrg\Requests\Hooks
|
21 |
+
*
|
22 |
+
* @package Requests\Authentication
|
23 |
+
*/
|
24 |
+
interface Auth {
|
25 |
+
/**
|
26 |
+
* Register hooks as needed
|
27 |
+
*
|
28 |
+
* This method is called in {@see \WpOrg\Requests\Requests::request()} when the user
|
29 |
+
* has set an instance as the 'auth' option. Use this callback to register all the
|
30 |
+
* hooks you'll need.
|
31 |
+
*
|
32 |
+
* @see \WpOrg\Requests\Hooks::register()
|
33 |
+
* @param \WpOrg\Requests\Hooks $hooks Hook system
|
34 |
+
*/
|
35 |
+
public function register(Hooks $hooks);
|
36 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Auth/Basic.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Basic Authentication provider
|
4 |
+
*
|
5 |
+
* @package Requests\Authentication
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Auth;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Auth;
|
11 |
+
use WpOrg\Requests\Exception\ArgumentCount;
|
12 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
13 |
+
use WpOrg\Requests\Hooks;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Basic Authentication provider
|
17 |
+
*
|
18 |
+
* Provides a handler for Basic HTTP authentication via the Authorization
|
19 |
+
* header.
|
20 |
+
*
|
21 |
+
* @package Requests\Authentication
|
22 |
+
*/
|
23 |
+
class Basic implements Auth {
|
24 |
+
/**
|
25 |
+
* Username
|
26 |
+
*
|
27 |
+
* @var string
|
28 |
+
*/
|
29 |
+
public $user;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Password
|
33 |
+
*
|
34 |
+
* @var string
|
35 |
+
*/
|
36 |
+
public $pass;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Constructor
|
40 |
+
*
|
41 |
+
* @since 2.0 Throws an `InvalidArgument` exception.
|
42 |
+
* @since 2.0 Throws an `ArgumentCount` exception instead of the Requests base `Exception.
|
43 |
+
*
|
44 |
+
* @param array|null $args Array of user and password. Must have exactly two elements
|
45 |
+
*
|
46 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not an array or null.
|
47 |
+
* @throws \WpOrg\Requests\Exception\ArgumentCount On incorrect number of array elements (`authbasicbadargs`).
|
48 |
+
*/
|
49 |
+
public function __construct($args = null) {
|
50 |
+
if (is_array($args)) {
|
51 |
+
if (count($args) !== 2) {
|
52 |
+
throw ArgumentCount::create('an array with exactly two elements', count($args), 'authbasicbadargs');
|
53 |
+
}
|
54 |
+
|
55 |
+
list($this->user, $this->pass) = $args;
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
if ($args !== null) {
|
60 |
+
throw InvalidArgument::create(1, '$args', 'array|null', gettype($args));
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Register the necessary callbacks
|
66 |
+
*
|
67 |
+
* @see \WpOrg\Requests\Auth\Basic::curl_before_send()
|
68 |
+
* @see \WpOrg\Requests\Auth\Basic::fsockopen_header()
|
69 |
+
* @param \WpOrg\Requests\Hooks $hooks Hook system
|
70 |
+
*/
|
71 |
+
public function register(Hooks $hooks) {
|
72 |
+
$hooks->register('curl.before_send', [$this, 'curl_before_send']);
|
73 |
+
$hooks->register('fsockopen.after_headers', [$this, 'fsockopen_header']);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Set cURL parameters before the data is sent
|
78 |
+
*
|
79 |
+
* @param resource|\CurlHandle $handle cURL handle
|
80 |
+
*/
|
81 |
+
public function curl_before_send(&$handle) {
|
82 |
+
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
83 |
+
curl_setopt($handle, CURLOPT_USERPWD, $this->getAuthString());
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Add extra headers to the request before sending
|
88 |
+
*
|
89 |
+
* @param string $out HTTP header string
|
90 |
+
*/
|
91 |
+
public function fsockopen_header(&$out) {
|
92 |
+
$out .= sprintf("Authorization: Basic %s\r\n", base64_encode($this->getAuthString()));
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Get the authentication string (user:pass)
|
97 |
+
*
|
98 |
+
* @return string
|
99 |
+
*/
|
100 |
+
public function getAuthString() {
|
101 |
+
return $this->user . ':' . $this->pass;
|
102 |
+
}
|
103 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Autoload.php
ADDED
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Autoloader for Requests for PHP.
|
4 |
+
*
|
5 |
+
* Include this file if you'd like to avoid having to create your own autoloader.
|
6 |
+
*
|
7 |
+
* @package Requests
|
8 |
+
* @since 2.0.0
|
9 |
+
*
|
10 |
+
* @codeCoverageIgnore
|
11 |
+
*/
|
12 |
+
|
13 |
+
namespace WpOrg\Requests;
|
14 |
+
|
15 |
+
/*
|
16 |
+
* Ensure the autoloader is only declared once.
|
17 |
+
* This safeguard is in place as this is the typical entry point for this library
|
18 |
+
* and this file being required unconditionally could easily cause
|
19 |
+
* fatal "Class already declared" errors.
|
20 |
+
*/
|
21 |
+
if (class_exists('WpOrg\Requests\Autoload') === false) {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Autoloader for Requests for PHP.
|
25 |
+
*
|
26 |
+
* This autoloader supports the PSR-4 based Requests 2.0.0 classes in a case-sensitive manner
|
27 |
+
* as the most common server OS-es are case-sensitive and the file names are in mixed case.
|
28 |
+
*
|
29 |
+
* For the PSR-0 Requests 1.x BC-layer, requested classes will be treated case-insensitively.
|
30 |
+
*
|
31 |
+
* @package Requests
|
32 |
+
*/
|
33 |
+
final class Autoload {
|
34 |
+
|
35 |
+
/**
|
36 |
+
* List of the old PSR-0 class names in lowercase as keys with their PSR-4 case-sensitive name as a value.
|
37 |
+
*
|
38 |
+
* @var array
|
39 |
+
*/
|
40 |
+
private static $deprecated_classes = [
|
41 |
+
// Interfaces.
|
42 |
+
'requests_auth' => '\WpOrg\Requests\Auth',
|
43 |
+
'requests_hooker' => '\WpOrg\Requests\HookManager',
|
44 |
+
'requests_proxy' => '\WpOrg\Requests\Proxy',
|
45 |
+
'requests_transport' => '\WpOrg\Requests\Transport',
|
46 |
+
|
47 |
+
// Classes.
|
48 |
+
'requests_cookie' => '\WpOrg\Requests\Cookie',
|
49 |
+
'requests_exception' => '\WpOrg\Requests\Exception',
|
50 |
+
'requests_hooks' => '\WpOrg\Requests\Hooks',
|
51 |
+
'requests_idnaencoder' => '\WpOrg\Requests\IdnaEncoder',
|
52 |
+
'requests_ipv6' => '\WpOrg\Requests\Ipv6',
|
53 |
+
'requests_iri' => '\WpOrg\Requests\Iri',
|
54 |
+
'requests_response' => '\WpOrg\Requests\Response',
|
55 |
+
'requests_session' => '\WpOrg\Requests\Session',
|
56 |
+
'requests_ssl' => '\WpOrg\Requests\Ssl',
|
57 |
+
'requests_auth_basic' => '\WpOrg\Requests\Auth\Basic',
|
58 |
+
'requests_cookie_jar' => '\WpOrg\Requests\Cookie\Jar',
|
59 |
+
'requests_proxy_http' => '\WpOrg\Requests\Proxy\Http',
|
60 |
+
'requests_response_headers' => '\WpOrg\Requests\Response\Headers',
|
61 |
+
'requests_transport_curl' => '\WpOrg\Requests\Transport\Curl',
|
62 |
+
'requests_transport_fsockopen' => '\WpOrg\Requests\Transport\Fsockopen',
|
63 |
+
'requests_utility_caseinsensitivedictionary' => '\WpOrg\Requests\Utility\CaseInsensitiveDictionary',
|
64 |
+
'requests_utility_filterediterator' => '\WpOrg\Requests\Utility\FilteredIterator',
|
65 |
+
'requests_exception_http' => '\WpOrg\Requests\Exception\Http',
|
66 |
+
'requests_exception_transport' => '\WpOrg\Requests\Exception\Transport',
|
67 |
+
'requests_exception_transport_curl' => '\WpOrg\Requests\Exception\Transport\Curl',
|
68 |
+
'requests_exception_http_304' => '\WpOrg\Requests\Exception\Http\Status304',
|
69 |
+
'requests_exception_http_305' => '\WpOrg\Requests\Exception\Http\Status305',
|
70 |
+
'requests_exception_http_306' => '\WpOrg\Requests\Exception\Http\Status306',
|
71 |
+
'requests_exception_http_400' => '\WpOrg\Requests\Exception\Http\Status400',
|
72 |
+
'requests_exception_http_401' => '\WpOrg\Requests\Exception\Http\Status401',
|
73 |
+
'requests_exception_http_402' => '\WpOrg\Requests\Exception\Http\Status402',
|
74 |
+
'requests_exception_http_403' => '\WpOrg\Requests\Exception\Http\Status403',
|
75 |
+
'requests_exception_http_404' => '\WpOrg\Requests\Exception\Http\Status404',
|
76 |
+
'requests_exception_http_405' => '\WpOrg\Requests\Exception\Http\Status405',
|
77 |
+
'requests_exception_http_406' => '\WpOrg\Requests\Exception\Http\Status406',
|
78 |
+
'requests_exception_http_407' => '\WpOrg\Requests\Exception\Http\Status407',
|
79 |
+
'requests_exception_http_408' => '\WpOrg\Requests\Exception\Http\Status408',
|
80 |
+
'requests_exception_http_409' => '\WpOrg\Requests\Exception\Http\Status409',
|
81 |
+
'requests_exception_http_410' => '\WpOrg\Requests\Exception\Http\Status410',
|
82 |
+
'requests_exception_http_411' => '\WpOrg\Requests\Exception\Http\Status411',
|
83 |
+
'requests_exception_http_412' => '\WpOrg\Requests\Exception\Http\Status412',
|
84 |
+
'requests_exception_http_413' => '\WpOrg\Requests\Exception\Http\Status413',
|
85 |
+
'requests_exception_http_414' => '\WpOrg\Requests\Exception\Http\Status414',
|
86 |
+
'requests_exception_http_415' => '\WpOrg\Requests\Exception\Http\Status415',
|
87 |
+
'requests_exception_http_416' => '\WpOrg\Requests\Exception\Http\Status416',
|
88 |
+
'requests_exception_http_417' => '\WpOrg\Requests\Exception\Http\Status417',
|
89 |
+
'requests_exception_http_418' => '\WpOrg\Requests\Exception\Http\Status418',
|
90 |
+
'requests_exception_http_428' => '\WpOrg\Requests\Exception\Http\Status428',
|
91 |
+
'requests_exception_http_429' => '\WpOrg\Requests\Exception\Http\Status429',
|
92 |
+
'requests_exception_http_431' => '\WpOrg\Requests\Exception\Http\Status431',
|
93 |
+
'requests_exception_http_500' => '\WpOrg\Requests\Exception\Http\Status500',
|
94 |
+
'requests_exception_http_501' => '\WpOrg\Requests\Exception\Http\Status501',
|
95 |
+
'requests_exception_http_502' => '\WpOrg\Requests\Exception\Http\Status502',
|
96 |
+
'requests_exception_http_503' => '\WpOrg\Requests\Exception\Http\Status503',
|
97 |
+
'requests_exception_http_504' => '\WpOrg\Requests\Exception\Http\Status504',
|
98 |
+
'requests_exception_http_505' => '\WpOrg\Requests\Exception\Http\Status505',
|
99 |
+
'requests_exception_http_511' => '\WpOrg\Requests\Exception\Http\Status511',
|
100 |
+
'requests_exception_http_unknown' => '\WpOrg\Requests\Exception\Http\StatusUnknown',
|
101 |
+
];
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Register the autoloader.
|
105 |
+
*
|
106 |
+
* Note: the autoloader is *prepended* in the autoload queue.
|
107 |
+
* This is done to ensure that the Requests 2.0 autoloader takes precedence
|
108 |
+
* over a potentially (dependency-registered) Requests 1.x autoloader.
|
109 |
+
*
|
110 |
+
* @internal This method contains a safeguard against the autoloader being
|
111 |
+
* registered multiple times. This safeguard uses a global constant to
|
112 |
+
* (hopefully/in most cases) still function correctly, even if the
|
113 |
+
* class would be renamed.
|
114 |
+
*
|
115 |
+
* @return void
|
116 |
+
*/
|
117 |
+
public static function register() {
|
118 |
+
if (defined('REQUESTS_AUTOLOAD_REGISTERED') === false) {
|
119 |
+
spl_autoload_register([self::class, 'load'], true);
|
120 |
+
define('REQUESTS_AUTOLOAD_REGISTERED', true);
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Autoloader.
|
126 |
+
*
|
127 |
+
* @param string $class_name Name of the class name to load.
|
128 |
+
*
|
129 |
+
* @return bool Whether a class was loaded or not.
|
130 |
+
*/
|
131 |
+
public static function load($class_name) {
|
132 |
+
// Check that the class starts with "Requests" (PSR-0) or "WpOrg\Requests" (PSR-4).
|
133 |
+
$psr_4_prefix_pos = strpos($class_name, 'WpOrg\\Requests\\');
|
134 |
+
|
135 |
+
if (stripos($class_name, 'Requests') !== 0 && $psr_4_prefix_pos !== 0) {
|
136 |
+
return false;
|
137 |
+
}
|
138 |
+
|
139 |
+
$class_lower = strtolower($class_name);
|
140 |
+
|
141 |
+
if ($class_lower === 'requests') {
|
142 |
+
// Reference to the original PSR-0 Requests class.
|
143 |
+
$file = dirname(__DIR__) . '/library/Requests.php';
|
144 |
+
} elseif ($psr_4_prefix_pos === 0) {
|
145 |
+
// PSR-4 classname.
|
146 |
+
$file = __DIR__ . '/' . strtr(substr($class_name, 15), '\\', '/') . '.php';
|
147 |
+
}
|
148 |
+
|
149 |
+
if (isset($file) && file_exists($file)) {
|
150 |
+
include $file;
|
151 |
+
return true;
|
152 |
+
}
|
153 |
+
|
154 |
+
/*
|
155 |
+
* Okay, so the class starts with "Requests", but we couldn't find the file.
|
156 |
+
* If this is one of the deprecated/renamed PSR-0 classes being requested,
|
157 |
+
* let's alias it to the new name and throw a deprecation notice.
|
158 |
+
*/
|
159 |
+
if (isset(self::$deprecated_classes[$class_lower])) {
|
160 |
+
/*
|
161 |
+
* Integrators who cannot yet upgrade to the PSR-4 class names can silence deprecations
|
162 |
+
* by defining a `REQUESTS_SILENCE_PSR0_DEPRECATIONS` constant and setting it to `true`.
|
163 |
+
* The constant needs to be defined before the first deprecated class is requested
|
164 |
+
* via this autoloader.
|
165 |
+
*/
|
166 |
+
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS') || REQUESTS_SILENCE_PSR0_DEPRECATIONS !== true) {
|
167 |
+
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error
|
168 |
+
trigger_error(
|
169 |
+
'The PSR-0 `Requests_...` class names in the Request library are deprecated.'
|
170 |
+
. ' Switch to the PSR-4 `WpOrg\Requests\...` class names at your earliest convenience.',
|
171 |
+
E_USER_DEPRECATED
|
172 |
+
);
|
173 |
+
|
174 |
+
// Prevent the deprecation notice from being thrown twice.
|
175 |
+
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS')) {
|
176 |
+
define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true);
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
// Create an alias and let the autoloader recursively kick in to load the PSR-4 class.
|
181 |
+
return class_alias(self::$deprecated_classes[$class_lower], $class_name, true);
|
182 |
+
}
|
183 |
+
|
184 |
+
return false;
|
185 |
+
}
|
186 |
+
}
|
187 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Capability.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Capability interface declaring the known capabilities.
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Capability interface declaring the known capabilities.
|
12 |
+
*
|
13 |
+
* This is used as the authoritative source for which capabilities can be queried.
|
14 |
+
*
|
15 |
+
* @package Requests\Utilities
|
16 |
+
*/
|
17 |
+
interface Capability {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Support for SSL.
|
21 |
+
*
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
const SSL = 'ssl';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Collection of all capabilities supported in Requests.
|
28 |
+
*
|
29 |
+
* Note: this does not automatically mean that the capability will be supported for your chosen transport!
|
30 |
+
*
|
31 |
+
* @var array<string>
|
32 |
+
*/
|
33 |
+
const ALL = [
|
34 |
+
self::SSL,
|
35 |
+
];
|
36 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Cookie.php
ADDED
@@ -0,0 +1,527 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Cookie storage object
|
4 |
+
*
|
5 |
+
* @package Requests\Cookies
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
11 |
+
use WpOrg\Requests\Iri;
|
12 |
+
use WpOrg\Requests\Response\Headers;
|
13 |
+
use WpOrg\Requests\Utility\CaseInsensitiveDictionary;
|
14 |
+
use WpOrg\Requests\Utility\InputValidator;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Cookie storage object
|
18 |
+
*
|
19 |
+
* @package Requests\Cookies
|
20 |
+
*/
|
21 |
+
class Cookie {
|
22 |
+
/**
|
23 |
+
* Cookie name.
|
24 |
+
*
|
25 |
+
* @var string
|
26 |
+
*/
|
27 |
+
public $name;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Cookie value.
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
public $value;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Cookie attributes
|
38 |
+
*
|
39 |
+
* Valid keys are (currently) path, domain, expires, max-age, secure and
|
40 |
+
* httponly.
|
41 |
+
*
|
42 |
+
* @var \WpOrg\Requests\Utility\CaseInsensitiveDictionary|array Array-like object
|
43 |
+
*/
|
44 |
+
public $attributes = [];
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Cookie flags
|
48 |
+
*
|
49 |
+
* Valid keys are (currently) creation, last-access, persistent and
|
50 |
+
* host-only.
|
51 |
+
*
|
52 |
+
* @var array
|
53 |
+
*/
|
54 |
+
public $flags = [];
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Reference time for relative calculations
|
58 |
+
*
|
59 |
+
* This is used in place of `time()` when calculating Max-Age expiration and
|
60 |
+
* checking time validity.
|
61 |
+
*
|
62 |
+
* @var int
|
63 |
+
*/
|
64 |
+
public $reference_time = 0;
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Create a new cookie object
|
68 |
+
*
|
69 |
+
* @param string $name
|
70 |
+
* @param string $value
|
71 |
+
* @param array|\WpOrg\Requests\Utility\CaseInsensitiveDictionary $attributes Associative array of attribute data
|
72 |
+
* @param array $flags
|
73 |
+
* @param int|null $reference_time
|
74 |
+
*
|
75 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $name argument is not a string.
|
76 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $value argument is not a string.
|
77 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $attributes argument is not an array or iterable object with array access.
|
78 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $flags argument is not an array.
|
79 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $reference_time argument is not an integer or null.
|
80 |
+
*/
|
81 |
+
public function __construct($name, $value, $attributes = [], $flags = [], $reference_time = null) {
|
82 |
+
if (is_string($name) === false) {
|
83 |
+
throw InvalidArgument::create(1, '$name', 'string', gettype($name));
|
84 |
+
}
|
85 |
+
|
86 |
+
if (is_string($value) === false) {
|
87 |
+
throw InvalidArgument::create(2, '$value', 'string', gettype($value));
|
88 |
+
}
|
89 |
+
|
90 |
+
if (InputValidator::has_array_access($attributes) === false || InputValidator::is_iterable($attributes) === false) {
|
91 |
+
throw InvalidArgument::create(3, '$attributes', 'array|ArrayAccess&Traversable', gettype($attributes));
|
92 |
+
}
|
93 |
+
|
94 |
+
if (is_array($flags) === false) {
|
95 |
+
throw InvalidArgument::create(4, '$flags', 'array', gettype($flags));
|
96 |
+
}
|
97 |
+
|
98 |
+
if ($reference_time !== null && is_int($reference_time) === false) {
|
99 |
+
throw InvalidArgument::create(5, '$reference_time', 'integer|null', gettype($reference_time));
|
100 |
+
}
|
101 |
+
|
102 |
+
$this->name = $name;
|
103 |
+
$this->value = $value;
|
104 |
+
$this->attributes = $attributes;
|
105 |
+
$default_flags = [
|
106 |
+
'creation' => time(),
|
107 |
+
'last-access' => time(),
|
108 |
+
'persistent' => false,
|
109 |
+
'host-only' => true,
|
110 |
+
];
|
111 |
+
$this->flags = array_merge($default_flags, $flags);
|
112 |
+
|
113 |
+
$this->reference_time = time();
|
114 |
+
if ($reference_time !== null) {
|
115 |
+
$this->reference_time = $reference_time;
|
116 |
+
}
|
117 |
+
|
118 |
+
$this->normalize();
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Get the cookie value
|
123 |
+
*
|
124 |
+
* Attributes and other data can be accessed via methods.
|
125 |
+
*/
|
126 |
+
public function __toString() {
|
127 |
+
return $this->value;
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Check if a cookie is expired.
|
132 |
+
*
|
133 |
+
* Checks the age against $this->reference_time to determine if the cookie
|
134 |
+
* is expired.
|
135 |
+
*
|
136 |
+
* @return boolean True if expired, false if time is valid.
|
137 |
+
*/
|
138 |
+
public function is_expired() {
|
139 |
+
// RFC6265, s. 4.1.2.2:
|
140 |
+
// If a cookie has both the Max-Age and the Expires attribute, the Max-
|
141 |
+
// Age attribute has precedence and controls the expiration date of the
|
142 |
+
// cookie.
|
143 |
+
if (isset($this->attributes['max-age'])) {
|
144 |
+
$max_age = $this->attributes['max-age'];
|
145 |
+
return $max_age < $this->reference_time;
|
146 |
+
}
|
147 |
+
|
148 |
+
if (isset($this->attributes['expires'])) {
|
149 |
+
$expires = $this->attributes['expires'];
|
150 |
+
return $expires < $this->reference_time;
|
151 |
+
}
|
152 |
+
|
153 |
+
return false;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Check if a cookie is valid for a given URI
|
158 |
+
*
|
159 |
+
* @param \WpOrg\Requests\Iri $uri URI to check
|
160 |
+
* @return boolean Whether the cookie is valid for the given URI
|
161 |
+
*/
|
162 |
+
public function uri_matches(Iri $uri) {
|
163 |
+
if (!$this->domain_matches($uri->host)) {
|
164 |
+
return false;
|
165 |
+
}
|
166 |
+
|
167 |
+
if (!$this->path_matches($uri->path)) {
|
168 |
+
return false;
|
169 |
+
}
|
170 |
+
|
171 |
+
return empty($this->attributes['secure']) || $uri->scheme === 'https';
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Check if a cookie is valid for a given domain
|
176 |
+
*
|
177 |
+
* @param string $domain Domain to check
|
178 |
+
* @return boolean Whether the cookie is valid for the given domain
|
179 |
+
*/
|
180 |
+
public function domain_matches($domain) {
|
181 |
+
if (is_string($domain) === false) {
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
|
185 |
+
if (!isset($this->attributes['domain'])) {
|
186 |
+
// Cookies created manually; cookies created by Requests will set
|
187 |
+
// the domain to the requested domain
|
188 |
+
return true;
|
189 |
+
}
|
190 |
+
|
191 |
+
$cookie_domain = $this->attributes['domain'];
|
192 |
+
if ($cookie_domain === $domain) {
|
193 |
+
// The cookie domain and the passed domain are identical.
|
194 |
+
return true;
|
195 |
+
}
|
196 |
+
|
197 |
+
// If the cookie is marked as host-only and we don't have an exact
|
198 |
+
// match, reject the cookie
|
199 |
+
if ($this->flags['host-only'] === true) {
|
200 |
+
return false;
|
201 |
+
}
|
202 |
+
|
203 |
+
if (strlen($domain) <= strlen($cookie_domain)) {
|
204 |
+
// For obvious reasons, the cookie domain cannot be a suffix if the passed domain
|
205 |
+
// is shorter than the cookie domain
|
206 |
+
return false;
|
207 |
+
}
|
208 |
+
|
209 |
+
if (substr($domain, -1 * strlen($cookie_domain)) !== $cookie_domain) {
|
210 |
+
// The cookie domain should be a suffix of the passed domain.
|
211 |
+
return false;
|
212 |
+
}
|
213 |
+
|
214 |
+
$prefix = substr($domain, 0, strlen($domain) - strlen($cookie_domain));
|
215 |
+
if (substr($prefix, -1) !== '.') {
|
216 |
+
// The last character of the passed domain that is not included in the
|
217 |
+
// domain string should be a %x2E (".") character.
|
218 |
+
return false;
|
219 |
+
}
|
220 |
+
|
221 |
+
// The passed domain should be a host name (i.e., not an IP address).
|
222 |
+
return !preg_match('#^(.+\.)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $domain);
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Check if a cookie is valid for a given path
|
227 |
+
*
|
228 |
+
* From the path-match check in RFC 6265 section 5.1.4
|
229 |
+
*
|
230 |
+
* @param string $request_path Path to check
|
231 |
+
* @return boolean Whether the cookie is valid for the given path
|
232 |
+
*/
|
233 |
+
public function path_matches($request_path) {
|
234 |
+
if (empty($request_path)) {
|
235 |
+
// Normalize empty path to root
|
236 |
+
$request_path = '/';
|
237 |
+
}
|
238 |
+
|
239 |
+
if (!isset($this->attributes['path'])) {
|
240 |
+
// Cookies created manually; cookies created by Requests will set
|
241 |
+
// the path to the requested path
|
242 |
+
return true;
|
243 |
+
}
|
244 |
+
|
245 |
+
if (is_scalar($request_path) === false) {
|
246 |
+
return false;
|
247 |
+
}
|
248 |
+
|
249 |
+
$cookie_path = $this->attributes['path'];
|
250 |
+
|
251 |
+
if ($cookie_path === $request_path) {
|
252 |
+
// The cookie-path and the request-path are identical.
|
253 |
+
return true;
|
254 |
+
}
|
255 |
+
|
256 |
+
if (strlen($request_path) > strlen($cookie_path) && substr($request_path, 0, strlen($cookie_path)) === $cookie_path) {
|
257 |
+
if (substr($cookie_path, -1) === '/') {
|
258 |
+
// The cookie-path is a prefix of the request-path, and the last
|
259 |
+
// character of the cookie-path is %x2F ("/").
|
260 |
+
return true;
|
261 |
+
}
|
262 |
+
|
263 |
+
if (substr($request_path, strlen($cookie_path), 1) === '/') {
|
264 |
+
// The cookie-path is a prefix of the request-path, and the
|
265 |
+
// first character of the request-path that is not included in
|
266 |
+
// the cookie-path is a %x2F ("/") character.
|
267 |
+
return true;
|
268 |
+
}
|
269 |
+
}
|
270 |
+
|
271 |
+
return false;
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Normalize cookie and attributes
|
276 |
+
*
|
277 |
+
* @return boolean Whether the cookie was successfully normalized
|
278 |
+
*/
|
279 |
+
public function normalize() {
|
280 |
+
foreach ($this->attributes as $key => $value) {
|
281 |
+
$orig_value = $value;
|
282 |
+
$value = $this->normalize_attribute($key, $value);
|
283 |
+
if ($value === null) {
|
284 |
+
unset($this->attributes[$key]);
|
285 |
+
continue;
|
286 |
+
}
|
287 |
+
|
288 |
+
if ($value !== $orig_value) {
|
289 |
+
$this->attributes[$key] = $value;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
return true;
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Parse an individual cookie attribute
|
298 |
+
*
|
299 |
+
* Handles parsing individual attributes from the cookie values.
|
300 |
+
*
|
301 |
+
* @param string $name Attribute name
|
302 |
+
* @param string|boolean $value Attribute value (string value, or true if empty/flag)
|
303 |
+
* @return mixed Value if available, or null if the attribute value is invalid (and should be skipped)
|
304 |
+
*/
|
305 |
+
protected function normalize_attribute($name, $value) {
|
306 |
+
switch (strtolower($name)) {
|
307 |
+
case 'expires':
|
308 |
+
// Expiration parsing, as per RFC 6265 section 5.2.1
|
309 |
+
if (is_int($value)) {
|
310 |
+
return $value;
|
311 |
+
}
|
312 |
+
|
313 |
+
$expiry_time = strtotime($value);
|
314 |
+
if ($expiry_time === false) {
|
315 |
+
return null;
|
316 |
+
}
|
317 |
+
|
318 |
+
return $expiry_time;
|
319 |
+
|
320 |
+
case 'max-age':
|
321 |
+
// Expiration parsing, as per RFC 6265 section 5.2.2
|
322 |
+
if (is_int($value)) {
|
323 |
+
return $value;
|
324 |
+
}
|
325 |
+
|
326 |
+
// Check that we have a valid age
|
327 |
+
if (!preg_match('/^-?\d+$/', $value)) {
|
328 |
+
return null;
|
329 |
+
}
|
330 |
+
|
331 |
+
$delta_seconds = (int) $value;
|
332 |
+
if ($delta_seconds <= 0) {
|
333 |
+
$expiry_time = 0;
|
334 |
+
}
|
335 |
+
else {
|
336 |
+
$expiry_time = $this->reference_time + $delta_seconds;
|
337 |
+
}
|
338 |
+
|
339 |
+
return $expiry_time;
|
340 |
+
|
341 |
+
case 'domain':
|
342 |
+
// Domains are not required as per RFC 6265 section 5.2.3
|
343 |
+
if (empty($value)) {
|
344 |
+
return null;
|
345 |
+
}
|
346 |
+
|
347 |
+
// Domain normalization, as per RFC 6265 section 5.2.3
|
348 |
+
if ($value[0] === '.') {
|
349 |
+
$value = substr($value, 1);
|
350 |
+
}
|
351 |
+
|
352 |
+
return $value;
|
353 |
+
|
354 |
+
default:
|
355 |
+
return $value;
|
356 |
+
}
|
357 |
+
}
|
358 |
+
|
359 |
+
/**
|
360 |
+
* Format a cookie for a Cookie header
|
361 |
+
*
|
362 |
+
* This is used when sending cookies to a server.
|
363 |
+
*
|
364 |
+
* @return string Cookie formatted for Cookie header
|
365 |
+
*/
|
366 |
+
public function format_for_header() {
|
367 |
+
return sprintf('%s=%s', $this->name, $this->value);
|
368 |
+
}
|
369 |
+
|
370 |
+
/**
|
371 |
+
* Format a cookie for a Set-Cookie header
|
372 |
+
*
|
373 |
+
* This is used when sending cookies to clients. This isn't really
|
374 |
+
* applicable to client-side usage, but might be handy for debugging.
|
375 |
+
*
|
376 |
+
* @return string Cookie formatted for Set-Cookie header
|
377 |
+
*/
|
378 |
+
public function format_for_set_cookie() {
|
379 |
+
$header_value = $this->format_for_header();
|
380 |
+
if (!empty($this->attributes)) {
|
381 |
+
$parts = [];
|
382 |
+
foreach ($this->attributes as $key => $value) {
|
383 |
+
// Ignore non-associative attributes
|
384 |
+
if (is_numeric($key)) {
|
385 |
+
$parts[] = $value;
|
386 |
+
}
|
387 |
+
else {
|
388 |
+
$parts[] = sprintf('%s=%s', $key, $value);
|
389 |
+
}
|
390 |
+
}
|
391 |
+
|
392 |
+
$header_value .= '; ' . implode('; ', $parts);
|
393 |
+
}
|
394 |
+
return $header_value;
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Parse a cookie string into a cookie object
|
399 |
+
*
|
400 |
+
* Based on Mozilla's parsing code in Firefox and related projects, which
|
401 |
+
* is an intentional deviation from RFC 2109 and RFC 2616. RFC 6265
|
402 |
+
* specifies some of this handling, but not in a thorough manner.
|
403 |
+
*
|
404 |
+
* @param string $cookie_header Cookie header value (from a Set-Cookie header)
|
405 |
+
* @param string $name
|
406 |
+
* @param int|null $reference_time
|
407 |
+
* @return \WpOrg\Requests\Cookie Parsed cookie object
|
408 |
+
*
|
409 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $cookie_header argument is not a string.
|
410 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $name argument is not a string.
|
411 |
+
*/
|
412 |
+
public static function parse($cookie_header, $name = '', $reference_time = null) {
|
413 |
+
if (is_string($cookie_header) === false) {
|
414 |
+
throw InvalidArgument::create(1, '$cookie_header', 'string', gettype($cookie_header));
|
415 |
+
}
|
416 |
+
|
417 |
+
if (is_string($name) === false) {
|
418 |
+
throw InvalidArgument::create(2, '$name', 'string', gettype($name));
|
419 |
+
}
|
420 |
+
|
421 |
+
$parts = explode(';', $cookie_header);
|
422 |
+
$kvparts = array_shift($parts);
|
423 |
+
|
424 |
+
if (!empty($name)) {
|
425 |
+
$value = $cookie_header;
|
426 |
+
}
|
427 |
+
elseif (strpos($kvparts, '=') === false) {
|
428 |
+
// Some sites might only have a value without the equals separator.
|
429 |
+
// Deviate from RFC 6265 and pretend it was actually a blank name
|
430 |
+
// (`=foo`)
|
431 |
+
//
|
432 |
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=169091
|
433 |
+
$name = '';
|
434 |
+
$value = $kvparts;
|
435 |
+
}
|
436 |
+
else {
|
437 |
+
list($name, $value) = explode('=', $kvparts, 2);
|
438 |
+
}
|
439 |
+
$name = trim($name);
|
440 |
+
$value = trim($value);
|
441 |
+
|
442 |
+
// Attribute keys are handled case-insensitively
|
443 |
+
$attributes = new CaseInsensitiveDictionary();
|
444 |
+
|
445 |
+
if (!empty($parts)) {
|
446 |
+
foreach ($parts as $part) {
|
447 |
+
if (strpos($part, '=') === false) {
|
448 |
+
$part_key = $part;
|
449 |
+
$part_value = true;
|
450 |
+
}
|
451 |
+
else {
|
452 |
+
list($part_key, $part_value) = explode('=', $part, 2);
|
453 |
+
$part_value = trim($part_value);
|
454 |
+
}
|
455 |
+
|
456 |
+
$part_key = trim($part_key);
|
457 |
+
$attributes[$part_key] = $part_value;
|
458 |
+
}
|
459 |
+
}
|
460 |
+
|
461 |
+
return new static($name, $value, $attributes, [], $reference_time);
|
462 |
+
}
|
463 |
+
|
464 |
+
/**
|
465 |
+
* Parse all Set-Cookie headers from request headers
|
466 |
+
*
|
467 |
+
* @param \WpOrg\Requests\Response\Headers $headers Headers to parse from
|
468 |
+
* @param \WpOrg\Requests\Iri|null $origin URI for comparing cookie origins
|
469 |
+
* @param int|null $time Reference time for expiration calculation
|
470 |
+
* @return array
|
471 |
+
*/
|
472 |
+
public static function parse_from_headers(Headers $headers, Iri $origin = null, $time = null) {
|
473 |
+
$cookie_headers = $headers->getValues('Set-Cookie');
|
474 |
+
if (empty($cookie_headers)) {
|
475 |
+
return [];
|
476 |
+
}
|
477 |
+
|
478 |
+
$cookies = [];
|
479 |
+
foreach ($cookie_headers as $header) {
|
480 |
+
$parsed = self::parse($header, '', $time);
|
481 |
+
|
482 |
+
// Default domain/path attributes
|
483 |
+
if (empty($parsed->attributes['domain']) && !empty($origin)) {
|
484 |
+
$parsed->attributes['domain'] = $origin->host;
|
485 |
+
$parsed->flags['host-only'] = true;
|
486 |
+
}
|
487 |
+
else {
|
488 |
+
$parsed->flags['host-only'] = false;
|
489 |
+
}
|
490 |
+
|
491 |
+
$path_is_valid = (!empty($parsed->attributes['path']) && $parsed->attributes['path'][0] === '/');
|
492 |
+
if (!$path_is_valid && !empty($origin)) {
|
493 |
+
$path = $origin->path;
|
494 |
+
|
495 |
+
// Default path normalization as per RFC 6265 section 5.1.4
|
496 |
+
if (substr($path, 0, 1) !== '/') {
|
497 |
+
// If the uri-path is empty or if the first character of
|
498 |
+
// the uri-path is not a %x2F ("/") character, output
|
499 |
+
// %x2F ("/") and skip the remaining steps.
|
500 |
+
$path = '/';
|
501 |
+
}
|
502 |
+
elseif (substr_count($path, '/') === 1) {
|
503 |
+
// If the uri-path contains no more than one %x2F ("/")
|
504 |
+
// character, output %x2F ("/") and skip the remaining
|
505 |
+
// step.
|
506 |
+
$path = '/';
|
507 |
+
}
|
508 |
+
else {
|
509 |
+
// Output the characters of the uri-path from the first
|
510 |
+
// character up to, but not including, the right-most
|
511 |
+
// %x2F ("/").
|
512 |
+
$path = substr($path, 0, strrpos($path, '/'));
|
513 |
+
}
|
514 |
+
$parsed->attributes['path'] = $path;
|
515 |
+
}
|
516 |
+
|
517 |
+
// Reject invalid cookie domains
|
518 |
+
if (!empty($origin) && !$parsed->domain_matches($origin->host)) {
|
519 |
+
continue;
|
520 |
+
}
|
521 |
+
|
522 |
+
$cookies[$parsed->name] = $parsed;
|
523 |
+
}
|
524 |
+
|
525 |
+
return $cookies;
|
526 |
+
}
|
527 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Cookie/Jar.php
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Cookie holder object
|
4 |
+
*
|
5 |
+
* @package Requests\Cookies
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Cookie;
|
9 |
+
|
10 |
+
use ArrayAccess;
|
11 |
+
use ArrayIterator;
|
12 |
+
use IteratorAggregate;
|
13 |
+
use ReturnTypeWillChange;
|
14 |
+
use WpOrg\Requests\Cookie;
|
15 |
+
use WpOrg\Requests\Exception;
|
16 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
17 |
+
use WpOrg\Requests\HookManager;
|
18 |
+
use WpOrg\Requests\Iri;
|
19 |
+
use WpOrg\Requests\Response;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Cookie holder object
|
23 |
+
*
|
24 |
+
* @package Requests\Cookies
|
25 |
+
*/
|
26 |
+
class Jar implements ArrayAccess, IteratorAggregate {
|
27 |
+
/**
|
28 |
+
* Actual item data
|
29 |
+
*
|
30 |
+
* @var array
|
31 |
+
*/
|
32 |
+
protected $cookies = [];
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Create a new jar
|
36 |
+
*
|
37 |
+
* @param array $cookies Existing cookie values
|
38 |
+
*
|
39 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not an array.
|
40 |
+
*/
|
41 |
+
public function __construct($cookies = []) {
|
42 |
+
if (is_array($cookies) === false) {
|
43 |
+
throw InvalidArgument::create(1, '$cookies', 'array', gettype($cookies));
|
44 |
+
}
|
45 |
+
|
46 |
+
$this->cookies = $cookies;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Normalise cookie data into a \WpOrg\Requests\Cookie
|
51 |
+
*
|
52 |
+
* @param string|\WpOrg\Requests\Cookie $cookie
|
53 |
+
* @return \WpOrg\Requests\Cookie
|
54 |
+
*/
|
55 |
+
public function normalize_cookie($cookie, $key = '') {
|
56 |
+
if ($cookie instanceof Cookie) {
|
57 |
+
return $cookie;
|
58 |
+
}
|
59 |
+
|
60 |
+
return Cookie::parse($cookie, $key);
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Check if the given item exists
|
65 |
+
*
|
66 |
+
* @param string $offset Item key
|
67 |
+
* @return boolean Does the item exist?
|
68 |
+
*/
|
69 |
+
#[ReturnTypeWillChange]
|
70 |
+
public function offsetExists($offset) {
|
71 |
+
return isset($this->cookies[$offset]);
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Get the value for the item
|
76 |
+
*
|
77 |
+
* @param string $offset Item key
|
78 |
+
* @return string|null Item value (null if offsetExists is false)
|
79 |
+
*/
|
80 |
+
#[ReturnTypeWillChange]
|
81 |
+
public function offsetGet($offset) {
|
82 |
+
if (!isset($this->cookies[$offset])) {
|
83 |
+
return null;
|
84 |
+
}
|
85 |
+
|
86 |
+
return $this->cookies[$offset];
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Set the given item
|
91 |
+
*
|
92 |
+
* @param string $offset Item name
|
93 |
+
* @param string $value Item value
|
94 |
+
*
|
95 |
+
* @throws \WpOrg\Requests\Exception On attempting to use dictionary as list (`invalidset`)
|
96 |
+
*/
|
97 |
+
#[ReturnTypeWillChange]
|
98 |
+
public function offsetSet($offset, $value) {
|
99 |
+
if ($offset === null) {
|
100 |
+
throw new Exception('Object is a dictionary, not a list', 'invalidset');
|
101 |
+
}
|
102 |
+
|
103 |
+
$this->cookies[$offset] = $value;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Unset the given header
|
108 |
+
*
|
109 |
+
* @param string $offset
|
110 |
+
*/
|
111 |
+
#[ReturnTypeWillChange]
|
112 |
+
public function offsetUnset($offset) {
|
113 |
+
unset($this->cookies[$offset]);
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Get an iterator for the data
|
118 |
+
*
|
119 |
+
* @return \ArrayIterator
|
120 |
+
*/
|
121 |
+
#[ReturnTypeWillChange]
|
122 |
+
public function getIterator() {
|
123 |
+
return new ArrayIterator($this->cookies);
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Register the cookie handler with the request's hooking system
|
128 |
+
*
|
129 |
+
* @param \WpOrg\Requests\HookManager $hooks Hooking system
|
130 |
+
*/
|
131 |
+
public function register(HookManager $hooks) {
|
132 |
+
$hooks->register('requests.before_request', [$this, 'before_request']);
|
133 |
+
$hooks->register('requests.before_redirect_check', [$this, 'before_redirect_check']);
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Add Cookie header to a request if we have any
|
138 |
+
*
|
139 |
+
* As per RFC 6265, cookies are separated by '; '
|
140 |
+
*
|
141 |
+
* @param string $url
|
142 |
+
* @param array $headers
|
143 |
+
* @param array $data
|
144 |
+
* @param string $type
|
145 |
+
* @param array $options
|
146 |
+
*/
|
147 |
+
public function before_request($url, &$headers, &$data, &$type, &$options) {
|
148 |
+
if (!$url instanceof Iri) {
|
149 |
+
$url = new Iri($url);
|
150 |
+
}
|
151 |
+
|
152 |
+
if (!empty($this->cookies)) {
|
153 |
+
$cookies = [];
|
154 |
+
foreach ($this->cookies as $key => $cookie) {
|
155 |
+
$cookie = $this->normalize_cookie($cookie, $key);
|
156 |
+
|
157 |
+
// Skip expired cookies
|
158 |
+
if ($cookie->is_expired()) {
|
159 |
+
continue;
|
160 |
+
}
|
161 |
+
|
162 |
+
if ($cookie->domain_matches($url->host)) {
|
163 |
+
$cookies[] = $cookie->format_for_header();
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
$headers['Cookie'] = implode('; ', $cookies);
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Parse all cookies from a response and attach them to the response
|
173 |
+
*
|
174 |
+
* @param \WpOrg\Requests\Response $response
|
175 |
+
*/
|
176 |
+
public function before_redirect_check(Response $response) {
|
177 |
+
$url = $response->url;
|
178 |
+
if (!$url instanceof Iri) {
|
179 |
+
$url = new Iri($url);
|
180 |
+
}
|
181 |
+
|
182 |
+
$cookies = Cookie::parse_from_headers($response->headers, $url);
|
183 |
+
$this->cookies = array_merge($this->cookies, $cookies);
|
184 |
+
$response->cookies = $this;
|
185 |
+
}
|
186 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for HTTP requests
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use Exception as PHPException;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for HTTP requests
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
class Exception extends PHPException {
|
18 |
+
/**
|
19 |
+
* Type of exception
|
20 |
+
*
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
protected $type;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Data associated with the exception
|
27 |
+
*
|
28 |
+
* @var mixed
|
29 |
+
*/
|
30 |
+
protected $data;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Create a new exception
|
34 |
+
*
|
35 |
+
* @param string $message Exception message
|
36 |
+
* @param string $type Exception type
|
37 |
+
* @param mixed $data Associated data
|
38 |
+
* @param integer $code Exception numerical code, if applicable
|
39 |
+
*/
|
40 |
+
public function __construct($message, $type, $data = null, $code = 0) {
|
41 |
+
parent::__construct($message, $code);
|
42 |
+
|
43 |
+
$this->type = $type;
|
44 |
+
$this->data = $data;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Like {@see \Exception::getCode()}, but a string code.
|
49 |
+
*
|
50 |
+
* @codeCoverageIgnore
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
public function getType() {
|
54 |
+
return $this->type;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Gives any relevant data
|
59 |
+
*
|
60 |
+
* @codeCoverageIgnore
|
61 |
+
* @return mixed
|
62 |
+
*/
|
63 |
+
public function getData() {
|
64 |
+
return $this->data;
|
65 |
+
}
|
66 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/ArgumentCount.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WpOrg\Requests\Exception;
|
4 |
+
|
5 |
+
use WpOrg\Requests\Exception;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Exception for when an incorrect number of arguments are passed to a method.
|
9 |
+
*
|
10 |
+
* Typically, this exception is used when all arguments for a method are optional,
|
11 |
+
* but certain arguments need to be passed together, i.e. a method which can be called
|
12 |
+
* with no arguments or with two arguments, but not with one argument.
|
13 |
+
*
|
14 |
+
* Along the same lines, this exception is also used if a method expects an array
|
15 |
+
* with a certain number of elements and the provided number of elements does not comply.
|
16 |
+
*
|
17 |
+
* @package Requests\Exceptions
|
18 |
+
* @since 2.0.0
|
19 |
+
*/
|
20 |
+
final class ArgumentCount extends Exception {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Create a new argument count exception with a standardized text.
|
24 |
+
*
|
25 |
+
* @param string $expected The argument count expected as a phrase.
|
26 |
+
* For example: `at least 2 arguments` or `exactly 1 argument`.
|
27 |
+
* @param int $received The actual argument count received.
|
28 |
+
* @param string $type Exception type.
|
29 |
+
*
|
30 |
+
* @return \WpOrg\Requests\Exception\ArgumentCount
|
31 |
+
*/
|
32 |
+
public static function create($expected, $received, $type) {
|
33 |
+
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
|
34 |
+
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
|
35 |
+
|
36 |
+
return new self(
|
37 |
+
sprintf(
|
38 |
+
'%s::%s() expects %s, %d given',
|
39 |
+
$stack[1]['class'],
|
40 |
+
$stack[1]['function'],
|
41 |
+
$expected,
|
42 |
+
$received
|
43 |
+
),
|
44 |
+
$type
|
45 |
+
);
|
46 |
+
}
|
47 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception based on HTTP response
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception;
|
11 |
+
use WpOrg\Requests\Exception\Http\StatusUnknown;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Exception based on HTTP response
|
15 |
+
*
|
16 |
+
* @package Requests\Exceptions
|
17 |
+
*/
|
18 |
+
class Http extends Exception {
|
19 |
+
/**
|
20 |
+
* HTTP status code
|
21 |
+
*
|
22 |
+
* @var integer
|
23 |
+
*/
|
24 |
+
protected $code = 0;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Reason phrase
|
28 |
+
*
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
protected $reason = 'Unknown';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Create a new exception
|
35 |
+
*
|
36 |
+
* There is no mechanism to pass in the status code, as this is set by the
|
37 |
+
* subclass used. Reason phrases can vary, however.
|
38 |
+
*
|
39 |
+
* @param string|null $reason Reason phrase
|
40 |
+
* @param mixed $data Associated data
|
41 |
+
*/
|
42 |
+
public function __construct($reason = null, $data = null) {
|
43 |
+
if ($reason !== null) {
|
44 |
+
$this->reason = $reason;
|
45 |
+
}
|
46 |
+
|
47 |
+
$message = sprintf('%d %s', $this->code, $this->reason);
|
48 |
+
parent::__construct($message, 'httpresponse', $data, $this->code);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Get the status message.
|
53 |
+
*
|
54 |
+
* @return string
|
55 |
+
*/
|
56 |
+
public function getReason() {
|
57 |
+
return $this->reason;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get the correct exception class for a given error code
|
62 |
+
*
|
63 |
+
* @param int|bool $code HTTP status code, or false if unavailable
|
64 |
+
* @return string Exception class name to use
|
65 |
+
*/
|
66 |
+
public static function get_class($code) {
|
67 |
+
if (!$code) {
|
68 |
+
return StatusUnknown::class;
|
69 |
+
}
|
70 |
+
|
71 |
+
$class = sprintf('\WpOrg\Requests\Exception\Http\Status%d', $code);
|
72 |
+
if (class_exists($class)) {
|
73 |
+
return $class;
|
74 |
+
}
|
75 |
+
|
76 |
+
return StatusUnknown::class;
|
77 |
+
}
|
78 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status304.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 304 Not Modified responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 304 Not Modified responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status304 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 304;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Not Modified';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status305.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 305 Use Proxy responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 305 Use Proxy responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status305 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 305;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Use Proxy';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status306.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 306 Switch Proxy responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 306 Switch Proxy responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status306 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 306;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Switch Proxy';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status400.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 400 Bad Request responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 400 Bad Request responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status400 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 400;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Bad Request';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status401.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 401 Unauthorized responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 401 Unauthorized responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status401 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 401;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Unauthorized';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status402.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 402 Payment Required responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 402 Payment Required responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status402 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 402;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Payment Required';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status403.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 403 Forbidden responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 403 Forbidden responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status403 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 403;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Forbidden';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status404.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 404 Not Found responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 404 Not Found responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status404 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 404;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Not Found';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status405.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 405 Method Not Allowed responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 405 Method Not Allowed responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status405 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 405;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Method Not Allowed';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status406.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 406 Not Acceptable responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 406 Not Acceptable responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status406 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 406;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Not Acceptable';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status407.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 407 Proxy Authentication Required responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 407 Proxy Authentication Required responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status407 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 407;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Proxy Authentication Required';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status408.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 408 Request Timeout responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 408 Request Timeout responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status408 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 408;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Request Timeout';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status409.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 409 Conflict responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 409 Conflict responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status409 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 409;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Conflict';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status410.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 410 Gone responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 410 Gone responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status410 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 410;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Gone';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status411.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 411 Length Required responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 411 Length Required responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status411 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 411;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Length Required';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status412.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 412 Precondition Failed responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 412 Precondition Failed responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status412 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 412;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Precondition Failed';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status413.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 413 Request Entity Too Large responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 413 Request Entity Too Large responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status413 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 413;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Request Entity Too Large';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status414.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 414 Request-URI Too Large responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 414 Request-URI Too Large responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status414 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 414;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Request-URI Too Large';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status415.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 415 Unsupported Media Type responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 415 Unsupported Media Type responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status415 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 415;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Unsupported Media Type';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status416.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 416 Requested Range Not Satisfiable responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 416 Requested Range Not Satisfiable responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status416 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 416;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Requested Range Not Satisfiable';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status417.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 417 Expectation Failed responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 417 Expectation Failed responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status417 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 417;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Expectation Failed';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status418.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 418 I'm A Teapot responses
|
4 |
+
*
|
5 |
+
* @link https://tools.ietf.org/html/rfc2324
|
6 |
+
*
|
7 |
+
* @package Requests\Exceptions
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
use WpOrg\Requests\Exception\Http;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Exception for 418 I'm A Teapot responses
|
16 |
+
*
|
17 |
+
* @link https://tools.ietf.org/html/rfc2324
|
18 |
+
*
|
19 |
+
* @package Requests\Exceptions
|
20 |
+
*/
|
21 |
+
final class Status418 extends Http {
|
22 |
+
/**
|
23 |
+
* HTTP status code
|
24 |
+
*
|
25 |
+
* @var integer
|
26 |
+
*/
|
27 |
+
protected $code = 418;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Reason phrase
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $reason = "I'm A Teapot";
|
35 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status428.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 428 Precondition Required responses
|
4 |
+
*
|
5 |
+
* @link https://tools.ietf.org/html/rfc6585
|
6 |
+
*
|
7 |
+
* @package Requests\Exceptions
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
use WpOrg\Requests\Exception\Http;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Exception for 428 Precondition Required responses
|
16 |
+
*
|
17 |
+
* @link https://tools.ietf.org/html/rfc6585
|
18 |
+
*
|
19 |
+
* @package Requests\Exceptions
|
20 |
+
*/
|
21 |
+
final class Status428 extends Http {
|
22 |
+
/**
|
23 |
+
* HTTP status code
|
24 |
+
*
|
25 |
+
* @var integer
|
26 |
+
*/
|
27 |
+
protected $code = 428;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Reason phrase
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $reason = 'Precondition Required';
|
35 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status429.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 429 Too Many Requests responses
|
4 |
+
*
|
5 |
+
* @link https://tools.ietf.org/html/draft-nottingham-http-new-status-04
|
6 |
+
*
|
7 |
+
* @package Requests\Exceptions
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
use WpOrg\Requests\Exception\Http;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Exception for 429 Too Many Requests responses
|
16 |
+
*
|
17 |
+
* @link https://tools.ietf.org/html/draft-nottingham-http-new-status-04
|
18 |
+
*
|
19 |
+
* @package Requests\Exceptions
|
20 |
+
*/
|
21 |
+
final class Status429 extends Http {
|
22 |
+
/**
|
23 |
+
* HTTP status code
|
24 |
+
*
|
25 |
+
* @var integer
|
26 |
+
*/
|
27 |
+
protected $code = 429;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Reason phrase
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $reason = 'Too Many Requests';
|
35 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status431.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 431 Request Header Fields Too Large responses
|
4 |
+
*
|
5 |
+
* @link https://tools.ietf.org/html/rfc6585
|
6 |
+
*
|
7 |
+
* @package Requests\Exceptions
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
use WpOrg\Requests\Exception\Http;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Exception for 431 Request Header Fields Too Large responses
|
16 |
+
*
|
17 |
+
* @link https://tools.ietf.org/html/rfc6585
|
18 |
+
*
|
19 |
+
* @package Requests\Exceptions
|
20 |
+
*/
|
21 |
+
final class Status431 extends Http {
|
22 |
+
/**
|
23 |
+
* HTTP status code
|
24 |
+
*
|
25 |
+
* @var integer
|
26 |
+
*/
|
27 |
+
protected $code = 431;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Reason phrase
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $reason = 'Request Header Fields Too Large';
|
35 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status500.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 500 Internal Server Error responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 500 Internal Server Error responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status500 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 500;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Internal Server Error';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status501.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 501 Not Implemented responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 501 Not Implemented responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status501 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 501;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Not Implemented';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status502.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 502 Bad Gateway responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 502 Bad Gateway responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status502 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 502;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Bad Gateway';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status503.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 503 Service Unavailable responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 503 Service Unavailable responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status503 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 503;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Service Unavailable';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status504.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 504 Gateway Timeout responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 504 Gateway Timeout responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status504 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 504;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'Gateway Timeout';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status505.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 505 HTTP Version Not Supported responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Exception for 505 HTTP Version Not Supported responses
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Status505 extends Http {
|
18 |
+
/**
|
19 |
+
* HTTP status code
|
20 |
+
*
|
21 |
+
* @var integer
|
22 |
+
*/
|
23 |
+
protected $code = 505;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Reason phrase
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $reason = 'HTTP Version Not Supported';
|
31 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/Status511.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for 511 Network Authentication Required responses
|
4 |
+
*
|
5 |
+
* @link https://tools.ietf.org/html/rfc6585
|
6 |
+
*
|
7 |
+
* @package Requests\Exceptions
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WpOrg\Requests\Exception\Http;
|
11 |
+
|
12 |
+
use WpOrg\Requests\Exception\Http;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Exception for 511 Network Authentication Required responses
|
16 |
+
*
|
17 |
+
* @link https://tools.ietf.org/html/rfc6585
|
18 |
+
*
|
19 |
+
* @package Requests\Exceptions
|
20 |
+
*/
|
21 |
+
final class Status511 extends Http {
|
22 |
+
/**
|
23 |
+
* HTTP status code
|
24 |
+
*
|
25 |
+
* @var integer
|
26 |
+
*/
|
27 |
+
protected $code = 511;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Reason phrase
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $reason = 'Network Authentication Required';
|
35 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Http/StatusUnknown.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Exception for unknown status responses
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Http;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Http;
|
11 |
+
use WpOrg\Requests\Response;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Exception for unknown status responses
|
15 |
+
*
|
16 |
+
* @package Requests\Exceptions
|
17 |
+
*/
|
18 |
+
final class StatusUnknown extends Http {
|
19 |
+
/**
|
20 |
+
* HTTP status code
|
21 |
+
*
|
22 |
+
* @var integer|bool Code if available, false if an error occurred
|
23 |
+
*/
|
24 |
+
protected $code = 0;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Reason phrase
|
28 |
+
*
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
protected $reason = 'Unknown';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Create a new exception
|
35 |
+
*
|
36 |
+
* If `$data` is an instance of {@see \WpOrg\Requests\Response}, uses the status
|
37 |
+
* code from it. Otherwise, sets as 0
|
38 |
+
*
|
39 |
+
* @param string|null $reason Reason phrase
|
40 |
+
* @param mixed $data Associated data
|
41 |
+
*/
|
42 |
+
public function __construct($reason = null, $data = null) {
|
43 |
+
if ($data instanceof Response) {
|
44 |
+
$this->code = (int) $data->status_code;
|
45 |
+
}
|
46 |
+
|
47 |
+
parent::__construct($reason, $data);
|
48 |
+
}
|
49 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/InvalidArgument.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WpOrg\Requests\Exception;
|
4 |
+
|
5 |
+
use InvalidArgumentException;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Exception for an invalid argument passed.
|
9 |
+
*
|
10 |
+
* @package Requests\Exceptions
|
11 |
+
* @since 2.0.0
|
12 |
+
*/
|
13 |
+
final class InvalidArgument extends InvalidArgumentException {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Create a new invalid argument exception with a standardized text.
|
17 |
+
*
|
18 |
+
* @param int $position The argument position in the function signature. 1-based.
|
19 |
+
* @param string $name The argument name in the function signature.
|
20 |
+
* @param string $expected The argument type expected as a string.
|
21 |
+
* @param string $received The actual argument type received.
|
22 |
+
*
|
23 |
+
* @return \WpOrg\Requests\Exception\InvalidArgument
|
24 |
+
*/
|
25 |
+
public static function create($position, $name, $expected, $received) {
|
26 |
+
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
|
27 |
+
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
|
28 |
+
|
29 |
+
return new self(
|
30 |
+
sprintf(
|
31 |
+
'%s::%s(): Argument #%d (%s) must be of type %s, %s given',
|
32 |
+
$stack[1]['class'],
|
33 |
+
$stack[1]['function'],
|
34 |
+
$position,
|
35 |
+
$name,
|
36 |
+
$expected,
|
37 |
+
$received
|
38 |
+
)
|
39 |
+
);
|
40 |
+
}
|
41 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Transport.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Transport Exception
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Transport Exception
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
class Transport extends Exception {}
|
razorpay-sdk/libs/Requests-2.0.0/src/Exception/Transport/Curl.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* CURL Transport Exception.
|
4 |
+
*
|
5 |
+
* @package Requests\Exceptions
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Exception\Transport;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\Transport;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* CURL Transport Exception.
|
14 |
+
*
|
15 |
+
* @package Requests\Exceptions
|
16 |
+
*/
|
17 |
+
final class Curl extends Transport {
|
18 |
+
|
19 |
+
const EASY = 'cURLEasy';
|
20 |
+
const MULTI = 'cURLMulti';
|
21 |
+
const SHARE = 'cURLShare';
|
22 |
+
|
23 |
+
/**
|
24 |
+
* cURL error code
|
25 |
+
*
|
26 |
+
* @var integer
|
27 |
+
*/
|
28 |
+
protected $code = -1;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Which type of cURL error
|
32 |
+
*
|
33 |
+
* EASY|MULTI|SHARE
|
34 |
+
*
|
35 |
+
* @var string
|
36 |
+
*/
|
37 |
+
protected $type = 'Unknown';
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Clear text error message
|
41 |
+
*
|
42 |
+
* @var string
|
43 |
+
*/
|
44 |
+
protected $reason = 'Unknown';
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Create a new exception.
|
48 |
+
*
|
49 |
+
* @param string $message Exception message.
|
50 |
+
* @param string $type Exception type.
|
51 |
+
* @param mixed $data Associated data, if applicable.
|
52 |
+
* @param int $code Exception numerical code, if applicable.
|
53 |
+
*/
|
54 |
+
public function __construct($message, $type, $data = null, $code = 0) {
|
55 |
+
if ($type !== null) {
|
56 |
+
$this->type = $type;
|
57 |
+
}
|
58 |
+
|
59 |
+
if ($code !== null) {
|
60 |
+
$this->code = (int) $code;
|
61 |
+
}
|
62 |
+
|
63 |
+
if ($message !== null) {
|
64 |
+
$this->reason = $message;
|
65 |
+
}
|
66 |
+
|
67 |
+
$message = sprintf('%d %s', $this->code, $this->reason);
|
68 |
+
parent::__construct($message, $this->type, $data, $this->code);
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Get the error message.
|
73 |
+
*
|
74 |
+
* @return string
|
75 |
+
*/
|
76 |
+
public function getReason() {
|
77 |
+
return $this->reason;
|
78 |
+
}
|
79 |
+
|
80 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/HookManager.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Event dispatcher
|
4 |
+
*
|
5 |
+
* @package Requests\EventDispatcher
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Event dispatcher
|
12 |
+
*
|
13 |
+
* @package Requests\EventDispatcher
|
14 |
+
*/
|
15 |
+
interface HookManager {
|
16 |
+
/**
|
17 |
+
* Register a callback for a hook
|
18 |
+
*
|
19 |
+
* @param string $hook Hook name
|
20 |
+
* @param callable $callback Function/method to call on event
|
21 |
+
* @param int $priority Priority number. <0 is executed earlier, >0 is executed later
|
22 |
+
*/
|
23 |
+
public function register($hook, $callback, $priority = 0);
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Dispatch a message
|
27 |
+
*
|
28 |
+
* @param string $hook Hook name
|
29 |
+
* @param array $parameters Parameters to pass to callbacks
|
30 |
+
* @return boolean Successfulness
|
31 |
+
*/
|
32 |
+
public function dispatch($hook, $parameters = []);
|
33 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Hooks.php
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handles adding and dispatching events
|
4 |
+
*
|
5 |
+
* @package Requests\EventDispatcher
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
11 |
+
use WpOrg\Requests\HookManager;
|
12 |
+
use WpOrg\Requests\Utility\InputValidator;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Handles adding and dispatching events
|
16 |
+
*
|
17 |
+
* @package Requests\EventDispatcher
|
18 |
+
*/
|
19 |
+
class Hooks implements HookManager {
|
20 |
+
/**
|
21 |
+
* Registered callbacks for each hook
|
22 |
+
*
|
23 |
+
* @var array
|
24 |
+
*/
|
25 |
+
protected $hooks = [];
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Register a callback for a hook
|
29 |
+
*
|
30 |
+
* @param string $hook Hook name
|
31 |
+
* @param callable $callback Function/method to call on event
|
32 |
+
* @param int $priority Priority number. <0 is executed earlier, >0 is executed later
|
33 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $hook argument is not a string.
|
34 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $callback argument is not callable.
|
35 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $priority argument is not an integer.
|
36 |
+
*/
|
37 |
+
public function register($hook, $callback, $priority = 0) {
|
38 |
+
if (is_string($hook) === false) {
|
39 |
+
throw InvalidArgument::create(1, '$hook', 'string', gettype($hook));
|
40 |
+
}
|
41 |
+
|
42 |
+
if (is_callable($callback) === false) {
|
43 |
+
throw InvalidArgument::create(2, '$callback', 'callable', gettype($callback));
|
44 |
+
}
|
45 |
+
|
46 |
+
if (InputValidator::is_numeric_array_key($priority) === false) {
|
47 |
+
throw InvalidArgument::create(3, '$priority', 'integer', gettype($priority));
|
48 |
+
}
|
49 |
+
|
50 |
+
if (!isset($this->hooks[$hook])) {
|
51 |
+
$this->hooks[$hook] = [
|
52 |
+
$priority => [],
|
53 |
+
];
|
54 |
+
} elseif (!isset($this->hooks[$hook][$priority])) {
|
55 |
+
$this->hooks[$hook][$priority] = [];
|
56 |
+
}
|
57 |
+
|
58 |
+
$this->hooks[$hook][$priority][] = $callback;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Dispatch a message
|
63 |
+
*
|
64 |
+
* @param string $hook Hook name
|
65 |
+
* @param array $parameters Parameters to pass to callbacks
|
66 |
+
* @return boolean Successfulness
|
67 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $hook argument is not a string.
|
68 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $parameters argument is not an array.
|
69 |
+
*/
|
70 |
+
public function dispatch($hook, $parameters = []) {
|
71 |
+
if (is_string($hook) === false) {
|
72 |
+
throw InvalidArgument::create(1, '$hook', 'string', gettype($hook));
|
73 |
+
}
|
74 |
+
|
75 |
+
// Check strictly against array, as Array* objects don't work in combination with `call_user_func_array()`.
|
76 |
+
if (is_array($parameters) === false) {
|
77 |
+
throw InvalidArgument::create(2, '$parameters', 'array', gettype($parameters));
|
78 |
+
}
|
79 |
+
|
80 |
+
if (empty($this->hooks[$hook])) {
|
81 |
+
return false;
|
82 |
+
}
|
83 |
+
|
84 |
+
if (!empty($parameters)) {
|
85 |
+
// Strip potential keys from the array to prevent them being interpreted as parameter names in PHP 8.0.
|
86 |
+
$parameters = array_values($parameters);
|
87 |
+
}
|
88 |
+
|
89 |
+
foreach ($this->hooks[$hook] as $priority => $hooked) {
|
90 |
+
foreach ($hooked as $callback) {
|
91 |
+
$callback(...$parameters);
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
return true;
|
96 |
+
}
|
97 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/IdnaEncoder.php
ADDED
@@ -0,0 +1,418 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WpOrg\Requests;
|
4 |
+
|
5 |
+
use WpOrg\Requests\Exception;
|
6 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
7 |
+
use WpOrg\Requests\Utility\InputValidator;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* IDNA URL encoder
|
11 |
+
*
|
12 |
+
* Note: Not fully compliant, as nameprep does nothing yet.
|
13 |
+
*
|
14 |
+
* @package Requests\Utilities
|
15 |
+
*
|
16 |
+
* @link https://tools.ietf.org/html/rfc3490 IDNA specification
|
17 |
+
* @link https://tools.ietf.org/html/rfc3492 Punycode/Bootstrap specification
|
18 |
+
*/
|
19 |
+
class IdnaEncoder {
|
20 |
+
/**
|
21 |
+
* ACE prefix used for IDNA
|
22 |
+
*
|
23 |
+
* @link https://tools.ietf.org/html/rfc3490#section-5
|
24 |
+
* @var string
|
25 |
+
*/
|
26 |
+
const ACE_PREFIX = 'xn--';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Maximum length of a IDNA URL in ASCII.
|
30 |
+
*
|
31 |
+
* @see \WpOrg\Requests\IdnaEncoder::to_ascii()
|
32 |
+
*
|
33 |
+
* @since 2.0.0
|
34 |
+
*
|
35 |
+
* @var int
|
36 |
+
*/
|
37 |
+
const MAX_LENGTH = 64;
|
38 |
+
|
39 |
+
/**#@+
|
40 |
+
* Bootstrap constant for Punycode
|
41 |
+
*
|
42 |
+
* @link https://tools.ietf.org/html/rfc3492#section-5
|
43 |
+
* @var int
|
44 |
+
*/
|
45 |
+
const BOOTSTRAP_BASE = 36;
|
46 |
+
const BOOTSTRAP_TMIN = 1;
|
47 |
+
const BOOTSTRAP_TMAX = 26;
|
48 |
+
const BOOTSTRAP_SKEW = 38;
|
49 |
+
const BOOTSTRAP_DAMP = 700;
|
50 |
+
const BOOTSTRAP_INITIAL_BIAS = 72;
|
51 |
+
const BOOTSTRAP_INITIAL_N = 128;
|
52 |
+
/**#@-*/
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Encode a hostname using Punycode
|
56 |
+
*
|
57 |
+
* @param string|Stringable $hostname Hostname
|
58 |
+
* @return string Punycode-encoded hostname
|
59 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string or a stringable object.
|
60 |
+
*/
|
61 |
+
public static function encode($hostname) {
|
62 |
+
if (InputValidator::is_string_or_stringable($hostname) === false) {
|
63 |
+
throw InvalidArgument::create(1, '$hostname', 'string|Stringable', gettype($hostname));
|
64 |
+
}
|
65 |
+
|
66 |
+
$parts = explode('.', $hostname);
|
67 |
+
foreach ($parts as &$part) {
|
68 |
+
$part = self::to_ascii($part);
|
69 |
+
}
|
70 |
+
return implode('.', $parts);
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Convert a UTF-8 text string to an ASCII string using Punycode
|
75 |
+
*
|
76 |
+
* @param string $text ASCII or UTF-8 string (max length 64 characters)
|
77 |
+
* @return string ASCII string
|
78 |
+
*
|
79 |
+
* @throws \WpOrg\Requests\Exception Provided string longer than 64 ASCII characters (`idna.provided_too_long`)
|
80 |
+
* @throws \WpOrg\Requests\Exception Prepared string longer than 64 ASCII characters (`idna.prepared_too_long`)
|
81 |
+
* @throws \WpOrg\Requests\Exception Provided string already begins with xn-- (`idna.provided_is_prefixed`)
|
82 |
+
* @throws \WpOrg\Requests\Exception Encoded string longer than 64 ASCII characters (`idna.encoded_too_long`)
|
83 |
+
*/
|
84 |
+
public static function to_ascii($text) {
|
85 |
+
// Step 1: Check if the text is already ASCII
|
86 |
+
if (self::is_ascii($text)) {
|
87 |
+
// Skip to step 7
|
88 |
+
if (strlen($text) < self::MAX_LENGTH) {
|
89 |
+
return $text;
|
90 |
+
}
|
91 |
+
|
92 |
+
throw new Exception('Provided string is too long', 'idna.provided_too_long', $text);
|
93 |
+
}
|
94 |
+
|
95 |
+
// Step 2: nameprep
|
96 |
+
$text = self::nameprep($text);
|
97 |
+
|
98 |
+
// Step 3: UseSTD3ASCIIRules is false, continue
|
99 |
+
// Step 4: Check if it's ASCII now
|
100 |
+
if (self::is_ascii($text)) {
|
101 |
+
// Skip to step 7
|
102 |
+
/*
|
103 |
+
* As the `nameprep()` method returns the original string, this code will never be reached until
|
104 |
+
* that method is properly implemented.
|
105 |
+
*/
|
106 |
+
// @codeCoverageIgnoreStart
|
107 |
+
if (strlen($text) < self::MAX_LENGTH) {
|
108 |
+
return $text;
|
109 |
+
}
|
110 |
+
|
111 |
+
throw new Exception('Prepared string is too long', 'idna.prepared_too_long', $text);
|
112 |
+
// @codeCoverageIgnoreEnd
|
113 |
+
}
|
114 |
+
|
115 |
+
// Step 5: Check ACE prefix
|
116 |
+
if (strpos($text, self::ACE_PREFIX) === 0) {
|
117 |
+
throw new Exception('Provided string begins with ACE prefix', 'idna.provided_is_prefixed', $text);
|
118 |
+
}
|
119 |
+
|
120 |
+
// Step 6: Encode with Punycode
|
121 |
+
$text = self::punycode_encode($text);
|
122 |
+
|
123 |
+
// Step 7: Prepend ACE prefix
|
124 |
+
$text = self::ACE_PREFIX . $text;
|
125 |
+
|
126 |
+
// Step 8: Check size
|
127 |
+
if (strlen($text) < self::MAX_LENGTH) {
|
128 |
+
return $text;
|
129 |
+
}
|
130 |
+
|
131 |
+
throw new Exception('Encoded string is too long', 'idna.encoded_too_long', $text);
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Check whether a given text string contains only ASCII characters
|
136 |
+
*
|
137 |
+
* @internal (Testing found regex was the fastest implementation)
|
138 |
+
*
|
139 |
+
* @param string $text
|
140 |
+
* @return bool Is the text string ASCII-only?
|
141 |
+
*/
|
142 |
+
protected static function is_ascii($text) {
|
143 |
+
return (preg_match('/(?:[^\x00-\x7F])/', $text) !== 1);
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Prepare a text string for use as an IDNA name
|
148 |
+
*
|
149 |
+
* @todo Implement this based on RFC 3491 and the newer 5891
|
150 |
+
* @param string $text
|
151 |
+
* @return string Prepared string
|
152 |
+
*/
|
153 |
+
protected static function nameprep($text) {
|
154 |
+
return $text;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Convert a UTF-8 string to a UCS-4 codepoint array
|
159 |
+
*
|
160 |
+
* Based on \WpOrg\Requests\Iri::replace_invalid_with_pct_encoding()
|
161 |
+
*
|
162 |
+
* @param string $input
|
163 |
+
* @return array Unicode code points
|
164 |
+
*
|
165 |
+
* @throws \WpOrg\Requests\Exception Invalid UTF-8 codepoint (`idna.invalidcodepoint`)
|
166 |
+
*/
|
167 |
+
protected static function utf8_to_codepoints($input) {
|
168 |
+
$codepoints = [];
|
169 |
+
|
170 |
+
// Get number of bytes
|
171 |
+
$strlen = strlen($input);
|
172 |
+
|
173 |
+
// phpcs:ignore Generic.CodeAnalysis.JumbledIncrementer -- This is a deliberate choice.
|
174 |
+
for ($position = 0; $position < $strlen; $position++) {
|
175 |
+
$value = ord($input[$position]);
|
176 |
+
|
177 |
+
// One byte sequence:
|
178 |
+
if ((~$value & 0x80) === 0x80) {
|
179 |
+
$character = $value;
|
180 |
+
$length = 1;
|
181 |
+
$remaining = 0;
|
182 |
+
}
|
183 |
+
// Two byte sequence:
|
184 |
+
elseif (($value & 0xE0) === 0xC0) {
|
185 |
+
$character = ($value & 0x1F) << 6;
|
186 |
+
$length = 2;
|
187 |
+
$remaining = 1;
|
188 |
+
}
|
189 |
+
// Three byte sequence:
|
190 |
+
elseif (($value & 0xF0) === 0xE0) {
|
191 |
+
$character = ($value & 0x0F) << 12;
|
192 |
+
$length = 3;
|
193 |
+
$remaining = 2;
|
194 |
+
}
|
195 |
+
// Four byte sequence:
|
196 |
+
elseif (($value & 0xF8) === 0xF0) {
|
197 |
+
$character = ($value & 0x07) << 18;
|
198 |
+
$length = 4;
|
199 |
+
$remaining = 3;
|
200 |
+
}
|
201 |
+
// Invalid byte:
|
202 |
+
else {
|
203 |
+
throw new Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $value);
|
204 |
+
}
|
205 |
+
|
206 |
+
if ($remaining > 0) {
|
207 |
+
if ($position + $length > $strlen) {
|
208 |
+
throw new Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character);
|
209 |
+
}
|
210 |
+
for ($position++; $remaining > 0; $position++) {
|
211 |
+
$value = ord($input[$position]);
|
212 |
+
|
213 |
+
// If it is invalid, count the sequence as invalid and reprocess the current byte:
|
214 |
+
if (($value & 0xC0) !== 0x80) {
|
215 |
+
throw new Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character);
|
216 |
+
}
|
217 |
+
|
218 |
+
--$remaining;
|
219 |
+
$character |= ($value & 0x3F) << ($remaining * 6);
|
220 |
+
}
|
221 |
+
$position--;
|
222 |
+
}
|
223 |
+
|
224 |
+
if (// Non-shortest form sequences are invalid
|
225 |
+
$length > 1 && $character <= 0x7F
|
226 |
+
|| $length > 2 && $character <= 0x7FF
|
227 |
+
|| $length > 3 && $character <= 0xFFFF
|
228 |
+
// Outside of range of ucschar codepoints
|
229 |
+
// Noncharacters
|
230 |
+
|| ($character & 0xFFFE) === 0xFFFE
|
231 |
+
|| $character >= 0xFDD0 && $character <= 0xFDEF
|
232 |
+
|| (
|
233 |
+
// Everything else not in ucschar
|
234 |
+
$character > 0xD7FF && $character < 0xF900
|
235 |
+
|| $character < 0x20
|
236 |
+
|| $character > 0x7E && $character < 0xA0
|
237 |
+
|| $character > 0xEFFFD
|
238 |
+
)
|
239 |
+
) {
|
240 |
+
throw new Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character);
|
241 |
+
}
|
242 |
+
|
243 |
+
$codepoints[] = $character;
|
244 |
+
}
|
245 |
+
|
246 |
+
return $codepoints;
|
247 |
+
}
|
248 |
+
|
249 |
+
/**
|
250 |
+
* RFC3492-compliant encoder
|
251 |
+
*
|
252 |
+
* @internal Pseudo-code from Section 6.3 is commented with "#" next to relevant code
|
253 |
+
*
|
254 |
+
* @param string $input UTF-8 encoded string to encode
|
255 |
+
* @return string Punycode-encoded string
|
256 |
+
*
|
257 |
+
* @throws \WpOrg\Requests\Exception On character outside of the domain (never happens with Punycode) (`idna.character_outside_domain`)
|
258 |
+
*/
|
259 |
+
public static function punycode_encode($input) {
|
260 |
+
$output = '';
|
261 |
+
// let n = initial_n
|
262 |
+
$n = self::BOOTSTRAP_INITIAL_N;
|
263 |
+
// let delta = 0
|
264 |
+
$delta = 0;
|
265 |
+
// let bias = initial_bias
|
266 |
+
$bias = self::BOOTSTRAP_INITIAL_BIAS;
|
267 |
+
// let h = b = the number of basic code points in the input
|
268 |
+
$h = 0;
|
269 |
+
$b = 0; // see loop
|
270 |
+
// copy them to the output in order
|
271 |
+
$codepoints = self::utf8_to_codepoints($input);
|
272 |
+
$extended = [];
|
273 |
+
|
274 |
+
foreach ($codepoints as $char) {
|
275 |
+
if ($char < 128) {
|
276 |
+
// Character is valid ASCII
|
277 |
+
// TODO: this should also check if it's valid for a URL
|
278 |
+
$output .= chr($char);
|
279 |
+
$h++;
|
280 |
+
}
|
281 |
+
// Check if the character is non-ASCII, but below initial n
|
282 |
+
// This never occurs for Punycode, so ignore in coverage
|
283 |
+
// @codeCoverageIgnoreStart
|
284 |
+
elseif ($char < $n) {
|
285 |
+
throw new Exception('Invalid character', 'idna.character_outside_domain', $char);
|
286 |
+
}
|
287 |
+
// @codeCoverageIgnoreEnd
|
288 |
+
else {
|
289 |
+
$extended[$char] = true;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
$extended = array_keys($extended);
|
293 |
+
sort($extended);
|
294 |
+
$b = $h;
|
295 |
+
// [copy them] followed by a delimiter if b > 0
|
296 |
+
if (strlen($output) > 0) {
|
297 |
+
$output .= '-';
|
298 |
+
}
|
299 |
+
// {if the input contains a non-basic code point < n then fail}
|
300 |
+
// while h < length(input) do begin
|
301 |
+
$codepointcount = count($codepoints);
|
302 |
+
while ($h < $codepointcount) {
|
303 |
+
// let m = the minimum code point >= n in the input
|
304 |
+
$m = array_shift($extended);
|
305 |
+
//printf('next code point to insert is %s' . PHP_EOL, dechex($m));
|
306 |
+
// let delta = delta + (m - n) * (h + 1), fail on overflow
|
307 |
+
$delta += ($m - $n) * ($h + 1);
|
308 |
+
// let n = m
|
309 |
+
$n = $m;
|
310 |
+
// for each code point c in the input (in order) do begin
|
311 |
+
for ($num = 0; $num < $codepointcount; $num++) {
|
312 |
+
$c = $codepoints[$num];
|
313 |
+
// if c < n then increment delta, fail on overflow
|
314 |
+
if ($c < $n) {
|
315 |
+
$delta++;
|
316 |
+
}
|
317 |
+
// if c == n then begin
|
318 |
+
elseif ($c === $n) {
|
319 |
+
// let q = delta
|
320 |
+
$q = $delta;
|
321 |
+
// for k = base to infinity in steps of base do begin
|
322 |
+
for ($k = self::BOOTSTRAP_BASE; ; $k += self::BOOTSTRAP_BASE) {
|
323 |
+
// let t = tmin if k <= bias {+ tmin}, or
|
324 |
+
// tmax if k >= bias + tmax, or k - bias otherwise
|
325 |
+
if ($k <= ($bias + self::BOOTSTRAP_TMIN)) {
|
326 |
+
$t = self::BOOTSTRAP_TMIN;
|
327 |
+
}
|
328 |
+
elseif ($k >= ($bias + self::BOOTSTRAP_TMAX)) {
|
329 |
+
$t = self::BOOTSTRAP_TMAX;
|
330 |
+
}
|
331 |
+
else {
|
332 |
+
$t = $k - $bias;
|
333 |
+
}
|
334 |
+
// if q < t then break
|
335 |
+
if ($q < $t) {
|
336 |
+
break;
|
337 |
+
}
|
338 |
+
// output the code point for digit t + ((q - t) mod (base - t))
|
339 |
+
$digit = $t + (($q - $t) % (self::BOOTSTRAP_BASE - $t));
|
340 |
+
$output .= self::digit_to_char($digit);
|
341 |
+
// let q = (q - t) div (base - t)
|
342 |
+
$q = floor(($q - $t) / (self::BOOTSTRAP_BASE - $t));
|
343 |
+
} // end
|
344 |
+
// output the code point for digit q
|
345 |
+
$output .= self::digit_to_char($q);
|
346 |
+
// let bias = adapt(delta, h + 1, test h equals b?)
|
347 |
+
$bias = self::adapt($delta, $h + 1, $h === $b);
|
348 |
+
// let delta = 0
|
349 |
+
$delta = 0;
|
350 |
+
// increment h
|
351 |
+
$h++;
|
352 |
+
} // end
|
353 |
+
} // end
|
354 |
+
// increment delta and n
|
355 |
+
$delta++;
|
356 |
+
$n++;
|
357 |
+
} // end
|
358 |
+
|
359 |
+
return $output;
|
360 |
+
}
|
361 |
+
|
362 |
+
/**
|
363 |
+
* Convert a digit to its respective character
|
364 |
+
*
|
365 |
+
* @link https://tools.ietf.org/html/rfc3492#section-5
|
366 |
+
*
|
367 |
+
* @param int $digit Digit in the range 0-35
|
368 |
+
* @return string Single character corresponding to digit
|
369 |
+
*
|
370 |
+
* @throws \WpOrg\Requests\Exception On invalid digit (`idna.invalid_digit`)
|
371 |
+
*/
|
372 |
+
protected static function digit_to_char($digit) {
|
373 |
+
// @codeCoverageIgnoreStart
|
374 |
+
// As far as I know, this never happens, but still good to be sure.
|
375 |
+
if ($digit < 0 || $digit > 35) {
|
376 |
+
throw new Exception(sprintf('Invalid digit %d', $digit), 'idna.invalid_digit', $digit);
|
377 |
+
}
|
378 |
+
// @codeCoverageIgnoreEnd
|
379 |
+
$digits = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
380 |
+
return substr($digits, $digit, 1);
|
381 |
+
}
|
382 |
+
|
383 |
+
/**
|
384 |
+
* Adapt the bias
|
385 |
+
*
|
386 |
+
* @link https://tools.ietf.org/html/rfc3492#section-6.1
|
387 |
+
* @param int $delta
|
388 |
+
* @param int $numpoints
|
389 |
+
* @param bool $firsttime
|
390 |
+
* @return int New bias
|
391 |
+
*
|
392 |
+
* function adapt(delta,numpoints,firsttime):
|
393 |
+
*/
|
394 |
+
protected static function adapt($delta, $numpoints, $firsttime) {
|
395 |
+
// if firsttime then let delta = delta div damp
|
396 |
+
if ($firsttime) {
|
397 |
+
$delta = floor($delta / self::BOOTSTRAP_DAMP);
|
398 |
+
}
|
399 |
+
// else let delta = delta div 2
|
400 |
+
else {
|
401 |
+
$delta = floor($delta / 2);
|
402 |
+
}
|
403 |
+
// let delta = delta + (delta div numpoints)
|
404 |
+
$delta += floor($delta / $numpoints);
|
405 |
+
// let k = 0
|
406 |
+
$k = 0;
|
407 |
+
// while delta > ((base - tmin) * tmax) div 2 do begin
|
408 |
+
$max = floor(((self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN) * self::BOOTSTRAP_TMAX) / 2);
|
409 |
+
while ($delta > $max) {
|
410 |
+
// let delta = delta div (base - tmin)
|
411 |
+
$delta = floor($delta / (self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN));
|
412 |
+
// let k = k + base
|
413 |
+
$k += self::BOOTSTRAP_BASE;
|
414 |
+
} // end
|
415 |
+
// return k + (((base - tmin + 1) * delta) div (delta + skew))
|
416 |
+
return $k + floor(((self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN + 1) * $delta) / ($delta + self::BOOTSTRAP_SKEW));
|
417 |
+
}
|
418 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Ipv6.php
ADDED
@@ -0,0 +1,205 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class to validate and to work with IPv6 addresses
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
11 |
+
use WpOrg\Requests\Utility\InputValidator;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Class to validate and to work with IPv6 addresses
|
15 |
+
*
|
16 |
+
* This was originally based on the PEAR class of the same name, but has been
|
17 |
+
* entirely rewritten.
|
18 |
+
*
|
19 |
+
* @package Requests\Utilities
|
20 |
+
*/
|
21 |
+
final class Ipv6 {
|
22 |
+
/**
|
23 |
+
* Uncompresses an IPv6 address
|
24 |
+
*
|
25 |
+
* RFC 4291 allows you to compress consecutive zero pieces in an address to
|
26 |
+
* '::'. This method expects a valid IPv6 address and expands the '::' to
|
27 |
+
* the required number of zero pieces.
|
28 |
+
*
|
29 |
+
* Example: FF01::101 -> FF01:0:0:0:0:0:0:101
|
30 |
+
* ::1 -> 0:0:0:0:0:0:0:1
|
31 |
+
*
|
32 |
+
* @author Alexander Merz <alexander.merz@web.de>
|
33 |
+
* @author elfrink at introweb dot nl
|
34 |
+
* @author Josh Peck <jmp at joshpeck dot org>
|
35 |
+
* @copyright 2003-2005 The PHP Group
|
36 |
+
* @license https://opensource.org/licenses/bsd-license.php
|
37 |
+
*
|
38 |
+
* @param string|Stringable $ip An IPv6 address
|
39 |
+
* @return string The uncompressed IPv6 address
|
40 |
+
*
|
41 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string or a stringable object.
|
42 |
+
*/
|
43 |
+
public static function uncompress($ip) {
|
44 |
+
if (InputValidator::is_string_or_stringable($ip) === false) {
|
45 |
+
throw InvalidArgument::create(1, '$ip', 'string|Stringable', gettype($ip));
|
46 |
+
}
|
47 |
+
|
48 |
+
$ip = (string) $ip;
|
49 |
+
|
50 |
+
if (substr_count($ip, '::') !== 1) {
|
51 |
+
return $ip;
|
52 |
+
}
|
53 |
+
|
54 |
+
list($ip1, $ip2) = explode('::', $ip);
|
55 |
+
$c1 = ($ip1 === '') ? -1 : substr_count($ip1, ':');
|
56 |
+
$c2 = ($ip2 === '') ? -1 : substr_count($ip2, ':');
|
57 |
+
|
58 |
+
if (strpos($ip2, '.') !== false) {
|
59 |
+
$c2++;
|
60 |
+
}
|
61 |
+
// ::
|
62 |
+
if ($c1 === -1 && $c2 === -1) {
|
63 |
+
$ip = '0:0:0:0:0:0:0:0';
|
64 |
+
}
|
65 |
+
// ::xxx
|
66 |
+
elseif ($c1 === -1) {
|
67 |
+
$fill = str_repeat('0:', 7 - $c2);
|
68 |
+
$ip = str_replace('::', $fill, $ip);
|
69 |
+
}
|
70 |
+
// xxx::
|
71 |
+
elseif ($c2 === -1) {
|
72 |
+
$fill = str_repeat(':0', 7 - $c1);
|
73 |
+
$ip = str_replace('::', $fill, $ip);
|
74 |
+
}
|
75 |
+
// xxx::xxx
|
76 |
+
else {
|
77 |
+
$fill = ':' . str_repeat('0:', 6 - $c2 - $c1);
|
78 |
+
$ip = str_replace('::', $fill, $ip);
|
79 |
+
}
|
80 |
+
return $ip;
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Compresses an IPv6 address
|
85 |
+
*
|
86 |
+
* RFC 4291 allows you to compress consecutive zero pieces in an address to
|
87 |
+
* '::'. This method expects a valid IPv6 address and compresses consecutive
|
88 |
+
* zero pieces to '::'.
|
89 |
+
*
|
90 |
+
* Example: FF01:0:0:0:0:0:0:101 -> FF01::101
|
91 |
+
* 0:0:0:0:0:0:0:1 -> ::1
|
92 |
+
*
|
93 |
+
* @see \WpOrg\Requests\IPv6::uncompress()
|
94 |
+
*
|
95 |
+
* @param string $ip An IPv6 address
|
96 |
+
* @return string The compressed IPv6 address
|
97 |
+
*/
|
98 |
+
public static function compress($ip) {
|
99 |
+
// Prepare the IP to be compressed.
|
100 |
+
// Note: Input validation is handled in the `uncompress()` method, which is the first call made in this method.
|
101 |
+
$ip = self::uncompress($ip);
|
102 |
+
$ip_parts = self::split_v6_v4($ip);
|
103 |
+
|
104 |
+
// Replace all leading zeros
|
105 |
+
$ip_parts[0] = preg_replace('/(^|:)0+([0-9])/', '\1\2', $ip_parts[0]);
|
106 |
+
|
107 |
+
// Find bunches of zeros
|
108 |
+
if (preg_match_all('/(?:^|:)(?:0(?::|$))+/', $ip_parts[0], $matches, PREG_OFFSET_CAPTURE)) {
|
109 |
+
$max = 0;
|
110 |
+
$pos = null;
|
111 |
+
foreach ($matches[0] as $match) {
|
112 |
+
if (strlen($match[0]) > $max) {
|
113 |
+
$max = strlen($match[0]);
|
114 |
+
$pos = $match[1];
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
$ip_parts[0] = substr_replace($ip_parts[0], '::', $pos, $max);
|
119 |
+
}
|
120 |
+
|
121 |
+
if ($ip_parts[1] !== '') {
|
122 |
+
return implode(':', $ip_parts);
|
123 |
+
}
|
124 |
+
else {
|
125 |
+
return $ip_parts[0];
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Splits an IPv6 address into the IPv6 and IPv4 representation parts
|
131 |
+
*
|
132 |
+
* RFC 4291 allows you to represent the last two parts of an IPv6 address
|
133 |
+
* using the standard IPv4 representation
|
134 |
+
*
|
135 |
+
* Example: 0:0:0:0:0:0:13.1.68.3
|
136 |
+
* 0:0:0:0:0:FFFF:129.144.52.38
|
137 |
+
*
|
138 |
+
* @param string $ip An IPv6 address
|
139 |
+
* @return string[] [0] contains the IPv6 represented part, and [1] the IPv4 represented part
|
140 |
+
*/
|
141 |
+
private static function split_v6_v4($ip) {
|
142 |
+
if (strpos($ip, '.') !== false) {
|
143 |
+
$pos = strrpos($ip, ':');
|
144 |
+
$ipv6_part = substr($ip, 0, $pos);
|
145 |
+
$ipv4_part = substr($ip, $pos + 1);
|
146 |
+
return [$ipv6_part, $ipv4_part];
|
147 |
+
}
|
148 |
+
else {
|
149 |
+
return [$ip, ''];
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Checks an IPv6 address
|
155 |
+
*
|
156 |
+
* Checks if the given IP is a valid IPv6 address
|
157 |
+
*
|
158 |
+
* @param string $ip An IPv6 address
|
159 |
+
* @return bool true if $ip is a valid IPv6 address
|
160 |
+
*/
|
161 |
+
public static function check_ipv6($ip) {
|
162 |
+
// Note: Input validation is handled in the `uncompress()` method, which is the first call made in this method.
|
163 |
+
$ip = self::uncompress($ip);
|
164 |
+
list($ipv6, $ipv4) = self::split_v6_v4($ip);
|
165 |
+
$ipv6 = explode(':', $ipv6);
|
166 |
+
$ipv4 = explode('.', $ipv4);
|
167 |
+
if (count($ipv6) === 8 && count($ipv4) === 1 || count($ipv6) === 6 && count($ipv4) === 4) {
|
168 |
+
foreach ($ipv6 as $ipv6_part) {
|
169 |
+
// The section can't be empty
|
170 |
+
if ($ipv6_part === '') {
|
171 |
+
return false;
|
172 |
+
}
|
173 |
+
|
174 |
+
// Nor can it be over four characters
|
175 |
+
if (strlen($ipv6_part) > 4) {
|
176 |
+
return false;
|
177 |
+
}
|
178 |
+
|
179 |
+
// Remove leading zeros (this is safe because of the above)
|
180 |
+
$ipv6_part = ltrim($ipv6_part, '0');
|
181 |
+
if ($ipv6_part === '') {
|
182 |
+
$ipv6_part = '0';
|
183 |
+
}
|
184 |
+
|
185 |
+
// Check the value is valid
|
186 |
+
$value = hexdec($ipv6_part);
|
187 |
+
if (dechex($value) !== strtolower($ipv6_part) || $value < 0 || $value > 0xFFFF) {
|
188 |
+
return false;
|
189 |
+
}
|
190 |
+
}
|
191 |
+
if (count($ipv4) === 4) {
|
192 |
+
foreach ($ipv4 as $ipv4_part) {
|
193 |
+
$value = (int) $ipv4_part;
|
194 |
+
if ((string) $value !== $ipv4_part || $value < 0 || $value > 0xFF) {
|
195 |
+
return false;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
}
|
199 |
+
return true;
|
200 |
+
}
|
201 |
+
else {
|
202 |
+
return false;
|
203 |
+
}
|
204 |
+
}
|
205 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Iri.php
ADDED
@@ -0,0 +1,1101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* IRI parser/serialiser/normaliser
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception;
|
11 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
12 |
+
use WpOrg\Requests\Ipv6;
|
13 |
+
use WpOrg\Requests\Port;
|
14 |
+
use WpOrg\Requests\Utility\InputValidator;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* IRI parser/serialiser/normaliser
|
18 |
+
*
|
19 |
+
* Copyright (c) 2007-2010, Geoffrey Sneddon and Steve Minutillo.
|
20 |
+
* All rights reserved.
|
21 |
+
*
|
22 |
+
* Redistribution and use in source and binary forms, with or without
|
23 |
+
* modification, are permitted provided that the following conditions are met:
|
24 |
+
*
|
25 |
+
* * Redistributions of source code must retain the above copyright notice,
|
26 |
+
* this list of conditions and the following disclaimer.
|
27 |
+
*
|
28 |
+
* * Redistributions in binary form must reproduce the above copyright notice,
|
29 |
+
* this list of conditions and the following disclaimer in the documentation
|
30 |
+
* and/or other materials provided with the distribution.
|
31 |
+
*
|
32 |
+
* * Neither the name of the SimplePie Team nor the names of its contributors
|
33 |
+
* may be used to endorse or promote products derived from this software
|
34 |
+
* without specific prior written permission.
|
35 |
+
*
|
36 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
37 |
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
38 |
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
39 |
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE
|
40 |
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
41 |
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
42 |
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
43 |
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
44 |
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
45 |
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
46 |
+
* POSSIBILITY OF SUCH DAMAGE.
|
47 |
+
*
|
48 |
+
* @package Requests\Utilities
|
49 |
+
* @author Geoffrey Sneddon
|
50 |
+
* @author Steve Minutillo
|
51 |
+
* @copyright 2007-2009 Geoffrey Sneddon and Steve Minutillo
|
52 |
+
* @license https://opensource.org/licenses/bsd-license.php
|
53 |
+
* @link http://hg.gsnedders.com/iri/
|
54 |
+
*
|
55 |
+
* @property string $iri IRI we're working with
|
56 |
+
* @property-read string $uri IRI in URI form, {@see \WpOrg\Requests\IRI::to_uri()}
|
57 |
+
* @property string $scheme Scheme part of the IRI
|
58 |
+
* @property string $authority Authority part, formatted for a URI (userinfo + host + port)
|
59 |
+
* @property string $iauthority Authority part of the IRI (userinfo + host + port)
|
60 |
+
* @property string $userinfo Userinfo part, formatted for a URI (after '://' and before '@')
|
61 |
+
* @property string $iuserinfo Userinfo part of the IRI (after '://' and before '@')
|
62 |
+
* @property string $host Host part, formatted for a URI
|
63 |
+
* @property string $ihost Host part of the IRI
|
64 |
+
* @property string $port Port part of the IRI (after ':')
|
65 |
+
* @property string $path Path part, formatted for a URI (after first '/')
|
66 |
+
* @property string $ipath Path part of the IRI (after first '/')
|
67 |
+
* @property string $query Query part, formatted for a URI (after '?')
|
68 |
+
* @property string $iquery Query part of the IRI (after '?')
|
69 |
+
* @property string $fragment Fragment, formatted for a URI (after '#')
|
70 |
+
* @property string $ifragment Fragment part of the IRI (after '#')
|
71 |
+
*/
|
72 |
+
class Iri {
|
73 |
+
/**
|
74 |
+
* Scheme
|
75 |
+
*
|
76 |
+
* @var string|null
|
77 |
+
*/
|
78 |
+
protected $scheme = null;
|
79 |
+
|
80 |
+
/**
|
81 |
+
* User Information
|
82 |
+
*
|
83 |
+
* @var string|null
|
84 |
+
*/
|
85 |
+
protected $iuserinfo = null;
|
86 |
+
|
87 |
+
/**
|
88 |
+
* ihost
|
89 |
+
*
|
90 |
+
* @var string|null
|
91 |
+
*/
|
92 |
+
protected $ihost = null;
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Port
|
96 |
+
*
|
97 |
+
* @var string|null
|
98 |
+
*/
|
99 |
+
protected $port = null;
|
100 |
+
|
101 |
+
/**
|
102 |
+
* ipath
|
103 |
+
*
|
104 |
+
* @var string
|
105 |
+
*/
|
106 |
+
protected $ipath = '';
|
107 |
+
|
108 |
+
/**
|
109 |
+
* iquery
|
110 |
+
*
|
111 |
+
* @var string|null
|
112 |
+
*/
|
113 |
+
protected $iquery = null;
|
114 |
+
|
115 |
+
/**
|
116 |
+
* ifragment|null
|
117 |
+
*
|
118 |
+
* @var string
|
119 |
+
*/
|
120 |
+
protected $ifragment = null;
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Normalization database
|
124 |
+
*
|
125 |
+
* Each key is the scheme, each value is an array with each key as the IRI
|
126 |
+
* part and value as the default value for that part.
|
127 |
+
*
|
128 |
+
* @var array
|
129 |
+
*/
|
130 |
+
protected $normalization = array(
|
131 |
+
'acap' => array(
|
132 |
+
'port' => Port::ACAP,
|
133 |
+
),
|
134 |
+
'dict' => array(
|
135 |
+
'port' => Port::DICT,
|
136 |
+
),
|
137 |
+
'file' => array(
|
138 |
+
'ihost' => 'localhost',
|
139 |
+
),
|
140 |
+
'http' => array(
|
141 |
+
'port' => Port::HTTP,
|
142 |
+
),
|
143 |
+
'https' => array(
|
144 |
+
'port' => Port::HTTPS,
|
145 |
+
),
|
146 |
+
);
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Return the entire IRI when you try and read the object as a string
|
150 |
+
*
|
151 |
+
* @return string
|
152 |
+
*/
|
153 |
+
public function __toString() {
|
154 |
+
return $this->get_iri();
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Overload __set() to provide access via properties
|
159 |
+
*
|
160 |
+
* @param string $name Property name
|
161 |
+
* @param mixed $value Property value
|
162 |
+
*/
|
163 |
+
public function __set($name, $value) {
|
164 |
+
if (method_exists($this, 'set_' . $name)) {
|
165 |
+
call_user_func(array($this, 'set_' . $name), $value);
|
166 |
+
}
|
167 |
+
elseif (
|
168 |
+
$name === 'iauthority'
|
169 |
+
|| $name === 'iuserinfo'
|
170 |
+
|| $name === 'ihost'
|
171 |
+
|| $name === 'ipath'
|
172 |
+
|| $name === 'iquery'
|
173 |
+
|| $name === 'ifragment'
|
174 |
+
) {
|
175 |
+
call_user_func(array($this, 'set_' . substr($name, 1)), $value);
|
176 |
+
}
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Overload __get() to provide access via properties
|
181 |
+
*
|
182 |
+
* @param string $name Property name
|
183 |
+
* @return mixed
|
184 |
+
*/
|
185 |
+
public function __get($name) {
|
186 |
+
// isset() returns false for null, we don't want to do that
|
187 |
+
// Also why we use array_key_exists below instead of isset()
|
188 |
+
$props = get_object_vars($this);
|
189 |
+
|
190 |
+
if (
|
191 |
+
$name === 'iri' ||
|
192 |
+
$name === 'uri' ||
|
193 |
+
$name === 'iauthority' ||
|
194 |
+
$name === 'authority'
|
195 |
+
) {
|
196 |
+
$method = 'get_' . $name;
|
197 |
+
$return = $this->$method();
|
198 |
+
}
|
199 |
+
elseif (array_key_exists($name, $props)) {
|
200 |
+
$return = $this->$name;
|
201 |
+
}
|
202 |
+
// host -> ihost
|
203 |
+
elseif (($prop = 'i' . $name) && array_key_exists($prop, $props)) {
|
204 |
+
$name = $prop;
|
205 |
+
$return = $this->$prop;
|
206 |
+
}
|
207 |
+
// ischeme -> scheme
|
208 |
+
elseif (($prop = substr($name, 1)) && array_key_exists($prop, $props)) {
|
209 |
+
$name = $prop;
|
210 |
+
$return = $this->$prop;
|
211 |
+
}
|
212 |
+
else {
|
213 |
+
trigger_error('Undefined property: ' . get_class($this) . '::' . $name, E_USER_NOTICE);
|
214 |
+
$return = null;
|
215 |
+
}
|
216 |
+
|
217 |
+
if ($return === null && isset($this->normalization[$this->scheme][$name])) {
|
218 |
+
return $this->normalization[$this->scheme][$name];
|
219 |
+
}
|
220 |
+
else {
|
221 |
+
return $return;
|
222 |
+
}
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Overload __isset() to provide access via properties
|
227 |
+
*
|
228 |
+
* @param string $name Property name
|
229 |
+
* @return bool
|
230 |
+
*/
|
231 |
+
public function __isset($name) {
|
232 |
+
return (method_exists($this, 'get_' . $name) || isset($this->$name));
|
233 |
+
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Overload __unset() to provide access via properties
|
237 |
+
*
|
238 |
+
* @param string $name Property name
|
239 |
+
*/
|
240 |
+
public function __unset($name) {
|
241 |
+
if (method_exists($this, 'set_' . $name)) {
|
242 |
+
call_user_func(array($this, 'set_' . $name), '');
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Create a new IRI object, from a specified string
|
248 |
+
*
|
249 |
+
* @param string|Stringable|null $iri
|
250 |
+
*
|
251 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $iri argument is not a string, Stringable or null.
|
252 |
+
*/
|
253 |
+
public function __construct($iri = null) {
|
254 |
+
if ($iri !== null && InputValidator::is_string_or_stringable($iri) === false) {
|
255 |
+
throw InvalidArgument::create(1, '$iri', 'string|Stringable|null', gettype($iri));
|
256 |
+
}
|
257 |
+
|
258 |
+
$this->set_iri($iri);
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Create a new IRI object by resolving a relative IRI
|
263 |
+
*
|
264 |
+
* Returns false if $base is not absolute, otherwise an IRI.
|
265 |
+
*
|
266 |
+
* @param \WpOrg\Requests\Iri|string $base (Absolute) Base IRI
|
267 |
+
* @param \WpOrg\Requests\Iri|string $relative Relative IRI
|
268 |
+
* @return \WpOrg\Requests\Iri|false
|
269 |
+
*/
|
270 |
+
public static function absolutize($base, $relative) {
|
271 |
+
if (!($relative instanceof self)) {
|
272 |
+
$relative = new self($relative);
|
273 |
+
}
|
274 |
+
if (!$relative->is_valid()) {
|
275 |
+
return false;
|
276 |
+
}
|
277 |
+
elseif ($relative->scheme !== null) {
|
278 |
+
return clone $relative;
|
279 |
+
}
|
280 |
+
|
281 |
+
if (!($base instanceof self)) {
|
282 |
+
$base = new self($base);
|
283 |
+
}
|
284 |
+
if ($base->scheme === null || !$base->is_valid()) {
|
285 |
+
return false;
|
286 |
+
}
|
287 |
+
|
288 |
+
if ($relative->get_iri() !== '') {
|
289 |
+
if ($relative->iuserinfo !== null || $relative->ihost !== null || $relative->port !== null) {
|
290 |
+
$target = clone $relative;
|
291 |
+
$target->scheme = $base->scheme;
|
292 |
+
}
|
293 |
+
else {
|
294 |
+
$target = new self;
|
295 |
+
$target->scheme = $base->scheme;
|
296 |
+
$target->iuserinfo = $base->iuserinfo;
|
297 |
+
$target->ihost = $base->ihost;
|
298 |
+
$target->port = $base->port;
|
299 |
+
if ($relative->ipath !== '') {
|
300 |
+
if ($relative->ipath[0] === '/') {
|
301 |
+
$target->ipath = $relative->ipath;
|
302 |
+
}
|
303 |
+
elseif (($base->iuserinfo !== null || $base->ihost !== null || $base->port !== null) && $base->ipath === '') {
|
304 |
+
$target->ipath = '/' . $relative->ipath;
|
305 |
+
}
|
306 |
+
elseif (($last_segment = strrpos($base->ipath, '/')) !== false) {
|
307 |
+
$target->ipath = substr($base->ipath, 0, $last_segment + 1) . $relative->ipath;
|
308 |
+
}
|
309 |
+
else {
|
310 |
+
$target->ipath = $relative->ipath;
|
311 |
+
}
|
312 |
+
$target->ipath = $target->remove_dot_segments($target->ipath);
|
313 |
+
$target->iquery = $relative->iquery;
|
314 |
+
}
|
315 |
+
else {
|
316 |
+
$target->ipath = $base->ipath;
|
317 |
+
if ($relative->iquery !== null) {
|
318 |
+
$target->iquery = $relative->iquery;
|
319 |
+
}
|
320 |
+
elseif ($base->iquery !== null) {
|
321 |
+
$target->iquery = $base->iquery;
|
322 |
+
}
|
323 |
+
}
|
324 |
+
$target->ifragment = $relative->ifragment;
|
325 |
+
}
|
326 |
+
}
|
327 |
+
else {
|
328 |
+
$target = clone $base;
|
329 |
+
$target->ifragment = null;
|
330 |
+
}
|
331 |
+
$target->scheme_normalization();
|
332 |
+
return $target;
|
333 |
+
}
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Parse an IRI into scheme/authority/path/query/fragment segments
|
337 |
+
*
|
338 |
+
* @param string $iri
|
339 |
+
* @return array
|
340 |
+
*/
|
341 |
+
protected function parse_iri($iri) {
|
342 |
+
$iri = trim($iri, "\x20\x09\x0A\x0C\x0D");
|
343 |
+
$has_match = preg_match('/^((?P<scheme>[^:\/?#]+):)?(\/\/(?P<authority>[^\/?#]*))?(?P<path>[^?#]*)(\?(?P<query>[^#]*))?(#(?P<fragment>.*))?$/', $iri, $match);
|
344 |
+
if (!$has_match) {
|
345 |
+
throw new Exception('Cannot parse supplied IRI', 'iri.cannot_parse', $iri);
|
346 |
+
}
|
347 |
+
|
348 |
+
if ($match[1] === '') {
|
349 |
+
$match['scheme'] = null;
|
350 |
+
}
|
351 |
+
if (!isset($match[3]) || $match[3] === '') {
|
352 |
+
$match['authority'] = null;
|
353 |
+
}
|
354 |
+
if (!isset($match[5])) {
|
355 |
+
$match['path'] = '';
|
356 |
+
}
|
357 |
+
if (!isset($match[6]) || $match[6] === '') {
|
358 |
+
$match['query'] = null;
|
359 |
+
}
|
360 |
+
if (!isset($match[8]) || $match[8] === '') {
|
361 |
+
$match['fragment'] = null;
|
362 |
+
}
|
363 |
+
return $match;
|
364 |
+
}
|
365 |
+
|
366 |
+
/**
|
367 |
+
* Remove dot segments from a path
|
368 |
+
*
|
369 |
+
* @param string $input
|
370 |
+
* @return string
|
371 |
+
*/
|
372 |
+
protected function remove_dot_segments($input) {
|
373 |
+
$output = '';
|
374 |
+
while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..') {
|
375 |
+
// A: If the input buffer begins with a prefix of "../" or "./",
|
376 |
+
// then remove that prefix from the input buffer; otherwise,
|
377 |
+
if (strpos($input, '../') === 0) {
|
378 |
+
$input = substr($input, 3);
|
379 |
+
}
|
380 |
+
elseif (strpos($input, './') === 0) {
|
381 |
+
$input = substr($input, 2);
|
382 |
+
}
|
383 |
+
// B: if the input buffer begins with a prefix of "/./" or "/.",
|
384 |
+
// where "." is a complete path segment, then replace that prefix
|
385 |
+
// with "/" in the input buffer; otherwise,
|
386 |
+
elseif (strpos($input, '/./') === 0) {
|
387 |
+
$input = substr($input, 2);
|
388 |
+
}
|
389 |
+
elseif ($input === '/.') {
|
390 |
+
$input = '/';
|
391 |
+
}
|
392 |
+
// C: if the input buffer begins with a prefix of "/../" or "/..",
|
393 |
+
// where ".." is a complete path segment, then replace that prefix
|
394 |
+
// with "/" in the input buffer and remove the last segment and its
|
395 |
+
// preceding "/" (if any) from the output buffer; otherwise,
|
396 |
+
elseif (strpos($input, '/../') === 0) {
|
397 |
+
$input = substr($input, 3);
|
398 |
+
$output = substr_replace($output, '', strrpos($output, '/'));
|
399 |
+
}
|
400 |
+
elseif ($input === '/..') {
|
401 |
+
$input = '/';
|
402 |
+
$output = substr_replace($output, '', strrpos($output, '/'));
|
403 |
+
}
|
404 |
+
// D: if the input buffer consists only of "." or "..", then remove
|
405 |
+
// that from the input buffer; otherwise,
|
406 |
+
elseif ($input === '.' || $input === '..') {
|
407 |
+
$input = '';
|
408 |
+
}
|
409 |
+
// E: move the first path segment in the input buffer to the end of
|
410 |
+
// the output buffer, including the initial "/" character (if any)
|
411 |
+
// and any subsequent characters up to, but not including, the next
|
412 |
+
// "/" character or the end of the input buffer
|
413 |
+
elseif (($pos = strpos($input, '/', 1)) !== false) {
|
414 |
+
$output .= substr($input, 0, $pos);
|
415 |
+
$input = substr_replace($input, '', 0, $pos);
|
416 |
+
}
|
417 |
+
else {
|
418 |
+
$output .= $input;
|
419 |
+
$input = '';
|
420 |
+
}
|
421 |
+
}
|
422 |
+
return $output . $input;
|
423 |
+
}
|
424 |
+
|
425 |
+
/**
|
426 |
+
* Replace invalid character with percent encoding
|
427 |
+
*
|
428 |
+
* @param string $text Input string
|
429 |
+
* @param string $extra_chars Valid characters not in iunreserved or
|
430 |
+
* iprivate (this is ASCII-only)
|
431 |
+
* @param bool $iprivate Allow iprivate
|
432 |
+
* @return string
|
433 |
+
*/
|
434 |
+
protected function replace_invalid_with_pct_encoding($text, $extra_chars, $iprivate = false) {
|
435 |
+
// Normalize as many pct-encoded sections as possible
|
436 |
+
$text = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array($this, 'remove_iunreserved_percent_encoded'), $text);
|
437 |
+
|
438 |
+
// Replace invalid percent characters
|
439 |
+
$text = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $text);
|
440 |
+
|
441 |
+
// Add unreserved and % to $extra_chars (the latter is safe because all
|
442 |
+
// pct-encoded sections are now valid).
|
443 |
+
$extra_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
|
444 |
+
|
445 |
+
// Now replace any bytes that aren't allowed with their pct-encoded versions
|
446 |
+
$position = 0;
|
447 |
+
$strlen = strlen($text);
|
448 |
+
while (($position += strspn($text, $extra_chars, $position)) < $strlen) {
|
449 |
+
$value = ord($text[$position]);
|
450 |
+
|
451 |
+
// Start position
|
452 |
+
$start = $position;
|
453 |
+
|
454 |
+
// By default we are valid
|
455 |
+
$valid = true;
|
456 |
+
|
457 |
+
// No one byte sequences are valid due to the while.
|
458 |
+
// Two byte sequence:
|
459 |
+
if (($value & 0xE0) === 0xC0) {
|
460 |
+
$character = ($value & 0x1F) << 6;
|
461 |
+
$length = 2;
|
462 |
+
$remaining = 1;
|
463 |
+
}
|
464 |
+
// Three byte sequence:
|
465 |
+
elseif (($value & 0xF0) === 0xE0) {
|
466 |
+
$character = ($value & 0x0F) << 12;
|
467 |
+
$length = 3;
|
468 |
+
$remaining = 2;
|
469 |
+
}
|
470 |
+
// Four byte sequence:
|
471 |
+
elseif (($value & 0xF8) === 0xF0) {
|
472 |
+
$character = ($value & 0x07) << 18;
|
473 |
+
$length = 4;
|
474 |
+
$remaining = 3;
|
475 |
+
}
|
476 |
+
// Invalid byte:
|
477 |
+
else {
|
478 |
+
$valid = false;
|
479 |
+
$length = 1;
|
480 |
+
$remaining = 0;
|
481 |
+
}
|
482 |
+
|
483 |
+
if ($remaining) {
|
484 |
+
if ($position + $length <= $strlen) {
|
485 |
+
for ($position++; $remaining; $position++) {
|
486 |
+
$value = ord($text[$position]);
|
487 |
+
|
488 |
+
// Check that the byte is valid, then add it to the character:
|
489 |
+
if (($value & 0xC0) === 0x80) {
|
490 |
+
$character |= ($value & 0x3F) << (--$remaining * 6);
|
491 |
+
}
|
492 |
+
// If it is invalid, count the sequence as invalid and reprocess the current byte:
|
493 |
+
else {
|
494 |
+
$valid = false;
|
495 |
+
$position--;
|
496 |
+
break;
|
497 |
+
}
|
498 |
+
}
|
499 |
+
}
|
500 |
+
else {
|
501 |
+
$position = $strlen - 1;
|
502 |
+
$valid = false;
|
503 |
+
}
|
504 |
+
}
|
505 |
+
|
506 |
+
// Percent encode anything invalid or not in ucschar
|
507 |
+
if (
|
508 |
+
// Invalid sequences
|
509 |
+
!$valid
|
510 |
+
// Non-shortest form sequences are invalid
|
511 |
+
|| $length > 1 && $character <= 0x7F
|
512 |
+
|| $length > 2 && $character <= 0x7FF
|
513 |
+
|| $length > 3 && $character <= 0xFFFF
|
514 |
+
// Outside of range of ucschar codepoints
|
515 |
+
// Noncharacters
|
516 |
+
|| ($character & 0xFFFE) === 0xFFFE
|
517 |
+
|| $character >= 0xFDD0 && $character <= 0xFDEF
|
518 |
+
|| (
|
519 |
+
// Everything else not in ucschar
|
520 |
+
$character > 0xD7FF && $character < 0xF900
|
521 |
+
|| $character < 0xA0
|
522 |
+
|| $character > 0xEFFFD
|
523 |
+
)
|
524 |
+
&& (
|
525 |
+
// Everything not in iprivate, if it applies
|
526 |
+
!$iprivate
|
527 |
+
|| $character < 0xE000
|
528 |
+
|| $character > 0x10FFFD
|
529 |
+
)
|
530 |
+
) {
|
531 |
+
// If we were a character, pretend we weren't, but rather an error.
|
532 |
+
if ($valid) {
|
533 |
+
$position--;
|
534 |
+
}
|
535 |
+
|
536 |
+
for ($j = $start; $j <= $position; $j++) {
|
537 |
+
$text = substr_replace($text, sprintf('%%%02X', ord($text[$j])), $j, 1);
|
538 |
+
$j += 2;
|
539 |
+
$position += 2;
|
540 |
+
$strlen += 2;
|
541 |
+
}
|
542 |
+
}
|
543 |
+
}
|
544 |
+
|
545 |
+
return $text;
|
546 |
+
}
|
547 |
+
|
548 |
+
/**
|
549 |
+
* Callback function for preg_replace_callback.
|
550 |
+
*
|
551 |
+
* Removes sequences of percent encoded bytes that represent UTF-8
|
552 |
+
* encoded characters in iunreserved
|
553 |
+
*
|
554 |
+
* @param array $regex_match PCRE match
|
555 |
+
* @return string Replacement
|
556 |
+
*/
|
557 |
+
protected function remove_iunreserved_percent_encoded($regex_match) {
|
558 |
+
// As we just have valid percent encoded sequences we can just explode
|
559 |
+
// and ignore the first member of the returned array (an empty string).
|
560 |
+
$bytes = explode('%', $regex_match[0]);
|
561 |
+
|
562 |
+
// Initialize the new string (this is what will be returned) and that
|
563 |
+
// there are no bytes remaining in the current sequence (unsurprising
|
564 |
+
// at the first byte!).
|
565 |
+
$string = '';
|
566 |
+
$remaining = 0;
|
567 |
+
|
568 |
+
// Loop over each and every byte, and set $value to its value
|
569 |
+
for ($i = 1, $len = count($bytes); $i < $len; $i++) {
|
570 |
+
$value = hexdec($bytes[$i]);
|
571 |
+
|
572 |
+
// If we're the first byte of sequence:
|
573 |
+
if (!$remaining) {
|
574 |
+
// Start position
|
575 |
+
$start = $i;
|
576 |
+
|
577 |
+
// By default we are valid
|
578 |
+
$valid = true;
|
579 |
+
|
580 |
+
// One byte sequence:
|
581 |
+
if ($value <= 0x7F) {
|
582 |
+
$character = $value;
|
583 |
+
$length = 1;
|
584 |
+
}
|
585 |
+
// Two byte sequence:
|
586 |
+
elseif (($value & 0xE0) === 0xC0) {
|
587 |
+
$character = ($value & 0x1F) << 6;
|
588 |
+
$length = 2;
|
589 |
+
$remaining = 1;
|
590 |
+
}
|
591 |
+
// Three byte sequence:
|
592 |
+
elseif (($value & 0xF0) === 0xE0) {
|
593 |
+
$character = ($value & 0x0F) << 12;
|
594 |
+
$length = 3;
|
595 |
+
$remaining = 2;
|
596 |
+
}
|
597 |
+
// Four byte sequence:
|
598 |
+
elseif (($value & 0xF8) === 0xF0) {
|
599 |
+
$character = ($value & 0x07) << 18;
|
600 |
+
$length = 4;
|
601 |
+
$remaining = 3;
|
602 |
+
}
|
603 |
+
// Invalid byte:
|
604 |
+
else {
|
605 |
+
$valid = false;
|
606 |
+
$remaining = 0;
|
607 |
+
}
|
608 |
+
}
|
609 |
+
// Continuation byte:
|
610 |
+
else {
|
611 |
+
// Check that the byte is valid, then add it to the character:
|
612 |
+
if (($value & 0xC0) === 0x80) {
|
613 |
+
$remaining--;
|
614 |
+
$character |= ($value & 0x3F) << ($remaining * 6);
|
615 |
+
}
|
616 |
+
// If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
|
617 |
+
else {
|
618 |
+
$valid = false;
|
619 |
+
$remaining = 0;
|
620 |
+
$i--;
|
621 |
+
}
|
622 |
+
}
|
623 |
+
|
624 |
+
// If we've reached the end of the current byte sequence, append it to Unicode::$data
|
625 |
+
if (!$remaining) {
|
626 |
+
// Percent encode anything invalid or not in iunreserved
|
627 |
+
if (
|
628 |
+
// Invalid sequences
|
629 |
+
!$valid
|
630 |
+
// Non-shortest form sequences are invalid
|
631 |
+
|| $length > 1 && $character <= 0x7F
|
632 |
+
|| $length > 2 && $character <= 0x7FF
|
633 |
+
|| $length > 3 && $character <= 0xFFFF
|
634 |
+
// Outside of range of iunreserved codepoints
|
635 |
+
|| $character < 0x2D
|
636 |
+
|| $character > 0xEFFFD
|
637 |
+
// Noncharacters
|
638 |
+
|| ($character & 0xFFFE) === 0xFFFE
|
639 |
+
|| $character >= 0xFDD0 && $character <= 0xFDEF
|
640 |
+
// Everything else not in iunreserved (this is all BMP)
|
641 |
+
|| $character === 0x2F
|
642 |
+
|| $character > 0x39 && $character < 0x41
|
643 |
+
|| $character > 0x5A && $character < 0x61
|
644 |
+
|| $character > 0x7A && $character < 0x7E
|
645 |
+
|| $character > 0x7E && $character < 0xA0
|
646 |
+
|| $character > 0xD7FF && $character < 0xF900
|
647 |
+
) {
|
648 |
+
for ($j = $start; $j <= $i; $j++) {
|
649 |
+
$string .= '%' . strtoupper($bytes[$j]);
|
650 |
+
}
|
651 |
+
}
|
652 |
+
else {
|
653 |
+
for ($j = $start; $j <= $i; $j++) {
|
654 |
+
$string .= chr(hexdec($bytes[$j]));
|
655 |
+
}
|
656 |
+
}
|
657 |
+
}
|
658 |
+
}
|
659 |
+
|
660 |
+
// If we have any bytes left over they are invalid (i.e., we are
|
661 |
+
// mid-way through a multi-byte sequence)
|
662 |
+
if ($remaining) {
|
663 |
+
for ($j = $start; $j < $len; $j++) {
|
664 |
+
$string .= '%' . strtoupper($bytes[$j]);
|
665 |
+
}
|
666 |
+
}
|
667 |
+
|
668 |
+
return $string;
|
669 |
+
}
|
670 |
+
|
671 |
+
protected function scheme_normalization() {
|
672 |
+
if (isset($this->normalization[$this->scheme]['iuserinfo']) && $this->iuserinfo === $this->normalization[$this->scheme]['iuserinfo']) {
|
673 |
+
$this->iuserinfo = null;
|
674 |
+
}
|
675 |
+
if (isset($this->normalization[$this->scheme]['ihost']) && $this->ihost === $this->normalization[$this->scheme]['ihost']) {
|
676 |
+
$this->ihost = null;
|
677 |
+
}
|
678 |
+
if (isset($this->normalization[$this->scheme]['port']) && $this->port === $this->normalization[$this->scheme]['port']) {
|
679 |
+
$this->port = null;
|
680 |
+
}
|
681 |
+
if (isset($this->normalization[$this->scheme]['ipath']) && $this->ipath === $this->normalization[$this->scheme]['ipath']) {
|
682 |
+
$this->ipath = '';
|
683 |
+
}
|
684 |
+
if (isset($this->ihost) && empty($this->ipath)) {
|
685 |
+
$this->ipath = '/';
|
686 |
+
}
|
687 |
+
if (isset($this->normalization[$this->scheme]['iquery']) && $this->iquery === $this->normalization[$this->scheme]['iquery']) {
|
688 |
+
$this->iquery = null;
|
689 |
+
}
|
690 |
+
if (isset($this->normalization[$this->scheme]['ifragment']) && $this->ifragment === $this->normalization[$this->scheme]['ifragment']) {
|
691 |
+
$this->ifragment = null;
|
692 |
+
}
|
693 |
+
}
|
694 |
+
|
695 |
+
/**
|
696 |
+
* Check if the object represents a valid IRI. This needs to be done on each
|
697 |
+
* call as some things change depending on another part of the IRI.
|
698 |
+
*
|
699 |
+
* @return bool
|
700 |
+
*/
|
701 |
+
public function is_valid() {
|
702 |
+
$isauthority = $this->iuserinfo !== null || $this->ihost !== null || $this->port !== null;
|
703 |
+
if ($this->ipath !== '' &&
|
704 |
+
(
|
705 |
+
$isauthority && $this->ipath[0] !== '/' ||
|
706 |
+
(
|
707 |
+
$this->scheme === null &&
|
708 |
+
!$isauthority &&
|
709 |
+
strpos($this->ipath, ':') !== false &&
|
710 |
+
(strpos($this->ipath, '/') === false ? true : strpos($this->ipath, ':') < strpos($this->ipath, '/'))
|
711 |
+
)
|
712 |
+
)
|
713 |
+
) {
|
714 |
+
return false;
|
715 |
+
}
|
716 |
+
|
717 |
+
return true;
|
718 |
+
}
|
719 |
+
|
720 |
+
/**
|
721 |
+
* Set the entire IRI. Returns true on success, false on failure (if there
|
722 |
+
* are any invalid characters).
|
723 |
+
*
|
724 |
+
* @param string $iri
|
725 |
+
* @return bool
|
726 |
+
*/
|
727 |
+
protected function set_iri($iri) {
|
728 |
+
static $cache;
|
729 |
+
if (!$cache) {
|
730 |
+
$cache = array();
|
731 |
+
}
|
732 |
+
|
733 |
+
if ($iri === null) {
|
734 |
+
return true;
|
735 |
+
}
|
736 |
+
|
737 |
+
$iri = (string) $iri;
|
738 |
+
|
739 |
+
if (isset($cache[$iri])) {
|
740 |
+
list($this->scheme,
|
741 |
+
$this->iuserinfo,
|
742 |
+
$this->ihost,
|
743 |
+
$this->port,
|
744 |
+
$this->ipath,
|
745 |
+
$this->iquery,
|
746 |
+
$this->ifragment,
|
747 |
+
$return) = $cache[$iri];
|
748 |
+
return $return;
|
749 |
+
}
|
750 |
+
|
751 |
+
$parsed = $this->parse_iri($iri);
|
752 |
+
|
753 |
+
$return = $this->set_scheme($parsed['scheme'])
|
754 |
+
&& $this->set_authority($parsed['authority'])
|
755 |
+
&& $this->set_path($parsed['path'])
|
756 |
+
&& $this->set_query($parsed['query'])
|
757 |
+
&& $this->set_fragment($parsed['fragment']);
|
758 |
+
|
759 |
+
$cache[$iri] = array($this->scheme,
|
760 |
+
$this->iuserinfo,
|
761 |
+
$this->ihost,
|
762 |
+
$this->port,
|
763 |
+
$this->ipath,
|
764 |
+
$this->iquery,
|
765 |
+
$this->ifragment,
|
766 |
+
$return);
|
767 |
+
return $return;
|
768 |
+
}
|
769 |
+
|
770 |
+
/**
|
771 |
+
* Set the scheme. Returns true on success, false on failure (if there are
|
772 |
+
* any invalid characters).
|
773 |
+
*
|
774 |
+
* @param string $scheme
|
775 |
+
* @return bool
|
776 |
+
*/
|
777 |
+
protected function set_scheme($scheme) {
|
778 |
+
if ($scheme === null) {
|
779 |
+
$this->scheme = null;
|
780 |
+
}
|
781 |
+
elseif (!preg_match('/^[A-Za-z][0-9A-Za-z+\-.]*$/', $scheme)) {
|
782 |
+
$this->scheme = null;
|
783 |
+
return false;
|
784 |
+
}
|
785 |
+
else {
|
786 |
+
$this->scheme = strtolower($scheme);
|
787 |
+
}
|
788 |
+
return true;
|
789 |
+
}
|
790 |
+
|
791 |
+
/**
|
792 |
+
* Set the authority. Returns true on success, false on failure (if there are
|
793 |
+
* any invalid characters).
|
794 |
+
*
|
795 |
+
* @param string $authority
|
796 |
+
* @return bool
|
797 |
+
*/
|
798 |
+
protected function set_authority($authority) {
|
799 |
+
static $cache;
|
800 |
+
if (!$cache) {
|
801 |
+
$cache = array();
|
802 |
+
}
|
803 |
+
|
804 |
+
if ($authority === null) {
|
805 |
+
$this->iuserinfo = null;
|
806 |
+
$this->ihost = null;
|
807 |
+
$this->port = null;
|
808 |
+
return true;
|
809 |
+
}
|
810 |
+
if (isset($cache[$authority])) {
|
811 |
+
list($this->iuserinfo,
|
812 |
+
$this->ihost,
|
813 |
+
$this->port,
|
814 |
+
$return) = $cache[$authority];
|
815 |
+
|
816 |
+
return $return;
|
817 |
+
}
|
818 |
+
|
819 |
+
$remaining = $authority;
|
820 |
+
if (($iuserinfo_end = strrpos($remaining, '@')) !== false) {
|
821 |
+
$iuserinfo = substr($remaining, 0, $iuserinfo_end);
|
822 |
+
$remaining = substr($remaining, $iuserinfo_end + 1);
|
823 |
+
}
|
824 |
+
else {
|
825 |
+
$iuserinfo = null;
|
826 |
+
}
|
827 |
+
if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false) {
|
828 |
+
$port = substr($remaining, $port_start + 1);
|
829 |
+
if ($port === false || $port === '') {
|
830 |
+
$port = null;
|
831 |
+
}
|
832 |
+
$remaining = substr($remaining, 0, $port_start);
|
833 |
+
}
|
834 |
+
else {
|
835 |
+
$port = null;
|
836 |
+
}
|
837 |
+
|
838 |
+
$return = $this->set_userinfo($iuserinfo) &&
|
839 |
+
$this->set_host($remaining) &&
|
840 |
+
$this->set_port($port);
|
841 |
+
|
842 |
+
$cache[$authority] = array($this->iuserinfo,
|
843 |
+
$this->ihost,
|
844 |
+
$this->port,
|
845 |
+
$return);
|
846 |
+
|
847 |
+
return $return;
|
848 |
+
}
|
849 |
+
|
850 |
+
/**
|
851 |
+
* Set the iuserinfo.
|
852 |
+
*
|
853 |
+
* @param string $iuserinfo
|
854 |
+
* @return bool
|
855 |
+
*/
|
856 |
+
protected function set_userinfo($iuserinfo) {
|
857 |
+
if ($iuserinfo === null) {
|
858 |
+
$this->iuserinfo = null;
|
859 |
+
}
|
860 |
+
else {
|
861 |
+
$this->iuserinfo = $this->replace_invalid_with_pct_encoding($iuserinfo, '!$&\'()*+,;=:');
|
862 |
+
$this->scheme_normalization();
|
863 |
+
}
|
864 |
+
|
865 |
+
return true;
|
866 |
+
}
|
867 |
+
|
868 |
+
/**
|
869 |
+
* Set the ihost. Returns true on success, false on failure (if there are
|
870 |
+
* any invalid characters).
|
871 |
+
*
|
872 |
+
* @param string $ihost
|
873 |
+
* @return bool
|
874 |
+
*/
|
875 |
+
protected function set_host($ihost) {
|
876 |
+
if ($ihost === null) {
|
877 |
+
$this->ihost = null;
|
878 |
+
return true;
|
879 |
+
}
|
880 |
+
if (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']') {
|
881 |
+
if (Ipv6::check_ipv6(substr($ihost, 1, -1))) {
|
882 |
+
$this->ihost = '[' . Ipv6::compress(substr($ihost, 1, -1)) . ']';
|
883 |
+
}
|
884 |
+
else {
|
885 |
+
$this->ihost = null;
|
886 |
+
return false;
|
887 |
+
}
|
888 |
+
}
|
889 |
+
else {
|
890 |
+
$ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;=');
|
891 |
+
|
892 |
+
// Lowercase, but ignore pct-encoded sections (as they should
|
893 |
+
// remain uppercase). This must be done after the previous step
|
894 |
+
// as that can add unescaped characters.
|
895 |
+
$position = 0;
|
896 |
+
$strlen = strlen($ihost);
|
897 |
+
while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen) {
|
898 |
+
if ($ihost[$position] === '%') {
|
899 |
+
$position += 3;
|
900 |
+
}
|
901 |
+
else {
|
902 |
+
$ihost[$position] = strtolower($ihost[$position]);
|
903 |
+
$position++;
|
904 |
+
}
|
905 |
+
}
|
906 |
+
|
907 |
+
$this->ihost = $ihost;
|
908 |
+
}
|
909 |
+
|
910 |
+
$this->scheme_normalization();
|
911 |
+
|
912 |
+
return true;
|
913 |
+
}
|
914 |
+
|
915 |
+
/**
|
916 |
+
* Set the port. Returns true on success, false on failure (if there are
|
917 |
+
* any invalid characters).
|
918 |
+
*
|
919 |
+
* @param string $port
|
920 |
+
* @return bool
|
921 |
+
*/
|
922 |
+
protected function set_port($port) {
|
923 |
+
if ($port === null) {
|
924 |
+
$this->port = null;
|
925 |
+
return true;
|
926 |
+
}
|
927 |
+
|
928 |
+
if (strspn($port, '0123456789') === strlen($port)) {
|
929 |
+
$this->port = (int) $port;
|
930 |
+
$this->scheme_normalization();
|
931 |
+
return true;
|
932 |
+
}
|
933 |
+
|
934 |
+
$this->port = null;
|
935 |
+
return false;
|
936 |
+
}
|
937 |
+
|
938 |
+
/**
|
939 |
+
* Set the ipath.
|
940 |
+
*
|
941 |
+
* @param string $ipath
|
942 |
+
* @return bool
|
943 |
+
*/
|
944 |
+
protected function set_path($ipath) {
|
945 |
+
static $cache;
|
946 |
+
if (!$cache) {
|
947 |
+
$cache = array();
|
948 |
+
}
|
949 |
+
|
950 |
+
$ipath = (string) $ipath;
|
951 |
+
|
952 |
+
if (isset($cache[$ipath])) {
|
953 |
+
$this->ipath = $cache[$ipath][(int) ($this->scheme !== null)];
|
954 |
+
}
|
955 |
+
else {
|
956 |
+
$valid = $this->replace_invalid_with_pct_encoding($ipath, '!$&\'()*+,;=@:/');
|
957 |
+
$removed = $this->remove_dot_segments($valid);
|
958 |
+
|
959 |
+
$cache[$ipath] = array($valid, $removed);
|
960 |
+
$this->ipath = ($this->scheme !== null) ? $removed : $valid;
|
961 |
+
}
|
962 |
+
$this->scheme_normalization();
|
963 |
+
return true;
|
964 |
+
}
|
965 |
+
|
966 |
+
/**
|
967 |
+
* Set the iquery.
|
968 |
+
*
|
969 |
+
* @param string $iquery
|
970 |
+
* @return bool
|
971 |
+
*/
|
972 |
+
protected function set_query($iquery) {
|
973 |
+
if ($iquery === null) {
|
974 |
+
$this->iquery = null;
|
975 |
+
}
|
976 |
+
else {
|
977 |
+
$this->iquery = $this->replace_invalid_with_pct_encoding($iquery, '!$&\'()*+,;=:@/?', true);
|
978 |
+
$this->scheme_normalization();
|
979 |
+
}
|
980 |
+
return true;
|
981 |
+
}
|
982 |
+
|
983 |
+
/**
|
984 |
+
* Set the ifragment.
|
985 |
+
*
|
986 |
+
* @param string $ifragment
|
987 |
+
* @return bool
|
988 |
+
*/
|
989 |
+
protected function set_fragment($ifragment) {
|
990 |
+
if ($ifragment === null) {
|
991 |
+
$this->ifragment = null;
|
992 |
+
}
|
993 |
+
else {
|
994 |
+
$this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?');
|
995 |
+
$this->scheme_normalization();
|
996 |
+
}
|
997 |
+
return true;
|
998 |
+
}
|
999 |
+
|
1000 |
+
/**
|
1001 |
+
* Convert an IRI to a URI (or parts thereof)
|
1002 |
+
*
|
1003 |
+
* @param string|bool $iri IRI to convert (or false from {@see \WpOrg\Requests\IRI::get_iri()})
|
1004 |
+
* @return string|false URI if IRI is valid, false otherwise.
|
1005 |
+
*/
|
1006 |
+
protected function to_uri($iri) {
|
1007 |
+
if (!is_string($iri)) {
|
1008 |
+
return false;
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
static $non_ascii;
|
1012 |
+
if (!$non_ascii) {
|
1013 |
+
$non_ascii = implode('', range("\x80", "\xFF"));
|
1014 |
+
}
|
1015 |
+
|
1016 |
+
$position = 0;
|
1017 |
+
$strlen = strlen($iri);
|
1018 |
+
while (($position += strcspn($iri, $non_ascii, $position)) < $strlen) {
|
1019 |
+
$iri = substr_replace($iri, sprintf('%%%02X', ord($iri[$position])), $position, 1);
|
1020 |
+
$position += 3;
|
1021 |
+
$strlen += 2;
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
return $iri;
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
/**
|
1028 |
+
* Get the complete IRI
|
1029 |
+
*
|
1030 |
+
* @return string|false
|
1031 |
+
*/
|
1032 |
+
protected function get_iri() {
|
1033 |
+
if (!$this->is_valid()) {
|
1034 |
+
return false;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
$iri = '';
|
1038 |
+
if ($this->scheme !== null) {
|
1039 |
+
$iri .= $this->scheme . ':';
|
1040 |
+
}
|
1041 |
+
if (($iauthority = $this->get_iauthority()) !== null) {
|
1042 |
+
$iri .= '//' . $iauthority;
|
1043 |
+
}
|
1044 |
+
$iri .= $this->ipath;
|
1045 |
+
if ($this->iquery !== null) {
|
1046 |
+
$iri .= '?' . $this->iquery;
|
1047 |
+
}
|
1048 |
+
if ($this->ifragment !== null) {
|
1049 |
+
$iri .= '#' . $this->ifragment;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
return $iri;
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
/**
|
1056 |
+
* Get the complete URI
|
1057 |
+
*
|
1058 |
+
* @return string
|
1059 |
+
*/
|
1060 |
+
protected function get_uri() {
|
1061 |
+
return $this->to_uri($this->get_iri());
|
1062 |
+
}
|
1063 |
+
|
1064 |
+
/**
|
1065 |
+
* Get the complete iauthority
|
1066 |
+
*
|
1067 |
+
* @return string|null
|
1068 |
+
*/
|
1069 |
+
protected function get_iauthority() {
|
1070 |
+
if ($this->iuserinfo === null && $this->ihost === null && $this->port === null) {
|
1071 |
+
return null;
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
$iauthority = '';
|
1075 |
+
if ($this->iuserinfo !== null) {
|
1076 |
+
$iauthority .= $this->iuserinfo . '@';
|
1077 |
+
}
|
1078 |
+
if ($this->ihost !== null) {
|
1079 |
+
$iauthority .= $this->ihost;
|
1080 |
+
}
|
1081 |
+
if ($this->port !== null) {
|
1082 |
+
$iauthority .= ':' . $this->port;
|
1083 |
+
}
|
1084 |
+
return $iauthority;
|
1085 |
+
}
|
1086 |
+
|
1087 |
+
/**
|
1088 |
+
* Get the complete authority
|
1089 |
+
*
|
1090 |
+
* @return string
|
1091 |
+
*/
|
1092 |
+
protected function get_authority() {
|
1093 |
+
$iauthority = $this->get_iauthority();
|
1094 |
+
if (is_string($iauthority)) {
|
1095 |
+
return $this->to_uri($iauthority);
|
1096 |
+
}
|
1097 |
+
else {
|
1098 |
+
return $iauthority;
|
1099 |
+
}
|
1100 |
+
}
|
1101 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Port.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Port utilities for Requests
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
* @since 2.0.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
namespace WpOrg\Requests;
|
10 |
+
|
11 |
+
use WpOrg\Requests\Exception;
|
12 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Find the correct port depending on the Request type.
|
16 |
+
*
|
17 |
+
* @package Requests\Utilities
|
18 |
+
* @since 2.0.0
|
19 |
+
*/
|
20 |
+
final class Port {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Port to use with Acap requests.
|
24 |
+
*
|
25 |
+
* @var int
|
26 |
+
*/
|
27 |
+
const ACAP = 674;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Port to use with Dictionary requests.
|
31 |
+
*
|
32 |
+
* @var int
|
33 |
+
*/
|
34 |
+
const DICT = 2628;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Port to use with HTTP requests.
|
38 |
+
*
|
39 |
+
* @var int
|
40 |
+
*/
|
41 |
+
const HTTP = 80;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Port to use with HTTP over SSL requests.
|
45 |
+
*
|
46 |
+
* @var int
|
47 |
+
*/
|
48 |
+
const HTTPS = 443;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Retrieve the port number to use.
|
52 |
+
*
|
53 |
+
* @param string $type Request type.
|
54 |
+
* The following requests types are supported:
|
55 |
+
* 'acap', 'dict', 'http' and 'https'.
|
56 |
+
*
|
57 |
+
* @return int
|
58 |
+
*
|
59 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When a non-string input has been passed.
|
60 |
+
* @throws \WpOrg\Requests\Exception When a non-supported port is requested ('portnotsupported').
|
61 |
+
*/
|
62 |
+
public static function get($type) {
|
63 |
+
if (!is_string($type)) {
|
64 |
+
throw InvalidArgument::create(1, '$type', 'string', gettype($type));
|
65 |
+
}
|
66 |
+
|
67 |
+
$type = strtoupper($type);
|
68 |
+
if (!defined("self::{$type}")) {
|
69 |
+
$message = sprintf('Invalid port type (%s) passed', $type);
|
70 |
+
throw new Exception($message, 'portnotsupported');
|
71 |
+
}
|
72 |
+
|
73 |
+
return constant("self::{$type}");
|
74 |
+
}
|
75 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Proxy.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Proxy connection interface
|
4 |
+
*
|
5 |
+
* @package Requests\Proxy
|
6 |
+
* @since 1.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
namespace WpOrg\Requests;
|
10 |
+
|
11 |
+
use WpOrg\Requests\Hooks;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Proxy connection interface
|
15 |
+
*
|
16 |
+
* Implement this interface to handle proxy settings and authentication
|
17 |
+
*
|
18 |
+
* Parameters should be passed via the constructor where possible, as this
|
19 |
+
* makes it much easier for users to use your provider.
|
20 |
+
*
|
21 |
+
* @see \WpOrg\Requests\Hooks
|
22 |
+
*
|
23 |
+
* @package Requests\Proxy
|
24 |
+
* @since 1.6
|
25 |
+
*/
|
26 |
+
interface Proxy {
|
27 |
+
/**
|
28 |
+
* Register hooks as needed
|
29 |
+
*
|
30 |
+
* This method is called in {@see \WpOrg\Requests\Requests::request()} when the user
|
31 |
+
* has set an instance as the 'auth' option. Use this callback to register all the
|
32 |
+
* hooks you'll need.
|
33 |
+
*
|
34 |
+
* @see \WpOrg\Requests\Hooks::register()
|
35 |
+
* @param \WpOrg\Requests\Hooks $hooks Hook system
|
36 |
+
*/
|
37 |
+
public function register(Hooks $hooks);
|
38 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Proxy/Http.php
ADDED
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* HTTP Proxy connection interface
|
4 |
+
*
|
5 |
+
* @package Requests\Proxy
|
6 |
+
* @since 1.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
namespace WpOrg\Requests\Proxy;
|
10 |
+
|
11 |
+
use WpOrg\Requests\Exception\ArgumentCount;
|
12 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
13 |
+
use WpOrg\Requests\Hooks;
|
14 |
+
use WpOrg\Requests\Proxy;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* HTTP Proxy connection interface
|
18 |
+
*
|
19 |
+
* Provides a handler for connection via an HTTP proxy
|
20 |
+
*
|
21 |
+
* @package Requests\Proxy
|
22 |
+
* @since 1.6
|
23 |
+
*/
|
24 |
+
final class Http implements Proxy {
|
25 |
+
/**
|
26 |
+
* Proxy host and port
|
27 |
+
*
|
28 |
+
* Notation: "host:port" (eg 127.0.0.1:8080 or someproxy.com:3128)
|
29 |
+
*
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
public $proxy;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Username
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
public $user;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Password
|
43 |
+
*
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
+
public $pass;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Do we need to authenticate? (ie username & password have been provided)
|
50 |
+
*
|
51 |
+
* @var boolean
|
52 |
+
*/
|
53 |
+
public $use_authentication;
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Constructor
|
57 |
+
*
|
58 |
+
* @since 1.6
|
59 |
+
*
|
60 |
+
* @param array|string|null $args Proxy as a string or an array of proxy, user and password.
|
61 |
+
* When passed as an array, must have exactly one (proxy)
|
62 |
+
* or three elements (proxy, user, password).
|
63 |
+
*
|
64 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not an array, a string or null.
|
65 |
+
* @throws \WpOrg\Requests\Exception\ArgumentCount On incorrect number of arguments (`proxyhttpbadargs`)
|
66 |
+
*/
|
67 |
+
public function __construct($args = null) {
|
68 |
+
if (is_string($args)) {
|
69 |
+
$this->proxy = $args;
|
70 |
+
}
|
71 |
+
elseif (is_array($args)) {
|
72 |
+
if (count($args) === 1) {
|
73 |
+
list($this->proxy) = $args;
|
74 |
+
}
|
75 |
+
elseif (count($args) === 3) {
|
76 |
+
list($this->proxy, $this->user, $this->pass) = $args;
|
77 |
+
$this->use_authentication = true;
|
78 |
+
}
|
79 |
+
else {
|
80 |
+
throw ArgumentCount::create(
|
81 |
+
'an array with exactly one element or exactly three elements',
|
82 |
+
count($args),
|
83 |
+
'proxyhttpbadargs'
|
84 |
+
);
|
85 |
+
}
|
86 |
+
} elseif ($args !== null) {
|
87 |
+
throw InvalidArgument::create(1, '$args', 'array|string|null', gettype($args));
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Register the necessary callbacks
|
93 |
+
*
|
94 |
+
* @since 1.6
|
95 |
+
* @see \WpOrg\Requests\Proxy\HTTP::curl_before_send()
|
96 |
+
* @see \WpOrg\Requests\Proxy\HTTP::fsockopen_remote_socket()
|
97 |
+
* @see \WpOrg\Requests\Proxy\HTTP::fsockopen_remote_host_path()
|
98 |
+
* @see \WpOrg\Requests\Proxy\HTTP::fsockopen_header()
|
99 |
+
* @param \WpOrg\Requests\Hooks $hooks Hook system
|
100 |
+
*/
|
101 |
+
public function register(Hooks $hooks) {
|
102 |
+
$hooks->register('curl.before_send', [$this, 'curl_before_send']);
|
103 |
+
|
104 |
+
$hooks->register('fsockopen.remote_socket', [$this, 'fsockopen_remote_socket']);
|
105 |
+
$hooks->register('fsockopen.remote_host_path', [$this, 'fsockopen_remote_host_path']);
|
106 |
+
if ($this->use_authentication) {
|
107 |
+
$hooks->register('fsockopen.after_headers', [$this, 'fsockopen_header']);
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Set cURL parameters before the data is sent
|
113 |
+
*
|
114 |
+
* @since 1.6
|
115 |
+
* @param resource|\CurlHandle $handle cURL handle
|
116 |
+
*/
|
117 |
+
public function curl_before_send(&$handle) {
|
118 |
+
curl_setopt($handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
|
119 |
+
curl_setopt($handle, CURLOPT_PROXY, $this->proxy);
|
120 |
+
|
121 |
+
if ($this->use_authentication) {
|
122 |
+
curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
|
123 |
+
curl_setopt($handle, CURLOPT_PROXYUSERPWD, $this->get_auth_string());
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Alter remote socket information before opening socket connection
|
129 |
+
*
|
130 |
+
* @since 1.6
|
131 |
+
* @param string $remote_socket Socket connection string
|
132 |
+
*/
|
133 |
+
public function fsockopen_remote_socket(&$remote_socket) {
|
134 |
+
$remote_socket = $this->proxy;
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Alter remote path before getting stream data
|
139 |
+
*
|
140 |
+
* @since 1.6
|
141 |
+
* @param string $path Path to send in HTTP request string ("GET ...")
|
142 |
+
* @param string $url Full URL we're requesting
|
143 |
+
*/
|
144 |
+
public function fsockopen_remote_host_path(&$path, $url) {
|
145 |
+
$path = $url;
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Add extra headers to the request before sending
|
150 |
+
*
|
151 |
+
* @since 1.6
|
152 |
+
* @param string $out HTTP header string
|
153 |
+
*/
|
154 |
+
public function fsockopen_header(&$out) {
|
155 |
+
$out .= sprintf("Proxy-Authorization: Basic %s\r\n", base64_encode($this->get_auth_string()));
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Get the authentication string (user:pass)
|
160 |
+
*
|
161 |
+
* @since 1.6
|
162 |
+
* @return string
|
163 |
+
*/
|
164 |
+
public function get_auth_string() {
|
165 |
+
return $this->user . ':' . $this->pass;
|
166 |
+
}
|
167 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Requests.php
ADDED
@@ -0,0 +1,1079 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Requests for PHP
|
4 |
+
*
|
5 |
+
* Inspired by Requests for Python.
|
6 |
+
*
|
7 |
+
* Based on concepts from SimplePie_File, RequestCore and WP_Http.
|
8 |
+
*
|
9 |
+
* @package Requests
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace WpOrg\Requests;
|
13 |
+
|
14 |
+
use WpOrg\Requests\Auth\Basic;
|
15 |
+
use WpOrg\Requests\Capability;
|
16 |
+
use WpOrg\Requests\Cookie\Jar;
|
17 |
+
use WpOrg\Requests\Exception;
|
18 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
19 |
+
use WpOrg\Requests\Hooks;
|
20 |
+
use WpOrg\Requests\IdnaEncoder;
|
21 |
+
use WpOrg\Requests\Iri;
|
22 |
+
use WpOrg\Requests\Proxy\Http;
|
23 |
+
use WpOrg\Requests\Response;
|
24 |
+
use WpOrg\Requests\Transport\Curl;
|
25 |
+
use WpOrg\Requests\Transport\Fsockopen;
|
26 |
+
use WpOrg\Requests\Utility\InputValidator;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Requests for PHP
|
30 |
+
*
|
31 |
+
* Inspired by Requests for Python.
|
32 |
+
*
|
33 |
+
* Based on concepts from SimplePie_File, RequestCore and WP_Http.
|
34 |
+
*
|
35 |
+
* @package Requests
|
36 |
+
*/
|
37 |
+
class Requests {
|
38 |
+
/**
|
39 |
+
* POST method
|
40 |
+
*
|
41 |
+
* @var string
|
42 |
+
*/
|
43 |
+
const POST = 'POST';
|
44 |
+
|
45 |
+
/**
|
46 |
+
* PUT method
|
47 |
+
*
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
const PUT = 'PUT';
|
51 |
+
|
52 |
+
/**
|
53 |
+
* GET method
|
54 |
+
*
|
55 |
+
* @var string
|
56 |
+
*/
|
57 |
+
const GET = 'GET';
|
58 |
+
|
59 |
+
/**
|
60 |
+
* HEAD method
|
61 |
+
*
|
62 |
+
* @var string
|
63 |
+
*/
|
64 |
+
const HEAD = 'HEAD';
|
65 |
+
|
66 |
+
/**
|
67 |
+
* DELETE method
|
68 |
+
*
|
69 |
+
* @var string
|
70 |
+
*/
|
71 |
+
const DELETE = 'DELETE';
|
72 |
+
|
73 |
+
/**
|
74 |
+
* OPTIONS method
|
75 |
+
*
|
76 |
+
* @var string
|
77 |
+
*/
|
78 |
+
const OPTIONS = 'OPTIONS';
|
79 |
+
|
80 |
+
/**
|
81 |
+
* TRACE method
|
82 |
+
*
|
83 |
+
* @var string
|
84 |
+
*/
|
85 |
+
const TRACE = 'TRACE';
|
86 |
+
|
87 |
+
/**
|
88 |
+
* PATCH method
|
89 |
+
*
|
90 |
+
* @link https://tools.ietf.org/html/rfc5789
|
91 |
+
* @var string
|
92 |
+
*/
|
93 |
+
const PATCH = 'PATCH';
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Default size of buffer size to read streams
|
97 |
+
*
|
98 |
+
* @var integer
|
99 |
+
*/
|
100 |
+
const BUFFER_SIZE = 1160;
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Option defaults.
|
104 |
+
*
|
105 |
+
* @see \WpOrg\Requests\Requests::get_default_options()
|
106 |
+
* @see \WpOrg\Requests\Requests::request() for values returned by this method
|
107 |
+
*
|
108 |
+
* @since 2.0.0
|
109 |
+
*
|
110 |
+
* @var array
|
111 |
+
*/
|
112 |
+
const OPTION_DEFAULTS = [
|
113 |
+
'timeout' => 10,
|
114 |
+
'connect_timeout' => 10,
|
115 |
+
'useragent' => 'php-requests/' . self::VERSION,
|
116 |
+
'protocol_version' => 1.1,
|
117 |
+
'redirected' => 0,
|
118 |
+
'redirects' => 10,
|
119 |
+
'follow_redirects' => true,
|
120 |
+
'blocking' => true,
|
121 |
+
'type' => self::GET,
|
122 |
+
'filename' => false,
|
123 |
+
'auth' => false,
|
124 |
+
'proxy' => false,
|
125 |
+
'cookies' => false,
|
126 |
+
'max_bytes' => false,
|
127 |
+
'idn' => true,
|
128 |
+
'hooks' => null,
|
129 |
+
'transport' => null,
|
130 |
+
'verify' => null,
|
131 |
+
'verifyname' => true,
|
132 |
+
];
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Default supported Transport classes.
|
136 |
+
*
|
137 |
+
* @since 2.0.0
|
138 |
+
*
|
139 |
+
* @var array
|
140 |
+
*/
|
141 |
+
const DEFAULT_TRANSPORTS = [
|
142 |
+
Curl::class => Curl::class,
|
143 |
+
Fsockopen::class => Fsockopen::class,
|
144 |
+
];
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Current version of Requests
|
148 |
+
*
|
149 |
+
* @var string
|
150 |
+
*/
|
151 |
+
const VERSION = '2.0.0';
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Selected transport name
|
155 |
+
*
|
156 |
+
* Use {@see \WpOrg\Requests\Requests::get_transport()} instead
|
157 |
+
*
|
158 |
+
* @var array
|
159 |
+
*/
|
160 |
+
public static $transport = [];
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Registered transport classes
|
164 |
+
*
|
165 |
+
* @var array
|
166 |
+
*/
|
167 |
+
protected static $transports = [];
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Default certificate path.
|
171 |
+
*
|
172 |
+
* @see \WpOrg\Requests\Requests::get_certificate_path()
|
173 |
+
* @see \WpOrg\Requests\Requests::set_certificate_path()
|
174 |
+
*
|
175 |
+
* @var string
|
176 |
+
*/
|
177 |
+
protected static $certificate_path = __DIR__ . '/../certificates/cacert.pem';
|
178 |
+
|
179 |
+
/**
|
180 |
+
* All (known) valid deflate, gzip header magic markers.
|
181 |
+
*
|
182 |
+
* These markers relate to different compression levels.
|
183 |
+
*
|
184 |
+
* @link https://stackoverflow.com/a/43170354/482864 Marker source.
|
185 |
+
*
|
186 |
+
* @since 2.0.0
|
187 |
+
*
|
188 |
+
* @var array
|
189 |
+
*/
|
190 |
+
private static $magic_compression_headers = [
|
191 |
+
"\x1f\x8b" => true, // Gzip marker.
|
192 |
+
"\x78\x01" => true, // Zlib marker - level 1.
|
193 |
+
"\x78\x5e" => true, // Zlib marker - level 2 to 5.
|
194 |
+
"\x78\x9c" => true, // Zlib marker - level 6.
|
195 |
+
"\x78\xda" => true, // Zlib marker - level 7 to 9.
|
196 |
+
];
|
197 |
+
|
198 |
+
/**
|
199 |
+
* This is a static class, do not instantiate it
|
200 |
+
*
|
201 |
+
* @codeCoverageIgnore
|
202 |
+
*/
|
203 |
+
private function __construct() {}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Register a transport
|
207 |
+
*
|
208 |
+
* @param string $transport Transport class to add, must support the \WpOrg\Requests\Transport interface
|
209 |
+
*/
|
210 |
+
public static function add_transport($transport) {
|
211 |
+
if (empty(self::$transports)) {
|
212 |
+
self::$transports = self::DEFAULT_TRANSPORTS;
|
213 |
+
}
|
214 |
+
|
215 |
+
self::$transports[$transport] = $transport;
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Get the fully qualified class name (FQCN) for a working transport.
|
220 |
+
*
|
221 |
+
* @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
|
222 |
+
* @return string FQCN of the transport to use, or an empty string if no transport was
|
223 |
+
* found which provided the requested capabilities.
|
224 |
+
*/
|
225 |
+
protected static function get_transport_class(array $capabilities = []) {
|
226 |
+
// Caching code, don't bother testing coverage.
|
227 |
+
// @codeCoverageIgnoreStart
|
228 |
+
// Array of capabilities as a string to be used as an array key.
|
229 |
+
ksort($capabilities);
|
230 |
+
$cap_string = serialize($capabilities);
|
231 |
+
|
232 |
+
// Don't search for a transport if it's already been done for these $capabilities.
|
233 |
+
if (isset(self::$transport[$cap_string])) {
|
234 |
+
return self::$transport[$cap_string];
|
235 |
+
}
|
236 |
+
|
237 |
+
// Ensure we will not run this same check again later on.
|
238 |
+
self::$transport[$cap_string] = '';
|
239 |
+
// @codeCoverageIgnoreEnd
|
240 |
+
|
241 |
+
if (empty(self::$transports)) {
|
242 |
+
self::$transports = self::DEFAULT_TRANSPORTS;
|
243 |
+
}
|
244 |
+
|
245 |
+
// Find us a working transport.
|
246 |
+
foreach (self::$transports as $class) {
|
247 |
+
if (!class_exists($class)) {
|
248 |
+
continue;
|
249 |
+
}
|
250 |
+
|
251 |
+
$result = $class::test($capabilities);
|
252 |
+
if ($result === true) {
|
253 |
+
self::$transport[$cap_string] = $class;
|
254 |
+
break;
|
255 |
+
}
|
256 |
+
}
|
257 |
+
|
258 |
+
return self::$transport[$cap_string];
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Get a working transport.
|
263 |
+
*
|
264 |
+
* @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
|
265 |
+
* @return \WpOrg\Requests\Transport
|
266 |
+
* @throws \WpOrg\Requests\Exception If no valid transport is found (`notransport`).
|
267 |
+
*/
|
268 |
+
protected static function get_transport(array $capabilities = []) {
|
269 |
+
$class = self::get_transport_class($capabilities);
|
270 |
+
|
271 |
+
if ($class === '') {
|
272 |
+
throw new Exception('No working transports found', 'notransport', self::$transports);
|
273 |
+
}
|
274 |
+
|
275 |
+
return new $class();
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Checks to see if we have a transport for the capabilities requested.
|
280 |
+
*
|
281 |
+
* Supported capabilities can be found in the {@see \WpOrg\Requests\Capability}
|
282 |
+
* interface as constants.
|
283 |
+
*
|
284 |
+
* Example usage:
|
285 |
+
* `Requests::has_capabilities([Capability::SSL => true])`.
|
286 |
+
*
|
287 |
+
* @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
|
288 |
+
* @return bool Whether the transport has the requested capabilities.
|
289 |
+
*/
|
290 |
+
public static function has_capabilities(array $capabilities = []) {
|
291 |
+
return self::get_transport_class($capabilities) !== '';
|
292 |
+
}
|
293 |
+
|
294 |
+
/**#@+
|
295 |
+
* @see \WpOrg\Requests\Requests::request()
|
296 |
+
* @param string $url
|
297 |
+
* @param array $headers
|
298 |
+
* @param array $options
|
299 |
+
* @return \WpOrg\Requests\Response
|
300 |
+
*/
|
301 |
+
/**
|
302 |
+
* Send a GET request
|
303 |
+
*/
|
304 |
+
public static function get($url, $headers = [], $options = []) {
|
305 |
+
return self::request($url, $headers, null, self::GET, $options);
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* Send a HEAD request
|
310 |
+
*/
|
311 |
+
public static function head($url, $headers = [], $options = []) {
|
312 |
+
return self::request($url, $headers, null, self::HEAD, $options);
|
313 |
+
}
|
314 |
+
|
315 |
+
/**
|
316 |
+
* Send a DELETE request
|
317 |
+
*/
|
318 |
+
public static function delete($url, $headers = [], $options = []) {
|
319 |
+
return self::request($url, $headers, null, self::DELETE, $options);
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Send a TRACE request
|
324 |
+
*/
|
325 |
+
public static function trace($url, $headers = [], $options = []) {
|
326 |
+
return self::request($url, $headers, null, self::TRACE, $options);
|
327 |
+
}
|
328 |
+
/**#@-*/
|
329 |
+
|
330 |
+
/**#@+
|
331 |
+
* @see \WpOrg\Requests\Requests::request()
|
332 |
+
* @param string $url
|
333 |
+
* @param array $headers
|
334 |
+
* @param array $data
|
335 |
+
* @param array $options
|
336 |
+
* @return \WpOrg\Requests\Response
|
337 |
+
*/
|
338 |
+
/**
|
339 |
+
* Send a POST request
|
340 |
+
*/
|
341 |
+
public static function post($url, $headers = [], $data = [], $options = []) {
|
342 |
+
return self::request($url, $headers, $data, self::POST, $options);
|
343 |
+
}
|
344 |
+
/**
|
345 |
+
* Send a PUT request
|
346 |
+
*/
|
347 |
+
public static function put($url, $headers = [], $data = [], $options = []) {
|
348 |
+
return self::request($url, $headers, $data, self::PUT, $options);
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Send an OPTIONS request
|
353 |
+
*/
|
354 |
+
public static function options($url, $headers = [], $data = [], $options = []) {
|
355 |
+
return self::request($url, $headers, $data, self::OPTIONS, $options);
|
356 |
+
}
|
357 |
+
|
358 |
+
/**
|
359 |
+
* Send a PATCH request
|
360 |
+
*
|
361 |
+
* Note: Unlike {@see \WpOrg\Requests\Requests::post()} and {@see \WpOrg\Requests\Requests::put()},
|
362 |
+
* `$headers` is required, as the specification recommends that should send an ETag
|
363 |
+
*
|
364 |
+
* @link https://tools.ietf.org/html/rfc5789
|
365 |
+
*/
|
366 |
+
public static function patch($url, $headers, $data = [], $options = []) {
|
367 |
+
return self::request($url, $headers, $data, self::PATCH, $options);
|
368 |
+
}
|
369 |
+
/**#@-*/
|
370 |
+
|
371 |
+
/**
|
372 |
+
* Main interface for HTTP requests
|
373 |
+
*
|
374 |
+
* This method initiates a request and sends it via a transport before
|
375 |
+
* parsing.
|
376 |
+
*
|
377 |
+
* The `$options` parameter takes an associative array with the following
|
378 |
+
* options:
|
379 |
+
*
|
380 |
+
* - `timeout`: How long should we wait for a response?
|
381 |
+
* Note: for cURL, a minimum of 1 second applies, as DNS resolution
|
382 |
+
* operates at second-resolution only.
|
383 |
+
* (float, seconds with a millisecond precision, default: 10, example: 0.01)
|
384 |
+
* - `connect_timeout`: How long should we wait while trying to connect?
|
385 |
+
* (float, seconds with a millisecond precision, default: 10, example: 0.01)
|
386 |
+
* - `useragent`: Useragent to send to the server
|
387 |
+
* (string, default: php-requests/$version)
|
388 |
+
* - `follow_redirects`: Should we follow 3xx redirects?
|
389 |
+
* (boolean, default: true)
|
390 |
+
* - `redirects`: How many times should we redirect before erroring?
|
391 |
+
* (integer, default: 10)
|
392 |
+
* - `blocking`: Should we block processing on this request?
|
393 |
+
* (boolean, default: true)
|
394 |
+
* - `filename`: File to stream the body to instead.
|
395 |
+
* (string|boolean, default: false)
|
396 |
+
* - `auth`: Authentication handler or array of user/password details to use
|
397 |
+
* for Basic authentication
|
398 |
+
* (\WpOrg\Requests\Auth|array|boolean, default: false)
|
399 |
+
* - `proxy`: Proxy details to use for proxy by-passing and authentication
|
400 |
+
* (\WpOrg\Requests\Proxy|array|string|boolean, default: false)
|
401 |
+
* - `max_bytes`: Limit for the response body size.
|
402 |
+
* (integer|boolean, default: false)
|
403 |
+
* - `idn`: Enable IDN parsing
|
404 |
+
* (boolean, default: true)
|
405 |
+
* - `transport`: Custom transport. Either a class name, or a
|
406 |
+
* transport object. Defaults to the first working transport from
|
407 |
+
* {@see \WpOrg\Requests\Requests::getTransport()}
|
408 |
+
* (string|\WpOrg\Requests\Transport, default: {@see \WpOrg\Requests\Requests::getTransport()})
|
409 |
+
* - `hooks`: Hooks handler.
|
410 |
+
* (\WpOrg\Requests\HookManager, default: new WpOrg\Requests\Hooks())
|
411 |
+
* - `verify`: Should we verify SSL certificates? Allows passing in a custom
|
412 |
+
* certificate file as a string. (Using true uses the system-wide root
|
413 |
+
* certificate store instead, but this may have different behaviour
|
414 |
+
* across transports.)
|
415 |
+
* (string|boolean, default: certificates/cacert.pem)
|
416 |
+
* - `verifyname`: Should we verify the common name in the SSL certificate?
|
417 |
+
* (boolean, default: true)
|
418 |
+
* - `data_format`: How should we send the `$data` parameter?
|
419 |
+
* (string, one of 'query' or 'body', default: 'query' for
|
420 |
+
* HEAD/GET/DELETE, 'body' for POST/PUT/OPTIONS/PATCH)
|
421 |
+
*
|
422 |
+
* @param string|Stringable $url URL to request
|
423 |
+
* @param array $headers Extra headers to send with the request
|
424 |
+
* @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
|
425 |
+
* @param string $type HTTP request type (use Requests constants)
|
426 |
+
* @param array $options Options for the request (see description for more information)
|
427 |
+
* @return \WpOrg\Requests\Response
|
428 |
+
*
|
429 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string or Stringable.
|
430 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $type argument is not a string.
|
431 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
432 |
+
* @throws \WpOrg\Requests\Exception On invalid URLs (`nonhttp`)
|
433 |
+
*/
|
434 |
+
public static function request($url, $headers = [], $data = [], $type = self::GET, $options = []) {
|
435 |
+
if (InputValidator::is_string_or_stringable($url) === false) {
|
436 |
+
throw InvalidArgument::create(1, '$url', 'string|Stringable', gettype($url));
|
437 |
+
}
|
438 |
+
|
439 |
+
if (is_string($type) === false) {
|
440 |
+
throw InvalidArgument::create(4, '$type', 'string', gettype($type));
|
441 |
+
}
|
442 |
+
|
443 |
+
if (is_array($options) === false) {
|
444 |
+
throw InvalidArgument::create(5, '$options', 'array', gettype($options));
|
445 |
+
}
|
446 |
+
|
447 |
+
if (empty($options['type'])) {
|
448 |
+
$options['type'] = $type;
|
449 |
+
}
|
450 |
+
$options = array_merge(self::get_default_options(), $options);
|
451 |
+
|
452 |
+
self::set_defaults($url, $headers, $data, $type, $options);
|
453 |
+
|
454 |
+
$options['hooks']->dispatch('requests.before_request', [&$url, &$headers, &$data, &$type, &$options]);
|
455 |
+
|
456 |
+
if (!empty($options['transport'])) {
|
457 |
+
$transport = $options['transport'];
|
458 |
+
|
459 |
+
if (is_string($options['transport'])) {
|
460 |
+
$transport = new $transport();
|
461 |
+
}
|
462 |
+
}
|
463 |
+
else {
|
464 |
+
$need_ssl = (stripos($url, 'https://') === 0);
|
465 |
+
$capabilities = [Capability::SSL => $need_ssl];
|
466 |
+
$transport = self::get_transport($capabilities);
|
467 |
+
}
|
468 |
+
$response = $transport->request($url, $headers, $data, $options);
|
469 |
+
|
470 |
+
$options['hooks']->dispatch('requests.before_parse', [&$response, $url, $headers, $data, $type, $options]);
|
471 |
+
|
472 |
+
return self::parse_response($response, $url, $headers, $data, $options);
|
473 |
+
}
|
474 |
+
|
475 |
+
/**
|
476 |
+
* Send multiple HTTP requests simultaneously
|
477 |
+
*
|
478 |
+
* The `$requests` parameter takes an associative or indexed array of
|
479 |
+
* request fields. The key of each request can be used to match up the
|
480 |
+
* request with the returned data, or with the request passed into your
|
481 |
+
* `multiple.request.complete` callback.
|
482 |
+
*
|
483 |
+
* The request fields value is an associative array with the following keys:
|
484 |
+
*
|
485 |
+
* - `url`: Request URL Same as the `$url` parameter to
|
486 |
+
* {@see \WpOrg\Requests\Requests::request()}
|
487 |
+
* (string, required)
|
488 |
+
* - `headers`: Associative array of header fields. Same as the `$headers`
|
489 |
+
* parameter to {@see \WpOrg\Requests\Requests::request()}
|
490 |
+
* (array, default: `array()`)
|
491 |
+
* - `data`: Associative array of data fields or a string. Same as the
|
492 |
+
* `$data` parameter to {@see \WpOrg\Requests\Requests::request()}
|
493 |
+
* (array|string, default: `array()`)
|
494 |
+
* - `type`: HTTP request type (use \WpOrg\Requests\Requests constants). Same as the `$type`
|
495 |
+
* parameter to {@see \WpOrg\Requests\Requests::request()}
|
496 |
+
* (string, default: `\WpOrg\Requests\Requests::GET`)
|
497 |
+
* - `cookies`: Associative array of cookie name to value, or cookie jar.
|
498 |
+
* (array|\WpOrg\Requests\Cookie\Jar)
|
499 |
+
*
|
500 |
+
* If the `$options` parameter is specified, individual requests will
|
501 |
+
* inherit options from it. This can be used to use a single hooking system,
|
502 |
+
* or set all the types to `\WpOrg\Requests\Requests::POST`, for example.
|
503 |
+
*
|
504 |
+
* In addition, the `$options` parameter takes the following global options:
|
505 |
+
*
|
506 |
+
* - `complete`: A callback for when a request is complete. Takes two
|
507 |
+
* parameters, a \WpOrg\Requests\Response/\WpOrg\Requests\Exception reference, and the
|
508 |
+
* ID from the request array (Note: this can also be overridden on a
|
509 |
+
* per-request basis, although that's a little silly)
|
510 |
+
* (callback)
|
511 |
+
*
|
512 |
+
* @param array $requests Requests data (see description for more information)
|
513 |
+
* @param array $options Global and default options (see {@see \WpOrg\Requests\Requests::request()})
|
514 |
+
* @return array Responses (either \WpOrg\Requests\Response or a \WpOrg\Requests\Exception object)
|
515 |
+
*
|
516 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $requests argument is not an array or iterable object with array access.
|
517 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
518 |
+
*/
|
519 |
+
public static function request_multiple($requests, $options = []) {
|
520 |
+
if (InputValidator::has_array_access($requests) === false || InputValidator::is_iterable($requests) === false) {
|
521 |
+
throw InvalidArgument::create(1, '$requests', 'array|ArrayAccess&Traversable', gettype($requests));
|
522 |
+
}
|
523 |
+
|
524 |
+
if (is_array($options) === false) {
|
525 |
+
throw InvalidArgument::create(2, '$options', 'array', gettype($options));
|
526 |
+
}
|
527 |
+
|
528 |
+
$options = array_merge(self::get_default_options(true), $options);
|
529 |
+
|
530 |
+
if (!empty($options['hooks'])) {
|
531 |
+
$options['hooks']->register('transport.internal.parse_response', [static::class, 'parse_multiple']);
|
532 |
+
if (!empty($options['complete'])) {
|
533 |
+
$options['hooks']->register('multiple.request.complete', $options['complete']);
|
534 |
+
}
|
535 |
+
}
|
536 |
+
|
537 |
+
foreach ($requests as $id => &$request) {
|
538 |
+
if (!isset($request['headers'])) {
|
539 |
+
$request['headers'] = [];
|
540 |
+
}
|
541 |
+
if (!isset($request['data'])) {
|
542 |
+
$request['data'] = [];
|
543 |
+
}
|
544 |
+
if (!isset($request['type'])) {
|
545 |
+
$request['type'] = self::GET;
|
546 |
+
}
|
547 |
+
if (!isset($request['options'])) {
|
548 |
+
$request['options'] = $options;
|
549 |
+
$request['options']['type'] = $request['type'];
|
550 |
+
}
|
551 |
+
else {
|
552 |
+
if (empty($request['options']['type'])) {
|
553 |
+
$request['options']['type'] = $request['type'];
|
554 |
+
}
|
555 |
+
$request['options'] = array_merge($options, $request['options']);
|
556 |
+
}
|
557 |
+
|
558 |
+
self::set_defaults($request['url'], $request['headers'], $request['data'], $request['type'], $request['options']);
|
559 |
+
|
560 |
+
// Ensure we only hook in once
|
561 |
+
if ($request['options']['hooks'] !== $options['hooks']) {
|
562 |
+
$request['options']['hooks']->register('transport.internal.parse_response', [static::class, 'parse_multiple']);
|
563 |
+
if (!empty($request['options']['complete'])) {
|
564 |
+
$request['options']['hooks']->register('multiple.request.complete', $request['options']['complete']);
|
565 |
+
}
|
566 |
+
}
|
567 |
+
}
|
568 |
+
unset($request);
|
569 |
+
|
570 |
+
if (!empty($options['transport'])) {
|
571 |
+
$transport = $options['transport'];
|
572 |
+
|
573 |
+
if (is_string($options['transport'])) {
|
574 |
+
$transport = new $transport();
|
575 |
+
}
|
576 |
+
}
|
577 |
+
else {
|
578 |
+
$transport = self::get_transport();
|
579 |
+
}
|
580 |
+
$responses = $transport->request_multiple($requests, $options);
|
581 |
+
|
582 |
+
foreach ($responses as $id => &$response) {
|
583 |
+
// If our hook got messed with somehow, ensure we end up with the
|
584 |
+
// correct response
|
585 |
+
if (is_string($response)) {
|
586 |
+
$request = $requests[$id];
|
587 |
+
self::parse_multiple($response, $request);
|
588 |
+
$request['options']['hooks']->dispatch('multiple.request.complete', [&$response, $id]);
|
589 |
+
}
|
590 |
+
}
|
591 |
+
|
592 |
+
return $responses;
|
593 |
+
}
|
594 |
+
|
595 |
+
/**
|
596 |
+
* Get the default options
|
597 |
+
*
|
598 |
+
* @see \WpOrg\Requests\Requests::request() for values returned by this method
|
599 |
+
* @param boolean $multirequest Is this a multirequest?
|
600 |
+
* @return array Default option values
|
601 |
+
*/
|
602 |
+
protected static function get_default_options($multirequest = false) {
|
603 |
+
$defaults = static::OPTION_DEFAULTS;
|
604 |
+
$defaults['verify'] = self::$certificate_path;
|
605 |
+
|
606 |
+
if ($multirequest !== false) {
|
607 |
+
$defaults['complete'] = null;
|
608 |
+
}
|
609 |
+
return $defaults;
|
610 |
+
}
|
611 |
+
|
612 |
+
/**
|
613 |
+
* Get default certificate path.
|
614 |
+
*
|
615 |
+
* @return string Default certificate path.
|
616 |
+
*/
|
617 |
+
public static function get_certificate_path() {
|
618 |
+
return self::$certificate_path;
|
619 |
+
}
|
620 |
+
|
621 |
+
/**
|
622 |
+
* Set default certificate path.
|
623 |
+
*
|
624 |
+
* @param string|Stringable|bool $path Certificate path, pointing to a PEM file.
|
625 |
+
*
|
626 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string, Stringable or boolean.
|
627 |
+
*/
|
628 |
+
public static function set_certificate_path($path) {
|
629 |
+
if (InputValidator::is_string_or_stringable($path) === false && is_bool($path) === false) {
|
630 |
+
throw InvalidArgument::create(1, '$path', 'string|Stringable|bool', gettype($path));
|
631 |
+
}
|
632 |
+
|
633 |
+
self::$certificate_path = $path;
|
634 |
+
}
|
635 |
+
|
636 |
+
/**
|
637 |
+
* Set the default values
|
638 |
+
*
|
639 |
+
* @param string $url URL to request
|
640 |
+
* @param array $headers Extra headers to send with the request
|
641 |
+
* @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
|
642 |
+
* @param string $type HTTP request type
|
643 |
+
* @param array $options Options for the request
|
644 |
+
* @return void $options is updated with the results
|
645 |
+
*
|
646 |
+
* @throws \WpOrg\Requests\Exception When the $url is not an http(s) URL.
|
647 |
+
*/
|
648 |
+
protected static function set_defaults(&$url, &$headers, &$data, &$type, &$options) {
|
649 |
+
if (!preg_match('/^http(s)?:\/\//i', $url, $matches)) {
|
650 |
+
throw new Exception('Only HTTP(S) requests are handled.', 'nonhttp', $url);
|
651 |
+
}
|
652 |
+
|
653 |
+
if (empty($options['hooks'])) {
|
654 |
+
$options['hooks'] = new Hooks();
|
655 |
+
}
|
656 |
+
|
657 |
+
if (is_array($options['auth'])) {
|
658 |
+
$options['auth'] = new Basic($options['auth']);
|
659 |
+
}
|
660 |
+
if ($options['auth'] !== false) {
|
661 |
+
$options['auth']->register($options['hooks']);
|
662 |
+
}
|
663 |
+
|
664 |
+
if (is_string($options['proxy']) || is_array($options['proxy'])) {
|
665 |
+
$options['proxy'] = new Http($options['proxy']);
|
666 |
+
}
|
667 |
+
if ($options['proxy'] !== false) {
|
668 |
+
$options['proxy']->register($options['hooks']);
|
669 |
+
}
|
670 |
+
|
671 |
+
if (is_array($options['cookies'])) {
|
672 |
+
$options['cookies'] = new Jar($options['cookies']);
|
673 |
+
}
|
674 |
+
elseif (empty($options['cookies'])) {
|
675 |
+
$options['cookies'] = new Jar();
|
676 |
+
}
|
677 |
+
if ($options['cookies'] !== false) {
|
678 |
+
$options['cookies']->register($options['hooks']);
|
679 |
+
}
|
680 |
+
|
681 |
+
if ($options['idn'] !== false) {
|
682 |
+
$iri = new Iri($url);
|
683 |
+
$iri->host = IdnaEncoder::encode($iri->ihost);
|
684 |
+
$url = $iri->uri;
|
685 |
+
}
|
686 |
+
|
687 |
+
// Massage the type to ensure we support it.
|
688 |
+
$type = strtoupper($type);
|
689 |
+
|
690 |
+
if (!isset($options['data_format'])) {
|
691 |
+
if (in_array($type, [self::HEAD, self::GET, self::DELETE], true)) {
|
692 |
+
$options['data_format'] = 'query';
|
693 |
+
}
|
694 |
+
else {
|
695 |
+
$options['data_format'] = 'body';
|
696 |
+
}
|
697 |
+
}
|
698 |
+
}
|
699 |
+
|
700 |
+
/**
|
701 |
+
* HTTP response parser
|
702 |
+
*
|
703 |
+
* @param string $headers Full response text including headers and body
|
704 |
+
* @param string $url Original request URL
|
705 |
+
* @param array $req_headers Original $headers array passed to {@link request()}, in case we need to follow redirects
|
706 |
+
* @param array $req_data Original $data array passed to {@link request()}, in case we need to follow redirects
|
707 |
+
* @param array $options Original $options array passed to {@link request()}, in case we need to follow redirects
|
708 |
+
* @return \WpOrg\Requests\Response
|
709 |
+
*
|
710 |
+
* @throws \WpOrg\Requests\Exception On missing head/body separator (`requests.no_crlf_separator`)
|
711 |
+
* @throws \WpOrg\Requests\Exception On missing head/body separator (`noversion`)
|
712 |
+
* @throws \WpOrg\Requests\Exception On missing head/body separator (`toomanyredirects`)
|
713 |
+
*/
|
714 |
+
protected static function parse_response($headers, $url, $req_headers, $req_data, $options) {
|
715 |
+
$return = new Response();
|
716 |
+
if (!$options['blocking']) {
|
717 |
+
return $return;
|
718 |
+
}
|
719 |
+
|
720 |
+
$return->raw = $headers;
|
721 |
+
$return->url = (string) $url;
|
722 |
+
$return->body = '';
|
723 |
+
|
724 |
+
if (!$options['filename']) {
|
725 |
+
$pos = strpos($headers, "\r\n\r\n");
|
726 |
+
if ($pos === false) {
|
727 |
+
// Crap!
|
728 |
+
throw new Exception('Missing header/body separator', 'requests.no_crlf_separator');
|
729 |
+
}
|
730 |
+
|
731 |
+
$headers = substr($return->raw, 0, $pos);
|
732 |
+
// Headers will always be separated from the body by two new lines - `\n\r\n\r`.
|
733 |
+
$body = substr($return->raw, $pos + 4);
|
734 |
+
if (!empty($body)) {
|
735 |
+
$return->body = $body;
|
736 |
+
}
|
737 |
+
}
|
738 |
+
// Pretend CRLF = LF for compatibility (RFC 2616, section 19.3)
|
739 |
+
$headers = str_replace("\r\n", "\n", $headers);
|
740 |
+
// Unfold headers (replace [CRLF] 1*( SP | HT ) with SP) as per RFC 2616 (section 2.2)
|
741 |
+
$headers = preg_replace('/\n[ \t]/', ' ', $headers);
|
742 |
+
$headers = explode("\n", $headers);
|
743 |
+
preg_match('#^HTTP/(1\.\d)[ \t]+(\d+)#i', array_shift($headers), $matches);
|
744 |
+
if (empty($matches)) {
|
745 |
+
throw new Exception('Response could not be parsed', 'noversion', $headers);
|
746 |
+
}
|
747 |
+
$return->protocol_version = (float) $matches[1];
|
748 |
+
$return->status_code = (int) $matches[2];
|
749 |
+
if ($return->status_code >= 200 && $return->status_code < 300) {
|
750 |
+
$return->success = true;
|
751 |
+
}
|
752 |
+
|
753 |
+
foreach ($headers as $header) {
|
754 |
+
list($key, $value) = explode(':', $header, 2);
|
755 |
+
$value = trim($value);
|
756 |
+
preg_replace('#(\s+)#i', ' ', $value);
|
757 |
+
$return->headers[$key] = $value;
|
758 |
+
}
|
759 |
+
if (isset($return->headers['transfer-encoding'])) {
|
760 |
+
$return->body = self::decode_chunked($return->body);
|
761 |
+
unset($return->headers['transfer-encoding']);
|
762 |
+
}
|
763 |
+
if (isset($return->headers['content-encoding'])) {
|
764 |
+
$return->body = self::decompress($return->body);
|
765 |
+
}
|
766 |
+
|
767 |
+
//fsockopen and cURL compatibility
|
768 |
+
if (isset($return->headers['connection'])) {
|
769 |
+
unset($return->headers['connection']);
|
770 |
+
}
|
771 |
+
|
772 |
+
$options['hooks']->dispatch('requests.before_redirect_check', [&$return, $req_headers, $req_data, $options]);
|
773 |
+
|
774 |
+
if ($return->is_redirect() && $options['follow_redirects'] === true) {
|
775 |
+
if (isset($return->headers['location']) && $options['redirected'] < $options['redirects']) {
|
776 |
+
if ($return->status_code === 303) {
|
777 |
+
$options['type'] = self::GET;
|
778 |
+
}
|
779 |
+
$options['redirected']++;
|
780 |
+
$location = $return->headers['location'];
|
781 |
+
if (strpos($location, 'http://') !== 0 && strpos($location, 'https://') !== 0) {
|
782 |
+
// relative redirect, for compatibility make it absolute
|
783 |
+
$location = Iri::absolutize($url, $location);
|
784 |
+
$location = $location->uri;
|
785 |
+
}
|
786 |
+
|
787 |
+
$hook_args = [
|
788 |
+
&$location,
|
789 |
+
&$req_headers,
|
790 |
+
&$req_data,
|
791 |
+
&$options,
|
792 |
+
$return,
|
793 |
+
];
|
794 |
+
$options['hooks']->dispatch('requests.before_redirect', $hook_args);
|
795 |
+
$redirected = self::request($location, $req_headers, $req_data, $options['type'], $options);
|
796 |
+
$redirected->history[] = $return;
|
797 |
+
return $redirected;
|
798 |
+
}
|
799 |
+
elseif ($options['redirected'] >= $options['redirects']) {
|
800 |
+
throw new Exception('Too many redirects', 'toomanyredirects', $return);
|
801 |
+
}
|
802 |
+
}
|
803 |
+
|
804 |
+
$return->redirects = $options['redirected'];
|
805 |
+
|
806 |
+
$options['hooks']->dispatch('requests.after_request', [&$return, $req_headers, $req_data, $options]);
|
807 |
+
return $return;
|
808 |
+
}
|
809 |
+
|
810 |
+
/**
|
811 |
+
* Callback for `transport.internal.parse_response`
|
812 |
+
*
|
813 |
+
* Internal use only. Converts a raw HTTP response to a \WpOrg\Requests\Response
|
814 |
+
* while still executing a multiple request.
|
815 |
+
*
|
816 |
+
* @param string $response Full response text including headers and body (will be overwritten with Response instance)
|
817 |
+
* @param array $request Request data as passed into {@see \WpOrg\Requests\Requests::request_multiple()}
|
818 |
+
* @return void `$response` is either set to a \WpOrg\Requests\Response instance, or a \WpOrg\Requests\Exception object
|
819 |
+
*/
|
820 |
+
public static function parse_multiple(&$response, $request) {
|
821 |
+
try {
|
822 |
+
$url = $request['url'];
|
823 |
+
$headers = $request['headers'];
|
824 |
+
$data = $request['data'];
|
825 |
+
$options = $request['options'];
|
826 |
+
$response = self::parse_response($response, $url, $headers, $data, $options);
|
827 |
+
}
|
828 |
+
catch (Exception $e) {
|
829 |
+
$response = $e;
|
830 |
+
}
|
831 |
+
}
|
832 |
+
|
833 |
+
/**
|
834 |
+
* Decoded a chunked body as per RFC 2616
|
835 |
+
*
|
836 |
+
* @link https://tools.ietf.org/html/rfc2616#section-3.6.1
|
837 |
+
* @param string $data Chunked body
|
838 |
+
* @return string Decoded body
|
839 |
+
*/
|
840 |
+
protected static function decode_chunked($data) {
|
841 |
+
if (!preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', trim($data))) {
|
842 |
+
return $data;
|
843 |
+
}
|
844 |
+
|
845 |
+
$decoded = '';
|
846 |
+
$encoded = $data;
|
847 |
+
|
848 |
+
while (true) {
|
849 |
+
$is_chunked = (bool) preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', $encoded, $matches);
|
850 |
+
if (!$is_chunked) {
|
851 |
+
// Looks like it's not chunked after all
|
852 |
+
return $data;
|
853 |
+
}
|
854 |
+
|
855 |
+
$length = hexdec(trim($matches[1]));
|
856 |
+
if ($length === 0) {
|
857 |
+
// Ignore trailer headers
|
858 |
+
return $decoded;
|
859 |
+
}
|
860 |
+
|
861 |
+
$chunk_length = strlen($matches[0]);
|
862 |
+
$decoded .= substr($encoded, $chunk_length, $length);
|
863 |
+
$encoded = substr($encoded, $chunk_length + $length + 2);
|
864 |
+
|
865 |
+
if (trim($encoded) === '0' || empty($encoded)) {
|
866 |
+
return $decoded;
|
867 |
+
}
|
868 |
+
}
|
869 |
+
|
870 |
+
// We'll never actually get down here
|
871 |
+
// @codeCoverageIgnoreStart
|
872 |
+
}
|
873 |
+
// @codeCoverageIgnoreEnd
|
874 |
+
|
875 |
+
/**
|
876 |
+
* Convert a key => value array to a 'key: value' array for headers
|
877 |
+
*
|
878 |
+
* @param iterable $dictionary Dictionary of header values
|
879 |
+
* @return array List of headers
|
880 |
+
*
|
881 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not iterable.
|
882 |
+
*/
|
883 |
+
public static function flatten($dictionary) {
|
884 |
+
if (InputValidator::is_iterable($dictionary) === false) {
|
885 |
+
throw InvalidArgument::create(1, '$dictionary', 'iterable', gettype($dictionary));
|
886 |
+
}
|
887 |
+
|
888 |
+
$return = [];
|
889 |
+
foreach ($dictionary as $key => $value) {
|
890 |
+
$return[] = sprintf('%s: %s', $key, $value);
|
891 |
+
}
|
892 |
+
return $return;
|
893 |
+
}
|
894 |
+
|
895 |
+
/**
|
896 |
+
* Decompress an encoded body
|
897 |
+
*
|
898 |
+
* Implements gzip, compress and deflate. Guesses which it is by attempting
|
899 |
+
* to decode.
|
900 |
+
*
|
901 |
+
* @param string $data Compressed data in one of the above formats
|
902 |
+
* @return string Decompressed string
|
903 |
+
*
|
904 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string.
|
905 |
+
*/
|
906 |
+
public static function decompress($data) {
|
907 |
+
if (is_string($data) === false) {
|
908 |
+
throw InvalidArgument::create(1, '$data', 'string', gettype($data));
|
909 |
+
}
|
910 |
+
|
911 |
+
if (trim($data) === '') {
|
912 |
+
// Empty body does not need further processing.
|
913 |
+
return $data;
|
914 |
+
}
|
915 |
+
|
916 |
+
$marker = substr($data, 0, 2);
|
917 |
+
if (!isset(self::$magic_compression_headers[$marker])) {
|
918 |
+
// Not actually compressed. Probably cURL ruining this for us.
|
919 |
+
return $data;
|
920 |
+
}
|
921 |
+
|
922 |
+
if (function_exists('gzdecode')) {
|
923 |
+
$decoded = @gzdecode($data);
|
924 |
+
if ($decoded !== false) {
|
925 |
+
return $decoded;
|
926 |
+
}
|
927 |
+
}
|
928 |
+
|
929 |
+
if (function_exists('gzinflate')) {
|
930 |
+
$decoded = @gzinflate($data);
|
931 |
+
if ($decoded !== false) {
|
932 |
+
return $decoded;
|
933 |
+
}
|
934 |
+
}
|
935 |
+
|
936 |
+
$decoded = self::compatible_gzinflate($data);
|
937 |
+
if ($decoded !== false) {
|
938 |
+
return $decoded;
|
939 |
+
}
|
940 |
+
|
941 |
+
if (function_exists('gzuncompress')) {
|
942 |
+
$decoded = @gzuncompress($data);
|
943 |
+
if ($decoded !== false) {
|
944 |
+
return $decoded;
|
945 |
+
}
|
946 |
+
}
|
947 |
+
|
948 |
+
return $data;
|
949 |
+
}
|
950 |
+
|
951 |
+
/**
|
952 |
+
* Decompression of deflated string while staying compatible with the majority of servers.
|
953 |
+
*
|
954 |
+
* Certain Servers will return deflated data with headers which PHP's gzinflate()
|
955 |
+
* function cannot handle out of the box. The following function has been created from
|
956 |
+
* various snippets on the gzinflate() PHP documentation.
|
957 |
+
*
|
958 |
+
* Warning: Magic numbers within. Due to the potential different formats that the compressed
|
959 |
+
* data may be returned in, some "magic offsets" are needed to ensure proper decompression
|
960 |
+
* takes place. For a simple progmatic way to determine the magic offset in use, see:
|
961 |
+
* https://core.trac.wordpress.org/ticket/18273
|
962 |
+
*
|
963 |
+
* @since 1.6.0
|
964 |
+
* @link https://core.trac.wordpress.org/ticket/18273
|
965 |
+
* @link https://www.php.net/gzinflate#70875
|
966 |
+
* @link https://www.php.net/gzinflate#77336
|
967 |
+
*
|
968 |
+
* @param string $gz_data String to decompress.
|
969 |
+
* @return string|bool False on failure.
|
970 |
+
*
|
971 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string.
|
972 |
+
*/
|
973 |
+
public static function compatible_gzinflate($gz_data) {
|
974 |
+
if (is_string($gz_data) === false) {
|
975 |
+
throw InvalidArgument::create(1, '$gz_data', 'string', gettype($gz_data));
|
976 |
+
}
|
977 |
+
|
978 |
+
if (trim($gz_data) === '') {
|
979 |
+
return false;
|
980 |
+
}
|
981 |
+
|
982 |
+
// Compressed data might contain a full zlib header, if so strip it for
|
983 |
+
// gzinflate()
|
984 |
+
if (substr($gz_data, 0, 3) === "\x1f\x8b\x08") {
|
985 |
+
$i = 10;
|
986 |
+
$flg = ord(substr($gz_data, 3, 1));
|
987 |
+
if ($flg > 0) {
|
988 |
+
if ($flg & 4) {
|
989 |
+
list($xlen) = unpack('v', substr($gz_data, $i, 2));
|
990 |
+
$i += 2 + $xlen;
|
991 |
+
}
|
992 |
+
if ($flg & 8) {
|
993 |
+
$i = strpos($gz_data, "\0", $i) + 1;
|
994 |
+
}
|
995 |
+
if ($flg & 16) {
|
996 |
+
$i = strpos($gz_data, "\0", $i) + 1;
|
997 |
+
}
|
998 |
+
if ($flg & 2) {
|
999 |
+
$i += 2;
|
1000 |
+
}
|
1001 |
+
}
|
1002 |
+
$decompressed = self::compatible_gzinflate(substr($gz_data, $i));
|
1003 |
+
if ($decompressed !== false) {
|
1004 |
+
return $decompressed;
|
1005 |
+
}
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
// If the data is Huffman Encoded, we must first strip the leading 2
|
1009 |
+
// byte Huffman marker for gzinflate()
|
1010 |
+
// The response is Huffman coded by many compressors such as
|
1011 |
+
// java.util.zip.Deflater, Ruby's Zlib::Deflate, and .NET's
|
1012 |
+
// System.IO.Compression.DeflateStream.
|
1013 |
+
//
|
1014 |
+
// See https://decompres.blogspot.com/ for a quick explanation of this
|
1015 |
+
// data type
|
1016 |
+
$huffman_encoded = false;
|
1017 |
+
|
1018 |
+
// low nibble of first byte should be 0x08
|
1019 |
+
list(, $first_nibble) = unpack('h', $gz_data);
|
1020 |
+
|
1021 |
+
// First 2 bytes should be divisible by 0x1F
|
1022 |
+
list(, $first_two_bytes) = unpack('n', $gz_data);
|
1023 |
+
|
1024 |
+
if ($first_nibble === 0x08 && ($first_two_bytes % 0x1F) === 0) {
|
1025 |
+
$huffman_encoded = true;
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
if ($huffman_encoded) {
|
1029 |
+
$decompressed = @gzinflate(substr($gz_data, 2));
|
1030 |
+
if ($decompressed !== false) {
|
1031 |
+
return $decompressed;
|
1032 |
+
}
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
if (substr($gz_data, 0, 4) === "\x50\x4b\x03\x04") {
|
1036 |
+
// ZIP file format header
|
1037 |
+
// Offset 6: 2 bytes, General-purpose field
|
1038 |
+
// Offset 26: 2 bytes, filename length
|
1039 |
+
// Offset 28: 2 bytes, optional field length
|
1040 |
+
// Offset 30: Filename field, followed by optional field, followed
|
1041 |
+
// immediately by data
|
1042 |
+
list(, $general_purpose_flag) = unpack('v', substr($gz_data, 6, 2));
|
1043 |
+
|
1044 |
+
// If the file has been compressed on the fly, 0x08 bit is set of
|
1045 |
+
// the general purpose field. We can use this to differentiate
|
1046 |
+
// between a compressed document, and a ZIP file
|
1047 |
+
$zip_compressed_on_the_fly = ((0x08 & $general_purpose_flag) === 0x08);
|
1048 |
+
|
1049 |
+
if (!$zip_compressed_on_the_fly) {
|
1050 |
+
// Don't attempt to decode a compressed zip file
|
1051 |
+
return $gz_data;
|
1052 |
+
}
|
1053 |
+
|
1054 |
+
// Determine the first byte of data, based on the above ZIP header
|
1055 |
+
// offsets:
|
1056 |
+
$first_file_start = array_sum(unpack('v2', substr($gz_data, 26, 4)));
|
1057 |
+
$decompressed = @gzinflate(substr($gz_data, 30 + $first_file_start));
|
1058 |
+
if ($decompressed !== false) {
|
1059 |
+
return $decompressed;
|
1060 |
+
}
|
1061 |
+
return false;
|
1062 |
+
}
|
1063 |
+
|
1064 |
+
// Finally fall back to straight gzinflate
|
1065 |
+
$decompressed = @gzinflate($gz_data);
|
1066 |
+
if ($decompressed !== false) {
|
1067 |
+
return $decompressed;
|
1068 |
+
}
|
1069 |
+
|
1070 |
+
// Fallback for all above failing, not expected, but included for
|
1071 |
+
// debugging and preventing regressions and to track stats
|
1072 |
+
$decompressed = @gzinflate(substr($gz_data, 2));
|
1073 |
+
if ($decompressed !== false) {
|
1074 |
+
return $decompressed;
|
1075 |
+
}
|
1076 |
+
|
1077 |
+
return false;
|
1078 |
+
}
|
1079 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Response.php
ADDED
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* HTTP response class
|
4 |
+
*
|
5 |
+
* Contains a response from \WpOrg\Requests\Requests::request()
|
6 |
+
*
|
7 |
+
* @package Requests
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WpOrg\Requests;
|
11 |
+
|
12 |
+
use WpOrg\Requests\Cookie\Jar;
|
13 |
+
use WpOrg\Requests\Exception;
|
14 |
+
use WpOrg\Requests\Exception\Http;
|
15 |
+
use WpOrg\Requests\Response\Headers;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* HTTP response class
|
19 |
+
*
|
20 |
+
* Contains a response from \WpOrg\Requests\Requests::request()
|
21 |
+
*
|
22 |
+
* @package Requests
|
23 |
+
*/
|
24 |
+
class Response {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Response body
|
28 |
+
*
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
public $body = '';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Raw HTTP data from the transport
|
35 |
+
*
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
public $raw = '';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Headers, as an associative array
|
42 |
+
*
|
43 |
+
* @var \WpOrg\Requests\Response\Headers Array-like object representing headers
|
44 |
+
*/
|
45 |
+
public $headers = [];
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Status code, false if non-blocking
|
49 |
+
*
|
50 |
+
* @var integer|boolean
|
51 |
+
*/
|
52 |
+
public $status_code = false;
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Protocol version, false if non-blocking
|
56 |
+
*
|
57 |
+
* @var float|boolean
|
58 |
+
*/
|
59 |
+
public $protocol_version = false;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Whether the request succeeded or not
|
63 |
+
*
|
64 |
+
* @var boolean
|
65 |
+
*/
|
66 |
+
public $success = false;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Number of redirects the request used
|
70 |
+
*
|
71 |
+
* @var integer
|
72 |
+
*/
|
73 |
+
public $redirects = 0;
|
74 |
+
|
75 |
+
/**
|
76 |
+
* URL requested
|
77 |
+
*
|
78 |
+
* @var string
|
79 |
+
*/
|
80 |
+
public $url = '';
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Previous requests (from redirects)
|
84 |
+
*
|
85 |
+
* @var array Array of \WpOrg\Requests\Response objects
|
86 |
+
*/
|
87 |
+
public $history = [];
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Cookies from the request
|
91 |
+
*
|
92 |
+
* @var \WpOrg\Requests\Cookie\Jar Array-like object representing a cookie jar
|
93 |
+
*/
|
94 |
+
public $cookies = [];
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Constructor
|
98 |
+
*/
|
99 |
+
public function __construct() {
|
100 |
+
$this->headers = new Headers();
|
101 |
+
$this->cookies = new Jar();
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Is the response a redirect?
|
106 |
+
*
|
107 |
+
* @return boolean True if redirect (3xx status), false if not.
|
108 |
+
*/
|
109 |
+
public function is_redirect() {
|
110 |
+
$code = $this->status_code;
|
111 |
+
return in_array($code, [300, 301, 302, 303, 307], true) || $code > 307 && $code < 400;
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Throws an exception if the request was not successful
|
116 |
+
*
|
117 |
+
* @param boolean $allow_redirects Set to false to throw on a 3xx as well
|
118 |
+
*
|
119 |
+
* @throws \WpOrg\Requests\Exception If `$allow_redirects` is false, and code is 3xx (`response.no_redirects`)
|
120 |
+
* @throws \WpOrg\Requests\Exception\Http On non-successful status code. Exception class corresponds to "Status" + code (e.g. {@see \WpOrg\Requests\Exception\Http\Status404})
|
121 |
+
*/
|
122 |
+
public function throw_for_status($allow_redirects = true) {
|
123 |
+
if ($this->is_redirect()) {
|
124 |
+
if ($allow_redirects !== true) {
|
125 |
+
throw new Exception('Redirection not allowed', 'response.no_redirects', $this);
|
126 |
+
}
|
127 |
+
}
|
128 |
+
elseif (!$this->success) {
|
129 |
+
$exception = Http::get_class($this->status_code);
|
130 |
+
throw new $exception(null, $this);
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* JSON decode the response body.
|
136 |
+
*
|
137 |
+
* The method parameters are the same as those for the PHP native `json_decode()` function.
|
138 |
+
*
|
139 |
+
* @link https://php.net/json-decode
|
140 |
+
*
|
141 |
+
* @param ?bool $associative Optional. When `true`, JSON objects will be returned as associative arrays;
|
142 |
+
* When `false`, JSON objects will be returned as objects.
|
143 |
+
* When `null`, JSON objects will be returned as associative arrays
|
144 |
+
* or objects depending on whether `JSON_OBJECT_AS_ARRAY` is set in the flags.
|
145 |
+
* Defaults to `true` (in contrast to the PHP native default of `null`).
|
146 |
+
* @param int $depth Optional. Maximum nesting depth of the structure being decoded.
|
147 |
+
* Defaults to `512`.
|
148 |
+
* @param int $options Optional. Bitmask of JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE,
|
149 |
+
* JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY, JSON_THROW_ON_ERROR.
|
150 |
+
* Defaults to `0` (no options set).
|
151 |
+
*
|
152 |
+
* @return array
|
153 |
+
*
|
154 |
+
* @throws \WpOrg\Requests\Exception If `$this->body` is not valid json.
|
155 |
+
*/
|
156 |
+
public function decode_body($associative = true, $depth = 512, $options = 0) {
|
157 |
+
$data = json_decode($this->body, $associative, $depth, $options);
|
158 |
+
|
159 |
+
if (json_last_error() !== JSON_ERROR_NONE) {
|
160 |
+
$last_error = json_last_error_msg();
|
161 |
+
throw new Exception('Unable to parse JSON data: ' . $last_error, 'response.invalid', $this);
|
162 |
+
}
|
163 |
+
|
164 |
+
return $data;
|
165 |
+
}
|
166 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Response/Headers.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Case-insensitive dictionary, suitable for HTTP headers
|
4 |
+
*
|
5 |
+
* @package Requests
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Response;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception;
|
11 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
12 |
+
use WpOrg\Requests\Utility\CaseInsensitiveDictionary;
|
13 |
+
use WpOrg\Requests\Utility\FilteredIterator;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Case-insensitive dictionary, suitable for HTTP headers
|
17 |
+
*
|
18 |
+
* @package Requests
|
19 |
+
*/
|
20 |
+
class Headers extends CaseInsensitiveDictionary {
|
21 |
+
/**
|
22 |
+
* Get the given header
|
23 |
+
*
|
24 |
+
* Unlike {@see \WpOrg\Requests\Response\Headers::getValues()}, this returns a string. If there are
|
25 |
+
* multiple values, it concatenates them with a comma as per RFC2616.
|
26 |
+
*
|
27 |
+
* Avoid using this where commas may be used unquoted in values, such as
|
28 |
+
* Set-Cookie headers.
|
29 |
+
*
|
30 |
+
* @param string $offset
|
31 |
+
* @return string|null Header value
|
32 |
+
*/
|
33 |
+
public function offsetGet($offset) {
|
34 |
+
if (is_string($offset)) {
|
35 |
+
$offset = strtolower($offset);
|
36 |
+
}
|
37 |
+
|
38 |
+
if (!isset($this->data[$offset])) {
|
39 |
+
return null;
|
40 |
+
}
|
41 |
+
|
42 |
+
return $this->flatten($this->data[$offset]);
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Set the given item
|
47 |
+
*
|
48 |
+
* @param string $offset Item name
|
49 |
+
* @param string $value Item value
|
50 |
+
*
|
51 |
+
* @throws \WpOrg\Requests\Exception On attempting to use dictionary as list (`invalidset`)
|
52 |
+
*/
|
53 |
+
public function offsetSet($offset, $value) {
|
54 |
+
if ($offset === null) {
|
55 |
+
throw new Exception('Object is a dictionary, not a list', 'invalidset');
|
56 |
+
}
|
57 |
+
|
58 |
+
if (is_string($offset)) {
|
59 |
+
$offset = strtolower($offset);
|
60 |
+
}
|
61 |
+
|
62 |
+
if (!isset($this->data[$offset])) {
|
63 |
+
$this->data[$offset] = [];
|
64 |
+
}
|
65 |
+
|
66 |
+
$this->data[$offset][] = $value;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Get all values for a given header
|
71 |
+
*
|
72 |
+
* @param string $offset
|
73 |
+
* @return array|null Header values
|
74 |
+
*
|
75 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not valid as an array key.
|
76 |
+
*/
|
77 |
+
public function getValues($offset) {
|
78 |
+
if (!is_string($offset) && !is_int($offset)) {
|
79 |
+
throw InvalidArgument::create(1, '$offset', 'string|int', gettype($offset));
|
80 |
+
}
|
81 |
+
|
82 |
+
$offset = strtolower($offset);
|
83 |
+
if (!isset($this->data[$offset])) {
|
84 |
+
return null;
|
85 |
+
}
|
86 |
+
|
87 |
+
return $this->data[$offset];
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Flattens a value into a string
|
92 |
+
*
|
93 |
+
* Converts an array into a string by imploding values with a comma, as per
|
94 |
+
* RFC2616's rules for folding headers.
|
95 |
+
*
|
96 |
+
* @param string|array $value Value to flatten
|
97 |
+
* @return string Flattened value
|
98 |
+
*
|
99 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string or an array.
|
100 |
+
*/
|
101 |
+
public function flatten($value) {
|
102 |
+
if (is_string($value)) {
|
103 |
+
return $value;
|
104 |
+
}
|
105 |
+
|
106 |
+
if (is_array($value)) {
|
107 |
+
return implode(',', $value);
|
108 |
+
}
|
109 |
+
|
110 |
+
throw InvalidArgument::create(1, '$value', 'string|array', gettype($value));
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Get an iterator for the data
|
115 |
+
*
|
116 |
+
* Converts the internally stored values to a comma-separated string if there is more
|
117 |
+
* than one value for a key.
|
118 |
+
*
|
119 |
+
* @return \ArrayIterator
|
120 |
+
*/
|
121 |
+
public function getIterator() {
|
122 |
+
return new FilteredIterator($this->data, [$this, 'flatten']);
|
123 |
+
}
|
124 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Session.php
ADDED
@@ -0,0 +1,304 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Session handler for persistent requests and default parameters
|
4 |
+
*
|
5 |
+
* @package Requests\SessionHandler
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Cookie\Jar;
|
11 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
12 |
+
use WpOrg\Requests\Iri;
|
13 |
+
use WpOrg\Requests\Requests;
|
14 |
+
use WpOrg\Requests\Utility\InputValidator;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Session handler for persistent requests and default parameters
|
18 |
+
*
|
19 |
+
* Allows various options to be set as default values, and merges both the
|
20 |
+
* options and URL properties together. A base URL can be set for all requests,
|
21 |
+
* with all subrequests resolved from this. Base options can be set (including
|
22 |
+
* a shared cookie jar), then overridden for individual requests.
|
23 |
+
*
|
24 |
+
* @package Requests\SessionHandler
|
25 |
+
*/
|
26 |
+
class Session {
|
27 |
+
/**
|
28 |
+
* Base URL for requests
|
29 |
+
*
|
30 |
+
* URLs will be made absolute using this as the base
|
31 |
+
*
|
32 |
+
* @var string|null
|
33 |
+
*/
|
34 |
+
public $url = null;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Base headers for requests
|
38 |
+
*
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
+
public $headers = [];
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Base data for requests
|
45 |
+
*
|
46 |
+
* If both the base data and the per-request data are arrays, the data will
|
47 |
+
* be merged before sending the request.
|
48 |
+
*
|
49 |
+
* @var array
|
50 |
+
*/
|
51 |
+
public $data = [];
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Base options for requests
|
55 |
+
*
|
56 |
+
* The base options are merged with the per-request data for each request.
|
57 |
+
* The only default option is a shared cookie jar between requests.
|
58 |
+
*
|
59 |
+
* Values here can also be set directly via properties on the Session
|
60 |
+
* object, e.g. `$session->useragent = 'X';`
|
61 |
+
*
|
62 |
+
* @var array
|
63 |
+
*/
|
64 |
+
public $options = [];
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Create a new session
|
68 |
+
*
|
69 |
+
* @param string|Stringable|null $url Base URL for requests
|
70 |
+
* @param array $headers Default headers for requests
|
71 |
+
* @param array $data Default data for requests
|
72 |
+
* @param array $options Default options for requests
|
73 |
+
*
|
74 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string, Stringable or null.
|
75 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $headers argument is not an array.
|
76 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $data argument is not an array.
|
77 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
78 |
+
*/
|
79 |
+
public function __construct($url = null, $headers = [], $data = [], $options = []) {
|
80 |
+
if ($url !== null && InputValidator::is_string_or_stringable($url) === false) {
|
81 |
+
throw InvalidArgument::create(1, '$url', 'string|Stringable|null', gettype($url));
|
82 |
+
}
|
83 |
+
|
84 |
+
if (is_array($headers) === false) {
|
85 |
+
throw InvalidArgument::create(2, '$headers', 'array', gettype($headers));
|
86 |
+
}
|
87 |
+
|
88 |
+
if (is_array($data) === false) {
|
89 |
+
throw InvalidArgument::create(3, '$data', 'array', gettype($data));
|
90 |
+
}
|
91 |
+
|
92 |
+
if (is_array($options) === false) {
|
93 |
+
throw InvalidArgument::create(4, '$options', 'array', gettype($options));
|
94 |
+
}
|
95 |
+
|
96 |
+
$this->url = $url;
|
97 |
+
$this->headers = $headers;
|
98 |
+
$this->data = $data;
|
99 |
+
$this->options = $options;
|
100 |
+
|
101 |
+
if (empty($this->options['cookies'])) {
|
102 |
+
$this->options['cookies'] = new Jar();
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Get a property's value
|
108 |
+
*
|
109 |
+
* @param string $name Property name.
|
110 |
+
* @return mixed|null Property value, null if none found
|
111 |
+
*/
|
112 |
+
public function __get($name) {
|
113 |
+
if (isset($this->options[$name])) {
|
114 |
+
return $this->options[$name];
|
115 |
+
}
|
116 |
+
|
117 |
+
return null;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Set a property's value
|
122 |
+
*
|
123 |
+
* @param string $name Property name.
|
124 |
+
* @param mixed $value Property value
|
125 |
+
*/
|
126 |
+
public function __set($name, $value) {
|
127 |
+
$this->options[$name] = $value;
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Remove a property's value
|
132 |
+
*
|
133 |
+
* @param string $name Property name.
|
134 |
+
*/
|
135 |
+
public function __isset($name) {
|
136 |
+
return isset($this->options[$name]);
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Remove a property's value
|
141 |
+
*
|
142 |
+
* @param string $name Property name.
|
143 |
+
*/
|
144 |
+
public function __unset($name) {
|
145 |
+
unset($this->options[$name]);
|
146 |
+
}
|
147 |
+
|
148 |
+
/**#@+
|
149 |
+
* @see \WpOrg\Requests\Session::request()
|
150 |
+
* @param string $url
|
151 |
+
* @param array $headers
|
152 |
+
* @param array $options
|
153 |
+
* @return \WpOrg\Requests\Response
|
154 |
+
*/
|
155 |
+
/**
|
156 |
+
* Send a GET request
|
157 |
+
*/
|
158 |
+
public function get($url, $headers = [], $options = []) {
|
159 |
+
return $this->request($url, $headers, null, Requests::GET, $options);
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Send a HEAD request
|
164 |
+
*/
|
165 |
+
public function head($url, $headers = [], $options = []) {
|
166 |
+
return $this->request($url, $headers, null, Requests::HEAD, $options);
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Send a DELETE request
|
171 |
+
*/
|
172 |
+
public function delete($url, $headers = [], $options = []) {
|
173 |
+
return $this->request($url, $headers, null, Requests::DELETE, $options);
|
174 |
+
}
|
175 |
+
/**#@-*/
|
176 |
+
|
177 |
+
/**#@+
|
178 |
+
* @see \WpOrg\Requests\Session::request()
|
179 |
+
* @param string $url
|
180 |
+
* @param array $headers
|
181 |
+
* @param array $data
|
182 |
+
* @param array $options
|
183 |
+
* @return \WpOrg\Requests\Response
|
184 |
+
*/
|
185 |
+
/**
|
186 |
+
* Send a POST request
|
187 |
+
*/
|
188 |
+
public function post($url, $headers = [], $data = [], $options = []) {
|
189 |
+
return $this->request($url, $headers, $data, Requests::POST, $options);
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Send a PUT request
|
194 |
+
*/
|
195 |
+
public function put($url, $headers = [], $data = [], $options = []) {
|
196 |
+
return $this->request($url, $headers, $data, Requests::PUT, $options);
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Send a PATCH request
|
201 |
+
*
|
202 |
+
* Note: Unlike {@see \WpOrg\Requests\Session::post()} and {@see \WpOrg\Requests\Session::put()},
|
203 |
+
* `$headers` is required, as the specification recommends that should send an ETag
|
204 |
+
*
|
205 |
+
* @link https://tools.ietf.org/html/rfc5789
|
206 |
+
*/
|
207 |
+
public function patch($url, $headers, $data = [], $options = []) {
|
208 |
+
return $this->request($url, $headers, $data, Requests::PATCH, $options);
|
209 |
+
}
|
210 |
+
/**#@-*/
|
211 |
+
|
212 |
+
/**
|
213 |
+
* Main interface for HTTP requests
|
214 |
+
*
|
215 |
+
* This method initiates a request and sends it via a transport before
|
216 |
+
* parsing.
|
217 |
+
*
|
218 |
+
* @see \WpOrg\Requests\Requests::request()
|
219 |
+
*
|
220 |
+
* @param string $url URL to request
|
221 |
+
* @param array $headers Extra headers to send with the request
|
222 |
+
* @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
|
223 |
+
* @param string $type HTTP request type (use \WpOrg\Requests\Requests constants)
|
224 |
+
* @param array $options Options for the request (see {@see \WpOrg\Requests\Requests::request()})
|
225 |
+
* @return \WpOrg\Requests\Response
|
226 |
+
*
|
227 |
+
* @throws \WpOrg\Requests\Exception On invalid URLs (`nonhttp`)
|
228 |
+
*/
|
229 |
+
public function request($url, $headers = [], $data = [], $type = Requests::GET, $options = []) {
|
230 |
+
$request = $this->merge_request(compact('url', 'headers', 'data', 'options'));
|
231 |
+
|
232 |
+
return Requests::request($request['url'], $request['headers'], $request['data'], $type, $request['options']);
|
233 |
+
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Send multiple HTTP requests simultaneously
|
237 |
+
*
|
238 |
+
* @see \WpOrg\Requests\Requests::request_multiple()
|
239 |
+
*
|
240 |
+
* @param array $requests Requests data (see {@see \WpOrg\Requests\Requests::request_multiple()})
|
241 |
+
* @param array $options Global and default options (see {@see \WpOrg\Requests\Requests::request()})
|
242 |
+
* @return array Responses (either \WpOrg\Requests\Response or a \WpOrg\Requests\Exception object)
|
243 |
+
*
|
244 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $requests argument is not an array or iterable object with array access.
|
245 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
246 |
+
*/
|
247 |
+
public function request_multiple($requests, $options = []) {
|
248 |
+
if (InputValidator::has_array_access($requests) === false || InputValidator::is_iterable($requests) === false) {
|
249 |
+
throw InvalidArgument::create(1, '$requests', 'array|ArrayAccess&Traversable', gettype($requests));
|
250 |
+
}
|
251 |
+
|
252 |
+
if (is_array($options) === false) {
|
253 |
+
throw InvalidArgument::create(2, '$options', 'array', gettype($options));
|
254 |
+
}
|
255 |
+
|
256 |
+
foreach ($requests as $key => $request) {
|
257 |
+
$requests[$key] = $this->merge_request($request, false);
|
258 |
+
}
|
259 |
+
|
260 |
+
$options = array_merge($this->options, $options);
|
261 |
+
|
262 |
+
// Disallow forcing the type, as that's a per request setting
|
263 |
+
unset($options['type']);
|
264 |
+
|
265 |
+
return Requests::request_multiple($requests, $options);
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Merge a request's data with the default data
|
270 |
+
*
|
271 |
+
* @param array $request Request data (same form as {@see \WpOrg\Requests\Session::request_multiple()})
|
272 |
+
* @param boolean $merge_options Should we merge options as well?
|
273 |
+
* @return array Request data
|
274 |
+
*/
|
275 |
+
protected function merge_request($request, $merge_options = true) {
|
276 |
+
if ($this->url !== null) {
|
277 |
+
$request['url'] = Iri::absolutize($this->url, $request['url']);
|
278 |
+
$request['url'] = $request['url']->uri;
|
279 |
+
}
|
280 |
+
|
281 |
+
if (empty($request['headers'])) {
|
282 |
+
$request['headers'] = [];
|
283 |
+
}
|
284 |
+
$request['headers'] = array_merge($this->headers, $request['headers']);
|
285 |
+
|
286 |
+
if (empty($request['data'])) {
|
287 |
+
if (is_array($this->data)) {
|
288 |
+
$request['data'] = $this->data;
|
289 |
+
}
|
290 |
+
}
|
291 |
+
elseif (is_array($request['data']) && is_array($this->data)) {
|
292 |
+
$request['data'] = array_merge($this->data, $request['data']);
|
293 |
+
}
|
294 |
+
|
295 |
+
if ($merge_options === true) {
|
296 |
+
$request['options'] = array_merge($this->options, $request['options']);
|
297 |
+
|
298 |
+
// Disallow forcing the type, as that's a per request setting
|
299 |
+
unset($request['options']['type']);
|
300 |
+
}
|
301 |
+
|
302 |
+
return $request;
|
303 |
+
}
|
304 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Ssl.php
ADDED
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* SSL utilities for Requests
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
11 |
+
use WpOrg\Requests\Utility\InputValidator;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* SSL utilities for Requests
|
15 |
+
*
|
16 |
+
* Collection of utilities for working with and verifying SSL certificates.
|
17 |
+
*
|
18 |
+
* @package Requests\Utilities
|
19 |
+
*/
|
20 |
+
final class Ssl {
|
21 |
+
/**
|
22 |
+
* Verify the certificate against common name and subject alternative names
|
23 |
+
*
|
24 |
+
* Unfortunately, PHP doesn't check the certificate against the alternative
|
25 |
+
* names, leading things like 'https://www.github.com/' to be invalid.
|
26 |
+
*
|
27 |
+
* @link https://tools.ietf.org/html/rfc2818#section-3.1 RFC2818, Section 3.1
|
28 |
+
*
|
29 |
+
* @param string|Stringable $host Host name to verify against
|
30 |
+
* @param array $cert Certificate data from openssl_x509_parse()
|
31 |
+
* @return bool
|
32 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $host argument is not a string or a stringable object.
|
33 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $cert argument is not an array or array accessible.
|
34 |
+
*/
|
35 |
+
public static function verify_certificate($host, $cert) {
|
36 |
+
if (InputValidator::is_string_or_stringable($host) === false) {
|
37 |
+
throw InvalidArgument::create(1, '$host', 'string|Stringable', gettype($host));
|
38 |
+
}
|
39 |
+
|
40 |
+
if (InputValidator::has_array_access($cert) === false) {
|
41 |
+
throw InvalidArgument::create(2, '$cert', 'array|ArrayAccess', gettype($cert));
|
42 |
+
}
|
43 |
+
|
44 |
+
$has_dns_alt = false;
|
45 |
+
|
46 |
+
// Check the subjectAltName
|
47 |
+
if (!empty($cert['extensions']['subjectAltName'])) {
|
48 |
+
$altnames = explode(',', $cert['extensions']['subjectAltName']);
|
49 |
+
foreach ($altnames as $altname) {
|
50 |
+
$altname = trim($altname);
|
51 |
+
if (strpos($altname, 'DNS:') !== 0) {
|
52 |
+
continue;
|
53 |
+
}
|
54 |
+
|
55 |
+
$has_dns_alt = true;
|
56 |
+
|
57 |
+
// Strip the 'DNS:' prefix and trim whitespace
|
58 |
+
$altname = trim(substr($altname, 4));
|
59 |
+
|
60 |
+
// Check for a match
|
61 |
+
if (self::match_domain($host, $altname) === true) {
|
62 |
+
return true;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
if ($has_dns_alt === true) {
|
67 |
+
return false;
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
// Fall back to checking the common name if we didn't get any dNSName
|
72 |
+
// alt names, as per RFC2818
|
73 |
+
if (!empty($cert['subject']['CN'])) {
|
74 |
+
// Check for a match
|
75 |
+
return (self::match_domain($host, $cert['subject']['CN']) === true);
|
76 |
+
}
|
77 |
+
|
78 |
+
return false;
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Verify that a reference name is valid
|
83 |
+
*
|
84 |
+
* Verifies a dNSName for HTTPS usage, (almost) as per Firefox's rules:
|
85 |
+
* - Wildcards can only occur in a name with more than 3 components
|
86 |
+
* - Wildcards can only occur as the last character in the first
|
87 |
+
* component
|
88 |
+
* - Wildcards may be preceded by additional characters
|
89 |
+
*
|
90 |
+
* We modify these rules to be a bit stricter and only allow the wildcard
|
91 |
+
* character to be the full first component; that is, with the exclusion of
|
92 |
+
* the third rule.
|
93 |
+
*
|
94 |
+
* @param string|Stringable $reference Reference dNSName
|
95 |
+
* @return boolean Is the name valid?
|
96 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string or a stringable object.
|
97 |
+
*/
|
98 |
+
public static function verify_reference_name($reference) {
|
99 |
+
if (InputValidator::is_string_or_stringable($reference) === false) {
|
100 |
+
throw InvalidArgument::create(1, '$reference', 'string|Stringable', gettype($reference));
|
101 |
+
}
|
102 |
+
|
103 |
+
if ($reference === '') {
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
|
107 |
+
if (preg_match('`\s`', $reference) > 0) {
|
108 |
+
// Whitespace detected. This can never be a dNSName.
|
109 |
+
return false;
|
110 |
+
}
|
111 |
+
|
112 |
+
$parts = explode('.', $reference);
|
113 |
+
if ($parts !== array_filter($parts)) {
|
114 |
+
// DNSName cannot contain two dots next to each other.
|
115 |
+
return false;
|
116 |
+
}
|
117 |
+
|
118 |
+
// Check the first part of the name
|
119 |
+
$first = array_shift($parts);
|
120 |
+
|
121 |
+
if (strpos($first, '*') !== false) {
|
122 |
+
// Check that the wildcard is the full part
|
123 |
+
if ($first !== '*') {
|
124 |
+
return false;
|
125 |
+
}
|
126 |
+
|
127 |
+
// Check that we have at least 3 components (including first)
|
128 |
+
if (count($parts) < 2) {
|
129 |
+
return false;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
// Check the remaining parts
|
134 |
+
foreach ($parts as $part) {
|
135 |
+
if (strpos($part, '*') !== false) {
|
136 |
+
return false;
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
// Nothing found, verified!
|
141 |
+
return true;
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Match a hostname against a dNSName reference
|
146 |
+
*
|
147 |
+
* @param string|Stringable $host Requested host
|
148 |
+
* @param string|Stringable $reference dNSName to match against
|
149 |
+
* @return boolean Does the domain match?
|
150 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When either of the passed arguments is not a string or a stringable object.
|
151 |
+
*/
|
152 |
+
public static function match_domain($host, $reference) {
|
153 |
+
if (InputValidator::is_string_or_stringable($host) === false) {
|
154 |
+
throw InvalidArgument::create(1, '$host', 'string|Stringable', gettype($host));
|
155 |
+
}
|
156 |
+
|
157 |
+
// Check if the reference is blocklisted first
|
158 |
+
if (self::verify_reference_name($reference) !== true) {
|
159 |
+
return false;
|
160 |
+
}
|
161 |
+
|
162 |
+
// Check for a direct match
|
163 |
+
if ((string) $host === (string) $reference) {
|
164 |
+
return true;
|
165 |
+
}
|
166 |
+
|
167 |
+
// Calculate the valid wildcard match if the host is not an IP address
|
168 |
+
// Also validates that the host has 3 parts or more, as per Firefox's ruleset,
|
169 |
+
// as a wildcard reference is only allowed with 3 parts or more, so the
|
170 |
+
// comparison will never match if host doesn't contain 3 parts or more as well.
|
171 |
+
if (ip2long($host) === false) {
|
172 |
+
$parts = explode('.', $host);
|
173 |
+
$parts[0] = '*';
|
174 |
+
$wildcard = implode('.', $parts);
|
175 |
+
if ($wildcard === (string) $reference) {
|
176 |
+
return true;
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
return false;
|
181 |
+
}
|
182 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Transport.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Base HTTP transport
|
4 |
+
*
|
5 |
+
* @package Requests\Transport
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Base HTTP transport
|
12 |
+
*
|
13 |
+
* @package Requests\Transport
|
14 |
+
*/
|
15 |
+
interface Transport {
|
16 |
+
/**
|
17 |
+
* Perform a request
|
18 |
+
*
|
19 |
+
* @param string $url URL to request
|
20 |
+
* @param array $headers Associative array of request headers
|
21 |
+
* @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
|
22 |
+
* @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
23 |
+
* @return string Raw HTTP result
|
24 |
+
*/
|
25 |
+
public function request($url, $headers = [], $data = [], $options = []);
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Send multiple requests simultaneously
|
29 |
+
*
|
30 |
+
* @param array $requests Request data (array of 'url', 'headers', 'data', 'options') as per {@see \WpOrg\Requests\Transport::request()}
|
31 |
+
* @param array $options Global options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
32 |
+
* @return array Array of \WpOrg\Requests\Response objects (may contain \WpOrg\Requests\Exception or string responses as well)
|
33 |
+
*/
|
34 |
+
public function request_multiple($requests, $options);
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Self-test whether the transport can be used.
|
38 |
+
*
|
39 |
+
* The available capabilities to test for can be found in {@see \WpOrg\Requests\Capability}.
|
40 |
+
*
|
41 |
+
* @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
|
42 |
+
* @return bool Whether the transport can be used.
|
43 |
+
*/
|
44 |
+
public static function test($capabilities = []);
|
45 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Transport/Curl.php
ADDED
@@ -0,0 +1,641 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* cURL HTTP transport
|
4 |
+
*
|
5 |
+
* @package Requests\Transport
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Transport;
|
9 |
+
|
10 |
+
use RecursiveArrayIterator;
|
11 |
+
use RecursiveIteratorIterator;
|
12 |
+
use WpOrg\Requests\Capability;
|
13 |
+
use WpOrg\Requests\Exception;
|
14 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
15 |
+
use WpOrg\Requests\Exception\Transport\Curl as CurlException;
|
16 |
+
use WpOrg\Requests\Requests;
|
17 |
+
use WpOrg\Requests\Transport;
|
18 |
+
use WpOrg\Requests\Utility\InputValidator;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* cURL HTTP transport
|
22 |
+
*
|
23 |
+
* @package Requests\Transport
|
24 |
+
*/
|
25 |
+
final class Curl implements Transport {
|
26 |
+
const CURL_7_10_5 = 0x070A05;
|
27 |
+
const CURL_7_16_2 = 0x071002;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Raw HTTP data
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
public $headers = '';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Raw body data
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
+
*/
|
41 |
+
public $response_data = '';
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Information on the current request
|
45 |
+
*
|
46 |
+
* @var array cURL information array, see {@link https://www.php.net/curl_getinfo}
|
47 |
+
*/
|
48 |
+
public $info;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* cURL version number
|
52 |
+
*
|
53 |
+
* @var int
|
54 |
+
*/
|
55 |
+
public $version;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* cURL handle
|
59 |
+
*
|
60 |
+
* @var resource|\CurlHandle Resource in PHP < 8.0, Instance of CurlHandle in PHP >= 8.0.
|
61 |
+
*/
|
62 |
+
private $handle;
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Hook dispatcher instance
|
66 |
+
*
|
67 |
+
* @var \WpOrg\Requests\Hooks
|
68 |
+
*/
|
69 |
+
private $hooks;
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Have we finished the headers yet?
|
73 |
+
*
|
74 |
+
* @var boolean
|
75 |
+
*/
|
76 |
+
private $done_headers = false;
|
77 |
+
|
78 |
+
/**
|
79 |
+
* If streaming to a file, keep the file pointer
|
80 |
+
*
|
81 |
+
* @var resource
|
82 |
+
*/
|
83 |
+
private $stream_handle;
|
84 |
+
|
85 |
+
/**
|
86 |
+
* How many bytes are in the response body?
|
87 |
+
*
|
88 |
+
* @var int
|
89 |
+
*/
|
90 |
+
private $response_bytes;
|
91 |
+
|
92 |
+
/**
|
93 |
+
* What's the maximum number of bytes we should keep?
|
94 |
+
*
|
95 |
+
* @var int|bool Byte count, or false if no limit.
|
96 |
+
*/
|
97 |
+
private $response_byte_limit;
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Constructor
|
101 |
+
*/
|
102 |
+
public function __construct() {
|
103 |
+
$curl = curl_version();
|
104 |
+
$this->version = $curl['version_number'];
|
105 |
+
$this->handle = curl_init();
|
106 |
+
|
107 |
+
curl_setopt($this->handle, CURLOPT_HEADER, false);
|
108 |
+
curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, 1);
|
109 |
+
if ($this->version >= self::CURL_7_10_5) {
|
110 |
+
curl_setopt($this->handle, CURLOPT_ENCODING, '');
|
111 |
+
}
|
112 |
+
if (defined('CURLOPT_PROTOCOLS')) {
|
113 |
+
// phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_protocolsFound
|
114 |
+
curl_setopt($this->handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
|
115 |
+
}
|
116 |
+
if (defined('CURLOPT_REDIR_PROTOCOLS')) {
|
117 |
+
// phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_redir_protocolsFound
|
118 |
+
curl_setopt($this->handle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Destructor
|
124 |
+
*/
|
125 |
+
public function __destruct() {
|
126 |
+
if (is_resource($this->handle)) {
|
127 |
+
curl_close($this->handle);
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Perform a request
|
133 |
+
*
|
134 |
+
* @param string|Stringable $url URL to request
|
135 |
+
* @param array $headers Associative array of request headers
|
136 |
+
* @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
|
137 |
+
* @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
138 |
+
* @return string Raw HTTP result
|
139 |
+
*
|
140 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string or Stringable.
|
141 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $headers argument is not an array.
|
142 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $data parameter is not an array or string.
|
143 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
144 |
+
* @throws \WpOrg\Requests\Exception On a cURL error (`curlerror`)
|
145 |
+
*/
|
146 |
+
public function request($url, $headers = [], $data = [], $options = []) {
|
147 |
+
if (InputValidator::is_string_or_stringable($url) === false) {
|
148 |
+
throw InvalidArgument::create(1, '$url', 'string|Stringable', gettype($url));
|
149 |
+
}
|
150 |
+
|
151 |
+
if (is_array($headers) === false) {
|
152 |
+
throw InvalidArgument::create(2, '$headers', 'array', gettype($headers));
|
153 |
+
}
|
154 |
+
|
155 |
+
if (!is_array($data) && !is_string($data)) {
|
156 |
+
if ($data === null) {
|
157 |
+
$data = '';
|
158 |
+
} else {
|
159 |
+
throw InvalidArgument::create(3, '$data', 'array|string', gettype($data));
|
160 |
+
}
|
161 |
+
}
|
162 |
+
|
163 |
+
if (is_array($options) === false) {
|
164 |
+
throw InvalidArgument::create(4, '$options', 'array', gettype($options));
|
165 |
+
}
|
166 |
+
|
167 |
+
$this->hooks = $options['hooks'];
|
168 |
+
|
169 |
+
$this->setup_handle($url, $headers, $data, $options);
|
170 |
+
|
171 |
+
$options['hooks']->dispatch('curl.before_send', [&$this->handle]);
|
172 |
+
|
173 |
+
if ($options['filename'] !== false) {
|
174 |
+
// phpcs:ignore WordPress.PHP.NoSilencedErrors -- Silenced the PHP native warning in favour of throwing an exception.
|
175 |
+
$this->stream_handle = @fopen($options['filename'], 'wb');
|
176 |
+
if ($this->stream_handle === false) {
|
177 |
+
$error = error_get_last();
|
178 |
+
throw new Exception($error['message'], 'fopen');
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
$this->response_data = '';
|
183 |
+
$this->response_bytes = 0;
|
184 |
+
$this->response_byte_limit = false;
|
185 |
+
if ($options['max_bytes'] !== false) {
|
186 |
+
$this->response_byte_limit = $options['max_bytes'];
|
187 |
+
}
|
188 |
+
|
189 |
+
if (isset($options['verify'])) {
|
190 |
+
if ($options['verify'] === false) {
|
191 |
+
curl_setopt($this->handle, CURLOPT_SSL_VERIFYHOST, 0);
|
192 |
+
curl_setopt($this->handle, CURLOPT_SSL_VERIFYPEER, 0);
|
193 |
+
}
|
194 |
+
elseif (is_string($options['verify'])) {
|
195 |
+
curl_setopt($this->handle, CURLOPT_CAINFO, $options['verify']);
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
+
if (isset($options['verifyname']) && $options['verifyname'] === false) {
|
200 |
+
curl_setopt($this->handle, CURLOPT_SSL_VERIFYHOST, 0);
|
201 |
+
}
|
202 |
+
|
203 |
+
curl_exec($this->handle);
|
204 |
+
$response = $this->response_data;
|
205 |
+
|
206 |
+
$options['hooks']->dispatch('curl.after_send', []);
|
207 |
+
|
208 |
+
if (curl_errno($this->handle) === CURLE_WRITE_ERROR || curl_errno($this->handle) === CURLE_BAD_CONTENT_ENCODING) {
|
209 |
+
// Reset encoding and try again
|
210 |
+
curl_setopt($this->handle, CURLOPT_ENCODING, 'none');
|
211 |
+
|
212 |
+
$this->response_data = '';
|
213 |
+
$this->response_bytes = 0;
|
214 |
+
curl_exec($this->handle);
|
215 |
+
$response = $this->response_data;
|
216 |
+
}
|
217 |
+
|
218 |
+
$this->process_response($response, $options);
|
219 |
+
|
220 |
+
// Need to remove the $this reference from the curl handle.
|
221 |
+
// Otherwise \WpOrg\Requests\Transport\Curl won't be garbage collected and the curl_close() will never be called.
|
222 |
+
curl_setopt($this->handle, CURLOPT_HEADERFUNCTION, null);
|
223 |
+
curl_setopt($this->handle, CURLOPT_WRITEFUNCTION, null);
|
224 |
+
|
225 |
+
return $this->headers;
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Send multiple requests simultaneously
|
230 |
+
*
|
231 |
+
* @param array $requests Request data
|
232 |
+
* @param array $options Global options
|
233 |
+
* @return array Array of \WpOrg\Requests\Response objects (may contain \WpOrg\Requests\Exception or string responses as well)
|
234 |
+
*
|
235 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $requests argument is not an array or iterable object with array access.
|
236 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
237 |
+
*/
|
238 |
+
public function request_multiple($requests, $options) {
|
239 |
+
// If you're not requesting, we can't get any responses ¯\_(ツ)_/¯
|
240 |
+
if (empty($requests)) {
|
241 |
+
return [];
|
242 |
+
}
|
243 |
+
|
244 |
+
if (InputValidator::has_array_access($requests) === false || InputValidator::is_iterable($requests) === false) {
|
245 |
+
throw InvalidArgument::create(1, '$requests', 'array|ArrayAccess&Traversable', gettype($requests));
|
246 |
+
}
|
247 |
+
|
248 |
+
if (is_array($options) === false) {
|
249 |
+
throw InvalidArgument::create(2, '$options', 'array', gettype($options));
|
250 |
+
}
|
251 |
+
|
252 |
+
$multihandle = curl_multi_init();
|
253 |
+
$subrequests = [];
|
254 |
+
$subhandles = [];
|
255 |
+
|
256 |
+
$class = get_class($this);
|
257 |
+
foreach ($requests as $id => $request) {
|
258 |
+
$subrequests[$id] = new $class();
|
259 |
+
$subhandles[$id] = $subrequests[$id]->get_subrequest_handle($request['url'], $request['headers'], $request['data'], $request['options']);
|
260 |
+
$request['options']['hooks']->dispatch('curl.before_multi_add', [&$subhandles[$id]]);
|
261 |
+
curl_multi_add_handle($multihandle, $subhandles[$id]);
|
262 |
+
}
|
263 |
+
|
264 |
+
$completed = 0;
|
265 |
+
$responses = [];
|
266 |
+
$subrequestcount = count($subrequests);
|
267 |
+
|
268 |
+
$request['options']['hooks']->dispatch('curl.before_multi_exec', [&$multihandle]);
|
269 |
+
|
270 |
+
do {
|
271 |
+
$active = 0;
|
272 |
+
|
273 |
+
do {
|
274 |
+
$status = curl_multi_exec($multihandle, $active);
|
275 |
+
}
|
276 |
+
while ($status === CURLM_CALL_MULTI_PERFORM);
|
277 |
+
|
278 |
+
$to_process = [];
|
279 |
+
|
280 |
+
// Read the information as needed
|
281 |
+
while ($done = curl_multi_info_read($multihandle)) {
|
282 |
+
$key = array_search($done['handle'], $subhandles, true);
|
283 |
+
if (!isset($to_process[$key])) {
|
284 |
+
$to_process[$key] = $done;
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
// Parse the finished requests before we start getting the new ones
|
289 |
+
foreach ($to_process as $key => $done) {
|
290 |
+
$options = $requests[$key]['options'];
|
291 |
+
if ($done['result'] !== CURLE_OK) {
|
292 |
+
//get error string for handle.
|
293 |
+
$reason = curl_error($done['handle']);
|
294 |
+
$exception = new CurlException(
|
295 |
+
$reason,
|
296 |
+
CurlException::EASY,
|
297 |
+
$done['handle'],
|
298 |
+
$done['result']
|
299 |
+
);
|
300 |
+
$responses[$key] = $exception;
|
301 |
+
$options['hooks']->dispatch('transport.internal.parse_error', [&$responses[$key], $requests[$key]]);
|
302 |
+
}
|
303 |
+
else {
|
304 |
+
$responses[$key] = $subrequests[$key]->process_response($subrequests[$key]->response_data, $options);
|
305 |
+
|
306 |
+
$options['hooks']->dispatch('transport.internal.parse_response', [&$responses[$key], $requests[$key]]);
|
307 |
+
}
|
308 |
+
|
309 |
+
curl_multi_remove_handle($multihandle, $done['handle']);
|
310 |
+
curl_close($done['handle']);
|
311 |
+
|
312 |
+
if (!is_string($responses[$key])) {
|
313 |
+
$options['hooks']->dispatch('multiple.request.complete', [&$responses[$key], $key]);
|
314 |
+
}
|
315 |
+
$completed++;
|
316 |
+
}
|
317 |
+
}
|
318 |
+
while ($active || $completed < $subrequestcount);
|
319 |
+
|
320 |
+
$request['options']['hooks']->dispatch('curl.after_multi_exec', [&$multihandle]);
|
321 |
+
|
322 |
+
curl_multi_close($multihandle);
|
323 |
+
|
324 |
+
return $responses;
|
325 |
+
}
|
326 |
+
|
327 |
+
/**
|
328 |
+
* Get the cURL handle for use in a multi-request
|
329 |
+
*
|
330 |
+
* @param string $url URL to request
|
331 |
+
* @param array $headers Associative array of request headers
|
332 |
+
* @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
|
333 |
+
* @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
334 |
+
* @return resource|\CurlHandle Subrequest's cURL handle
|
335 |
+
*/
|
336 |
+
public function &get_subrequest_handle($url, $headers, $data, $options) {
|
337 |
+
$this->setup_handle($url, $headers, $data, $options);
|
338 |
+
|
339 |
+
if ($options['filename'] !== false) {
|
340 |
+
$this->stream_handle = fopen($options['filename'], 'wb');
|
341 |
+
}
|
342 |
+
|
343 |
+
$this->response_data = '';
|
344 |
+
$this->response_bytes = 0;
|
345 |
+
$this->response_byte_limit = false;
|
346 |
+
if ($options['max_bytes'] !== false) {
|
347 |
+
$this->response_byte_limit = $options['max_bytes'];
|
348 |
+
}
|
349 |
+
$this->hooks = $options['hooks'];
|
350 |
+
|
351 |
+
return $this->handle;
|
352 |
+
}
|
353 |
+
|
354 |
+
/**
|
355 |
+
* Setup the cURL handle for the given data
|
356 |
+
*
|
357 |
+
* @param string $url URL to request
|
358 |
+
* @param array $headers Associative array of request headers
|
359 |
+
* @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
|
360 |
+
* @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
361 |
+
*/
|
362 |
+
private function setup_handle($url, $headers, $data, $options) {
|
363 |
+
$options['hooks']->dispatch('curl.before_request', [&$this->handle]);
|
364 |
+
|
365 |
+
// Force closing the connection for old versions of cURL (<7.22).
|
366 |
+
if (!isset($headers['Connection'])) {
|
367 |
+
$headers['Connection'] = 'close';
|
368 |
+
}
|
369 |
+
|
370 |
+
/**
|
371 |
+
* Add "Expect" header.
|
372 |
+
*
|
373 |
+
* By default, cURL adds a "Expect: 100-Continue" to most requests. This header can
|
374 |
+
* add as much as a second to the time it takes for cURL to perform a request. To
|
375 |
+
* prevent this, we need to set an empty "Expect" header. To match the behaviour of
|
376 |
+
* Guzzle, we'll add the empty header to requests that are smaller than 1 MB and use
|
377 |
+
* HTTP/1.1.
|
378 |
+
*
|
379 |
+
* https://curl.se/mail/lib-2017-07/0013.html
|
380 |
+
*/
|
381 |
+
if (!isset($headers['Expect']) && $options['protocol_version'] === 1.1) {
|
382 |
+
$headers['Expect'] = $this->get_expect_header($data);
|
383 |
+
}
|
384 |
+
|
385 |
+
$headers = Requests::flatten($headers);
|
386 |
+
|
387 |
+
if (!empty($data)) {
|
388 |
+
$data_format = $options['data_format'];
|
389 |
+
|
390 |
+
if ($data_format === 'query') {
|
391 |
+
$url = self::format_get($url, $data);
|
392 |
+
$data = '';
|
393 |
+
}
|
394 |
+
elseif (!is_string($data)) {
|
395 |
+
$data = http_build_query($data, '', '&');
|
396 |
+
}
|
397 |
+
}
|
398 |
+
|
399 |
+
switch ($options['type']) {
|
400 |
+
case Requests::POST:
|
401 |
+
curl_setopt($this->handle, CURLOPT_POST, true);
|
402 |
+
curl_setopt($this->handle, CURLOPT_POSTFIELDS, $data);
|
403 |
+
break;
|
404 |
+
case Requests::HEAD:
|
405 |
+
curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']);
|
406 |
+
curl_setopt($this->handle, CURLOPT_NOBODY, true);
|
407 |
+
break;
|
408 |
+
case Requests::TRACE:
|
409 |
+
curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']);
|
410 |
+
break;
|
411 |
+
case Requests::PATCH:
|
412 |
+
case Requests::PUT:
|
413 |
+
case Requests::DELETE:
|
414 |
+
case Requests::OPTIONS:
|
415 |
+
default:
|
416 |
+
curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']);
|
417 |
+
if (!empty($data)) {
|
418 |
+
curl_setopt($this->handle, CURLOPT_POSTFIELDS, $data);
|
419 |
+
}
|
420 |
+
}
|
421 |
+
|
422 |
+
// cURL requires a minimum timeout of 1 second when using the system
|
423 |
+
// DNS resolver, as it uses `alarm()`, which is second resolution only.
|
424 |
+
// There's no way to detect which DNS resolver is being used from our
|
425 |
+
// end, so we need to round up regardless of the supplied timeout.
|
426 |
+
//
|
427 |
+
// https://github.com/curl/curl/blob/4f45240bc84a9aa648c8f7243be7b79e9f9323a5/lib/hostip.c#L606-L609
|
428 |
+
$timeout = max($options['timeout'], 1);
|
429 |
+
|
430 |
+
if (is_int($timeout) || $this->version < self::CURL_7_16_2) {
|
431 |
+
curl_setopt($this->handle, CURLOPT_TIMEOUT, ceil($timeout));
|
432 |
+
}
|
433 |
+
else {
|
434 |
+
// phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_timeout_msFound
|
435 |
+
curl_setopt($this->handle, CURLOPT_TIMEOUT_MS, round($timeout * 1000));
|
436 |
+
}
|
437 |
+
|
438 |
+
if (is_int($options['connect_timeout']) || $this->version < self::CURL_7_16_2) {
|
439 |
+
curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT, ceil($options['connect_timeout']));
|
440 |
+
}
|
441 |
+
else {
|
442 |
+
// phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_connecttimeout_msFound
|
443 |
+
curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT_MS, round($options['connect_timeout'] * 1000));
|
444 |
+
}
|
445 |
+
curl_setopt($this->handle, CURLOPT_URL, $url);
|
446 |
+
curl_setopt($this->handle, CURLOPT_USERAGENT, $options['useragent']);
|
447 |
+
if (!empty($headers)) {
|
448 |
+
curl_setopt($this->handle, CURLOPT_HTTPHEADER, $headers);
|
449 |
+
}
|
450 |
+
if ($options['protocol_version'] === 1.1) {
|
451 |
+
curl_setopt($this->handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
452 |
+
}
|
453 |
+
else {
|
454 |
+
curl_setopt($this->handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
455 |
+
}
|
456 |
+
|
457 |
+
if ($options['blocking'] === true) {
|
458 |
+
curl_setopt($this->handle, CURLOPT_HEADERFUNCTION, [$this, 'stream_headers']);
|
459 |
+
curl_setopt($this->handle, CURLOPT_WRITEFUNCTION, [$this, 'stream_body']);
|
460 |
+
curl_setopt($this->handle, CURLOPT_BUFFERSIZE, Requests::BUFFER_SIZE);
|
461 |
+
}
|
462 |
+
}
|
463 |
+
|
464 |
+
/**
|
465 |
+
* Process a response
|
466 |
+
*
|
467 |
+
* @param string $response Response data from the body
|
468 |
+
* @param array $options Request options
|
469 |
+
* @return string|false HTTP response data including headers. False if non-blocking.
|
470 |
+
* @throws \WpOrg\Requests\Exception
|
471 |
+
*/
|
472 |
+
public function process_response($response, $options) {
|
473 |
+
if ($options['blocking'] === false) {
|
474 |
+
$fake_headers = '';
|
475 |
+
$options['hooks']->dispatch('curl.after_request', [&$fake_headers]);
|
476 |
+
return false;
|
477 |
+
}
|
478 |
+
if ($options['filename'] !== false && $this->stream_handle) {
|
479 |
+
fclose($this->stream_handle);
|
480 |
+
$this->headers = trim($this->headers);
|
481 |
+
}
|
482 |
+
else {
|
483 |
+
$this->headers .= $response;
|
484 |
+
}
|
485 |
+
|
486 |
+
if (curl_errno($this->handle)) {
|
487 |
+
$error = sprintf(
|
488 |
+
'cURL error %s: %s',
|
489 |
+
curl_errno($this->handle),
|
490 |
+
curl_error($this->handle)
|
491 |
+
);
|
492 |
+
throw new Exception($error, 'curlerror', $this->handle);
|
493 |
+
}
|
494 |
+
$this->info = curl_getinfo($this->handle);
|
495 |
+
|
496 |
+
$options['hooks']->dispatch('curl.after_request', [&$this->headers, &$this->info]);
|
497 |
+
return $this->headers;
|
498 |
+
}
|
499 |
+
|
500 |
+
/**
|
501 |
+
* Collect the headers as they are received
|
502 |
+
*
|
503 |
+
* @param resource|\CurlHandle $handle cURL handle
|
504 |
+
* @param string $headers Header string
|
505 |
+
* @return integer Length of provided header
|
506 |
+
*/
|
507 |
+
public function stream_headers($handle, $headers) {
|
508 |
+
// Why do we do this? cURL will send both the final response and any
|
509 |
+
// interim responses, such as a 100 Continue. We don't need that.
|
510 |
+
// (We may want to keep this somewhere just in case)
|
511 |
+
if ($this->done_headers) {
|
512 |
+
$this->headers = '';
|
513 |
+
$this->done_headers = false;
|
514 |
+
}
|
515 |
+
$this->headers .= $headers;
|
516 |
+
|
517 |
+
if ($headers === "\r\n") {
|
518 |
+
$this->done_headers = true;
|
519 |
+
}
|
520 |
+
return strlen($headers);
|
521 |
+
}
|
522 |
+
|
523 |
+
/**
|
524 |
+
* Collect data as it's received
|
525 |
+
*
|
526 |
+
* @since 1.6.1
|
527 |
+
*
|
528 |
+
* @param resource|\CurlHandle $handle cURL handle
|
529 |
+
* @param string $data Body data
|
530 |
+
* @return integer Length of provided data
|
531 |
+
*/
|
532 |
+
public function stream_body($handle, $data) {
|
533 |
+
$this->hooks->dispatch('request.progress', [$data, $this->response_bytes, $this->response_byte_limit]);
|
534 |
+
$data_length = strlen($data);
|
535 |
+
|
536 |
+
// Are we limiting the response size?
|
537 |
+
if ($this->response_byte_limit) {
|
538 |
+
if ($this->response_bytes === $this->response_byte_limit) {
|
539 |
+
// Already at maximum, move on
|
540 |
+
return $data_length;
|
541 |
+
}
|
542 |
+
|
543 |
+
if (($this->response_bytes + $data_length) > $this->response_byte_limit) {
|
544 |
+
// Limit the length
|
545 |
+
$limited_length = ($this->response_byte_limit - $this->response_bytes);
|
546 |
+
$data = substr($data, 0, $limited_length);
|
547 |
+
}
|
548 |
+
}
|
549 |
+
|
550 |
+
if ($this->stream_handle) {
|
551 |
+
fwrite($this->stream_handle, $data);
|
552 |
+
}
|
553 |
+
else {
|
554 |
+
$this->response_data .= $data;
|
555 |
+
}
|
556 |
+
|
557 |
+
$this->response_bytes += strlen($data);
|
558 |
+
return $data_length;
|
559 |
+
}
|
560 |
+
|
561 |
+
/**
|
562 |
+
* Format a URL given GET data
|
563 |
+
*
|
564 |
+
* @param string $url
|
565 |
+
* @param array|object $data Data to build query using, see {@link https://www.php.net/http_build_query}
|
566 |
+
* @return string URL with data
|
567 |
+
*/
|
568 |
+
private static function format_get($url, $data) {
|
569 |
+
if (!empty($data)) {
|
570 |
+
$query = '';
|
571 |
+
$url_parts = parse_url($url);
|
572 |
+
if (empty($url_parts['query'])) {
|
573 |
+
$url_parts['query'] = '';
|
574 |
+
}
|
575 |
+
else {
|
576 |
+
$query = $url_parts['query'];
|
577 |
+
}
|
578 |
+
|
579 |
+
$query .= '&' . http_build_query($data, '', '&');
|
580 |
+
$query = trim($query, '&');
|
581 |
+
|
582 |
+
if (empty($url_parts['query'])) {
|
583 |
+
$url .= '?' . $query;
|
584 |
+
}
|
585 |
+
else {
|
586 |
+
$url = str_replace($url_parts['query'], $query, $url);
|
587 |
+
}
|
588 |
+
}
|
589 |
+
return $url;
|
590 |
+
}
|
591 |
+
|
592 |
+
/**
|
593 |
+
* Self-test whether the transport can be used.
|
594 |
+
*
|
595 |
+
* The available capabilities to test for can be found in {@see \WpOrg\Requests\Capability}.
|
596 |
+
*
|
597 |
+
* @codeCoverageIgnore
|
598 |
+
* @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
|
599 |
+
* @return bool Whether the transport can be used.
|
600 |
+
*/
|
601 |
+
public static function test($capabilities = []) {
|
602 |
+
if (!function_exists('curl_init') || !function_exists('curl_exec')) {
|
603 |
+
return false;
|
604 |
+
}
|
605 |
+
|
606 |
+
// If needed, check that our installed curl version supports SSL
|
607 |
+
if (isset($capabilities[Capability::SSL]) && $capabilities[Capability::SSL]) {
|
608 |
+
$curl_version = curl_version();
|
609 |
+
if (!(CURL_VERSION_SSL & $curl_version['features'])) {
|
610 |
+
return false;
|
611 |
+
}
|
612 |
+
}
|
613 |
+
|
614 |
+
return true;
|
615 |
+
}
|
616 |
+
|
617 |
+
/**
|
618 |
+
* Get the correct "Expect" header for the given request data.
|
619 |
+
*
|
620 |
+
* @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD.
|
621 |
+
* @return string The "Expect" header.
|
622 |
+
*/
|
623 |
+
private function get_expect_header($data) {
|
624 |
+
if (!is_array($data)) {
|
625 |
+
return strlen((string) $data) >= 1048576 ? '100-Continue' : '';
|
626 |
+
}
|
627 |
+
|
628 |
+
$bytesize = 0;
|
629 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
|
630 |
+
|
631 |
+
foreach ($iterator as $datum) {
|
632 |
+
$bytesize += strlen((string) $datum);
|
633 |
+
|
634 |
+
if ($bytesize >= 1048576) {
|
635 |
+
return '100-Continue';
|
636 |
+
}
|
637 |
+
}
|
638 |
+
|
639 |
+
return '';
|
640 |
+
}
|
641 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Transport/Fsockopen.php
ADDED
@@ -0,0 +1,506 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* fsockopen HTTP transport
|
4 |
+
*
|
5 |
+
* @package Requests\Transport
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Transport;
|
9 |
+
|
10 |
+
use WpOrg\Requests\Capability;
|
11 |
+
use WpOrg\Requests\Exception;
|
12 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
13 |
+
use WpOrg\Requests\Port;
|
14 |
+
use WpOrg\Requests\Requests;
|
15 |
+
use WpOrg\Requests\Ssl;
|
16 |
+
use WpOrg\Requests\Transport;
|
17 |
+
use WpOrg\Requests\Utility\CaseInsensitiveDictionary;
|
18 |
+
use WpOrg\Requests\Utility\InputValidator;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* fsockopen HTTP transport
|
22 |
+
*
|
23 |
+
* @package Requests\Transport
|
24 |
+
*/
|
25 |
+
final class Fsockopen implements Transport {
|
26 |
+
/**
|
27 |
+
* Second to microsecond conversion
|
28 |
+
*
|
29 |
+
* @var integer
|
30 |
+
*/
|
31 |
+
const SECOND_IN_MICROSECONDS = 1000000;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Raw HTTP data
|
35 |
+
*
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
public $headers = '';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Stream metadata
|
42 |
+
*
|
43 |
+
* @var array Associative array of properties, see {@link https://www.php.net/stream_get_meta_data}
|
44 |
+
*/
|
45 |
+
public $info;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* What's the maximum number of bytes we should keep?
|
49 |
+
*
|
50 |
+
* @var int|bool Byte count, or false if no limit.
|
51 |
+
*/
|
52 |
+
private $max_bytes = false;
|
53 |
+
|
54 |
+
private $connect_error = '';
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Perform a request
|
58 |
+
*
|
59 |
+
* @param string|Stringable $url URL to request
|
60 |
+
* @param array $headers Associative array of request headers
|
61 |
+
* @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
|
62 |
+
* @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
63 |
+
* @return string Raw HTTP result
|
64 |
+
*
|
65 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string or Stringable.
|
66 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $headers argument is not an array.
|
67 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $data parameter is not an array or string.
|
68 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
69 |
+
* @throws \WpOrg\Requests\Exception On failure to connect to socket (`fsockopenerror`)
|
70 |
+
* @throws \WpOrg\Requests\Exception On socket timeout (`timeout`)
|
71 |
+
*/
|
72 |
+
public function request($url, $headers = [], $data = [], $options = []) {
|
73 |
+
if (InputValidator::is_string_or_stringable($url) === false) {
|
74 |
+
throw InvalidArgument::create(1, '$url', 'string|Stringable', gettype($url));
|
75 |
+
}
|
76 |
+
|
77 |
+
if (is_array($headers) === false) {
|
78 |
+
throw InvalidArgument::create(2, '$headers', 'array', gettype($headers));
|
79 |
+
}
|
80 |
+
|
81 |
+
if (!is_array($data) && !is_string($data)) {
|
82 |
+
if ($data === null) {
|
83 |
+
$data = '';
|
84 |
+
} else {
|
85 |
+
throw InvalidArgument::create(3, '$data', 'array|string', gettype($data));
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
if (is_array($options) === false) {
|
90 |
+
throw InvalidArgument::create(4, '$options', 'array', gettype($options));
|
91 |
+
}
|
92 |
+
|
93 |
+
$options['hooks']->dispatch('fsockopen.before_request');
|
94 |
+
|
95 |
+
$url_parts = parse_url($url);
|
96 |
+
if (empty($url_parts)) {
|
97 |
+
throw new Exception('Invalid URL.', 'invalidurl', $url);
|
98 |
+
}
|
99 |
+
$host = $url_parts['host'];
|
100 |
+
$context = stream_context_create();
|
101 |
+
$verifyname = false;
|
102 |
+
$case_insensitive_headers = new CaseInsensitiveDictionary($headers);
|
103 |
+
|
104 |
+
// HTTPS support
|
105 |
+
if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https') {
|
106 |
+
$remote_socket = 'ssl://' . $host;
|
107 |
+
if (!isset($url_parts['port'])) {
|
108 |
+
$url_parts['port'] = Port::HTTPS;
|
109 |
+
}
|
110 |
+
|
111 |
+
$context_options = [
|
112 |
+
'verify_peer' => true,
|
113 |
+
'capture_peer_cert' => true,
|
114 |
+
];
|
115 |
+
$verifyname = true;
|
116 |
+
|
117 |
+
// SNI, if enabled (OpenSSL >=0.9.8j)
|
118 |
+
// phpcs:ignore PHPCompatibility.Constants.NewConstants.openssl_tlsext_server_nameFound
|
119 |
+
if (defined('OPENSSL_TLSEXT_SERVER_NAME') && OPENSSL_TLSEXT_SERVER_NAME) {
|
120 |
+
$context_options['SNI_enabled'] = true;
|
121 |
+
if (isset($options['verifyname']) && $options['verifyname'] === false) {
|
122 |
+
$context_options['SNI_enabled'] = false;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
if (isset($options['verify'])) {
|
127 |
+
if ($options['verify'] === false) {
|
128 |
+
$context_options['verify_peer'] = false;
|
129 |
+
$context_options['verify_peer_name'] = false;
|
130 |
+
$verifyname = false;
|
131 |
+
}
|
132 |
+
elseif (is_string($options['verify'])) {
|
133 |
+
$context_options['cafile'] = $options['verify'];
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
if (isset($options['verifyname']) && $options['verifyname'] === false) {
|
138 |
+
$context_options['verify_peer_name'] = false;
|
139 |
+
$verifyname = false;
|
140 |
+
}
|
141 |
+
|
142 |
+
stream_context_set_option($context, ['ssl' => $context_options]);
|
143 |
+
}
|
144 |
+
else {
|
145 |
+
$remote_socket = 'tcp://' . $host;
|
146 |
+
}
|
147 |
+
|
148 |
+
$this->max_bytes = $options['max_bytes'];
|
149 |
+
|
150 |
+
if (!isset($url_parts['port'])) {
|
151 |
+
$url_parts['port'] = Port::HTTP;
|
152 |
+
}
|
153 |
+
$remote_socket .= ':' . $url_parts['port'];
|
154 |
+
|
155 |
+
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_set_error_handler
|
156 |
+
set_error_handler([$this, 'connect_error_handler'], E_WARNING | E_NOTICE);
|
157 |
+
|
158 |
+
$options['hooks']->dispatch('fsockopen.remote_socket', [&$remote_socket]);
|
159 |
+
|
160 |
+
$socket = stream_socket_client($remote_socket, $errno, $errstr, ceil($options['connect_timeout']), STREAM_CLIENT_CONNECT, $context);
|
161 |
+
|
162 |
+
restore_error_handler();
|
163 |
+
|
164 |
+
if ($verifyname && !$this->verify_certificate_from_context($host, $context)) {
|
165 |
+
throw new Exception('SSL certificate did not match the requested domain name', 'ssl.no_match');
|
166 |
+
}
|
167 |
+
|
168 |
+
if (!$socket) {
|
169 |
+
if ($errno === 0) {
|
170 |
+
// Connection issue
|
171 |
+
throw new Exception(rtrim($this->connect_error), 'fsockopen.connect_error');
|
172 |
+
}
|
173 |
+
|
174 |
+
throw new Exception($errstr, 'fsockopenerror', null, $errno);
|
175 |
+
}
|
176 |
+
|
177 |
+
$data_format = $options['data_format'];
|
178 |
+
|
179 |
+
if ($data_format === 'query') {
|
180 |
+
$path = self::format_get($url_parts, $data);
|
181 |
+
$data = '';
|
182 |
+
}
|
183 |
+
else {
|
184 |
+
$path = self::format_get($url_parts, []);
|
185 |
+
}
|
186 |
+
|
187 |
+
$options['hooks']->dispatch('fsockopen.remote_host_path', [&$path, $url]);
|
188 |
+
|
189 |
+
$request_body = '';
|
190 |
+
$out = sprintf("%s %s HTTP/%.1F\r\n", $options['type'], $path, $options['protocol_version']);
|
191 |
+
|
192 |
+
if ($options['type'] !== Requests::TRACE) {
|
193 |
+
if (is_array($data)) {
|
194 |
+
$request_body = http_build_query($data, '', '&');
|
195 |
+
}
|
196 |
+
else {
|
197 |
+
$request_body = $data;
|
198 |
+
}
|
199 |
+
|
200 |
+
// Always include Content-length on POST requests to prevent
|
201 |
+
// 411 errors from some servers when the body is empty.
|
202 |
+
if (!empty($data) || $options['type'] === Requests::POST) {
|
203 |
+
if (!isset($case_insensitive_headers['Content-Length'])) {
|
204 |
+
$headers['Content-Length'] = strlen($request_body);
|
205 |
+
}
|
206 |
+
|
207 |
+
if (!isset($case_insensitive_headers['Content-Type'])) {
|
208 |
+
$headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
|
209 |
+
}
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
if (!isset($case_insensitive_headers['Host'])) {
|
214 |
+
$out .= sprintf('Host: %s', $url_parts['host']);
|
215 |
+
$scheme_lower = strtolower($url_parts['scheme']);
|
216 |
+
|
217 |
+
if (($scheme_lower === 'http' && $url_parts['port'] !== Port::HTTP) || ($scheme_lower === 'https' && $url_parts['port'] !== Port::HTTPS)) {
|
218 |
+
$out .= ':' . $url_parts['port'];
|
219 |
+
}
|
220 |
+
$out .= "\r\n";
|
221 |
+
}
|
222 |
+
|
223 |
+
if (!isset($case_insensitive_headers['User-Agent'])) {
|
224 |
+
$out .= sprintf("User-Agent: %s\r\n", $options['useragent']);
|
225 |
+
}
|
226 |
+
|
227 |
+
$accept_encoding = $this->accept_encoding();
|
228 |
+
if (!isset($case_insensitive_headers['Accept-Encoding']) && !empty($accept_encoding)) {
|
229 |
+
$out .= sprintf("Accept-Encoding: %s\r\n", $accept_encoding);
|
230 |
+
}
|
231 |
+
|
232 |
+
$headers = Requests::flatten($headers);
|
233 |
+
|
234 |
+
if (!empty($headers)) {
|
235 |
+
$out .= implode("\r\n", $headers) . "\r\n";
|
236 |
+
}
|
237 |
+
|
238 |
+
$options['hooks']->dispatch('fsockopen.after_headers', [&$out]);
|
239 |
+
|
240 |
+
if (substr($out, -2) !== "\r\n") {
|
241 |
+
$out .= "\r\n";
|
242 |
+
}
|
243 |
+
|
244 |
+
if (!isset($case_insensitive_headers['Connection'])) {
|
245 |
+
$out .= "Connection: Close\r\n";
|
246 |
+
}
|
247 |
+
|
248 |
+
$out .= "\r\n" . $request_body;
|
249 |
+
|
250 |
+
$options['hooks']->dispatch('fsockopen.before_send', [&$out]);
|
251 |
+
|
252 |
+
fwrite($socket, $out);
|
253 |
+
$options['hooks']->dispatch('fsockopen.after_send', [$out]);
|
254 |
+
|
255 |
+
if (!$options['blocking']) {
|
256 |
+
fclose($socket);
|
257 |
+
$fake_headers = '';
|
258 |
+
$options['hooks']->dispatch('fsockopen.after_request', [&$fake_headers]);
|
259 |
+
return '';
|
260 |
+
}
|
261 |
+
|
262 |
+
$timeout_sec = (int) floor($options['timeout']);
|
263 |
+
if ($timeout_sec === $options['timeout']) {
|
264 |
+
$timeout_msec = 0;
|
265 |
+
}
|
266 |
+
else {
|
267 |
+
$timeout_msec = self::SECOND_IN_MICROSECONDS * $options['timeout'] % self::SECOND_IN_MICROSECONDS;
|
268 |
+
}
|
269 |
+
stream_set_timeout($socket, $timeout_sec, $timeout_msec);
|
270 |
+
|
271 |
+
$response = '';
|
272 |
+
$body = '';
|
273 |
+
$headers = '';
|
274 |
+
$this->info = stream_get_meta_data($socket);
|
275 |
+
$size = 0;
|
276 |
+
$doingbody = false;
|
277 |
+
$download = false;
|
278 |
+
if ($options['filename']) {
|
279 |
+
// phpcs:ignore WordPress.PHP.NoSilencedErrors -- Silenced the PHP native warning in favour of throwing an exception.
|
280 |
+
$download = @fopen($options['filename'], 'wb');
|
281 |
+
if ($download === false) {
|
282 |
+
$error = error_get_last();
|
283 |
+
throw new Exception($error['message'], 'fopen');
|
284 |
+
}
|
285 |
+
}
|
286 |
+
|
287 |
+
while (!feof($socket)) {
|
288 |
+
$this->info = stream_get_meta_data($socket);
|
289 |
+
if ($this->info['timed_out']) {
|
290 |
+
throw new Exception('fsocket timed out', 'timeout');
|
291 |
+
}
|
292 |
+
|
293 |
+
$block = fread($socket, Requests::BUFFER_SIZE);
|
294 |
+
if (!$doingbody) {
|
295 |
+
$response .= $block;
|
296 |
+
if (strpos($response, "\r\n\r\n")) {
|
297 |
+
list($headers, $block) = explode("\r\n\r\n", $response, 2);
|
298 |
+
$doingbody = true;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
// Are we in body mode now?
|
303 |
+
if ($doingbody) {
|
304 |
+
$options['hooks']->dispatch('request.progress', [$block, $size, $this->max_bytes]);
|
305 |
+
$data_length = strlen($block);
|
306 |
+
if ($this->max_bytes) {
|
307 |
+
// Have we already hit a limit?
|
308 |
+
if ($size === $this->max_bytes) {
|
309 |
+
continue;
|
310 |
+
}
|
311 |
+
if (($size + $data_length) > $this->max_bytes) {
|
312 |
+
// Limit the length
|
313 |
+
$limited_length = ($this->max_bytes - $size);
|
314 |
+
$block = substr($block, 0, $limited_length);
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
$size += strlen($block);
|
319 |
+
if ($download) {
|
320 |
+
fwrite($download, $block);
|
321 |
+
}
|
322 |
+
else {
|
323 |
+
$body .= $block;
|
324 |
+
}
|
325 |
+
}
|
326 |
+
}
|
327 |
+
$this->headers = $headers;
|
328 |
+
|
329 |
+
if ($download) {
|
330 |
+
fclose($download);
|
331 |
+
}
|
332 |
+
else {
|
333 |
+
$this->headers .= "\r\n\r\n" . $body;
|
334 |
+
}
|
335 |
+
fclose($socket);
|
336 |
+
|
337 |
+
$options['hooks']->dispatch('fsockopen.after_request', [&$this->headers, &$this->info]);
|
338 |
+
return $this->headers;
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Send multiple requests simultaneously
|
343 |
+
*
|
344 |
+
* @param array $requests Request data (array of 'url', 'headers', 'data', 'options') as per {@see \WpOrg\Requests\Transport::request()}
|
345 |
+
* @param array $options Global options, see {@see \WpOrg\Requests\Requests::response()} for documentation
|
346 |
+
* @return array Array of \WpOrg\Requests\Response objects (may contain \WpOrg\Requests\Exception or string responses as well)
|
347 |
+
*
|
348 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $requests argument is not an array or iterable object with array access.
|
349 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
|
350 |
+
*/
|
351 |
+
public function request_multiple($requests, $options) {
|
352 |
+
// If you're not requesting, we can't get any responses ¯\_(ツ)_/¯
|
353 |
+
if (empty($requests)) {
|
354 |
+
return [];
|
355 |
+
}
|
356 |
+
|
357 |
+
if (InputValidator::has_array_access($requests) === false || InputValidator::is_iterable($requests) === false) {
|
358 |
+
throw InvalidArgument::create(1, '$requests', 'array|ArrayAccess&Traversable', gettype($requests));
|
359 |
+
}
|
360 |
+
|
361 |
+
if (is_array($options) === false) {
|
362 |
+
throw InvalidArgument::create(2, '$options', 'array', gettype($options));
|
363 |
+
}
|
364 |
+
|
365 |
+
$responses = [];
|
366 |
+
$class = get_class($this);
|
367 |
+
foreach ($requests as $id => $request) {
|
368 |
+
try {
|
369 |
+
$handler = new $class();
|
370 |
+
$responses[$id] = $handler->request($request['url'], $request['headers'], $request['data'], $request['options']);
|
371 |
+
|
372 |
+
$request['options']['hooks']->dispatch('transport.internal.parse_response', [&$responses[$id], $request]);
|
373 |
+
}
|
374 |
+
catch (Exception $e) {
|
375 |
+
$responses[$id] = $e;
|
376 |
+
}
|
377 |
+
|
378 |
+
if (!is_string($responses[$id])) {
|
379 |
+
$request['options']['hooks']->dispatch('multiple.request.complete', [&$responses[$id], $id]);
|
380 |
+
}
|
381 |
+
}
|
382 |
+
|
383 |
+
return $responses;
|
384 |
+
}
|
385 |
+
|
386 |
+
/**
|
387 |
+
* Retrieve the encodings we can accept
|
388 |
+
*
|
389 |
+
* @return string Accept-Encoding header value
|
390 |
+
*/
|
391 |
+
private static function accept_encoding() {
|
392 |
+
$type = [];
|
393 |
+
if (function_exists('gzinflate')) {
|
394 |
+
$type[] = 'deflate;q=1.0';
|
395 |
+
}
|
396 |
+
|
397 |
+
if (function_exists('gzuncompress')) {
|
398 |
+
$type[] = 'compress;q=0.5';
|
399 |
+
}
|
400 |
+
|
401 |
+
$type[] = 'gzip;q=0.5';
|
402 |
+
|
403 |
+
return implode(', ', $type);
|
404 |
+
}
|
405 |
+
|
406 |
+
/**
|
407 |
+
* Format a URL given GET data
|
408 |
+
*
|
409 |
+
* @param array $url_parts
|
410 |
+
* @param array|object $data Data to build query using, see {@link https://www.php.net/http_build_query}
|
411 |
+
* @return string URL with data
|
412 |
+
*/
|
413 |
+
private static function format_get($url_parts, $data) {
|
414 |
+
if (!empty($data)) {
|
415 |
+
if (empty($url_parts['query'])) {
|
416 |
+
$url_parts['query'] = '';
|
417 |
+
}
|
418 |
+
|
419 |
+
$url_parts['query'] .= '&' . http_build_query($data, '', '&');
|
420 |
+
$url_parts['query'] = trim($url_parts['query'], '&');
|
421 |
+
}
|
422 |
+
if (isset($url_parts['path'])) {
|
423 |
+
if (isset($url_parts['query'])) {
|
424 |
+
$get = $url_parts['path'] . '?' . $url_parts['query'];
|
425 |
+
}
|
426 |
+
else {
|
427 |
+
$get = $url_parts['path'];
|
428 |
+
}
|
429 |
+
}
|
430 |
+
else {
|
431 |
+
$get = '/';
|
432 |
+
}
|
433 |
+
return $get;
|
434 |
+
}
|
435 |
+
|
436 |
+
/**
|
437 |
+
* Error handler for stream_socket_client()
|
438 |
+
*
|
439 |
+
* @param int $errno Error number (e.g. E_WARNING)
|
440 |
+
* @param string $errstr Error message
|
441 |
+
*/
|
442 |
+
public function connect_error_handler($errno, $errstr) {
|
443 |
+
// Double-check we can handle it
|
444 |
+
if (($errno & E_WARNING) === 0 && ($errno & E_NOTICE) === 0) {
|
445 |
+
// Return false to indicate the default error handler should engage
|
446 |
+
return false;
|
447 |
+
}
|
448 |
+
|
449 |
+
$this->connect_error .= $errstr . "\n";
|
450 |
+
return true;
|
451 |
+
}
|
452 |
+
|
453 |
+
/**
|
454 |
+
* Verify the certificate against common name and subject alternative names
|
455 |
+
*
|
456 |
+
* Unfortunately, PHP doesn't check the certificate against the alternative
|
457 |
+
* names, leading things like 'https://www.github.com/' to be invalid.
|
458 |
+
* Instead
|
459 |
+
*
|
460 |
+
* @link https://tools.ietf.org/html/rfc2818#section-3.1 RFC2818, Section 3.1
|
461 |
+
*
|
462 |
+
* @param string $host Host name to verify against
|
463 |
+
* @param resource $context Stream context
|
464 |
+
* @return bool
|
465 |
+
*
|
466 |
+
* @throws \WpOrg\Requests\Exception On failure to connect via TLS (`fsockopen.ssl.connect_error`)
|
467 |
+
* @throws \WpOrg\Requests\Exception On not obtaining a match for the host (`fsockopen.ssl.no_match`)
|
468 |
+
*/
|
469 |
+
public function verify_certificate_from_context($host, $context) {
|
470 |
+
$meta = stream_context_get_options($context);
|
471 |
+
|
472 |
+
// If we don't have SSL options, then we couldn't make the connection at
|
473 |
+
// all
|
474 |
+
if (empty($meta) || empty($meta['ssl']) || empty($meta['ssl']['peer_certificate'])) {
|
475 |
+
throw new Exception(rtrim($this->connect_error), 'ssl.connect_error');
|
476 |
+
}
|
477 |
+
|
478 |
+
$cert = openssl_x509_parse($meta['ssl']['peer_certificate']);
|
479 |
+
|
480 |
+
return Ssl::verify_certificate($host, $cert);
|
481 |
+
}
|
482 |
+
|
483 |
+
/**
|
484 |
+
* Self-test whether the transport can be used.
|
485 |
+
*
|
486 |
+
* The available capabilities to test for can be found in {@see \WpOrg\Requests\Capability}.
|
487 |
+
*
|
488 |
+
* @codeCoverageIgnore
|
489 |
+
* @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
|
490 |
+
* @return bool Whether the transport can be used.
|
491 |
+
*/
|
492 |
+
public static function test($capabilities = []) {
|
493 |
+
if (!function_exists('fsockopen')) {
|
494 |
+
return false;
|
495 |
+
}
|
496 |
+
|
497 |
+
// If needed, check that streams support SSL
|
498 |
+
if (isset($capabilities[Capability::SSL]) && $capabilities[Capability::SSL]) {
|
499 |
+
if (!extension_loaded('openssl') || !function_exists('openssl_x509_parse')) {
|
500 |
+
return false;
|
501 |
+
}
|
502 |
+
}
|
503 |
+
|
504 |
+
return true;
|
505 |
+
}
|
506 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Utility/CaseInsensitiveDictionary.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Case-insensitive dictionary, suitable for HTTP headers
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Utility;
|
9 |
+
|
10 |
+
use ArrayAccess;
|
11 |
+
use ArrayIterator;
|
12 |
+
use IteratorAggregate;
|
13 |
+
use ReturnTypeWillChange;
|
14 |
+
use WpOrg\Requests\Exception;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Case-insensitive dictionary, suitable for HTTP headers
|
18 |
+
*
|
19 |
+
* @package Requests\Utilities
|
20 |
+
*/
|
21 |
+
class CaseInsensitiveDictionary implements ArrayAccess, IteratorAggregate {
|
22 |
+
/**
|
23 |
+
* Actual item data
|
24 |
+
*
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
protected $data = [];
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Creates a case insensitive dictionary.
|
31 |
+
*
|
32 |
+
* @param array $data Dictionary/map to convert to case-insensitive
|
33 |
+
*/
|
34 |
+
public function __construct(array $data = []) {
|
35 |
+
foreach ($data as $offset => $value) {
|
36 |
+
$this->offsetSet($offset, $value);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Check if the given item exists
|
42 |
+
*
|
43 |
+
* @param string $offset Item key
|
44 |
+
* @return boolean Does the item exist?
|
45 |
+
*/
|
46 |
+
#[ReturnTypeWillChange]
|
47 |
+
public function offsetExists($offset) {
|
48 |
+
if (is_string($offset)) {
|
49 |
+
$offset = strtolower($offset);
|
50 |
+
}
|
51 |
+
|
52 |
+
return isset($this->data[$offset]);
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Get the value for the item
|
57 |
+
*
|
58 |
+
* @param string $offset Item key
|
59 |
+
* @return string|null Item value (null if the item key doesn't exist)
|
60 |
+
*/
|
61 |
+
#[ReturnTypeWillChange]
|
62 |
+
public function offsetGet($offset) {
|
63 |
+
if (is_string($offset)) {
|
64 |
+
$offset = strtolower($offset);
|
65 |
+
}
|
66 |
+
|
67 |
+
if (!isset($this->data[$offset])) {
|
68 |
+
return null;
|
69 |
+
}
|
70 |
+
|
71 |
+
return $this->data[$offset];
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Set the given item
|
76 |
+
*
|
77 |
+
* @param string $offset Item name
|
78 |
+
* @param string $value Item value
|
79 |
+
*
|
80 |
+
* @throws \WpOrg\Requests\Exception On attempting to use dictionary as list (`invalidset`)
|
81 |
+
*/
|
82 |
+
#[ReturnTypeWillChange]
|
83 |
+
public function offsetSet($offset, $value) {
|
84 |
+
if ($offset === null) {
|
85 |
+
throw new Exception('Object is a dictionary, not a list', 'invalidset');
|
86 |
+
}
|
87 |
+
|
88 |
+
if (is_string($offset)) {
|
89 |
+
$offset = strtolower($offset);
|
90 |
+
}
|
91 |
+
|
92 |
+
$this->data[$offset] = $value;
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Unset the given header
|
97 |
+
*
|
98 |
+
* @param string $offset
|
99 |
+
*/
|
100 |
+
#[ReturnTypeWillChange]
|
101 |
+
public function offsetUnset($offset) {
|
102 |
+
if (is_string($offset)) {
|
103 |
+
$offset = strtolower($offset);
|
104 |
+
}
|
105 |
+
|
106 |
+
unset($this->data[$offset]);
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Get an iterator for the data
|
111 |
+
*
|
112 |
+
* @return \ArrayIterator
|
113 |
+
*/
|
114 |
+
#[ReturnTypeWillChange]
|
115 |
+
public function getIterator() {
|
116 |
+
return new ArrayIterator($this->data);
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Get the headers as an array
|
121 |
+
*
|
122 |
+
* @return array Header data
|
123 |
+
*/
|
124 |
+
public function getAll() {
|
125 |
+
return $this->data;
|
126 |
+
}
|
127 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Utility/FilteredIterator.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Iterator for arrays requiring filtered values
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Utility;
|
9 |
+
|
10 |
+
use ArrayIterator;
|
11 |
+
use ReturnTypeWillChange;
|
12 |
+
use WpOrg\Requests\Exception\InvalidArgument;
|
13 |
+
use WpOrg\Requests\Utility\InputValidator;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Iterator for arrays requiring filtered values
|
17 |
+
*
|
18 |
+
* @package Requests\Utilities
|
19 |
+
*/
|
20 |
+
final class FilteredIterator extends ArrayIterator {
|
21 |
+
/**
|
22 |
+
* Callback to run as a filter
|
23 |
+
*
|
24 |
+
* @var callable
|
25 |
+
*/
|
26 |
+
private $callback;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Create a new iterator
|
30 |
+
*
|
31 |
+
* @param array $data
|
32 |
+
* @param callable $callback Callback to be called on each value
|
33 |
+
*
|
34 |
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $data argument is not iterable.
|
35 |
+
*/
|
36 |
+
public function __construct($data, $callback) {
|
37 |
+
if (InputValidator::is_iterable($data) === false) {
|
38 |
+
throw InvalidArgument::create(1, '$data', 'iterable', gettype($data));
|
39 |
+
}
|
40 |
+
|
41 |
+
parent::__construct($data);
|
42 |
+
|
43 |
+
if (is_callable($callback)) {
|
44 |
+
$this->callback = $callback;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @inheritdoc
|
50 |
+
*
|
51 |
+
* @phpcs:disable PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound
|
52 |
+
*/
|
53 |
+
#[ReturnTypeWillChange]
|
54 |
+
public function __unserialize($data) {}
|
55 |
+
// phpcs:enable
|
56 |
+
|
57 |
+
public function __wakeup() {
|
58 |
+
unset($this->callback);
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Get the current item's value after filtering
|
63 |
+
*
|
64 |
+
* @return string
|
65 |
+
*/
|
66 |
+
#[ReturnTypeWillChange]
|
67 |
+
public function current() {
|
68 |
+
$value = parent::current();
|
69 |
+
|
70 |
+
if (is_callable($this->callback)) {
|
71 |
+
$value = call_user_func($this->callback, $value);
|
72 |
+
}
|
73 |
+
|
74 |
+
return $value;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* @inheritdoc
|
79 |
+
*/
|
80 |
+
#[ReturnTypeWillChange]
|
81 |
+
public function unserialize($data) {}
|
82 |
+
}
|
razorpay-sdk/libs/Requests-2.0.0/src/Utility/InputValidator.php
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Input validation utilities.
|
4 |
+
*
|
5 |
+
* @package Requests\Utilities
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace WpOrg\Requests\Utility;
|
9 |
+
|
10 |
+
use ArrayAccess;
|
11 |
+
use CurlHandle;
|
12 |
+
use Traversable;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Input validation utilities.
|
16 |
+
*
|
17 |
+
* @package Requests\Utilities
|
18 |
+
*/
|
19 |
+
final class InputValidator {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Verify that a received input parameter is of type string or is "stringable".
|
23 |
+
*
|
24 |
+
* @param mixed $input Input parameter to verify.
|
25 |
+
*
|
26 |
+
* @return bool
|
27 |
+
*/
|
28 |
+
public static function is_string_or_stringable($input) {
|
29 |
+
return is_string($input) || self::is_stringable_object($input);
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Verify whether a received input parameter is usable as an integer array key.
|
34 |
+
*
|
35 |
+
* @param mixed $input Input parameter to verify.
|
36 |
+
*
|
37 |
+
* @return bool
|
38 |
+
*/
|
39 |
+
public static function is_numeric_array_key($input) {
|
40 |
+
if (is_int($input)) {
|
41 |
+
return true;
|
42 |
+
}
|
43 |
+
|
44 |
+
if (!is_string($input)) {
|
45 |
+
return false;
|
46 |
+
}
|
47 |
+
|
48 |
+
return (bool) preg_match('`^-?[0-9]+$`', $input);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Verify whether a received input parameter is "stringable".
|
53 |
+
*
|
54 |
+
* @param mixed $input Input parameter to verify.
|
55 |
+
*
|
56 |
+
* @return bool
|
57 |
+
*/
|
58 |
+
public static function is_stringable_object($input) {
|
59 |
+
return is_object($input) && method_exists($input, '__toString');
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Verify whether a received input parameter is _accessible as if it were an array_.
|
64 |
+
*
|
65 |
+
* @param mixed $input Input parameter to verify.
|
66 |
+
*
|
67 |
+
* @return bool
|
68 |
+
*/
|
69 |
+
public static function has_array_access($input) {
|
70 |
+
return is_array($input) || $input instanceof ArrayAccess;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Verify whether a received input parameter is "iterable".
|
75 |
+
*
|
76 |
+
* @internal The PHP native `is_iterable()` function was only introduced in PHP 7.1
|
77 |
+
* and this library still supports PHP 5.6.
|
78 |
+
*
|
79 |
+
* @param mixed $input Input parameter to verify.
|
80 |
+
*
|
81 |
+
* @return bool
|
82 |
+
*/
|
83 |
+
public static function is_iterable($input) {
|
84 |
+
return is_array($input) || $input instanceof Traversable;
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Verify whether a received input parameter is a Curl handle.
|
89 |
+
*
|
90 |
+
* The PHP Curl extension worked with resources prior to PHP 8.0 and with
|
91 |
+
* an instance of the `CurlHandle` class since PHP 8.0.
|
92 |
+
* {@link https://www.php.net/manual/en/migration80.incompatible.php#migration80.incompatible.resource2object}
|
93 |
+
*
|
94 |
+
* @param mixed $input Input parameter to verify.
|
95 |
+
*
|
96 |
+
* @return bool
|
97 |
+
*/
|
98 |
+
public static function is_curl_handle($input) {
|
99 |
+
if (is_resource($input)) {
|
100 |
+
return get_resource_type($input) === 'curl';
|
101 |
+
}
|
102 |
+
|
103 |
+
if (is_object($input)) {
|
104 |
+
return $input instanceof CurlHandle;
|
105 |
+
}
|
106 |
+
|
107 |
+
return false;
|
108 |
+
}
|
109 |
+
}
|
razorpay-sdk/src/Api.php
CHANGED
@@ -16,7 +16,7 @@ class Api
|
|
16 |
*/
|
17 |
public static $appsDetails = array();
|
18 |
|
19 |
-
const VERSION = '2.8.
|
20 |
|
21 |
/**
|
22 |
* @param string $key
|
16 |
*/
|
17 |
public static $appsDetails = array();
|
18 |
|
19 |
+
const VERSION = '2.8.3';
|
20 |
|
21 |
/**
|
22 |
* @param string $key
|
razorpay-sdk/src/Collection.php
CHANGED
@@ -6,7 +6,7 @@ use Countable;
|
|
6 |
|
7 |
class Collection extends Entity implements Countable
|
8 |
{
|
9 |
-
public function count()
|
10 |
{
|
11 |
$count = 0;
|
12 |
|
6 |
|
7 |
class Collection extends Entity implements Countable
|
8 |
{
|
9 |
+
public function count():int
|
10 |
{
|
11 |
$count = 0;
|
12 |
|
razorpay-sdk/src/Resource.php
CHANGED
@@ -9,28 +9,33 @@ use IteratorAggregate;
|
|
9 |
class Resource implements ArrayAccess, IteratorAggregate
|
10 |
{
|
11 |
protected $attributes = array();
|
12 |
-
|
|
|
13 |
public function getIterator()
|
14 |
{
|
15 |
return new ArrayIterator($this->attributes);
|
16 |
}
|
|
|
17 |
|
18 |
-
public function offsetExists($offset)
|
19 |
{
|
20 |
return (isset($this->attributes[$offset]));
|
21 |
}
|
|
|
22 |
|
23 |
-
public function offsetSet($offset, $value)
|
24 |
{
|
25 |
$this->attributes[$offset] = $value;
|
26 |
}
|
27 |
|
|
|
28 |
public function offsetGet($offset)
|
29 |
{
|
30 |
return $this->attributes[$offset];
|
31 |
}
|
|
|
32 |
|
33 |
-
public function offsetUnset($offset)
|
34 |
{
|
35 |
unset($this->attributes[$offset]);
|
36 |
}
|
9 |
class Resource implements ArrayAccess, IteratorAggregate
|
10 |
{
|
11 |
protected $attributes = array();
|
12 |
+
|
13 |
+
#[\ReturnTypeWillChange]
|
14 |
public function getIterator()
|
15 |
{
|
16 |
return new ArrayIterator($this->attributes);
|
17 |
}
|
18 |
+
|
19 |
|
20 |
+
public function offsetExists($offset): bool
|
21 |
{
|
22 |
return (isset($this->attributes[$offset]));
|
23 |
}
|
24 |
+
|
25 |
|
26 |
+
public function offsetSet($offset, $value): void
|
27 |
{
|
28 |
$this->attributes[$offset] = $value;
|
29 |
}
|
30 |
|
31 |
+
#[\ReturnTypeWillChange]
|
32 |
public function offsetGet($offset)
|
33 |
{
|
34 |
return $this->attributes[$offset];
|
35 |
}
|
36 |
+
|
37 |
|
38 |
+
public function offsetUnset($offset): void
|
39 |
{
|
40 |
unset($this->attributes[$offset]);
|
41 |
}
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: razorpay
|
|
3 |
Tags: razorpay, payments, india, woocommerce, ecommerce
|
4 |
Requires at least: 3.9.2
|
5 |
Tested up to: 5.9
|
6 |
-
Stable tag: 3.4.
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -41,6 +41,11 @@ This is compatible with WooCommerce>=2.4, including the new 3.0 release. It has
|
|
41 |
|
42 |
== Changelog ==
|
43 |
|
|
|
|
|
|
|
|
|
|
|
44 |
= 3.4.0 =
|
45 |
* Bug fix for magic checkout blank orders.
|
46 |
|
3 |
Tags: razorpay, payments, india, woocommerce, ecommerce
|
4 |
Requires at least: 3.9.2
|
5 |
Tested up to: 5.9
|
6 |
+
Stable tag: 3.4.1
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
41 |
|
42 |
== Changelog ==
|
43 |
|
44 |
+
= 3.4.1 =
|
45 |
+
* Bug fix in webhook.
|
46 |
+
* Updated Razorpay SDK.
|
47 |
+
* Tested up to Woocommerce 6.4.1
|
48 |
+
|
49 |
= 3.4.0 =
|
50 |
* Bug fix for magic checkout blank orders.
|
51 |
|
woo-razorpay.php
CHANGED
@@ -3,8 +3,8 @@
|
|
3 |
* Plugin Name: Razorpay for WooCommerce
|
4 |
* Plugin URI: https://razorpay.com
|
5 |
* Description: Razorpay Payment Gateway Integration for WooCommerce
|
6 |
-
* Version: 3.4.
|
7 |
-
* Stable tag: 3.4.
|
8 |
* Author: Team Razorpay
|
9 |
* WC tested up to: 6.2.2
|
10 |
* Author URI: https://razorpay.com
|
3 |
* Plugin Name: Razorpay for WooCommerce
|
4 |
* Plugin URI: https://razorpay.com
|
5 |
* Description: Razorpay Payment Gateway Integration for WooCommerce
|
6 |
+
* Version: 3.4.1
|
7 |
+
* Stable tag: 3.4.1
|
8 |
* Author: Team Razorpay
|
9 |
* WC tested up to: 6.2.2
|
10 |
* Author URI: https://razorpay.com
|