Version Description
- Improvement - Pinterest is caching login info to prevent "multiple logins" issues.
- Bug fix - Pinterest special characters
- Bug fix - Tumblr Authorization issue.
Download this release
Release Info
Developer | NextScripts |
Plugin | NextScripts: Social Networks Auto-Poster |
Version | 1.9.13 |
Comparing to | |
See all releases |
Code changes from version 1.7.0 to 1.9.13
- NextScripts_SNAP.php +1493 -0
- apis/OAuth.php +874 -0
- apis/base_facebook.php +1131 -0
- apis/cacert.pem +3376 -0
- apis/facebook.php +96 -0
- apis/fb_ca_chain_bundle.crt +121 -0
- apis/htmlNumTable.php +260 -0
- apis/liOAuth.php +151 -0
- apis/tmhOAuth.php +665 -0
- apis/tmhUtilities.php +249 -0
- apis/trOAuth.php +272 -0
- readme.txt +362 -0
- screenshot-1.png +0 -0
NextScripts_SNAP.php
ADDED
@@ -0,0 +1,1493 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Next Scripts Social Networks Auto-Poster
|
4 |
+
Plugin URI: http://www.nextscripts.com/social-networks-auto-poster-for-wordpress
|
5 |
+
Description: This plugin automatically publishes posts from your blog to your Facebook, Twitter, Tumblr, Pinterest, Blogger and Google+ profiles and/or pages.
|
6 |
+
Author: Next Scripts
|
7 |
+
Version: 1.9.13
|
8 |
+
Author URI: http://www.nextscripts.com
|
9 |
+
Copyright 2012 Next Scripts, Inc
|
10 |
+
*/
|
11 |
+
$php_version = (int)phpversion();
|
12 |
+
if (file_exists(realpath(ABSPATH."wp-content/plugins/postToGooglePlus.php"))) require realpath(ABSPATH."wp-content/plugins/postToGooglePlus.php");
|
13 |
+
elseif (file_exists(realpath(dirname( __FILE__ ))."/apis/postToGooglePlus.php")) require realpath(dirname( __FILE__ ))."/apis/postToGooglePlus.php";
|
14 |
+
if (file_exists(realpath(ABSPATH."wp-content/plugins/postToPinterest.php"))) require realpath(ABSPATH."wp-content/plugins/postToPinterest.php");
|
15 |
+
elseif (file_exists(realpath(dirname( __FILE__ ))."/apis/postToPinterest.php")) require realpath(dirname( __FILE__ ))."/apis/postToPinterest.php";
|
16 |
+
|
17 |
+
define( 'NextScripts_SNAP_Version' , '1.9.13' );
|
18 |
+
if (!function_exists('prr')){ function prr($str) { echo "<pre>"; print_r($str); echo "</pre>\r\n"; }}
|
19 |
+
if (!function_exists('CutFromTo')){ function CutFromTo($string, $from, $to){$fstart = stripos($string, $from); $tmp = substr($string,$fstart+strlen($from)); $flen = stripos($tmp, $to); return substr($tmp,0, $flen);}}
|
20 |
+
if (!function_exists('nxs_decodeEntitiesFull')){ function nxs_decodeEntitiesFull($string, $quotes = ENT_COMPAT, $charset = 'utf-8') {
|
21 |
+
return html_entity_decode(preg_replace_callback('/&([a-zA-Z][a-zA-Z0-9]+);/', 'nxs_convertEntity', $string), $quotes, $charset);
|
22 |
+
}}
|
23 |
+
if (!function_exists('nxs_convertEntity')){ function nxs_convertEntity($matches, $destroy = true) {
|
24 |
+
static $table = array('quot' => '"','amp' => '&','lt' => '<','gt' => '>','OElig' => 'Œ','oelig' => 'œ','Scaron' => 'Š','scaron' => 'š','Yuml' => 'Ÿ','circ' => 'ˆ','tilde' => '˜','ensp' => ' ','emsp' => ' ','thinsp' => ' ','zwnj' => '‌','zwj' => '‍','lrm' => '‎','rlm' => '‏','ndash' => '–','mdash' => '—','lsquo' => '‘','rsquo' => '’','sbquo' => '‚','ldquo' => '“','rdquo' => '”','bdquo' => '„','dagger' => '†','Dagger' => '‡','permil' => '‰','lsaquo' => '‹','rsaquo' => '›','euro' => '€','fnof' => 'ƒ','Alpha' => 'Α','Beta' => 'Β','Gamma' => 'Γ','Delta' => 'Δ','Epsilon' => 'Ε','Zeta' => 'Ζ','Eta' => 'Η','Theta' => 'Θ','Iota' => 'Ι','Kappa' => 'Κ','Lambda' => 'Λ','Mu' => 'Μ','Nu' => 'Ν','Xi' => 'Ξ','Omicron' => 'Ο','Pi' => 'Π','Rho' => 'Ρ','Sigma' => 'Σ','Tau' => 'Τ','Upsilon' => 'Υ','Phi' => 'Φ','Chi' => 'Χ','Psi' => 'Ψ','Omega' => 'Ω','alpha' => 'α','beta' => 'β','gamma' => 'γ','delta' => 'δ','epsilon' => 'ε','zeta' => 'ζ','eta' => 'η','theta' => 'θ','iota' => 'ι','kappa' => 'κ','lambda' => 'λ','mu' => 'μ','nu' => 'ν','xi' => 'ξ','omicron' => 'ο','pi' => 'π','rho' => 'ρ','sigmaf' => 'ς','sigma' => 'σ','tau' => 'τ','upsilon' => 'υ','phi' => 'φ','chi' => 'χ','psi' => 'ψ','omega' => 'ω','thetasym' => 'ϑ','upsih' => 'ϒ','piv' => 'ϖ','bull' => '•','hellip' => '…','prime' => '′','Prime' => '″','oline' => '‾','frasl' => '⁄','weierp' => '℘','image' => 'ℑ','real' => 'ℜ','trade' => '™','alefsym' => 'ℵ','larr' => '←','uarr' => '↑','rarr' => '→','darr' => '↓','harr' => '↔','crarr' => '↵','lArr' => '⇐','uArr' => '⇑','rArr' => '⇒','dArr' => '⇓','hArr' => '⇔','forall' => '∀','part' => '∂','exist' => '∃','empty' => '∅','nabla' => '∇','isin' => '∈','notin' => '∉','ni' => '∋','prod' => '∏','sum' => '∑','minus' => '−','lowast' => '∗','radic' => '√','prop' => '∝','infin' => '∞','ang' => '∠','and' => '∧','or' => '∨','cap' => '∩','cup' => '∪','int' => '∫','there4' => '∴','sim' => '∼','cong' => '≅','asymp' => '≈','ne' => '≠','equiv' => '≡','le' => '≤','ge' => '≥','sub' => '⊂','sup' => '⊃','nsub' => '⊄','sube' => '⊆','supe' => '⊇','oplus' => '⊕','otimes' => '⊗','perp' => '⊥','sdot' => '⋅','lceil' => '⌈','rceil' => '⌉','lfloor' => '⌊','rfloor' => '⌋','lang' => '〈','rang' => '〉','loz' => '◊','spades' => '♠','clubs' => '♣','hearts' => '♥','diams' => '♦','nbsp' => ' ','iexcl' => '¡','cent' => '¢','pound' => '£','curren' => '¤','yen' => '¥','brvbar' => '¦','sect' => '§','uml' => '¨','copy' => '©','ordf' => 'ª','laquo' => '«','not' => '¬','shy' => '­','reg' => '®','macr' => '¯','deg' => '°','plusmn' => '±','sup2' => '²','sup3' => '³','acute' => '´','micro' => 'µ','para' => '¶','middot' => '·','cedil' => '¸','sup1' => '¹','ordm' => 'º','raquo' => '»','frac14' => '¼','frac12' => '½','frac34' => '¾','iquest' => '¿','Agrave' => 'À','Aacute' => 'Á','Acirc' => 'Â','Atilde' => 'Ã','Auml' => 'Ä','Aring' => 'Å','AElig' => 'Æ','Ccedil' => 'Ç','Egrave' => 'È','Eacute' => 'É','Ecirc' => 'Ê','Euml' => 'Ë','Igrave' => 'Ì','Iacute' => 'Í','Icirc' => 'Î','Iuml' => 'Ï','ETH' => 'Ð','Ntilde' => 'Ñ','Ograve' => 'Ò','Oacute' => 'Ó','Ocirc' => 'Ô','Otilde' => 'Õ','Ouml' => 'Ö','times' => '×','Oslash' => 'Ø','Ugrave' => 'Ù','Uacute' => 'Ú','Ucirc' => 'Û','Uuml' => 'Ü','Yacute' => 'Ý','THORN' => 'Þ','szlig' => 'ß','agrave' => 'à','aacute' => 'á','acirc' => 'â','atilde' => 'ã','auml' => 'ä','aring' => 'å','aelig' => 'æ','ccedil' => 'ç','egrave' => 'è','eacute' => 'é','ecirc' => 'ê','euml' => 'ë','igrave' => 'ì','iacute' => 'í','icirc' => 'î','iuml' => 'ï','eth' => 'ð','ntilde' => 'ñ','ograve' => 'ò','oacute' => 'ó','ocirc' => 'ô','otilde' => 'õ','ouml' => 'ö','divide' => '÷','oslash' => 'ø','ugrave' => 'ù','uacute' => 'ú','ucirc' => 'û','uuml' => 'ü','yacute' => 'ý','thorn' => 'þ','yuml' => 'ÿ');
|
25 |
+
if (isset($table[$matches[1]])) return $table[$matches[1]];
|
26 |
+
// else
|
27 |
+
return $destroy ? '' : $matches[0];
|
28 |
+
}}
|
29 |
+
|
30 |
+
function nsx_doEncode($string,$key='NSX') { $key = sha1($key); $strLen = strlen($string);$keyLen = strlen($key);
|
31 |
+
for ($i = 0; $i < $strLen; $i++) { $ordStr = ord(substr($string,$i,1)); if ($j == $keyLen) $j = 0; $ordKey = ord(substr($key,$j,1)); $j++; $hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));} return $hash;
|
32 |
+
}
|
33 |
+
function nsx_doDecode($string,$key='NSX') { $key = sha1($key); $strLen = strlen($string); $keyLen = strlen($key);
|
34 |
+
for ($i = 0; $i < $strLen; $i+=2) { $ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16)); if ($j == $keyLen) $j = 0; $ordKey = ord(substr($key,$j,1)); $j++; $hash .= chr($ordStr - $ordKey);} return $hash;
|
35 |
+
}
|
36 |
+
function nsx_stripSlashes(&$value){$value = stripslashes($value);}
|
37 |
+
|
38 |
+
//## Define class
|
39 |
+
if (!class_exists("NS_SNAutoPoster")) {
|
40 |
+
class NS_SNAutoPoster {//## General Functions
|
41 |
+
//## Name for the DB Record for NS SNAP Options
|
42 |
+
var $dbOptionsName = "NS_SNAutoPoster";
|
43 |
+
//## Constructor
|
44 |
+
function NS_SNAutoPoster() { global $wp_version; $this->wp_version = $wp_version;}
|
45 |
+
//## Initialization function
|
46 |
+
function init() { $this->getAPOptions();}
|
47 |
+
//## Administrative Functions
|
48 |
+
//## Options loader function
|
49 |
+
function getAPOptions() {
|
50 |
+
//## Some Default Values
|
51 |
+
//$options = array( 'fb''fbAttch'=>1, 'nsOpenGraph'=>1, 'fbMsgFormat'=>'New post has been published on %SITENAME%', 'gpAttch'=>1, 'gpMsgFormat'=>'New post has been published on %SITENAME%', 'twMsgFormat'=>'%TITLE% - %URL%');
|
52 |
+
$options = array('nsOpenGraph'=>1);
|
53 |
+
|
54 |
+
$dbOptions = get_option($this->dbOptionsName);
|
55 |
+
if (!empty($dbOptions)) foreach ($dbOptions as $key => $option) if (trim($key)!='') $options[$key] = $option; // prr($options); die();
|
56 |
+
if (!isset($options['isPro']) || $options['isPro']!='1'){ //## Upgrade from non-pro version
|
57 |
+
$optPro = array();foreach ($options as $indx => $opt){
|
58 |
+
if (substr($indx, 0, 2)=='fb') $optPro['fb'][0][$indx] = $opt;
|
59 |
+
elseif (substr($indx, 0, 2)=='gp') $optPro['gp'][0][$indx] = $opt;
|
60 |
+
elseif (substr($indx, 0, 2)=='tw') $optPro['tw'][0][$indx] = $opt;
|
61 |
+
elseif (substr($indx, 0, 2)=='tr') $optPro['tr'][0][$indx] = $opt;
|
62 |
+
elseif (substr($indx, 0, 2)=='bg') $optPro['bg'][0][$indx] = $opt;
|
63 |
+
elseif (substr($indx, 0, 2)=='li') $optPro['li'][0][$indx] = $opt;
|
64 |
+
elseif (substr($indx, 0, 2)=='pn') $optPro['pn'][0][$indx] = $opt;
|
65 |
+
elseif ($indx=='doFB') $optPro['fb'][0][$indx] = $opt;
|
66 |
+
elseif ($indx=='doGP') $optPro['gp'][0][$indx] = $opt;
|
67 |
+
elseif ($indx=='doTW') $optPro['tw'][0][$indx] = $opt;
|
68 |
+
elseif ($indx=='doTR') $optPro['tr'][0][$indx] = $opt;
|
69 |
+
elseif ($indx=='doBG') $optPro['bg'][0][$indx] = $opt;
|
70 |
+
elseif ($indx=='doLI') $optPro['li'][0][$indx] = $opt;
|
71 |
+
elseif ($indx=='doPN') $optPro['pn'][0][$indx] = $opt;
|
72 |
+
elseif (trim($indx)!='') $optPro[$indx] = $opt;
|
73 |
+
if ($options['tw'][0]['twAccTokenSec']!='') $optPro['tw'][0]['twOK'] = '1';
|
74 |
+
if ($options['bg'][0]['bgBlogID']!='') $optPro['bg'][0]['bgOK'] = '1';
|
75 |
+
$optPro['isPro'] = '1';
|
76 |
+
}
|
77 |
+
//## Update the options for the panel
|
78 |
+
$options = $optPro;
|
79 |
+
} update_option($this->dbOptionsName, $options);
|
80 |
+
return $options;
|
81 |
+
}
|
82 |
+
function showSNAutoPosterUsersOptionsPage($user_login = "") { global $current_user; get_currentuserinfo(); $this->showSNAutoPosterOptionsPage($current_user->user_login); }
|
83 |
+
//## Print the admin page for the plugin
|
84 |
+
function showSNAutoPosterOptionsPage($user_login = "") { $emptyUser = empty($user_login); $nxsOne = '';
|
85 |
+
//## Get the user options
|
86 |
+
$options = $this->getAPOptions($user_login); // prr($options);
|
87 |
+
|
88 |
+
|
89 |
+
|
90 |
+
|
91 |
+
if (isset($_POST['update_NS_SNAutoPoster_settings'])) {
|
92 |
+
|
93 |
+
if (get_magic_quotes_gpc()) {array_walk_recursive($_POST, 'nsx_stripSlashes');}
|
94 |
+
|
95 |
+
if (isset($_POST['apDoGP'])) $options['gp'][0]['doGP'] = $_POST['apDoGP']; else $options['gp'][0]['doGP'] = 0;
|
96 |
+
if (isset($_POST['apDoFB'])) $options['fb'][0]['doFB'] = $_POST['apDoFB']; else $options['fb'][0]['doFB'] = 0;
|
97 |
+
if (isset($_POST['apDoTW'])) $options['tw'][0]['doTW'] = $_POST['apDoTW']; else $options['tw'][0]['doTW'] = 0;
|
98 |
+
if (isset($_POST['apDoTR'])) $options['tr'][0]['doTR'] = $_POST['apDoTR']; else $options['tr'][0]['doTR'] = 0;
|
99 |
+
if (isset($_POST['apDoPN'])) $options['pn'][0]['doPN'] = $_POST['apDoPN']; else $options['pn'][0]['doPN'] = 0;
|
100 |
+
if (isset($_POST['apDoBG'])) $options['bg'][0]['doBG'] = $_POST['apDoBG']; else $options['bg'][0]['doBG'] = 0;
|
101 |
+
if (isset($_POST['apDoLI'])) $options['li'][0]['doLI'] = $_POST['apDoLI']; else $options['li'][0]['doLI'] = 0;
|
102 |
+
|
103 |
+
|
104 |
+
if (isset($_POST['apGPUName'])) $options['gp'][0]['gpUName'] = $_POST['apGPUName'];
|
105 |
+
if (isset($_POST['apGPPass'])) $options['gp'][0]['gpPass'] = 'n5g9a'.nsx_doEncode($_POST['apGPPass']); else $options['gp'][0]['gpPass'] = '';
|
106 |
+
if (isset($_POST['apGPPage'])) $options['gp'][0]['gpPageID'] = $_POST['apGPPage'];
|
107 |
+
if (isset($_POST['apGPAttch'])) $options['gp'][0]['gpAttch'] = $_POST['apGPAttch']; else $options['gp'][0]['gpAttch'] = 0;
|
108 |
+
if (isset($_POST['apGPMsgFrmt'])) $options['gp'][0]['gpMsgFormat'] = $_POST['apGPMsgFrmt'];
|
109 |
+
|
110 |
+
if (isset($_POST['apPNUName'])) $options['pn'][0]['pnUName'] = $_POST['apPNUName'];
|
111 |
+
if (isset($_POST['apPNPass'])) $options['pn'][0]['pnPass'] = 'g9c1a'.nsx_doEncode($_POST['apPNPass']); else $options['pn'][0]['pnPass'] = '';
|
112 |
+
if (isset($_POST['apPNBoard'])) $options['pn'][0]['pnBoard'] = $_POST['apPNBoard'];
|
113 |
+
if (isset($_POST['apPNDefImg'])) $options['pn'][0]['pnDefImg'] = $_POST['apPNDefImg'];
|
114 |
+
if (isset($_POST['apPNMsgFrmt'])) $options['pn'][0]['pnMsgFormat'] = $_POST['apPNMsgFrmt'];
|
115 |
+
|
116 |
+
if (isset($_POST['apBGUName'])) $options['bg'][0]['bgUName'] = $_POST['apBGUName'];
|
117 |
+
if (isset($_POST['apBGPass'])) $options['bg'][0]['bgPass'] = 'b4d7s'.nsx_doEncode($_POST['apBGPass']); else $options['bg'][0]['bgPass'] = '';
|
118 |
+
if (isset($_POST['apBGBlogID'])) $options['bg'][0]['bgBlogID'] = $_POST['apBGBlogID'];
|
119 |
+
if (isset($_POST['apBGMsgFrmt'])) $options['bg'][0]['bgMsgFormat'] = $_POST['apBGMsgFrmt'];
|
120 |
+
if (isset($_POST['apBGMsgTFrmt'])) $options['bg'][0]['bgMsgTFormat'] = $_POST['apBGMsgTFrmt'];
|
121 |
+
if (isset($_POST['bgInclTags'])) $options['bg'][0]['bgInclTags'] = $_POST['bgInclTags']; else $options['bg'][0]['bgInclTags'] = 0;
|
122 |
+
|
123 |
+
if (isset($_POST['apLIUName'])) $options['li'][0]['liUName'] = $_POST['apLIUName'];
|
124 |
+
if (isset($_POST['apLIPass'])) $options['li'][0]['liPass'] = 'c59sa'.nsx_doEncode($_POST['apLIPass']); else $options['li'][0]['liPass'] = '';
|
125 |
+
if (isset($_POST['apLICompID'])) $options['li'][0]['liCompID'] = $_POST['apLICompID'];
|
126 |
+
|
127 |
+
if (isset($_POST['apLIAttch'])) $options['li'][0]['liAttch'] = $_POST['apLIAttch']; else $options['li'][0]['liAttch'] = 0;
|
128 |
+
if (isset($_POST['apLIMsgFrmt'])) $options['li'][0]['liMsgFormat'] = $_POST['apLIMsgFrmt'];
|
129 |
+
|
130 |
+
if (isset($_POST['apLIAPIKey'])) $options['li'][0]['liAPIKey'] = $_POST['apLIAPIKey'];
|
131 |
+
if (isset($_POST['apLIAPISec'])) $options['li'][0]['liAPISec'] = $_POST['apLIAPISec'];
|
132 |
+
|
133 |
+
|
134 |
+
if (isset($_POST['apFBURL'])) { $options['fb'][0]['fbURL'] = $_POST['apFBURL'];
|
135 |
+
$fbPgID = $options['fb'][0]['fbURL']; if (substr($fbPgID, -1)=='/') $fbPgID = substr($fbPgID, 0, -1); $fbPgID = substr(strrchr($fbPgID, "/"), 1);
|
136 |
+
$options['fb'][0]['fbPgID'] = $fbPgID; //echo $fbPgID;
|
137 |
+
}
|
138 |
+
|
139 |
+
if (isset($_POST['apFBAppID'])) $options['fb'][0]['fbAppID'] = $_POST['apFBAppID'];
|
140 |
+
if (isset($_POST['apFBAppSec'])) $options['fb'][0]['fbAppSec'] = $_POST['apFBAppSec'];
|
141 |
+
if (isset($_POST['apFBAttch'])) $options['fb'][0]['fbAttch'] = $_POST['apFBAttch']; else $options['fb'][0]['fbAttch'] = 0;
|
142 |
+
if (isset($_POST['apFBAttchAsVid'])) $options['fb'][0]['fbAttchAsVid'] = $_POST['apFBAttchAsVid']; else $options['fb'][0]['fbAttchAsVid'] = 0;
|
143 |
+
if (isset($_POST['apFBMsgFrmt'])) $options['fb'][0]['fbMsgFormat'] = $_POST['apFBMsgFrmt'];
|
144 |
+
|
145 |
+
if (isset($_POST['apTWURL'])) $options['tw'][0]['twURL'] = $_POST['apTWURL'];
|
146 |
+
if (isset($_POST['apTWConsKey'])) $options['tw'][0]['twConsKey'] = $_POST['apTWConsKey'];
|
147 |
+
if (isset($_POST['apTWConsSec'])) $options['tw'][0]['twConsSec'] = $_POST['apTWConsSec'];
|
148 |
+
if (isset($_POST['apTWAccToken'])) $options['tw'][0]['twAccToken'] = $_POST['apTWAccToken'];
|
149 |
+
if (isset($_POST['apTWAccTokenSec']))$options['tw'][0]['twAccTokenSec'] = $_POST['apTWAccTokenSec'];
|
150 |
+
if (isset($_POST['apTWMsgFrmt'])) $options['tw'][0]['twMsgFormat'] = $_POST['apTWMsgFrmt'];
|
151 |
+
|
152 |
+
|
153 |
+
if (isset($_POST['apTRURL'])) { $options['tr'][0]['trURL'] = $_POST['apTRURL'];
|
154 |
+
$trPgID = $options['tr'][0]['trURL']; if (substr($trPgID, -1)=='/') $trPgID = substr($trPgID, 0, -1); $trPgID = substr(strrchr($trPgID, "/"), 1);
|
155 |
+
$options['tr'][0]['trPgID'] = $trPgID; //echo $fbPgID;
|
156 |
+
}
|
157 |
+
if (isset($_POST['apTRConsKey'])) $options['tr'][0]['trConsKey'] = $_POST['apTRConsKey'];
|
158 |
+
if (isset($_POST['apTRConsSec'])) $options['tr'][0]['trConsSec'] = $_POST['apTRConsSec'];
|
159 |
+
if (isset($_POST['apTRMsgFrmt'])) $options['tr'][0]['trMsgFormat'] = $_POST['apTRMsgFrmt'];
|
160 |
+
if (isset($_POST['apTRMsgTFrmt'])) $options['tr'][0]['trMsgTFormat'] = $_POST['apTRMsgTFrmt'];
|
161 |
+
if (isset($_POST['trInclTags'])) $options['tr'][0]['trInclTags'] = $_POST['trInclTags']; else $options['tr'][0]['trInclTags'] = 0;
|
162 |
+
|
163 |
+
if (isset($_POST['apCats'])) $options['apCats'] = $_POST['apCats'];
|
164 |
+
|
165 |
+
if (isset($_POST['ogImgDef'])) $options['ogImgDef'] = $_POST['ogImgDef'];
|
166 |
+
if (isset($_POST['nsOpenGraph'])) $options['nsOpenGraph'] = $_POST['nsOpenGraph']; else $options['nsOpenGraph'] = 0;
|
167 |
+
|
168 |
+
if (isset($_POST['nxsCPTSeld'])) $options['nxsCPTSeld'] = serialize($_POST['nxsCPTSeld']);
|
169 |
+
|
170 |
+
//prr($options); die();
|
171 |
+
|
172 |
+
|
173 |
+
update_option($this->dbOptionsName , $options);
|
174 |
+
//## Update settings notification
|
175 |
+
?>
|
176 |
+
<div class="updated"><p><strong><?php _e("Settings Updated.", "NS_SNAutoPoster");?></strong></p></div>
|
177 |
+
<?php
|
178 |
+
}
|
179 |
+
//## Display HTML form for the options below
|
180 |
+
|
181 |
+
?>
|
182 |
+
<script type="text/javascript"> if (typeof jQuery == 'undefined') {var script = document.createElement('script'); script.type = "text/javascript";
|
183 |
+
script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; document.getElementsByTagName('head')[0].appendChild(script);
|
184 |
+
}</script>
|
185 |
+
<script type="text/javascript">
|
186 |
+
function doShowHideAltFormat(){ if (jQuery('#NS_SNAutoPosterAttachPost').is(':checked')) {
|
187 |
+
jQuery('#altFormat').css('margin-left', '20px'); jQuery('#altFormatText').html('Post Announce Text:'); } else {jQuery('#altFormat').css('margin-left', '0px'); jQuery('#altFormatText').html('Post Text Format:');}
|
188 |
+
}
|
189 |
+
function doShowHideBlocks(blID){ if (jQuery('#apDo'+blID).is(':checked')) jQuery('#do'+blID+'Div').show(); else jQuery('#do'+blID+'Div').hide();
|
190 |
+
|
191 |
+
}
|
192 |
+
function doSwitchShAtt(att){
|
193 |
+
if (att==1) { jQuery('#apFBAttch').attr('checked', true); jQuery('#apFBAttchShare').attr('checked', false); } else {jQuery('#apFBAttch').attr('checked', false); jQuery('#apFBAttchShare').attr('checked', true);}
|
194 |
+
}
|
195 |
+
|
196 |
+
function getBoards(u,p){ jQuery("#pnLoadingImg").show();
|
197 |
+
|
198 |
+
jQuery.post(ajaxurl,{u:u,p:p, action: 'getBoards', id: 0, _wpnonce: jQuery('input#getBoards_wpnonce').val(), ajax: 'true'}, function(j){ var options = '';
|
199 |
+
jQuery("select#apPNBoard").html(j); jQuery("#pnLoadingImg").hide();
|
200 |
+
}, "html")
|
201 |
+
|
202 |
+
}
|
203 |
+
|
204 |
+
function callAjSNAP(data, label) {
|
205 |
+
var style = "position: fixed; display: none; z-index: 1000; top: 50%; left: 50%; background-color: #E8E8E8; border: 1px solid #555; padding: 15px; width: 350px; min-height: 80px; margin-left: -175px; margin-top: -40px; text-align: center; vertical-align: middle;";
|
206 |
+
jQuery('body').append("<div id='test_results' style='" + style + "'></div>");
|
207 |
+
jQuery('#test_results').html("<p>Sending update to "+label+"</p>" + "<p><img src='http://gtln.us/img/misc/ajax-loader-med.gif' /></p>");
|
208 |
+
jQuery('#test_results').show();
|
209 |
+
jQuery.post(ajaxurl, data, function(response) { if (response=='') response = 'Message Posted';
|
210 |
+
jQuery('#test_results').html('<p> ' + response + '</p>' +'<input type="button" class="button" name="results_ok_button" id="results_ok_button" value="OK" />');
|
211 |
+
jQuery('#results_ok_button').click(remove_results);
|
212 |
+
});
|
213 |
+
|
214 |
+
}
|
215 |
+
function remove_results() { jQuery("#results_ok_button").unbind("click");jQuery("#test_results").remove();
|
216 |
+
if (typeof document.body.style.maxHeight == "undefined") { jQuery("body","html").css({height: "auto", width: "auto"}); jQuery("html").css("overflow","");}
|
217 |
+
document.onkeydown = "";document.onkeyup = ""; return false;
|
218 |
+
}
|
219 |
+
function testPost(nt){
|
220 |
+
if (nt=='GP') { var data = { action: 'rePostToGP', id: 0, _wpnonce: jQuery('input#rePostToGP_wpnonce').val()}; callAjSNAP(data, 'Google+'); }
|
221 |
+
if (nt=='FB') { var data = { action: 'rePostToFB', id: 0, _wpnonce: jQuery('input#rePostToFB_wpnonce').val()}; callAjSNAP(data, 'Facebook'); }
|
222 |
+
if (nt=='TW') { var data = { action: 'rePostToTW', id: 0, _wpnonce: jQuery('input#rePostToTW_wpnonce').val()}; callAjSNAP(data, 'Twitter'); }
|
223 |
+
if (nt=='TR') { var data = { action: 'rePostToTR', id: 0, _wpnonce: jQuery('input#rePostToTR_wpnonce').val()}; callAjSNAP(data, 'Tumblr'); }
|
224 |
+
if (nt=='PN') { var data = { action: 'rePostToPN', id: 0, _wpnonce: jQuery('input#rePostToPN_wpnonce').val()}; callAjSNAP(data, 'Pinterest'); }
|
225 |
+
if (nt=='BG') { var data = { action: 'rePostToBG', id: 0, _wpnonce: jQuery('input#rePostToBG_wpnonce').val()}; callAjSNAP(data, 'Blogger'); }
|
226 |
+
if (nt=='LI') { var data = { action: 'rePostToLI', id: 0, _wpnonce: jQuery('input#rePostToLI_wpnonce').val()}; callAjSNAP(data, 'LinkedIn'); }
|
227 |
+
}
|
228 |
+
|
229 |
+
jQuery(function() {
|
230 |
+
var moveLeft = 20;
|
231 |
+
var moveDown = 10;
|
232 |
+
|
233 |
+
jQuery('a#showShAtt').hover(function(e) {
|
234 |
+
jQuery('div#popShAtt').show()
|
235 |
+
.css('top', e.pageY + moveDown)
|
236 |
+
.css('left', e.pageX + moveLeft)
|
237 |
+
.appendTo('body');
|
238 |
+
}, function() {
|
239 |
+
jQuery('div#popShAtt').hide();
|
240 |
+
});
|
241 |
+
|
242 |
+
jQuery('a#showShAtt').mousemove(function(e) {
|
243 |
+
jQuery("div#popShAtt").css('top', e.pageY + moveDown).css('left', e.pageX + moveLeft);
|
244 |
+
});
|
245 |
+
|
246 |
+
});
|
247 |
+
|
248 |
+
</script>
|
249 |
+
|
250 |
+
<style type="text/css">
|
251 |
+
.NXSButton { background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #89c403), color-stop(1, #77a809) );
|
252 |
+
background:-moz-linear-gradient( center top, #89c403 5%, #77a809 100% );
|
253 |
+
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#89c403', endColorstr='#77a809');
|
254 |
+
background-color:#89c403; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px;
|
255 |
+
border:1px solid #74b807; display:inline-block; color:#ffffff; font-family:Trebuchet MS; font-size:12px;
|
256 |
+
font-weight:bold; padding:2px 5px; text-decoration:none; text-shadow:1px 1px 0px #528009;
|
257 |
+
}.NXSButton:hover {color:#ffffff;
|
258 |
+
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #77a809), color-stop(1, #89c403) );
|
259 |
+
background:-moz-linear-gradient( center top, #77a809 5%, #89c403 100% );
|
260 |
+
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#77a809', endColorstr='#89c403');
|
261 |
+
background-color:#77a809;
|
262 |
+
}.NXSButton:active {color:#ffffff; position:relative; top:1px;
|
263 |
+
}.NXSButton:focus {color:#ffffff; position:relative; top:1px;
|
264 |
+
}.nxsMultiSelect{ width: 250px; border: 1px solid #CCCCCC; }
|
265 |
+
div#popShAtt {
|
266 |
+
display: none;
|
267 |
+
position: absolute;
|
268 |
+
width: 600px;
|
269 |
+
padding: 10px;
|
270 |
+
background: #eeeeee;
|
271 |
+
color: #000000;
|
272 |
+
border: 1px solid #1a1a1a;
|
273 |
+
font-size: 90%;
|
274 |
+
}
|
275 |
+
.underdash {border-bottom: 1px #21759B dashed; text-decoration:none;}
|
276 |
+
.underdash a:hover {border-bottom: 1px #21759B dashed}
|
277 |
+
</style>
|
278 |
+
<div style="float:right; padding-top: 10px; padding-right: 10px;">
|
279 |
+
<div style="float:right;"><a target="_blank" href="http://www.nextscripts.com"><img src="http://direct.gtln.us/img/nxs/NextScriptsLogoT.png"></a></div>
|
280 |
+
<div style="float:right; text-align: right; padding-right: 10px;"><a style="font-weight: normal; font-size: 16px; line-height: 24px;" target="_blank" href="http://www.nextscripts.com/support">Contact support</a> |
|
281 |
+
<a style="font-weight: normal; font-size: 16px; line-height: 24px;" target="_blank" href="http://gd.is/s9xd">Donate</a>
|
282 |
+
|
283 |
+
<br/><a target="_blank" href="http://www.owssoftware.com/startcouponwebsite">Make Money with Your Own<br/> Free Deals/Coupons Website</a>
|
284 |
+
</div>
|
285 |
+
</div>
|
286 |
+
<?php $nxsOne = NextScripts_SNAP_Version; ?>
|
287 |
+
<div class="wrap"><h2>Next Scripts: Social Networks AutoPoster Options</h2>Version: <?php echo NextScripts_SNAP_Version; ?> [Single Account] - <a target="_blank" href="http://www.nextscripts.com/social-networks-auto-poster-for-wp-multiple-accounts">Get Multiple Accounts Edition</a><br/><br/>
|
288 |
+
<span style="color:#008000;"><b>Do you want to see some upcoming features?</b> Completely re-done <a target="_blank" href="http://www.nextscripts.com/social-networks-auto-poster-beta">version 2.0 Beta</a> is available to try.</span>
|
289 |
+
<br/><br/>
|
290 |
+
Please see the <a target="_blank" href="http://www.nextscripts.com/installation-of-social-networks-auto-poster-for-wordpress">detailed installation instructions</a> (will open in a new tab)
|
291 |
+
<?php
|
292 |
+
|
293 |
+
if (!function_exists('curl_init')) { echo ('<br/><b style=\'font-size:16px; color:red;\'>Error: No CURL Found</b> <br/><i>Social Networks AutoPoster needs the CURL PHP extension. Please install it or contact your hosting company to install it.</i><br/>'); }
|
294 |
+
|
295 |
+
?>
|
296 |
+
|
297 |
+
<form method="post" action="<?php echo admin_url();?>options-general.php?page=NextScripts_SNAP.php">
|
298 |
+
<!-- ######################## G+ ###################################-->
|
299 |
+
<h3 style="font-size: 17px;">Google+ Settings</h3>
|
300 |
+
|
301 |
+
<?php if(!function_exists('doPostToGooglePlus')) {?> Google+ don't have a built-in API for automated posts yet. The current <a href="http://developers.google.com/+/api/">Google+ API</a> is "Read Only" and can't be used for posting. <br/>You need to get a special <a target="_blank" href="http://www.nextscripts.com/google-plus-automated-posting">library module</a> to be able to publish your content to Google+. <br/><br/>When you get the library, please place the <b>postToGooglePlus.php</b> file to the <b>/wp-content/plugins/</b> or <b>/wp-content/plugins/social-networks-auto-poster-facebook-twitter-g/apis/</b> folder to activate Google+ publishing functionality. <br/>
|
302 |
+
<i><b>*****</b> If you have <b>upgraded</b> the script from WordPress.org and lost Google+ functionality, please upload <b>postToGooglePlus.php</b> file to the <b>/wp-content/plugins/</b> That will keep it from getting removed again with the next update.</i>
|
303 |
+
|
304 |
+
<?php } else {?>
|
305 |
+
|
306 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoGP" name="apDoGP" onchange="doShowHideBlocks('GP');" type="checkbox" <?php if ((int)$options['gp'][0]['doGP'] == 1) echo "checked"; $nxsOne .= "&g=1" ?> />
|
307 |
+
<strong>Auto-publish your Posts to your Google+ Page or Profile</strong>
|
308 |
+
</p>
|
309 |
+
<div id="doGPDiv" style="margin-left: 10px;<?php if ((int)$options['gp'][0]['doGP'] != 1) echo "display:none"; ?> ">
|
310 |
+
|
311 |
+
<div style="width:100%;"><strong>Google+ Username:</strong> </div><input name="apGPUName" id="apGPUName" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['gp'][0]['gpUName']), 'NS_SNAutoPoster') ?>" />
|
312 |
+
<div style="width:100%;"><strong>Google+ Password:</strong> </div><input name="apGPPass" id="apGPPass" type="password" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit', substr($options['gp'][0]['gpPass'], 0, 5)=='n5g9a'?nsx_doDecode(substr($options['gp'][0]['gpPass'], 5)):$options['gp'][0]['gpPass']), 'NS_SNAutoPoster') ?>" /> <br/>
|
313 |
+
<p><div style="width:100%;"><strong>Google+ Page ID (Optional):</strong>
|
314 |
+
<p style="font-size: 11px; margin: 0px;">If URL for your page is https://plus.google.com/u/0/b/117008619877691455570/ your Page ID is: 117008619877691455570. Leave Empty to publish to your profile.</p>
|
315 |
+
</div><input name="apGPPage" id="apGPPage" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['gp'][0]['gpPageID']), 'NS_SNAutoPoster') ?>" />
|
316 |
+
<br/><br/>
|
317 |
+
<p style="margin: 0px;"><input value="1" id="apGPAttch" onchange="doShowHideAltFormat();" type="checkbox" name="apGPAttch" <?php if ((int)$options['gp'][0]['gpAttch'] == 1) echo "checked"; ?> />
|
318 |
+
<strong>Publish Posts to Google+ as an Attachement</strong>
|
319 |
+
</p>
|
320 |
+
|
321 |
+
<div id="altFormat" style="<?php if ((int)$options['gp'][0]['gpAttch'] == 1) echo "margin-left: 20px;"; ?> ">
|
322 |
+
<div style="width:100%;"><strong id="altFormatText"><?php if ((int)$options['gp'][0]['gpAttch'] == 1) echo "Post Announce Text:"; else echo "Post Text Format:"; ?></strong>
|
323 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
324 |
+
</div><input name="apGPMsgFrmt" id="apGPMsgFrmt" style="width: 50%;" value="<?php _e(apply_filters('format_to_edit',$options['gp'][0]['gpMsgFormat']), 'NS_SNAutoPoster') ?>" />
|
325 |
+
</div><br/>
|
326 |
+
|
327 |
+
<?php if ($options['gp'][0]['gpPass']!='') { ?>
|
328 |
+
<?php wp_nonce_field( 'rePostToGP', 'rePostToGP_wpnonce' ); ?>
|
329 |
+
<b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('GP'); return false;">Submit Test Post to Google+</a>
|
330 |
+
<?php } ?>
|
331 |
+
|
332 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
333 |
+
</div>
|
334 |
+
<?php } ?>
|
335 |
+
<!-- ############# PINTEREST ################ -->
|
336 |
+
<h3 style="font-size: 17px;">Pinterest Settings</h3>
|
337 |
+
|
338 |
+
<?php if(!function_exists('doPostToPinterest')) {?> Pinterest don't have a built-in API for automated posts yet. <br/>You need to get a special <a target="_blank" href="http://www.nextscripts.com/pinterest-automated-posting">library module</a> to be able to publish your content to Pinterest. <br/><br/>When you get the library, please place the <b>postToPinterest.php</b> file to the <b>/wp-content/plugins/</b> <br/>
|
339 |
+
|
340 |
+
<?php } else {?>
|
341 |
+
|
342 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoPN" name="apDoPN" onchange="doShowHideBlocks('PN');" type="checkbox" <?php if ((int)$options['pn'][0]['doPN'] == 1) echo "checked"; $nxsOne .= "&p=1" ?> />
|
343 |
+
<strong>Auto-publish your Posts to your Pinterest Board</strong>
|
344 |
+
</p>
|
345 |
+
<div id="doPNDiv" style="margin-left: 10px;<?php if ((int)$options['pn'][0]['doPN'] != 1) echo "display:none"; ?> ">
|
346 |
+
|
347 |
+
<div style="width:100%;"><strong>Pinterest Username:</strong> </div><input name="apPNUName" id="apPNUName" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['pn'][0]['pnUName']), 'NS_SNAutoPoster') ?>" />
|
348 |
+
<div style="width:100%;"><strong>Pinterest Password:</strong> </div><input name="apPNPass" id="apPNPass" type="password" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit', substr($options['pn'][0]['pnPass'], 0, 5)=='g9c1a'?nsx_doDecode(substr($options['pn'][0]['pnPass'], 5)):$options['pn'][0]['pnPass']), 'NS_SNAutoPoster') ?>" /> <br/>
|
349 |
+
<div style="width:100%;"><strong>Defailt Image to Pin:</strong>
|
350 |
+
<p style="font-size: 11px; margin: 0px;">If your post missing Featured Image this will be used instead.</p>
|
351 |
+
</div><input name="apPNDefImg" id="apPNDefImg" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['pn'][0]['pnDefImg']), 'NS_SNAutoPoster') ?>" />
|
352 |
+
<br/><br/>
|
353 |
+
|
354 |
+
<div style="width:100%;"><strong>Board:</strong>
|
355 |
+
Please <a href="#" onclick="getBoards(jQuery('#apPNUName').val(),jQuery('#apPNPass').val()); return false;">click here to retreive your boards</a>
|
356 |
+
</div>
|
357 |
+
<?php wp_nonce_field( 'getBoards', 'getBoards_wpnonce' ); ?><img id="pnLoadingImg" style="display: none;" src='http://gtln.us/img/misc/ajax-loader-sm.gif' />
|
358 |
+
<select name="apPNBoard" id="apPNBoard">
|
359 |
+
<?php if ($options['pn'][0]['pnBoardsList']!=''){ $gPNBoards = $options['pn'][0]['pnBoardsList']; if ($options['pn'][0]['pnBoard']!='') $gPNBoards = str_replace($options['pn'][0]['pnBoard'].'"', $options['pn'][0]['pnBoard'].'" selected="selected"', $gPNBoards); echo $gPNBoards;} else { ?>
|
360 |
+
<option value="0">None(Click above to retreive your boards)</option>
|
361 |
+
<?php } ?>
|
362 |
+
</select>
|
363 |
+
|
364 |
+
<br/><br/>
|
365 |
+
|
366 |
+
<div id="altFormat" style="">
|
367 |
+
<div style="width:100%;"><strong id="altFormatText">Post Text Format</strong>
|
368 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
369 |
+
</div><input name="apPNMsgFrmt" id="apPNMsgFrmt" style="width: 50%;" value="<?php if ($options['pn'][0]['pnMsgFormat']!='') _e(apply_filters('format_to_edit',$options['pn'][0]['pnMsgFormat']), 'NS_SNAutoPoster'); else echo "%TITLE% - %URL%"; ?>" />
|
370 |
+
</div><br/>
|
371 |
+
|
372 |
+
<?php if ($options['pn'][0]['pnPass']!='') { ?>
|
373 |
+
<?php wp_nonce_field( 'rePostToPN', 'rePostToPN_wpnonce' ); ?>
|
374 |
+
<b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('PN'); return false;">Submit Test Post to Pinterest</a>
|
375 |
+
<?php } ?>
|
376 |
+
|
377 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
378 |
+
</div>
|
379 |
+
<?php } ?>
|
380 |
+
|
381 |
+
<!-- ##################### FB #####################--> <hr/>
|
382 |
+
<h3 style="font-size: 17px;">FaceBook Settings</h3>
|
383 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoFB" name="apDoFB" onchange="doShowHideBlocks('FB');" type="checkbox" <?php if ((int)$options['fb'][0]['doFB'] == 1) echo "checked"; ?> />
|
384 |
+
<strong>Auto-publish your Posts to your Facebook Page or Profile</strong>
|
385 |
+
</p>
|
386 |
+
<div id="doFBDiv" style="margin-left: 10px;<?php if ((int)$options['fb'][0]['doFB'] != 1) echo "display:none"; ?> ">
|
387 |
+
|
388 |
+
<div style="width:100%;"><strong>Your Facebook URL:</strong> </div>
|
389 |
+
<p style="font-size: 11px; margin: 0px;">Could be your Facebook Profile, Facebook Page, Facebook Group</p>
|
390 |
+
<input name="apFBURL" id="apFBURL" style="width: 50%;" value="<?php _e(apply_filters('format_to_edit',$options['fb'][0]['fbURL']), 'NS_SNAutoPoster') ?>" />
|
391 |
+
|
392 |
+
<div style="width:100%;"><strong>Your Facebook App ID:</strong> </div><input name="apFBAppID" id="apFBAppID" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['fb'][0]['fbAppID']), 'NS_SNAutoPoster') ?>" />
|
393 |
+
<div style="width:100%;"><strong>Your Facebook App Secret:</strong> </div><input name="apFBAppSec" id="apFBAppSec" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['fb'][0]['fbAppSec']), 'NS_SNAutoPoster') ?>" />
|
394 |
+
|
395 |
+
|
396 |
+
<br/><br/>
|
397 |
+
<div id="altFormat">
|
398 |
+
<div style="width:100%;"><strong id="altFormatText"><?php if ((int)$options['fb'][0]['fbAttch'] == 1) echo "Message text:"; else echo "Message text:"; ?></strong> <br/>
|
399 |
+
<input name="apFBMsgFrmt" id="apFBMsgFrmt" style="width: 50%;" value="<?php _e(apply_filters('format_to_edit',$options['fb'][0]['fbMsgFormat']), 'NS_SNAutoPoster') ?>" /><br/>
|
400 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
401 |
+
</div>
|
402 |
+
</div>
|
403 |
+
|
404 |
+
<br/>
|
405 |
+
<p style="margin: 0px;"><input value="2" id="apFBAttchShare" onchange="doSwitchShAtt(0);" type="checkbox" name="apFBAttch" <?php if ((int)$options['fb'][0]['fbAttch'] == 2) echo "checked"; ?> />
|
406 |
+
<strong>Share a link to your blogpost</strong> .. or ..
|
407 |
+
<input value="1" id="apFBAttch" onchange="doSwitchShAtt(1);" type="checkbox" name="apFBAttch" <?php if ((int)$options['fb'][0]['fbAttch'] == 1) echo "checked"; ?> />
|
408 |
+
<strong>Attach your blogpost</strong> <-- (<a id="showShAtt" onclick="return false;" class="underdash" href="http://www.nextscripts.com/blog/">What's the difference?</a>)
|
409 |
+
|
410 |
+
</p>
|
411 |
+
<div id="popShAtt">
|
412 |
+
<h3>Two ways of attaching post on Facebook</h3>
|
413 |
+
<p>
|
414 |
+
|
415 |
+
</p> <img src="http://cdn.gtln.us/img/nxs/fb2wops.jpg" width="600" height="271" alt="Two ways of attaching post on Facebook"/>
|
416 |
+
</div>
|
417 |
+
|
418 |
+
<p style="margin: 10px; "><input value="1" id="apFBAttchAsVid" type="checkbox" name="apFBAttchAsVid" <?php if ((int)$options['fb'][0]['fbAttchAsVid'] == 1) echo "checked"; ?> />
|
419 |
+
<strong>If post has video use it for attachment.</strong> If post has video (youtube only supported at this time) this video will be used for attachment instead of featured image.
|
420 |
+
</p>
|
421 |
+
|
422 |
+
<br/>
|
423 |
+
<?php if ($options['fb'][0]['fbPgID']!='') {?><div style="width:100%;"><strong>Your Facebook Page ID:</strong> <?php _e(apply_filters('format_to_edit',$options['fb'][0]['fbPgID']), 'NS_SNAutoPoster') ?> </div><?php } ?>
|
424 |
+
<?php
|
425 |
+
if($options['fb'][0]['fbAppSec']=='') { ?>
|
426 |
+
<b>Authorize Your FaceBook Account</b>. Please save your settings and come back here to Authorize your account.
|
427 |
+
<?php } else { if($options['fb'][0]['fbAppAuthUser']>0) { ?>
|
428 |
+
Your FaceBook Account has been authorized. User ID: <?php _e(apply_filters('format_to_edit',$options['fb'][0]['fbAppAuthUser']), 'NS_SNAutoPoster') ?>.
|
429 |
+
You can Re- <?php } ?>
|
430 |
+
<a target="_blank" href="https://www.facebook.com/dialog/oauth?client_id=<?php echo $options['fb'][0]['fbAppID'];?>&client_secret=<?php echo $options['fb'][0]['fbAppSec'];?>&redirect_uri=<?php echo admin_url();?>options-general.php?page=NextScripts_SNAP.php&scope=publish_stream,offline_access,read_stream,manage_pages">Authorize Your FaceBook Account</a>
|
431 |
+
|
432 |
+
<?php if($options['fb'][0]['fbAppAuthUser']<1) { ?>
|
433 |
+
<br/><br/><i> If you get Facebook message : <b>"Error. An error occurred. Please try again later."</b> please make sure that domain name in your Facebook App matches your website domain exactly. Please note that <b>nextscripts.com</b> and <b style="color:#800000;">www.</b><b>nextscripts.com</b> are different domains.</i> <?php }?>
|
434 |
+
<?php }
|
435 |
+
|
436 |
+
if ( isset($_GET['code']) && $_GET['code']!='' && $_GET['action']!='gPlusAuth'){ $at = $_GET['code']; echo "Code:".$at;
|
437 |
+
$response = wp_remote_get('https://graph.facebook.com/oauth/access_token?client_id='.$options['fb'][0]['fbAppID'].'&redirect_uri='.urlencode(admin_url().'options-general.php?page=NextScripts_SNAP.php').'&client_secret='.$options['fb'][0]['fbAppSec'].'&code='.$at);
|
438 |
+
if ((is_object($response) && isset($response->errors))) { prr($response); die();}
|
439 |
+
parse_str($response['body'], $params); $at = $params['access_token'];
|
440 |
+
$response = wp_remote_get('https://graph.facebook.com/oauth/access_token?client_secret='.$options['fb'][0]['fbAppSec'].'&client_id='.$options['fb'][0]['fbAppID'].'&grant_type=fb_exchange_token&fb_exchange_token='.$at);
|
441 |
+
if ((is_object($response) && isset($response->errors))) { prr($response); die();}
|
442 |
+
if ((is_array($response) && isset($response['response']['code']) && $response['response']['code']!='200')) { prr($response['body']); die();}
|
443 |
+
parse_str($response['body'], $params); $at = $params['access_token']; $options['fb'][0]['fbAppAuthToken'] = $at;
|
444 |
+
require_once ('apis/facebook.php'); echo "Using API";
|
445 |
+
$facebook = new NXS_Facebook(array( 'appId' => $options['fb'][0]['fbAppID'], 'secret' => $options['fb'][0]['fbAppSec'], 'cookie' => true));
|
446 |
+
$facebook -> setAccessToken($options['fb'][0]['fbAppAuthToken']); $user = $facebook->getUser(); echo "USER:"; prr($user);
|
447 |
+
if ($user) {
|
448 |
+
try { $page_id = $options['fb'][0]['fbPgID']; $page_info = $facebook->api("/$page_id?fields=access_token");
|
449 |
+
if( !empty($page_info['access_token']) ) { $options['fb'][0]['fbAppPageAuthToken'] = $page_info['access_token']; }
|
450 |
+
} catch (NXS_FacebookApiException $e) { $errMsg = $e->getMessage();
|
451 |
+
if ( stripos($errMsg, 'Unknown fields: access_token')!==false) $options['fb'][0]['fbAppPageAuthToken'] = $fbo['fbAppAuthToken']; else { echo 'Error:', $errMsg, "\n"; die(); }
|
452 |
+
}
|
453 |
+
}else echo "Please login to Facebook";
|
454 |
+
|
455 |
+
if ($user>0) $options['fb'][0]['fbAppAuthUser'] = $user; update_option($this->dbOptionsName . $optionsAppend, $options);
|
456 |
+
?><script type="text/javascript">window.location = "<?php echo admin_url(); ?>options-general.php?page=NextScripts_SNAP.php"</script><?php
|
457 |
+
die();
|
458 |
+
}
|
459 |
+
?>
|
460 |
+
<?php if($options['fb'][0]['fbAppAuthUser']>0) { ?>
|
461 |
+
<?php wp_nonce_field( 'rePostToFB', 'rePostToFB_wpnonce' ); ?>
|
462 |
+
<br/><br/><b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('FB'); return false;">Submit Test Post to Facebook</a>
|
463 |
+
<?php }?>
|
464 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
465 |
+
|
466 |
+
</div>
|
467 |
+
<!-- ##################### TW #####################--> <br/><hr/> <?php $nxsOne = base64_encode("v=".$nxsOne); ?>
|
468 |
+
<h3 style="font-size: 17px;">Twitter Settings</h3>
|
469 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoTW" name="apDoTW" onchange="doShowHideBlocks('TW');" type="checkbox" <?php if ((int)$options['tw'][0]['doTW'] == 1) echo "checked"; ?> />
|
470 |
+
<strong>Auto-publish your Posts to your Twitter</strong>
|
471 |
+
</p>
|
472 |
+
<div id="doTWDiv" style="margin-left: 10px;<?php if ((int)$options['tw'][0]['doTW'] != 1) echo "display:none"; ?> ">
|
473 |
+
|
474 |
+
<div style="width:100%;"><strong>Your Twitter URL:</strong> </div><input name="apTWURL" id="apTWURL" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tw'][0]['twURL']), 'NS_SNAutoPoster') ?>" />
|
475 |
+
<div style="width:100%;"><strong>Your Twitter Consumer Key:</strong> </div><input name="apTWConsKey" id="apTWConsKey" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tw'][0]['twConsKey']), 'NS_SNAutoPoster') ?>" />
|
476 |
+
<div style="width:100%;"><strong>Your Twitter Consumer Secret:</strong> </div><input name="apTWConsSec" id="apTWConsSec" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tw'][0]['twConsSec']), 'NS_SNAutoPoster') ?>" />
|
477 |
+
<div style="width:100%;"><strong>Your Access Token:</strong> </div><input name="apTWAccToken" id="apTWAccToken" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tw'][0]['twAccToken']), 'NS_SNAutoPoster') ?>" />
|
478 |
+
<div style="width:100%;"><strong>Your Access Token Secret:</strong> </div><input name="apTWAccTokenSec" id="apTWAccTokenSec" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tw'][0]['twAccTokenSec']), 'NS_SNAutoPoster') ?>" />
|
479 |
+
|
480 |
+
<div style="width:100%;">
|
481 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
482 |
+
</div><img src="http://www.nextscripts.com/gif.php<?php echo "?g=".$nxsOne; ?> ">
|
483 |
+
|
484 |
+
<input name="apTWMsgFrmt" id="apTWMsgFrmt" style="width: 50%;" value="<?php if (!$isNew) _e(apply_filters('format_to_edit',$options['tw'][0]['twMsgFormat']), 'NS_SNAutoPoster'); else echo "%TITLE% - %URL%"; ?>" />
|
485 |
+
|
486 |
+
<?php if($options['tw'][0]['twAccTokenSec']!='') { ?>
|
487 |
+
<?php wp_nonce_field( 'rePostToTW', 'rePostToTW_wpnonce' ); ?>
|
488 |
+
<br/><br/><b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('TW'); return false;">Submit Test Post to Twitter</a> <br/><br/>
|
489 |
+
<?php }?>
|
490 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
491 |
+
</div>
|
492 |
+
<!-- ##################### LinkedIn #####################--> <br/><hr/>
|
493 |
+
<h3 style="font-size: 17px;">LinkedIn Settings</h3>
|
494 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoLI" name="apDoLI" onchange="doShowHideBlocks('LI');" type="checkbox" <?php if ((int)$options['li'][0]['doLI'] == 1) echo "checked"; ?> />
|
495 |
+
<strong>Auto-publish your Posts to your LinkedIn</strong>
|
496 |
+
</p>
|
497 |
+
<div id="doLIDiv" style="margin-left: 10px;<?php if ((int)$options['li'][0]['doLI'] != 1) echo "display:none"; ?> ">
|
498 |
+
|
499 |
+
<div style="width:100%;"><strong>Your LinkedIn API Key:</strong> </div><input name="apLIAPIKey" id="apLIAPIKey" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['li'][0]['liAPIKey']), 'NS_SNAutoPoster') ?>" />
|
500 |
+
<div style="width:100%;"><strong>Your LinkedIn API Secret:</strong> </div><input name="apLIAPISec" id="apLIAPISec" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['li'][0]['liAPISec']), 'NS_SNAutoPoster') ?>" />
|
501 |
+
|
502 |
+
<br/><br/>
|
503 |
+
<p style="margin: 0px;"><input value="1" id="apLIAttch" onchange="doShowHideAltFormat();" type="checkbox" name="apLIAttch" <?php if ((int)$options['li'][0]['liAttch'] == 1) echo "checked"; ?> />
|
504 |
+
<strong>Publish Posts to LinkedIn as an Attachement</strong>
|
505 |
+
</p>
|
506 |
+
|
507 |
+
<div id="altFormat" style="<?php if ((int)$options['li'][0]['liAttch'] == 1) echo "margin-left: 10px;"; ?> ">
|
508 |
+
<div style="width:100%;"><strong id="altFormatText"><?php if ((int)$options['li'][0]['liAttch'] == 1) echo "Post Announce Text:"; else echo "Post Text Format:"; ?></strong>
|
509 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
510 |
+
</div><input name="apLIMsgFrmt" id="apLIMsgFrmt" style="width: 50%;" value="<?php _e(apply_filters('format_to_edit',$options['li'][0]['liMsgFormat']), 'NS_SNAutoPoster') ?>" />
|
511 |
+
</div><br/>
|
512 |
+
|
513 |
+
<br/>
|
514 |
+
<?php
|
515 |
+
if($options['li'][0]['liAPIKey']=='') { ?>
|
516 |
+
<b>Authorize Your LinkedIn Account</b>. Please save your settings and come back here to Authorize your account.
|
517 |
+
<?php } else { if(isset($options['li'][0]['liAccessToken']) && isset($options['li'][0]['liAccessTokenSecret']) && $options['li'][0]['liAccessTokenSecret']!=='') { ?>
|
518 |
+
Your LinkedIn Account has been authorized. User ID: <?php _e(apply_filters('format_to_edit',$options['li'][0]['liUserInfo']), 'NS_SNAutoPoster') ?>.
|
519 |
+
You can Re- <?php } ?>
|
520 |
+
<a target="_blank" href="<?php echo admin_url();?>options-general.php?page=NextScripts_SNAP.php&auth=li">Authorize Your LinkedIn Account</a>
|
521 |
+
<?php }
|
522 |
+
if ( isset($_GET['auth']) && $_GET['auth']=='li'){ require_once('apis/liOAuth.php'); $api_key = $options['li'][0]['liAPIKey']; $api_secret = $options['li'][0]['liAPISec'];
|
523 |
+
$callback_url = admin_url()."options-general.php?page=NextScripts_SNAP.php&auth=lia";
|
524 |
+
$li_oauth = new nsx_LinkedIn($api_key, $api_secret, $callback_url);
|
525 |
+
$request_token = $li_oauth->getRequestToken(); //echo "####"; prr($request_token); die();
|
526 |
+
$options['li'][0]['liOAuthToken'] = $request_token->key;
|
527 |
+
$options['li'][0]['liOAuthTokenSecret'] = $request_token->secret;
|
528 |
+
switch ($li_oauth->http_code) { case 200: $url = $li_oauth->generateAuthorizeUrl(); update_option($this->dbOptionsName, $options); prr($url);
|
529 |
+
echo '<script type="text/javascript">window.location = "'.$url.'"</script>'; break;
|
530 |
+
default: echo '<br/><b style="color:red">Could not connect to LinkedIn. Refresh the page or try again later.</b>'; die();
|
531 |
+
}die();
|
532 |
+
}
|
533 |
+
if ( isset($_GET['auth']) && $_GET['auth']=='lia'){ require_once('apis/liOAuth.php'); $api_key = $options['li'][0]['liAPIKey']; $api_secret = $options['li'][0]['liAPISec'];
|
534 |
+
$li_oauth = new nsx_LinkedIn($api_key, $api_secret); $li_oauth->request_token = new nsx_trOAuthConsumer($options['li'][0]['liOAuthToken'], $options['li'][0]['liOAuthTokenSecret'], 1);
|
535 |
+
$li_oauth->oauth_verifier = $_REQUEST['oauth_verifier']; $li_oauth->getAccessToken($_REQUEST['oauth_verifier']); $options['li'][0]['liOAuthVerifier'] = $_REQUEST['oauth_verifier'];
|
536 |
+
$options['li'][0]['liAccessToken'] = $li_oauth->access_token->key; $options['li'][0]['liAccessTokenSecret'] = $li_oauth->access_token->secret;
|
537 |
+
try{$xml_response = $li_oauth->getProfile("~:(id,first-name,last-name)");} catch (Exception $o){prr($o); die("<span style='color:red;'>ERROR: Authorization Error</span>");}
|
538 |
+
$userinfo = CutFromTo($xml_response, '<id>','</id>')." - ".CutFromTo($xml_response, '<first-name>','</first-name>')." ".CutFromTo($xml_response, '<last-name>','</last-name>');
|
539 |
+
if ($userinfo!='') { $options['li'][0]['liUserInfo'] = $userinfo; update_option($this->dbOptionsName, $options);
|
540 |
+
echo '<script type="text/javascript">window.location = "'.admin_url().'options-general.php?page=NextScripts_SNAP.php"</script>'; break; die();
|
541 |
+
}die("<span style='color:red;'>ERROR: Something is Wrong with your LinkedIn account</span>");
|
542 |
+
}
|
543 |
+
?>
|
544 |
+
|
545 |
+
<?php if($options['li'][0]['liAPIKey']!='') { ?>
|
546 |
+
<?php wp_nonce_field( 'rePostToLI', 'rePostToLI_wpnonce' ); ?>
|
547 |
+
<br/><br/><b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('LI'); return false;">Submit Test Post to LinkedIn</a> <br/><br/>
|
548 |
+
<?php }?>
|
549 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
550 |
+
</div>
|
551 |
+
|
552 |
+
<!-- ############# BLOGGER ################ --> <hr/>
|
553 |
+
<h3 style="font-size: 17px;">Blogger Settings</h3>
|
554 |
+
|
555 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoBG" name="apDoBG" onchange="doShowHideBlocks('BG');" type="checkbox" <?php if ((int)$options['bg'][0]['doBG'] == 1) echo "checked"; $nxsOne = "?g=1" ?> />
|
556 |
+
<strong>Auto-publish your Posts to your Blogger/Blogspot Blog</strong>
|
557 |
+
</p>
|
558 |
+
<div id="doBGDiv" style="margin-left: 10px;<?php if ((int)$options['bg'][0]['doBG'] != 1) echo "display:none"; ?> ">
|
559 |
+
|
560 |
+
<div style="width:100%;"><strong>Blogger Username/Email:</strong> </div><input name="apBGUName" id="apBGUName" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['bg'][0]['bgUName']), 'NS_SNAutoPoster') ?>" />
|
561 |
+
<div style="width:100%;"><strong>Blogger Password:</strong> </div><input name="apBGPass" id="apBGPass" type="password" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit', substr($options['bg'][0]['bgPass'], 0, 5)=='b4d7s'?nsx_doDecode(substr($options['bg'][0]['bgPass'], 5)):$options['bg'][0]['bgPass']), 'NS_SNAutoPoster') ?>" /> <br/>
|
562 |
+
<div style="width:100%;"><strong>Blogger Blog ID:</strong>
|
563 |
+
<p style="font-size: 11px; margin: 0px;">Log to your Blogger management panel and look at the URL: http://www.blogger.com/blogger.g?blogID=8959085979163812093#allposts. Your Blog ID will be: 8959085979163812093</p>
|
564 |
+
</div><input name="apBGBlogID" id="apBGBlogID" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['bg'][0]['bgBlogID']), 'NS_SNAutoPoster') ?>" />
|
565 |
+
<br/><br/>
|
566 |
+
|
567 |
+
<div style="width:100%;"><strong id="altFormatText">Post Title Format</strong>
|
568 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
569 |
+
</div>
|
570 |
+
|
571 |
+
<input name="apBGMsgTFrmt" id="apBGMsgTFrmt" style="width: 50%;" value="<?php if ($options['bg'][0]['bgMsgTFormat']!='') _e(apply_filters('format_to_edit', stripcslashes(str_replace('"',"'",$options['bg'][0]['bgMsgTFormat']))), 'NS_SNAutoPoster'); else echo "%TITLE%"; ?>" /><br/>
|
572 |
+
|
573 |
+
<div id="altFormat" style="">
|
574 |
+
<div style="width:100%;"><strong id="altFormatText">Post Text Format</strong>
|
575 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
576 |
+
</div><input name="apBGMsgFrmt" id="apBGMsgFrmt" style="width: 50%;" value="<?php if ($options['bg'][0]['bgMsgFormat']!='') _e(apply_filters('format_to_edit',stripcslashes(str_replace('"',"'",$options['bg'][0]['bgMsgFormat']))), 'NS_SNAutoPoster'); else echo "%FULLTEXT% <br/><a href='%URL%'>%TITLE%</a>"; ?>" />
|
577 |
+
</div>
|
578 |
+
|
579 |
+
<p style="margin-bottom: 20px;margin-top: 5px;"><input value="1" id="bgInclTags" type="checkbox" name="bgInclTags" <?php if ((int)$options['bg'][0]['bgInclTags'] == 1) echo "checked"; ?> />
|
580 |
+
<strong>Post with tags</strong> Tags from the blogpost will be auto posted to Blogger/Blogspot
|
581 |
+
</p>
|
582 |
+
|
583 |
+
<?php if ($options['bg'][0]['bgPass']!='') { ?>
|
584 |
+
<?php wp_nonce_field( 'rePostToBG', 'rePostToBG_wpnonce' ); ?>
|
585 |
+
<b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('BG'); return false;">Submit Test Post to Blogger</a>
|
586 |
+
<?php } ?>
|
587 |
+
|
588 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
589 |
+
</div>
|
590 |
+
|
591 |
+
<!-- ##################### Tumblr #####################-->
|
592 |
+
<br/><hr/>
|
593 |
+
<h3 style="font-size: 17px;">Tumblr Settings</h3>
|
594 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="apDoTR" name="apDoTR" onchange="doShowHideBlocks('TR');" type="checkbox" <?php if ((int)$options['tr'][0]['doTR'] == 1) echo "checked"; ?> />
|
595 |
+
<strong>Auto-publish your Posts to your Tumblr</strong>
|
596 |
+
</p>
|
597 |
+
<div id="doTRDiv" style="margin-left: 10px;<?php if ((int)$options['tr'][0]['doTR'] != 1) echo "display:none"; ?> ">
|
598 |
+
|
599 |
+
<div style="width:100%;"><strong>Your Tumblr URL:</strong> </div><input name="apTRURL" id="apTRURL" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tr'][0]['trURL']), 'NS_SNAutoPoster') ?>" />
|
600 |
+
<div style="width:100%;"><strong>Your Tumblr OAuth Consumer Key:</strong> </div><input name="apTRConsKey" id="apTRConsKey" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tr'][0]['trConsKey']), 'NS_SNAutoPoster') ?>" /> <div style="width:100%;"><strong>Your Tumblr Secret Key:</strong> </div><input name="apTRConsSec" id="apTRConsSec" style="width: 30%;" value="<?php _e(apply_filters('format_to_edit',$options['tr'][0]['trConsSec']), 'NS_SNAutoPoster') ?>" />
|
601 |
+
|
602 |
+
<div style="width:100%;"><strong id="altFormatText">Post Title Format</strong>
|
603 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
604 |
+
</div>
|
605 |
+
|
606 |
+
<input name="apTRMsgTFrmt" id="apTRMsgTFrmt" style="width: 50%;" value="<?php if ($options['tr'][0]['trMsgTFormat']!='') _e(apply_filters('format_to_edit', stripcslashes(str_replace('"',"'",$options['tr'][0]['trMsgTFormat']))), 'NS_SNAutoPoster'); else echo "New Post has been published on %SITENAME%"; ?>" /><br/>
|
607 |
+
|
608 |
+
<div style="width:100%;"><strong id="altFormatText">Post Text Format</strong>
|
609 |
+
<p style="font-size: 11px; margin: 0px;">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</p>
|
610 |
+
</div>
|
611 |
+
|
612 |
+
<input name="apTRMsgFrmt" id="apTRMsgFrmt" style="width: 50%;" value="<?php if ($options['tr'][0]['trMsgFormat']!='') _e(apply_filters('format_to_edit', stripcslashes(str_replace('"',"'",$options['tr'][0]['trMsgFormat']))), 'NS_SNAutoPoster'); else echo "<p>New Post has been published on %URL%</p><blockquote><p><strong>%TITLE%</strong></p><p><img src='%IMG%'/></p><p>%FULLTEXT%</p></blockquote>"; ?>" /><br/>
|
613 |
+
|
614 |
+
<p style="margin-bottom: 20px;margin-top: 5px;"><input value="1" id="trInclTags" type="checkbox" name="trInclTags" <?php if ((int)$options['tr'][0]['trInclTags'] == 1) echo "checked"; ?> />
|
615 |
+
<strong>Post with tags</strong> Tags from the blogpost will be auto posted to Tumblr
|
616 |
+
</p>
|
617 |
+
|
618 |
+
<?php
|
619 |
+
if($options['tr'][0]['trConsSec']=='') { ?>
|
620 |
+
<b>Authorize Your Tumblr Account</b>. Please save your settings and come back here to Authorize your account.
|
621 |
+
<?php } else { if(isset($options['tr'][0]['trAccessTocken']) && isset($options['tr'][0]['trAccessTocken']['oauth_token_secret']) && $options['tr'][0]['trAccessTocken']['oauth_token_secret']!=='') { ?>
|
622 |
+
Your Tumblr Account has been authorized. Blog ID: <?php _e(apply_filters('format_to_edit',$options['tr'][0]['trPgID']), 'NS_SNAutoPoster') ?>.
|
623 |
+
You can Re- <?php } ?>
|
624 |
+
<a target="_blank" href="<?php echo admin_url();?>options-general.php?page=NextScripts_SNAP.php&auth=tr">Authorize Your Tumblr Account</a>
|
625 |
+
|
626 |
+
<?php }
|
627 |
+
|
628 |
+
if ( isset($_GET['auth']) && $_GET['auth']=='tr'){ require_once('apis/trOAuth.php'); $consumer_key = $options['tr'][0]['trConsKey']; $consumer_secret = $options['tr'][0]['trConsSec'];
|
629 |
+
$callback_url = admin_url()."options-general.php?page=NextScripts_SNAP.php&auth=tra";
|
630 |
+
$tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret);prr($tum_oauth );
|
631 |
+
$request_token = $tum_oauth->getRequestToken($callback_url); echo "####"; prr($request_token);
|
632 |
+
$options['tr'][0]['trOAuthToken'] = $request_token['oauth_token'];
|
633 |
+
$options['tr'][0]['trOAuthTokenSecret'] = $request_token['oauth_token_secret'];// prr($tum_oauth ); die();
|
634 |
+
switch ($tum_oauth->http_code) { case 200: $url = $tum_oauth->getAuthorizeURL($options['tr'][0]['trOAuthToken']); update_option($this->dbOptionsName, $options);// prr($url);
|
635 |
+
echo '<script type="text/javascript">window.location = "'.$url.'"</script>'; break;
|
636 |
+
default: echo '<br/><b style="color:red">Could not connect to Tumblr. Refresh the page or try again later.</b>'; die();
|
637 |
+
}
|
638 |
+
die();
|
639 |
+
}
|
640 |
+
if ( isset($_GET['auth']) && $_GET['auth']=='tra'){ require_once('apis/trOAuth.php'); $consumer_key = $options['tr'][0]['trConsKey']; $consumer_secret = $options['tr'][0]['trConsSec'];
|
641 |
+
$tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $options['tr'][0]['trOAuthToken'], $options['tr'][0]['trOAuthTokenSecret']);
|
642 |
+
$options['tr'][0]['trAccessTocken'] = $tum_oauth->getAccessToken($_REQUEST['oauth_verifier']); // prr($_GET); prr($_REQUEST); prr($options['tr'][0]['trAccessTocken']);
|
643 |
+
$tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $options['tr'][0]['trAccessTocken']['oauth_token'], $options['tr'][0]['trAccessTocken']['oauth_token_secret']); update_option($this->dbOptionsName, $options);
|
644 |
+
$userinfo = $tum_oauth->get('http://api.tumblr.com/v2/user/info'); prr($userinfo); prr($tum_oauth);// prr($url); die();
|
645 |
+
if (is_array($userinfo->response->user->blogs)) {
|
646 |
+
foreach ($userinfo->response->user->blogs as $blog){
|
647 |
+
if (stripos($blog->url, $options['tr'][0]['trPgID'])!==false) { echo '<script type="text/javascript">window.location = "'.admin_url().'options-general.php?page=NextScripts_SNAP.php"</script>'; break; die();}
|
648 |
+
} prr($userinfo);
|
649 |
+
die("<span style='color:red;'>ERROR: Authorized USER don't have access to the specified blog: <span style='color:darkred; font-weight: bold;'>".$options['tr'][0]['trPgID']."</span></span>");
|
650 |
+
}
|
651 |
+
}
|
652 |
+
|
653 |
+
?>
|
654 |
+
|
655 |
+
<?php if($options['tr'][0]['trConsSec']!='') { ?>
|
656 |
+
<?php wp_nonce_field( 'rePostToTR', 'rePostToTR_wpnonce' ); ?>
|
657 |
+
<br/><br/><b>Test your settings:</b> <a href="#" class="NXSButton" onclick="testPost('TR'); return false;">Submit Test Post to Tumblr</a> <br/><br/>
|
658 |
+
<?php }?>
|
659 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
660 |
+
</div>
|
661 |
+
|
662 |
+
<br/><hr/>
|
663 |
+
<!-- ##################### OTHER #####################-->
|
664 |
+
|
665 |
+
|
666 |
+
|
667 |
+
<h3 style="font-size: 17px;">Other Settings</h3>
|
668 |
+
|
669 |
+
<h3 style="font-size: 14px; margin-bottom: 2px;">Include/Exclude Custom Post Types</h3>
|
670 |
+
<p style="font-size: 11px; margin: 0px;">Select Custom Post Types that you would to be published on your social networks</p>
|
671 |
+
<?php
|
672 |
+
$args=array('public'=>true, '_builtin'=>false); $output = 'names'; $operator = 'and'; $post_types=get_post_types($args, $output, $operator);
|
673 |
+
if ($options['nxsCPTSeld']!='') $nxsCPTSeld = unserialize($options['nxsCPTSeld']); else $nxsCPTSeld = array_keys($post_types);
|
674 |
+
?>
|
675 |
+
<select multiple="multiple" name="nxsCPTSeld[]" id="nxsCPTSeld" class="nxsMultiSelect" size="<?php echo count($post_types)+2; ?>">
|
676 |
+
<option <?php if (count($nxsCPTSeld)==0) echo 'selected="selected"'; ?> value="-----">----------------------- None -----------------------</option>
|
677 |
+
<?php
|
678 |
+
foreach ($post_types as $cptID=>$cptName){
|
679 |
+
?><option <?php if (in_array($cptID,$nxsCPTSeld)) echo 'selected="selected"'; ?> value="<?php echo $cptID; ?>"><?php echo $cptName; ?></option><?php
|
680 |
+
}
|
681 |
+
?>
|
682 |
+
</select>
|
683 |
+
|
684 |
+
<p><div style="width:100%;"><strong style="font-size: 14px;">Categories to Include/Exclude:</strong>
|
685 |
+
<p style="font-size: 11px; margin: 0px;">Publish posts only from specific categories. List IDs like: 3,4,5 or exclude some from specific categories from publishing. List IDs like: -3,-4,-5</p>
|
686 |
+
|
687 |
+
</div><input name="apCats" style="width: 30%;" value="<?php if (isset($options['apCats'])) _e(apply_filters('format_to_edit',$options['apCats']), 'NS_SNAutoPoster') ?>" /></p>
|
688 |
+
|
689 |
+
|
690 |
+
|
691 |
+
<h3 style="font-size: 14px; margin-bottom: 2px;">"Open Graph" Tags</h3>
|
692 |
+
<span style="font-size: 11px; margin-left: 1px;">"Open Graph" tags are used for generating title, description and preview image for your Facebook and Google+ posts. This is quite simple implementation of "Open Graph" Tags. This option will only add tags needed for "Auto Posting". If you need something more serious uncheck this and use other specialized plugins. </span>
|
693 |
+
<p style="margin: 0px;margin-left: 5px;"><input value="1" id="nsOpenGraph" name="nsOpenGraph" type="checkbox" <?php if ((int)$options['nsOpenGraph'] == 1) echo "checked"; ?> />
|
694 |
+
<strong>Add Open Graph Tags</strong>
|
695 |
+
|
696 |
+
</p>
|
697 |
+
|
698 |
+
<p><div style="width:100%;">
|
699 |
+
|
700 |
+
</div>
|
701 |
+
<strong style="font-size: 11px; margin: 10px;">Default Image URL for og:image tag:</strong>
|
702 |
+
<input name="ogImgDef" style="width: 30%;" value="<?php if (isset($options['ogImgDef'])) _e(apply_filters('format_to_edit',$options['ogImgDef']), 'NS_SNAutoPoster') ?>" /></p>
|
703 |
+
|
704 |
+
|
705 |
+
|
706 |
+
<div class="submit"><input type="submit" class="button-primary" name="update_NS_SNAutoPoster_settings" value="<?php _e('Update Settings', 'NS_SNAutoPoster') ?>" /></div>
|
707 |
+
</form>
|
708 |
+
</div>
|
709 |
+
<?php
|
710 |
+
}
|
711 |
+
//## END OF showSNAutoPosterOptionsPage()
|
712 |
+
|
713 |
+
function NS_SNAP_SavePostMetaTags($id) { if (isset($_POST["SNAPEdit"])) $nspost_edit = $_POST["SNAPEdit"];
|
714 |
+
if (isset($nspost_edit) && !empty($nspost_edit)) {
|
715 |
+
|
716 |
+
$SNAP_AttachTR = $_POST["SNAP_AttachTR"]; $SNAP_AttachPN = $_POST["SNAP_AttachPN"]; $SNAP_AttachLI = $_POST["SNAP_AttachLI"];
|
717 |
+
$SNAP_FormatGP = $_POST["SNAP_FormatGP"]; $SNAP_FormatFB = $_POST["SNAP_FormatFB"]; $SNAP_FormatTW = $_POST["SNAP_FormatTW"]; // prr($_POST);
|
718 |
+
$SNAP_FormatBG = $_POST["SNAP_FormatBG"]; $SNAP_FormatTBG = $_POST["SNAP_FormatTBG"];
|
719 |
+
$SNAP_FormatTR = $_POST["SNAP_FormatTR"]; $SNAP_FormatTTR = $_POST["SNAP_FormatTTR"];
|
720 |
+
$SNAP_FormatLI = $_POST["SNAP_FormatLI"]; $SNAP_PNBoard = $_POST["apPNBoard"];
|
721 |
+
|
722 |
+
if (isset($SNAP_AttachTR) && !empty($SNAP_AttachTR)) update_post_meta($id, 'SNAP_AttachTR', $SNAP_AttachTR);
|
723 |
+
if (isset($SNAP_PNBoard) && !empty($SNAP_PNBoard)) update_post_meta($id, 'apPNBoard', $SNAP_PNBoard);
|
724 |
+
if (isset($SNAP_AttachLI) && !empty($SNAP_AttachLI)) update_post_meta($id, 'SNAP_AttachLI', $SNAP_AttachLI);
|
725 |
+
|
726 |
+
if (isset($SNAP_FormatGP) && !empty($SNAP_FormatGP)) update_post_meta($id, 'SNAP_FormatGP', $SNAP_FormatGP);
|
727 |
+
if (isset($SNAP_FormatFB) && !empty($SNAP_FormatFB)) update_post_meta($id, 'SNAP_FormatFB', $SNAP_FormatFB);
|
728 |
+
if (isset($SNAP_FormatTW) && !empty($SNAP_FormatTW)) update_post_meta($id, 'SNAP_FormatTW', $SNAP_FormatTW);
|
729 |
+
if (isset($SNAP_FormatTR) && !empty($SNAP_FormatTR)) update_post_meta($id, 'SNAP_FormatTR', $SNAP_FormatTR);
|
730 |
+
if (isset($SNAP_FormatTTR) && !empty($SNAP_FormatTTR)) update_post_meta($id, 'SNAP_FormatTTR', $SNAP_FormatTTR);
|
731 |
+
if (isset($SNAP_FormatBG) && !empty($SNAP_FormatBG)) update_post_meta($id, 'SNAP_FormatBG', $SNAP_FormatBG);
|
732 |
+
if (isset($SNAP_FormatLI) && !empty($SNAP_FormatLI)) update_post_meta($id, 'SNAP_FormatLI', $SNAP_FormatLI);
|
733 |
+
if (isset($SNAP_FormatTBG) && !empty($SNAP_FormatTBG)) update_post_meta($id, 'SNAP_FormatTBG', $SNAP_FormatTBG);
|
734 |
+
|
735 |
+
}
|
736 |
+
}
|
737 |
+
function NS_SNAP_AddPostMetaTags() { global $post; $post_id = $post; if (is_object($post_id)) $post_id = $post_id->ID; $options = get_option($this->dbOptionsName);
|
738 |
+
$doGP = $options['gp'][0]['doGP']; $doFB = $options['fb'][0]['doFB']; $doTW = $options['tw'][0]['doTW'];
|
739 |
+
$doTR = $options['tr'][0]['doTR']; $doPN = $options['pn'][0]['doPN']; $doBG = $options['bg'][0]['doBG']; $doLI = $options['li'][0]['doLI'];
|
740 |
+
$isAvailGP = $options['gp'][0]['gpUName']!='' && $options['gp'][0]['gpPass']!='';
|
741 |
+
$isAvailPN = $options['pn'][0]['pnUName']!='' && $options['pn'][0]['pnPass']!='';
|
742 |
+
$isAvailBG = $options['bg'][0]['bgUName']!='' && $options['bg'][0]['bgPass']!='';
|
743 |
+
$isAvailFB = $options['fb'][0]['fbURL']!='' && $options['fb'][0]['fbAppID']!='' && $options['fb'][0]['fbAppSec']!='';
|
744 |
+
$isAvailTW = $options['tw'][0]['twURL']!='' && $options['tw'][0]['twConsKey']!='' && $options['tw'][0]['twConsSec']!='' && $options['tw'][0]['twAccToken']!='';
|
745 |
+
|
746 |
+
$isAvailLI = $options['li'][0]['liOAuthVerifier']!='' && $options['li'][0]['liAccessTokenSecret']!='' && $options['li'][0]['liAccessToken']!='' && $options['li'][0]['liAPIKey']!='';
|
747 |
+
$isAvailTR = isset($options['tr'][0]['trAccessTocken']) && isset($options['tr'][0]['trAccessTocken']['oauth_token_secret']) && $options['tr'][0]['trAccessTocken']['oauth_token_secret']!=='';
|
748 |
+
|
749 |
+
$t = get_post_meta($post_id, 'SNAP_AttachGP', true); $isAttachGP = $t!=''?$t:$options['gp'][0]['gpAttch'];
|
750 |
+
$t = get_post_meta($post_id, 'SNAP_AttachFB', true); $isAttachFB = $t!=''?$t:$options['fb'][0]['fbAttch'];
|
751 |
+
$t = get_post_meta($post_id, 'SNAP_AttachLI', true); $isAttachLI = $t!=''?$t:$options['li'][0]['liAttch'];
|
752 |
+
$t = get_post_meta($post_id, 'SNAP_FormatGP', true); $gpMsgFormat = $t!=''?$t:$options['gp'][0]['gpMsgFormat'];
|
753 |
+
$t = get_post_meta($post_id, 'SNAP_FormatPN', true); $pnMsgFormat = $t!=''?$t:$options['pn'][0]['pnMsgFormat'];
|
754 |
+
$t = get_post_meta($post_id, 'SNAP_FormatBG', true); $bgMsgFormat = $t!=''?$t:$options['bg'][0]['bgMsgFormat'];
|
755 |
+
$t = get_post_meta($post_id, 'SNAP_FormatTBG', true); $bgMsgTFormat = $t!=''?$t:$options['bg'][0]['bgMsgTFormat'];
|
756 |
+
$t = get_post_meta($post_id, 'SNAP_FormatFB', true); $fbMsgFormat = $t!=''?$t:$options['fb'][0]['fbMsgFormat'];
|
757 |
+
$t = get_post_meta($post_id, 'SNAP_FormatTW', true); $twMsgFormat = $t!=''?$t:$options['tw'][0]['twMsgFormat'];
|
758 |
+
$t = get_post_meta($post_id, 'SNAP_FormatTR', true); $trMsgFormat = $t!=''?$t:$options['tr'][0]['trMsgFormat']; $trMsgFormat = stripcslashes(str_replace('"',"'",$trMsgFormat));
|
759 |
+
$t = get_post_meta($post_id, 'SNAP_FormatTTR', true); $trMsgTFormat = $t!=''?$t:$options['tr'][0]['trMsgTFormat'];
|
760 |
+
$t = get_post_meta($post_id, 'SNAP_FormatLI', true); $liMsgFormat = $t!=''?$t:$options['li'][0]['liMsgFormat'];
|
761 |
+
?>
|
762 |
+
<div id="postftfp" class="postbox">
|
763 |
+
|
764 |
+
<div class="inside"><div id="postftfp">
|
765 |
+
|
766 |
+
<style type="text/css">
|
767 |
+
div#popShAtt {
|
768 |
+
display: none;
|
769 |
+
position: absolute;
|
770 |
+
width: 600px;
|
771 |
+
padding: 10px;
|
772 |
+
background: #eeeeee;
|
773 |
+
color: #000000;
|
774 |
+
border: 1px solid #1a1a1a;
|
775 |
+
font-size: 90%;
|
776 |
+
}
|
777 |
+
.underdash {border-bottom: 1px #21759B dashed; text-decoration:none;}
|
778 |
+
.underdash a:hover {border-bottom: 1px #21759B dashed}
|
779 |
+
</style>
|
780 |
+
|
781 |
+
<script type="text/javascript"> if (typeof jQuery == 'undefined') {var script = document.createElement('script'); script.type = "text/javascript";
|
782 |
+
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"; document.getElementsByTagName('head')[0].appendChild(script);
|
783 |
+
}</script>
|
784 |
+
<script type="text/javascript">function doShowHideAltFormatX(){if (jQuery('#SNAP').is(':checked')) {jQuery('#altFormat1').hide(); jQuery('#altFormat2').hide();} else { jQuery('#altFormat1').show(); jQuery('#altFormat2').show();}}
|
785 |
+
|
786 |
+
function doSwitchShAtt(att){
|
787 |
+
if (att==1) { jQuery('#apFBAttch').attr('checked', true); jQuery('#apFBAttchShare').attr('checked', false); } else {jQuery('#apFBAttch').attr('checked', false); jQuery('#apFBAttchShare').attr('checked', true);}
|
788 |
+
} jQuery(function() {
|
789 |
+
var moveLeft = 20;
|
790 |
+
var moveDown = 10;
|
791 |
+
|
792 |
+
jQuery('a#showShAtt').hover(function(e) {
|
793 |
+
jQuery('div#popShAtt').show()
|
794 |
+
.css('top', e.pageY + moveDown)
|
795 |
+
.css('left', e.pageX + moveLeft)
|
796 |
+
.appendTo('body');
|
797 |
+
}, function() {
|
798 |
+
jQuery('div#popShAtt').hide();
|
799 |
+
});
|
800 |
+
|
801 |
+
jQuery('a#showShAtt').mousemove(function(e) {
|
802 |
+
jQuery("div#popShAtt").css('top', e.pageY + moveDown).css('left', e.pageX + moveLeft);
|
803 |
+
});
|
804 |
+
|
805 |
+
});
|
806 |
+
|
807 |
+
|
808 |
+
</script>
|
809 |
+
|
810 |
+
<input value="SNAPEdit" type="hidden" name="SNAPEdit" />
|
811 |
+
<table style="margin-bottom:40px" border="0">
|
812 |
+
<!-- G+ -->
|
813 |
+
<tr><th style="text-align:left;" colspan="2">Google+ AutoPoster Options</th> <td><?php //## Only show RePost button if the post is "published"
|
814 |
+
if ($post->post_status == "publish" && $isAvailGP) { ?><input style="float: right;" type="button" class="button" name="rePostToGP_repostButton" id="rePostToGP_button" value="<?php _e('Repost to Google+', 're-post') ?>" />
|
815 |
+
<?php wp_nonce_field( 'rePostToGP', 'rePostToGP_wpnonce' ); } ?>
|
816 |
+
</td></tr>
|
817 |
+
|
818 |
+
|
819 |
+
<?php if (!$isAvailGP) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup your Google+ Account to AutoPost to Google+</b>
|
820 |
+
<?php } elseif ($post->post_status != "publish") { ?>
|
821 |
+
|
822 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludeGP" <?php if ((int)$doGP == 1) echo "checked"; ?> /></th>
|
823 |
+
<td><b><?php _e('Publish this Post to Google+', 'NS_SPAP'); ?></b></td>
|
824 |
+
</tr>
|
825 |
+
<tr><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">
|
826 |
+
<input value="1" id="SNAP_AttachGP" onchange="doShowHideAltFormatX();" type="checkbox" name="SNAP_AttachGP" <?php if ((int)$isAttachGP == 1) echo "checked"; ?> /> </th><td><strong>Publish Post to Google+ as Attachement</strong></td></tr>
|
827 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Format:', 'NS_SPAP') ?></th>
|
828 |
+
<td><input value="<?php echo $gpMsgFormat ?>" type="text" name="SNAP_FormatGP" size="60px"/></td></tr>
|
829 |
+
|
830 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Format Options:</th>
|
831 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
832 |
+
<?php } ?>
|
833 |
+
<!-- **************** PN **************** -->
|
834 |
+
<tr><th style="text-align:left;" colspan="2">Pinterest AutoPoster Options</th> <td><?php //## Only show RePost button if the post is "published"
|
835 |
+
if ($post->post_status == "publish" && $isAvailPN) { ?><input style="float: right;" type="button" class="button" name="rePostToPN_repostButton" id="rePostToPN_button" value="<?php _e('Repost to Pinterest', 're-post') ?>" />
|
836 |
+
<?php wp_nonce_field( 'rePostToPN', 'rePostToPN_wpnonce' ); } ?>
|
837 |
+
</td></tr>
|
838 |
+
|
839 |
+
|
840 |
+
<?php if (!$isAvailPN) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup your Pinterest Account to AutoPost to Pinterest</b>
|
841 |
+
<?php } elseif ($post->post_status != "publish") { ?>
|
842 |
+
|
843 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludePN" <?php if ((int)$doPN == 1) echo "checked"; ?> /></th>
|
844 |
+
<td><b><?php _e('Publish this Post to Pinterest', 'NS_SPAP'); ?></b></td>
|
845 |
+
</tr>
|
846 |
+
|
847 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;">Select Board</th>
|
848 |
+
<td><select name="apPNBoard" id="apPNBoard">
|
849 |
+
<?php if ($options['pn'][0]['pnBoardsList']!=''){ $gPNBoards = $options['pn'][0]['pnBoardsList']; if ($options['pn'][0]['pnBoard']!='') $gPNBoards = str_replace($options['pn'][0]['pnBoard'].'"', $options['pn'][0]['pnBoard'].'" selected="selected"', $gPNBoards); echo $gPNBoards;} else { ?>
|
850 |
+
<option value="0">None(Click above to retreive your boards)</option>
|
851 |
+
<?php } ?>
|
852 |
+
</select></td>
|
853 |
+
</tr>
|
854 |
+
|
855 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Format:', 'NS_SPAP') ?></th>
|
856 |
+
<td><input value="<?php echo $pnMsgFormat ?>" type="text" name="SNAP_FormatPN" size="60px"/></td></tr>
|
857 |
+
|
858 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Format Options:</th>
|
859 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
860 |
+
<?php } ?>
|
861 |
+
<!-- **************** FB **************** -->
|
862 |
+
<tr><th style="text-align:left;" colspan="2">FaceBook AutoPoster Options</th><td><?php //## Only show RePost button if the post is "published"
|
863 |
+
if ($post->post_status == "publish" && $isAvailFB) { ?><input style="float: right;" type="button" class="button" name="rePostToFB_repostButton" id="rePostToFB_button" value="<?php _e('Repost to FaceBook', 're-post') ?>" />
|
864 |
+
<?php wp_nonce_field( 'rePostToFB', 'rePostToFB_wpnonce' ); } ?>
|
865 |
+
</td></tr>
|
866 |
+
<?php if (!$isAvailFB) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup and Authorize your FaceBook Account to AutoPost to FaceBook</b>
|
867 |
+
<?php } elseif ($post->post_status != "publish") {?>
|
868 |
+
|
869 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludeFB" <?php if ((int)$doFB == 1) echo "checked"; ?> /></th>
|
870 |
+
<td><b><?php _e('Publish this Post to FaceBook', 'NS_SPAP'); ?></b></td>
|
871 |
+
</tr>
|
872 |
+
<tr><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">
|
873 |
+
|
874 |
+
<input value="2" id="apFBAttchShare" onchange="doSwitchShAtt(0);" type="checkbox" name="SNAP_AttachFB" <?php if ((int)$isAttachFB == 2) echo "checked"; ?> /> </th><td>
|
875 |
+
<strong>Share a link to your blogpost</strong>
|
876 |
+
|
877 |
+
.. or ..
|
878 |
+
<input value="1" id="apFBAttch" onchange="doSwitchShAtt(1);" type="checkbox" name="SNAP_AttachFB" <?php if ((int)$isAttachFB == 1) echo "checked"; ?> /> <strong>Attach your blogpost</strong><-- (<a id="showShAtt" onclick="return false;" class="underdash" href="#">What's the difference?</a>)
|
879 |
+
|
880 |
+
<div id="popShAtt">
|
881 |
+
<h3>Two ways of attaching post on Facebook</h3>
|
882 |
+
<p>
|
883 |
+
|
884 |
+
</p> <img src="http://cdn.gtln.us/img/nxs/fb2wops.jpg" width="600" height="271" alt="Two ways of attaching post on Facebook"/>
|
885 |
+
</div>
|
886 |
+
|
887 |
+
</td> </tr>
|
888 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Format:', 'NS_SPAP') ?></th>
|
889 |
+
<td><input value="<?php echo $fbMsgFormat ?>" type="text" name="SNAP_FormatFB" size="60px"/></td></tr>
|
890 |
+
|
891 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Format Options:</th>
|
892 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
893 |
+
<?php } ?>
|
894 |
+
<!-- TW -->
|
895 |
+
<tr><th style="text-align:left;" colspan="2">Twitter AutoPoster Options</th><td><?php //## Only show RePost button if the post is "published"
|
896 |
+
if ($post->post_status == "publish" && $isAvailTW) { ?><input style="float: right;" type="button" class="button" name="rePostToTW_repostButton" id="rePostToTW_button" value="<?php _e('Repost to Twitter', 're-post') ?>" />
|
897 |
+
<?php wp_nonce_field( 'rePostToTW', 'rePostToTW_wpnonce' ); } ?>
|
898 |
+
</td></tr>
|
899 |
+
<?php if (!$isAvailTW) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup your Twitter Account to AutoPost to Twitter</b>
|
900 |
+
<?php }elseif ($post->post_status != "publish") { ?>
|
901 |
+
|
902 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludeTW" <?php if ((int)$doTW == 1) echo "checked"; ?> /></th>
|
903 |
+
<td><b><?php _e('Publish this Post to Twitter', 'NS_SPAP'); ?></b></td>
|
904 |
+
</tr>
|
905 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Format:', 'NS_SPAP') ?></th>
|
906 |
+
<td><input value="<?php echo $twMsgFormat ?>" type="text" name="SNAP_FormatTW" size="60px"/></td></tr>
|
907 |
+
|
908 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Format Options:</th>
|
909 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
910 |
+
<?php } ?>
|
911 |
+
<!-- **************** LI **************** -->
|
912 |
+
<tr><th style="text-align:left;" colspan="2">LinkedIn AutoPoster Options</th><td><?php //## Only show RePost button if the post is "published"
|
913 |
+
if ($post->post_status == "publish" && $isAvailLI) { ?><input style="float: right;" type="button" class="button" name="rePostToLI_repostButton" id="rePostToLI_button" value="<?php _e('Repost to LinkedIn', 're-post') ?>" />
|
914 |
+
<?php wp_nonce_field( 'rePostToLI', 'rePostToLI_wpnonce' ); } ?>
|
915 |
+
</td></tr>
|
916 |
+
<?php if (!$isAvailLI) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup your LinkedIn Account to AutoPost to LinkedIn</b>
|
917 |
+
<?php }elseif ($post->post_status != "publish") { ?>
|
918 |
+
|
919 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludeLI" <?php if ((int)$doLI == 1) echo "checked"; ?> /></th>
|
920 |
+
<td><b><?php _e('Publish this Post to LinkedIn', 'NS_SPAP'); ?></b></td>
|
921 |
+
</tr>
|
922 |
+
|
923 |
+
<tr><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">
|
924 |
+
<input value="1" id="SNAP_AttachLI" onchange="doShowHideAltFormatX();" type="checkbox" name="SNAP_AttachLI" <?php if ((int)$isAttachLI == 1) echo "checked"; ?> /> </th><td><strong>Publish Post to LinkedIn as Attachement</strong></td> </tr>
|
925 |
+
|
926 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Format:', 'NS_SPAP') ?></th>
|
927 |
+
<td><input value="<?php echo $liMsgFormat ?>" type="text" name="SNAP_FormatLI" size="60px"/></td></tr>
|
928 |
+
|
929 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Format Options:</th>
|
930 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
931 |
+
<?php } ?>
|
932 |
+
<!-- **************** BG **************** -->
|
933 |
+
<tr><th style="text-align:left;" colspan="2">Blogger AutoPoster Options</th> <td><?php //## Only show RePost button if the post is "published"
|
934 |
+
if ($post->post_status == "publish" && $isAvailBG) { ?><input style="float: right;" type="button" class="button" name="rePostToBG_repostButton" id="rePostToBG_button" value="<?php _e('Repost to Blogger', 're-post') ?>" />
|
935 |
+
<?php wp_nonce_field( 'rePostToBG', 'rePostToBG_wpnonce' ); } ?>
|
936 |
+
</td></tr>
|
937 |
+
|
938 |
+
|
939 |
+
<?php if (!$isAvailBG) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup your Blogger Account to AutoPost to Blogger</b>
|
940 |
+
<?php } elseif ($post->post_status != "publish") { ?>
|
941 |
+
|
942 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludeBG" <?php if ((int)$doBG == 1) echo "checked"; ?> /></th>
|
943 |
+
<td><b><?php _e('Publish this Post to Blogger', 'NS_SPAP'); ?></b></td>
|
944 |
+
</tr>
|
945 |
+
|
946 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Title Format:', 'NS_SPAP') ?></th>
|
947 |
+
<td><input value="<?php echo $bgMsgTFormat ?>" type="text" name="SNAP_FormatTBG" size="60px"/></td></tr>
|
948 |
+
|
949 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Title Format Options:</th>
|
950 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
951 |
+
|
952 |
+
|
953 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Format:', 'NS_SPAP') ?></th>
|
954 |
+
<td><input value="<?php echo $bgMsgFormat ?>" type="text" name="SNAP_FormatBG" size="60px"/></td></tr>
|
955 |
+
|
956 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Format Options:</th>
|
957 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
958 |
+
<?php } ?>
|
959 |
+
<!-- #### TR #### -->
|
960 |
+
<tr><th style="text-align:left;" colspan="2">Tumblr AutoPoster Options</th><td><?php //## Only show RePost button if the post is "published"
|
961 |
+
if ($post->post_status == "publish" && $isAvailTR) { ?><input style="float: right;" type="button" class="button" name="rePostToTR_repostButton" id="rePostToTR_button" value="<?php _e('Repost to Tumblr', 're-post') ?>" />
|
962 |
+
<?php wp_nonce_field( 'rePostToTR', 'rePostToTR_wpnonce' ); } ?>
|
963 |
+
</td></tr>
|
964 |
+
<?php if (!$isAvailTR) { ?><tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"></th> <td><b>Setup and authorize your Tumblr Account to AutoPost to Tumblr</b>
|
965 |
+
<?php }elseif ($post->post_status != "publish") { ?>
|
966 |
+
|
967 |
+
<tr><th scope="row" style="text-align:right; width:150px; padding-top: 5px; padding-right:10px;"><input value="1" type="checkbox" name="SNAPincludeTR" <?php if ((int)$doTR == 1) echo "checked"; ?> /></th>
|
968 |
+
<td><b><?php _e('Publish this Post to Tumblr', 'NS_SPAP'); ?></b></td>
|
969 |
+
</tr>
|
970 |
+
|
971 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Title Format:', 'NS_SPAP') ?></th>
|
972 |
+
<td><input value="<?php echo $trMsgTFormat ?>" type="text" name="SNAP_FormatTTR" size="60px"/></td></tr>
|
973 |
+
|
974 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Title Format Options:</th>
|
975 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
976 |
+
|
977 |
+
<tr id="altFormat1" style=""><th scope="row" style="text-align:right; width:80px; padding-right:10px;"><?php _e('Text Format:', 'NS_SPAP') ?></th>
|
978 |
+
<td><input value="<?php echo $trMsgFormat ?>" type="text" name="SNAP_FormatTR" size="60px"/></td></tr>
|
979 |
+
|
980 |
+
<tr id="altFormat2" style=""><th scope="row" style="text-align:right; width:150px; vertical-align:top; padding-top: 5px; padding-right:10px;">Text Format Options:</th>
|
981 |
+
<td style="vertical-align:top; font-size: 9px;" colspan="2">%SITENAME% - Inserts the Your Blog/Site Name. %TITLE% - Inserts the Title of your post. <br/> %URL% - Inserts the URL of your post. %SURL% - Inserts the <b>Shortened URL</b> of your post. %IMG% - Inserts the featured image. %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post, %AUTHORNAME% - Inserts the author's name.</td></tr>
|
982 |
+
<?php } ?>
|
983 |
+
</table>
|
984 |
+
</div></div></div> <?php
|
985 |
+
}
|
986 |
+
|
987 |
+
function NS_SNAP_addCustomBoxes() { add_meta_box( 'NS_SNAP_AddPostMetaTags', __( 'NextScripts: Social Networks Auto Poster - Post Options', 'NS_SNAutoPoster' ), array($this, 'NS_SNAP_AddPostMetaTags'), 'post' );
|
988 |
+
$options = get_option('NS_SNAutoPoster'); $args=array('public'=>true, '_builtin'=>false); $output = 'names'; $operator = 'and'; $post_types=get_post_types($args, $output, $operator);
|
989 |
+
if ($options['nxsCPTSeld']!='') $nxsCPTSeld = unserialize($options['nxsCPTSeld']); else $nxsCPTSeld = array_keys($post_types); //prr($nxsCPTSeld);
|
990 |
+
foreach ($post_types as $cptID=>$cptName) if (in_array($cptID, $nxsCPTSeld)){
|
991 |
+
add_meta_box( 'NS_SNAP_AddPostMetaTags', __( 'NextScripts: Social Networks Auto Poster - Post Options', 'NS_SNAutoPoster' ), array($this, 'NS_SNAP_AddPostMetaTags'), $cptID );
|
992 |
+
}
|
993 |
+
|
994 |
+
}
|
995 |
+
|
996 |
+
|
997 |
+
}
|
998 |
+
}
|
999 |
+
|
1000 |
+
//## Instantiate the class
|
1001 |
+
if (class_exists("NS_SNAutoPoster")) {$plgn_NS_SNAutoPoster = new NS_SNAutoPoster();}
|
1002 |
+
//## Initialize the admin panel if the plugin has been activated
|
1003 |
+
if (!function_exists("NS_SNAutoPoster_ap")) {
|
1004 |
+
function NS_SNAutoPoster_ap() { global $plgn_NS_SNAutoPoster; if (!isset($plgn_NS_SNAutoPoster)) return;
|
1005 |
+
if (function_exists('add_options_page')) {
|
1006 |
+
add_options_page('Social Networks Auto Poster', 'Social Networks Auto Poster', 'manage_options', basename(__FILE__), array(&$plgn_NS_SNAutoPoster, 'showSNAutoPosterOptionsPage'));
|
1007 |
+
// add_submenu_page('users.php', 'Social Networks AutoPoster', 'Social Networks AutoPoster', 2, basename(__FILE__), array(&$plgn_NS_SNAutoPoster, 'showSNAutoPosterUsersOptionsPage'));
|
1008 |
+
}
|
1009 |
+
}
|
1010 |
+
}
|
1011 |
+
//## AJAX to Post to Google+
|
1012 |
+
if (!function_exists("jsPostToSNAP")) {
|
1013 |
+
function jsPostToSNAP() { ?>
|
1014 |
+
<script type="text/javascript" >
|
1015 |
+
jQuery(document).ready(function($) {
|
1016 |
+
$('input#rePostToGP_button').click(function() { var data = { action: 'rePostToGP', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToGP_wpnonce').val()}; callAjSNAP(data, 'Google+'); });
|
1017 |
+
$('input#rePostToFB_button').click(function() { var data = { action: 'rePostToFB', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToFB_wpnonce').val()}; callAjSNAP(data, 'FaceBook');});
|
1018 |
+
$('input#rePostToTW_button').click(function() { var data = { action: 'rePostToTW', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToTW_wpnonce').val()}; callAjSNAP(data, 'Twitter'); });
|
1019 |
+
$('input#rePostToTR_button').click(function() { var data = { action: 'rePostToTR', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToTR_wpnonce').val()}; callAjSNAP(data, 'Tumblr'); });
|
1020 |
+
$('input#rePostToPN_button').click(function() { var data = { action: 'rePostToPN', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToPN_wpnonce').val()}; callAjSNAP(data, 'Pinterest'); });
|
1021 |
+
$('input#rePostToBG_button').click(function() { var data = { action: 'rePostToBG', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToBG_wpnonce').val()}; callAjSNAP(data, 'Blogger'); });
|
1022 |
+
$('input#rePostToLI_button').click(function() { var data = { action: 'rePostToLI', id: $('input#post_ID').val(), _wpnonce: $('input#rePostToLI_wpnonce').val()}; callAjSNAP(data, 'LinkedIn'); });
|
1023 |
+
|
1024 |
+
function callAjSNAP(data, label) {
|
1025 |
+
var style = "position: fixed; display: none; z-index: 1000; top: 50%; left: 50%; background-color: #E8E8E8; border: 1px solid #555; padding: 15px; width: 350px; min-height: 80px; margin-left: -175px; margin-top: -40px; text-align: center; vertical-align: middle;";
|
1026 |
+
$('body').append("<div id='test_results' style='" + style + "'></div>");
|
1027 |
+
$('#test_results').html("<p>Sending update to "+label+"</p>" + "<p><img src='http://gtln.us/img/misc/ajax-loader-med.gif' /></p>");
|
1028 |
+
$('#test_results').show();
|
1029 |
+
jQuery.post(ajaxurl, data, function(response) { if (response=='') response = 'Message Posted';
|
1030 |
+
$('#test_results').html('<p> ' + response + '</p>' +'<input type="button" class="button" name="results_ok_button" id="results_ok_button" value="OK" />');
|
1031 |
+
$('#results_ok_button').click(remove_results);
|
1032 |
+
});
|
1033 |
+
}
|
1034 |
+
function remove_results() { jQuery("#results_ok_button").unbind("click");jQuery("#test_results").remove();
|
1035 |
+
if (typeof document.body.style.maxHeight == "undefined") { jQuery("body","html").css({height: "auto", width: "auto"}); jQuery("html").css("overflow","");}
|
1036 |
+
document.onkeydown = ""; document.onkeyup = ""; return false;
|
1037 |
+
}
|
1038 |
+
});
|
1039 |
+
</script>
|
1040 |
+
<?php
|
1041 |
+
}
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
//## Repost to Google+
|
1045 |
+
if (!function_exists("rePostToGP_ajax")) {
|
1046 |
+
function rePostToGP_ajax() { check_ajax_referer('rePostToGP'); $id = $_POST['id']; $result = nxs_snapPublishTo($id, 'GP', true);
|
1047 |
+
if ($result == 200) die("Your post has been successfully sent to Google+"); else die($result);
|
1048 |
+
}
|
1049 |
+
}
|
1050 |
+
if (!function_exists("rePostToFB_ajax")) {
|
1051 |
+
function rePostToFB_ajax() { check_ajax_referer('rePostToFB'); $id = $_POST['id']; $result = nxs_snapPublishTo($id, 'FB', true);
|
1052 |
+
if ($result == 200) die("Your post has been successfully sent to FaceBook."); else die($result);
|
1053 |
+
}
|
1054 |
+
}
|
1055 |
+
if (!function_exists("rePostToTW_ajax")) {
|
1056 |
+
function rePostToTW_ajax() { check_ajax_referer('rePostToTW'); $id = $_POST['id']; $result = nxs_snapPublishTo($id, 'TW', true);
|
1057 |
+
if ($result == 200) die("Your post has been successfully sent to Twitter."); else die($result);
|
1058 |
+
}
|
1059 |
+
}
|
1060 |
+
if (!function_exists("rePostToTR_ajax")) {
|
1061 |
+
function rePostToTR_ajax() { check_ajax_referer('rePostToTR'); $postID = $_POST['id']; $options = get_option('NS_SNAutoPoster');
|
1062 |
+
$twpo = get_post_meta($postID, 'snapTR', true); $twpo = maybe_unserialize($twpo); if (is_array($twpo)) $options['tr'][0]['trMsgFormat'] = $twpo['SNAPformat'];
|
1063 |
+
$result = doPublishToTR($postID, $options); if ($result == 200) die("Your post has been successfully sent to Tumblr."); else die($result);
|
1064 |
+
}
|
1065 |
+
}
|
1066 |
+
if (!function_exists("rePostToPN_ajax")) {
|
1067 |
+
function rePostToPN_ajax() { check_ajax_referer('rePostToPN'); $postID = $_POST['id']; $options = get_option('NS_SNAutoPoster');
|
1068 |
+
$twpo = get_post_meta($postID, 'snapPN', true); $twpo = maybe_unserialize($twpo); if (is_array($twpo)) $options['pn'][0]['pnMsgFormat'] = $twpo['SNAPformat'];
|
1069 |
+
$result = doPublishToPN($postID, $options); if ($result == 200) die("Your post has been successfully sent to Pinterest."); else die($result);
|
1070 |
+
}
|
1071 |
+
}
|
1072 |
+
if (!function_exists("rePostToBG_ajax")) {
|
1073 |
+
function rePostToBG_ajax() { check_ajax_referer('rePostToBG'); $postID = $_POST['id']; $options = get_option('NS_SNAutoPoster');
|
1074 |
+
$twpo = get_post_meta($postID, 'snapBG', true); $twpo = maybe_unserialize($twpo); if (is_array($twpo)) $options['bg'][0]['bgMsgFormat'] = $twpo['SNAPformat'];
|
1075 |
+
$result = doPublishToBG($postID, $options); if ($result == 200) die("Your post has been successfully sent to Blogger."); else die($result);
|
1076 |
+
}
|
1077 |
+
}
|
1078 |
+
if (!function_exists("rePostToLI_ajax")) {
|
1079 |
+
function rePostToLI_ajax() { check_ajax_referer('rePostToLI'); $postID = $_POST['id']; $options = get_option('NS_SNAutoPoster');
|
1080 |
+
$twpo = get_post_meta($postID, 'snapLI', true); $twpo = maybe_unserialize($twpo); if (is_array($twpo)) $options['bg'][0]['bgMsgFormat'] = $twpo['SNAPformat'];
|
1081 |
+
$result = doPublishToLI($postID, $options); if ($result == 200) die("Your post has been successfully sent to LinkedIn."); else die($result);
|
1082 |
+
}
|
1083 |
+
}
|
1084 |
+
|
1085 |
+
if (!function_exists("nsGetBoards_ajax")) {
|
1086 |
+
function nsGetBoards_ajax() { global $nxs_gCookiesArr; check_ajax_referer('getBoards'); $options = get_option('NS_SNAutoPoster');// prr($options); die();
|
1087 |
+
if (get_magic_quotes_gpc()) { $_POST['u'] = stripslashes($_POST['u']); $_POST['p'] = stripslashes($_POST['p']);}
|
1088 |
+
$loginError = doConnectToPinterest($_POST['u'], substr($_POST['p'], 0, 5)=='g9c1a'?nsx_doDecode(substr($_POST['p'], 5)):$_POST['p'] ); if ($loginError!==false) {echo $loginError; return "BAD USER/PASS";}
|
1089 |
+
$gPNBoards = doGetBoardsFromPinterest(); $options['pn'][0]['pnBoardsList'] = $gPNBoards; $options['pn'][0]['pnSvC'] = serialize($nxs_gCookiesArr); update_option('NS_SNAutoPoster', $options); echo $gPNBoards; die();
|
1090 |
+
}
|
1091 |
+
}
|
1092 |
+
|
1093 |
+
|
1094 |
+
function nsTrnc($string, $limit, $break=" ", $pad=" ...") { if(strlen($string) <= $limit) return $string; if(strlen($pad) >= $limit) return ''; $string = substr($string, 0, $limit-strlen($pad));
|
1095 |
+
$brLoc = strripos($string, $break); if ($brLoc===false) return $string.$pad; else return substr($string, 0, $brLoc).$pad;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
function get_post_meta_all($post_id){ global $wpdb; $data = array(); $wpdb->query("SELECT `meta_key`, `meta_value` FROM $wpdb->postmeta WHERE `post_id` = $post_id");
|
1099 |
+
foreach($wpdb->last_result as $k => $v){ $data[$v->meta_key] = $v->meta_value; }; return $data;
|
1100 |
+
}
|
1101 |
+
|
1102 |
+
if (!function_exists('nsBloggerGetAuth')){ function nsBloggerGetAuth($email, $pass) {
|
1103 |
+
$ch = curl_init("https://www.google.com/accounts/ClientLogin?Email=$email&Passwd=$pass&service=blogger&accountType=GOOGLE");
|
1104 |
+
$headers = array(); $headers[] = 'Accept: text/html, application/xhtml+xml, */*';
|
1105 |
+
$headers[] = 'Connection: Keep-Alive'; $headers[] = 'Accept-Language: en-us';
|
1106 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
1107 |
+
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)");
|
1108 |
+
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,10); curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
1109 |
+
curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);
|
1110 |
+
$result = curl_exec($ch); $resultArray = curl_getinfo($ch);
|
1111 |
+
curl_close($ch); $arr = explode("=",$result); $token = $arr[3]; if (trim($token)=='') die('Incorrect Username/Password'); return $token;
|
1112 |
+
}}
|
1113 |
+
if (!function_exists('nxs_snapCleanHTML')){ function nxs_snapCleanHTML($html) {
|
1114 |
+
$html = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $html); $html = preg_replace('/<!--(.*)-->/Uis', "", $html); return $html;
|
1115 |
+
}}
|
1116 |
+
if (!function_exists('nsBloggerNewPost')){ function nsBloggerNewPost($auth, $blogID, $title, $text) {
|
1117 |
+
$text = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $text); $text = preg_replace('/<!--(.*)-->/Uis', "", $text); $text = str_ireplace('allowfullscreen','', $text);
|
1118 |
+
if (class_exists('DOMDocument')) {$doc = new DOMDocument(); @$doc->loadHTML($text); $text = $doc->saveHTML(); $text = CutFromTo($text, '<body>', '</body>');
|
1119 |
+
$text = preg_replace('/<br(.*?)\/?>/','<br$1/>',$text); $text = preg_replace('/<img(.*?)\/?>/','<img$1/>',$text);
|
1120 |
+
require_once ('apis/htmlNumTable.php'); $text = strtr($text, $HTML401NamedToNumeric);
|
1121 |
+
} // prr($text);
|
1122 |
+
$postText = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">'.htmlentities($title).'</title><content type="xhtml">'.$text.'</content></entry>';
|
1123 |
+
$len = strlen($entry); $ch = curl_init("https://www.blogger.com/feeds/$blogID/posts/default");
|
1124 |
+
$headers = array("Content-type: application/atom+xml", "Content-Length: ".strlen($postText), "Authorization: GoogleLogin auth=".$auth, $postText);
|
1125 |
+
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
1126 |
+
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)");
|
1127 |
+
curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); curl_setopt($ch, CURLINFO_HEADER_OUT, true);
|
1128 |
+
$result = curl_exec($ch); curl_close($ch); if (stripos($result,'tag:blogger.com')!==false) return 'OK'; else { prr($result); return false;}
|
1129 |
+
}}
|
1130 |
+
|
1131 |
+
if (!function_exists("nsFormatMessage")) {//## Format Message
|
1132 |
+
function nsFormatMessage($msg, $postID){ global $ShownAds; $post = get_post($postID); $msg = stripcslashes($msg); if (isset($ShownAds)) $ShownAdsL = $ShownAds; // $msg = htmlspecialchars(stripcslashes($msg));
|
1133 |
+
if (preg_match('%URL%', $msg)) { $url = get_permalink($postID); $msg = str_ireplace("%URL%", $url, $msg);}
|
1134 |
+
if (preg_match('%SURL%', $msg)) { $url = get_permalink($postID); $response = wp_remote_get('http://gd.is/gtq/'.$url);
|
1135 |
+
if ((is_array($response) && ($response['response']['code']=='200'))) $url = $response['body']; $msg = str_ireplace("%SURL%", $url, $msg);
|
1136 |
+
}
|
1137 |
+
if (preg_match('%IMG%', $msg)) { if (function_exists("get_post_thumbnail_id") ){ $src = wp_get_attachment_image_src(get_post_thumbnail_id($postID), 'large'); $src = $src[0];}
|
1138 |
+
if ($src=='') { $options = get_option('NS_SNAutoPoster'); $src = $options['ogImgDef']; } $msg = str_ireplace("%IMG%", $src, $msg);
|
1139 |
+
}
|
1140 |
+
if (preg_match('%TITLE%', $msg)) { $title = $post->post_title; $msg = str_ireplace("%TITLE%", $title, $msg); }
|
1141 |
+
if (preg_match('%STITLE%', $msg)) { $title = $post->post_title; $title = substr($title, 0, 115); $msg = str_ireplace("%STITLE%", $title, $msg); }
|
1142 |
+
if (preg_match('%AUTHORNAME%', $msg)) { $aun = $post->post_author; $aun = get_the_author_meta('display_name', $aun ); $msg = str_ireplace("%AUTHORNAME%", $aun, $msg);}
|
1143 |
+
if (preg_match('%TEXT%', $msg)) {
|
1144 |
+
if ($post->post_excerpt!="") $excerpt = apply_filters('the_content', $post->post_excerpt); else $excerpt= apply_filters('the_content', $post->post_content);
|
1145 |
+
$excerpt = nsTrnc(strip_tags(strip_shortcodes($excerpt)), 300, " ", "..."); $msg = str_ireplace("%TEXT%", $excerpt, $msg);
|
1146 |
+
}
|
1147 |
+
if (preg_match('%FULLTEXT%', $msg)) { $postContent = apply_filters('the_content', $post->post_content); $msg = str_ireplace("%FULLTEXT%", $postContent, $msg);}
|
1148 |
+
if (preg_match('%SITENAME%', $msg)) { $siteTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); $msg = str_ireplace("%SITENAME%", $siteTitle, $msg);}
|
1149 |
+
if (isset($ShownAds)) $ShownAds = $ShownAdsL; // FIX for the quick-adsense plugin
|
1150 |
+
//return nsTrnc($msg, 996, " ", "...");
|
1151 |
+
return $msg;
|
1152 |
+
}
|
1153 |
+
}
|
1154 |
+
if (!function_exists("nxs_snapPublishTo")) { //## Main Function to Post
|
1155 |
+
function nxs_snapPublishTo($postArr, $type='', $aj=false) { $options = get_option('NS_SNAutoPoster'); //var_dump(debug_backtrace());
|
1156 |
+
if(is_object($postArr)) $postID = $postArr->ID; else $postID = $postArr; $isPost = isset($_POST["SNAPEdit"]);
|
1157 |
+
if($postID==0) {
|
1158 |
+
if ($type=='GP') doPublishToGP($postID, $options); if ($type=='FB') doPublishToFB($postID, $options); if ($type=='TW') doPublishToTW($postID, $options);
|
1159 |
+
} else { $post = get_post($postID); $maxLen = 1000;
|
1160 |
+
|
1161 |
+
$args=array( 'public' => true, '_builtin' => false); $output = 'names'; $operator = 'and'; $post_types=get_post_types($args,$output,$operator);
|
1162 |
+
if ($options['nxsCPTSeld']!='') $nxsCPTSeld = unserialize($options['nxsCPTSeld']); else $nxsCPTSeld = array_keys($post_types); //prr($nxsCPTSeld);
|
1163 |
+
|
1164 |
+
if ($post->post_type == 'post' || (in_array($post->post_type, $post_types) && in_array($post->post_type, $nxsCPTSeld)) ) { //prr($options);
|
1165 |
+
//## Check if need to publish it
|
1166 |
+
if (!$aj && $type!='' && (int)$options[$type][0]['do'.$type]!=1) return; $chCats = isset($options['apCats'])?trim($options['apCats']):''; $continue = true;
|
1167 |
+
if ($chCats!=''){ $cats = split(",", $options['apCats']); $continue = false;
|
1168 |
+
foreach ($cats as $cat) { if (preg_match('/^-\d+/', $cat)) { $cat = preg_replace('/^-/', '', $cat);
|
1169 |
+
//## if in the exluded category, return.
|
1170 |
+
if (in_category( (int)$cat, $post )) return; else $continue = true;
|
1171 |
+
} else if (preg_match('/\d+/', $cat)) { if (in_category( (int)$cat, $post )) $continue = true; }
|
1172 |
+
}
|
1173 |
+
}
|
1174 |
+
|
1175 |
+
// prr($options); echo $type; prr($_POST); die();
|
1176 |
+
|
1177 |
+
if ($type==''){
|
1178 |
+
if ($isPost) $doGP = $_POST['SNAPincludeGP']; else { $t = get_post_meta($postID, 'SNAPincludeGP', true); $doGP = $t!=''?$t:$options['gp'][0]['doGP']; }
|
1179 |
+
if ($isPost) $doFB = $_POST['SNAPincludeFB']; else { $t = get_post_meta($postID, 'SNAPincludeFB', true); $doFB = $t!=''?$t:$options['fb'][0]['doFB']; }
|
1180 |
+
if ($isPost) $doTW = $_POST['SNAPincludeTW']; else { $t = get_post_meta($postID, 'SNAPincludeTW', true); $doTW = $t!=''?$t:$options['tw'][0]['doTW']; }
|
1181 |
+
if ($isPost) $doTR = $_POST['SNAPincludeTR']; else { $t = get_post_meta($postID, 'SNAPincludeTR', true); $doTR = $t!=''?$t:$options['tr'][0]['doTR']; }
|
1182 |
+
if ($isPost) $doPN = $_POST['SNAPincludePN']; else { $t = get_post_meta($postID, 'SNAPincludePN', true); $doPN = $t!=''?$t:$options['pn'][0]['doPN']; }
|
1183 |
+
if ($isPost) $doBG = $_POST['SNAPincludeBG']; else { $t = get_post_meta($postID, 'SNAPincludeBG', true); $doBG = $t!=''?$t:$options['bg'][0]['doBG']; }
|
1184 |
+
if ($isPost) $doLI = $_POST['SNAPincludeLI']; else { $t = get_post_meta($postID, 'SNAPincludeLI', true); $doLI = $t!=''?$t:$options['li'][0]['doLI']; }
|
1185 |
+
} //var_dump($doBG); var_dump($doGP); var_dump($doFB); var_dump($doTR); echo "===".$type; //die();
|
1186 |
+
if (!$continue) return; else {
|
1187 |
+
if ($type=='TW' || ($type=='' && (int)$doTW==1)) doPublishToTW($postID, $options);
|
1188 |
+
if ($type=='GP' || ($type=='' && (int)$doGP==1)) doPublishToGP($postID, $options);
|
1189 |
+
if ($type=='FB' || ($type=='' && (int)$doFB==1)) doPublishToFB($postID, $options);
|
1190 |
+
if ($type=='TR' || ($type=='' && (int)$doTR==1)) doPublishToTR($postID, $options);
|
1191 |
+
if ($type=='PN' || ($type=='' && (int)$doPN==1)) doPublishToPN($postID, $options);
|
1192 |
+
if ($type=='BG' || ($type=='' && (int)$doBG==1)) doPublishToBG($postID, $options);
|
1193 |
+
if ($type=='LI' || ($type=='' && (int)$doLI==1)) doPublishToLI($postID, $options);
|
1194 |
+
}
|
1195 |
+
} //die();
|
1196 |
+
}
|
1197 |
+
}
|
1198 |
+
}
|
1199 |
+
// Add function to pubslih to Google +
|
1200 |
+
if (!function_exists("doPublishToGP")) { //## Second Function to Post to G+
|
1201 |
+
function doPublishToGP($postID, $options){ if ($postID=='0') echo "Testing ... <br/><br/>"; $isPost = isset($_POST["SNAPEdit"]);
|
1202 |
+
if ($isPost) $gpMsgFormat = $_POST['SNAP_FormatGP']; else { $t = get_post_meta($postID, 'SNAP_FormatGP', true); $gpMsgFormat = $t!=''?$t:$options['gp'][0]['gpMsgFormat']; }
|
1203 |
+
if ($isPost) $isAttachGP = $_POST['SNAP_AttachGP']; else { $t = get_post_meta($postID, 'SNAP_AttachGP', true); $isAttachGP = $t!=''?$t:$options['gp'][0]['gpAttch']; }
|
1204 |
+
$msg = nsFormatMessage($gpMsgFormat, $postID);// prr($msg); echo $postID;
|
1205 |
+
if ($isAttachGP=='1' && function_exists("get_post_thumbnail_id") ){ $src = wp_get_attachment_image_src(get_post_thumbnail_id($postID), 'thumbnail'); $src = $src[0];}
|
1206 |
+
$email = $options['gp'][0]['gpUName']; $pass = substr($options['gp'][0]['gpPass'], 0, 5)=='n5g9a'?nsx_doDecode(substr($options['gp'][0]['gpPass'], 5)):$options['gp'][0]['gpPass'];
|
1207 |
+
$connectID = getUqID(); $loginError = doConnectToGooglePlus($connectID, $email, $pass); if ($loginError!==false) {echo $loginError; return "BAD USER/PASS";}
|
1208 |
+
$url = get_permalink($postID); if ($isAttachGP=='1') $lnk = doGetGoogleUrlInfo($connectID, $url); if (is_array($lnk) && $src!='') $lnk['img'] = $src;
|
1209 |
+
if (!empty($options['gp'][0]['gpPageID'])) { $to = $options['gp'][0]['gpPageID']; $ret = doPostToGooglePlus($connectID, $msg, $lnk, $to);} else $ret = doPostToGooglePlus($connectID, $msg, $lnk);
|
1210 |
+
if ($ret!='OK') echo $ret; else if ($postID=='0') echo 'OK - Message Posted, please see your Google+ Page'; // echo "G";
|
1211 |
+
}
|
1212 |
+
}
|
1213 |
+
// Add function to pubslih to FaceBook
|
1214 |
+
if (!function_exists("doPublishToFB")) { //## Second Function to Post to FB
|
1215 |
+
function doPublishToFB($postID, $options){ global $ShownAds; require_once ('apis/facebook.php'); $page_id = $options['fb'][0]['fbPgID']; $isPost = isset($_POST["SNAPEdit"]); if (isset($ShownAds)) $ShownAdsL = $ShownAds;
|
1216 |
+
$facebook = new NXS_Facebook(array( 'appId' => $options['fb'][0]['fbAppID'], 'secret' => $options['fb'][0]['fbAppSec'], 'cookie' => true ));
|
1217 |
+
$blogTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); if ($blogTitle=='') $blogTitle = home_url(); $imgURL = '';
|
1218 |
+
|
1219 |
+
if ($postID=='0') {echo "Testing ... <br/><br/>";
|
1220 |
+
$mssg = array('access_token' => $options['fb'][0]['fbAppPageAuthToken'], 'message' => 'Test Post', 'name' => 'Test Post', 'caption' => 'Test Post', 'link' => home_url(),
|
1221 |
+
'description' => 'test Post', 'actions' => array(array('name' => $blogTitle, 'link' => home_url())) );
|
1222 |
+
} else {$post = get_post($postID);
|
1223 |
+
if ($isPost) $fbMsgFormat = $_POST['SNAP_FormatFB']; else { $t = get_post_meta($postID, 'SNAP_FormatFB', true); $fbMsgFormat = $t!=''?$t:$options['fb'][0]['fbMsgFormat'];}
|
1224 |
+
if ($isPost) $isAttachFB = $_POST['SNAP_AttachFB']; else { $t = get_post_meta($postID, 'SNAP_AttachFB', true); $isAttachFB = $t!=''?$t:$options['fb'][0]['fbAttch'];}
|
1225 |
+
$isAttachVidFB = $t!=''?$t:$options['fb'][0]['fbAttchAsVid'];
|
1226 |
+
$msg = nsFormatMessage($fbMsgFormat, $postID);
|
1227 |
+
if (($isAttachFB=='1' || $isAttachFB=='2') && function_exists("get_post_thumbnail_id") ){
|
1228 |
+
if ($imgURL=='') if (function_exists("get_post_thumbnail_id") ){ $imgURL = wp_get_attachment_image_src(get_post_thumbnail_id($postID), 'medium'); $imgURL = $imgURL[0];}
|
1229 |
+
if ($imgURL=='') {$post = get_post($postID); $imgsFromPost = nsFindImgsInPost($post); if (is_array($imgsFromPost) && count($imgsFromPost)>0) $imgURL = $imgsFromPost[0]; }
|
1230 |
+
if ($imgURL=='') $imgURL = $options['pn'][0]['pnDefImg']; if ($imgURL=='') $imgURL = $options['ogImgDef'];
|
1231 |
+
|
1232 |
+
}
|
1233 |
+
$dsc = trim(apply_filters('the_content', $post->post_excerpt)); if ($dsc=='') $dsc = apply_filters('the_content', $post->post_content); $dsc = nsTrnc($dsc, 900, ' ');
|
1234 |
+
$postSubtitle = get_permalink($postID); $dsc = strip_tags($dsc); $msg = strip_tags($msg); $msg = nxs_decodeEntitiesFull($msg); $dsc = nxs_decodeEntitiesFull($dsc);
|
1235 |
+
$mssg = array('access_token' => $options['fb'][0]['fbAppPageAuthToken'], 'message' => $msg, 'name' => $post->post_title, 'caption' => $postSubtitle, 'link' => get_permalink($postID),
|
1236 |
+
'description' => $dsc);
|
1237 |
+
if (trim($imgURL)!='') $mssg['picture'] = $imgURL;
|
1238 |
+
if ($isAttachVidFB=='1') {$vids = nsFindVidsInPost($post); if (count($vids)>0) { $mssg['source'] = 'http://www.youtube.com/v/'.$vids[0]; $mssg['picture'] = 'http://img.youtube.com/vi/'.$vids[0].'/0.jpg'; }}
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
if ($isAttachFB=='1') $mssg['actions'] = array(array('name' => $blogTitle, 'link' => home_url()));
|
1242 |
+
|
1243 |
+
//prr($mssg);
|
1244 |
+
if (isset($ShownAds)) $ShownAds = $ShownAdsL; // FIX for the quick-adsense plugin
|
1245 |
+
try { $ret = $facebook->api("/$page_id/feed","post", $mssg);} catch (NXS_FacebookApiException $e) { echo 'Error:', $e->getMessage(), "\n";} // echo "F";
|
1246 |
+
if ($postID=='0') { prr($ret); echo 'OK - Message Posted, please see your Facebook Page ';}
|
1247 |
+
}
|
1248 |
+
}
|
1249 |
+
// Add function to pubslih to Twitter
|
1250 |
+
if (!function_exists("doPublishToTW")) { //## Second Function to Post to TW
|
1251 |
+
function doPublishToTW($postID, $options){ $blogTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); if ($blogTitle=='') $blogTitle = home_url(); $isPost = isset($_POST["SNAPEdit"]);
|
1252 |
+
if ($postID=='0') { echo "Testing ... <br/><br/>"; $msg = 'Test Post from '.$blogTitle." - ".rand(1, 155);}
|
1253 |
+
else{
|
1254 |
+
$post = get_post($postID); //prr($post); die();
|
1255 |
+
if ($isPost) $twMsgFormat = $_POST['SNAP_FormatTW']; else { $t = get_post_meta($postID, 'SNAP_FormatTW', true); $twMsgFormat = $t!=''?$t:$options['tw'][0]['twMsgFormat']; }
|
1256 |
+
$twLim = 140; if (stripos($twMsgFormat, '%URL%')!==false || stripos($twMsgFormat, '%SURL%')!==false) $twLim = $twLim - 20;
|
1257 |
+
if (stripos($twMsgFormat, '%AUTHORNAME%')!==false) { $aun = $post->post_author; $aun = get_the_author_meta('display_name', $aun ); $twLim = $twLim - strlen($aun); }
|
1258 |
+
$noRepl = str_ireplace("%TITLE%", "", $twMsgFormat); $noRepl = str_ireplace("%SITENAME%", "", $noRepl); $noRepl = str_ireplace("%URL%", "", $noRepl);
|
1259 |
+
$noRepl = str_ireplace("%SURL%", "", $noRepl);$noRepl = str_ireplace("%TEXT%", "", $noRepl);$noRepl = str_ireplace("%FULLTEXT%", "", $noRepl);
|
1260 |
+
$noRepl = str_ireplace("%AUTHORNAME%", "", $noRepl); $twLim = $twLim - strlen($noRepl);
|
1261 |
+
|
1262 |
+
if (stripos($twMsgFormat, '%TITLE%')!==false) {
|
1263 |
+
$title = $post->post_title; $title = nsTrnc($title, $twLim); $twMsgFormat = str_ireplace("%TITLE%", $title, $twMsgFormat); $twLim = $twLim - strlen($title);
|
1264 |
+
}
|
1265 |
+
if (stripos($twMsgFormat, '%SITENAME%')!==false) {
|
1266 |
+
$siteTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); $siteTitle = nsTrnc($siteTitle, $twLim); $twMsgFormat = str_ireplace("%SITENAME%", $siteTitle, $twMsgFormat); $twLim = $twLim - strlen($siteTitle);
|
1267 |
+
}
|
1268 |
+
if (stripos($twMsgFormat, '%TEXT%')!==false) {
|
1269 |
+
if ($post->post_excerpt!="") $excerpt = apply_filters('the_content', $post->post_excerpt); else $excerpt= apply_filters('the_content', $post->post_content);
|
1270 |
+
$excerpt = nsTrnc(strip_tags(strip_shortcodes($excerpt)), 300, " ", "...");
|
1271 |
+
$excerpt = nsTrnc($excerpt, $twLim); $twMsgFormat = str_ireplace("%TEXT%", $excerpt, $twMsgFormat); $twLim = $twLim - strlen($excerpt);
|
1272 |
+
}
|
1273 |
+
if (stripos($twMsgFormat, '%FULLTEXT%')!==false) {
|
1274 |
+
$postContent = apply_filters('the_content', $post->post_content); $postContent = nsTrnc($postContent, $twLim); $twMsgFormat = str_ireplace("%FULLTEXT%", $postContent, $twMsgFormat); $twLim = $twLim - strlen($postContent);
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
$msg = nsFormatMessage($twMsgFormat, $postID);
|
1278 |
+
|
1279 |
+
} //prr($twMsgFormat);
|
1280 |
+
require_once ('apis/tmhOAuth.php'); require_once ('apis/tmhUtilities.php'); //if ($uln>0) $msg = nsTrnc($msg, 140+$uln); else $msg = nsTrnc($msg, 140); prr($uln); prr($msg); echo strlen($msg);
|
1281 |
+
$tmhOAuth = new NXS_tmhOAuth(array( 'consumer_key' => $options['tw'][0]['twConsKey'], 'consumer_secret' => $options['tw'][0]['twConsSec'], 'user_token' => $options['tw'][0]['twAccToken'], 'user_secret' => $options['tw'][0]['twAccTokenSec']));
|
1282 |
+
$code = $tmhOAuth->request('POST', $tmhOAuth->url('1/statuses/update'), array('status' =>$msg)); //prr($code); echo "YYY";
|
1283 |
+
if ($code == 200) { if ($postID=='0') { echo 'OK - Message Posted, please see your Twitter Page'; /*NXS_tmhUtilities::pr(json_decode($tmhOAuth->response['response']));*/}} else { NXS_tmhUtilities::pr($tmhOAuth->response['response']);}
|
1284 |
+
}
|
1285 |
+
}
|
1286 |
+
// Add function to pubslih to tumblr.
|
1287 |
+
if (!function_exists("doPublishToTR")) { //## Second Function to Post to TR
|
1288 |
+
function doPublishToTR($postID, $options){ $blogTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); if ($blogTitle=='') $blogTitle = home_url(); $isPost = isset($_POST["SNAPEdit"]);
|
1289 |
+
if ($postID=='0') { echo "Testing ... <br/><br/>"; $msg = 'Test Post from '.$blogTitle;}
|
1290 |
+
else{
|
1291 |
+
if ($isPost) $trMsgFormat = $_POST['SNAP_FormatTR']; else { $t = get_post_meta($postID, 'SNAP_FormatTR', true); $trMsgFormat = $t!=''?$t:$options['tr'][0]['trMsgFormat']; }
|
1292 |
+
$msg = nsFormatMessage($trMsgFormat, $postID);
|
1293 |
+
if ($isPost) $trMsgTFormat = $_POST['SNAP_FormatTTR']; else { $t = get_post_meta($postID, 'SNAP_FormatTTR', true); $trMsgTFormat = $t!=''?$t:$options['tr'][0]['trMsgTFormat']; }
|
1294 |
+
$msgT = nsFormatMessage($trMsgTFormat, $postID);
|
1295 |
+
}
|
1296 |
+
require_once('apis/trOAuth.php'); $consumer_key = $options['tr'][0]['trConsKey']; $consumer_secret = $options['tr'][0]['trConsSec'];
|
1297 |
+
$tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $options['tr'][0]['trAccessTocken']['oauth_token'], $options['tr'][0]['trAccessTocken']['oauth_token_secret']); //prr($options);
|
1298 |
+
$trURL = trim(str_ireplace('http://', '', $options['tr'][0]['trURL'])); if (substr($trURL,-1)=='/') $trURL = substr($trURL,0,-1);
|
1299 |
+
if ($options['tr'][0]['trInclTags']=='1'){$t = wp_get_post_tags($postID); $tggs = array(); foreach ($t as $tagA) {$tggs[] = $tagA->name;} $tags = implode(',',$tggs); }
|
1300 |
+
$postinfo = $tum_oauth->post("http://api.tumblr.com/v2/blog/".$trURL."/post", array('type'=>'text', 'title'=>$msgT, 'body'=>$msg, 'tags'=>$tags, 'source'=>get_permalink($postID))); //prr($tum_oauth);
|
1301 |
+
$code = $postinfo->meta->status; //prr($msg); prr($postinfo); echo $code."VVVV"; die("|====");
|
1302 |
+
if ($code == 201) { if ($postID=='0') { echo 'OK - Message Posted, please see your Tumblr Page. <br/> Result:'; prr($postinfo->meta); } } else { prr($postinfo); }
|
1303 |
+
return $code;
|
1304 |
+
}
|
1305 |
+
}
|
1306 |
+
if (!function_exists("doPublishToPN")) { //## Second Function to Post to PN
|
1307 |
+
function doPublishToPN($postID, $options){ global $nxs_gCookiesArr; $blogTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); if ($blogTitle=='') $blogTitle = home_url(); $isPost = isset($_POST["SNAPEdit"]);
|
1308 |
+
if ($postID=='0') { echo "Testing ... <br/><br/>"; $msg = 'Test Post from '.$blogTitle; $link = home_url();
|
1309 |
+
if ($options['pn'][0]['pnDefImg']!='') $imgURL = $options['pn'][0]['pnDefImg']; else $imgURL ="http://direct.gtln.us/img/nxs/NextScriptsLogoT.png"; $boardID = $options['pn'][0]['pnBoard'];
|
1310 |
+
}
|
1311 |
+
else{ // prr($_POST); $t = get_post_meta($postID, 'apPNBoard', true); prr($t); prr($options['pn'][0]['pnBoard']);
|
1312 |
+
if ($isPost) $pnMsgFormat = $_POST['SNAP_FormatPN']; else { $t = get_post_meta($postID, 'SNAP_FormatPN', true); $pnMsgFormat = $t!=''?$t:$options['pn'][0]['pnMsgFormat']; }
|
1313 |
+
if ($isPost) $boardID = $_POST['apPNBoard']; else { $t = get_post_meta($postID, 'apPNBoard', true); $boardID = $t!=''?$t:$options['pn'][0]['pnBoard']; }
|
1314 |
+
$msg = nsFormatMessage($pnMsgFormat, $postID); $link = get_permalink($postID);
|
1315 |
+
}
|
1316 |
+
$email = $options['pn'][0]['pnUName']; $pass = substr($options['pn'][0]['pnPass'], 0, 5)=='g9c1a'?nsx_doDecode(substr($options['pn'][0]['pnPass'], 5)):$options['pn'][0]['pnPass'];// prr($boardID); prr($_POST); die();
|
1317 |
+
|
1318 |
+
if ($imgURL=='') if (function_exists("get_post_thumbnail_id") ){ $imgURL = wp_get_attachment_image_src(get_post_thumbnail_id($postID), 'large'); $imgURL = $imgURL[0];}
|
1319 |
+
if ($imgURL=='') {$post = get_post($postID); $imgsFromPost = nsFindImgsInPost($post); if (is_array($imgsFromPost) && count($imgsFromPost)>0) $imgURL = $imgsFromPost[0]; }
|
1320 |
+
if ($imgURL=='') $imgURL = $options['pn'][0]['pnDefImg']; if ($imgURL=='') $imgURL = $options['ogImgDef']; $msg = urlencode($msg);
|
1321 |
+
|
1322 |
+
if (isset($options['pn'][0]['pnSvC'])) $nxs_gCookiesArr = maybe_unserialize( $options['pn'][0]['pnSvC']); $loginError = true;
|
1323 |
+
if (is_array($nxs_gCookiesArr)) $loginError = doCheckPinterest();
|
1324 |
+
if ($loginError!==false) $loginError = doConnectToPinterest($email, $pass); if ($loginError!==false) {echo $loginError; return "BAD USER/PASS";}
|
1325 |
+
if (serialize($nxs_gCookiesArr)!=$options['pn'][0]['pnSvC']) {$options['pn'][0]['pnSvC'] = serialize($nxs_gCookiesArr); update_option('NS_SNAutoPoster', $options); }
|
1326 |
+
$ret = doPostToPinterest($msg, $imgURL, $link, $boardID);
|
1327 |
+
if ($ret!='OK') echo $ret; else if ($postID=='0') echo 'OK - Message Posted, please see your Pinterest Page'; // echo "P";
|
1328 |
+
}
|
1329 |
+
}
|
1330 |
+
if (!function_exists("doPublishToBG")) { //## Second Function to Post to PN
|
1331 |
+
function doPublishToBG($postID, $options){ $blogTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); if ($blogTitle=='') $blogTitle = home_url(); $isPost = isset($_POST["SNAPEdit"]);
|
1332 |
+
if ($postID=='0') { echo "Testing ... <br/><br/>"; $msgT = 'Test Post from '.$blogTitle; $link = home_url(); $msg = 'Test Post from '.$blogTitle. " ".$link; }
|
1333 |
+
else{
|
1334 |
+
if ($isPost) $bgMsgFormat = $_POST['SNAP_FormatBG']; else { $t = get_post_meta($postID, 'SNAP_FormatBG', true); $bgMsgFormat = $t!=''?$t:$options['bg'][0]['bgMsgFormat']; }
|
1335 |
+
$msg = nsFormatMessage($bgMsgFormat, $postID); $link = get_permalink($postID);
|
1336 |
+
if ($isPost) $bgMsgTFormat = $_POST['SNAP_FormatTBG']; else { $t = get_post_meta($postID, 'SNAP_FormatTBG', true); $bgMsgTFormat = $t!=''?$t:$options['bg'][0]['bgMsgTFormat']; }
|
1337 |
+
$msgT = nsFormatMessage($bgMsgTFormat, $postID);
|
1338 |
+
}
|
1339 |
+
$email = $options['bg'][0]['bgUName']; $pass = substr($options['bg'][0]['bgPass'], 0, 5)=='b4d7s'?nsx_doDecode(substr($options['bg'][0]['bgPass'], 5)):$options['bg'][0]['bgPass']; $blogID = $options['bg'][0]['bgBlogID'];
|
1340 |
+
//echo "###".$auth."|".$blogID."|".$msgT."|".$msg;
|
1341 |
+
if ($options['bg'][0]['bgInclTags']=='1'){$t = wp_get_post_tags($postID); $tggs = array(); foreach ($t as $tagA) {$tggs[] = $tagA->name;} $tags = implode('","',$tggs);}
|
1342 |
+
if (function_exists("doConnectToBlogger")) {$auth = doConnectToBlogger($email, $pass); if ($auth!==false) die($auth); $ret = doPostToBlogger($blogID, $msgT, $msg, $tags);}
|
1343 |
+
else {$auth = nsBloggerGetAuth($email, $pass); $ret = nsBloggerNewPost($auth, $blogID, $msgT, $msg);}
|
1344 |
+
if ($ret!='OK') echo $ret; else if ($postID=='0') echo 'OK - Message Posted, please see your Blooger/Blogpost Page';
|
1345 |
+
}
|
1346 |
+
}
|
1347 |
+
if (!function_exists("doPublishToLI")) { //## Second Function to Post to PN
|
1348 |
+
function doPublishToLI($postID, $options){ $blogTitle = htmlspecialchars_decode(get_bloginfo('name'), ENT_QUOTES); if ($blogTitle=='') $blogTitle = home_url(); $isPost = isset($_POST["SNAPEdit"]);
|
1349 |
+
if ($postID=='0') { echo "Testing ... <br/><br/>"; $msgT = 'Test Post from '.$blogTitle; $link = home_url(); $msg = 'Test Post from '.$blogTitle. " ".$link; }
|
1350 |
+
else{
|
1351 |
+
if ($isPost) $liMsgFormat = $_POST['SNAP_FormatLI']; else { $t = get_post_meta($postID, 'SNAP_FormatLI', true); $liMsgFormat = $t!=''?$t:$options['li'][0]['liMsgFormat']; }
|
1352 |
+
$msg = nsFormatMessage($liMsgFormat, $postID); $link = get_permalink($postID);
|
1353 |
+
if ($isPost) $isAttachLI = $_POST['SNAP_AttachLI']; else { $t = get_post_meta($postID, 'SNAP_AttachLI', true); $isAttachLI = $t!=''?$t:$options['li'][0]['liAttch'];}
|
1354 |
+
}
|
1355 |
+
require_once ('apis/liOAuth.php'); $linkedin = new nsx_LinkedIn($options['li'][0]['liAPIKey'], $options['li'][0]['liAPISec']); $linkedin->oauth_verifier = $options['li'][0]['liOAuthVerifier'];
|
1356 |
+
$linkedin->request_token = new nsx_trOAuthConsumer($options['li'][0]['liOAuthToken'], $options['li'][0]['liOAuthTokenSecret'], 1);
|
1357 |
+
$linkedin->access_token = new nsx_trOAuthConsumer($options['li'][0]['liAccessToken'], $options['li'][0]['liAccessTokenSecret'], 1); $msg = nsTrnc($msg, 700);
|
1358 |
+
|
1359 |
+
if ($isAttachLI=='1' && function_exists("get_post_thumbnail_id") ){ $src = wp_get_attachment_image_src(get_post_thumbnail_id($postID), 'medium'); $src = $src[0];}
|
1360 |
+
|
1361 |
+
if($isAttachLI=='1') { $post = get_post($postID); $dsc = trim(apply_filters('the_content', $post->post_excerpt)); if ($dsc=='') $dsc = apply_filters('the_content', $post->post_content); $dsc = nsTrnc($dsc, 250); }
|
1362 |
+
|
1363 |
+
$title = nsTrnc($post->post_title, 200);
|
1364 |
+
//$dsc = strip_tags($dsc); $msg = strip_tags($msg); $title = strip_tags($title);
|
1365 |
+
//$dsc = htmlentities($dsc); $msg = htmlentities($msg); $title = htmlentities($title);
|
1366 |
+
//$dsc = str_replace('<','',$dsc); $dsc = str_replace('>','',$dsc); $dsc = str_replace('>','',$dsc); $dsc = str_replace('<','',$dsc);
|
1367 |
+
//$msg = str_replace('<','',$msg); $msg = str_replace('>','',$msg); $msg = str_replace('>','',$msg); $msg = str_replace('<','',$msg);
|
1368 |
+
|
1369 |
+
//$dsc = str_replace('&','',$dsc);
|
1370 |
+
try{ if($isAttachLI=='1') $ret = $linkedin->postShare($msg, $title, get_permalink($postID), $src, $dsc); else $ret = $linkedin->postShare($msg); }
|
1371 |
+
catch (Exception $o){ echo "<br />Linkedin Status couldn't be updated!</br>"; prr($o); echo '<br />'; $ret="ERROR:"; }
|
1372 |
+
|
1373 |
+
if ($ret!='201') echo $ret; else if ($postID=='0') echo 'OK - Linkedin status updated successfully';
|
1374 |
+
if ($ret=='201') return true; else return 'Something Wrong';
|
1375 |
+
}
|
1376 |
+
}
|
1377 |
+
|
1378 |
+
// add settings link to plugins list
|
1379 |
+
function ns_add_settings_link($links, $file) {
|
1380 |
+
static $this_plugin;
|
1381 |
+
if (!$this_plugin) $this_plugin = plugin_basename(__FILE__);
|
1382 |
+
if ($file == $this_plugin){
|
1383 |
+
$settings_link = '<a href="options-general.php?page=NextScripts_SNAP.php">'.__("Settings","default").'</a>';
|
1384 |
+
array_unshift($links, $settings_link);
|
1385 |
+
}
|
1386 |
+
return $links;
|
1387 |
+
}
|
1388 |
+
|
1389 |
+
function nsFindImgsInPost($post) { global $ShownAds; if (isset($ShownAds)) $ShownAdsL = $ShownAds; $postCnt = apply_filters('the_content', $post->post_content); $postImgs = array();
|
1390 |
+
$output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $postCnt, $matches ); if ($output === false){return false;}
|
1391 |
+
foreach ($matches[1] as $match) { if (!preg_match('/^https?:\/\//', $match ) ) $match = site_url( '/' ) . ltrim( $match, '/' ); $postImgs[] = $match;} if (isset($ShownAds)) $ShownAds = $ShownAdsL; return $postImgs;
|
1392 |
+
}
|
1393 |
+
function nsFindVidsInPost($post) { global $ShownAds; if (isset($ShownAds)) $ShownAdsL = $ShownAds; $postCnt = apply_filters('the_content', $post->post_content); $postVids = array();
|
1394 |
+
$output = preg_match_all( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $postCnt, $matches ); if ($output === false){return false;}
|
1395 |
+
foreach ($matches[1] as $match) { $match = trim($match); $postVids[] = $match;} if (isset($ShownAds)) $ShownAds = $ShownAdsL; return $postVids;
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
function nsAddOGTags() { global $post, $ShownAds;; $options = get_option("NS_SNAutoPoster"); if ((int)$options['nsOpenGraph'] != 1) return ""; $ogimgs = array(); if (isset($ShownAds)) $ShownAdsL = $ShownAds;
|
1399 |
+
//## Add og:site_name, og:locale, og:url, og:title, og:description, og:type
|
1400 |
+
echo '<meta property="og:site_name" content="' . get_bloginfo( 'name' ) . '" />' . "\n"; echo '<meta property="og:locale" content="' . esc_attr( get_locale() ) . '" />' . "\n";
|
1401 |
+
if (is_home() || is_front_page()) {$ogurl = get_bloginfo( 'url' ); } else { $ogurl = 'http' . (is_ssl() ? 's' : '') . "://".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];}
|
1402 |
+
echo '<meta property="og:url" content="' . esc_url( apply_filters( 'ns_ogurl', $ogurl ) ) . '" />' . "\n";
|
1403 |
+
if (is_home() || is_front_page()) {$ogtitle = get_bloginfo( 'name' ); } else { $ogtitle = get_the_title();}
|
1404 |
+
echo '<meta property="og:title" content="' . esc_attr( apply_filters( 'ns_ogtitle', $ogtitle ) ) . '" />' . "\n";
|
1405 |
+
|
1406 |
+
|
1407 |
+
|
1408 |
+
if ( is_singular() ) {
|
1409 |
+
if ( has_excerpt( $post->ID )) {$ogdesc = strip_tags( nxs_snapCleanHTML(get_the_excerpt( $post->ID )) ); }
|
1410 |
+
else { $ogdesc = str_replace( "\r\n", ' ' , nsTrnc( strip_tags( strip_shortcodes( nxs_snapCleanHTML(apply_filters('the_content', $post->post_content)) ) ), 250, ' ' ) ); }
|
1411 |
+
} else { $ogdesc = nxs_snapCleanHTML(get_bloginfo( 'description' )); } $ogdesc = nsTrnc($ogdesc, 900, ' ');
|
1412 |
+
echo '<meta property="og:description" content="' . trim( esc_attr( apply_filters( 'ns_ogdesc', $ogdesc ) )) . '" />' . "\n";
|
1413 |
+
|
1414 |
+
//## Add og:image
|
1415 |
+
if (!is_home()) {
|
1416 |
+
$vidsFromPost = nsFindVidsInPost($post); if ($vidsFromPost !== false && is_singular()) { /* echo '<meta property="og:video" content="http://www.youtube.com/v/'.$vidsFromPost[0].'" />'."\n";
|
1417 |
+
echo '<meta property="og:video:type" content="application/x-shockwave-flash" />'."\n";
|
1418 |
+
echo '<meta property="og:video:width" content="480" />'."\n";
|
1419 |
+
echo '<meta property="og:video:height" content="360" />'."\n";
|
1420 |
+
echo '<meta property="og:image" content="http://i2.ytimg.com/vi/'.$vidsFromPost[0].'/mqdefault.jpg" />'."\n";
|
1421 |
+
echo '<meta property="og:type" content="video" />'."\n"; */
|
1422 |
+
}
|
1423 |
+
// else
|
1424 |
+
{
|
1425 |
+
if (function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID)) {
|
1426 |
+
$thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'thumbnail' ); $ogimgs[] = $thumbnail_src[0];
|
1427 |
+
} $imgsFromPost = nsFindImgsInPost($post);
|
1428 |
+
if ($imgsFromPost !== false && is_singular()) $ogimgs = array_merge($ogimgs, $imgsFromPost);
|
1429 |
+
}
|
1430 |
+
}
|
1431 |
+
$ogtype = is_single()?'article':'website'; if($vidsFromPost === false) echo '<meta property="og:type" content="' . esc_attr(apply_filters( 'ns_ogtype', $ogtype)).'" />'."\n";
|
1432 |
+
//## Add default image to the endof the array
|
1433 |
+
if ( count($ogimgs)<1 && isset($options['ogImgDef']) && $options['ogImgDef']!='') $ogimgs[] = $options['ogImgDef'];
|
1434 |
+
//## Output og:image tags
|
1435 |
+
if (!empty($ogimgs) && is_array($ogimgs)) foreach ($ogimgs as $ogimage) echo '<meta property="og:image" content="' . esc_url(apply_filters('ns_ogimage', $ogimage)).'" />'."\n"; if (isset($ShownAds)) $ShownAds = $ShownAdsL;
|
1436 |
+
}
|
1437 |
+
|
1438 |
+
|
1439 |
+
|
1440 |
+
|
1441 |
+
//## Actions and filters
|
1442 |
+
function ns_custom_types_setup(){ $options = get_option('NS_SNAutoPoster');
|
1443 |
+
$args=array('public'=>true, '_builtin'=>false); $output = 'names'; $operator = 'and'; $post_types=get_post_types($args, $output, $operator);
|
1444 |
+
if (isset($options['nxsCPTSeld']) && $options['nxsCPTSeld']!='') $nxsCPTSeld = unserialize($options['nxsCPTSeld']); else $nxsCPTSeld = array_keys($post_types); //prr($nxsCPTSeld);
|
1445 |
+
foreach ($post_types as $cptID=>$cptName) if (in_array($cptID, $nxsCPTSeld)){ // echo "|".$cptID."|";
|
1446 |
+
add_action('future_to_publish_'.$cptID, 'nxs_snapPublishTo');
|
1447 |
+
add_action('new_to_publish_'.$cptID, 'nxs_snapPublishTo');
|
1448 |
+
add_action('draft_to_publish_'.$cptID, 'nxs_snapPublishTo');
|
1449 |
+
add_action('pending_to_publish_'.$cptID, 'nxs_snapPublishTo');
|
1450 |
+
add_action('private_to_publish_'.$cptID, 'nxs_snapPublishTo');
|
1451 |
+
add_action('auto-draft_to_publish_'.$cptID, 'nxs_snapPublishTo');
|
1452 |
+
}
|
1453 |
+
}
|
1454 |
+
if (isset($plgn_NS_SNAutoPoster)) { //## Actions
|
1455 |
+
//## Add the admin menu
|
1456 |
+
add_action('admin_menu', 'NS_SNAutoPoster_ap');
|
1457 |
+
//## Initialize options on plugin activation
|
1458 |
+
add_action("activate_NextScripts_GPAutoPoster/NextScripts_SNAP.php", array(&$plgn_NS_SNAutoPoster, 'init'));
|
1459 |
+
|
1460 |
+
//add_action('edit_form_advanced', array($plgn_NS_SNAutoPoster, 'NS_SNAP_AddPostMetaTags'));
|
1461 |
+
// add_action('edit_page_form', array($plgn_NS_SNAutoPoster, 'NS_SNAP_AddPostMetaTags'));
|
1462 |
+
|
1463 |
+
add_action('add_meta_boxes', array($plgn_NS_SNAutoPoster, 'NS_SNAP_addCustomBoxes'));
|
1464 |
+
|
1465 |
+
|
1466 |
+
add_action('edit_post', array($plgn_NS_SNAutoPoster, 'NS_SNAP_SavePostMetaTags'));
|
1467 |
+
add_action('publish_post', array($plgn_NS_SNAutoPoster, 'NS_SNAP_SavePostMetaTags'));
|
1468 |
+
add_action('save_post', array($plgn_NS_SNAutoPoster, 'NS_SNAP_SavePostMetaTags'));
|
1469 |
+
add_action('edit_page_form', array($plgn_NS_SNAutoPoster, 'NS_SNAP_SavePostMetaTags'));
|
1470 |
+
//## Whenever you publish a post, post to Google Plus
|
1471 |
+
add_action('future_to_publish', 'nxs_snapPublishTo');
|
1472 |
+
add_action('new_to_publish', 'nxs_snapPublishTo');
|
1473 |
+
add_action('draft_to_publish', 'nxs_snapPublishTo');
|
1474 |
+
add_action('pending_to_publish', 'nxs_snapPublishTo');
|
1475 |
+
add_action('private_to_publish', 'nxs_snapPublishTo');
|
1476 |
+
add_action('auto-draft_to_publish', 'nxs_snapPublishTo');
|
1477 |
+
|
1478 |
+
add_action('wp_loaded', 'ns_custom_types_setup' );
|
1479 |
+
|
1480 |
+
add_action('admin_head', 'jsPostToSNAP');
|
1481 |
+
add_action('wp_ajax_rePostToGP', 'rePostToGP_ajax');
|
1482 |
+
add_action('wp_ajax_rePostToFB', 'rePostToFB_ajax');
|
1483 |
+
add_action('wp_ajax_rePostToTW', 'rePostToTW_ajax');
|
1484 |
+
add_action('wp_ajax_rePostToTR', 'rePostToTR_ajax');
|
1485 |
+
add_action('wp_ajax_rePostToPN', 'rePostToPN_ajax');
|
1486 |
+
add_action('wp_ajax_rePostToBG', 'rePostToBG_ajax');
|
1487 |
+
add_action('wp_ajax_rePostToLI', 'rePostToLI_ajax');
|
1488 |
+
add_action('wp_ajax_getBoards' , 'nsGetBoards_ajax');
|
1489 |
+
//## Custom Post Types and OG tags
|
1490 |
+
add_filter('plugin_action_links','ns_add_settings_link', 10, 2 );
|
1491 |
+
add_action('wp_head','nsAddOGTags', 50);
|
1492 |
+
}
|
1493 |
+
?>
|
apis/OAuth.php
ADDED
@@ -0,0 +1,874 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: foldmethod=marker
|
3 |
+
|
4 |
+
/* Generic exception class
|
5 |
+
*/
|
6 |
+
class nsx_trOAuthException extends Exception {
|
7 |
+
// pass
|
8 |
+
}
|
9 |
+
|
10 |
+
class nsx_trOAuthConsumer {
|
11 |
+
public $key;
|
12 |
+
public $secret;
|
13 |
+
|
14 |
+
function __construct($key, $secret, $callback_url=NULL) {
|
15 |
+
$this->key = $key;
|
16 |
+
$this->secret = $secret;
|
17 |
+
$this->callback_url = $callback_url;
|
18 |
+
}
|
19 |
+
|
20 |
+
function __toString() {
|
21 |
+
return "OAuthConsumer[key=$this->key,secret=$this->secret]";
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
class nsx_trOAuthToken {
|
26 |
+
// access tokens and request tokens
|
27 |
+
public $key;
|
28 |
+
public $secret;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* key = the token
|
32 |
+
* secret = the token secret
|
33 |
+
*/
|
34 |
+
function __construct($key, $secret) {
|
35 |
+
$this->key = $key;
|
36 |
+
$this->secret = $secret;
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* generates the basic string serialization of a token that a server
|
41 |
+
* would respond to request_token and access_token calls with
|
42 |
+
*/
|
43 |
+
function to_string() {
|
44 |
+
return "oauth_token=" .
|
45 |
+
nsx_trOAuthUtil::urlencode_rfc3986($this->key) .
|
46 |
+
"&oauth_token_secret=" .
|
47 |
+
nsx_trOAuthUtil::urlencode_rfc3986($this->secret);
|
48 |
+
}
|
49 |
+
|
50 |
+
function __toString() {
|
51 |
+
return $this->to_string();
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* A class for implementing a Signature Method
|
57 |
+
* See section 9 ("Signing Requests") in the spec
|
58 |
+
*/
|
59 |
+
abstract class nsx_trOAuthSignatureMethod {
|
60 |
+
/**
|
61 |
+
* Needs to return the name of the Signature Method (ie HMAC-SHA1)
|
62 |
+
* @return string
|
63 |
+
*/
|
64 |
+
abstract public function get_name();
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Build up the signature
|
68 |
+
* NOTE: The output of this function MUST NOT be urlencoded.
|
69 |
+
* the encoding is handled in OAuthRequest when the final
|
70 |
+
* request is serialized
|
71 |
+
* @param OAuthRequest $request
|
72 |
+
* @param OAuthConsumer $consumer
|
73 |
+
* @param OAuthToken $token
|
74 |
+
* @return string
|
75 |
+
*/
|
76 |
+
abstract public function build_signature($request, $consumer, $token);
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Verifies that a given signature is correct
|
80 |
+
* @param OAuthRequest $request
|
81 |
+
* @param OAuthConsumer $consumer
|
82 |
+
* @param OAuthToken $token
|
83 |
+
* @param string $signature
|
84 |
+
* @return bool
|
85 |
+
*/
|
86 |
+
public function check_signature($request, $consumer, $token, $signature) {
|
87 |
+
$built = $this->build_signature($request, $consumer, $token);
|
88 |
+
return $built == $signature;
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
|
94 |
+
* where the Signature Base String is the text and the key is the concatenated values (each first
|
95 |
+
* encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
|
96 |
+
* character (ASCII code 38) even if empty.
|
97 |
+
* - Chapter 9.2 ("HMAC-SHA1")
|
98 |
+
*/
|
99 |
+
class nsx_trOAuthSignatureMethod_HMAC_SHA1 extends nsx_trOAuthSignatureMethod {
|
100 |
+
function get_name() {
|
101 |
+
return "HMAC-SHA1";
|
102 |
+
}
|
103 |
+
|
104 |
+
public function build_signature($request, $consumer, $token) {
|
105 |
+
$base_string = $request->get_signature_base_string();
|
106 |
+
$request->base_string = $base_string;
|
107 |
+
|
108 |
+
$key_parts = array(
|
109 |
+
$consumer->secret,
|
110 |
+
($token) ? $token->secret : ""
|
111 |
+
);
|
112 |
+
|
113 |
+
$key_parts = nsx_trOAuthUtil::urlencode_rfc3986($key_parts);
|
114 |
+
$key = implode('&', $key_parts);
|
115 |
+
|
116 |
+
return base64_encode(hash_hmac('sha1', $base_string, $key, true));
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* The PLAINTEXT method does not provide any security protection and SHOULD only be used
|
122 |
+
* over a secure channel such as HTTPS. It does not use the Signature Base String.
|
123 |
+
* - Chapter 9.4 ("PLAINTEXT")
|
124 |
+
*/
|
125 |
+
class nsx_trOAuthSignatureMethod_PLAINTEXT extends nsx_trOAuthSignatureMethod {
|
126 |
+
public function get_name() {
|
127 |
+
return "PLAINTEXT";
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* oauth_signature is set to the concatenated encoded values of the Consumer Secret and
|
132 |
+
* Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
|
133 |
+
* empty. The result MUST be encoded again.
|
134 |
+
* - Chapter 9.4.1 ("Generating Signatures")
|
135 |
+
*
|
136 |
+
* Please note that the second encoding MUST NOT happen in the SignatureMethod, as
|
137 |
+
* OAuthRequest handles this!
|
138 |
+
*/
|
139 |
+
public function build_signature($request, $consumer, $token) {
|
140 |
+
$key_parts = array(
|
141 |
+
$consumer->secret,
|
142 |
+
($token) ? $token->secret : ""
|
143 |
+
);
|
144 |
+
|
145 |
+
$key_parts = nsx_trOAuthUtil::urlencode_rfc3986($key_parts);
|
146 |
+
$key = implode('&', $key_parts);
|
147 |
+
$request->base_string = $key;
|
148 |
+
|
149 |
+
return $key;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
|
155 |
+
* [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
|
156 |
+
* EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
|
157 |
+
* verified way to the Service Provider, in a manner which is beyond the scope of this
|
158 |
+
* specification.
|
159 |
+
* - Chapter 9.3 ("RSA-SHA1")
|
160 |
+
*/
|
161 |
+
abstract class nsx_trOAuthSignatureMethod_RSA_SHA1 extends nsx_trOAuthSignatureMethod {
|
162 |
+
public function get_name() {
|
163 |
+
return "RSA-SHA1";
|
164 |
+
}
|
165 |
+
|
166 |
+
// Up to the SP to implement this lookup of keys. Possible ideas are:
|
167 |
+
// (1) do a lookup in a table of trusted certs keyed off of consumer
|
168 |
+
// (2) fetch via http using a url provided by the requester
|
169 |
+
// (3) some sort of specific discovery code based on request
|
170 |
+
//
|
171 |
+
// Either way should return a string representation of the certificate
|
172 |
+
protected abstract function fetch_public_cert(&$request);
|
173 |
+
|
174 |
+
// Up to the SP to implement this lookup of keys. Possible ideas are:
|
175 |
+
// (1) do a lookup in a table of trusted certs keyed off of consumer
|
176 |
+
//
|
177 |
+
// Either way should return a string representation of the certificate
|
178 |
+
protected abstract function fetch_private_cert(&$request);
|
179 |
+
|
180 |
+
public function build_signature($request, $consumer, $token) {
|
181 |
+
$base_string = $request->get_signature_base_string();
|
182 |
+
$request->base_string = $base_string;
|
183 |
+
|
184 |
+
// Fetch the private key cert based on the request
|
185 |
+
$cert = $this->fetch_private_cert($request);
|
186 |
+
|
187 |
+
// Pull the private key ID from the certificate
|
188 |
+
$privatekeyid = openssl_get_privatekey($cert);
|
189 |
+
|
190 |
+
// Sign using the key
|
191 |
+
$ok = openssl_sign($base_string, $signature, $privatekeyid);
|
192 |
+
|
193 |
+
// Release the key resource
|
194 |
+
openssl_free_key($privatekeyid);
|
195 |
+
|
196 |
+
return base64_encode($signature);
|
197 |
+
}
|
198 |
+
|
199 |
+
public function check_signature($request, $consumer, $token, $signature) {
|
200 |
+
$decoded_sig = base64_decode($signature);
|
201 |
+
|
202 |
+
$base_string = $request->get_signature_base_string();
|
203 |
+
|
204 |
+
// Fetch the public key cert based on the request
|
205 |
+
$cert = $this->fetch_public_cert($request);
|
206 |
+
|
207 |
+
// Pull the public key ID from the certificate
|
208 |
+
$publickeyid = openssl_get_publickey($cert);
|
209 |
+
|
210 |
+
// Check the computed signature against the one passed in the query
|
211 |
+
$ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
|
212 |
+
|
213 |
+
// Release the key resource
|
214 |
+
openssl_free_key($publickeyid);
|
215 |
+
|
216 |
+
return $ok == 1;
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
class nsx_trOAuthRequest {
|
221 |
+
private $parameters;
|
222 |
+
private $http_method;
|
223 |
+
private $http_url;
|
224 |
+
// for debug purposes
|
225 |
+
public $base_string;
|
226 |
+
public static $version = '1.0';
|
227 |
+
public static $POST_INPUT = 'php://input';
|
228 |
+
|
229 |
+
function __construct($http_method, $http_url, $parameters=NULL) {
|
230 |
+
@$parameters or $parameters = array();
|
231 |
+
$parameters = array_merge( nsx_trOAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
|
232 |
+
$this->parameters = $parameters;
|
233 |
+
$this->http_method = $http_method;
|
234 |
+
$this->http_url = $http_url;
|
235 |
+
}
|
236 |
+
|
237 |
+
|
238 |
+
/**
|
239 |
+
* attempt to build up a request from what was passed to the server
|
240 |
+
*/
|
241 |
+
public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
|
242 |
+
$scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
|
243 |
+
? 'http'
|
244 |
+
: 'https';
|
245 |
+
@$http_url or $http_url = $scheme .
|
246 |
+
'://' . $_SERVER['HTTP_HOST'] .
|
247 |
+
':' .
|
248 |
+
$_SERVER['SERVER_PORT'] .
|
249 |
+
$_SERVER['REQUEST_URI'];
|
250 |
+
@$http_method or $http_method = $_SERVER['REQUEST_METHOD'];
|
251 |
+
|
252 |
+
// We weren't handed any parameters, so let's find the ones relevant to
|
253 |
+
// this request.
|
254 |
+
// If you run XML-RPC or similar you should use this to provide your own
|
255 |
+
// parsed parameter-list
|
256 |
+
if (!$parameters) {
|
257 |
+
// Find request headers
|
258 |
+
$request_headers = nsx_trOAuthUtil::get_headers();
|
259 |
+
|
260 |
+
// Parse the query-string to find GET parameters
|
261 |
+
$parameters = nsx_trOAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);
|
262 |
+
|
263 |
+
// It's a POST request of the proper content-type, so parse POST
|
264 |
+
// parameters and add those overriding any duplicates from GET
|
265 |
+
if ($http_method == "POST"
|
266 |
+
&& @strstr($request_headers["Content-Type"],
|
267 |
+
"application/x-www-form-urlencoded")
|
268 |
+
) {
|
269 |
+
$post_data = nsx_trOAuthUtil::parse_parameters(
|
270 |
+
file_get_contents(self::$POST_INPUT)
|
271 |
+
);
|
272 |
+
$parameters = array_merge($parameters, $post_data);
|
273 |
+
}
|
274 |
+
|
275 |
+
// We have a Authorization-header with OAuth data. Parse the header
|
276 |
+
// and add those overriding any duplicates from GET or POST
|
277 |
+
if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {
|
278 |
+
$header_parameters = nsx_trOAuthUtil::split_header(
|
279 |
+
$request_headers['Authorization']
|
280 |
+
);
|
281 |
+
$parameters = array_merge($parameters, $header_parameters);
|
282 |
+
}
|
283 |
+
|
284 |
+
}
|
285 |
+
|
286 |
+
return new nsx_trOAuthRequest($http_method, $http_url, $parameters);
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* pretty much a helper function to set up the request
|
291 |
+
*/
|
292 |
+
public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
|
293 |
+
@$parameters or $parameters = array();
|
294 |
+
$defaults = array("oauth_version" => nsx_trOAuthRequest::$version,
|
295 |
+
"oauth_nonce" => nsx_trOAuthRequest::generate_nonce(),
|
296 |
+
"oauth_timestamp" => nsx_trOAuthRequest::generate_timestamp(),
|
297 |
+
"oauth_consumer_key" => $consumer->key);
|
298 |
+
if ($token)
|
299 |
+
$defaults['oauth_token'] = $token->key;
|
300 |
+
|
301 |
+
$parameters = array_merge($defaults, $parameters);
|
302 |
+
|
303 |
+
return new nsx_trOAuthRequest($http_method, $http_url, $parameters);
|
304 |
+
}
|
305 |
+
|
306 |
+
public function set_parameter($name, $value, $allow_duplicates = true) {
|
307 |
+
if ($allow_duplicates && isset($this->parameters[$name])) {
|
308 |
+
// We have already added parameter(s) with this name, so add to the list
|
309 |
+
if (is_scalar($this->parameters[$name])) {
|
310 |
+
// This is the first duplicate, so transform scalar (string)
|
311 |
+
// into an array so we can add the duplicates
|
312 |
+
$this->parameters[$name] = array($this->parameters[$name]);
|
313 |
+
}
|
314 |
+
|
315 |
+
$this->parameters[$name][] = $value;
|
316 |
+
} else {
|
317 |
+
$this->parameters[$name] = $value;
|
318 |
+
}
|
319 |
+
}
|
320 |
+
|
321 |
+
public function get_parameter($name) {
|
322 |
+
return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
|
323 |
+
}
|
324 |
+
|
325 |
+
public function get_parameters() {
|
326 |
+
return $this->parameters;
|
327 |
+
}
|
328 |
+
|
329 |
+
public function unset_parameter($name) {
|
330 |
+
unset($this->parameters[$name]);
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
* The request parameters, sorted and concatenated into a normalized string.
|
335 |
+
* @return string
|
336 |
+
*/
|
337 |
+
public function get_signable_parameters() {
|
338 |
+
// Grab all parameters
|
339 |
+
$params = $this->parameters;
|
340 |
+
|
341 |
+
// Remove oauth_signature if present
|
342 |
+
// Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
|
343 |
+
if (isset($params['oauth_signature'])) {
|
344 |
+
unset($params['oauth_signature']);
|
345 |
+
}
|
346 |
+
|
347 |
+
return nsx_trOAuthUtil::build_http_query($params);
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* Returns the base string of this request
|
352 |
+
*
|
353 |
+
* The base string defined as the method, the url
|
354 |
+
* and the parameters (normalized), each urlencoded
|
355 |
+
* and the concated with &.
|
356 |
+
*/
|
357 |
+
public function get_signature_base_string() {
|
358 |
+
$parts = array(
|
359 |
+
$this->get_normalized_http_method(),
|
360 |
+
$this->get_normalized_http_url(),
|
361 |
+
$this->get_signable_parameters()
|
362 |
+
);
|
363 |
+
|
364 |
+
$parts = nsx_trOAuthUtil::urlencode_rfc3986($parts);
|
365 |
+
|
366 |
+
return implode('&', $parts);
|
367 |
+
}
|
368 |
+
|
369 |
+
/**
|
370 |
+
* just uppercases the http method
|
371 |
+
*/
|
372 |
+
public function get_normalized_http_method() {
|
373 |
+
return strtoupper($this->http_method);
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
* parses the url and rebuilds it to be
|
378 |
+
* scheme://host/path
|
379 |
+
*/
|
380 |
+
public function get_normalized_http_url() {
|
381 |
+
$parts = parse_url($this->http_url);
|
382 |
+
|
383 |
+
$port = @$parts['port'];
|
384 |
+
$scheme = $parts['scheme'];
|
385 |
+
$host = $parts['host'];
|
386 |
+
$path = @$parts['path'];
|
387 |
+
|
388 |
+
$port or $port = ($scheme == 'https') ? '443' : '80';
|
389 |
+
|
390 |
+
if (($scheme == 'https' && $port != '443')
|
391 |
+
|| ($scheme == 'http' && $port != '80')) {
|
392 |
+
$host = "$host:$port";
|
393 |
+
}
|
394 |
+
return "$scheme://$host$path";
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* builds a url usable for a GET request
|
399 |
+
*/
|
400 |
+
public function to_url() {
|
401 |
+
$post_data = $this->to_postdata();
|
402 |
+
$out = $this->get_normalized_http_url();
|
403 |
+
if ($post_data) {
|
404 |
+
$out .= '?'.$post_data;
|
405 |
+
}
|
406 |
+
return $out;
|
407 |
+
}
|
408 |
+
|
409 |
+
/**
|
410 |
+
* builds the data one would send in a POST request
|
411 |
+
*/
|
412 |
+
public function to_postdata() {
|
413 |
+
return nsx_trOAuthUtil::build_http_query($this->parameters);
|
414 |
+
}
|
415 |
+
|
416 |
+
/**
|
417 |
+
* builds the Authorization: header
|
418 |
+
*/
|
419 |
+
public function to_header($realm=null) {
|
420 |
+
$first = true;
|
421 |
+
if($realm) {
|
422 |
+
$out = 'Authorization: OAuth realm="' . nsx_trOAuthUtil::urlencode_rfc3986($realm) . '"';
|
423 |
+
$first = false;
|
424 |
+
} else
|
425 |
+
$out = 'Authorization: OAuth';
|
426 |
+
|
427 |
+
$total = array();
|
428 |
+
foreach ($this->parameters as $k => $v) {
|
429 |
+
if (substr($k, 0, 5) != "oauth") continue;
|
430 |
+
if (is_array($v)) {
|
431 |
+
throw new nsx_trOAuthException('Arrays not supported in headers');
|
432 |
+
}
|
433 |
+
$out .= ($first) ? ' ' : ',';
|
434 |
+
$out .= nsx_trOAuthUtil::urlencode_rfc3986($k) .
|
435 |
+
'="' .
|
436 |
+
nsx_trOAuthUtil::urlencode_rfc3986($v) .
|
437 |
+
'"';
|
438 |
+
$first = false;
|
439 |
+
}
|
440 |
+
return $out;
|
441 |
+
}
|
442 |
+
|
443 |
+
public function __toString() {
|
444 |
+
return $this->to_url();
|
445 |
+
}
|
446 |
+
|
447 |
+
|
448 |
+
public function sign_request($signature_method, $consumer, $token) {
|
449 |
+
$this->set_parameter(
|
450 |
+
"oauth_signature_method",
|
451 |
+
$signature_method->get_name(),
|
452 |
+
false
|
453 |
+
);
|
454 |
+
$signature = $this->build_signature($signature_method, $consumer, $token);
|
455 |
+
$this->set_parameter("oauth_signature", $signature, false);
|
456 |
+
}
|
457 |
+
|
458 |
+
public function build_signature($signature_method, $consumer, $token) {
|
459 |
+
$signature = $signature_method->build_signature($this, $consumer, $token);
|
460 |
+
return $signature;
|
461 |
+
}
|
462 |
+
|
463 |
+
/**
|
464 |
+
* util function: current timestamp
|
465 |
+
*/
|
466 |
+
private static function generate_timestamp() {
|
467 |
+
return time();
|
468 |
+
}
|
469 |
+
|
470 |
+
/**
|
471 |
+
* util function: current nonce
|
472 |
+
*/
|
473 |
+
private static function generate_nonce() {
|
474 |
+
$mt = microtime();
|
475 |
+
$rand = mt_rand();
|
476 |
+
|
477 |
+
return md5($mt . $rand); // md5s look nicer than numbers
|
478 |
+
}
|
479 |
+
}
|
480 |
+
|
481 |
+
class nsx_trOAuthServer {
|
482 |
+
protected $timestamp_threshold = 300; // in seconds, five minutes
|
483 |
+
protected $version = '1.0'; // hi blaine
|
484 |
+
protected $signature_methods = array();
|
485 |
+
|
486 |
+
protected $data_store;
|
487 |
+
|
488 |
+
function __construct($data_store) {
|
489 |
+
$this->data_store = $data_store;
|
490 |
+
}
|
491 |
+
|
492 |
+
public function add_signature_method($signature_method) {
|
493 |
+
$this->signature_methods[$signature_method->get_name()] =
|
494 |
+
$signature_method;
|
495 |
+
}
|
496 |
+
|
497 |
+
// high level functions
|
498 |
+
|
499 |
+
/**
|
500 |
+
* process a request_token request
|
501 |
+
* returns the request token on success
|
502 |
+
*/
|
503 |
+
public function fetch_request_token(&$request) {
|
504 |
+
$this->get_version($request);
|
505 |
+
|
506 |
+
$consumer = $this->get_consumer($request);
|
507 |
+
|
508 |
+
// no token required for the initial token request
|
509 |
+
$token = NULL;
|
510 |
+
|
511 |
+
$this->check_signature($request, $consumer, $token);
|
512 |
+
|
513 |
+
// Rev A change
|
514 |
+
$callback = $request->get_parameter('oauth_callback');
|
515 |
+
$new_token = $this->data_store->new_request_token($consumer, $callback);
|
516 |
+
|
517 |
+
return $new_token;
|
518 |
+
}
|
519 |
+
|
520 |
+
/**
|
521 |
+
* process an access_token request
|
522 |
+
* returns the access token on success
|
523 |
+
*/
|
524 |
+
public function fetch_access_token(&$request) {
|
525 |
+
$this->get_version($request);
|
526 |
+
|
527 |
+
$consumer = $this->get_consumer($request);
|
528 |
+
|
529 |
+
// requires authorized request token
|
530 |
+
$token = $this->get_token($request, $consumer, "request");
|
531 |
+
|
532 |
+
$this->check_signature($request, $consumer, $token);
|
533 |
+
|
534 |
+
// Rev A change
|
535 |
+
$verifier = $request->get_parameter('oauth_verifier');
|
536 |
+
$new_token = $this->data_store->new_access_token($token, $consumer, $verifier);
|
537 |
+
|
538 |
+
return $new_token;
|
539 |
+
}
|
540 |
+
|
541 |
+
/**
|
542 |
+
* verify an api call, checks all the parameters
|
543 |
+
*/
|
544 |
+
public function verify_request(&$request) {
|
545 |
+
$this->get_version($request);
|
546 |
+
$consumer = $this->get_consumer($request);
|
547 |
+
$token = $this->get_token($request, $consumer, "access");
|
548 |
+
$this->check_signature($request, $consumer, $token);
|
549 |
+
return array($consumer, $token);
|
550 |
+
}
|
551 |
+
|
552 |
+
// Internals from here
|
553 |
+
/**
|
554 |
+
* version 1
|
555 |
+
*/
|
556 |
+
private function get_version(&$request) {
|
557 |
+
$version = $request->get_parameter("oauth_version");
|
558 |
+
if (!$version) {
|
559 |
+
// Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
|
560 |
+
// Chapter 7.0 ("Accessing Protected Ressources")
|
561 |
+
$version = '1.0';
|
562 |
+
}
|
563 |
+
if ($version !== $this->version) {
|
564 |
+
throw new nsx_trOAuthException("OAuth version '$version' not supported");
|
565 |
+
}
|
566 |
+
return $version;
|
567 |
+
}
|
568 |
+
|
569 |
+
/**
|
570 |
+
* figure out the signature with some defaults
|
571 |
+
*/
|
572 |
+
private function get_signature_method(&$request) {
|
573 |
+
$signature_method =
|
574 |
+
@$request->get_parameter("oauth_signature_method");
|
575 |
+
|
576 |
+
if (!$signature_method) {
|
577 |
+
// According to chapter 7 ("Accessing Protected Ressources") the signature-method
|
578 |
+
// parameter is required, and we can't just fallback to PLAINTEXT
|
579 |
+
throw new nsx_trOAuthException('No signature method parameter. This parameter is required');
|
580 |
+
}
|
581 |
+
|
582 |
+
if (!in_array($signature_method,
|
583 |
+
array_keys($this->signature_methods))) {
|
584 |
+
throw new nsx_trOAuthException(
|
585 |
+
"Signature method '$signature_method' not supported " .
|
586 |
+
"try one of the following: " .
|
587 |
+
implode(", ", array_keys($this->signature_methods))
|
588 |
+
);
|
589 |
+
}
|
590 |
+
return $this->signature_methods[$signature_method];
|
591 |
+
}
|
592 |
+
|
593 |
+
/**
|
594 |
+
* try to find the consumer for the provided request's consumer key
|
595 |
+
*/
|
596 |
+
private function get_consumer(&$request) {
|
597 |
+
$consumer_key = @$request->get_parameter("oauth_consumer_key");
|
598 |
+
if (!$consumer_key) {
|
599 |
+
throw new nsx_trOAuthException("Invalid consumer key");
|
600 |
+
}
|
601 |
+
|
602 |
+
$consumer = $this->data_store->lookup_consumer($consumer_key);
|
603 |
+
if (!$consumer) {
|
604 |
+
throw new nsx_trOAuthException("Invalid consumer");
|
605 |
+
}
|
606 |
+
|
607 |
+
return $consumer;
|
608 |
+
}
|
609 |
+
|
610 |
+
/**
|
611 |
+
* try to find the token for the provided request's token key
|
612 |
+
*/
|
613 |
+
private function get_token(&$request, $consumer, $token_type="access") {
|
614 |
+
$token_field = @$request->get_parameter('oauth_token');
|
615 |
+
$token = $this->data_store->lookup_token(
|
616 |
+
$consumer, $token_type, $token_field
|
617 |
+
);
|
618 |
+
if (!$token) {
|
619 |
+
throw new nsx_trOAuthException("Invalid $token_type token: $token_field");
|
620 |
+
}
|
621 |
+
return $token;
|
622 |
+
}
|
623 |
+
|
624 |
+
/**
|
625 |
+
* all-in-one function to check the signature on a request
|
626 |
+
* should guess the signature method appropriately
|
627 |
+
*/
|
628 |
+
private function check_signature(&$request, $consumer, $token) {
|
629 |
+
// this should probably be in a different method
|
630 |
+
$timestamp = @$request->get_parameter('oauth_timestamp');
|
631 |
+
$nonce = @$request->get_parameter('oauth_nonce');
|
632 |
+
|
633 |
+
$this->check_timestamp($timestamp);
|
634 |
+
$this->check_nonce($consumer, $token, $nonce, $timestamp);
|
635 |
+
|
636 |
+
$signature_method = $this->get_signature_method($request);
|
637 |
+
|
638 |
+
$signature = $request->get_parameter('oauth_signature');
|
639 |
+
$valid_sig = $signature_method->check_signature(
|
640 |
+
$request,
|
641 |
+
$consumer,
|
642 |
+
$token,
|
643 |
+
$signature
|
644 |
+
);
|
645 |
+
|
646 |
+
if (!$valid_sig) {
|
647 |
+
throw new nsx_trOAuthException("Invalid signature");
|
648 |
+
}
|
649 |
+
}
|
650 |
+
|
651 |
+
/**
|
652 |
+
* check that the timestamp is new enough
|
653 |
+
*/
|
654 |
+
private function check_timestamp($timestamp) {
|
655 |
+
if( ! $timestamp )
|
656 |
+
throw new nsx_trOAuthException(
|
657 |
+
'Missing timestamp parameter. The parameter is required'
|
658 |
+
);
|
659 |
+
|
660 |
+
// verify that timestamp is recentish
|
661 |
+
$now = time();
|
662 |
+
if (abs($now - $timestamp) > $this->timestamp_threshold) {
|
663 |
+
throw new nsx_trOAuthException(
|
664 |
+
"Expired timestamp, yours $timestamp, ours $now"
|
665 |
+
);
|
666 |
+
}
|
667 |
+
}
|
668 |
+
|
669 |
+
/**
|
670 |
+
* check that the nonce is not repeated
|
671 |
+
*/
|
672 |
+
private function check_nonce($consumer, $token, $nonce, $timestamp) {
|
673 |
+
if( ! $nonce )
|
674 |
+
throw new nsx_trOAuthException(
|
675 |
+
'Missing nonce parameter. The parameter is required'
|
676 |
+
);
|
677 |
+
|
678 |
+
// verify that the nonce is uniqueish
|
679 |
+
$found = $this->data_store->lookup_nonce(
|
680 |
+
$consumer,
|
681 |
+
$token,
|
682 |
+
$nonce,
|
683 |
+
$timestamp
|
684 |
+
);
|
685 |
+
if ($found) {
|
686 |
+
throw new nsx_trOAuthException("Nonce already used: $nonce");
|
687 |
+
}
|
688 |
+
}
|
689 |
+
|
690 |
+
}
|
691 |
+
|
692 |
+
class nsx_trOAuthDataStore {
|
693 |
+
function lookup_consumer($consumer_key) {
|
694 |
+
// implement me
|
695 |
+
}
|
696 |
+
|
697 |
+
function lookup_token($consumer, $token_type, $token) {
|
698 |
+
// implement me
|
699 |
+
}
|
700 |
+
|
701 |
+
function lookup_nonce($consumer, $token, $nonce, $timestamp) {
|
702 |
+
// implement me
|
703 |
+
}
|
704 |
+
|
705 |
+
function new_request_token($consumer, $callback = null) {
|
706 |
+
// return a new token attached to this consumer
|
707 |
+
}
|
708 |
+
|
709 |
+
function new_access_token($token, $consumer, $verifier = null) {
|
710 |
+
// return a new access token attached to this consumer
|
711 |
+
// for the user associated with this token if the request token
|
712 |
+
// is authorized
|
713 |
+
// should also invalidate the request token
|
714 |
+
}
|
715 |
+
|
716 |
+
}
|
717 |
+
|
718 |
+
class nsx_trOAuthUtil {
|
719 |
+
public static function urlencode_rfc3986($input) {
|
720 |
+
if (is_array($input)) {
|
721 |
+
return array_map(array('nsx_trOAuthUtil', 'urlencode_rfc3986'), $input);
|
722 |
+
} else if (is_scalar($input)) {
|
723 |
+
return str_replace(
|
724 |
+
'+',
|
725 |
+
' ',
|
726 |
+
str_replace('%7E', '~', rawurlencode($input))
|
727 |
+
);
|
728 |
+
} else {
|
729 |
+
return '';
|
730 |
+
}
|
731 |
+
}
|
732 |
+
|
733 |
+
|
734 |
+
// This decode function isn't taking into consideration the above
|
735 |
+
// modifications to the encoding process. However, this method doesn't
|
736 |
+
// seem to be used anywhere so leaving it as is.
|
737 |
+
public static function urldecode_rfc3986($string) {
|
738 |
+
return urldecode($string);
|
739 |
+
}
|
740 |
+
|
741 |
+
// Utility function for turning the Authorization: header into
|
742 |
+
// parameters, has to do some unescaping
|
743 |
+
// Can filter out any non-oauth parameters if needed (default behaviour)
|
744 |
+
public static function split_header($header, $only_allow_oauth_parameters = true) {
|
745 |
+
$pattern = '/(([-_a-z]*)=("([^"]*)"|([^,]*)),?)/';
|
746 |
+
$offset = 0;
|
747 |
+
$params = array();
|
748 |
+
while (preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {
|
749 |
+
$match = $matches[0];
|
750 |
+
$header_name = $matches[2][0];
|
751 |
+
$header_content = (isset($matches[5])) ? $matches[5][0] : $matches[4][0];
|
752 |
+
if (preg_match('/^oauth_/', $header_name) || !$only_allow_oauth_parameters) {
|
753 |
+
$params[$header_name] = nsx_trOAuthUtil::urldecode_rfc3986($header_content);
|
754 |
+
}
|
755 |
+
$offset = $match[1] + strlen($match[0]);
|
756 |
+
}
|
757 |
+
|
758 |
+
if (isset($params['realm'])) {
|
759 |
+
unset($params['realm']);
|
760 |
+
}
|
761 |
+
|
762 |
+
return $params;
|
763 |
+
}
|
764 |
+
|
765 |
+
// helper to try to sort out headers for people who aren't running apache
|
766 |
+
public static function get_headers() {
|
767 |
+
if (function_exists('apache_request_headers')) {
|
768 |
+
// we need this to get the actual Authorization: header
|
769 |
+
// because apache tends to tell us it doesn't exist
|
770 |
+
$headers = apache_request_headers();
|
771 |
+
|
772 |
+
// sanitize the output of apache_request_headers because
|
773 |
+
// we always want the keys to be Cased-Like-This and arh()
|
774 |
+
// returns the headers in the same case as they are in the
|
775 |
+
// request
|
776 |
+
$out = array();
|
777 |
+
foreach( $headers AS $key => $value ) {
|
778 |
+
$key = str_replace(
|
779 |
+
" ",
|
780 |
+
"-",
|
781 |
+
ucwords(strtolower(str_replace("-", " ", $key)))
|
782 |
+
);
|
783 |
+
$out[$key] = $value;
|
784 |
+
}
|
785 |
+
} else {
|
786 |
+
// otherwise we don't have apache and are just going to have to hope
|
787 |
+
// that $_SERVER actually contains what we need
|
788 |
+
$out = array();
|
789 |
+
if( isset($_SERVER['CONTENT_TYPE']) )
|
790 |
+
$out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
|
791 |
+
if( isset($_ENV['CONTENT_TYPE']) )
|
792 |
+
$out['Content-Type'] = $_ENV['CONTENT_TYPE'];
|
793 |
+
|
794 |
+
foreach ($_SERVER as $key => $value) {
|
795 |
+
if (substr($key, 0, 5) == "HTTP_") {
|
796 |
+
// this is chaos, basically it is just there to capitalize the first
|
797 |
+
// letter of every word that is not an initial HTTP and strip HTTP
|
798 |
+
// code from przemek
|
799 |
+
$key = str_replace(
|
800 |
+
" ",
|
801 |
+
"-",
|
802 |
+
ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
|
803 |
+
);
|
804 |
+
$out[$key] = $value;
|
805 |
+
}
|
806 |
+
}
|
807 |
+
}
|
808 |
+
return $out;
|
809 |
+
}
|
810 |
+
|
811 |
+
// This function takes a input like a=b&a=c&d=e and returns the parsed
|
812 |
+
// parameters like this
|
813 |
+
// array('a' => array('b','c'), 'd' => 'e')
|
814 |
+
public static function parse_parameters( $input ) {
|
815 |
+
if (!isset($input) || !$input) return array();
|
816 |
+
|
817 |
+
$pairs = explode('&', $input);
|
818 |
+
|
819 |
+
$parsed_parameters = array();
|
820 |
+
foreach ($pairs as $pair) {
|
821 |
+
$split = explode('=', $pair, 2);
|
822 |
+
$parameter = nsx_trOAuthUtil::urldecode_rfc3986($split[0]);
|
823 |
+
$value = isset($split[1]) ? nsx_trOAuthUtil::urldecode_rfc3986($split[1]) : '';
|
824 |
+
|
825 |
+
if (isset($parsed_parameters[$parameter])) {
|
826 |
+
// We have already recieved parameter(s) with this name, so add to the list
|
827 |
+
// of parameters with this name
|
828 |
+
|
829 |
+
if (is_scalar($parsed_parameters[$parameter])) {
|
830 |
+
// This is the first duplicate, so transform scalar (string) into an array
|
831 |
+
// so we can add the duplicates
|
832 |
+
$parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
|
833 |
+
}
|
834 |
+
|
835 |
+
$parsed_parameters[$parameter][] = $value;
|
836 |
+
} else {
|
837 |
+
$parsed_parameters[$parameter] = $value;
|
838 |
+
}
|
839 |
+
}
|
840 |
+
return $parsed_parameters;
|
841 |
+
}
|
842 |
+
|
843 |
+
public static function build_http_query($params) {
|
844 |
+
if (!$params) return '';
|
845 |
+
|
846 |
+
// Urlencode both keys and values
|
847 |
+
$keys = nsx_trOAuthUtil::urlencode_rfc3986(array_keys($params));
|
848 |
+
$values = nsx_trOAuthUtil::urlencode_rfc3986(array_values($params));
|
849 |
+
$params = array_combine($keys, $values);
|
850 |
+
|
851 |
+
// Parameters are sorted by name, using lexicographical byte value ordering.
|
852 |
+
// Ref: Spec: 9.1.1 (1)
|
853 |
+
uksort($params, 'strcmp');
|
854 |
+
|
855 |
+
$pairs = array();
|
856 |
+
foreach ($params as $parameter => $value) {
|
857 |
+
if (is_array($value)) {
|
858 |
+
// If two or more parameters share the same name, they are sorted by their value
|
859 |
+
// Ref: Spec: 9.1.1 (1)
|
860 |
+
natsort($value);
|
861 |
+
foreach ($value as $duplicate_value) {
|
862 |
+
$pairs[] = $parameter . '=' . $duplicate_value;
|
863 |
+
}
|
864 |
+
} else {
|
865 |
+
$pairs[] = $parameter . '=' . $value;
|
866 |
+
}
|
867 |
+
}
|
868 |
+
// For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
|
869 |
+
// Each name-value pair is separated by an '&' character (ASCII code 38)
|
870 |
+
return implode('&', $pairs);
|
871 |
+
}
|
872 |
+
}
|
873 |
+
|
874 |
+
?>
|
apis/base_facebook.php
ADDED
@@ -0,0 +1,1131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2011 Facebook, Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
6 |
+
* not use this file except in compliance with the License. You may obtain
|
7 |
+
* a copy of the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations
|
15 |
+
* under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
if (!function_exists('curl_init')) {
|
19 |
+
throw new Exception('Facebook needs the CURL PHP extension.');
|
20 |
+
}
|
21 |
+
if (!function_exists('json_decode')) {
|
22 |
+
throw new Exception('Facebook needs the JSON PHP extension.');
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Thrown when an API call returns an exception.
|
27 |
+
*
|
28 |
+
* @author Naitik Shah <naitik@facebook.com>
|
29 |
+
*/
|
30 |
+
class NXS_FacebookApiException extends Exception
|
31 |
+
{
|
32 |
+
/**
|
33 |
+
* The result from the API server that represents the exception information.
|
34 |
+
*/
|
35 |
+
protected $result;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Make a new API Exception with the given result.
|
39 |
+
*
|
40 |
+
* @param array $result The result from the API server
|
41 |
+
*/
|
42 |
+
public function __construct($result) {
|
43 |
+
$this->result = $result;
|
44 |
+
|
45 |
+
$code = isset($result['error_code']) ? $result['error_code'] : 0;
|
46 |
+
|
47 |
+
if (isset($result['error_description'])) {
|
48 |
+
// OAuth 2.0 Draft 10 style
|
49 |
+
$msg = $result['error_description'];
|
50 |
+
} else if (isset($result['error']) && is_array($result['error'])) {
|
51 |
+
// OAuth 2.0 Draft 00 style
|
52 |
+
$msg = $result['error']['message'];
|
53 |
+
} else if (isset($result['error_msg'])) {
|
54 |
+
// Rest server style
|
55 |
+
$msg = $result['error_msg'];
|
56 |
+
} else {
|
57 |
+
$msg = 'Unknown Error. Check getResult()';
|
58 |
+
}
|
59 |
+
|
60 |
+
parent::__construct($msg, $code);
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Return the associated result object returned by the API server.
|
65 |
+
*
|
66 |
+
* @return array The result from the API server
|
67 |
+
*/
|
68 |
+
public function getResult() {
|
69 |
+
return $this->result;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Returns the associated type for the error. This will default to
|
74 |
+
* 'Exception' when a type is not available.
|
75 |
+
*
|
76 |
+
* @return string
|
77 |
+
*/
|
78 |
+
public function getType() {
|
79 |
+
if (isset($this->result['error'])) {
|
80 |
+
$error = $this->result['error'];
|
81 |
+
if (is_string($error)) {
|
82 |
+
// OAuth 2.0 Draft 10 style
|
83 |
+
return $error;
|
84 |
+
} else if (is_array($error)) {
|
85 |
+
// OAuth 2.0 Draft 00 style
|
86 |
+
if (isset($error['type'])) {
|
87 |
+
return $error['type'];
|
88 |
+
}
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
return 'Exception';
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* To make debugging easier.
|
97 |
+
*
|
98 |
+
* @return string The string representation of the error
|
99 |
+
*/
|
100 |
+
public function __toString() {
|
101 |
+
$str = $this->getType() . ': ';
|
102 |
+
if ($this->code != 0) {
|
103 |
+
$str .= $this->code . ': ';
|
104 |
+
}
|
105 |
+
return $str . $this->message;
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Provides access to the Facebook Platform. This class provides
|
111 |
+
* a majority of the functionality needed, but the class is abstract
|
112 |
+
* because it is designed to be sub-classed. The subclass must
|
113 |
+
* implement the three abstract methods listed at the bottom of
|
114 |
+
* the file.
|
115 |
+
*
|
116 |
+
* @author Naitik Shah <naitik@facebook.com>
|
117 |
+
*/
|
118 |
+
abstract class NXS_BaseFacebook
|
119 |
+
{
|
120 |
+
/**
|
121 |
+
* Version.
|
122 |
+
*/
|
123 |
+
const VERSION = '3.1.1';
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Default options for curl.
|
127 |
+
*/
|
128 |
+
public static $CURL_OPTS = array(
|
129 |
+
CURLOPT_CONNECTTIMEOUT => 30,
|
130 |
+
CURLOPT_RETURNTRANSFER => true,
|
131 |
+
CURLOPT_TIMEOUT => 60,
|
132 |
+
CURLOPT_USERAGENT => 'facebook-php-3.1',
|
133 |
+
);
|
134 |
+
|
135 |
+
/**
|
136 |
+
* List of query parameters that get automatically dropped when rebuilding
|
137 |
+
* the current URL.
|
138 |
+
*/
|
139 |
+
protected static $DROP_QUERY_PARAMS = array(
|
140 |
+
'code',
|
141 |
+
'state',
|
142 |
+
'signed_request',
|
143 |
+
);
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Maps aliases to Facebook domains.
|
147 |
+
*/
|
148 |
+
public static $DOMAIN_MAP = array(
|
149 |
+
'api' => 'https://api.facebook.com/',
|
150 |
+
'api_video' => 'https://api-video.facebook.com/',
|
151 |
+
'api_read' => 'https://api-read.facebook.com/',
|
152 |
+
'graph' => 'https://graph.facebook.com/',
|
153 |
+
'www' => 'https://www.facebook.com/',
|
154 |
+
);
|
155 |
+
|
156 |
+
/**
|
157 |
+
* The Application ID.
|
158 |
+
*
|
159 |
+
* @var string
|
160 |
+
*/
|
161 |
+
protected $appId;
|
162 |
+
|
163 |
+
/**
|
164 |
+
* The Application API Secret.
|
165 |
+
*
|
166 |
+
* @var string
|
167 |
+
*/
|
168 |
+
protected $apiSecret;
|
169 |
+
|
170 |
+
/**
|
171 |
+
* The ID of the Facebook user, or 0 if the user is logged out.
|
172 |
+
*
|
173 |
+
* @var integer
|
174 |
+
*/
|
175 |
+
protected $user;
|
176 |
+
|
177 |
+
/**
|
178 |
+
* The data from the signed_request token.
|
179 |
+
*/
|
180 |
+
protected $signedRequest;
|
181 |
+
|
182 |
+
/**
|
183 |
+
* A CSRF state variable to assist in the defense against CSRF attacks.
|
184 |
+
*/
|
185 |
+
protected $state;
|
186 |
+
|
187 |
+
/**
|
188 |
+
* The OAuth access token received in exchange for a valid authorization
|
189 |
+
* code. null means the access token has yet to be determined.
|
190 |
+
*
|
191 |
+
* @var string
|
192 |
+
*/
|
193 |
+
protected $accessToken = null;
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Indicates if the CURL based @ syntax for file uploads is enabled.
|
197 |
+
*
|
198 |
+
* @var boolean
|
199 |
+
*/
|
200 |
+
protected $fileUploadSupport = false;
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Initialize a Facebook Application.
|
204 |
+
*
|
205 |
+
* The configuration:
|
206 |
+
* - appId: the application ID
|
207 |
+
* - secret: the application secret
|
208 |
+
* - fileUpload: (optional) boolean indicating if file uploads are enabled
|
209 |
+
*
|
210 |
+
* @param array $config The application configuration
|
211 |
+
*/
|
212 |
+
public function __construct($config) {
|
213 |
+
$this->setAppId($config['appId']);
|
214 |
+
$this->setApiSecret($config['secret']);
|
215 |
+
if (isset($config['fileUpload'])) {
|
216 |
+
$this->setFileUploadSupport($config['fileUpload']);
|
217 |
+
}
|
218 |
+
|
219 |
+
$state = $this->getPersistentData('state');
|
220 |
+
if (!empty($state)) {
|
221 |
+
$this->state = $this->getPersistentData('state');
|
222 |
+
}
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Set the Application ID.
|
227 |
+
*
|
228 |
+
* @param string $appId The Application ID
|
229 |
+
* @return BaseFacebook
|
230 |
+
*/
|
231 |
+
public function setAppId($appId) {
|
232 |
+
$this->appId = $appId;
|
233 |
+
return $this;
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Get the Application ID.
|
238 |
+
*
|
239 |
+
* @return string the Application ID
|
240 |
+
*/
|
241 |
+
public function getAppId() {
|
242 |
+
return $this->appId;
|
243 |
+
}
|
244 |
+
|
245 |
+
/**
|
246 |
+
* Set the API Secret.
|
247 |
+
*
|
248 |
+
* @param string $apiSecret The API Secret
|
249 |
+
* @return BaseFacebook
|
250 |
+
*/
|
251 |
+
public function setApiSecret($apiSecret) {
|
252 |
+
$this->apiSecret = $apiSecret;
|
253 |
+
return $this;
|
254 |
+
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Get the API Secret.
|
258 |
+
*
|
259 |
+
* @return string the API Secret
|
260 |
+
*/
|
261 |
+
public function getApiSecret() {
|
262 |
+
return $this->apiSecret;
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Set the file upload support status.
|
267 |
+
*
|
268 |
+
* @param boolean $fileUploadSupport The file upload support status.
|
269 |
+
* @return BaseFacebook
|
270 |
+
*/
|
271 |
+
public function setFileUploadSupport($fileUploadSupport) {
|
272 |
+
$this->fileUploadSupport = $fileUploadSupport;
|
273 |
+
return $this;
|
274 |
+
}
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Get the file upload support status.
|
278 |
+
*
|
279 |
+
* @return boolean true if and only if the server supports file upload.
|
280 |
+
*/
|
281 |
+
public function useFileUploadSupport() {
|
282 |
+
return $this->fileUploadSupport;
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* Sets the access token for api calls. Use this if you get
|
287 |
+
* your access token by other means and just want the SDK
|
288 |
+
* to use it.
|
289 |
+
*
|
290 |
+
* @param string $access_token an access token.
|
291 |
+
* @return BaseFacebook
|
292 |
+
*/
|
293 |
+
public function setAccessToken($access_token) {
|
294 |
+
$this->accessToken = $access_token;
|
295 |
+
return $this;
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Determines the access token that should be used for API calls.
|
300 |
+
* The first time this is called, $this->accessToken is set equal
|
301 |
+
* to either a valid user access token, or it's set to the application
|
302 |
+
* access token if a valid user access token wasn't available. Subsequent
|
303 |
+
* calls return whatever the first call returned.
|
304 |
+
*
|
305 |
+
* @return string The access token
|
306 |
+
*/
|
307 |
+
public function getAccessToken() {
|
308 |
+
if ($this->accessToken !== null) {
|
309 |
+
// we've done this already and cached it. Just return.
|
310 |
+
return $this->accessToken;
|
311 |
+
}
|
312 |
+
|
313 |
+
// first establish access token to be the application
|
314 |
+
// access token, in case we navigate to the /oauth/access_token
|
315 |
+
// endpoint, where SOME access token is required.
|
316 |
+
$this->setAccessToken($this->getApplicationAccessToken());
|
317 |
+
if ($user_access_token = $this->getUserAccessToken()) {
|
318 |
+
$this->setAccessToken($user_access_token);
|
319 |
+
}
|
320 |
+
|
321 |
+
return $this->accessToken;
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Determines and returns the user access token, first using
|
326 |
+
* the signed request if present, and then falling back on
|
327 |
+
* the authorization code if present. The intent is to
|
328 |
+
* return a valid user access token, or false if one is determined
|
329 |
+
* to not be available.
|
330 |
+
*
|
331 |
+
* @return string A valid user access token, or false if one
|
332 |
+
* could not be determined.
|
333 |
+
*/
|
334 |
+
protected function getUserAccessToken() {
|
335 |
+
// first, consider a signed request if it's supplied.
|
336 |
+
// if there is a signed request, then it alone determines
|
337 |
+
// the access token.
|
338 |
+
$signed_request = $this->getSignedRequest();
|
339 |
+
if ($signed_request) {
|
340 |
+
// apps.facebook.com hands the access_token in the signed_request
|
341 |
+
if (array_key_exists('oauth_token', $signed_request)) {
|
342 |
+
$access_token = $signed_request['oauth_token'];
|
343 |
+
$this->setPersistentData('access_token', $access_token);
|
344 |
+
return $access_token;
|
345 |
+
}
|
346 |
+
|
347 |
+
// the JS SDK puts a code in with the redirect_uri of ''
|
348 |
+
if (array_key_exists('code', $signed_request)) {
|
349 |
+
$code = $signed_request['code'];
|
350 |
+
$access_token = $this->getAccessTokenFromCode($code, '');
|
351 |
+
if ($access_token) {
|
352 |
+
$this->setPersistentData('code', $code);
|
353 |
+
$this->setPersistentData('access_token', $access_token);
|
354 |
+
return $access_token;
|
355 |
+
}
|
356 |
+
}
|
357 |
+
|
358 |
+
// signed request states there's no access token, so anything
|
359 |
+
// stored should be cleared.
|
360 |
+
$this->clearAllPersistentData();
|
361 |
+
return false; // respect the signed request's data, even
|
362 |
+
// if there's an authorization code or something else
|
363 |
+
}
|
364 |
+
|
365 |
+
$code = $this->getCode();
|
366 |
+
if ($code && $code != $this->getPersistentData('code')) {
|
367 |
+
$access_token = $this->getAccessTokenFromCode($code);
|
368 |
+
if ($access_token) {
|
369 |
+
$this->setPersistentData('code', $code);
|
370 |
+
$this->setPersistentData('access_token', $access_token);
|
371 |
+
return $access_token;
|
372 |
+
}
|
373 |
+
|
374 |
+
// code was bogus, so everything based on it should be invalidated.
|
375 |
+
$this->clearAllPersistentData();
|
376 |
+
return false;
|
377 |
+
}
|
378 |
+
|
379 |
+
// as a fallback, just return whatever is in the persistent
|
380 |
+
// store, knowing nothing explicit (signed request, authorization
|
381 |
+
// code, etc.) was present to shadow it (or we saw a code in $_REQUEST,
|
382 |
+
// but it's the same as what's in the persistent store)
|
383 |
+
return $this->getPersistentData('access_token');
|
384 |
+
}
|
385 |
+
|
386 |
+
/**
|
387 |
+
* Retrieve the signed request, either from a request parameter or,
|
388 |
+
* if not present, from a cookie.
|
389 |
+
*
|
390 |
+
* @return string the signed request, if available, or null otherwise.
|
391 |
+
*/
|
392 |
+
public function getSignedRequest() {
|
393 |
+
if (!$this->signedRequest) {
|
394 |
+
if (isset($_REQUEST['signed_request'])) {
|
395 |
+
$this->signedRequest = $this->parseSignedRequest(
|
396 |
+
$_REQUEST['signed_request']);
|
397 |
+
} else if (isset($_COOKIE[$this->getSignedRequestCookieName()])) {
|
398 |
+
$this->signedRequest = $this->parseSignedRequest(
|
399 |
+
$_COOKIE[$this->getSignedRequestCookieName()]);
|
400 |
+
}
|
401 |
+
}
|
402 |
+
return $this->signedRequest;
|
403 |
+
}
|
404 |
+
|
405 |
+
/**
|
406 |
+
* Get the UID of the connected user, or 0
|
407 |
+
* if the Facebook user is not connected.
|
408 |
+
*
|
409 |
+
* @return string the UID if available.
|
410 |
+
*/
|
411 |
+
public function getUser() {
|
412 |
+
if ($this->user !== null) {
|
413 |
+
// we've already determined this and cached the value.
|
414 |
+
return $this->user;
|
415 |
+
}
|
416 |
+
|
417 |
+
return $this->user = $this->getUserFromAvailableData();
|
418 |
+
}
|
419 |
+
|
420 |
+
/**
|
421 |
+
* Determines the connected user by first examining any signed
|
422 |
+
* requests, then considering an authorization code, and then
|
423 |
+
* falling back to any persistent store storing the user.
|
424 |
+
*
|
425 |
+
* @return integer The id of the connected Facebook user,
|
426 |
+
* or 0 if no such user exists.
|
427 |
+
*/
|
428 |
+
protected function getUserFromAvailableData() {
|
429 |
+
// if a signed request is supplied, then it solely determines
|
430 |
+
// who the user is.
|
431 |
+
$signed_request = $this->getSignedRequest();
|
432 |
+
if ($signed_request) {
|
433 |
+
if (array_key_exists('user_id', $signed_request)) {
|
434 |
+
$user = $signed_request['user_id'];
|
435 |
+
$this->setPersistentData('user_id', $signed_request['user_id']);
|
436 |
+
return $user;
|
437 |
+
}
|
438 |
+
|
439 |
+
// if the signed request didn't present a user id, then invalidate
|
440 |
+
// all entries in any persistent store.
|
441 |
+
$this->clearAllPersistentData();
|
442 |
+
return 0;
|
443 |
+
}
|
444 |
+
|
445 |
+
$user = $this->getPersistentData('user_id', $default = 0);
|
446 |
+
$persisted_access_token = $this->getPersistentData('access_token');
|
447 |
+
|
448 |
+
// use access_token to fetch user id if we have a user access_token, or if
|
449 |
+
// the cached access token has changed.
|
450 |
+
$access_token = $this->getAccessToken();
|
451 |
+
if ($access_token &&
|
452 |
+
$access_token != $this->getApplicationAccessToken() &&
|
453 |
+
!($user && $persisted_access_token == $access_token)) {
|
454 |
+
$user = $this->getUserFromAccessToken();
|
455 |
+
if ($user) {
|
456 |
+
$this->setPersistentData('user_id', $user);
|
457 |
+
} else {
|
458 |
+
$this->clearAllPersistentData();
|
459 |
+
}
|
460 |
+
}
|
461 |
+
|
462 |
+
return $user;
|
463 |
+
}
|
464 |
+
|
465 |
+
/**
|
466 |
+
* Get a Login URL for use with redirects. By default, full page redirect is
|
467 |
+
* assumed. If you are using the generated URL with a window.open() call in
|
468 |
+
* JavaScript, you can pass in display=popup as part of the $params.
|
469 |
+
*
|
470 |
+
* The parameters:
|
471 |
+
* - redirect_uri: the url to go to after a successful login
|
472 |
+
* - scope: comma separated list of requested extended perms
|
473 |
+
*
|
474 |
+
* @param array $params Provide custom parameters
|
475 |
+
* @return string The URL for the login flow
|
476 |
+
*/
|
477 |
+
public function getLoginUrl($params=array()) {
|
478 |
+
$this->establishCSRFTokenState();
|
479 |
+
$currentUrl = $this->getCurrentUrl();
|
480 |
+
|
481 |
+
// if 'scope' is passed as an array, convert to comma separated list
|
482 |
+
$scopeParams = isset($params['scope']) ? $params['scope'] : null;
|
483 |
+
if ($scopeParams && is_array($scopeParams)) {
|
484 |
+
$params['scope'] = implode(',', $scopeParams);
|
485 |
+
}
|
486 |
+
|
487 |
+
return $this->getUrl(
|
488 |
+
'www',
|
489 |
+
'dialog/oauth',
|
490 |
+
array_merge(array(
|
491 |
+
'client_id' => $this->getAppId(),
|
492 |
+
'redirect_uri' => $currentUrl, // possibly overwritten
|
493 |
+
'state' => $this->state),
|
494 |
+
$params));
|
495 |
+
}
|
496 |
+
|
497 |
+
/**
|
498 |
+
* Get a Logout URL suitable for use with redirects.
|
499 |
+
*
|
500 |
+
* The parameters:
|
501 |
+
* - next: the url to go to after a successful logout
|
502 |
+
*
|
503 |
+
* @param array $params Provide custom parameters
|
504 |
+
* @return string The URL for the logout flow
|
505 |
+
*/
|
506 |
+
public function getLogoutUrl($params=array()) {
|
507 |
+
return $this->getUrl(
|
508 |
+
'www',
|
509 |
+
'logout.php',
|
510 |
+
array_merge(array(
|
511 |
+
'next' => $this->getCurrentUrl(),
|
512 |
+
'access_token' => $this->getAccessToken(),
|
513 |
+
), $params)
|
514 |
+
);
|
515 |
+
}
|
516 |
+
|
517 |
+
/**
|
518 |
+
* Get a login status URL to fetch the status from Facebook.
|
519 |
+
*
|
520 |
+
* The parameters:
|
521 |
+
* - ok_session: the URL to go to if a session is found
|
522 |
+
* - no_session: the URL to go to if the user is not connected
|
523 |
+
* - no_user: the URL to go to if the user is not signed into facebook
|
524 |
+
*
|
525 |
+
* @param array $params Provide custom parameters
|
526 |
+
* @return string The URL for the logout flow
|
527 |
+
*/
|
528 |
+
public function getLoginStatusUrl($params=array()) {
|
529 |
+
return $this->getUrl(
|
530 |
+
'www',
|
531 |
+
'extern/login_status.php',
|
532 |
+
array_merge(array(
|
533 |
+
'api_key' => $this->getAppId(),
|
534 |
+
'no_session' => $this->getCurrentUrl(),
|
535 |
+
'no_user' => $this->getCurrentUrl(),
|
536 |
+
'ok_session' => $this->getCurrentUrl(),
|
537 |
+
'session_version' => 3,
|
538 |
+
), $params)
|
539 |
+
);
|
540 |
+
}
|
541 |
+
|
542 |
+
/**
|
543 |
+
* Make an API call.
|
544 |
+
*
|
545 |
+
* @return mixed The decoded response
|
546 |
+
*/
|
547 |
+
public function api(/* polymorphic */) {
|
548 |
+
$args = func_get_args();
|
549 |
+
if (is_array($args[0])) {
|
550 |
+
return $this->_restserver($args[0]);
|
551 |
+
} else {
|
552 |
+
return call_user_func_array(array($this, '_graph'), $args);
|
553 |
+
}
|
554 |
+
}
|
555 |
+
|
556 |
+
/**
|
557 |
+
* Constructs and returns the name of the cookie that
|
558 |
+
* potentially houses the signed request for the app user.
|
559 |
+
* The cookie is not set by the BaseFacebook class, but
|
560 |
+
* it may be set by the JavaScript SDK.
|
561 |
+
*
|
562 |
+
* @return string the name of the cookie that would house
|
563 |
+
* the signed request value.
|
564 |
+
*/
|
565 |
+
protected function getSignedRequestCookieName() {
|
566 |
+
return 'fbsr_'.$this->getAppId();
|
567 |
+
}
|
568 |
+
|
569 |
+
/**
|
570 |
+
* Get the authorization code from the query parameters, if it exists,
|
571 |
+
* and otherwise return false to signal no authorization code was
|
572 |
+
* discoverable.
|
573 |
+
*
|
574 |
+
* @return mixed The authorization code, or false if the authorization
|
575 |
+
* code could not be determined.
|
576 |
+
*/
|
577 |
+
protected function getCode() {
|
578 |
+
if (isset($_REQUEST['code'])) {
|
579 |
+
if ($this->state !== null &&
|
580 |
+
isset($_REQUEST['state']) &&
|
581 |
+
$this->state === $_REQUEST['state']) {
|
582 |
+
|
583 |
+
// CSRF state has done its job, so clear it
|
584 |
+
$this->state = null;
|
585 |
+
$this->clearPersistentData('state');
|
586 |
+
return $_REQUEST['code'];
|
587 |
+
} else {
|
588 |
+
self::errorLog('CSRF state token does not match one provided.');
|
589 |
+
return false;
|
590 |
+
}
|
591 |
+
}
|
592 |
+
|
593 |
+
return false;
|
594 |
+
}
|
595 |
+
|
596 |
+
/**
|
597 |
+
* Retrieves the UID with the understanding that
|
598 |
+
* $this->accessToken has already been set and is
|
599 |
+
* seemingly legitimate. It relies on Facebook's Graph API
|
600 |
+
* to retrieve user information and then extract
|
601 |
+
* the user ID.
|
602 |
+
*
|
603 |
+
* @return integer Returns the UID of the Facebook user, or 0
|
604 |
+
* if the Facebook user could not be determined.
|
605 |
+
*/
|
606 |
+
protected function getUserFromAccessToken() {
|
607 |
+
try {
|
608 |
+
$user_info = $this->api('/me');
|
609 |
+
return $user_info['id'];
|
610 |
+
} catch (NXS_FacebookApiException $e) {
|
611 |
+
return 0;
|
612 |
+
}
|
613 |
+
}
|
614 |
+
|
615 |
+
/**
|
616 |
+
* Returns the access token that should be used for logged out
|
617 |
+
* users when no authorization code is available.
|
618 |
+
*
|
619 |
+
* @return string The application access token, useful for gathering
|
620 |
+
* public information about users and applications.
|
621 |
+
*/
|
622 |
+
protected function getApplicationAccessToken() {
|
623 |
+
return $this->appId.'|'.$this->apiSecret;
|
624 |
+
}
|
625 |
+
|
626 |
+
/**
|
627 |
+
* Lays down a CSRF state token for this process.
|
628 |
+
*
|
629 |
+
* @return void
|
630 |
+
*/
|
631 |
+
protected function establishCSRFTokenState() {
|
632 |
+
if ($this->state === null) {
|
633 |
+
$this->state = md5(uniqid(mt_rand(), true));
|
634 |
+
$this->setPersistentData('state', $this->state);
|
635 |
+
}
|
636 |
+
}
|
637 |
+
|
638 |
+
/**
|
639 |
+
* Retrieves an access token for the given authorization code
|
640 |
+
* (previously generated from www.facebook.com on behalf of
|
641 |
+
* a specific user). The authorization code is sent to graph.facebook.com
|
642 |
+
* and a legitimate access token is generated provided the access token
|
643 |
+
* and the user for which it was generated all match, and the user is
|
644 |
+
* either logged in to Facebook or has granted an offline access permission.
|
645 |
+
*
|
646 |
+
* @param string $code An authorization code.
|
647 |
+
* @return mixed An access token exchanged for the authorization code, or
|
648 |
+
* false if an access token could not be generated.
|
649 |
+
*/
|
650 |
+
protected function getAccessTokenFromCode($code, $redirect_uri = null) {
|
651 |
+
if (empty($code)) {
|
652 |
+
return false;
|
653 |
+
}
|
654 |
+
|
655 |
+
if ($redirect_uri === null) {
|
656 |
+
$redirect_uri = $this->getCurrentUrl();
|
657 |
+
}
|
658 |
+
|
659 |
+
try {
|
660 |
+
// need to circumvent json_decode by calling _oauthRequest
|
661 |
+
// directly, since response isn't JSON format.
|
662 |
+
$access_token_response =
|
663 |
+
$this->_oauthRequest(
|
664 |
+
$this->getUrl('graph', '/oauth/access_token'),
|
665 |
+
$params = array('client_id' => $this->getAppId(),
|
666 |
+
'client_secret' => $this->getApiSecret(),
|
667 |
+
'redirect_uri' => $redirect_uri,
|
668 |
+
'code' => $code));
|
669 |
+
} catch (NXS_FacebookApiException $e) {
|
670 |
+
// most likely that user very recently revoked authorization.
|
671 |
+
// In any event, we don't have an access token, so say so.
|
672 |
+
return false;
|
673 |
+
}
|
674 |
+
|
675 |
+
if (empty($access_token_response)) {
|
676 |
+
return false;
|
677 |
+
}
|
678 |
+
|
679 |
+
$response_params = array();
|
680 |
+
parse_str($access_token_response, $response_params);
|
681 |
+
if (!isset($response_params['access_token'])) {
|
682 |
+
return false;
|
683 |
+
}
|
684 |
+
|
685 |
+
return $response_params['access_token'];
|
686 |
+
}
|
687 |
+
|
688 |
+
/**
|
689 |
+
* Invoke the old restserver.php endpoint.
|
690 |
+
*
|
691 |
+
* @param array $params Method call object
|
692 |
+
*
|
693 |
+
* @return mixed The decoded response object
|
694 |
+
* @throws NXS_FacebookApiException
|
695 |
+
*/
|
696 |
+
protected function _restserver($params) {
|
697 |
+
// generic application level parameters
|
698 |
+
$params['api_key'] = $this->getAppId();
|
699 |
+
$params['format'] = 'json-strings';
|
700 |
+
|
701 |
+
$result = json_decode($this->_oauthRequest(
|
702 |
+
$this->getApiUrl($params['method']),
|
703 |
+
$params
|
704 |
+
), true);
|
705 |
+
|
706 |
+
// results are returned, errors are thrown
|
707 |
+
if (is_array($result) && isset($result['error_code'])) {
|
708 |
+
throw new NXS_FacebookApiException($result);
|
709 |
+
}
|
710 |
+
|
711 |
+
return $result;
|
712 |
+
}
|
713 |
+
|
714 |
+
/**
|
715 |
+
* Invoke the Graph API.
|
716 |
+
*
|
717 |
+
* @param string $path The path (required)
|
718 |
+
* @param string $method The http method (default 'GET')
|
719 |
+
* @param array $params The query/post data
|
720 |
+
*
|
721 |
+
* @return mixed The decoded response object
|
722 |
+
* @throws NXS_FacebookApiException
|
723 |
+
*/
|
724 |
+
protected function _graph($path, $method = 'GET', $params = array()) {
|
725 |
+
if (is_array($method) && empty($params)) {
|
726 |
+
$params = $method;
|
727 |
+
$method = 'GET';
|
728 |
+
}
|
729 |
+
$params['method'] = $method; // method override as we always do a POST
|
730 |
+
|
731 |
+
$result = json_decode($this->_oauthRequest(
|
732 |
+
$this->getUrl('graph', $path),
|
733 |
+
$params
|
734 |
+
), true);
|
735 |
+
|
736 |
+
// results are returned, errors are thrown
|
737 |
+
if (is_array($result) && isset($result['error'])) {
|
738 |
+
$this->throwAPIException($result);
|
739 |
+
}
|
740 |
+
|
741 |
+
return $result;
|
742 |
+
}
|
743 |
+
|
744 |
+
/**
|
745 |
+
* Make a OAuth Request.
|
746 |
+
*
|
747 |
+
* @param string $url The path (required)
|
748 |
+
* @param array $params The query/post data
|
749 |
+
*
|
750 |
+
* @return string The decoded response object
|
751 |
+
* @throws NXS_FacebookApiException
|
752 |
+
*/
|
753 |
+
protected function _oauthRequest($url, $params) {
|
754 |
+
if (!isset($params['access_token'])) {
|
755 |
+
$params['access_token'] = $this->getAccessToken();
|
756 |
+
}
|
757 |
+
|
758 |
+
// json_encode all params values that are not strings
|
759 |
+
foreach ($params as $key => $value) {
|
760 |
+
if (!is_string($value)) {
|
761 |
+
$params[$key] = json_encode($value);
|
762 |
+
}
|
763 |
+
}
|
764 |
+
|
765 |
+
return $this->makeRequest($url, $params);
|
766 |
+
}
|
767 |
+
|
768 |
+
/**
|
769 |
+
* Makes an HTTP request. This method can be overridden by subclasses if
|
770 |
+
* developers want to do fancier things or use something other than curl to
|
771 |
+
* make the request.
|
772 |
+
*
|
773 |
+
* @param string $url The URL to make the request to
|
774 |
+
* @param array $params The parameters to use for the POST body
|
775 |
+
* @param CurlHandler $ch Initialized curl handle
|
776 |
+
*
|
777 |
+
* @return string The response text
|
778 |
+
*/
|
779 |
+
protected function makeRequest($url, $params, $ch=null) {
|
780 |
+
if (!$ch) {
|
781 |
+
$ch = curl_init();
|
782 |
+
}
|
783 |
+
|
784 |
+
$opts = self::$CURL_OPTS;
|
785 |
+
if ($this->useFileUploadSupport()) {
|
786 |
+
$opts[CURLOPT_POSTFIELDS] = $params;
|
787 |
+
} else {
|
788 |
+
$opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
|
789 |
+
}
|
790 |
+
$opts[CURLOPT_URL] = $url;
|
791 |
+
|
792 |
+
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
|
793 |
+
// for 2 seconds if the server does not support this header.
|
794 |
+
if (isset($opts[CURLOPT_HTTPHEADER])) {
|
795 |
+
$existing_headers = $opts[CURLOPT_HTTPHEADER];
|
796 |
+
$existing_headers[] = 'Expect:';
|
797 |
+
$opts[CURLOPT_HTTPHEADER] = $existing_headers;
|
798 |
+
} else {
|
799 |
+
$opts[CURLOPT_HTTPHEADER] = array('Expect:');
|
800 |
+
}
|
801 |
+
|
802 |
+
curl_setopt_array($ch, $opts);
|
803 |
+
$result = curl_exec($ch);
|
804 |
+
|
805 |
+
if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT
|
806 |
+
self::errorLog('Invalid or no certificate authority found, '.
|
807 |
+
'using bundled information');
|
808 |
+
curl_setopt($ch, CURLOPT_CAINFO,
|
809 |
+
dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
|
810 |
+
$result = curl_exec($ch);
|
811 |
+
}
|
812 |
+
|
813 |
+
if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT
|
814 |
+
self::errorLog('Invalid or no certificate authority found, '.
|
815 |
+
'using bundled information');
|
816 |
+
curl_setopt($ch, CURLOPT_CAINFO, 0);
|
817 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
818 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
819 |
+
|
820 |
+
$result = curl_exec($ch);
|
821 |
+
}
|
822 |
+
|
823 |
+
if ($result === false) {
|
824 |
+
$e = new NXS_FacebookApiException(array(
|
825 |
+
'error_code' => curl_errno($ch),
|
826 |
+
'error' => array(
|
827 |
+
'message' => curl_error($ch),
|
828 |
+
'type' => 'CurlException',
|
829 |
+
),
|
830 |
+
));
|
831 |
+
curl_close($ch);
|
832 |
+
throw $e;
|
833 |
+
}
|
834 |
+
curl_close($ch);
|
835 |
+
return $result;
|
836 |
+
}
|
837 |
+
|
838 |
+
/**
|
839 |
+
* Parses a signed_request and validates the signature.
|
840 |
+
*
|
841 |
+
* @param string $signed_request A signed token
|
842 |
+
* @return array The payload inside it or null if the sig is wrong
|
843 |
+
*/
|
844 |
+
protected function parseSignedRequest($signed_request) {
|
845 |
+
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
|
846 |
+
|
847 |
+
// decode the data
|
848 |
+
$sig = self::base64UrlDecode($encoded_sig);
|
849 |
+
$data = json_decode(self::base64UrlDecode($payload), true);
|
850 |
+
|
851 |
+
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
|
852 |
+
self::errorLog('Unknown algorithm. Expected HMAC-SHA256');
|
853 |
+
return null;
|
854 |
+
}
|
855 |
+
|
856 |
+
// check sig
|
857 |
+
$expected_sig = hash_hmac('sha256', $payload,
|
858 |
+
$this->getApiSecret(), $raw = true);
|
859 |
+
if ($sig !== $expected_sig) {
|
860 |
+
self::errorLog('Bad Signed JSON signature!');
|
861 |
+
return null;
|
862 |
+
}
|
863 |
+
|
864 |
+
return $data;
|
865 |
+
}
|
866 |
+
|
867 |
+
/**
|
868 |
+
* Build the URL for api given parameters.
|
869 |
+
*
|
870 |
+
* @param $method String the method name.
|
871 |
+
* @return string The URL for the given parameters
|
872 |
+
*/
|
873 |
+
protected function getApiUrl($method) {
|
874 |
+
static $READ_ONLY_CALLS =
|
875 |
+
array('admin.getallocation' => 1,
|
876 |
+
'admin.getappproperties' => 1,
|
877 |
+
'admin.getbannedusers' => 1,
|
878 |
+
'admin.getlivestreamvialink' => 1,
|
879 |
+
'admin.getmetrics' => 1,
|
880 |
+
'admin.getrestrictioninfo' => 1,
|
881 |
+
'application.getpublicinfo' => 1,
|
882 |
+
'auth.getapppublickey' => 1,
|
883 |
+
'auth.getsession' => 1,
|
884 |
+
'auth.getsignedpublicsessiondata' => 1,
|
885 |
+
'comments.get' => 1,
|
886 |
+
'connect.getunconnectedfriendscount' => 1,
|
887 |
+
'dashboard.getactivity' => 1,
|
888 |
+
'dashboard.getcount' => 1,
|
889 |
+
'dashboard.getglobalnews' => 1,
|
890 |
+
'dashboard.getnews' => 1,
|
891 |
+
'dashboard.multigetcount' => 1,
|
892 |
+
'dashboard.multigetnews' => 1,
|
893 |
+
'data.getcookies' => 1,
|
894 |
+
'events.get' => 1,
|
895 |
+
'events.getmembers' => 1,
|
896 |
+
'fbml.getcustomtags' => 1,
|
897 |
+
'feed.getappfriendstories' => 1,
|
898 |
+
'feed.getregisteredtemplatebundlebyid' => 1,
|
899 |
+
'feed.getregisteredtemplatebundles' => 1,
|
900 |
+
'fql.multiquery' => 1,
|
901 |
+
'fql.query' => 1,
|
902 |
+
'friends.arefriends' => 1,
|
903 |
+
'friends.get' => 1,
|
904 |
+
'friends.getappusers' => 1,
|
905 |
+
'friends.getlists' => 1,
|
906 |
+
'friends.getmutualfriends' => 1,
|
907 |
+
'gifts.get' => 1,
|
908 |
+
'groups.get' => 1,
|
909 |
+
'groups.getmembers' => 1,
|
910 |
+
'intl.gettranslations' => 1,
|
911 |
+
'links.get' => 1,
|
912 |
+
'notes.get' => 1,
|
913 |
+
'notifications.get' => 1,
|
914 |
+
'pages.getinfo' => 1,
|
915 |
+
'pages.isadmin' => 1,
|
916 |
+
'pages.isappadded' => 1,
|
917 |
+
'pages.isfan' => 1,
|
918 |
+
'permissions.checkavailableapiaccess' => 1,
|
919 |
+
'permissions.checkgrantedapiaccess' => 1,
|
920 |
+
'photos.get' => 1,
|
921 |
+
'photos.getalbums' => 1,
|
922 |
+
'photos.gettags' => 1,
|
923 |
+
'profile.getinfo' => 1,
|
924 |
+
'profile.getinfooptions' => 1,
|
925 |
+
'stream.get' => 1,
|
926 |
+
'stream.getcomments' => 1,
|
927 |
+
'stream.getfilters' => 1,
|
928 |
+
'users.getinfo' => 1,
|
929 |
+
'users.getloggedinuser' => 1,
|
930 |
+
'users.getstandardinfo' => 1,
|
931 |
+
'users.hasapppermission' => 1,
|
932 |
+
'users.isappuser' => 1,
|
933 |
+
'users.isverified' => 1,
|
934 |
+
'video.getuploadlimits' => 1);
|
935 |
+
$name = 'api';
|
936 |
+
if (isset($READ_ONLY_CALLS[strtolower($method)])) {
|
937 |
+
$name = 'api_read';
|
938 |
+
} else if (strtolower($method) == 'video.upload') {
|
939 |
+
$name = 'api_video';
|
940 |
+
}
|
941 |
+
return self::getUrl($name, 'restserver.php');
|
942 |
+
}
|
943 |
+
|
944 |
+
/**
|
945 |
+
* Build the URL for given domain alias, path and parameters.
|
946 |
+
*
|
947 |
+
* @param $name string The name of the domain
|
948 |
+
* @param $path string Optional path (without a leading slash)
|
949 |
+
* @param $params array Optional query parameters
|
950 |
+
*
|
951 |
+
* @return string The URL for the given parameters
|
952 |
+
*/
|
953 |
+
protected function getUrl($name, $path='', $params=array()) {
|
954 |
+
$url = self::$DOMAIN_MAP[$name];
|
955 |
+
if ($path) {
|
956 |
+
if ($path[0] === '/') {
|
957 |
+
$path = substr($path, 1);
|
958 |
+
}
|
959 |
+
$url .= $path;
|
960 |
+
}
|
961 |
+
if ($params) {
|
962 |
+
$url .= '?' . http_build_query($params, null, '&');
|
963 |
+
}
|
964 |
+
|
965 |
+
return $url;
|
966 |
+
}
|
967 |
+
|
968 |
+
/**
|
969 |
+
* Returns the Current URL, stripping it of known FB parameters that should
|
970 |
+
* not persist.
|
971 |
+
*
|
972 |
+
* @return string The current URL
|
973 |
+
*/
|
974 |
+
protected function getCurrentUrl() {
|
975 |
+
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'
|
976 |
+
? 'https://'
|
977 |
+
: 'http://';
|
978 |
+
$currentUrl = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
979 |
+
$parts = parse_url($currentUrl);
|
980 |
+
|
981 |
+
$query = '';
|
982 |
+
if (!empty($parts['query'])) {
|
983 |
+
// drop known fb params
|
984 |
+
$params = explode('&', $parts['query']);
|
985 |
+
$retained_params = array();
|
986 |
+
foreach ($params as $param) {
|
987 |
+
if ($this->shouldRetainParam($param)) {
|
988 |
+
$retained_params[] = $param;
|
989 |
+
}
|
990 |
+
}
|
991 |
+
|
992 |
+
if (!empty($retained_params)) {
|
993 |
+
$query = '?'.implode($retained_params, '&');
|
994 |
+
}
|
995 |
+
}
|
996 |
+
|
997 |
+
// use port if non default
|
998 |
+
$port =
|
999 |
+
isset($parts['port']) &&
|
1000 |
+
(($protocol === 'http://' && $parts['port'] !== 80) ||
|
1001 |
+
($protocol === 'https://' && $parts['port'] !== 443))
|
1002 |
+
? ':' . $parts['port'] : '';
|
1003 |
+
|
1004 |
+
// rebuild
|
1005 |
+
return $protocol . $parts['host'] . $port . $parts['path'] . $query;
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
/**
|
1009 |
+
* Returns true if and only if the key or key/value pair should
|
1010 |
+
* be retained as part of the query string. This amounts to
|
1011 |
+
* a brute-force search of the very small list of Facebook-specific
|
1012 |
+
* params that should be stripped out.
|
1013 |
+
*
|
1014 |
+
* @param string $param A key or key/value pair within a URL's query (e.g.
|
1015 |
+
* 'foo=a', 'foo=', or 'foo'.
|
1016 |
+
*
|
1017 |
+
* @return boolean
|
1018 |
+
*/
|
1019 |
+
protected function shouldRetainParam($param) {
|
1020 |
+
foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) {
|
1021 |
+
if (strpos($param, $drop_query_param.'=') === 0) {
|
1022 |
+
return false;
|
1023 |
+
}
|
1024 |
+
}
|
1025 |
+
|
1026 |
+
return true;
|
1027 |
+
}
|
1028 |
+
|
1029 |
+
/**
|
1030 |
+
* Analyzes the supplied result to see if it was thrown
|
1031 |
+
* because the access token is no longer valid. If that is
|
1032 |
+
* the case, then the persistent store is cleared.
|
1033 |
+
*
|
1034 |
+
* @param $result array A record storing the error message returned
|
1035 |
+
* by a failed API call.
|
1036 |
+
*/
|
1037 |
+
protected function throwAPIException($result) {
|
1038 |
+
$e = new NXS_FacebookApiException($result);
|
1039 |
+
switch ($e->getType()) {
|
1040 |
+
// OAuth 2.0 Draft 00 style
|
1041 |
+
case 'OAuthException':
|
1042 |
+
// OAuth 2.0 Draft 10 style
|
1043 |
+
case 'invalid_token':
|
1044 |
+
$message = $e->getMessage();
|
1045 |
+
if ((strpos($message, 'Error validating access token') !== false) ||
|
1046 |
+
(strpos($message, 'Invalid OAuth access token') !== false)) {
|
1047 |
+
$this->setAccessToken(null);
|
1048 |
+
$this->user = 0;
|
1049 |
+
$this->clearAllPersistentData();
|
1050 |
+
}
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
throw $e;
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
|
1057 |
+
/**
|
1058 |
+
* Prints to the error log if you aren't in command line mode.
|
1059 |
+
*
|
1060 |
+
* @param string $msg Log message
|
1061 |
+
*/
|
1062 |
+
protected static function errorLog($msg) {
|
1063 |
+
// disable error log if we are running in a CLI environment
|
1064 |
+
// @codeCoverageIgnoreStart
|
1065 |
+
if (php_sapi_name() != 'cli') {
|
1066 |
+
error_log($msg);
|
1067 |
+
}
|
1068 |
+
// uncomment this if you want to see the errors on the page
|
1069 |
+
// print 'error_log: '.$msg."\n";
|
1070 |
+
// @codeCoverageIgnoreEnd
|
1071 |
+
}
|
1072 |
+
|
1073 |
+
/**
|
1074 |
+
* Base64 encoding that doesn't need to be urlencode()ed.
|
1075 |
+
* Exactly the same as base64_encode except it uses
|
1076 |
+
* - instead of +
|
1077 |
+
* _ instead of /
|
1078 |
+
*
|
1079 |
+
* @param string $input base64UrlEncoded string
|
1080 |
+
* @return string
|
1081 |
+
*/
|
1082 |
+
protected static function base64UrlDecode($input) {
|
1083 |
+
return base64_decode(strtr($input, '-_', '+/'));
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
/**
|
1087 |
+
* Each of the following four methods should be overridden in
|
1088 |
+
* a concrete subclass, as they are in the provided Facebook class.
|
1089 |
+
* The Facebook class uses PHP sessions to provide a primitive
|
1090 |
+
* persistent store, but another subclass--one that you implement--
|
1091 |
+
* might use a database, memcache, or an in-memory cache.
|
1092 |
+
*
|
1093 |
+
* @see Facebook
|
1094 |
+
*/
|
1095 |
+
|
1096 |
+
/**
|
1097 |
+
* Stores the given ($key, $value) pair, so that future calls to
|
1098 |
+
* getPersistentData($key) return $value. This call may be in another request.
|
1099 |
+
*
|
1100 |
+
* @param string $key
|
1101 |
+
* @param array $value
|
1102 |
+
*
|
1103 |
+
* @return void
|
1104 |
+
*/
|
1105 |
+
abstract protected function setPersistentData($key, $value);
|
1106 |
+
|
1107 |
+
/**
|
1108 |
+
* Get the data for $key, persisted by BaseFacebook::setPersistentData()
|
1109 |
+
*
|
1110 |
+
* @param string $key The key of the data to retrieve
|
1111 |
+
* @param boolean $default The default value to return if $key is not found
|
1112 |
+
*
|
1113 |
+
* @return mixed
|
1114 |
+
*/
|
1115 |
+
abstract protected function getPersistentData($key, $default = false);
|
1116 |
+
|
1117 |
+
/**
|
1118 |
+
* Clear the data with $key from the persistent storage
|
1119 |
+
*
|
1120 |
+
* @param string $key
|
1121 |
+
* @return void
|
1122 |
+
*/
|
1123 |
+
abstract protected function clearPersistentData($key);
|
1124 |
+
|
1125 |
+
/**
|
1126 |
+
* Clear all data from the persistent storage
|
1127 |
+
*
|
1128 |
+
* @return void
|
1129 |
+
*/
|
1130 |
+
abstract protected function clearAllPersistentData();
|
1131 |
+
}
|
apis/cacert.pem
ADDED
@@ -0,0 +1,3376 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## ca-bundle.crt -- Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Certificate data from Mozilla as of: Thu Nov 3 19:04:19 2011
|
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 |
+
## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
|
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 |
+
|
17 |
+
# ***** BEGIN LICENSE BLOCK *****
|
18 |
+
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
19 |
+
#
|
20 |
+
# The contents of this file are subject to the Mozilla Public License Version
|
21 |
+
# 1.1 (the "License"); you may not use this file except in compliance with
|
22 |
+
# the License. You may obtain a copy of the License at
|
23 |
+
# http://www.mozilla.org/MPL/
|
24 |
+
#
|
25 |
+
# Software distributed under the License is distributed on an "AS IS" basis,
|
26 |
+
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
27 |
+
# for the specific language governing rights and limitations under the
|
28 |
+
# License.
|
29 |
+
#
|
30 |
+
# The Original Code is the Netscape security libraries.
|
31 |
+
#
|
32 |
+
# The Initial Developer of the Original Code is
|
33 |
+
# Netscape Communications Corporation.
|
34 |
+
# Portions created by the Initial Developer are Copyright (C) 1994-2000
|
35 |
+
# the Initial Developer. All Rights Reserved.
|
36 |
+
#
|
37 |
+
# Contributor(s):
|
38 |
+
#
|
39 |
+
# Alternatively, the contents of this file may be used under the terms of
|
40 |
+
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
41 |
+
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
42 |
+
# in which case the provisions of the GPL or the LGPL are applicable instead
|
43 |
+
# of those above. If you wish to allow use of your version of this file only
|
44 |
+
# under the terms of either the GPL or the LGPL, and not to allow others to
|
45 |
+
# use your version of this file under the terms of the MPL, indicate your
|
46 |
+
# decision by deleting the provisions above and replace them with the notice
|
47 |
+
# and other provisions required by the GPL or the LGPL. If you do not delete
|
48 |
+
# the provisions above, a recipient may use your version of this file under
|
49 |
+
# the terms of any one of the MPL, the GPL or the LGPL.
|
50 |
+
#
|
51 |
+
# ***** END LICENSE BLOCK *****
|
52 |
+
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $
|
53 |
+
|
54 |
+
GTE CyberTrust Global Root
|
55 |
+
==========================
|
56 |
+
-----BEGIN CERTIFICATE-----
|
57 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
58 |
+
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
59 |
+
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
60 |
+
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
61 |
+
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
62 |
+
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
63 |
+
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
64 |
+
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
65 |
+
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
66 |
+
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
67 |
+
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
68 |
+
-----END CERTIFICATE-----
|
69 |
+
|
70 |
+
Thawte Server CA
|
71 |
+
================
|
72 |
+
-----BEGIN CERTIFICATE-----
|
73 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
74 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
75 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
76 |
+
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
77 |
+
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
78 |
+
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
79 |
+
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
80 |
+
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
81 |
+
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
82 |
+
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
83 |
+
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
84 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
85 |
+
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
86 |
+
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
87 |
+
-----END CERTIFICATE-----
|
88 |
+
|
89 |
+
Thawte Premium Server CA
|
90 |
+
========================
|
91 |
+
-----BEGIN CERTIFICATE-----
|
92 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
93 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
94 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
95 |
+
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
96 |
+
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
97 |
+
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
98 |
+
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
99 |
+
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
100 |
+
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
101 |
+
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
102 |
+
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
103 |
+
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
104 |
+
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
105 |
+
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
106 |
+
UCemDaYj+bvLpgcUQg==
|
107 |
+
-----END CERTIFICATE-----
|
108 |
+
|
109 |
+
Equifax Secure CA
|
110 |
+
=================
|
111 |
+
-----BEGIN CERTIFICATE-----
|
112 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
113 |
+
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
114 |
+
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
115 |
+
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
116 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
117 |
+
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
118 |
+
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
119 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
120 |
+
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
121 |
+
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
122 |
+
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
123 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
124 |
+
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
125 |
+
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
126 |
+
70+sB3c4
|
127 |
+
-----END CERTIFICATE-----
|
128 |
+
|
129 |
+
Digital Signature Trust Co. Global CA 1
|
130 |
+
=======================================
|
131 |
+
-----BEGIN CERTIFICATE-----
|
132 |
+
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
133 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
134 |
+
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
135 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
136 |
+
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
137 |
+
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
138 |
+
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
139 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
140 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
141 |
+
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
142 |
+
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
143 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
144 |
+
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
145 |
+
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
146 |
+
RbyhkwS7hp86W0N6w4pl
|
147 |
+
-----END CERTIFICATE-----
|
148 |
+
|
149 |
+
Digital Signature Trust Co. Global CA 3
|
150 |
+
=======================================
|
151 |
+
-----BEGIN CERTIFICATE-----
|
152 |
+
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
153 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
154 |
+
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
155 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
156 |
+
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
157 |
+
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
158 |
+
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
159 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
160 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
161 |
+
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
162 |
+
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
163 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
164 |
+
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
165 |
+
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
166 |
+
mPnHfxsb1gYgAlihw6ID
|
167 |
+
-----END CERTIFICATE-----
|
168 |
+
|
169 |
+
Verisign Class 3 Public Primary Certification Authority
|
170 |
+
=======================================================
|
171 |
+
-----BEGIN CERTIFICATE-----
|
172 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
173 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
174 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
175 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
176 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
177 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
178 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
179 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
180 |
+
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
181 |
+
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
182 |
+
Tqj/ZA1k
|
183 |
+
-----END CERTIFICATE-----
|
184 |
+
|
185 |
+
Verisign Class 3 Public Primary Certification Authority - G2
|
186 |
+
============================================================
|
187 |
+
-----BEGIN CERTIFICATE-----
|
188 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
189 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
190 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
191 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
192 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
193 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
194 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
195 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
196 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
197 |
+
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
198 |
+
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
199 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
200 |
+
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
201 |
+
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
202 |
+
-----END CERTIFICATE-----
|
203 |
+
|
204 |
+
Verisign Class 4 Public Primary Certification Authority - G2
|
205 |
+
============================================================
|
206 |
+
-----BEGIN CERTIFICATE-----
|
207 |
+
MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
208 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
|
209 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
210 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
211 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
212 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
|
213 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
214 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
215 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4
|
216 |
+
xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDH
|
217 |
+
qGKB3FtKqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQAB
|
218 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGIL4LcY/oCRaxF
|
219 |
+
WdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0ycyfYaT5DdPauxYma51N86Xv2S/PB
|
220 |
+
ZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRPT8qAkbYp
|
221 |
+
-----END CERTIFICATE-----
|
222 |
+
|
223 |
+
GlobalSign Root CA
|
224 |
+
==================
|
225 |
+
-----BEGIN CERTIFICATE-----
|
226 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
227 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
228 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
229 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
230 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
231 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
232 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
233 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
234 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
235 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
236 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
237 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
238 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
239 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
240 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
241 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
242 |
+
-----END CERTIFICATE-----
|
243 |
+
|
244 |
+
GlobalSign Root CA - R2
|
245 |
+
=======================
|
246 |
+
-----BEGIN CERTIFICATE-----
|
247 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
248 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
249 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
250 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
251 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
252 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
253 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
254 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
255 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
256 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
257 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
258 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
259 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
260 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
261 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
262 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
263 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
264 |
+
-----END CERTIFICATE-----
|
265 |
+
|
266 |
+
ValiCert Class 1 VA
|
267 |
+
===================
|
268 |
+
-----BEGIN CERTIFICATE-----
|
269 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
270 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
271 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
272 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
273 |
+
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
274 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
275 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
276 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
277 |
+
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
278 |
+
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
279 |
+
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
280 |
+
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
281 |
+
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
282 |
+
Orf1LXLI
|
283 |
+
-----END CERTIFICATE-----
|
284 |
+
|
285 |
+
ValiCert Class 2 VA
|
286 |
+
===================
|
287 |
+
-----BEGIN CERTIFICATE-----
|
288 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
289 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
290 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
291 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
292 |
+
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
293 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
294 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
295 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
296 |
+
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
297 |
+
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
298 |
+
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
299 |
+
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
300 |
+
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
301 |
+
W9ViH0Pd
|
302 |
+
-----END CERTIFICATE-----
|
303 |
+
|
304 |
+
RSA Root Certificate 1
|
305 |
+
======================
|
306 |
+
-----BEGIN CERTIFICATE-----
|
307 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
308 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
309 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
310 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
311 |
+
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
312 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
313 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
314 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
315 |
+
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
316 |
+
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
317 |
+
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
318 |
+
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
319 |
+
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
320 |
+
on+jjBXu
|
321 |
+
-----END CERTIFICATE-----
|
322 |
+
|
323 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
324 |
+
============================================================
|
325 |
+
-----BEGIN CERTIFICATE-----
|
326 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
327 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
328 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
329 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
330 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
331 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
332 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
333 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
334 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
335 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
336 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
337 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
338 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
339 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
340 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
341 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
342 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
343 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
344 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
345 |
+
-----END CERTIFICATE-----
|
346 |
+
|
347 |
+
Verisign Class 4 Public Primary Certification Authority - G3
|
348 |
+
============================================================
|
349 |
+
-----BEGIN CERTIFICATE-----
|
350 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
351 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
352 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
353 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
354 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
355 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
356 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
357 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
358 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
359 |
+
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
360 |
+
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
361 |
+
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
362 |
+
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
363 |
+
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
364 |
+
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
365 |
+
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
366 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
367 |
+
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
368 |
+
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
369 |
+
-----END CERTIFICATE-----
|
370 |
+
|
371 |
+
Entrust.net Secure Server CA
|
372 |
+
============================
|
373 |
+
-----BEGIN CERTIFICATE-----
|
374 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
375 |
+
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
376 |
+
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
377 |
+
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
378 |
+
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
379 |
+
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
380 |
+
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
381 |
+
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
382 |
+
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
383 |
+
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
384 |
+
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
385 |
+
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
386 |
+
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
387 |
+
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
388 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
389 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
390 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
391 |
+
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
392 |
+
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
393 |
+
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
394 |
+
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
395 |
+
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
396 |
+
-----END CERTIFICATE-----
|
397 |
+
|
398 |
+
Entrust.net Premium 2048 Secure Server CA
|
399 |
+
=========================================
|
400 |
+
-----BEGIN CERTIFICATE-----
|
401 |
+
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
402 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
403 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
404 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
405 |
+
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
406 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
407 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
408 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
409 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
410 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
411 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
412 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
413 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
414 |
+
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
415 |
+
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
416 |
+
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
417 |
+
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
418 |
+
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
419 |
+
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
420 |
+
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
421 |
+
-----END CERTIFICATE-----
|
422 |
+
|
423 |
+
Baltimore CyberTrust Root
|
424 |
+
=========================
|
425 |
+
-----BEGIN CERTIFICATE-----
|
426 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
427 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
428 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
429 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
430 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
431 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
432 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
433 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
434 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
435 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
436 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
437 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
438 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
439 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
440 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
441 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
442 |
+
-----END CERTIFICATE-----
|
443 |
+
|
444 |
+
Equifax Secure Global eBusiness CA
|
445 |
+
==================================
|
446 |
+
-----BEGIN CERTIFICATE-----
|
447 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
448 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
449 |
+
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
450 |
+
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
451 |
+
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
452 |
+
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
453 |
+
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
454 |
+
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
455 |
+
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
456 |
+
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
457 |
+
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
458 |
+
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
459 |
+
-----END CERTIFICATE-----
|
460 |
+
|
461 |
+
Equifax Secure eBusiness CA 1
|
462 |
+
=============================
|
463 |
+
-----BEGIN CERTIFICATE-----
|
464 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
465 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
466 |
+
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
467 |
+
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
468 |
+
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
469 |
+
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
470 |
+
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
471 |
+
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
472 |
+
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
473 |
+
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
474 |
+
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
475 |
+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
476 |
+
-----END CERTIFICATE-----
|
477 |
+
|
478 |
+
Equifax Secure eBusiness CA 2
|
479 |
+
=============================
|
480 |
+
-----BEGIN CERTIFICATE-----
|
481 |
+
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
482 |
+
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
483 |
+
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
484 |
+
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
485 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
486 |
+
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
487 |
+
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
488 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
489 |
+
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
490 |
+
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
491 |
+
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
492 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
493 |
+
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
494 |
+
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
495 |
+
V+GRMOrN
|
496 |
+
-----END CERTIFICATE-----
|
497 |
+
|
498 |
+
AddTrust Low-Value Services Root
|
499 |
+
================================
|
500 |
+
-----BEGIN CERTIFICATE-----
|
501 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
502 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
503 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
504 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
505 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
506 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
507 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
508 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
509 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
510 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
511 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
512 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
513 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
514 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
515 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
516 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
517 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
518 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
519 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
520 |
+
-----END CERTIFICATE-----
|
521 |
+
|
522 |
+
AddTrust External Root
|
523 |
+
======================
|
524 |
+
-----BEGIN CERTIFICATE-----
|
525 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
526 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
527 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
528 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
529 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
530 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
531 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
532 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
533 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
534 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
535 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
536 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
537 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
538 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
539 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
540 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
541 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
542 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
543 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
544 |
+
-----END CERTIFICATE-----
|
545 |
+
|
546 |
+
AddTrust Public Services Root
|
547 |
+
=============================
|
548 |
+
-----BEGIN CERTIFICATE-----
|
549 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
550 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
551 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
552 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
553 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
554 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
555 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
556 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
557 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
558 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
559 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
560 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
561 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
562 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
563 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
564 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
565 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
566 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
567 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
568 |
+
-----END CERTIFICATE-----
|
569 |
+
|
570 |
+
AddTrust Qualified Certificates Root
|
571 |
+
====================================
|
572 |
+
-----BEGIN CERTIFICATE-----
|
573 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
574 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
575 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
576 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
577 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
578 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
579 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
580 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
581 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
582 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
583 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
584 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
585 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
586 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
587 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
588 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
589 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
590 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
591 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
592 |
+
-----END CERTIFICATE-----
|
593 |
+
|
594 |
+
Entrust Root Certification Authority
|
595 |
+
====================================
|
596 |
+
-----BEGIN CERTIFICATE-----
|
597 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
598 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
599 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
600 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
601 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
602 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
603 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
604 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
605 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
606 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
607 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
608 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
609 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
610 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
611 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
612 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
613 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
614 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
615 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
616 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
617 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
618 |
+
-----END CERTIFICATE-----
|
619 |
+
|
620 |
+
RSA Security 2048 v3
|
621 |
+
====================
|
622 |
+
-----BEGIN CERTIFICATE-----
|
623 |
+
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
624 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
625 |
+
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
626 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
627 |
+
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
628 |
+
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
629 |
+
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
630 |
+
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
631 |
+
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
632 |
+
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
633 |
+
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
634 |
+
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
635 |
+
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
636 |
+
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
637 |
+
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
638 |
+
pKnXwiJPZ9d37CAFYd4=
|
639 |
+
-----END CERTIFICATE-----
|
640 |
+
|
641 |
+
GeoTrust Global CA
|
642 |
+
==================
|
643 |
+
-----BEGIN CERTIFICATE-----
|
644 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
645 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
646 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
647 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
648 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
649 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
650 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
651 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
652 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
653 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
654 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
655 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
656 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
657 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
658 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
659 |
+
Mw==
|
660 |
+
-----END CERTIFICATE-----
|
661 |
+
|
662 |
+
GeoTrust Global CA 2
|
663 |
+
====================
|
664 |
+
-----BEGIN CERTIFICATE-----
|
665 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
666 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
667 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
668 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
669 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
670 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
671 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
672 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
673 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
674 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
675 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
676 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
677 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
678 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
679 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
680 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
681 |
+
-----END CERTIFICATE-----
|
682 |
+
|
683 |
+
GeoTrust Universal CA
|
684 |
+
=====================
|
685 |
+
-----BEGIN CERTIFICATE-----
|
686 |
+
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
|
710 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
711 |
+
-----END CERTIFICATE-----
|
712 |
+
|
713 |
+
GeoTrust Universal CA 2
|
714 |
+
=======================
|
715 |
+
-----BEGIN CERTIFICATE-----
|
716 |
+
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
|
740 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
741 |
+
-----END CERTIFICATE-----
|
742 |
+
|
743 |
+
America Online Root Certification Authority 1
|
744 |
+
=============================================
|
745 |
+
-----BEGIN CERTIFICATE-----
|
746 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
747 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
748 |
+
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
749 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
750 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
751 |
+
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
752 |
+
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
753 |
+
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
754 |
+
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
755 |
+
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
756 |
+
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
757 |
+
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
758 |
+
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
759 |
+
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
760 |
+
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
761 |
+
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
762 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
763 |
+
-----END CERTIFICATE-----
|
764 |
+
|
765 |
+
America Online Root Certification Authority 2
|
766 |
+
=============================================
|
767 |
+
-----BEGIN CERTIFICATE-----
|
768 |
+
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
|
793 |
+
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
794 |
+
-----END CERTIFICATE-----
|
795 |
+
|
796 |
+
Visa eCommerce Root
|
797 |
+
===================
|
798 |
+
-----BEGIN CERTIFICATE-----
|
799 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
800 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
801 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
802 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
803 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
804 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
805 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
806 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
807 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
808 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
809 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
810 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
811 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
812 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
813 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
814 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
815 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
816 |
+
-----END CERTIFICATE-----
|
817 |
+
|
818 |
+
TC TrustCenter, Germany, Class 2 CA
|
819 |
+
===================================
|
820 |
+
-----BEGIN CERTIFICATE-----
|
821 |
+
MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
|
822 |
+
EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
|
823 |
+
U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
|
824 |
+
bGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
|
825 |
+
ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
|
826 |
+
YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
|
827 |
+
aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
|
828 |
+
MiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
|
829 |
+
hvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLs
|
830 |
+
qh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5N
|
831 |
+
u6hLVxa8/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
|
832 |
+
Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
|
833 |
+
LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBAIRS+yjf
|
834 |
+
/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ2
|
835 |
+
9ELw+HkuCkhcq8xRT3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
|
836 |
+
ASZ4smZHcFFk
|
837 |
+
-----END CERTIFICATE-----
|
838 |
+
|
839 |
+
TC TrustCenter, Germany, Class 3 CA
|
840 |
+
===================================
|
841 |
+
-----BEGIN CERTIFICATE-----
|
842 |
+
MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
|
843 |
+
EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
|
844 |
+
U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
|
845 |
+
bGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
|
846 |
+
ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
|
847 |
+
YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
|
848 |
+
aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
|
849 |
+
MyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
|
850 |
+
hvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN
|
851 |
+
2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+7
|
852 |
+
7uMMfTDWw1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
|
853 |
+
Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
|
854 |
+
LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBABY9xs3B
|
855 |
+
u4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm
|
856 |
+
5gZOngylerpuw3yCGdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
|
857 |
+
CdS7kjXvD9s0
|
858 |
+
-----END CERTIFICATE-----
|
859 |
+
|
860 |
+
Certum Root CA
|
861 |
+
==============
|
862 |
+
-----BEGIN CERTIFICATE-----
|
863 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
864 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
865 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
866 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
867 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
868 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
869 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
870 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
871 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
872 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
873 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
874 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
875 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
876 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
877 |
+
-----END CERTIFICATE-----
|
878 |
+
|
879 |
+
Comodo AAA Services root
|
880 |
+
========================
|
881 |
+
-----BEGIN CERTIFICATE-----
|
882 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
883 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
884 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
885 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
886 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
887 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
888 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
889 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
890 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
891 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
892 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
893 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
894 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
895 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
896 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
897 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
898 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
899 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
900 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
901 |
+
-----END CERTIFICATE-----
|
902 |
+
|
903 |
+
Comodo Secure Services root
|
904 |
+
===========================
|
905 |
+
-----BEGIN CERTIFICATE-----
|
906 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
907 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
908 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
909 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
910 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
911 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
912 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
913 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
914 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
915 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
916 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
917 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
918 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
919 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
920 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
921 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
922 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
923 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
924 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
925 |
+
RR3B7Hzs/Sk=
|
926 |
+
-----END CERTIFICATE-----
|
927 |
+
|
928 |
+
Comodo Trusted Services root
|
929 |
+
============================
|
930 |
+
-----BEGIN CERTIFICATE-----
|
931 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
932 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
933 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
934 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
935 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
936 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
937 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
938 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
939 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
940 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
941 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
942 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
943 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
944 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
945 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
946 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
947 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
948 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
949 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
950 |
+
9y5Xt5hwXsjEeLBi
|
951 |
+
-----END CERTIFICATE-----
|
952 |
+
|
953 |
+
QuoVadis Root CA
|
954 |
+
================
|
955 |
+
-----BEGIN CERTIFICATE-----
|
956 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
957 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
958 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
959 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
960 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
961 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
962 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
963 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
964 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
965 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
966 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
967 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
968 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
969 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
970 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
971 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
972 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
973 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
974 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
975 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
976 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
977 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
978 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
979 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
980 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
981 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
982 |
+
5nrQNiOKSnQ2+Q==
|
983 |
+
-----END CERTIFICATE-----
|
984 |
+
|
985 |
+
QuoVadis Root CA 2
|
986 |
+
==================
|
987 |
+
-----BEGIN CERTIFICATE-----
|
988 |
+
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
|
1014 |
+
-----END CERTIFICATE-----
|
1015 |
+
|
1016 |
+
QuoVadis Root CA 3
|
1017 |
+
==================
|
1018 |
+
-----BEGIN CERTIFICATE-----
|
1019 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1020 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1021 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1022 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1023 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1024 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1025 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1026 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1027 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1028 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1029 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1030 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1031 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1032 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1033 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1034 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1035 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1036 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1037 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1038 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1039 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1040 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1041 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1042 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1043 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1044 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1045 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1046 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1047 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1048 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1049 |
+
-----END CERTIFICATE-----
|
1050 |
+
|
1051 |
+
Security Communication Root CA
|
1052 |
+
==============================
|
1053 |
+
-----BEGIN CERTIFICATE-----
|
1054 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1055 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1056 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1057 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1058 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1059 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1060 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1061 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1062 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1063 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1064 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1065 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1066 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1067 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1068 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1069 |
+
FL39vmwLAw==
|
1070 |
+
-----END CERTIFICATE-----
|
1071 |
+
|
1072 |
+
Sonera Class 2 Root CA
|
1073 |
+
======================
|
1074 |
+
-----BEGIN CERTIFICATE-----
|
1075 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1076 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1077 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1078 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1079 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
1080 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
1081 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
1082 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
1083 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
1084 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
1085 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
1086 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
1087 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
1088 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
1089 |
+
llpwrN9M
|
1090 |
+
-----END CERTIFICATE-----
|
1091 |
+
|
1092 |
+
Staat der Nederlanden Root CA
|
1093 |
+
=============================
|
1094 |
+
-----BEGIN CERTIFICATE-----
|
1095 |
+
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
1096 |
+
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
1097 |
+
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
1098 |
+
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
1099 |
+
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
1100 |
+
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
1101 |
+
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
1102 |
+
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
1103 |
+
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
1104 |
+
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
1105 |
+
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
1106 |
+
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
1107 |
+
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
1108 |
+
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
1109 |
+
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
1110 |
+
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
1111 |
+
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
1112 |
+
-----END CERTIFICATE-----
|
1113 |
+
|
1114 |
+
TDC Internet Root CA
|
1115 |
+
====================
|
1116 |
+
-----BEGIN CERTIFICATE-----
|
1117 |
+
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
1118 |
+
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
1119 |
+
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
1120 |
+
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1121 |
+
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
1122 |
+
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
1123 |
+
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
1124 |
+
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
1125 |
+
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
1126 |
+
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
1127 |
+
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
1128 |
+
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
1129 |
+
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
1130 |
+
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
1131 |
+
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
1132 |
+
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
1133 |
+
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
1134 |
+
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
1135 |
+
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
1136 |
+
-----END CERTIFICATE-----
|
1137 |
+
|
1138 |
+
TDC OCES Root CA
|
1139 |
+
================
|
1140 |
+
-----BEGIN CERTIFICATE-----
|
1141 |
+
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
1142 |
+
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
1143 |
+
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
1144 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
1145 |
+
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
1146 |
+
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
1147 |
+
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
1148 |
+
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
1149 |
+
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
1150 |
+
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
1151 |
+
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
1152 |
+
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
1153 |
+
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
1154 |
+
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
1155 |
+
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
1156 |
+
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
1157 |
+
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
1158 |
+
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
1159 |
+
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
1160 |
+
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
1161 |
+
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
1162 |
+
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
1163 |
+
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
1164 |
+
-----END CERTIFICATE-----
|
1165 |
+
|
1166 |
+
UTN DATACorp SGC Root CA
|
1167 |
+
========================
|
1168 |
+
-----BEGIN CERTIFICATE-----
|
1169 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
1170 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1171 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
1172 |
+
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
1173 |
+
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
1174 |
+
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
1175 |
+
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1176 |
+
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
1177 |
+
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
1178 |
+
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
1179 |
+
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
1180 |
+
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
1181 |
+
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
1182 |
+
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
1183 |
+
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
1184 |
+
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
1185 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
1186 |
+
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
1187 |
+
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
1188 |
+
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
1189 |
+
-----END CERTIFICATE-----
|
1190 |
+
|
1191 |
+
UTN USERFirst Hardware Root CA
|
1192 |
+
==============================
|
1193 |
+
-----BEGIN CERTIFICATE-----
|
1194 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
1195 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1196 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
1197 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
1198 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
1199 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
1200 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
1201 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
1202 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
1203 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
1204 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
1205 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
1206 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
1207 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
1208 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
1209 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1210 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
1211 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
1212 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
1213 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
1214 |
+
nfhmqA==
|
1215 |
+
-----END CERTIFICATE-----
|
1216 |
+
|
1217 |
+
Camerfirma Chambers of Commerce Root
|
1218 |
+
====================================
|
1219 |
+
-----BEGIN CERTIFICATE-----
|
1220 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1221 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1222 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
1223 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
1224 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
1225 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
1226 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
1227 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
1228 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
1229 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
1230 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
1231 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
1232 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
1233 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
1234 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
1235 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
1236 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
1237 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
1238 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
1239 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
1240 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
1241 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
1242 |
+
-----END CERTIFICATE-----
|
1243 |
+
|
1244 |
+
Camerfirma Global Chambersign Root
|
1245 |
+
==================================
|
1246 |
+
-----BEGIN CERTIFICATE-----
|
1247 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1248 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1249 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
1250 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
1251 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
1252 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
1253 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
1254 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
1255 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
1256 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
1257 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
1258 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
1259 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
1260 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
1261 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
1262 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
1263 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
1264 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
1265 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
1266 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
1267 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
1268 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
1269 |
+
-----END CERTIFICATE-----
|
1270 |
+
|
1271 |
+
NetLock Notary (Class A) Root
|
1272 |
+
=============================
|
1273 |
+
-----BEGIN CERTIFICATE-----
|
1274 |
+
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
1275 |
+
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1276 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
1277 |
+
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
1278 |
+
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
1279 |
+
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
1280 |
+
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
1281 |
+
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
1282 |
+
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
1283 |
+
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
1284 |
+
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
1285 |
+
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
1286 |
+
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
1287 |
+
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
1288 |
+
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
1289 |
+
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
1290 |
+
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
1291 |
+
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
1292 |
+
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
1293 |
+
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
1294 |
+
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
1295 |
+
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
1296 |
+
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
1297 |
+
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
1298 |
+
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
1299 |
+
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
1300 |
+
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
1301 |
+
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
1302 |
+
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
1303 |
+
8CgHrTwXZoi1/baI
|
1304 |
+
-----END CERTIFICATE-----
|
1305 |
+
|
1306 |
+
NetLock Business (Class B) Root
|
1307 |
+
===============================
|
1308 |
+
-----BEGIN CERTIFICATE-----
|
1309 |
+
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1310 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1311 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
1312 |
+
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
1313 |
+
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
1314 |
+
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
1315 |
+
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1316 |
+
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
1317 |
+
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
1318 |
+
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1319 |
+
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
1320 |
+
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
1321 |
+
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
1322 |
+
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
1323 |
+
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
1324 |
+
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
1325 |
+
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
1326 |
+
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
1327 |
+
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
1328 |
+
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
1329 |
+
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
1330 |
+
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
1331 |
+
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
1332 |
+
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
1333 |
+
-----END CERTIFICATE-----
|
1334 |
+
|
1335 |
+
NetLock Express (Class C) Root
|
1336 |
+
==============================
|
1337 |
+
-----BEGIN CERTIFICATE-----
|
1338 |
+
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1339 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1340 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
1341 |
+
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
1342 |
+
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1343 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
1344 |
+
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
1345 |
+
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
1346 |
+
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
1347 |
+
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
1348 |
+
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
1349 |
+
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
1350 |
+
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
1351 |
+
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
1352 |
+
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
1353 |
+
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
1354 |
+
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
1355 |
+
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
1356 |
+
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
1357 |
+
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
1358 |
+
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
1359 |
+
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
1360 |
+
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
1361 |
+
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
1362 |
+
-----END CERTIFICATE-----
|
1363 |
+
|
1364 |
+
XRamp Global CA Root
|
1365 |
+
====================
|
1366 |
+
-----BEGIN CERTIFICATE-----
|
1367 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
1368 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
1369 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1370 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
1371 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
1372 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1373 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
1374 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
1375 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
1376 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
1377 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
1378 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1379 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
1380 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
1381 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
1382 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1383 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
1384 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
1385 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1386 |
+
-----END CERTIFICATE-----
|
1387 |
+
|
1388 |
+
Go Daddy Class 2 CA
|
1389 |
+
===================
|
1390 |
+
-----BEGIN CERTIFICATE-----
|
1391 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
1392 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
1393 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
1394 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
1395 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
1396 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
1397 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
1398 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
1399 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
1400 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
1401 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
1402 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
1403 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
1404 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
1405 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
1406 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1407 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
1408 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
1409 |
+
vZ8=
|
1410 |
+
-----END CERTIFICATE-----
|
1411 |
+
|
1412 |
+
Starfield Class 2 CA
|
1413 |
+
====================
|
1414 |
+
-----BEGIN CERTIFICATE-----
|
1415 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
1416 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
1417 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
1418 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
1419 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
1420 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
1421 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
1422 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
1423 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
1424 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
1425 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
1426 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
1427 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
1428 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
1429 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
1430 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1431 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
1432 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
1433 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
1434 |
+
-----END CERTIFICATE-----
|
1435 |
+
|
1436 |
+
StartCom Certification Authority
|
1437 |
+
================================
|
1438 |
+
-----BEGIN CERTIFICATE-----
|
1439 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
1440 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
1441 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
1442 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
1443 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
1444 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
1445 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
1446 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
1447 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
1448 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
1449 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
1450 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
1451 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
1452 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
1453 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
1454 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1455 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
1456 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
1457 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
1458 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
1459 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
1460 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
1461 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
1462 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
1463 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
1464 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
1465 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
1466 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
1467 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
1468 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
1469 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
1470 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1471 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
1472 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
1473 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
1474 |
+
g14=
|
1475 |
+
-----END CERTIFICATE-----
|
1476 |
+
|
1477 |
+
Taiwan GRCA
|
1478 |
+
===========
|
1479 |
+
-----BEGIN CERTIFICATE-----
|
1480 |
+
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
|
1505 |
+
-----END CERTIFICATE-----
|
1506 |
+
|
1507 |
+
Firmaprofesional Root CA
|
1508 |
+
========================
|
1509 |
+
-----BEGIN CERTIFICATE-----
|
1510 |
+
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
1511 |
+
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
1512 |
+
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
1513 |
+
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
1514 |
+
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
1515 |
+
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
1516 |
+
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
1517 |
+
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
1518 |
+
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
1519 |
+
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
1520 |
+
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
1521 |
+
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
1522 |
+
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
1523 |
+
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
1524 |
+
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
1525 |
+
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
1526 |
+
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
1527 |
+
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
1528 |
+
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
1529 |
+
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
1530 |
+
-----END CERTIFICATE-----
|
1531 |
+
|
1532 |
+
Wells Fargo Root CA
|
1533 |
+
===================
|
1534 |
+
-----BEGIN CERTIFICATE-----
|
1535 |
+
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
1536 |
+
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1537 |
+
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1538 |
+
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
1539 |
+
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
1540 |
+
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
1541 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
1542 |
+
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
1543 |
+
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
1544 |
+
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
1545 |
+
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
1546 |
+
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
1547 |
+
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
1548 |
+
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
1549 |
+
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
1550 |
+
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
1551 |
+
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
1552 |
+
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
1553 |
+
-----END CERTIFICATE-----
|
1554 |
+
|
1555 |
+
Swisscom Root CA 1
|
1556 |
+
==================
|
1557 |
+
-----BEGIN CERTIFICATE-----
|
1558 |
+
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
|
1584 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
1585 |
+
-----END CERTIFICATE-----
|
1586 |
+
|
1587 |
+
DigiCert Assured ID Root CA
|
1588 |
+
===========================
|
1589 |
+
-----BEGIN CERTIFICATE-----
|
1590 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
1591 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1592 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
1593 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1594 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
1595 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
1596 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
1597 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
1598 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
1599 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
1600 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
1601 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
1602 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
1603 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
1604 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
1605 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1606 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1607 |
+
-----END CERTIFICATE-----
|
1608 |
+
|
1609 |
+
DigiCert Global Root CA
|
1610 |
+
=======================
|
1611 |
+
-----BEGIN CERTIFICATE-----
|
1612 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
1613 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1614 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
1615 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1616 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
1617 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
1618 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
1619 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
1620 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
1621 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
1622 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
1623 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
1624 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
1625 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
1626 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
1627 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1628 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1629 |
+
-----END CERTIFICATE-----
|
1630 |
+
|
1631 |
+
DigiCert High Assurance EV Root CA
|
1632 |
+
==================================
|
1633 |
+
-----BEGIN CERTIFICATE-----
|
1634 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
1635 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
1636 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
1637 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
1638 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
1639 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
1640 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
1641 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
1642 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
1643 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
1644 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
1645 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
1646 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
1647 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
1648 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
1649 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1650 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
1651 |
+
-----END CERTIFICATE-----
|
1652 |
+
|
1653 |
+
Certplus Class 2 Primary CA
|
1654 |
+
===========================
|
1655 |
+
-----BEGIN CERTIFICATE-----
|
1656 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
1657 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
1658 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
1659 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1660 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
1661 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
1662 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
1663 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
1664 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
1665 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
1666 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
1667 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
1668 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
1669 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
1670 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
1671 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
1672 |
+
l7+ijrRU
|
1673 |
+
-----END CERTIFICATE-----
|
1674 |
+
|
1675 |
+
DST Root CA X3
|
1676 |
+
==============
|
1677 |
+
-----BEGIN CERTIFICATE-----
|
1678 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
1679 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
1680 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
1681 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
1682 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
1683 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
1684 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
1685 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
1686 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
1687 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
1688 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
1689 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
1690 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
1691 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
1692 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
1693 |
+
-----END CERTIFICATE-----
|
1694 |
+
|
1695 |
+
DST ACES CA X6
|
1696 |
+
==============
|
1697 |
+
-----BEGIN CERTIFICATE-----
|
1698 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
1699 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
1700 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
1701 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
1702 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1703 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
1704 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
1705 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
1706 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
1707 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
1708 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
1709 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
1710 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
1711 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
1712 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
1713 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
1714 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
1715 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
1716 |
+
oKfN5XozNmr6mis=
|
1717 |
+
-----END CERTIFICATE-----
|
1718 |
+
|
1719 |
+
TURKTRUST Certificate Services Provider Root 1
|
1720 |
+
==============================================
|
1721 |
+
-----BEGIN CERTIFICATE-----
|
1722 |
+
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1723 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
1724 |
+
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
1725 |
+
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
1726 |
+
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
1727 |
+
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
1728 |
+
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
1729 |
+
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1730 |
+
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
1731 |
+
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
1732 |
+
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
1733 |
+
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
1734 |
+
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
1735 |
+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
1736 |
+
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
1737 |
+
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
1738 |
+
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
1739 |
+
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
1740 |
+
-----END CERTIFICATE-----
|
1741 |
+
|
1742 |
+
TURKTRUST Certificate Services Provider Root 2
|
1743 |
+
==============================================
|
1744 |
+
-----BEGIN CERTIFICATE-----
|
1745 |
+
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1746 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
1747 |
+
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
1748 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
1749 |
+
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
1750 |
+
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
1751 |
+
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
1752 |
+
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
1753 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
1754 |
+
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
1755 |
+
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
1756 |
+
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
1757 |
+
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
1758 |
+
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
1759 |
+
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
1760 |
+
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
1761 |
+
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
1762 |
+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
1763 |
+
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
1764 |
+
UrbnBEI=
|
1765 |
+
-----END CERTIFICATE-----
|
1766 |
+
|
1767 |
+
SwissSign Gold CA - G2
|
1768 |
+
======================
|
1769 |
+
-----BEGIN CERTIFICATE-----
|
1770 |
+
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
|
1796 |
+
-----END CERTIFICATE-----
|
1797 |
+
|
1798 |
+
SwissSign Silver CA - G2
|
1799 |
+
========================
|
1800 |
+
-----BEGIN CERTIFICATE-----
|
1801 |
+
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
|
1827 |
+
-----END CERTIFICATE-----
|
1828 |
+
|
1829 |
+
GeoTrust Primary Certification Authority
|
1830 |
+
========================================
|
1831 |
+
-----BEGIN CERTIFICATE-----
|
1832 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1833 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1834 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1835 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1836 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1837 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1838 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1839 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1840 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1841 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1842 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1843 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1844 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1845 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1846 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
1847 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
1848 |
+
-----END CERTIFICATE-----
|
1849 |
+
|
1850 |
+
thawte Primary Root CA
|
1851 |
+
======================
|
1852 |
+
-----BEGIN CERTIFICATE-----
|
1853 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
1854 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
1855 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
1856 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
1857 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
1858 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
1859 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
1860 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
1861 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
1862 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
1863 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
1864 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
1865 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
1866 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
1867 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
1868 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
1869 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
1870 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
1871 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
1872 |
+
-----END CERTIFICATE-----
|
1873 |
+
|
1874 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
1875 |
+
============================================================
|
1876 |
+
-----BEGIN CERTIFICATE-----
|
1877 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
1878 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
1879 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
1880 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
1881 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
1882 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
1883 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
1884 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
1885 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
1886 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
1887 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
1888 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
1889 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
1890 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
1891 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
1892 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
1893 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
1894 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
1895 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
1896 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
1897 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
1898 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
1899 |
+
-----END CERTIFICATE-----
|
1900 |
+
|
1901 |
+
SecureTrust CA
|
1902 |
+
==============
|
1903 |
+
-----BEGIN CERTIFICATE-----
|
1904 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
1905 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
1906 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
1907 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
1908 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
1909 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
1910 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
1911 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
1912 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
1913 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
1914 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
1915 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
1916 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
1917 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
1918 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
1919 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
1920 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
1921 |
+
-----END CERTIFICATE-----
|
1922 |
+
|
1923 |
+
Secure Global CA
|
1924 |
+
================
|
1925 |
+
-----BEGIN CERTIFICATE-----
|
1926 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
1927 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
1928 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
1929 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
1930 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
1931 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
1932 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
1933 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
1934 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
1935 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1936 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
1937 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
1938 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
1939 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
1940 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
1941 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
1942 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
1943 |
+
-----END CERTIFICATE-----
|
1944 |
+
|
1945 |
+
COMODO Certification Authority
|
1946 |
+
==============================
|
1947 |
+
-----BEGIN CERTIFICATE-----
|
1948 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
1949 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
1950 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
1951 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
1952 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
1953 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
1954 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
1955 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
1956 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
1957 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
1958 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
1959 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
1960 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
1961 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
1962 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
1963 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
1964 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
1965 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
1966 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
1967 |
+
-----END CERTIFICATE-----
|
1968 |
+
|
1969 |
+
Network Solutions Certificate Authority
|
1970 |
+
=======================================
|
1971 |
+
-----BEGIN CERTIFICATE-----
|
1972 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
1973 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
1974 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
1975 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
1976 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
1977 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
1978 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
1979 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
1980 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
1981 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
1982 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
1983 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
1984 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
1985 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
1986 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
1987 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
1988 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
1989 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
1990 |
+
-----END CERTIFICATE-----
|
1991 |
+
|
1992 |
+
WellsSecure Public Root Certificate Authority
|
1993 |
+
=============================================
|
1994 |
+
-----BEGIN CERTIFICATE-----
|
1995 |
+
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
1996 |
+
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
1997 |
+
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1998 |
+
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
1999 |
+
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
2000 |
+
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2001 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
2002 |
+
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
2003 |
+
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
2004 |
+
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
2005 |
+
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
2006 |
+
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
2007 |
+
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
2008 |
+
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
2009 |
+
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
2010 |
+
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
2011 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
2012 |
+
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
2013 |
+
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
2014 |
+
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
2015 |
+
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
2016 |
+
tylv2G0xffX8oRAHh84vWdw+WNs=
|
2017 |
+
-----END CERTIFICATE-----
|
2018 |
+
|
2019 |
+
COMODO ECC Certification Authority
|
2020 |
+
==================================
|
2021 |
+
-----BEGIN CERTIFICATE-----
|
2022 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
2023 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
2024 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
2025 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
2026 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
2027 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
2028 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
2029 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
2030 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
2031 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
2032 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
2033 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
2034 |
+
-----END CERTIFICATE-----
|
2035 |
+
|
2036 |
+
IGC/A
|
2037 |
+
=====
|
2038 |
+
-----BEGIN CERTIFICATE-----
|
2039 |
+
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
2040 |
+
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
2041 |
+
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
2042 |
+
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
2043 |
+
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
2044 |
+
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
2045 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
2046 |
+
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
2047 |
+
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
2048 |
+
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
2049 |
+
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
2050 |
+
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
2051 |
+
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
2052 |
+
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
2053 |
+
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
2054 |
+
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
2055 |
+
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
2056 |
+
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
2057 |
+
0mBWWg==
|
2058 |
+
-----END CERTIFICATE-----
|
2059 |
+
|
2060 |
+
Security Communication EV RootCA1
|
2061 |
+
=================================
|
2062 |
+
-----BEGIN CERTIFICATE-----
|
2063 |
+
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
2064 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
2065 |
+
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
2066 |
+
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
2067 |
+
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2068 |
+
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
2069 |
+
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
2070 |
+
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
2071 |
+
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
2072 |
+
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
2073 |
+
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
2074 |
+
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
2075 |
+
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
2076 |
+
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
2077 |
+
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
2078 |
+
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
2079 |
+
-----END CERTIFICATE-----
|
2080 |
+
|
2081 |
+
OISTE WISeKey Global Root GA CA
|
2082 |
+
===============================
|
2083 |
+
-----BEGIN CERTIFICATE-----
|
2084 |
+
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
2085 |
+
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
2086 |
+
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
2087 |
+
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
2088 |
+
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
2089 |
+
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
2090 |
+
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
2091 |
+
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
2092 |
+
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
2093 |
+
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
2094 |
+
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
2095 |
+
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
2096 |
+
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2097 |
+
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
2098 |
+
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
2099 |
+
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
2100 |
+
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
2101 |
+
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
2102 |
+
-----END CERTIFICATE-----
|
2103 |
+
|
2104 |
+
Microsec e-Szigno Root CA
|
2105 |
+
=========================
|
2106 |
+
-----BEGIN CERTIFICATE-----
|
2107 |
+
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
2108 |
+
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
2109 |
+
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
2110 |
+
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
2111 |
+
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
2112 |
+
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
2113 |
+
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
2114 |
+
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
2115 |
+
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
2116 |
+
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
2117 |
+
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
2118 |
+
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
2119 |
+
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
2120 |
+
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
2121 |
+
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
2122 |
+
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
2123 |
+
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
2124 |
+
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
2125 |
+
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
2126 |
+
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
2127 |
+
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
2128 |
+
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
2129 |
+
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
2130 |
+
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
2131 |
+
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
2132 |
+
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
2133 |
+
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
2134 |
+
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
2135 |
+
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
2136 |
+
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
2137 |
+
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
2138 |
+
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
2139 |
+
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
2140 |
+
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
2141 |
+
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
2142 |
+
-----END CERTIFICATE-----
|
2143 |
+
|
2144 |
+
Certigna
|
2145 |
+
========
|
2146 |
+
-----BEGIN CERTIFICATE-----
|
2147 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
2148 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
2149 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
2150 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
2151 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
2152 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
2153 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
2154 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
2155 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
2156 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
2157 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
2158 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
2159 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
2160 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
2161 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
2162 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
2163 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
2164 |
+
-----END CERTIFICATE-----
|
2165 |
+
|
2166 |
+
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
2167 |
+
======================================
|
2168 |
+
-----BEGIN CERTIFICATE-----
|
2169 |
+
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
2170 |
+
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
2171 |
+
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
2172 |
+
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
2173 |
+
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
2174 |
+
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
2175 |
+
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
2176 |
+
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
2177 |
+
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
2178 |
+
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
2179 |
+
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
2180 |
+
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
2181 |
+
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
2182 |
+
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
2183 |
+
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
2184 |
+
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
2185 |
+
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
2186 |
+
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
2187 |
+
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
2188 |
+
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
2189 |
+
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
2190 |
+
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
2191 |
+
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
2192 |
+
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
2193 |
+
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
2194 |
+
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
2195 |
+
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
2196 |
+
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
2197 |
+
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
2198 |
+
-----END CERTIFICATE-----
|
2199 |
+
|
2200 |
+
TC TrustCenter Class 2 CA II
|
2201 |
+
============================
|
2202 |
+
-----BEGIN CERTIFICATE-----
|
2203 |
+
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2204 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2205 |
+
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
|
2206 |
+
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2207 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
|
2208 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2209 |
+
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
|
2210 |
+
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
|
2211 |
+
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
|
2212 |
+
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
|
2213 |
+
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2214 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
|
2215 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2216 |
+
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2217 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2218 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2219 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
|
2220 |
+
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
|
2221 |
+
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
|
2222 |
+
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
|
2223 |
+
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
|
2224 |
+
vQ==
|
2225 |
+
-----END CERTIFICATE-----
|
2226 |
+
|
2227 |
+
TC TrustCenter Class 3 CA II
|
2228 |
+
============================
|
2229 |
+
-----BEGIN CERTIFICATE-----
|
2230 |
+
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2231 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2232 |
+
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
|
2233 |
+
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2234 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
|
2235 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2236 |
+
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
|
2237 |
+
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
|
2238 |
+
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
|
2239 |
+
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
|
2240 |
+
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2241 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
|
2242 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2243 |
+
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2244 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2245 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2246 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
|
2247 |
+
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
|
2248 |
+
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
|
2249 |
+
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
|
2250 |
+
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
|
2251 |
+
5A==
|
2252 |
+
-----END CERTIFICATE-----
|
2253 |
+
|
2254 |
+
TC TrustCenter Universal CA I
|
2255 |
+
=============================
|
2256 |
+
-----BEGIN CERTIFICATE-----
|
2257 |
+
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
|
2258 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2259 |
+
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
|
2260 |
+
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
|
2261 |
+
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
|
2262 |
+
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
2263 |
+
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
|
2264 |
+
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
|
2265 |
+
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
|
2266 |
+
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
|
2267 |
+
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
|
2268 |
+
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2269 |
+
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
|
2270 |
+
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
|
2271 |
+
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
|
2272 |
+
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
2273 |
+
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
|
2274 |
+
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
2275 |
+
-----END CERTIFICATE-----
|
2276 |
+
|
2277 |
+
Deutsche Telekom Root CA 2
|
2278 |
+
==========================
|
2279 |
+
-----BEGIN CERTIFICATE-----
|
2280 |
+
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
2281 |
+
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
2282 |
+
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
2283 |
+
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
2284 |
+
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
2285 |
+
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
2286 |
+
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
2287 |
+
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
2288 |
+
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
2289 |
+
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
2290 |
+
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
2291 |
+
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
2292 |
+
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
2293 |
+
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
2294 |
+
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
2295 |
+
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
2296 |
+
Cm26OWMohpLzGITY+9HPBVZkVw==
|
2297 |
+
-----END CERTIFICATE-----
|
2298 |
+
|
2299 |
+
ComSign Secured CA
|
2300 |
+
==================
|
2301 |
+
-----BEGIN CERTIFICATE-----
|
2302 |
+
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
|
2303 |
+
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
|
2304 |
+
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
|
2305 |
+
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2306 |
+
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
|
2307 |
+
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
|
2308 |
+
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
|
2309 |
+
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
|
2310 |
+
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
|
2311 |
+
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
|
2312 |
+
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
|
2313 |
+
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
|
2314 |
+
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
|
2315 |
+
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
|
2316 |
+
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
|
2317 |
+
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
|
2318 |
+
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
|
2319 |
+
-----END CERTIFICATE-----
|
2320 |
+
|
2321 |
+
Cybertrust Global Root
|
2322 |
+
======================
|
2323 |
+
-----BEGIN CERTIFICATE-----
|
2324 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
2325 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
2326 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
2327 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
2328 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
2329 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
2330 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
2331 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
2332 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
2333 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
2334 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
2335 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
2336 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
2337 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
2338 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
2339 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
2340 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
2341 |
+
-----END CERTIFICATE-----
|
2342 |
+
|
2343 |
+
ePKI Root Certification Authority
|
2344 |
+
=================================
|
2345 |
+
-----BEGIN CERTIFICATE-----
|
2346 |
+
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
|
2372 |
+
-----END CERTIFICATE-----
|
2373 |
+
|
2374 |
+
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
2375 |
+
=============================================================================================================================
|
2376 |
+
-----BEGIN CERTIFICATE-----
|
2377 |
+
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
2378 |
+
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
2379 |
+
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
2380 |
+
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
2381 |
+
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
2382 |
+
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
2383 |
+
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
2384 |
+
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
2385 |
+
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
2386 |
+
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
2387 |
+
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
2388 |
+
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
2389 |
+
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
2390 |
+
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
2391 |
+
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
2392 |
+
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
2393 |
+
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
2394 |
+
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
2395 |
+
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
2396 |
+
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
2397 |
+
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
2398 |
+
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
2399 |
+
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
2400 |
+
-----END CERTIFICATE-----
|
2401 |
+
|
2402 |
+
Buypass Class 2 CA 1
|
2403 |
+
====================
|
2404 |
+
-----BEGIN CERTIFICATE-----
|
2405 |
+
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2406 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
2407 |
+
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2408 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
2409 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
2410 |
+
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
2411 |
+
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
2412 |
+
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
2413 |
+
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
2414 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
2415 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
2416 |
+
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
2417 |
+
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
2418 |
+
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
2419 |
+
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
2420 |
+
-----END CERTIFICATE-----
|
2421 |
+
|
2422 |
+
Buypass Class 3 CA 1
|
2423 |
+
====================
|
2424 |
+
-----BEGIN CERTIFICATE-----
|
2425 |
+
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2426 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
|
2427 |
+
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2428 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
|
2429 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
|
2430 |
+
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
|
2431 |
+
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
|
2432 |
+
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
|
2433 |
+
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
|
2434 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
|
2435 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
|
2436 |
+
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
|
2437 |
+
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
|
2438 |
+
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
2439 |
+
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
2440 |
+
-----END CERTIFICATE-----
|
2441 |
+
|
2442 |
+
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
2443 |
+
==========================================================================
|
2444 |
+
-----BEGIN CERTIFICATE-----
|
2445 |
+
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
|
2472 |
+
-----END CERTIFICATE-----
|
2473 |
+
|
2474 |
+
certSIGN ROOT CA
|
2475 |
+
================
|
2476 |
+
-----BEGIN CERTIFICATE-----
|
2477 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
2478 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
2479 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
2480 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
2481 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
2482 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
2483 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
2484 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
2485 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
2486 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
2487 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
2488 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
2489 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
2490 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
2491 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
2492 |
+
-----END CERTIFICATE-----
|
2493 |
+
|
2494 |
+
CNNIC ROOT
|
2495 |
+
==========
|
2496 |
+
-----BEGIN CERTIFICATE-----
|
2497 |
+
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
2498 |
+
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
2499 |
+
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
2500 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
2501 |
+
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
2502 |
+
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
2503 |
+
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
2504 |
+
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
2505 |
+
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
2506 |
+
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
2507 |
+
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
2508 |
+
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
2509 |
+
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
2510 |
+
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
2511 |
+
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
2512 |
+
mxE=
|
2513 |
+
-----END CERTIFICATE-----
|
2514 |
+
|
2515 |
+
ApplicationCA - Japanese Government
|
2516 |
+
===================================
|
2517 |
+
-----BEGIN CERTIFICATE-----
|
2518 |
+
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
2519 |
+
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
2520 |
+
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
2521 |
+
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2522 |
+
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
2523 |
+
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
2524 |
+
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
2525 |
+
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
2526 |
+
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
2527 |
+
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
2528 |
+
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
2529 |
+
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
2530 |
+
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
2531 |
+
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
2532 |
+
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
2533 |
+
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
2534 |
+
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
2535 |
+
-----END CERTIFICATE-----
|
2536 |
+
|
2537 |
+
GeoTrust Primary Certification Authority - G3
|
2538 |
+
=============================================
|
2539 |
+
-----BEGIN CERTIFICATE-----
|
2540 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
2541 |
+
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
2542 |
+
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
2543 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
2544 |
+
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
2545 |
+
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
2546 |
+
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
2547 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
2548 |
+
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
2549 |
+
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
2550 |
+
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
2551 |
+
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
2552 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
2553 |
+
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
2554 |
+
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
2555 |
+
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
2556 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
2557 |
+
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
2558 |
+
-----END CERTIFICATE-----
|
2559 |
+
|
2560 |
+
thawte Primary Root CA - G2
|
2561 |
+
===========================
|
2562 |
+
-----BEGIN CERTIFICATE-----
|
2563 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
2564 |
+
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
2565 |
+
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
2566 |
+
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
2567 |
+
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
2568 |
+
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
2569 |
+
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
2570 |
+
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
2571 |
+
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
2572 |
+
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
2573 |
+
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
2574 |
+
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
2575 |
+
-----END CERTIFICATE-----
|
2576 |
+
|
2577 |
+
thawte Primary Root CA - G3
|
2578 |
+
===========================
|
2579 |
+
-----BEGIN CERTIFICATE-----
|
2580 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
2581 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2582 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2583 |
+
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
2584 |
+
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
2585 |
+
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
2586 |
+
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
2587 |
+
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2588 |
+
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
2589 |
+
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
2590 |
+
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
2591 |
+
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
2592 |
+
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
2593 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
2594 |
+
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
2595 |
+
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
2596 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
2597 |
+
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
2598 |
+
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
2599 |
+
-----END CERTIFICATE-----
|
2600 |
+
|
2601 |
+
GeoTrust Primary Certification Authority - G2
|
2602 |
+
=============================================
|
2603 |
+
-----BEGIN CERTIFICATE-----
|
2604 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
2605 |
+
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
2606 |
+
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
2607 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
2608 |
+
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
2609 |
+
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
2610 |
+
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
2611 |
+
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
2612 |
+
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
2613 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
2614 |
+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
2615 |
+
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
2616 |
+
npaqBA+K
|
2617 |
+
-----END CERTIFICATE-----
|
2618 |
+
|
2619 |
+
VeriSign Universal Root Certification Authority
|
2620 |
+
===============================================
|
2621 |
+
-----BEGIN CERTIFICATE-----
|
2622 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
2623 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2624 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2625 |
+
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
2626 |
+
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
2627 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
2628 |
+
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
2629 |
+
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
2630 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
2631 |
+
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
2632 |
+
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
2633 |
+
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
2634 |
+
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
2635 |
+
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
2636 |
+
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
2637 |
+
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
2638 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
2639 |
+
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
2640 |
+
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
2641 |
+
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
2642 |
+
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
2643 |
+
mJO37M2CYfE45k+XmCpajQ==
|
2644 |
+
-----END CERTIFICATE-----
|
2645 |
+
|
2646 |
+
VeriSign Class 3 Public Primary Certification Authority - G4
|
2647 |
+
============================================================
|
2648 |
+
-----BEGIN CERTIFICATE-----
|
2649 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
2650 |
+
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
2651 |
+
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
2652 |
+
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
2653 |
+
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
2654 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
2655 |
+
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
2656 |
+
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2657 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
2658 |
+
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
2659 |
+
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
2660 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
2661 |
+
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
2662 |
+
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
2663 |
+
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
2664 |
+
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
2665 |
+
-----END CERTIFICATE-----
|
2666 |
+
|
2667 |
+
NetLock Arany (Class Gold) Főtanúsítvány
|
2668 |
+
============================================
|
2669 |
+
-----BEGIN CERTIFICATE-----
|
2670 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
2671 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
2672 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
2673 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
2674 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
2675 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
2676 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
2677 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
2678 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
2679 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
2680 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
2681 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
2682 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
2683 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
2684 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
2685 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
2686 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
2687 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
2688 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
2689 |
+
-----END CERTIFICATE-----
|
2690 |
+
|
2691 |
+
Staat der Nederlanden Root CA - G2
|
2692 |
+
==================================
|
2693 |
+
-----BEGIN CERTIFICATE-----
|
2694 |
+
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
|
2720 |
+
66+KAQ==
|
2721 |
+
-----END CERTIFICATE-----
|
2722 |
+
|
2723 |
+
CA Disig
|
2724 |
+
========
|
2725 |
+
-----BEGIN CERTIFICATE-----
|
2726 |
+
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
2727 |
+
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
2728 |
+
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
2729 |
+
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
2730 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
2731 |
+
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
2732 |
+
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
2733 |
+
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
2734 |
+
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
2735 |
+
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
2736 |
+
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
2737 |
+
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
2738 |
+
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
2739 |
+
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
2740 |
+
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
2741 |
+
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
2742 |
+
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
2743 |
+
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
2744 |
+
4Z7CRneC9VkGjCFMhwnN5ag=
|
2745 |
+
-----END CERTIFICATE-----
|
2746 |
+
|
2747 |
+
Juur-SK
|
2748 |
+
=======
|
2749 |
+
-----BEGIN CERTIFICATE-----
|
2750 |
+
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
2751 |
+
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
2752 |
+
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
2753 |
+
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
2754 |
+
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2755 |
+
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
2756 |
+
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
2757 |
+
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
2758 |
+
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
2759 |
+
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
2760 |
+
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
2761 |
+
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
2762 |
+
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
2763 |
+
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
2764 |
+
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
2765 |
+
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
2766 |
+
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
2767 |
+
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
2768 |
+
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
2769 |
+
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
2770 |
+
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
2771 |
+
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
2772 |
+
yyqcjg==
|
2773 |
+
-----END CERTIFICATE-----
|
2774 |
+
|
2775 |
+
Hongkong Post Root CA 1
|
2776 |
+
=======================
|
2777 |
+
-----BEGIN CERTIFICATE-----
|
2778 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
2779 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
2780 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
2781 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
2782 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
2783 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
2784 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
2785 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
2786 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
2787 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
2788 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
2789 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
2790 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
2791 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
2792 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
2793 |
+
-----END CERTIFICATE-----
|
2794 |
+
|
2795 |
+
SecureSign RootCA11
|
2796 |
+
===================
|
2797 |
+
-----BEGIN CERTIFICATE-----
|
2798 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
2799 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
2800 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
2801 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
2802 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
2803 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
2804 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
2805 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
2806 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
2807 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
2808 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
2809 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
2810 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
2811 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
2812 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
2813 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
2814 |
+
-----END CERTIFICATE-----
|
2815 |
+
|
2816 |
+
ACEDICOM Root
|
2817 |
+
=============
|
2818 |
+
-----BEGIN CERTIFICATE-----
|
2819 |
+
MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD
|
2820 |
+
T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4
|
2821 |
+
MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG
|
2822 |
+
A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF
|
2823 |
+
AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk
|
2824 |
+
WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD
|
2825 |
+
YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew
|
2826 |
+
MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb
|
2827 |
+
m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk
|
2828 |
+
HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT
|
2829 |
+
xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2
|
2830 |
+
3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9
|
2831 |
+
2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq
|
2832 |
+
TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz
|
2833 |
+
4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU
|
2834 |
+
9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv
|
2835 |
+
bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg
|
2836 |
+
aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP
|
2837 |
+
eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk
|
2838 |
+
zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1
|
2839 |
+
ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI
|
2840 |
+
KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq
|
2841 |
+
nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE
|
2842 |
+
I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp
|
2843 |
+
MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
|
2844 |
+
tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
|
2845 |
+
-----END CERTIFICATE-----
|
2846 |
+
|
2847 |
+
Verisign Class 3 Public Primary Certification Authority
|
2848 |
+
=======================================================
|
2849 |
+
-----BEGIN CERTIFICATE-----
|
2850 |
+
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
2851 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2852 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
2853 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
2854 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
2855 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
2856 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
2857 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
2858 |
+
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
2859 |
+
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
2860 |
+
D/xwzoiQ
|
2861 |
+
-----END CERTIFICATE-----
|
2862 |
+
|
2863 |
+
Microsec e-Szigno Root CA 2009
|
2864 |
+
==============================
|
2865 |
+
-----BEGIN CERTIFICATE-----
|
2866 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
2867 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
2868 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
2869 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
2870 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
2871 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
2872 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
2873 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
2874 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
2875 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
2876 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
2877 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
2878 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
2879 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
2880 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
2881 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
2882 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
2883 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
2884 |
+
LXpUq3DDfSJlgnCW
|
2885 |
+
-----END CERTIFICATE-----
|
2886 |
+
|
2887 |
+
E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
|
2888 |
+
===================================================
|
2889 |
+
-----BEGIN CERTIFICATE-----
|
2890 |
+
MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
2891 |
+
EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
|
2892 |
+
ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
|
2893 |
+
MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
|
2894 |
+
cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
|
2895 |
+
aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2896 |
+
AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
|
2897 |
+
8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
|
2898 |
+
jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
|
2899 |
+
JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
|
2900 |
+
9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
2901 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
|
2902 |
+
SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
|
2903 |
+
F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
|
2904 |
+
D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
|
2905 |
+
Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
|
2906 |
+
fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
|
2907 |
+
-----END CERTIFICATE-----
|
2908 |
+
|
2909 |
+
GlobalSign Root CA - R3
|
2910 |
+
=======================
|
2911 |
+
-----BEGIN CERTIFICATE-----
|
2912 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
2913 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
2914 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
2915 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
2916 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
2917 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
2918 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
2919 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
2920 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
2921 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
2922 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
2923 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
2924 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
2925 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
2926 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
2927 |
+
kpeDMdmztcpHWD9f
|
2928 |
+
-----END CERTIFICATE-----
|
2929 |
+
|
2930 |
+
TC TrustCenter Universal CA III
|
2931 |
+
===============================
|
2932 |
+
-----BEGIN CERTIFICATE-----
|
2933 |
+
MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
|
2934 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2935 |
+
IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
|
2936 |
+
Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
|
2937 |
+
QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
|
2938 |
+
KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
|
2939 |
+
AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
|
2940 |
+
QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
|
2941 |
+
juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
|
2942 |
+
CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
|
2943 |
+
M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
|
2944 |
+
A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
|
2945 |
+
BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
|
2946 |
+
g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
|
2947 |
+
KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
|
2948 |
+
BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
|
2949 |
+
CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
|
2950 |
+
woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
|
2951 |
+
-----END CERTIFICATE-----
|
2952 |
+
|
2953 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
2954 |
+
=========================================================
|
2955 |
+
-----BEGIN CERTIFICATE-----
|
2956 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
2957 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
2958 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
2959 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
2960 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
2961 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
2962 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
2963 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
2964 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
2965 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
2966 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
2967 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
2968 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
2969 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
2970 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
2971 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
2972 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
2973 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
2974 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
2975 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
2976 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
2977 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
2978 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
2979 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
2980 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
2981 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
2982 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
2983 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
2984 |
+
-----END CERTIFICATE-----
|
2985 |
+
|
2986 |
+
Izenpe.com
|
2987 |
+
==========
|
2988 |
+
-----BEGIN CERTIFICATE-----
|
2989 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
2990 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
2991 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
2992 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
2993 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
2994 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
2995 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
2996 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
2997 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
2998 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
2999 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
3000 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
3001 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
3002 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
3003 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
3004 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
3005 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3006 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
3007 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
3008 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
3009 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
3010 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
3011 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
3012 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
3013 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
3014 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
3015 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
3016 |
+
-----END CERTIFICATE-----
|
3017 |
+
|
3018 |
+
Chambers of Commerce Root - 2008
|
3019 |
+
================================
|
3020 |
+
-----BEGIN CERTIFICATE-----
|
3021 |
+
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
3022 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3023 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3024 |
+
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
3025 |
+
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
3026 |
+
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
3027 |
+
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
3028 |
+
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
3029 |
+
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
3030 |
+
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
3031 |
+
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
3032 |
+
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
3033 |
+
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
3034 |
+
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
3035 |
+
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
3036 |
+
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
3037 |
+
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
3038 |
+
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
3039 |
+
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
3040 |
+
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
3041 |
+
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
3042 |
+
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
3043 |
+
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
3044 |
+
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
3045 |
+
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
3046 |
+
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
3047 |
+
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
3048 |
+
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
3049 |
+
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
3050 |
+
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
3051 |
+
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
3052 |
+
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
3053 |
+
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
3054 |
+
-----END CERTIFICATE-----
|
3055 |
+
|
3056 |
+
Global Chambersign Root - 2008
|
3057 |
+
==============================
|
3058 |
+
-----BEGIN CERTIFICATE-----
|
3059 |
+
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
3060 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3061 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3062 |
+
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
3063 |
+
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
3064 |
+
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
3065 |
+
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
3066 |
+
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
3067 |
+
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
3068 |
+
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
3069 |
+
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
3070 |
+
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
3071 |
+
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
3072 |
+
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
3073 |
+
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
3074 |
+
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
3075 |
+
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
3076 |
+
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
3077 |
+
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
3078 |
+
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
3079 |
+
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
3080 |
+
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
3081 |
+
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
3082 |
+
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
3083 |
+
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
3084 |
+
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
3085 |
+
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
3086 |
+
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
3087 |
+
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
3088 |
+
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
3089 |
+
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
3090 |
+
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
3091 |
+
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
3092 |
+
-----END CERTIFICATE-----
|
3093 |
+
|
3094 |
+
Go Daddy Root Certificate Authority - G2
|
3095 |
+
========================================
|
3096 |
+
-----BEGIN CERTIFICATE-----
|
3097 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3098 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
3099 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
3100 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
3101 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
3102 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
3103 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
3104 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
3105 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
3106 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
3107 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
3108 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
3109 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
3110 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
3111 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
3112 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
3113 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
3114 |
+
-----END CERTIFICATE-----
|
3115 |
+
|
3116 |
+
Starfield Root Certificate Authority - G2
|
3117 |
+
=========================================
|
3118 |
+
-----BEGIN CERTIFICATE-----
|
3119 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3120 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3121 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
3122 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
3123 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
3124 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
3125 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
3126 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
3127 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
3128 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
3129 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
3130 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3131 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
3132 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
3133 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
3134 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
3135 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
3136 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
3137 |
+
-----END CERTIFICATE-----
|
3138 |
+
|
3139 |
+
Starfield Services Root Certificate Authority - G2
|
3140 |
+
==================================================
|
3141 |
+
-----BEGIN CERTIFICATE-----
|
3142 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3143 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3144 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
3145 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
3146 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
3147 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
3148 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3149 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
3150 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
3151 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
3152 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
3153 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
3154 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
3155 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
3156 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
3157 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
3158 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
3159 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
3160 |
+
-----END CERTIFICATE-----
|
3161 |
+
|
3162 |
+
AffirmTrust Commercial
|
3163 |
+
======================
|
3164 |
+
-----BEGIN CERTIFICATE-----
|
3165 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3166 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
3167 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3168 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
3169 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
3170 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
3171 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
3172 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
3173 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
3174 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3175 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
3176 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
3177 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
3178 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
3179 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
3180 |
+
-----END CERTIFICATE-----
|
3181 |
+
|
3182 |
+
AffirmTrust Networking
|
3183 |
+
======================
|
3184 |
+
-----BEGIN CERTIFICATE-----
|
3185 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3186 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
3187 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3188 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
3189 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
3190 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
3191 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
3192 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
3193 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
3194 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3195 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
3196 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
3197 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
3198 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
3199 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
3200 |
+
-----END CERTIFICATE-----
|
3201 |
+
|
3202 |
+
AffirmTrust Premium
|
3203 |
+
===================
|
3204 |
+
-----BEGIN CERTIFICATE-----
|
3205 |
+
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
|
3229 |
+
-----END CERTIFICATE-----
|
3230 |
+
|
3231 |
+
AffirmTrust Premium ECC
|
3232 |
+
=======================
|
3233 |
+
-----BEGIN CERTIFICATE-----
|
3234 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
3235 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
3236 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
3237 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
3238 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
3239 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
3240 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
3241 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
3242 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
3243 |
+
eQ==
|
3244 |
+
-----END CERTIFICATE-----
|
3245 |
+
|
3246 |
+
Certum Trusted Network CA
|
3247 |
+
=========================
|
3248 |
+
-----BEGIN CERTIFICATE-----
|
3249 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
3250 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
3251 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
3252 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
3253 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3254 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
3255 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
3256 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
3257 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
3258 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
3259 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
3260 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
3261 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
3262 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
3263 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
3264 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
3265 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
3266 |
+
-----END CERTIFICATE-----
|
3267 |
+
|
3268 |
+
Certinomis - Autorité Racine
|
3269 |
+
=============================
|
3270 |
+
-----BEGIN CERTIFICATE-----
|
3271 |
+
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
|
3296 |
+
vgt2Fl43N+bYdJeimUV5
|
3297 |
+
-----END CERTIFICATE-----
|
3298 |
+
|
3299 |
+
Root CA Generalitat Valenciana
|
3300 |
+
==============================
|
3301 |
+
-----BEGIN CERTIFICATE-----
|
3302 |
+
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
3303 |
+
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
3304 |
+
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
3305 |
+
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
3306 |
+
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
3307 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
3308 |
+
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
3309 |
+
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
3310 |
+
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
3311 |
+
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
3312 |
+
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
3313 |
+
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
3314 |
+
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
3315 |
+
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
3316 |
+
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
3317 |
+
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
3318 |
+
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
3319 |
+
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
3320 |
+
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
3321 |
+
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
3322 |
+
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
3323 |
+
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
3324 |
+
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
3325 |
+
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
3326 |
+
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
3327 |
+
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
3328 |
+
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
3329 |
+
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
3330 |
+
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
3331 |
+
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
3332 |
+
-----END CERTIFICATE-----
|
3333 |
+
|
3334 |
+
A-Trust-nQual-03
|
3335 |
+
================
|
3336 |
+
-----BEGIN CERTIFICATE-----
|
3337 |
+
MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
|
3338 |
+
Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
|
3339 |
+
a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
|
3340 |
+
dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
|
3341 |
+
RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
|
3342 |
+
ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
|
3343 |
+
c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
|
3344 |
+
zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
|
3345 |
+
yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
|
3346 |
+
SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
|
3347 |
+
iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
|
3348 |
+
cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
|
3349 |
+
eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
|
3350 |
+
ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
|
3351 |
+
sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
|
3352 |
+
JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
|
3353 |
+
mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
|
3354 |
+
ahq97BvIxYSazQ==
|
3355 |
+
-----END CERTIFICATE-----
|
3356 |
+
|
3357 |
+
TWCA Root Certification Authority
|
3358 |
+
=================================
|
3359 |
+
-----BEGIN CERTIFICATE-----
|
3360 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
3361 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
3362 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
3363 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
3364 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3365 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
3366 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
3367 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
3368 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
3369 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
3370 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
3371 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
3372 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
3373 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
3374 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
3375 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
3376 |
+
-----END CERTIFICATE-----
|
apis/facebook.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2011 Facebook, Inc. VERSION Facebook PHP SDK (v.3.1.1) 2012-02-16
|
4 |
+
*
|
5 |
+
* https://github.com/facebook/facebook-php-sdk
|
6 |
+
* https://developers.facebook.com/docs/reference/php/
|
7 |
+
*
|
8 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
9 |
+
* not use this file except in compliance with the License. You may obtain
|
10 |
+
* a copy of the License at
|
11 |
+
*
|
12 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13 |
+
*
|
14 |
+
* Unless required by applicable law or agreed to in writing, software
|
15 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
16 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
17 |
+
* License for the specific language governing permissions and limitations
|
18 |
+
* under the License.
|
19 |
+
*/
|
20 |
+
|
21 |
+
require_once "base_facebook.php";
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Extends the BaseFacebook class with the intent of using
|
25 |
+
* PHP sessions to store user ids and access tokens.
|
26 |
+
*/
|
27 |
+
class NXS_Facebook extends NXS_BaseFacebook
|
28 |
+
{
|
29 |
+
/**
|
30 |
+
* Identical to the parent constructor, except that
|
31 |
+
* we start a PHP session to store the user ID and
|
32 |
+
* access token if during the course of execution
|
33 |
+
* we discover them.
|
34 |
+
*
|
35 |
+
* @param Array $config the application configuration.
|
36 |
+
* @see BaseFacebook::__construct in facebook.php
|
37 |
+
*/
|
38 |
+
public function __construct($config) {
|
39 |
+
if (!session_id()) {
|
40 |
+
session_start();
|
41 |
+
}
|
42 |
+
parent::__construct($config);
|
43 |
+
}
|
44 |
+
|
45 |
+
protected static $kSupportedKeys =
|
46 |
+
array('state', 'code', 'access_token', 'user_id');
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Provides the implementations of the inherited abstract
|
50 |
+
* methods. The implementation uses PHP sessions to maintain
|
51 |
+
* a store for authorization codes, user ids, CSRF states, and
|
52 |
+
* access tokens.
|
53 |
+
*/
|
54 |
+
protected function setPersistentData($key, $value) {
|
55 |
+
if (!in_array($key, self::$kSupportedKeys)) {
|
56 |
+
self::errorLog('Unsupported key passed to setPersistentData.');
|
57 |
+
return;
|
58 |
+
}
|
59 |
+
|
60 |
+
$session_var_name = $this->constructSessionVariableName($key);
|
61 |
+
$_SESSION[$session_var_name] = $value;
|
62 |
+
}
|
63 |
+
|
64 |
+
protected function getPersistentData($key, $default = false) {
|
65 |
+
if (!in_array($key, self::$kSupportedKeys)) {
|
66 |
+
self::errorLog('Unsupported key passed to getPersistentData.');
|
67 |
+
return $default;
|
68 |
+
}
|
69 |
+
|
70 |
+
$session_var_name = $this->constructSessionVariableName($key);
|
71 |
+
return isset($_SESSION[$session_var_name]) ?
|
72 |
+
$_SESSION[$session_var_name] : $default;
|
73 |
+
}
|
74 |
+
|
75 |
+
protected function clearPersistentData($key) {
|
76 |
+
if (!in_array($key, self::$kSupportedKeys)) {
|
77 |
+
self::errorLog('Unsupported key passed to clearPersistentData.');
|
78 |
+
return;
|
79 |
+
}
|
80 |
+
|
81 |
+
$session_var_name = $this->constructSessionVariableName($key);
|
82 |
+
unset($_SESSION[$session_var_name]);
|
83 |
+
}
|
84 |
+
|
85 |
+
protected function clearAllPersistentData() {
|
86 |
+
foreach (self::$kSupportedKeys as $key) {
|
87 |
+
$this->clearPersistentData($key);
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
protected function constructSessionVariableName($key) {
|
92 |
+
return implode('_', array('fb',
|
93 |
+
$this->getAppId(),
|
94 |
+
$key));
|
95 |
+
}
|
96 |
+
}
|
apis/fb_ca_chain_bundle.crt
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
-----BEGIN CERTIFICATE-----
|
2 |
+
MIIFgjCCBGqgAwIBAgIQDKKbZcnESGaLDuEaVk6fQjANBgkqhkiG9w0BAQUFADBm
|
3 |
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
4 |
+
d3cuZGlnaWNlcnQuY29tMSUwIwYDVQQDExxEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
|
5 |
+
ZSBDQS0zMB4XDTEwMDExMzAwMDAwMFoXDTEzMDQxMTIzNTk1OVowaDELMAkGA1UE
|
6 |
+
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVBhbG8gQWx0bzEX
|
7 |
+
MBUGA1UEChMORmFjZWJvb2ssIEluYy4xFzAVBgNVBAMUDiouZmFjZWJvb2suY29t
|
8 |
+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9rzj7QIuLM3sdHu1HcI1VcR3g
|
9 |
+
b5FExKNV646agxSle1aQ/sJev1mh/u91ynwqd2BQmM0brZ1Hc3QrfYyAaiGGgEkp
|
10 |
+
xbhezyfeYhAyO0TKAYxPnm2cTjB5HICzk6xEIwFbA7SBJ2fSyW1CFhYZyo3tIBjj
|
11 |
+
19VjKyBfpRaPkzLmRwIDAQABo4ICrDCCAqgwHwYDVR0jBBgwFoAUUOpzidsp+xCP
|
12 |
+
nuUBINTeeZlIg/cwHQYDVR0OBBYEFPp+tsFBozkjrHlEnZ9J4cFj2eM0MA4GA1Ud
|
13 |
+
DwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMF8GA1UdHwRYMFYwKaAnoCWGI2h0dHA6
|
14 |
+
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9jYTMtZmIuY3JsMCmgJ6AlhiNodHRwOi8vY3Js
|
15 |
+
NC5kaWdpY2VydC5jb20vY2EzLWZiLmNybDCCAcYGA1UdIASCAb0wggG5MIIBtQYL
|
16 |
+
YIZIAYb9bAEDAAEwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0
|
17 |
+
LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIB
|
18 |
+
UgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkA
|
19 |
+
YwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEA
|
20 |
+
bgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMA
|
21 |
+
UABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkA
|
22 |
+
IABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwA
|
23 |
+
aQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8A
|
24 |
+
cgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMA
|
25 |
+
ZQAuMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQUF
|
26 |
+
AAOCAQEACOkTIdxMy11+CKrbGNLBSg5xHaTvu/v1wbyn3dO/mf68pPfJnX6ShPYy
|
27 |
+
4XM4Vk0x4uaFaU4wAGke+nCKGi5dyg0Esg7nemLNKEJaFAJZ9enxZm334lSCeARy
|
28 |
+
wlDtxULGOFRyGIZZPmbV2eNq5xdU/g3IuBEhL722mTpAye9FU/J8Wsnw54/gANyO
|
29 |
+
Gzkewigua8ip8Lbs9Cht399yAfbfhUP1DrAm/xEcnHrzPr3cdCtOyJaM6SRPpRqH
|
30 |
+
ITK5Nc06tat9lXVosSinT3KqydzxBYua9gCFFiR3x3DgZfvXkC6KDdUlDrNcJUub
|
31 |
+
a1BHnLLP4mxTHL6faAXYd05IxNn/IA==
|
32 |
+
-----END CERTIFICATE-----
|
33 |
+
-----BEGIN CERTIFICATE-----
|
34 |
+
MIIGVTCCBT2gAwIBAgIQCFH5WYFBRcq94CTiEsnCDjANBgkqhkiG9w0BAQUFADBs
|
35 |
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
36 |
+
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
|
37 |
+
ZSBFViBSb290IENBMB4XDTA3MDQwMzAwMDAwMFoXDTIyMDQwMzAwMDAwMFowZjEL
|
38 |
+
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
|
39 |
+
LmRpZ2ljZXJ0LmNvbTElMCMGA1UEAxMcRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
|
40 |
+
Q0EtMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9hCikQH17+NDdR
|
41 |
+
CPge+yLtYb4LDXBMUGMmdRW5QYiXtvCgFbsIYOBC6AUpEIc2iihlqO8xB3RtNpcv
|
42 |
+
KEZmBMcqeSZ6mdWOw21PoF6tvD2Rwll7XjZswFPPAAgyPhBkWBATaccM7pxCUQD5
|
43 |
+
BUTuJM56H+2MEb0SqPMV9Bx6MWkBG6fmXcCabH4JnudSREoQOiPkm7YDr6ictFuf
|
44 |
+
1EutkozOtREqqjcYjbTCuNhcBoz4/yO9NV7UfD5+gw6RlgWYw7If48hl66l7XaAs
|
45 |
+
zPw82W3tzPpLQ4zJ1LilYRyyQLYoEt+5+F/+07LJ7z20Hkt8HEyZNp496+ynaF4d
|
46 |
+
32duXvsCAwEAAaOCAvcwggLzMA4GA1UdDwEB/wQEAwIBhjCCAcYGA1UdIASCAb0w
|
47 |
+
ggG5MIIBtQYLYIZIAYb9bAEDAAIwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3
|
48 |
+
LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUH
|
49 |
+
AgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQBy
|
50 |
+
AHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBj
|
51 |
+
AGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAg
|
52 |
+
AEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQ
|
53 |
+
AGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBt
|
54 |
+
AGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBj
|
55 |
+
AG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBl
|
56 |
+
AHIAZQBuAGMAZQAuMA8GA1UdEwEB/wQFMAMBAf8wNAYIKwYBBQUHAQEEKDAmMCQG
|
57 |
+
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgY8GA1UdHwSBhzCB
|
58 |
+
hDBAoD6gPIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGlnaEFz
|
59 |
+
c3VyYW5jZUVWUm9vdENBLmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQu
|
60 |
+
Y29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDAfBgNVHSMEGDAW
|
61 |
+
gBSxPsNpA/i/RwHUmCYaCALvY2QrwzAdBgNVHQ4EFgQUUOpzidsp+xCPnuUBINTe
|
62 |
+
eZlIg/cwDQYJKoZIhvcNAQEFBQADggEBAF1PhPGoiNOjsrycbeUpSXfh59bcqdg1
|
63 |
+
rslx3OXb3J0kIZCmz7cBHJvUV5eR13UWpRLXuT0uiT05aYrWNTf58SHEW0CtWakv
|
64 |
+
XzoAKUMncQPkvTAyVab+hA4LmzgZLEN8rEO/dTHlIxxFVbdpCJG1z9fVsV7un5Tk
|
65 |
+
1nq5GMO41lJjHBC6iy9tXcwFOPRWBW3vnuzoYTYMFEuFFFoMg08iXFnLjIpx2vrF
|
66 |
+
EIRYzwfu45DC9fkpx1ojcflZtGQriLCnNseaIGHr+k61rmsb5OPs4tk8QUmoIKRU
|
67 |
+
9ZKNu8BVIASm2LAXFszj0Mi0PeXZhMbT9m5teMl5Q+h6N/9cNUm/ocU=
|
68 |
+
-----END CERTIFICATE-----
|
69 |
+
-----BEGIN CERTIFICATE-----
|
70 |
+
MIIEQjCCA6ugAwIBAgIEQoclDjANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
71 |
+
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
72 |
+
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
73 |
+
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
74 |
+
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEy
|
75 |
+
MjIxNTI3MjdaFw0xNDA3MjIxNTU3MjdaMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
76 |
+
EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNV
|
77 |
+
BAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwggEiMA0GCSqG
|
78 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGzOVz5vvUu+UtLTKm3+WBP8nNJUm2cSrD
|
79 |
+
1ZQ0Z6IKHLBfaaZAscS3so/QmKSpQVk609yU1jzbdDikSsxNJYL3SqVTEjju80lt
|
80 |
+
cZF+Y7arpl/DpIT4T2JRvvjF7Ns4kuMG5QiRDMQoQVX7y1qJFX5x6DW/TXIJPb46
|
81 |
+
OFBbdzEbjbPHJEWap6xtABRaBLe6E+tRCphBQSJOZWGHgUFQpnlcid4ZSlfVLuZd
|
82 |
+
HFMsfpjNGgYWpGhz0DQEE1yhcdNafFXbXmThN4cwVgTlEbQpgBLxeTmIogIRfCdm
|
83 |
+
t4i3ePLKCqg4qwpkwr9mXZWEwaElHoddGlALIBLMQbtuC1E4uEvLAgMBAAGjggET
|
84 |
+
MIIBDzASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggr
|
85 |
+
BgEFBQcDAgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdo
|
86 |
+
dHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8v
|
87 |
+
Y3JsLmVudHJ1c3QubmV0L3NlcnZlcjEuY3JsMB0GA1UdDgQWBBSxPsNpA/i/RwHU
|
88 |
+
mCYaCALvY2QrwzALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7
|
89 |
+
UISX8+1i0BowGQYJKoZIhvZ9B0EABAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEF
|
90 |
+
BQADgYEAUuVY7HCc/9EvhaYzC1rAIo348LtGIiMduEl5Xa24G8tmJnDioD2GU06r
|
91 |
+
1kjLX/ktCdpdBgXadbjtdrZXTP59uN0AXlsdaTiFufsqVLPvkp5yMnqnuI3E2o6p
|
92 |
+
NpAkoQSbB6kUCNnXcW26valgOjDLZFOnr241QiwdBAJAAE/rRa8=
|
93 |
+
-----END CERTIFICATE-----
|
94 |
+
-----BEGIN CERTIFICATE-----
|
95 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
96 |
+
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
97 |
+
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
98 |
+
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
99 |
+
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1
|
100 |
+
MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE
|
101 |
+
ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j
|
102 |
+
b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
103 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg
|
104 |
+
U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA
|
105 |
+
A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/
|
106 |
+
I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3
|
107 |
+
wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC
|
108 |
+
AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb
|
109 |
+
oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
|
110 |
+
BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p
|
111 |
+
dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
|
112 |
+
MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
|
113 |
+
b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
114 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0
|
115 |
+
MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi
|
116 |
+
E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa
|
117 |
+
MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
|
118 |
+
hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN
|
119 |
+
95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd
|
120 |
+
2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
121 |
+
-----END CERTIFICATE-----
|
apis/htmlNumTable.php
ADDED
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$HTML401NamedToNumeric = array(
|
4 |
+
''' => ''',
|
5 |
+
' ' => ' ', # no-break space = non-breaking space, U+00A0 ISOnum
|
6 |
+
'¡' => '¡', # inverted exclamation mark, U+00A1 ISOnum
|
7 |
+
'¢' => '¢', # cent sign, U+00A2 ISOnum
|
8 |
+
'£' => '£', # pound sign, U+00A3 ISOnum
|
9 |
+
'¤' => '¤', # currency sign, U+00A4 ISOnum
|
10 |
+
'¥' => '¥', # yen sign = yuan sign, U+00A5 ISOnum
|
11 |
+
'¦' => '¦', # broken bar = broken vertical bar, U+00A6 ISOnum
|
12 |
+
'§' => '§', # section sign, U+00A7 ISOnum
|
13 |
+
'¨' => '¨', # diaeresis = spacing diaeresis, U+00A8 ISOdia
|
14 |
+
'©' => '©', # copyright sign, U+00A9 ISOnum
|
15 |
+
'ª' => 'ª', # feminine ordinal indicator, U+00AA ISOnum
|
16 |
+
'«' => '«', # left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum
|
17 |
+
'¬' => '¬', # not sign, U+00AC ISOnum
|
18 |
+
'­' => '­', # soft hyphen = discretionary hyphen, U+00AD ISOnum
|
19 |
+
'®' => '®', # registered sign = registered trade mark sign, U+00AE ISOnum
|
20 |
+
'¯' => '¯', # macron = spacing macron = overline = APL overbar, U+00AF ISOdia
|
21 |
+
'°' => '°', # degree sign, U+00B0 ISOnum
|
22 |
+
'±' => '±', # plus-minus sign = plus-or-minus sign, U+00B1 ISOnum
|
23 |
+
'²' => '²', # superscript two = superscript digit two = squared, U+00B2 ISOnum
|
24 |
+
'³' => '³', # superscript three = superscript digit three = cubed, U+00B3 ISOnum
|
25 |
+
'´' => '´', # acute accent = spacing acute, U+00B4 ISOdia
|
26 |
+
'µ' => 'µ', # micro sign, U+00B5 ISOnum
|
27 |
+
'¶' => '¶', # pilcrow sign = paragraph sign, U+00B6 ISOnum
|
28 |
+
'·' => '·', # middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum
|
29 |
+
'¸' => '¸', # cedilla = spacing cedilla, U+00B8 ISOdia
|
30 |
+
'¹' => '¹', # superscript one = superscript digit one, U+00B9 ISOnum
|
31 |
+
'º' => 'º', # masculine ordinal indicator, U+00BA ISOnum
|
32 |
+
'»' => '»', # right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum
|
33 |
+
'¼' => '¼', # vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum
|
34 |
+
'½' => '½', # vulgar fraction one half = fraction one half, U+00BD ISOnum
|
35 |
+
'¾' => '¾', # vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum
|
36 |
+
'¿' => '¿', # inverted question mark = turned question mark, U+00BF ISOnum
|
37 |
+
'À' => 'À', # latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1
|
38 |
+
'Á' => 'Á', # latin capital letter A with acute, U+00C1 ISOlat1
|
39 |
+
'Â' => 'Â', # latin capital letter A with circumflex, U+00C2 ISOlat1
|
40 |
+
'Ã' => 'Ã', # latin capital letter A with tilde, U+00C3 ISOlat1
|
41 |
+
'Ä' => 'Ä', # latin capital letter A with diaeresis, U+00C4 ISOlat1
|
42 |
+
'Å' => 'Å', # latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1
|
43 |
+
'Æ' => 'Æ', # latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1
|
44 |
+
'Ç' => 'Ç', # latin capital letter C with cedilla, U+00C7 ISOlat1
|
45 |
+
'È' => 'È', # latin capital letter E with grave, U+00C8 ISOlat1
|
46 |
+
'É' => 'É', # latin capital letter E with acute, U+00C9 ISOlat1
|
47 |
+
'Ê' => 'Ê', # latin capital letter E with circumflex, U+00CA ISOlat1
|
48 |
+
'Ë' => 'Ë', # latin capital letter E with diaeresis, U+00CB ISOlat1
|
49 |
+
'Ì' => 'Ì', # latin capital letter I with grave, U+00CC ISOlat1
|
50 |
+
'Í' => 'Í', # latin capital letter I with acute, U+00CD ISOlat1
|
51 |
+
'Î' => 'Î', # latin capital letter I with circumflex, U+00CE ISOlat1
|
52 |
+
'Ï' => 'Ï', # latin capital letter I with diaeresis, U+00CF ISOlat1
|
53 |
+
'Ð' => 'Ð', # latin capital letter ETH, U+00D0 ISOlat1
|
54 |
+
'Ñ' => 'Ñ', # latin capital letter N with tilde, U+00D1 ISOlat1
|
55 |
+
'Ò' => 'Ò', # latin capital letter O with grave, U+00D2 ISOlat1
|
56 |
+
'Ó' => 'Ó', # latin capital letter O with acute, U+00D3 ISOlat1
|
57 |
+
'Ô' => 'Ô', # latin capital letter O with circumflex, U+00D4 ISOlat1
|
58 |
+
'Õ' => 'Õ', # latin capital letter O with tilde, U+00D5 ISOlat1
|
59 |
+
'Ö' => 'Ö', # latin capital letter O with diaeresis, U+00D6 ISOlat1
|
60 |
+
'×' => '×', # multiplication sign, U+00D7 ISOnum
|
61 |
+
'Ø' => 'Ø', # latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1
|
62 |
+
'Ù' => 'Ù', # latin capital letter U with grave, U+00D9 ISOlat1
|
63 |
+
'Ú' => 'Ú', # latin capital letter U with acute, U+00DA ISOlat1
|
64 |
+
'Û' => 'Û', # latin capital letter U with circumflex, U+00DB ISOlat1
|
65 |
+
'Ü' => 'Ü', # latin capital letter U with diaeresis, U+00DC ISOlat1
|
66 |
+
'Ý' => 'Ý', # latin capital letter Y with acute, U+00DD ISOlat1
|
67 |
+
'Þ' => 'Þ', # latin capital letter THORN, U+00DE ISOlat1
|
68 |
+
'ß' => 'ß', # latin small letter sharp s = ess-zed, U+00DF ISOlat1
|
69 |
+
'à' => 'à', # latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1
|
70 |
+
'á' => 'á', # latin small letter a with acute, U+00E1 ISOlat1
|
71 |
+
'â' => 'â', # latin small letter a with circumflex, U+00E2 ISOlat1
|
72 |
+
'ã' => 'ã', # latin small letter a with tilde, U+00E3 ISOlat1
|
73 |
+
'ä' => 'ä', # latin small letter a with diaeresis, U+00E4 ISOlat1
|
74 |
+
'å' => 'å', # latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1
|
75 |
+
'æ' => 'æ', # latin small letter ae = latin small ligature ae, U+00E6 ISOlat1
|
76 |
+
'ç' => 'ç', # latin small letter c with cedilla, U+00E7 ISOlat1
|
77 |
+
'è' => 'è', # latin small letter e with grave, U+00E8 ISOlat1
|
78 |
+
'é' => 'é', # latin small letter e with acute, U+00E9 ISOlat1
|
79 |
+
'ê' => 'ê', # latin small letter e with circumflex, U+00EA ISOlat1
|
80 |
+
'ë' => 'ë', # latin small letter e with diaeresis, U+00EB ISOlat1
|
81 |
+
'ì' => 'ì', # latin small letter i with grave, U+00EC ISOlat1
|
82 |
+
'í' => 'í', # latin small letter i with acute, U+00ED ISOlat1
|
83 |
+
'î' => 'î', # latin small letter i with circumflex, U+00EE ISOlat1
|
84 |
+
'ï' => 'ï', # latin small letter i with diaeresis, U+00EF ISOlat1
|
85 |
+
'ð' => 'ð', # latin small letter eth, U+00F0 ISOlat1
|
86 |
+
'ñ' => 'ñ', # latin small letter n with tilde, U+00F1 ISOlat1
|
87 |
+
'ò' => 'ò', # latin small letter o with grave, U+00F2 ISOlat1
|
88 |
+
'ó' => 'ó', # latin small letter o with acute, U+00F3 ISOlat1
|
89 |
+
'ô' => 'ô', # latin small letter o with circumflex, U+00F4 ISOlat1
|
90 |
+
'õ' => 'õ', # latin small letter o with tilde, U+00F5 ISOlat1
|
91 |
+
'ö' => 'ö', # latin small letter o with diaeresis, U+00F6 ISOlat1
|
92 |
+
'÷' => '÷', # division sign, U+00F7 ISOnum
|
93 |
+
'ø' => 'ø', # latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1
|
94 |
+
'ù' => 'ù', # latin small letter u with grave, U+00F9 ISOlat1
|
95 |
+
'ú' => 'ú', # latin small letter u with acute, U+00FA ISOlat1
|
96 |
+
'û' => 'û', # latin small letter u with circumflex, U+00FB ISOlat1
|
97 |
+
'ü' => 'ü', # latin small letter u with diaeresis, U+00FC ISOlat1
|
98 |
+
'ý' => 'ý', # latin small letter y with acute, U+00FD ISOlat1
|
99 |
+
'þ' => 'þ', # latin small letter thorn, U+00FE ISOlat1
|
100 |
+
'ÿ' => 'ÿ', # latin small letter y with diaeresis, U+00FF ISOlat1
|
101 |
+
'ƒ' => 'ƒ', # latin small f with hook = function = florin, U+0192 ISOtech
|
102 |
+
'Α' => 'Α', # greek capital letter alpha, U+0391
|
103 |
+
'Β' => 'Β', # greek capital letter beta, U+0392
|
104 |
+
'Γ' => 'Γ', # greek capital letter gamma, U+0393 ISOgrk3
|
105 |
+
'Δ' => 'Δ', # greek capital letter delta, U+0394 ISOgrk3
|
106 |
+
'Ε' => 'Ε', # greek capital letter epsilon, U+0395
|
107 |
+
'Ζ' => 'Ζ', # greek capital letter zeta, U+0396
|
108 |
+
'Η' => 'Η', # greek capital letter eta, U+0397
|
109 |
+
'Θ' => 'Θ', # greek capital letter theta, U+0398 ISOgrk3
|
110 |
+
'Ι' => 'Ι', # greek capital letter iota, U+0399
|
111 |
+
'Κ' => 'Κ', # greek capital letter kappa, U+039A
|
112 |
+
'Λ' => 'Λ', # greek capital letter lambda, U+039B ISOgrk3
|
113 |
+
'Μ' => 'Μ', # greek capital letter mu, U+039C
|
114 |
+
'Ν' => 'Ν', # greek capital letter nu, U+039D
|
115 |
+
'Ξ' => 'Ξ', # greek capital letter xi, U+039E ISOgrk3
|
116 |
+
'Ο' => 'Ο', # greek capital letter omicron, U+039F
|
117 |
+
'Π' => 'Π', # greek capital letter pi, U+03A0 ISOgrk3
|
118 |
+
'Ρ' => 'Ρ', # greek capital letter rho, U+03A1
|
119 |
+
'Σ' => 'Σ', # greek capital letter sigma, U+03A3 ISOgrk3
|
120 |
+
'Τ' => 'Τ', # greek capital letter tau, U+03A4
|
121 |
+
'Υ' => 'Υ', # greek capital letter upsilon, U+03A5 ISOgrk3
|
122 |
+
'Φ' => 'Φ', # greek capital letter phi, U+03A6 ISOgrk3
|
123 |
+
'Χ' => 'Χ', # greek capital letter chi, U+03A7
|
124 |
+
'Ψ' => 'Ψ', # greek capital letter psi, U+03A8 ISOgrk3
|
125 |
+
'Ω' => 'Ω', # greek capital letter omega, U+03A9 ISOgrk3
|
126 |
+
'α' => 'α', # greek small letter alpha, U+03B1 ISOgrk3
|
127 |
+
'β' => 'β', # greek small letter beta, U+03B2 ISOgrk3
|
128 |
+
'γ' => 'γ', # greek small letter gamma, U+03B3 ISOgrk3
|
129 |
+
'δ' => 'δ', # greek small letter delta, U+03B4 ISOgrk3
|
130 |
+
'ε' => 'ε', # greek small letter epsilon, U+03B5 ISOgrk3
|
131 |
+
'ζ' => 'ζ', # greek small letter zeta, U+03B6 ISOgrk3
|
132 |
+
'η' => 'η', # greek small letter eta, U+03B7 ISOgrk3
|
133 |
+
'θ' => 'θ', # greek small letter theta, U+03B8 ISOgrk3
|
134 |
+
'ι' => 'ι', # greek small letter iota, U+03B9 ISOgrk3
|
135 |
+
'κ' => 'κ', # greek small letter kappa, U+03BA ISOgrk3
|
136 |
+
'λ' => 'λ', # greek small letter lambda, U+03BB ISOgrk3
|
137 |
+
'μ' => 'μ', # greek small letter mu, U+03BC ISOgrk3
|
138 |
+
'ν' => 'ν', # greek small letter nu, U+03BD ISOgrk3
|
139 |
+
'ξ' => 'ξ', # greek small letter xi, U+03BE ISOgrk3
|
140 |
+
'ο' => 'ο', # greek small letter omicron, U+03BF NEW
|
141 |
+
'π' => 'π', # greek small letter pi, U+03C0 ISOgrk3
|
142 |
+
'ρ' => 'ρ', # greek small letter rho, U+03C1 ISOgrk3
|
143 |
+
'ς' => 'ς', # greek small letter final sigma, U+03C2 ISOgrk3
|
144 |
+
'σ' => 'σ', # greek small letter sigma, U+03C3 ISOgrk3
|
145 |
+
'τ' => 'τ', # greek small letter tau, U+03C4 ISOgrk3
|
146 |
+
'υ' => 'υ', # greek small letter upsilon, U+03C5 ISOgrk3
|
147 |
+
'φ' => 'φ', # greek small letter phi, U+03C6 ISOgrk3
|
148 |
+
'χ' => 'χ', # greek small letter chi, U+03C7 ISOgrk3
|
149 |
+
'ψ' => 'ψ', # greek small letter psi, U+03C8 ISOgrk3
|
150 |
+
'ω' => 'ω', # greek small letter omega, U+03C9 ISOgrk3
|
151 |
+
'ϑ' => 'ϑ', # greek small letter theta symbol, U+03D1 NEW
|
152 |
+
'ϒ' => 'ϒ', # greek upsilon with hook symbol, U+03D2 NEW
|
153 |
+
'ϖ' => 'ϖ', # greek pi symbol, U+03D6 ISOgrk3
|
154 |
+
'•' => '•', # bullet = black small circle, U+2022 ISOpub
|
155 |
+
'…' => '…', # horizontal ellipsis = three dot leader, U+2026 ISOpub
|
156 |
+
'′' => '′', # prime = minutes = feet, U+2032 ISOtech
|
157 |
+
'″' => '″', # double prime = seconds = inches, U+2033 ISOtech
|
158 |
+
'‾' => '‾', # overline = spacing overscore, U+203E NEW
|
159 |
+
'⁄' => '⁄', # fraction slash, U+2044 NEW
|
160 |
+
'℘' => '℘', # script capital P = power set = Weierstrass p, U+2118 ISOamso
|
161 |
+
'ℑ' => 'ℑ', # blackletter capital I = imaginary part, U+2111 ISOamso
|
162 |
+
'ℜ' => 'ℜ', # blackletter capital R = real part symbol, U+211C ISOamso
|
163 |
+
'™' => '™', # trade mark sign, U+2122 ISOnum
|
164 |
+
'ℵ' => 'ℵ', # alef symbol = first transfinite cardinal, U+2135 NEW
|
165 |
+
'←' => '←', # leftwards arrow, U+2190 ISOnum
|
166 |
+
'↑' => '↑', # upwards arrow, U+2191 ISOnum
|
167 |
+
'→' => '→', # rightwards arrow, U+2192 ISOnum
|
168 |
+
'↓' => '↓', # downwards arrow, U+2193 ISOnum
|
169 |
+
'↔' => '↔', # left right arrow, U+2194 ISOamsa
|
170 |
+
'↵' => '↵', # downwards arrow with corner leftwards = carriage return, U+21B5 NEW
|
171 |
+
'⇐' => '⇐', # leftwards double arrow, U+21D0 ISOtech
|
172 |
+
'⇑' => '⇑', # upwards double arrow, U+21D1 ISOamsa
|
173 |
+
'⇒' => '⇒', # rightwards double arrow, U+21D2 ISOtech
|
174 |
+
'⇓' => '⇓', # downwards double arrow, U+21D3 ISOamsa
|
175 |
+
'⇔' => '⇔', # left right double arrow, U+21D4 ISOamsa
|
176 |
+
'∀' => '∀', # for all, U+2200 ISOtech
|
177 |
+
'∂' => '∂', # partial differential, U+2202 ISOtech
|
178 |
+
'∃' => '∃', # there exists, U+2203 ISOtech
|
179 |
+
'∅' => '∅', # empty set = null set = diameter, U+2205 ISOamso
|
180 |
+
'∇' => '∇', # nabla = backward difference, U+2207 ISOtech
|
181 |
+
'∈' => '∈', # element of, U+2208 ISOtech
|
182 |
+
'∉' => '∉', # not an element of, U+2209 ISOtech
|
183 |
+
'∋' => '∋', # contains as member, U+220B ISOtech
|
184 |
+
'∏' => '∏', # n-ary product = product sign, U+220F ISOamsb
|
185 |
+
'∑' => '∑', # n-ary sumation, U+2211 ISOamsb
|
186 |
+
'−' => '−', # minus sign, U+2212 ISOtech
|
187 |
+
'∗' => '∗', # asterisk operator, U+2217 ISOtech
|
188 |
+
'√' => '√', # square root = radical sign, U+221A ISOtech
|
189 |
+
'∝' => '∝', # proportional to, U+221D ISOtech
|
190 |
+
'∞' => '∞', # infinity, U+221E ISOtech
|
191 |
+
'∠' => '∠', # angle, U+2220 ISOamso
|
192 |
+
'∧' => '∧', # logical and = wedge, U+2227 ISOtech
|
193 |
+
'∨' => '∨', # logical or = vee, U+2228 ISOtech
|
194 |
+
'∩' => '∩', # intersection = cap, U+2229 ISOtech
|
195 |
+
'∪' => '∪', # union = cup, U+222A ISOtech
|
196 |
+
'∫' => '∫', # integral, U+222B ISOtech
|
197 |
+
'∴' => '∴', # therefore, U+2234 ISOtech
|
198 |
+
'∼' => '∼', # tilde operator = varies with = similar to, U+223C ISOtech
|
199 |
+
'≅' => '≅', # approximately equal to, U+2245 ISOtech
|
200 |
+
'≈' => '≈', # almost equal to = asymptotic to, U+2248 ISOamsr
|
201 |
+
'≠' => '≠', # not equal to, U+2260 ISOtech
|
202 |
+
'≡' => '≡', # identical to, U+2261 ISOtech
|
203 |
+
'≤' => '≤', # less-than or equal to, U+2264 ISOtech
|
204 |
+
'≥' => '≥', # greater-than or equal to, U+2265 ISOtech
|
205 |
+
'⊂' => '⊂', # subset of, U+2282 ISOtech
|
206 |
+
'⊃' => '⊃', # superset of, U+2283 ISOtech
|
207 |
+
'⊄' => '⊄', # not a subset of, U+2284 ISOamsn
|
208 |
+
'⊆' => '⊆', # subset of or equal to, U+2286 ISOtech
|
209 |
+
'⊇' => '⊇', # superset of or equal to, U+2287 ISOtech
|
210 |
+
'⊕' => '⊕', # circled plus = direct sum, U+2295 ISOamsb
|
211 |
+
'⊗' => '⊗', # circled times = vector product, U+2297 ISOamsb
|
212 |
+
'⊥' => '⊥', # up tack = orthogonal to = perpendicular, U+22A5 ISOtech
|
213 |
+
'⋅' => '⋅', # dot operator, U+22C5 ISOamsb
|
214 |
+
'⌈' => '⌈', # left ceiling = apl upstile, U+2308 ISOamsc
|
215 |
+
'⌉' => '⌉', # right ceiling, U+2309 ISOamsc
|
216 |
+
'⌊' => '⌊', # left floor = apl downstile, U+230A ISOamsc
|
217 |
+
'⌋' => '⌋', # right floor, U+230B ISOamsc
|
218 |
+
'⟨' => '〈', # left-pointing angle bracket = bra, U+2329 ISOtech
|
219 |
+
'⟩' => '〉', # right-pointing angle bracket = ket, U+232A ISOtech
|
220 |
+
'◊' => '◊', # lozenge, U+25CA ISOpub
|
221 |
+
'♠' => '♠', # black spade suit, U+2660 ISOpub
|
222 |
+
'♣' => '♣', # black club suit = shamrock, U+2663 ISOpub
|
223 |
+
'♥' => '♥', # black heart suit = valentine, U+2665 ISOpub
|
224 |
+
'♦' => '♦', # black diamond suit, U+2666 ISOpub
|
225 |
+
'"' => '"', # quotation mark = APL quote, U+0022 ISOnum
|
226 |
+
'&' => '&', # ampersand, U+0026 ISOnum
|
227 |
+
'<' => '<', # less-than sign, U+003C ISOnum
|
228 |
+
'>' => '>', # greater-than sign, U+003E ISOnum
|
229 |
+
'Œ' => 'Œ', # latin capital ligature OE, U+0152 ISOlat2
|
230 |
+
'œ' => 'œ', # latin small ligature oe, U+0153 ISOlat2
|
231 |
+
'Š' => 'Š', # latin capital letter S with caron, U+0160 ISOlat2
|
232 |
+
'š' => 'š', # latin small letter s with caron, U+0161 ISOlat2
|
233 |
+
'Ÿ' => 'Ÿ', # latin capital letter Y with diaeresis, U+0178 ISOlat2
|
234 |
+
'ˆ' => 'ˆ', # modifier letter circumflex accent, U+02C6 ISOpub
|
235 |
+
'˜' => '˜', # small tilde, U+02DC ISOdia
|
236 |
+
' ' => ' ', # en space, U+2002 ISOpub
|
237 |
+
' ' => ' ', # em space, U+2003 ISOpub
|
238 |
+
' ' => ' ', # thin space, U+2009 ISOpub
|
239 |
+
'‌' => '‌', # zero width non-joiner, U+200C NEW RFC 2070
|
240 |
+
'‍' => '‍', # zero width joiner, U+200D NEW RFC 2070
|
241 |
+
'‎' => '‎', # left-to-right mark, U+200E NEW RFC 2070
|
242 |
+
'‏' => '‏', # right-to-left mark, U+200F NEW RFC 2070
|
243 |
+
'–' => '–', # en dash, U+2013 ISOpub
|
244 |
+
'—' => '—', # em dash, U+2014 ISOpub
|
245 |
+
'‘' => '‘', # left single quotation mark, U+2018 ISOnum
|
246 |
+
'’' => '’', # right single quotation mark, U+2019 ISOnum
|
247 |
+
'‚' => '‚', # single low-9 quotation mark, U+201A NEW
|
248 |
+
'“' => '“', # left double quotation mark, U+201C ISOnum
|
249 |
+
'”' => '”', # right double quotation mark, U+201D ISOnum
|
250 |
+
'„' => '„', # double low-9 quotation mark, U+201E NEW
|
251 |
+
'†' => '†', # dagger, U+2020 ISOpub
|
252 |
+
'‡' => '‡', # double dagger, U+2021 ISOpub
|
253 |
+
'‰' => '‰', # per mille sign, U+2030 ISOtech
|
254 |
+
'‹' => '‹', # single left-pointing angle quotation mark, U+2039 ISO proposed
|
255 |
+
'›' => '›', # single right-pointing angle quotation mark, U+203A ISO proposed
|
256 |
+
'€' => '€', # euro sign, U+20AC NEW
|
257 |
+
);
|
258 |
+
|
259 |
+
|
260 |
+
?>
|
apis/liOAuth.php
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once("OAuth.php");
|
3 |
+
|
4 |
+
class nsx_LinkedIn {
|
5 |
+
public $base_url = "http://api.linkedin.com";
|
6 |
+
public $secure_base_url = "https://api.linkedin.com";
|
7 |
+
public $oauth_callback = "oob";
|
8 |
+
public $consumer;
|
9 |
+
public $request_token;
|
10 |
+
public $access_token;
|
11 |
+
public $oauth_verifier;
|
12 |
+
public $signature_method;
|
13 |
+
public $request_token_path;
|
14 |
+
public $access_token_path;
|
15 |
+
public $authorize_path;
|
16 |
+
public $debug = false;
|
17 |
+
public $http_code;
|
18 |
+
|
19 |
+
function __construct($consumer_key, $consumer_secret, $oauth_callback = NULL) {
|
20 |
+
|
21 |
+
if($oauth_callback) {
|
22 |
+
$this->oauth_callback = $oauth_callback;
|
23 |
+
}
|
24 |
+
|
25 |
+
$this->consumer = new nsx_trOAuthConsumer($consumer_key, $consumer_secret, $this->oauth_callback);
|
26 |
+
$this->signature_method = new nsx_trOAuthSignatureMethod_HMAC_SHA1();
|
27 |
+
$this->request_token_path = $this->secure_base_url . "/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress+rw_nus";
|
28 |
+
$this->access_token_path = $this->secure_base_url . "/uas/oauth/accessToken";
|
29 |
+
$this->authorize_path = $this->secure_base_url . "/uas/oauth/authorize";
|
30 |
+
|
31 |
+
}
|
32 |
+
|
33 |
+
function getRequestToken() {
|
34 |
+
$consumer = $this->consumer;
|
35 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($consumer, NULL, "GET", $this->request_token_path);
|
36 |
+
$request->set_parameter("oauth_callback", $this->oauth_callback);
|
37 |
+
$request->sign_request($this->signature_method, $consumer, NULL); prr($request);
|
38 |
+
$headers = Array();
|
39 |
+
$url = $request->to_url();//prr($url);
|
40 |
+
$response = $this->httpRequest($url, $headers, "GET"); if ($response!='') $this->http_code = 200;
|
41 |
+
parse_str($response, $response_params); //prr($response_params); echo "!!!!";
|
42 |
+
$this->request_token = new nsx_trOAuthConsumer($response_params['oauth_token'], $response_params['oauth_token_secret'], 1); return $this->request_token;
|
43 |
+
}
|
44 |
+
|
45 |
+
function generateAuthorizeUrl() {
|
46 |
+
$consumer = $this->consumer;
|
47 |
+
$request_token = $this->request_token;
|
48 |
+
return $this->authorize_path . "?oauth_token=" . $request_token->key;
|
49 |
+
}
|
50 |
+
|
51 |
+
function getAccessToken($oauth_verifier) {
|
52 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($this->consumer, $this->request_token, "GET", $this->access_token_path);
|
53 |
+
$request->set_parameter("oauth_verifier", $oauth_verifier);
|
54 |
+
$request->sign_request($this->signature_method, $this->consumer, $this->request_token);
|
55 |
+
$headers = Array();
|
56 |
+
$url = $request->to_url(); echo "==========";
|
57 |
+
$response = $this->httpRequest($url, $headers, "GET"); prr($request);
|
58 |
+
parse_str($response, $response_params); prr($response_params);
|
59 |
+
if($debug) {
|
60 |
+
echo $response . "\n";
|
61 |
+
}
|
62 |
+
$this->access_token = new nsx_trOAuthConsumer($response_params['oauth_token'], $response_params['oauth_token_secret'], 1);
|
63 |
+
}
|
64 |
+
|
65 |
+
function getProfile($resource = "~") {
|
66 |
+
$profile_url = $this->base_url . "/v1/people/" . $resource;
|
67 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($this->consumer, $this->access_token, "GET", $profile_url);
|
68 |
+
$request->sign_request($this->signature_method, $this->consumer, $this->access_token);
|
69 |
+
$auth_header = $request->to_header("https://api.linkedin.com"); # this is the realm
|
70 |
+
# This PHP library doesn't generate the header correctly when a realm is not specified.
|
71 |
+
# Make sure there is a space and not a comma after OAuth
|
72 |
+
// $auth_header = preg_replace("/Authorization\: OAuth\,/", "Authorization: OAuth ", $auth_header);
|
73 |
+
// # Make sure there is a space between OAuth attribute
|
74 |
+
// $auth_header = preg_replace('/\"\,/', '", ', $auth_header);
|
75 |
+
if ($debug) {
|
76 |
+
echo $auth_header;
|
77 |
+
}
|
78 |
+
// $response will now hold the XML document
|
79 |
+
$response = $this->httpRequest($profile_url, $auth_header, "GET");
|
80 |
+
return $response;
|
81 |
+
}
|
82 |
+
|
83 |
+
|
84 |
+
|
85 |
+
|
86 |
+
function postShare($msg, $title='', $url='', $imgURL='', $dsc='') { $status_url = $this->base_url . "/v1/people/~/shares";
|
87 |
+
$dsc = nxs_decodeEntitiesFull(strip_tags($dsc)); $msg = strip_tags(nxs_decodeEntitiesFull($msg)); $title = nxs_decodeEntitiesFull(strip_tags($title));
|
88 |
+
$xml = '<?xml version="1.0" encoding="UTF-8"?><share><comment>'.htmlspecialchars($msg, ENT_NOQUOTES, "UTF-8").'</comment>'.
|
89 |
+
($url!=''?'<content><title>'.htmlspecialchars($title, ENT_NOQUOTES, "UTF-8").'</title><submitted-url>'.$url.'</submitted-url><submitted-image-url>'.$imgURL.'</submitted-image-url><description>'.htmlspecialchars($dsc, ENT_NOQUOTES, "UTF-8").'</description></content>':'').
|
90 |
+
'<visibility><code>anyone</code></visibility></share>';
|
91 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($this->consumer, $this->access_token, "POST", $status_url);
|
92 |
+
$request->sign_request($this->signature_method, $this->consumer, $this->access_token);
|
93 |
+
$auth_header = $request->to_header("https://api.linkedin.com");
|
94 |
+
if ($debug) echo $auth_header . "\n";
|
95 |
+
$response = $this->httpRequest($status_url, $auth_header, "POST", $xml);
|
96 |
+
return $response;
|
97 |
+
}
|
98 |
+
|
99 |
+
function setStatus($status) {
|
100 |
+
$status_url = $this->base_url . "/v1/people/~/current-status";
|
101 |
+
//echo "Setting status...\n";
|
102 |
+
$xml = "<current-status>" . htmlspecialchars($status, ENT_NOQUOTES, "UTF-8") . "</current-status>";
|
103 |
+
//echo $xml . "\n";
|
104 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($this->consumer, $this->access_token, "PUT", $status_url);
|
105 |
+
$request->sign_request($this->signature_method, $this->consumer, $this->access_token);
|
106 |
+
$auth_header = $request->to_header("https://api.linkedin.com");
|
107 |
+
if ($debug) {
|
108 |
+
echo $auth_header . "\n";
|
109 |
+
}
|
110 |
+
$response = $this->httpRequest($status_url, $auth_header, "PUT", $xml); prr($response);
|
111 |
+
return $response;
|
112 |
+
}
|
113 |
+
|
114 |
+
# Parameters should be a query string starting with "?"
|
115 |
+
# Example search("?count=10&start=10&company=LinkedIn");
|
116 |
+
function search($parameters) {
|
117 |
+
$search_url = $this->base_url . "/v1/people/" . $parameters;
|
118 |
+
echo "Performing search for: " . $parameters . "\n";
|
119 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($this->consumer, $this->access_token, "GET", $search_url);
|
120 |
+
$request->sign_request($this->signature_method, $this->consumer, $this->access_token);
|
121 |
+
$auth_header = $request->to_header("https://api.linkedin.com");
|
122 |
+
if ($debug) {
|
123 |
+
echo $request->get_signature_base_string() . "\n";
|
124 |
+
echo $auth_header . "\n";
|
125 |
+
}
|
126 |
+
$response = $this->httpRequest($search_url, $auth_header, "GET");
|
127 |
+
return $response;
|
128 |
+
}
|
129 |
+
|
130 |
+
function httpRequest($url, $auth_header, $method, $body = NULL) { //if (!is_array($auth_header)) $auth_header = array($auth_header);
|
131 |
+
if (!is_array($auth_header)) $auth_header = array($auth_header);
|
132 |
+
if (!$method) $method = "GET"; $curl = curl_init();
|
133 |
+
curl_setopt($curl, CURLOPT_URL, $url);
|
134 |
+
curl_setopt($curl, CURLOPT_HEADER, 0);
|
135 |
+
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
136 |
+
curl_setopt($curl, CURLOPT_HTTPHEADER, $auth_header); // Set the headers.
|
137 |
+
|
138 |
+
if ($body) { $auth_header[] = "Content-Type: text/xml;charset=utf-8";
|
139 |
+
curl_setopt($curl, CURLOPT_POST, 1);
|
140 |
+
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
|
141 |
+
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
|
142 |
+
curl_setopt($curl, CURLOPT_HTTPHEADER, $auth_header);
|
143 |
+
}
|
144 |
+
|
145 |
+
$data = curl_exec($curl); $header = curl_getinfo($curl); curl_close($curl);
|
146 |
+
if ($this->debug) echo $data . "\n";
|
147 |
+
if (trim($data)=='' && $header['http_code']=='201') $data = '201';
|
148 |
+
return $data;
|
149 |
+
}
|
150 |
+
|
151 |
+
}
|
apis/tmhOAuth.php
ADDED
@@ -0,0 +1,665 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* tmhOAuth
|
4 |
+
*
|
5 |
+
* An OAuth 1.0A library written in PHP.
|
6 |
+
* The library supports file uploading using multipart/form as well as general
|
7 |
+
* REST requests. OAuth authentication is sent using the an Authorization Header.
|
8 |
+
*
|
9 |
+
* @author themattharris
|
10 |
+
* @version 0.61
|
11 |
+
*
|
12 |
+
* 16 January 2012
|
13 |
+
*/
|
14 |
+
class NXS_tmhOAuth {
|
15 |
+
const VERSION = 0.61;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Creates a new tmhOAuth object
|
19 |
+
*
|
20 |
+
* @param string $config, the configuration to use for this request
|
21 |
+
*/
|
22 |
+
function __construct($config) {
|
23 |
+
$this->params = array();
|
24 |
+
$this->headers = array();
|
25 |
+
$this->auto_fixed_time = false;
|
26 |
+
$this->buffer = null;
|
27 |
+
|
28 |
+
// default configuration options
|
29 |
+
$this->config = array_merge(
|
30 |
+
array(
|
31 |
+
// leave 'user_agent' blank for default, otherwise set this to
|
32 |
+
// something that clearly identifies your app
|
33 |
+
'user_agent' => '',
|
34 |
+
|
35 |
+
'use_ssl' => false,
|
36 |
+
'host' => 'api.twitter.com',
|
37 |
+
|
38 |
+
'consumer_key' => '',
|
39 |
+
'consumer_secret' => '',
|
40 |
+
'user_token' => '',
|
41 |
+
'user_secret' => '',
|
42 |
+
'force_nonce' => false,
|
43 |
+
'nonce' => false, // used for checking signatures. leave as false for auto
|
44 |
+
'force_timestamp' => false,
|
45 |
+
'timestamp' => false, // used for checking signatures. leave as false for auto
|
46 |
+
|
47 |
+
// oauth signing variables that are not dynamic
|
48 |
+
'oauth_version' => '1.0',
|
49 |
+
'oauth_signature_method' => 'HMAC-SHA1',
|
50 |
+
|
51 |
+
// you probably don't want to change any of these curl values
|
52 |
+
'curl_connecttimeout' => 30,
|
53 |
+
'curl_timeout' => 10,
|
54 |
+
|
55 |
+
// for security this should always be set to 2.
|
56 |
+
'curl_ssl_verifyhost' => 2,
|
57 |
+
// for security this should always be set to true.
|
58 |
+
'curl_ssl_verifypeer' => true,
|
59 |
+
|
60 |
+
// you can get the latest cacert.pem from here http://curl.haxx.se/ca/cacert.pem
|
61 |
+
'curl_cainfo' => dirname(__FILE__) . '/cacert.pem',
|
62 |
+
'curl_capath' => dirname(__FILE__),
|
63 |
+
|
64 |
+
'curl_followlocation' => false, // whether to follow redirects or not
|
65 |
+
|
66 |
+
// support for proxy servers
|
67 |
+
'curl_proxy' => false, // really you don't want to use this if you are using streaming
|
68 |
+
'curl_proxyuserpwd' => false, // format username:password for proxy, if required
|
69 |
+
'curl_encoding' => '', // leave blank for all supported formats, else use gzip, deflate, identity
|
70 |
+
|
71 |
+
// streaming API
|
72 |
+
'is_streaming' => false,
|
73 |
+
'streaming_eol' => "\r\n",
|
74 |
+
'streaming_metrics_interval' => 60,
|
75 |
+
|
76 |
+
// header or querystring. You should always use header!
|
77 |
+
// this is just to help me debug other developers implementations
|
78 |
+
'as_header' => true,
|
79 |
+
'debug' => false,
|
80 |
+
),
|
81 |
+
$config
|
82 |
+
);
|
83 |
+
$this->set_user_agent();
|
84 |
+
}
|
85 |
+
|
86 |
+
function set_user_agent() {
|
87 |
+
if (!empty($this->config['user_agent']))
|
88 |
+
return;
|
89 |
+
|
90 |
+
if ($this->config['curl_ssl_verifyhost'] && $this->config['curl_ssl_verifypeer']) {
|
91 |
+
$ssl = '+SSL';
|
92 |
+
} else {
|
93 |
+
$ssl = '-SSL';
|
94 |
+
}
|
95 |
+
|
96 |
+
$ua = 'tmhOAuth ' . self::VERSION . $ssl . ' - //github.com/themattharris/tmhOAuth';
|
97 |
+
$this->config['user_agent'] = $ua;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Generates a random OAuth nonce.
|
102 |
+
* If 'force_nonce' is true a nonce is not generated and the value in the configuration will be retained.
|
103 |
+
*
|
104 |
+
* @param string $length how many characters the nonce should be before MD5 hashing. default 12
|
105 |
+
* @param string $include_time whether to include time at the beginning of the nonce. default true
|
106 |
+
* @return void
|
107 |
+
*/
|
108 |
+
private function create_nonce($length=12, $include_time=true) {
|
109 |
+
if ($this->config['force_nonce'] == false) {
|
110 |
+
$sequence = array_merge(range(0,9), range('A','Z'), range('a','z'));
|
111 |
+
$length = $length > count($sequence) ? count($sequence) : $length;
|
112 |
+
shuffle($sequence);
|
113 |
+
|
114 |
+
$prefix = $include_time ? microtime() : '';
|
115 |
+
$this->config['nonce'] = md5(substr($prefix . implode('', $sequence), 0, $length));
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Generates a timestamp.
|
121 |
+
* If 'force_timestamp' is true a nonce is not generated and the value in the configuration will be retained.
|
122 |
+
*
|
123 |
+
* @return void
|
124 |
+
*/
|
125 |
+
private function create_timestamp() {
|
126 |
+
$this->config['timestamp'] = ($this->config['force_timestamp'] == false ? time() : $this->config['timestamp']); //echo "#### ".$this->config['timestamp'];// prr($this->config);
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Encodes the string or array passed in a way compatible with OAuth.
|
131 |
+
* If an array is passed each array value will will be encoded.
|
132 |
+
*
|
133 |
+
* @param mixed $data the scalar or array to encode
|
134 |
+
* @return $data encoded in a way compatible with OAuth
|
135 |
+
*/
|
136 |
+
private function safe_encode($data) {
|
137 |
+
if (is_array($data)) {
|
138 |
+
return array_map(array($this, 'safe_encode'), $data);
|
139 |
+
} else if (is_scalar($data)) {
|
140 |
+
return str_ireplace(
|
141 |
+
array('+', '%7E'),
|
142 |
+
array(' ', '~'),
|
143 |
+
rawurlencode($data)
|
144 |
+
);
|
145 |
+
} else {
|
146 |
+
return '';
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Decodes the string or array from it's URL encoded form
|
152 |
+
* If an array is passed each array value will will be decoded.
|
153 |
+
*
|
154 |
+
* @param mixed $data the scalar or array to decode
|
155 |
+
* @return $data decoded from the URL encoded form
|
156 |
+
*/
|
157 |
+
private function safe_decode($data) {
|
158 |
+
if (is_array($data)) {
|
159 |
+
return array_map(array($this, 'safe_decode'), $data);
|
160 |
+
} else if (is_scalar($data)) {
|
161 |
+
return rawurldecode($data);
|
162 |
+
} else {
|
163 |
+
return '';
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Returns an array of the standard OAuth parameters.
|
169 |
+
*
|
170 |
+
* @return array all required OAuth parameters, safely encoded
|
171 |
+
*/
|
172 |
+
private function get_defaults() {
|
173 |
+
$defaults = array(
|
174 |
+
'oauth_version' => $this->config['oauth_version'],
|
175 |
+
'oauth_nonce' => $this->config['nonce'],
|
176 |
+
'oauth_timestamp' => $this->config['timestamp'],
|
177 |
+
'oauth_consumer_key' => $this->config['consumer_key'],
|
178 |
+
'oauth_signature_method' => $this->config['oauth_signature_method'],
|
179 |
+
);
|
180 |
+
|
181 |
+
// include the user token if it exists
|
182 |
+
if ( $this->config['user_token'] )
|
183 |
+
$defaults['oauth_token'] = $this->config['user_token'];
|
184 |
+
|
185 |
+
// safely encode
|
186 |
+
foreach ($defaults as $k => $v) {
|
187 |
+
$_defaults[$this->safe_encode($k)] = $this->safe_encode($v);
|
188 |
+
}
|
189 |
+
|
190 |
+
return $_defaults;
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Extracts and decodes OAuth parameters from the passed string
|
195 |
+
*
|
196 |
+
* @param string $body the response body from an OAuth flow method
|
197 |
+
* @return array the response body safely decoded to an array of key => values
|
198 |
+
*/
|
199 |
+
function extract_params($body) {
|
200 |
+
$kvs = explode('&', $body);
|
201 |
+
$decoded = array();
|
202 |
+
foreach ($kvs as $kv) {
|
203 |
+
$kv = explode('=', $kv, 2);
|
204 |
+
$kv[0] = $this->safe_decode($kv[0]);
|
205 |
+
$kv[1] = $this->safe_decode($kv[1]);
|
206 |
+
$decoded[$kv[0]] = $kv[1];
|
207 |
+
}
|
208 |
+
return $decoded;
|
209 |
+
}
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Prepares the HTTP method for use in the base string by converting it to
|
213 |
+
* uppercase.
|
214 |
+
*
|
215 |
+
* @param string $method an HTTP method such as GET or POST
|
216 |
+
* @return void value is stored to a class variable
|
217 |
+
* @author themattharris
|
218 |
+
*/
|
219 |
+
private function prepare_method($method) {
|
220 |
+
$this->method = strtoupper($method);
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Prepares the URL for use in the base string by ripping it apart and
|
225 |
+
* reconstructing it.
|
226 |
+
*
|
227 |
+
* Ref: 3.4.1.2
|
228 |
+
*
|
229 |
+
* @param string $url the request URL
|
230 |
+
* @return void value is stored to a class variable
|
231 |
+
* @author themattharris
|
232 |
+
*/
|
233 |
+
private function prepare_url($url) {
|
234 |
+
$parts = parse_url($url);
|
235 |
+
|
236 |
+
$port = isset($parts['port']) ? $parts['port'] : false;
|
237 |
+
$scheme = $parts['scheme'];
|
238 |
+
$host = $parts['host'];
|
239 |
+
$path = isset($parts['path']) ? $parts['path'] : false;
|
240 |
+
|
241 |
+
$port or $port = ($scheme == 'https') ? '443' : '80';
|
242 |
+
|
243 |
+
if (($scheme == 'https' && $port != '443')
|
244 |
+
|| ($scheme == 'http' && $port != '80')) {
|
245 |
+
$host = "$host:$port";
|
246 |
+
}
|
247 |
+
$this->url = strtolower("$scheme://$host$path");
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Prepares all parameters for the base string and request.
|
252 |
+
* Multipart parameters are ignored as they are not defined in the specification,
|
253 |
+
* all other types of parameter are encoded for compatibility with OAuth.
|
254 |
+
*
|
255 |
+
* @param array $params the parameters for the request
|
256 |
+
* @return void prepared values are stored in class variables
|
257 |
+
*/
|
258 |
+
private function prepare_params($params) {
|
259 |
+
// do not encode multipart parameters, leave them alone
|
260 |
+
if ($this->config['multipart']) {
|
261 |
+
$this->request_params = $params;
|
262 |
+
$params = array();
|
263 |
+
}
|
264 |
+
|
265 |
+
// signing parameters are request parameters + OAuth default parameters
|
266 |
+
$this->signing_params = array_merge($this->get_defaults(), (array)$params);
|
267 |
+
|
268 |
+
// Remove oauth_signature if present
|
269 |
+
// Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
|
270 |
+
if (isset($this->signing_params['oauth_signature'])) {
|
271 |
+
unset($this->signing_params['oauth_signature']);
|
272 |
+
}
|
273 |
+
|
274 |
+
// Parameters are sorted by name, using lexicographical byte value ordering.
|
275 |
+
// Ref: Spec: 9.1.1 (1)
|
276 |
+
uksort($this->signing_params, 'strcmp');
|
277 |
+
|
278 |
+
// encode. Also sort the signed parameters from the POST parameters
|
279 |
+
foreach ($this->signing_params as $k => $v) {
|
280 |
+
$k = $this->safe_encode($k);
|
281 |
+
$v = $this->safe_encode($v);
|
282 |
+
$_signing_params[$k] = $v;
|
283 |
+
$kv[] = "{$k}={$v}";
|
284 |
+
}
|
285 |
+
|
286 |
+
// auth params = the default oauth params which are present in our collection of signing params
|
287 |
+
$this->auth_params = array_intersect_key($this->get_defaults(), $_signing_params);
|
288 |
+
if (isset($_signing_params['oauth_callback'])) {
|
289 |
+
$this->auth_params['oauth_callback'] = $_signing_params['oauth_callback'];
|
290 |
+
unset($_signing_params['oauth_callback']);
|
291 |
+
}
|
292 |
+
|
293 |
+
if (isset($_signing_params['oauth_verifier'])) {
|
294 |
+
$this->auth_params['oauth_verifier'] = $_signing_params['oauth_verifier'];
|
295 |
+
unset($_signing_params['oauth_verifier']);
|
296 |
+
}
|
297 |
+
|
298 |
+
// request_params is already set if we're doing multipart, if not we need to set them now
|
299 |
+
if ( ! $this->config['multipart'])
|
300 |
+
$this->request_params = array_diff_key($_signing_params, $this->get_defaults());
|
301 |
+
|
302 |
+
// create the parameter part of the base string
|
303 |
+
$this->signing_params = implode('&', $kv);
|
304 |
+
}
|
305 |
+
|
306 |
+
/**
|
307 |
+
* Prepares the OAuth signing key
|
308 |
+
*
|
309 |
+
* @return void prepared signing key is stored in a class variables
|
310 |
+
*/
|
311 |
+
private function prepare_signing_key() {
|
312 |
+
$this->signing_key = $this->safe_encode($this->config['consumer_secret']) . '&' . $this->safe_encode($this->config['user_secret']);
|
313 |
+
}
|
314 |
+
|
315 |
+
/**
|
316 |
+
* Prepare the base string.
|
317 |
+
* Ref: Spec: 9.1.3 ("Concatenate Request Elements")
|
318 |
+
*
|
319 |
+
* @return void prepared base string is stored in a class variables
|
320 |
+
*/
|
321 |
+
private function prepare_base_string() {
|
322 |
+
$base = array(
|
323 |
+
$this->method,
|
324 |
+
$this->url,
|
325 |
+
$this->signing_params
|
326 |
+
);
|
327 |
+
$this->base_string = implode('&', $this->safe_encode($base));
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Prepares the Authorization header
|
332 |
+
*
|
333 |
+
* @return void prepared authorization header is stored in a class variables
|
334 |
+
*/
|
335 |
+
private function prepare_auth_header() {
|
336 |
+
$this->headers = array();
|
337 |
+
uksort($this->auth_params, 'strcmp');
|
338 |
+
if (!$this->config['as_header']) :
|
339 |
+
$this->request_params = array_merge($this->request_params, $this->auth_params);
|
340 |
+
return;
|
341 |
+
endif;
|
342 |
+
|
343 |
+
foreach ($this->auth_params as $k => $v) {
|
344 |
+
$kv[] = "{$k}=\"{$v}\"";
|
345 |
+
}
|
346 |
+
$this->auth_header = 'OAuth ' . implode(', ', $kv);
|
347 |
+
$this->headers['Authorization'] = $this->auth_header;
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* Signs the request and adds the OAuth signature. This runs all the request
|
352 |
+
* parameter preparation methods.
|
353 |
+
*
|
354 |
+
* @param string $method the HTTP method being used. e.g. POST, GET, HEAD etc
|
355 |
+
* @param string $url the request URL without query string parameters
|
356 |
+
* @param array $params the request parameters as an array of key=value pairs
|
357 |
+
* @param string $useauth whether to use authentication when making the request.
|
358 |
+
*/
|
359 |
+
private function sign($method, $url, $params, $useauth) {
|
360 |
+
$this->prepare_method($method);
|
361 |
+
$this->prepare_url($url);
|
362 |
+
$this->prepare_params($params);
|
363 |
+
|
364 |
+
// we don't sign anything is we're not using auth
|
365 |
+
if ($useauth) {
|
366 |
+
$this->prepare_base_string();
|
367 |
+
$this->prepare_signing_key();
|
368 |
+
|
369 |
+
$this->auth_params['oauth_signature'] = $this->safe_encode(
|
370 |
+
base64_encode(
|
371 |
+
hash_hmac(
|
372 |
+
'sha1', $this->base_string, $this->signing_key, true
|
373 |
+
)));
|
374 |
+
|
375 |
+
$this->prepare_auth_header();
|
376 |
+
}
|
377 |
+
}
|
378 |
+
|
379 |
+
/**
|
380 |
+
* Make an HTTP request using this library. This method doesn't return anything.
|
381 |
+
* Instead the response should be inspected directly.
|
382 |
+
*
|
383 |
+
* @param string $method the HTTP method being used. e.g. POST, GET, HEAD etc
|
384 |
+
* @param string $url the request URL without query string parameters
|
385 |
+
* @param array $params the request parameters as an array of key=value pairs
|
386 |
+
* @param string $useauth whether to use authentication when making the request. Default true.
|
387 |
+
* @param string $multipart whether this request contains multipart data. Default false
|
388 |
+
*/
|
389 |
+
function request($method, $url, $params=array(), $useauth=true, $multipart=false) {
|
390 |
+
$this->config['multipart'] = $multipart;
|
391 |
+
|
392 |
+
$this->create_nonce();
|
393 |
+
$this->create_timestamp();
|
394 |
+
|
395 |
+
$this->sign($method, $url, $params, $useauth);
|
396 |
+
return $this->curlit();
|
397 |
+
}
|
398 |
+
|
399 |
+
/**
|
400 |
+
* Make a long poll HTTP request using this library. This method is
|
401 |
+
* different to the other request methods as it isn't supposed to disconnect
|
402 |
+
*
|
403 |
+
* Using this method expects a callback which will receive the streaming
|
404 |
+
* responses.
|
405 |
+
*
|
406 |
+
* @param string $method the HTTP method being used. e.g. POST, GET, HEAD etc
|
407 |
+
* @param string $url the request URL without query string parameters
|
408 |
+
* @param array $params the request parameters as an array of key=value pairs
|
409 |
+
* @param string $callback the callback function to stream the buffer to.
|
410 |
+
*/
|
411 |
+
function streaming_request($method, $url, $params=array(), $callback='') {
|
412 |
+
if ( ! empty($callback) ) {
|
413 |
+
if ( ! function_exists($callback) ) {
|
414 |
+
return false;
|
415 |
+
}
|
416 |
+
$this->config['streaming_callback'] = $callback;
|
417 |
+
}
|
418 |
+
$this->metrics['start'] = time();
|
419 |
+
$this->metrics['interval_start'] = $this->metrics['start'];
|
420 |
+
$this->metrics['tweets'] = 0;
|
421 |
+
$this->metrics['last_tweets'] = 0;
|
422 |
+
$this->metrics['bytes'] = 0;
|
423 |
+
$this->metrics['last_bytes'] = 0;
|
424 |
+
$this->config['is_streaming'] = true;
|
425 |
+
$this->request($method, $url, $params);
|
426 |
+
}
|
427 |
+
|
428 |
+
/**
|
429 |
+
* Handles the updating of the current Streaming API metrics.
|
430 |
+
*/
|
431 |
+
function update_metrics() {
|
432 |
+
$now = time();
|
433 |
+
if (($this->metrics['interval_start'] + $this->config['streaming_metrics_interval']) > $now)
|
434 |
+
return false;
|
435 |
+
|
436 |
+
$this->metrics['tps'] = round( ($this->metrics['tweets'] - $this->metrics['last_tweets']) / $this->config['streaming_metrics_interval'], 2);
|
437 |
+
$this->metrics['bps'] = round( ($this->metrics['bytes'] - $this->metrics['last_bytes']) / $this->config['streaming_metrics_interval'], 2);
|
438 |
+
|
439 |
+
$this->metrics['last_bytes'] = $this->metrics['bytes'];
|
440 |
+
$this->metrics['last_tweets'] = $this->metrics['tweets'];
|
441 |
+
$this->metrics['interval_start'] = $now;
|
442 |
+
return $this->metrics;
|
443 |
+
}
|
444 |
+
|
445 |
+
/**
|
446 |
+
* Utility function to create the request URL in the requested format
|
447 |
+
*
|
448 |
+
* @param string $request the API method without extension
|
449 |
+
* @param string $format the format of the response. Default json. Set to an empty string to exclude the format
|
450 |
+
* @return string the concatenation of the host, API version, API method and format
|
451 |
+
*/
|
452 |
+
function url($request, $format='json') {
|
453 |
+
$format = strlen($format) > 0 ? ".$format" : '';
|
454 |
+
$proto = $this->config['use_ssl'] ? 'https:/' : 'http:/';
|
455 |
+
|
456 |
+
// backwards compatibility with v0.1
|
457 |
+
if (isset($this->config['v']))
|
458 |
+
$this->config['host'] = $this->config['host'] . '/' . $this->config['v'];
|
459 |
+
|
460 |
+
return implode('/', array(
|
461 |
+
$proto,
|
462 |
+
$this->config['host'],
|
463 |
+
$request . $format
|
464 |
+
));
|
465 |
+
}
|
466 |
+
|
467 |
+
/**
|
468 |
+
* Public access to the private safe decode/encode methods
|
469 |
+
*
|
470 |
+
* @param string $text the text to transform
|
471 |
+
* @param string $mode the transformation mode. either encode or decode
|
472 |
+
* @return the string as transformed by the given mode
|
473 |
+
*/
|
474 |
+
function transformText($text, $mode='encode') {
|
475 |
+
return $this->{"safe_$mode"}($text);
|
476 |
+
}
|
477 |
+
|
478 |
+
/**
|
479 |
+
* Utility function to parse the returned curl headers and store them in the
|
480 |
+
* class array variable.
|
481 |
+
*
|
482 |
+
* @param object $ch curl handle
|
483 |
+
* @param string $header the response headers
|
484 |
+
* @return the string length of the header
|
485 |
+
*/
|
486 |
+
private function curlHeader($ch, $header) {
|
487 |
+
$i = strpos($header, ':');
|
488 |
+
if ( ! empty($i) ) {
|
489 |
+
$key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
|
490 |
+
$value = trim(substr($header, $i + 2));
|
491 |
+
$this->response['headers'][$key] = $value;
|
492 |
+
}
|
493 |
+
return strlen($header);
|
494 |
+
}
|
495 |
+
|
496 |
+
/**
|
497 |
+
* Utility function to parse the returned curl buffer and store them until
|
498 |
+
* an EOL is found. The buffer for curl is an undefined size so we need
|
499 |
+
* to collect the content until an EOL is found.
|
500 |
+
*
|
501 |
+
* This function calls the previously defined streaming callback method.
|
502 |
+
*
|
503 |
+
* @param object $ch curl handle
|
504 |
+
* @param string $data the current curl buffer
|
505 |
+
*/
|
506 |
+
private function curlWrite($ch, $data) {
|
507 |
+
$l = strlen($data);
|
508 |
+
if (strpos($data, $this->config['streaming_eol']) === false) {
|
509 |
+
$this->buffer .= $data;
|
510 |
+
return $l;
|
511 |
+
}
|
512 |
+
|
513 |
+
$buffered = explode($this->config['streaming_eol'], $data);
|
514 |
+
$content = $this->buffer . $buffered[0];
|
515 |
+
|
516 |
+
$this->metrics['tweets']++;
|
517 |
+
$this->metrics['bytes'] += strlen($content);
|
518 |
+
|
519 |
+
if ( ! function_exists($this->config['streaming_callback']))
|
520 |
+
return 0;
|
521 |
+
|
522 |
+
$metrics = $this->update_metrics();
|
523 |
+
$stop = call_user_func(
|
524 |
+
$this->config['streaming_callback'],
|
525 |
+
$content,
|
526 |
+
strlen($content),
|
527 |
+
$metrics
|
528 |
+
);
|
529 |
+
$this->buffer = $buffered[1];
|
530 |
+
if ($stop)
|
531 |
+
return 0;
|
532 |
+
|
533 |
+
return $l;
|
534 |
+
}
|
535 |
+
|
536 |
+
/**
|
537 |
+
* Makes a curl request. Takes no parameters as all should have been prepared
|
538 |
+
* by the request method
|
539 |
+
*
|
540 |
+
* @return void response data is stored in the class variable 'response'
|
541 |
+
*/
|
542 |
+
private function curlit() {
|
543 |
+
// method handling
|
544 |
+
switch ($this->method) {
|
545 |
+
case 'POST':
|
546 |
+
break;
|
547 |
+
default:
|
548 |
+
// GET, DELETE request so convert the parameters to a querystring
|
549 |
+
if ( ! empty($this->request_params)) {
|
550 |
+
foreach ($this->request_params as $k => $v) {
|
551 |
+
// Multipart params haven't been encoded yet.
|
552 |
+
// Not sure why you would do a multipart GET but anyway, here's the support for it
|
553 |
+
if ($this->config['multipart']) {
|
554 |
+
$params[] = $this->safe_encode($k) . '=' . $this->safe_encode($v);
|
555 |
+
} else {
|
556 |
+
$params[] = $k . '=' . $v;
|
557 |
+
}
|
558 |
+
}
|
559 |
+
$qs = implode('&', $params);
|
560 |
+
$this->url = strlen($qs) > 0 ? $this->url . '?' . $qs : $this->url;
|
561 |
+
$this->request_params = array();
|
562 |
+
}
|
563 |
+
break;
|
564 |
+
}
|
565 |
+
|
566 |
+
// configure curl
|
567 |
+
$c = curl_init();
|
568 |
+
curl_setopt_array($c, array(
|
569 |
+
CURLOPT_USERAGENT => $this->config['user_agent'],
|
570 |
+
CURLOPT_CONNECTTIMEOUT => $this->config['curl_connecttimeout'],
|
571 |
+
CURLOPT_TIMEOUT => $this->config['curl_timeout'],
|
572 |
+
CURLOPT_RETURNTRANSFER => true,
|
573 |
+
CURLOPT_SSL_VERIFYPEER => $this->config['curl_ssl_verifypeer'],
|
574 |
+
CURLOPT_SSL_VERIFYHOST => $this->config['curl_ssl_verifyhost'],
|
575 |
+
|
576 |
+
CURLOPT_FOLLOWLOCATION => $this->config['curl_followlocation'],
|
577 |
+
CURLOPT_PROXY => $this->config['curl_proxy'],
|
578 |
+
CURLOPT_ENCODING => $this->config['curl_encoding'],
|
579 |
+
CURLOPT_URL => $this->url,
|
580 |
+
// process the headers
|
581 |
+
CURLOPT_HEADERFUNCTION => array($this, 'curlHeader'),
|
582 |
+
CURLOPT_HEADER => false,
|
583 |
+
CURLINFO_HEADER_OUT => true,
|
584 |
+
));
|
585 |
+
|
586 |
+
if ($this->config['curl_cainfo'] !== false)
|
587 |
+
curl_setopt($c, CURLOPT_CAINFO, $this->config['curl_cainfo']);
|
588 |
+
|
589 |
+
if ($this->config['curl_capath'] !== false)
|
590 |
+
curl_setopt($c, CURLOPT_CAPATH, $this->config['curl_capath']);
|
591 |
+
|
592 |
+
if ($this->config['curl_proxyuserpwd'] !== false)
|
593 |
+
curl_setopt($c, CURLOPT_PROXYUSERPWD, $this->config['curl_proxyuserpwd']);
|
594 |
+
|
595 |
+
if ($this->config['is_streaming']) {
|
596 |
+
// process the body
|
597 |
+
$this->response['content-length'] = 0;
|
598 |
+
curl_setopt($c, CURLOPT_TIMEOUT, 0);
|
599 |
+
curl_setopt($c, CURLOPT_WRITEFUNCTION, array($this, 'curlWrite'));
|
600 |
+
}
|
601 |
+
|
602 |
+
switch ($this->method) {
|
603 |
+
case 'GET':
|
604 |
+
break;
|
605 |
+
case 'POST':
|
606 |
+
curl_setopt($c, CURLOPT_POST, true);
|
607 |
+
break;
|
608 |
+
default:
|
609 |
+
curl_setopt($c, CURLOPT_CUSTOMREQUEST, $this->method);
|
610 |
+
}
|
611 |
+
|
612 |
+
if ( ! empty($this->request_params) ) {
|
613 |
+
// if not doing multipart we need to implode the parameters
|
614 |
+
if ( ! $this->config['multipart'] ) {
|
615 |
+
foreach ($this->request_params as $k => $v) {
|
616 |
+
$ps[] = "{$k}={$v}";
|
617 |
+
}
|
618 |
+
$this->request_params = implode('&', $ps);
|
619 |
+
}
|
620 |
+
curl_setopt($c, CURLOPT_POSTFIELDS, $this->request_params);
|
621 |
+
} else {
|
622 |
+
// CURL will set length to -1 when there is no data, which breaks Twitter
|
623 |
+
$this->headers['Content-Type'] = '';
|
624 |
+
$this->headers['Content-Length'] = '';
|
625 |
+
}
|
626 |
+
|
627 |
+
// CURL defaults to setting this to Expect: 100-Continue which Twitter rejects
|
628 |
+
$this->headers['Expect'] = '';
|
629 |
+
|
630 |
+
if ( ! empty($this->headers)) {
|
631 |
+
foreach ($this->headers as $k => $v) {
|
632 |
+
$headers[] = trim($k . ': ' . $v);
|
633 |
+
}
|
634 |
+
curl_setopt($c, CURLOPT_HTTPHEADER, $headers);
|
635 |
+
}
|
636 |
+
|
637 |
+
if (isset($this->config['prevent_request']) && true == $this->config['prevent_request'])
|
638 |
+
return;
|
639 |
+
|
640 |
+
// do it!
|
641 |
+
$response = curl_exec($c);
|
642 |
+
|
643 |
+
if (curl_errno($c) == 60) { // CURLE_SSL_CACERT
|
644 |
+
curl_setopt($c, CURLOPT_CAINFO, 0);
|
645 |
+
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
|
646 |
+
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false);
|
647 |
+
|
648 |
+
$response = curl_exec($c);
|
649 |
+
}
|
650 |
+
|
651 |
+
$code = curl_getinfo($c, CURLINFO_HTTP_CODE);
|
652 |
+
$info = curl_getinfo($c);
|
653 |
+
$error = curl_error($c);
|
654 |
+
$errno = curl_errno($c);
|
655 |
+
curl_close($c);
|
656 |
+
|
657 |
+
// store the response
|
658 |
+
$this->response['code'] = $code;
|
659 |
+
$this->response['response'] = $response;
|
660 |
+
$this->response['info'] = $info;
|
661 |
+
$this->response['error'] = $error;
|
662 |
+
$this->response['errno'] = $errno;
|
663 |
+
return $code;
|
664 |
+
}
|
665 |
+
}
|
apis/tmhUtilities.php
ADDED
@@ -0,0 +1,249 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* tmhUtilities
|
4 |
+
*
|
5 |
+
* Helpful utility and Twitter formatting functions
|
6 |
+
*
|
7 |
+
* @author themattharris
|
8 |
+
* @version 0.2
|
9 |
+
*
|
10 |
+
* 29 September 2011
|
11 |
+
*/
|
12 |
+
class NXS_tmhUtilities {
|
13 |
+
/**
|
14 |
+
* Entifies the tweet using the given entities element
|
15 |
+
*
|
16 |
+
* @param array $tweet the json converted to normalised array
|
17 |
+
* @return the tweet text with entities replaced with hyperlinks
|
18 |
+
*/
|
19 |
+
function entify($tweet, &$replacements=array()) {
|
20 |
+
$encoding = mb_internal_encoding();
|
21 |
+
mb_internal_encoding("UTF-8");
|
22 |
+
|
23 |
+
$keys = array();
|
24 |
+
// $replacements = array();
|
25 |
+
$is_retweet = false;
|
26 |
+
|
27 |
+
if (isset($tweet['retweeted_status'])) {
|
28 |
+
$tweet = $tweet['retweeted_status'];
|
29 |
+
$is_retweet = true;
|
30 |
+
}
|
31 |
+
|
32 |
+
if (!isset($tweet['entities'])) {
|
33 |
+
return $tweet['text'];
|
34 |
+
}
|
35 |
+
|
36 |
+
// prepare the entities
|
37 |
+
foreach ($tweet['entities'] as $type => $things) {
|
38 |
+
foreach ($things as $entity => $value) {
|
39 |
+
$tweet_link = "<a href=\"http://twitter.com/{$tweet['user']['screen_name']}/statuses/{$tweet['id']}\">{$tweet['created_at']}</a>";
|
40 |
+
|
41 |
+
switch ($type) {
|
42 |
+
case 'hashtags':
|
43 |
+
$href = "<a href=\"http://twitter.com/search?q=%23{$value['text']}\">#{$value['text']}</a>";
|
44 |
+
break;
|
45 |
+
case 'user_mentions':
|
46 |
+
$href = "@<a href=\"http://twitter.com/{$value['screen_name']}\" title=\"{$value['name']}\">{$value['screen_name']}</a>";
|
47 |
+
break;
|
48 |
+
case 'urls':
|
49 |
+
case 'media':
|
50 |
+
$url = empty($value['expanded_url']) ? $value['url'] : $value['expanded_url'];
|
51 |
+
$display = isset($value['display_url']) ? $value['display_url'] : str_replace('http://', '', $url);
|
52 |
+
// Not all pages are served in UTF-8 so you may need to do this ...
|
53 |
+
$display = urldecode(str_replace('%E2%80%A6', '…', urlencode($display)));
|
54 |
+
$href = "<a href=\"{$value['url']}\">{$display}</a>";
|
55 |
+
break;
|
56 |
+
}
|
57 |
+
$keys[$value['indices']['0']] = mb_substr(
|
58 |
+
$tweet['text'],
|
59 |
+
$value['indices']['0'],
|
60 |
+
$value['indices']['1'] - $value['indices']['0']
|
61 |
+
);
|
62 |
+
$replacements[$value['indices']['0']] = $href;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
ksort($replacements);
|
67 |
+
$replacements = array_reverse($replacements, true);
|
68 |
+
$entified_tweet = $tweet['text'];
|
69 |
+
foreach ($replacements as $k => $v) {
|
70 |
+
// $entified_tweet = substr_replace($entified_tweet, $v, $k, strlen($keys[$k]));
|
71 |
+
$entified_tweet = mb_substr($entified_tweet, 0, $k).$v.mb_substr($entified_tweet, $k + strlen($keys[$k]));
|
72 |
+
}
|
73 |
+
$replacements = array(
|
74 |
+
'replacements' => $replacements,
|
75 |
+
'keys' => $keys
|
76 |
+
);
|
77 |
+
|
78 |
+
mb_internal_encoding($encoding);
|
79 |
+
return $entified_tweet;
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Returns the current URL. This is instead of PHP_SELF which is unsafe
|
84 |
+
*
|
85 |
+
* @param bool $dropqs whether to drop the querystring or not. Default true
|
86 |
+
* @return string the current URL
|
87 |
+
*/
|
88 |
+
function php_self($dropqs=true) {
|
89 |
+
$url = sprintf('%s://%s%s',
|
90 |
+
empty($_SERVER['HTTPS']) ? (@$_SERVER['SERVER_PORT'] == '443' ? 'https' : 'http') : 'http',
|
91 |
+
$_SERVER['SERVER_NAME'],
|
92 |
+
$_SERVER['REQUEST_URI']
|
93 |
+
);
|
94 |
+
|
95 |
+
$parts = parse_url($url);
|
96 |
+
|
97 |
+
$port = $_SERVER['SERVER_PORT'];
|
98 |
+
$scheme = $parts['scheme'];
|
99 |
+
$host = $parts['host'];
|
100 |
+
$path = @$parts['path'];
|
101 |
+
$qs = @$parts['query'];
|
102 |
+
|
103 |
+
$port or $port = ($scheme == 'https') ? '443' : '80';
|
104 |
+
|
105 |
+
if (($scheme == 'https' && $port != '443')
|
106 |
+
|| ($scheme == 'http' && $port != '80')) {
|
107 |
+
$host = "$host:$port";
|
108 |
+
}
|
109 |
+
$url = "$scheme://$host$path";
|
110 |
+
if ( ! $dropqs)
|
111 |
+
return "{$url}?{$qs}";
|
112 |
+
else
|
113 |
+
return $url;
|
114 |
+
}
|
115 |
+
|
116 |
+
function is_cli() {
|
117 |
+
return (PHP_SAPI == 'cli' && empty($_SERVER['REMOTE_ADDR']));
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Debug function for printing the content of an object
|
122 |
+
*
|
123 |
+
* @param mixes $obj
|
124 |
+
*/
|
125 |
+
function pr($obj) {
|
126 |
+
|
127 |
+
if (!self::is_cli())
|
128 |
+
echo '<pre style="word-wrap: break-word">';
|
129 |
+
if ( is_object($obj) )
|
130 |
+
print_r($obj);
|
131 |
+
elseif ( is_array($obj) )
|
132 |
+
print_r($obj);
|
133 |
+
else
|
134 |
+
echo $obj;
|
135 |
+
if (!self::is_cli())
|
136 |
+
echo '</pre>';
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Make an HTTP request using this library. This method is different to 'request'
|
141 |
+
* because on a 401 error it will retry the request.
|
142 |
+
*
|
143 |
+
* When a 401 error is returned it is possible the timestamp of the client is
|
144 |
+
* too different to that of the API server. In this situation it is recommended
|
145 |
+
* the request is retried with the OAuth timestamp set to the same as the API
|
146 |
+
* server. This method will automatically try that technique.
|
147 |
+
*
|
148 |
+
* This method doesn't return anything. Instead the response should be
|
149 |
+
* inspected directly.
|
150 |
+
*
|
151 |
+
* @param string $method the HTTP method being used. e.g. POST, GET, HEAD etc
|
152 |
+
* @param string $url the request URL without query string parameters
|
153 |
+
* @param array $params the request parameters as an array of key=value pairs
|
154 |
+
* @param string $useauth whether to use authentication when making the request. Default true.
|
155 |
+
* @param string $multipart whether this request contains multipart data. Default false
|
156 |
+
*/
|
157 |
+
function auto_fix_time_request($tmhOAuth, $method, $url, $params=array(), $useauth=true, $multipart=false) {
|
158 |
+
$tmhOAuth->request($method, $url, $params, $useauth, $multipart);
|
159 |
+
|
160 |
+
// if we're not doing auth the timestamp isn't important
|
161 |
+
if ( ! $useauth)
|
162 |
+
return;
|
163 |
+
|
164 |
+
// some error that isn't a 401
|
165 |
+
if ($tmhOAuth->response['code'] != 401)
|
166 |
+
return;
|
167 |
+
|
168 |
+
// some error that is a 401 but isn't because the OAuth token and signature are incorrect
|
169 |
+
// TODO: this check is horrid but helps avoid requesting twice when the username and password are wrong
|
170 |
+
if (stripos($tmhOAuth->response['response'], 'password') !== false)
|
171 |
+
return;
|
172 |
+
|
173 |
+
// force the timestamp to be the same as the Twitter servers, and re-request
|
174 |
+
$tmhOAuth->auto_fixed_time = true;
|
175 |
+
$tmhOAuth->config['force_timestamp'] = true;
|
176 |
+
$tmhOAuth->config['timestamp'] = strtotime($tmhOAuth->response['headers']['date']);
|
177 |
+
return $tmhOAuth->request($method, $url, $params, $useauth, $multipart);
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Asks the user for input and returns the line they enter
|
182 |
+
*
|
183 |
+
* @param string $prompt the text to display to the user
|
184 |
+
* @return the text entered by the user
|
185 |
+
*/
|
186 |
+
function read_input($prompt) {
|
187 |
+
echo $prompt;
|
188 |
+
$handle = fopen("php://stdin","r");
|
189 |
+
$data = fgets($handle);
|
190 |
+
return trim($data);
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Get a password from the shell.
|
195 |
+
*
|
196 |
+
* This function works on *nix systems only and requires shell_exec and stty.
|
197 |
+
*
|
198 |
+
* @param boolean $stars Wether or not to output stars for given characters
|
199 |
+
* @return string
|
200 |
+
* @url http://www.dasprids.de/blog/2008/08/22/getting-a-password-hidden-from-stdin-with-php-cli
|
201 |
+
*/
|
202 |
+
function read_password($prompt, $stars=false) {
|
203 |
+
echo $prompt;
|
204 |
+
$style = shell_exec('stty -g');
|
205 |
+
|
206 |
+
if ($stars === false) {
|
207 |
+
shell_exec('stty -echo');
|
208 |
+
$password = rtrim(fgets(STDIN), "\n");
|
209 |
+
} else {
|
210 |
+
shell_exec('stty -icanon -echo min 1 time 0');
|
211 |
+
$password = '';
|
212 |
+
while (true) :
|
213 |
+
$char = fgetc(STDIN);
|
214 |
+
if ($char === "\n") :
|
215 |
+
break;
|
216 |
+
elseif (ord($char) === 127) :
|
217 |
+
if (strlen($password) > 0) {
|
218 |
+
fwrite(STDOUT, "\x08 \x08");
|
219 |
+
$password = substr($password, 0, -1);
|
220 |
+
}
|
221 |
+
else
|
222 |
+
fwrite(STDOUT, "*");
|
223 |
+
$password .= $char;
|
224 |
+
endif;
|
225 |
+
endwhile;
|
226 |
+
}
|
227 |
+
|
228 |
+
// Reset
|
229 |
+
shell_exec('stty ' . $style);
|
230 |
+
echo PHP_EOL;
|
231 |
+
return $password;
|
232 |
+
}
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Check if one string ends with another
|
236 |
+
*
|
237 |
+
* @param string $haystack the string to check inside of
|
238 |
+
* @param string $needle the string to check $haystack ends with
|
239 |
+
* @return true if $haystack ends with $needle, false otherwise
|
240 |
+
*/
|
241 |
+
function endswith($haystack, $needle) {
|
242 |
+
$haylen = strlen($haystack);
|
243 |
+
$needlelen = strlen($needle);
|
244 |
+
if ($needlelen > $haylen)
|
245 |
+
return false;
|
246 |
+
|
247 |
+
return substr_compare($haystack, $needle, -$needlelen) === 0;
|
248 |
+
}
|
249 |
+
}
|
apis/trOAuth.php
ADDED
@@ -0,0 +1,272 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* Abraham Williams (abraham@abrah.am) http://abrah.am
|
5 |
+
*
|
6 |
+
* The first PHP Library to support OAuth for Tumblr's REST API. (Originally for Twitter, modified for Tumblr by Lucas)
|
7 |
+
*/
|
8 |
+
|
9 |
+
/* Load OAuth lib. You can find it at http://oauth.net */
|
10 |
+
require_once('OAuth.php');
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Tumblr OAuth class
|
14 |
+
*/
|
15 |
+
class TumblrOAuth {
|
16 |
+
/* Contains the last HTTP status code returned. */
|
17 |
+
public $http_code;
|
18 |
+
/* Contains the last API call. */
|
19 |
+
public $url;
|
20 |
+
/* Set up the API root URL. */
|
21 |
+
public $host = "http://api.tumblr.com/v2/";
|
22 |
+
/* Set timeout default. */
|
23 |
+
public $timeout = 30;
|
24 |
+
/* Set connect timeout. */
|
25 |
+
public $connecttimeout = 30;
|
26 |
+
/* Verify SSL Cert. */
|
27 |
+
public $ssl_verifypeer = FALSE;
|
28 |
+
/* Respons format. */
|
29 |
+
public $format = 'json';
|
30 |
+
/* Decode returned json data. */
|
31 |
+
public $decode_json = TRUE;
|
32 |
+
/* Contains the last HTTP headers returned. */
|
33 |
+
public $http_info;
|
34 |
+
/* Set the useragnet. */
|
35 |
+
public $useragent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; .NET CLR 1.1.4322)';
|
36 |
+
/* Immediately retry the API call if the response was not successful. */
|
37 |
+
//public $retry = TRUE;
|
38 |
+
|
39 |
+
|
40 |
+
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Set API URLS
|
44 |
+
*/
|
45 |
+
function accessTokenURL() { return 'https://www.tumblr.com/oauth/access_token'; }
|
46 |
+
function authenticateURL() { return 'https://www.tumblr.com/oauth/authorize'; }
|
47 |
+
function authorizeURL() { return 'https://www.tumblr.com/oauth/authorize'; }
|
48 |
+
function requestTokenURL() { return 'https://www.tumblr.com/oauth/request_token'; }
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Debug helpers
|
52 |
+
*/
|
53 |
+
function lastStatusCode() { return $this->http_status; }
|
54 |
+
function lastAPICall() { return $this->last_api_call; }
|
55 |
+
|
56 |
+
/**
|
57 |
+
* construct TumblrOAuth object
|
58 |
+
*/
|
59 |
+
function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
|
60 |
+
$this->sha1_method = new nsx_trOAuthSignatureMethod_HMAC_SHA1();
|
61 |
+
$this->consumer = new nsx_trOAuthConsumer($consumer_key, $consumer_secret);
|
62 |
+
if (!empty($oauth_token) && !empty($oauth_token_secret)) {
|
63 |
+
$this->token = new nsx_trOAuthConsumer($oauth_token, $oauth_token_secret);
|
64 |
+
} else {
|
65 |
+
$this->token = NULL;
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Get a request_token from Tumblr
|
72 |
+
*
|
73 |
+
* @returns a key/value array containing oauth_token and oauth_token_secret
|
74 |
+
*/
|
75 |
+
function getRequestToken($oauth_callback = NULL) {
|
76 |
+
$parameters = array();
|
77 |
+
if (!empty($oauth_callback)) {
|
78 |
+
$parameters['oauth_callback'] = $oauth_callback;
|
79 |
+
}
|
80 |
+
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
|
81 |
+
$token = nsx_trOAuthUtil::parse_parameters($request);
|
82 |
+
$this->token = new nsx_trOAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
|
83 |
+
return $token;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Get the authorize URL
|
88 |
+
*
|
89 |
+
* @returns a string
|
90 |
+
*/
|
91 |
+
function getAuthorizeURL($token, $sign_in_with_tumblr = TRUE) {
|
92 |
+
if (is_array($token)) {
|
93 |
+
$token = $token['oauth_token'];
|
94 |
+
}
|
95 |
+
if (empty($sign_in_with_tumblr)) {
|
96 |
+
return $this->authorizeURL() . "?oauth_token={$token}";
|
97 |
+
} else {
|
98 |
+
return $this->authenticateURL() . "?oauth_token={$token}";
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Exchange request token and secret for an access token and
|
104 |
+
* secret, to sign API calls.
|
105 |
+
*
|
106 |
+
* @returns array("oauth_token" => "the-access-token",
|
107 |
+
* "oauth_token_secret" => "the-access-secret",
|
108 |
+
* "user_id" => "9436992",
|
109 |
+
* "screen_name" => "abraham")
|
110 |
+
*/
|
111 |
+
function getAccessToken($oauth_verifier = FALSE) {
|
112 |
+
$parameters = array();
|
113 |
+
if (!empty($oauth_verifier)) {
|
114 |
+
$parameters['oauth_verifier'] = $oauth_verifier;
|
115 |
+
}
|
116 |
+
$request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters);
|
117 |
+
$token = nsx_trOAuthUtil::parse_parameters($request);
|
118 |
+
$this->token = new nsx_trOAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
|
119 |
+
return $token;
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* One time exchange of username and password for access token and secret.
|
124 |
+
*
|
125 |
+
* @returns array("oauth_token" => "the-access-token",
|
126 |
+
* "oauth_token_secret" => "the-access-secret",
|
127 |
+
* "user_id" => "9436992",
|
128 |
+
* "screen_name" => "abraham",
|
129 |
+
* "x_auth_expires" => "0")
|
130 |
+
*/
|
131 |
+
function getXAuthToken($username, $password) {
|
132 |
+
$parameters = array();
|
133 |
+
$parameters['x_auth_username'] = $username;
|
134 |
+
$parameters['x_auth_password'] = $password;
|
135 |
+
$parameters['x_auth_mode'] = 'client_auth';
|
136 |
+
$request = $this->oAuthRequest($this->accessTokenURL(), 'POST', $parameters);
|
137 |
+
$token = nsx_trOAuthUtil::parse_parameters($request);
|
138 |
+
$this->token = new nsx_trOAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
|
139 |
+
return $token;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* GET wrapper for oAuthRequest.
|
144 |
+
*/
|
145 |
+
function get($url, $parameters = array()) {
|
146 |
+
$response = $this->oAuthRequest($url, 'GET', $parameters);
|
147 |
+
if ($this->format === 'json' && $this->decode_json) {
|
148 |
+
return json_decode($response);
|
149 |
+
}
|
150 |
+
return $response;
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* POST wrapper for oAuthRequest.
|
155 |
+
*/
|
156 |
+
function post($url, $parameters = array()) {
|
157 |
+
$response = $this->oAuthRequest($url, 'POST', $parameters);
|
158 |
+
if ($this->format === 'json' && $this->decode_json) {
|
159 |
+
return json_decode($response);
|
160 |
+
}
|
161 |
+
return $response;
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* DELETE wrapper for oAuthReqeust.
|
166 |
+
*/
|
167 |
+
function delete($url, $parameters = array()) {
|
168 |
+
$response = $this->oAuthRequest($url, 'DELETE', $parameters);
|
169 |
+
if ($this->format === 'json' && $this->decode_json) {
|
170 |
+
return json_decode($response);
|
171 |
+
}
|
172 |
+
return $response;
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Format and sign an OAuth / API request
|
177 |
+
*/
|
178 |
+
function oAuthRequest($url, $method, $parameters) {
|
179 |
+
if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) {
|
180 |
+
$url = "{$this->host}{$url}";
|
181 |
+
}
|
182 |
+
$request = nsx_trOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
|
183 |
+
$request->sign_request($this->sha1_method, $this->consumer, $this->token);
|
184 |
+
switch ($method) {
|
185 |
+
case 'GET':
|
186 |
+
return $this->http($request->to_url(), 'GET');
|
187 |
+
default:
|
188 |
+
return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata());
|
189 |
+
}
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Make an HTTP request
|
194 |
+
*
|
195 |
+
* @return API results
|
196 |
+
*/
|
197 |
+
function http($url, $method, $postfields = NULL) {
|
198 |
+
$this->http_info = array();
|
199 |
+
if ($method=='DELETE') $ci = curl_init(); else $ci = curl_init($url);
|
200 |
+
|
201 |
+
$headers = array();
|
202 |
+
$headers[] = 'Connection: keep-alive';
|
203 |
+
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.34 Safari/536.11';
|
204 |
+
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
|
205 |
+
$headers[] = 'Accept-Encoding: gzip,deflate,sdch';
|
206 |
+
$headers[] = 'Accept-Language: en-US,en;q=0.8';
|
207 |
+
$headers[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3';
|
208 |
+
|
209 |
+
$options = array(
|
210 |
+
CURLOPT_RETURNTRANSFER => true, // return web page
|
211 |
+
CURLOPT_HEADER => false, // don't return headers
|
212 |
+
// CURLOPT_FOLLOWLOCATION => true, // follow redirects
|
213 |
+
CURLOPT_ENCODING => "", // handle all encodings
|
214 |
+
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; .NET CLR 1.1.4322)",
|
215 |
+
CURLOPT_AUTOREFERER => true, // set referer on redirect
|
216 |
+
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
|
217 |
+
CURLOPT_TIMEOUT => 120, // timeout on response
|
218 |
+
// CURLOPT_MAXREDIRS => $redirs, // stop after 10 redirects
|
219 |
+
CURLOPT_REFERER => $ref, // stop after 10 redirects
|
220 |
+
CURLINFO_HEADER_OUT => true
|
221 |
+
);
|
222 |
+
curl_setopt_array($ci, $options);
|
223 |
+
|
224 |
+
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
|
225 |
+
curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
|
226 |
+
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
|
227 |
+
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
|
228 |
+
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, $this->ssl_verifypeer);
|
229 |
+
// curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
|
230 |
+
|
231 |
+
|
232 |
+
switch ($method) {
|
233 |
+
case 'POST':
|
234 |
+
curl_setopt($ci, CURLOPT_POST, TRUE);
|
235 |
+
if (!empty($postfields)) {
|
236 |
+
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
|
237 |
+
}
|
238 |
+
break;
|
239 |
+
case 'DELETE':
|
240 |
+
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
241 |
+
if (!empty($postfields)) {
|
242 |
+
$url = "{$url}?{$postfields}";
|
243 |
+
}
|
244 |
+
}
|
245 |
+
//prr($url);
|
246 |
+
if ($method=='DELETE') curl_setopt($ci, CURLOPT_URL, $url);
|
247 |
+
$response = curl_exec($ci);
|
248 |
+
|
249 |
+
|
250 |
+
// $err = curl_errno($ci); $errmsg = curl_error($ci); $header = curl_getinfo($ci); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $response; prr($header); die();
|
251 |
+
|
252 |
+
|
253 |
+
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
|
254 |
+
$this->http_info = array_merge($this->http_info, curl_getinfo($ci));
|
255 |
+
$this->url = $url; //prr($this);
|
256 |
+
curl_close ($ci);
|
257 |
+
return $response;
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* Get the header info to store.
|
262 |
+
*/
|
263 |
+
function getHeader($ch, $header) {
|
264 |
+
$i = strpos($header, ':');
|
265 |
+
if (!empty($i)) {
|
266 |
+
$key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
|
267 |
+
$value = trim(substr($header, $i + 2));
|
268 |
+
$this->http_header[$key] = $value;
|
269 |
+
}
|
270 |
+
return strlen($header);
|
271 |
+
}
|
272 |
+
}
|
readme.txt
ADDED
@@ -0,0 +1,362 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== NextScripts: Social Networks Auto-Poster ===
|
2 |
+
|
3 |
+
Contributors: NextScripts
|
4 |
+
Donate link: http://www.nextscripts.com/social-networks-auto-poster-for-wordpress
|
5 |
+
Tags: automation, socialnetworks, social networks, facebook, google, twitter, google plus, pinterest, tumblr, blogger, blogspot, linkedin, plugin, links, Post, posts, api, automatic, seo, integration, bookmark, bookmarking, bookmarks, admin, images, image, social, sharing, share, repost
|
6 |
+
Requires at least: 2.8
|
7 |
+
Tested up to: 3.4.1
|
8 |
+
Stable tag: 2.0.8
|
9 |
+
License: GPLv2 or later
|
10 |
+
|
11 |
+
Automatically publish blogposts to your Facebook, Twitter, Google+(Google Plus), Pinterest, LinkedIn, Blogger and Tumblr profiles and/or pages.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
Do you want to see some upcoming features? Completely re-done <a href="http://www.nextscripts.com/social-networks-auto-poster-beta">version 2.0 Beta</a> is available to try.
|
16 |
+
|
17 |
+
This plugin automatically publishes posts from your blog to your Facebook, Twitter, Google+(Google Plus), Blogger, LinkedIn, Pinterest and Tumblr profiles and/or pages. The whole process is completely automated. Just write a new post and either entire post or it's announcement with back link will be published to all your configured social networks.
|
18 |
+
|
19 |
+
Social Networks Auto Poster can automatically publish nicely formatted announcements to your Facebook, Twitter, LinkedIn, Tumblr, Blogger, and Google+ (Google Plus) accounts, so you can reach the most audience and tell all your friends, readers and followers about your new post. Plugin works with profiles, business pages, community pages, Facebook groups, etc. Plugin supports custom wordpress post types.
|
20 |
+
|
21 |
+
Supported Networks:
|
22 |
+
|
23 |
+
**Facebook** - Autopost to your profile, business page, community page, or facebook group page. Ability to attach your blogpost to Facebook post.
|
24 |
+
|
25 |
+
**Twitter** - Autopost to your account.
|
26 |
+
|
27 |
+
**LinkedIn** - Autopost to your account. Ability to attach your blogpost to LinkedIn post. *Ability to post to Company pages is coming soon.*
|
28 |
+
|
29 |
+
**Blogger/Blogspot** - Autopost to your Blog.
|
30 |
+
|
31 |
+
**Tumblr** - Autopost to your account. Ability to attach your blogpost to Tumblr post.
|
32 |
+
|
33 |
+
**Google+** (*with third party library*) - Autopost to your profile or business page. Ability to attach your blogpost to Google+ post.
|
34 |
+
|
35 |
+
**Pinterest** (*with third party library*) - Pin your blogpost's featured image to your Pinterest board.
|
36 |
+
|
37 |
+
... more networks are coming soon ...
|
38 |
+
|
39 |
+
== Installation ==
|
40 |
+
|
41 |
+
You need to have account with either Facebook, Tumblr, Google+, LinkedIn, Pinterest, Blogger, Twitter or all of them.
|
42 |
+
|
43 |
+
See more detailed installation instructions with screenshots here: http://www.nextscripts.com/installation-of-social-networks-auto-poster-for-wordpress
|
44 |
+
|
45 |
+
Social Networks Auto Poster (SNAP).
|
46 |
+
|
47 |
+
1. Upload plugin folder to the /wp-content/plugins/.
|
48 |
+
2. Login to your Wordpress Admin Panel, Go to the Plugins->Installed Plugins, Find "Next Scripts Google+ AutoPoster" in your list, click "Activate"
|
49 |
+
|
50 |
+
Facebook.
|
51 |
+
|
52 |
+
1. Create an app and community page for your website.
|
53 |
+
1. Login to your Facebook account.
|
54 |
+
2. Go to the Facebook Developers page: https://developers.facebook.com/apps
|
55 |
+
3. Click "+ Create New App" button. Fill "App Name", "App Namespace", agree to policies and click "Continue", fill captcha, click "Continue".
|
56 |
+
***Notice App ID and App Secret on this page.
|
57 |
+
4. Click "Website", enter your website URL
|
58 |
+
5. Enter your domain to the App Domain. Domain should be the same domain from URL that you have entered to the "Website" during the step 4.
|
59 |
+
6. [Optional - you can skip this step and use existing page] Click "Advanced" from the left side menu "Settings.". Scroll all the way down and click "Create Facebook Page" button. Facebook will create Community page for your App. Click on it and see the URL. It will be something like http://www.facebook.com/pages/Your-Site-Community/304945439569358
|
60 |
+
|
61 |
+
2. Connect Facebook to your Wordpress.
|
62 |
+
1. Login to your Wordpress Admin Panel, Go to the Settings->Social Networks AutoPoster Options.
|
63 |
+
2. Check "Auto-publish your Posts to your Facebook Page or Profile" checkbox.
|
64 |
+
3. Fill URL of your Community page from step 6 above.
|
65 |
+
4. Fill "App ID" and "App Secret" from step 3 above.
|
66 |
+
3. Authorize Facebook for your Wordpress.
|
67 |
+
1. Click "Update Settings". Notice new link "Authorize Your FaceBook Account".
|
68 |
+
2. Click "Authorize Your FaceBook Account" and follow the Facebook authorization wizard. If you get any errors at this step, please make sure that domain for your Wordpress site is entered to your App as "App Domain".
|
69 |
+
4. Your facebook is ready to use.
|
70 |
+
|
71 |
+
Twitter.
|
72 |
+
|
73 |
+
1. Create a Twitter App for your website.
|
74 |
+
1. Login to your Twitter account.
|
75 |
+
2. Go to the Twitter Developers website: https://dev.twitter.com/ Sign in again if asked.
|
76 |
+
3. Click "Create an app" link from the right panel. Fill details, click "Create your Twitter application".
|
77 |
+
***Notice Consumer key and Consumer secret on this page.
|
78 |
+
4. Click "Settings" tab. Scroll to the "Application type", change Access level from "Read Only" to "Read and Write". Click "Update this Twitter application settings".
|
79 |
+
5. Come back to "Details" tab. Scroll to the "Your access token" and click "Create my access token" button. Refresh page and notice "Access token" and "Access token secret". Make sure you have "Read and Write" access level.
|
80 |
+
|
81 |
+
2. Connect Twitter to your Wordpress.
|
82 |
+
1. Login to your Wordpress Admin Panel, Go to the Settings->Social Networks AutoPoster Options.
|
83 |
+
2. Check "Auto-publish your Posts to your Twitter Page or Profile" checkbox.
|
84 |
+
3. Fill your Twitter URL.
|
85 |
+
4. Fill "Consumer key" and "Consumer secret" from step 3 above.
|
86 |
+
5. Fill "Access token" and "Access token secret" from step 5 above.
|
87 |
+
3. Your Twitter is ready to use.
|
88 |
+
|
89 |
+
Google+.
|
90 |
+
|
91 |
+
Google+ don't yet have API for automated posts. You need to get special library module to be able to publish Google+ posts.
|
92 |
+
|
93 |
+
1. Create Google+ page for your website.
|
94 |
+
1. Login to your Google+ account.
|
95 |
+
2. Click "Create a Google+ page" link from the right panel. Choose category, fill details, click "Create".
|
96 |
+
***Notice the URL of your page.
|
97 |
+
2. Connect Google+ to your Wordpress.
|
98 |
+
1. Login to your Wordpress Admin Panel, Go to the Settings->Social Networks AutoPoster Options.
|
99 |
+
2. Check "Auto-publish your Posts to your Google+ Page or Profile" checkbox.
|
100 |
+
3. Fill Google+ Login and Password. Please note that Wordpress is not storing your Google+ password in very secure manner, so you better create a separate G+ account for your website.
|
101 |
+
4. Fill the ID of your page. You can get this ID from your URL (Step 2 above). If your URL is https://plus.google.com/u/0/b/117008619877691455570/ - your ID is 117008619877691455570
|
102 |
+
3. Your Twitter is ready to use.
|
103 |
+
|
104 |
+
== Frequently Asked Questions ==
|
105 |
+
|
106 |
+
= Can I use it just for Twitter(Facebook, G+) or it requres all three networks to be set? =
|
107 |
+
|
108 |
+
Sure you can use it for just one or two networks.
|
109 |
+
|
110 |
+
= Can it post to Facebook and Google+ pages? Not to profiles, but to pages. =
|
111 |
+
|
112 |
+
Yes, it can. Specify page IDs in the settings, and it will post to pages.
|
113 |
+
|
114 |
+
== Screenshots ==
|
115 |
+
|
116 |
+
1. Settings Page
|
117 |
+
2. Google+ Post
|
118 |
+
|
119 |
+
== Changelog ==
|
120 |
+
|
121 |
+
= 2.0.8 =
|
122 |
+
* Improvement - Better list of available accounts.
|
123 |
+
* Bug fix - Google+ Wrong options when using "Repost Button"
|
124 |
+
* Bug fix - Google+ Fixed publishing of new lines in messages.
|
125 |
+
* Bug fix - Pinterest Settings Disappearance
|
126 |
+
|
127 |
+
= 2.0.7 =
|
128 |
+
* Improvement - Better list of available accounts.
|
129 |
+
* Bug fix - "Facebok Options Save" error fix.
|
130 |
+
|
131 |
+
= 2.0.6 =
|
132 |
+
* Improvement - Ability to check/uncheck all networks during post writing
|
133 |
+
* Bug fix - Unchecked networks were still getting posts
|
134 |
+
* Bug fix - Pinterest "Retrieve Boards" problem
|
135 |
+
* Bug fix - Delicious broken tags error.
|
136 |
+
|
137 |
+
= 2.0.5 =
|
138 |
+
* New - Delicious support (test)
|
139 |
+
* Bug fix - Pinterest "Cannot access empty property" error.
|
140 |
+
|
141 |
+
= 2.0.4 =
|
142 |
+
* Improvement - Pinterest is caching login info to prevent "multiple logins" issues.
|
143 |
+
* Bug fix - Pinterest special characters
|
144 |
+
|
145 |
+
= 2.0.3 =
|
146 |
+
* Initial public 2.0 Release.
|
147 |
+
|
148 |
+
= 1.9.13 =
|
149 |
+
* Improvement - Pinterest is caching login info to prevent "multiple logins" issues.
|
150 |
+
* Bug fix - Pinterest special characters
|
151 |
+
* Bug fix - Tumblr Authorization issue.
|
152 |
+
|
153 |
+
= 1.9.12 =
|
154 |
+
* New - Version 2.0.3 Beta is available to try.
|
155 |
+
* Bug fix - Removed many (\\\) Slashes from some Google+ Posts.
|
156 |
+
* Bug fix - Tumblr Authorization fix.
|
157 |
+
* Bug fix - New LinkedIn oAuth model support fix.
|
158 |
+
* Bug fix - Twitter New "Smarter" Twitter 140 characters limit handling fix.
|
159 |
+
|
160 |
+
= 1.9.11 =
|
161 |
+
* Bug fix - Google+ Fix for new interfaces.
|
162 |
+
* Improvement/Bug fix - New "Smarter" Twitter 140 characters limit handling. URL won't be cut anymore.
|
163 |
+
|
164 |
+
= 1.9.10 =
|
165 |
+
* Improvement/Bug fix - New LinkedIn oAuth model support.
|
166 |
+
|
167 |
+
= 1.9.9 =
|
168 |
+
* Bug fix - Javascript/JQuery Error fixed
|
169 |
+
|
170 |
+
= 1.9.8 =
|
171 |
+
* Improvement - Now you have a choice between "attaching" your post to Facebook or "Sharing a link" to it
|
172 |
+
* Improvement - Better Twitter connection for non SSL
|
173 |
+
* Bug fix - Pinterest Default Settings
|
174 |
+
* Bug fix - Pinterest Board Selection
|
175 |
+
|
176 |
+
= 1.9.7 =
|
177 |
+
* Improvement - New Internal DB Structure preparing for 2.0
|
178 |
+
* Bug fix - Google Connectivity issues
|
179 |
+
* Bug fix - Blogger Connectivity issues
|
180 |
+
|
181 |
+
= 1.9.6 =
|
182 |
+
* Bug fix - Twitter formatting
|
183 |
+
* Bug fix - Google incorrect page issue.
|
184 |
+
* Bug fix - Facebook Personal Page Authorization Issue.
|
185 |
+
* Bug fix - SSL connectivity issued for some hosts.
|
186 |
+
|
187 |
+
= 1.9.5 =
|
188 |
+
* Bug fix - Twitter short URLS
|
189 |
+
* Bug fix - Google/Pinterest Connectivity issues
|
190 |
+
|
191 |
+
= 1.9.4 =
|
192 |
+
* Bug fix - Tumblr, LinkedIn and Blogger compatibility issues..
|
193 |
+
|
194 |
+
= 1.9.3 =
|
195 |
+
* Bug fix - Missing "No custom posts" option.
|
196 |
+
|
197 |
+
= 1.9.2 =
|
198 |
+
* Improvement - Ability to Include/Exclude "Custom Post Types" from autoposting.
|
199 |
+
* Improvement - Better "Custom Post Types" support.
|
200 |
+
* Bug fix - Tumblr Authorization issues
|
201 |
+
|
202 |
+
= 1.9.1 =
|
203 |
+
* Bug fix - Correct Special Character Encoding
|
204 |
+
* Bug fix - Blooger Encoding issues.
|
205 |
+
|
206 |
+
= 1.9.0 =
|
207 |
+
* New - LinkedIn Support
|
208 |
+
* Improvement - Post Options are now movable
|
209 |
+
* Improvement - Security for Google+, Pinterest, Blogger - passwords are better encoded in the DB.
|
210 |
+
* Improvement - Tumblr - Better compatibility with other plugins.
|
211 |
+
* Bug fix - Twitter URL length fix.
|
212 |
+
* Bug fix - Google+, Pinterest, Blogger - Incorrect Username/Problem due to the magic quotes being "On"
|
213 |
+
* Bug fix - More then 10 stability, compatibility, security fixes.
|
214 |
+
|
215 |
+
= 1.8.7 =
|
216 |
+
* Bug fix - Tumblr/Blogger issue with missing function.
|
217 |
+
|
218 |
+
= 1.8.6 =
|
219 |
+
* New - If blogpost has video it can be used as attachment in Facebook post.
|
220 |
+
* Bug fix - Facebook %TEXT% and %FULLTEXT% formatiing issues.
|
221 |
+
* Bug fix - Some Blogger Authorization issues.
|
222 |
+
|
223 |
+
= 1.8.5 =
|
224 |
+
* Bug fix - Format settings disappeared after update post
|
225 |
+
* Bug fix - Twitter 140 characters limit when used with %TEXT% and %FULLTEXT%
|
226 |
+
|
227 |
+
= 1.8.4 =
|
228 |
+
* New - Blogger Support
|
229 |
+
* New/Improvement - Post to Tumblr and Blogger/Blogspot could be posted with tags
|
230 |
+
* New/Improvement - Tumblr is now open_basedir safe.
|
231 |
+
* Bug fix - G+ Authorization problem with non google.com domains (like google.com.sg, google.com.br, google.ru, etc).
|
232 |
+
* Bug fix - Pinterest "Test" Button
|
233 |
+
|
234 |
+
= 1.8.3 =
|
235 |
+
* Improvement - better compatibility with some other popular plugins.
|
236 |
+
* Bug fix - Tumblr Authorization Problem.
|
237 |
+
|
238 |
+
= 1.8.2 =
|
239 |
+
* Bug fix - Tumblr Authorization Problem.
|
240 |
+
|
241 |
+
= 1.8.1 =
|
242 |
+
* Improvement - Pinterest will look for images in post text if featured image is missing
|
243 |
+
* Improvement - Pinterest - ability to change board during the post writing
|
244 |
+
* Bug fix - Several small bugs and formating fixes.
|
245 |
+
|
246 |
+
= 1.8.0 =
|
247 |
+
* New - Pinterest Support
|
248 |
+
* New - Tumblr Support
|
249 |
+
* New/Improvement - %IMG% replacement tag - Inserts Featured Image URL
|
250 |
+
* Improvement - Better Image Handling
|
251 |
+
* Improvement - Better Facebook Authorization
|
252 |
+
* Improvement - Google+ Interactive Phone and Email Account Verification Support
|
253 |
+
* Bug fix - Google+ "You are not authorized for this page" Error
|
254 |
+
|
255 |
+
= 1.7.6 =
|
256 |
+
* Improvement - Better Facebook Posts Formatting
|
257 |
+
* Improvement - Better Google+ Posts Formatting
|
258 |
+
* Improvement - Google+ Phone Verification support
|
259 |
+
* Bug fix - Google+ "You are not authorized for this page" Error
|
260 |
+
|
261 |
+
= 1.7.5 =
|
262 |
+
* New/Improvement - %SURL% replacement tag - Shortens URL
|
263 |
+
* Improvement - Wordpress 3.4 Compatibility
|
264 |
+
* Improvement - Better handling of Twitter's "140 characters limit"
|
265 |
+
* Bug fix - Facebook posts to use Home URL instead of Site URL
|
266 |
+
* Bug fix - Better error handling
|
267 |
+
|
268 |
+
= 1.7.3 =
|
269 |
+
* Bug fix - Some Facebook Authorization/Connection issues.
|
270 |
+
|
271 |
+
= 1.7.2 =
|
272 |
+
* New/Improvement - %AUTHORNAME% - Inserts the author's name.
|
273 |
+
* Improvement - better Facebook errors handling
|
274 |
+
* Bug fix - Facebook 1000 character limit error fixed.
|
275 |
+
|
276 |
+
= 1.7.1 =
|
277 |
+
* Bug fix - Repost button fixed.
|
278 |
+
|
279 |
+
= 1.7.0 =
|
280 |
+
* New - Support for Wordpress "Custom Post Types".
|
281 |
+
* New - Ability to add open graph tags without third party plugins.
|
282 |
+
* Improvement - Better compatibility/faster Google+ posting.
|
283 |
+
* Improvement - If post thumbnail (featured image) is not set, script will look for images in the post.
|
284 |
+
* Improvement - If excerpt is not set, script will auto-generate it.
|
285 |
+
* Bug fix - Fixed "Changing format of the message for each individual post" problem.
|
286 |
+
* Bug fix - Fixed missing "Pending-to-Publish" status change.
|
287 |
+
* Bug fix - Twitter settings page format fixed.
|
288 |
+
|
289 |
+
= 1.6.2 =
|
290 |
+
* Bug fix - Fix for "Cannot modify header information" message while posting to Twitter.
|
291 |
+
|
292 |
+
= 1.6.1 =
|
293 |
+
* Improvement - New posting format: %TEXT% - Inserts the excerpt of your post. %FULLTEXT% - Inserts the body(text) of your post.
|
294 |
+
* Bug fix - Activation Problem "unexpected $end" for servers with no support for short php tags <? ?>.
|
295 |
+
|
296 |
+
= 1.6.0 =
|
297 |
+
* Improvement - New improved settings page with test buttons.
|
298 |
+
* Bug fix - Rare Facebook crush.
|
299 |
+
* Bug fix - G+ Stability Fix.
|
300 |
+
|
301 |
+
= 1.5.9 =
|
302 |
+
* Improvement/Bug fix - Fixed compatibility with another plugins using the same Facebook and Twitter APIs.
|
303 |
+
|
304 |
+
= 1.5.8 =
|
305 |
+
* Bug fix - G+ problem with Wordpress installed on Windows Servers.
|
306 |
+
* Bug fix - Problem with Facebook and empty Website title.
|
307 |
+
|
308 |
+
= 1.5.7 =
|
309 |
+
* Improvement - Updated Facebook posting - support for Facebook Groups, faster profile posting.
|
310 |
+
* Improvement - Better compatibility with older WP versions (<3.1).
|
311 |
+
* Improvement - Not required to replace G+ library with each update if placed into /wp-content/plugins/ folder.
|
312 |
+
|
313 |
+
= 1.5.6 =
|
314 |
+
* Bug fix - Wrong Options Page Placement.
|
315 |
+
* Improvement - Better G+ Attachments Handling.
|
316 |
+
|
317 |
+
= 1.5.5 =
|
318 |
+
* Bug fix - Included/Excluded Categories.
|
319 |
+
* Improvement - Easier Facebook setup.
|
320 |
+
|
321 |
+
= 1.5.4 =
|
322 |
+
* Bug fix - Wrong Re-Post Buttons.
|
323 |
+
* Improvement - Better G+ Compatibility.
|
324 |
+
|
325 |
+
= 1.5.3 =
|
326 |
+
* Bug fix - Correct Message after the post.
|
327 |
+
|
328 |
+
= 1.5.2 =
|
329 |
+
* Bug fixes - default checkboxes.
|
330 |
+
|
331 |
+
= 1.5.1 =
|
332 |
+
* Initial public release
|
333 |
+
|
334 |
+
= 1.2.0 =
|
335 |
+
* Closed Beta
|
336 |
+
|
337 |
+
= 1.0.0 =
|
338 |
+
* Closed Beta
|
339 |
+
|
340 |
+
== Upgrade Notice ==
|
341 |
+
|
342 |
+
Please note, that if you have postToGooglePlus.php installed, auto-update from wordpress will remove it. You will need to put it back manually.
|
343 |
+
|
344 |
+
== Other/Copyrights ==
|
345 |
+
|
346 |
+
Plugin Name: Next Scripts Social Networks Auto-Poster
|
347 |
+
|
348 |
+
Plugin URI: http://www.nextscripts.com/social-networks-auto-poster-for-wordpress
|
349 |
+
|
350 |
+
Description: This plugin automatically publishes posts from your blog to your Facebook, Twitter, and Google+ profiles and/or pages.
|
351 |
+
|
352 |
+
Author: Next Scripts
|
353 |
+
|
354 |
+
Author URL: http://www.nextscripts.com
|
355 |
+
|
356 |
+
Copyright 2012 Next Scripts, Inc
|
357 |
+
|
358 |
+
PHP Twitter API: Copyright 2012 - themattharris - tmhOAuth
|
359 |
+
|
360 |
+
PHP Facebook API: Copyright 2011 Facebook, Inc.
|
361 |
+
|
362 |
+
NextScripts, Inc
|
screenshot-1.png
DELETED
Binary file
|