Version Description
- Plugin submitted to http://wordpress.org for review and approval
=
Download this release
Release Info
Developer | Access Keys |
Plugin | Social Login WordPress Plugin – AccessPress Social Login Lite |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- accesspress-social-login-lite.php +228 -0
- css/backend.css +498 -0
- css/frontend.css +503 -0
- facebook/apsl_facebook_class.php +85 -0
- facebook/src/base_facebook.php +1543 -0
- facebook/src/facebook.php +227 -0
- facebook/src/fb_ca_chain_bundle.crt +3920 -0
- google/Auth/Abstract.php +35 -0
- google/Auth/AppIdentity.php +94 -0
- google/Auth/AssertionCredentials.php +138 -0
- google/Auth/Exception.php +22 -0
- google/Auth/LoginTicket.php +69 -0
- google/Auth/OAuth2.php +595 -0
- google/Auth/Simple.php +62 -0
- google/Cache/Abstract.php +53 -0
- google/Cache/Apc.php +73 -0
- google/Cache/Exception.php +21 -0
- google/Cache/File.php +145 -0
- google/Cache/Memcache.php +137 -0
- google/Cache/Null.php +56 -0
- google/Client.php +617 -0
- google/Collection.php +96 -0
- google/Config.php +325 -0
- google/Exception.php +20 -0
- google/Http/Batch.php +143 -0
- google/Http/CacheParser.php +184 -0
- google/Http/MediaFileUpload.php +292 -0
- google/Http/REST.php +139 -0
- google/Http/Request.php +476 -0
- google/IO/Abstract.php +322 -0
- google/IO/Curl.php +137 -0
- google/IO/Exception.php +22 -0
- google/IO/Stream.php +211 -0
- google/IO/cacerts.pem +2183 -0
- google/Model.php +250 -0
- google/Service.php +39 -0
- google/Service/Exception.php +53 -0
- google/Service/Oauth2.php +412 -0
- google/Service/Plus.php +3854 -0
- google/Service/Resource.php +210 -0
- google/Signer/Abstract.php +29 -0
- google/Signer/P12.php +91 -0
- google/Utils.php +135 -0
- google/Utils/URITemplate.php +333 -0
- google/Verifier/Abstract.php +30 -0
- google/Verifier/Pem.php +74 -0
- images/Thumbs.db +0 -0
- images/buffer-black.png +0 -0
- images/buffer-white.png +0 -0
- images/buffer.png +0 -0
- images/customize.png +0 -0
- images/icon.png +0 -0
- images/icon1.png +0 -0
- images/logo.png +0 -0
- images/plugin.png +0 -0
- images/preview-1.jpg +0 -0
- images/preview-2.jpg +0 -0
- images/preview-3.jpg +0 -0
- images/preview-4.jpg +0 -0
- images/theme.png +0 -0
- images/top-line.png +0 -0
- inc/backend/about.php +31 -0
- inc/backend/activation.php +42 -0
- inc/backend/how-to-use.php +50 -0
- inc/backend/main-page.php +271 -0
- inc/backend/save-settings.php +70 -0
- inc/backend/widget.php +104 -0
- inc/frontend/login_check.php +492 -0
- inc/frontend/login_integration.php +22 -0
- inc/frontend/shortcode.php +38 -0
- index.php +4 -0
- js/backend.js +30 -0
- js/frontend.js +6 -0
- readme.txt +138 -0
- twitter/OAuth.php +895 -0
- twitter/twitteroauth.php +235 -0
accesspress-social-login-lite.php
ADDED
@@ -0,0 +1,228 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
defined( 'ABSPATH' ) or die( "No script kiddies please!" );
|
3 |
+
/*
|
4 |
+
Plugin name: AccessPress Social Login Lite
|
5 |
+
Plugin URI: https://accesspressthemes.com/wordpress-plugins/accesspress-social-login-lite/
|
6 |
+
Description: A plugin to add various social logins to a site.
|
7 |
+
version: 1.0.0
|
8 |
+
Author: AccessPress Themes
|
9 |
+
Author URI: https://accesspressthemes.com/
|
10 |
+
Text Domain: apsl-lite
|
11 |
+
Domain Path: /languages/
|
12 |
+
License: GPLv2 or later
|
13 |
+
*/
|
14 |
+
|
15 |
+
//Declearation of the necessary constants for plugin
|
16 |
+
if(!defined ( 'APSL_VERSION' ) ){
|
17 |
+
define ( 'APSL_VERSION', '1.0.0' );
|
18 |
+
}
|
19 |
+
|
20 |
+
if( !defined( 'APSL_IMAGE_DIR' ) ){
|
21 |
+
define( 'APSL_IMAGE_DIR', plugin_dir_url( __FILE__ ) .'images' );
|
22 |
+
}
|
23 |
+
|
24 |
+
if( !defined( 'APSL_JS_DIR' ) ){
|
25 |
+
define ( 'APSL_JS_DIR', plugin_dir_url( __FILE__ ) . 'js' );
|
26 |
+
}
|
27 |
+
|
28 |
+
if( !defined( 'APSL_CSS_DIR' ) ){
|
29 |
+
define ( 'APSL_CSS_DIR', plugin_dir_url( __FILE__ ) . 'css' );
|
30 |
+
}
|
31 |
+
|
32 |
+
if( !defined( 'APSL_LANG_DIR' ) ){
|
33 |
+
define ( 'APSL_LANG_DIR', basename( dirname( __FILE__ ) ). '/languages/' );
|
34 |
+
}
|
35 |
+
|
36 |
+
if(!defined('APSL_TEXT_DOMAIN')){
|
37 |
+
define( 'APSL_TEXT_DOMAIN', 'apsl-lite' );
|
38 |
+
}
|
39 |
+
|
40 |
+
if(!defined('APSL_SETTINGS')){
|
41 |
+
define('APSL_SETTINGS', 'apsl-lite-settings');
|
42 |
+
}
|
43 |
+
|
44 |
+
if(!defined('APSL_PLUGIN_DIR')){
|
45 |
+
define('APSL_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Register a widget
|
51 |
+
* */
|
52 |
+
include_once('inc/backend/widget.php');
|
53 |
+
|
54 |
+
|
55 |
+
// Declaration of the class
|
56 |
+
if( !class_exists( 'APSL_Lite_Class' ) ){
|
57 |
+
class APSL_Lite_Class{
|
58 |
+
var $apsl_settings;
|
59 |
+
function __construct(){
|
60 |
+
$this->apsl_settings = get_option( APSL_SETTINGS );
|
61 |
+
add_action('init', array($this, 'session_init')); //start the session if not started yet.
|
62 |
+
register_activation_hook(__FILE__, array($this, 'plugin_activation')); //load the default setting for the plugin while activating
|
63 |
+
add_action( 'init', array( $this, 'plugin_text_domain' ) ); //load the plugin text domain
|
64 |
+
add_action( 'admin_menu', array( $this, 'add_apsl_menu' )); //register the plugin menu in backend
|
65 |
+
add_action('admin_enqueue_scripts', array($this, 'register_admin_assets')); //registers all the assets required for wp-admin
|
66 |
+
add_action('wp_enqueue_scripts', array($this, 'register_frontend_assets')); // registers all the assets required for the frontend
|
67 |
+
add_action( 'admin_post_apsl_save_options', array($this, 'save_settings') ); //save settings of a plugin
|
68 |
+
|
69 |
+
$options = get_option( APSL_SETTINGS );
|
70 |
+
if($options['apsl_enable_disable_plugin'] =='yes'){
|
71 |
+
if(in_array("login_form", $options['apsl_display_options'])) {
|
72 |
+
add_action( 'login_form', array($this, 'add_social_login') ); // add the social logins to the login form
|
73 |
+
}
|
74 |
+
|
75 |
+
if( in_array("register_form", $options['apsl_display_options']) ) {
|
76 |
+
add_action( 'register_form', array($this, 'add_social_login') ); //add the social logins to the registration form
|
77 |
+
add_action('after_signup_form', array($this,'add_social_login') );
|
78 |
+
}
|
79 |
+
|
80 |
+
if( in_array( "comment_form", $options['apsl_display_options'] ) ) {
|
81 |
+
add_action( 'comment_form_top', array($this, 'add_social_login_form_to_comment') ); //add the social logins to the comment form
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
add_shortcode('apsl-login-lite', array($this, 'apsl_shortcode')); //adds a shortcode
|
86 |
+
add_action( 'init', array($this,'login_check') ); //check for the social logins
|
87 |
+
add_action('widgets_init', array($this, 'register_apsl_widget')); //register the widget of a plugin
|
88 |
+
add_action( 'login_enqueue_scripts', array($this, 'apsl_login_form_enqueue_style'), 10 );
|
89 |
+
add_action( 'login_enqueue_scripts', array($this, 'apsl_login_form__enqueue_script'), 1 );
|
90 |
+
add_action('admin_post_apsl_restore_default_settings',array($this,'apsl_restore_default_settings'));//restores default settings.
|
91 |
+
|
92 |
+
}
|
93 |
+
|
94 |
+
|
95 |
+
|
96 |
+
//starts the session with the call of init hook
|
97 |
+
function session_init() {
|
98 |
+
if (!session_id()) {
|
99 |
+
session_start();
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
//load the default settings of the plugin
|
104 |
+
function plugin_activation(){
|
105 |
+
if( !get_option( APSL_SETTINGS ) ){
|
106 |
+
include('inc/backend/activation.php');
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
//loads the text domain for translation
|
111 |
+
function plugin_text_domain(){
|
112 |
+
|
113 |
+
load_plugin_textdomain( APSL_TEXT_DOMAIN, false, APSL_LANG_DIR );
|
114 |
+
}
|
115 |
+
|
116 |
+
//register the plugin menu for backend.
|
117 |
+
function add_apsl_menu(){
|
118 |
+
|
119 |
+
add_menu_page( 'AccessPress Social Login Lite', 'AccessPress Social Login Lite', 'manage_options', APSL_TEXT_DOMAIN , array( $this, 'main_page' ), APSL_IMAGE_DIR . '/icon.png' );
|
120 |
+
}
|
121 |
+
|
122 |
+
//menu page
|
123 |
+
function main_page(){
|
124 |
+
include( 'inc/backend/main-page.php' );
|
125 |
+
}
|
126 |
+
|
127 |
+
//registration of the backend assets
|
128 |
+
function register_admin_assets(){
|
129 |
+
wp_enqueue_style( 'fontawsome-css', '//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css', '', APSL_VERSION );
|
130 |
+
|
131 |
+
if( isset($_GET['page']) && $_GET['page']== APSL_TEXT_DOMAIN ){
|
132 |
+
|
133 |
+
//backend scripts
|
134 |
+
wp_enqueue_script( 'jquery-ui-sortable' );
|
135 |
+
wp_enqueue_script( 'apsl-admin-js', APSL_JS_DIR . '/backend.js', array( 'jquery', 'jquery-ui-sortable' ), APSL_VERSION );//registering plugin's admin js
|
136 |
+
|
137 |
+
//register backend css
|
138 |
+
wp_enqueue_style( 'apsl-backend-css', APSL_CSS_DIR.'/backend.css', '', APSL_VERSION );
|
139 |
+
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
//registration of the plugins frontend assets
|
144 |
+
function register_frontend_assets(){
|
145 |
+
//register frontend scripts
|
146 |
+
wp_enqueue_script('apsl-frontend-js', APSL_JS_DIR.'/frontend.js', array('jquery'), APSL_VERSION );
|
147 |
+
|
148 |
+
//register frontend css
|
149 |
+
wp_enqueue_style( 'fontawsome-css', '//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css', '', APSL_VERSION );
|
150 |
+
wp_enqueue_style( 'apsl-frontend-css', APSL_CSS_DIR.'/frontend.css', '', APSL_VERSION );
|
151 |
+
}
|
152 |
+
|
153 |
+
//save the settings of a plugin
|
154 |
+
function save_settings(){
|
155 |
+
if(isset($_POST['apsl_save_settings']) && $_POST['apsl_settings_action'] && wp_verify_nonce( $_POST['apsl_settings_action'], 'apsl_nonce_save_settings')){
|
156 |
+
include('inc/backend/save-settings.php');
|
157 |
+
}else{
|
158 |
+
die('No script kiddies please!');
|
159 |
+
}
|
160 |
+
}
|
161 |
+
|
162 |
+
//function to add the social login in the login and registration form.
|
163 |
+
function add_social_login(){
|
164 |
+
if(!is_user_logged_in()){
|
165 |
+
include('inc/frontend/login_integration.php');
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
//function to add the social login in the comment form.
|
170 |
+
function add_social_login_form_to_comment(){ ?>
|
171 |
+
<?php
|
172 |
+
$options = get_option( APSL_SETTINGS );
|
173 |
+
$login_text = $options['apsl_title_text_field'];
|
174 |
+
if (!is_user_logged_in()){ ?>
|
175 |
+
<?php
|
176 |
+
echo do_shortcode("[apsl-login-lite login_text='{$login_text}']");
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
//function for adding shortcode of a plugin
|
181 |
+
function apsl_shortcode($attr) {
|
182 |
+
ob_start();
|
183 |
+
include('inc/frontend/shortcode.php');
|
184 |
+
$html = ob_get_contents();
|
185 |
+
ob_get_clean();
|
186 |
+
return $html;
|
187 |
+
}
|
188 |
+
|
189 |
+
//checking of the login
|
190 |
+
function login_check(){
|
191 |
+
include('inc/frontend/login_check.php');
|
192 |
+
}
|
193 |
+
|
194 |
+
//registration of the social login widget
|
195 |
+
function register_apsl_widget() {
|
196 |
+
register_widget('APSL_Lite_Widget');
|
197 |
+
}
|
198 |
+
|
199 |
+
function apsl_login_form_enqueue_style(){
|
200 |
+
wp_enqueue_style( 'fontawsome-css', '//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css', '', APSL_VERSION );
|
201 |
+
wp_enqueue_style( 'apsl-backend-css', APSL_CSS_DIR.'/backend.css', '', APSL_VERSION );
|
202 |
+
wp_enqueue_style( 'apsl-frontend-css', APSL_CSS_DIR.'/frontend.css', '', APSL_VERSION );
|
203 |
+
|
204 |
+
}
|
205 |
+
|
206 |
+
function apsl_login_form__enqueue_script(){
|
207 |
+
wp_enqueue_script( 'apsl-admin-js', APSL_JS_DIR . '/backend.js', array( 'jquery', 'jquery-ui-sortable' ), APSL_VERSION );//registering plugin's admin js
|
208 |
+
}
|
209 |
+
|
210 |
+
function apsl_restore_default_settings(){
|
211 |
+
$nonce = $_REQUEST['_wpnonce'];
|
212 |
+
if(!empty($_GET) && wp_verify_nonce( $nonce, 'apsl-restore-default-settings-nonce' ) ){
|
213 |
+
//restore the default plugin activation settings from the activation page.
|
214 |
+
include( 'inc/backend/activation.php' );
|
215 |
+
$_SESSION['apsl_message'] = __( 'Settings restored Successfully.', APSL_TEXT_DOMAIN );
|
216 |
+
wp_redirect( admin_url().'admin.php?page='.APSL_TEXT_DOMAIN );
|
217 |
+
exit;
|
218 |
+
}else{
|
219 |
+
die( 'No script kiddies please!' );
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
}//class termination
|
224 |
+
}
|
225 |
+
|
226 |
+
$apsl_object = new APSL_Lite_Class();
|
227 |
+
|
228 |
+
?>
|
css/backend.css
ADDED
@@ -0,0 +1,498 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.clear{
|
2 |
+
clear:both;
|
3 |
+
}
|
4 |
+
|
5 |
+
.clearfix:after {
|
6 |
+
content: ".";
|
7 |
+
clear: both;
|
8 |
+
visibility: hidden;
|
9 |
+
line-height: 0;
|
10 |
+
height: 0;
|
11 |
+
display: block;
|
12 |
+
}
|
13 |
+
|
14 |
+
|
15 |
+
.apsl-settings {
|
16 |
+
padding:0 10px;
|
17 |
+
margin: 10px 0;
|
18 |
+
}
|
19 |
+
|
20 |
+
.apsl-label {
|
21 |
+
font-size: 14px;
|
22 |
+
font-weight: bold;
|
23 |
+
margin-bottom: 10px;
|
24 |
+
background-color: black;
|
25 |
+
color: black;
|
26 |
+
padding: 10px;
|
27 |
+
margin-top: -10px;
|
28 |
+
}
|
29 |
+
.apsl-settings-tab {
|
30 |
+
border: 1px solid #fff;
|
31 |
+
float: left;
|
32 |
+
font-size: 17px;
|
33 |
+
height: 31px;
|
34 |
+
list-style: outside none none;
|
35 |
+
padding-left: 74px;
|
36 |
+
padding-right: 74px;
|
37 |
+
padding-top: 11px;
|
38 |
+
background: #DADADA none repeat scroll 0 0;
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
|
43 |
+
.apsl_show_hide {
|
44 |
+
float: right;
|
45 |
+
font-size: 20px;
|
46 |
+
margin-right: 5px;
|
47 |
+
}
|
48 |
+
|
49 |
+
/*.apsl-settings-tabs-wrapper li{
|
50 |
+
list-style: outside none none;
|
51 |
+
}*/
|
52 |
+
|
53 |
+
.apsl-settings-tabs-wrapper a{
|
54 |
+
text-decoration:none;
|
55 |
+
color:black;
|
56 |
+
}
|
57 |
+
/*
|
58 |
+
.apsl-settings-tabs-wrapper.clearfix {
|
59 |
+
margin-top: 1px;
|
60 |
+
}
|
61 |
+
*/
|
62 |
+
.apsl-active-tab a{
|
63 |
+
color:#595959;
|
64 |
+
border-bottom:1px #595959 solid;
|
65 |
+
}
|
66 |
+
|
67 |
+
|
68 |
+
.main-title {
|
69 |
+
font-size: 18px;
|
70 |
+
margin-bottom: -9px;
|
71 |
+
margin-top:10px;
|
72 |
+
}
|
73 |
+
|
74 |
+
.apsl-settings {
|
75 |
+
cursor: move;
|
76 |
+
margin-bottom: 25px;
|
77 |
+
width: 97%;
|
78 |
+
background:#fff;
|
79 |
+
|
80 |
+
}
|
81 |
+
|
82 |
+
.apsl-label {
|
83 |
+
background-color: #DADADA;
|
84 |
+
margin-left: -10px;
|
85 |
+
width: 100%;
|
86 |
+
}
|
87 |
+
.apsl-enable-disable {
|
88 |
+
padding-bottom: 13px;
|
89 |
+
}
|
90 |
+
|
91 |
+
|
92 |
+
.apsl-settings.apsl-facebook-settings.ui-sortable-handle > input, .apsl-settings.apsl-twitter-settings.ui-sortable-handle > input,
|
93 |
+
.apsl-settings.apsl-google-settings.ui-sortable-handle > input, .apsl-settings.apsl-linkedin-settings.ui-sortable-handle > input,
|
94 |
+
.apsl-settings.apsl-instagram-settings.ui-sortable-handle > input,.apsl-settings.apsl-vk-settings.ui-sortable-handle > input,
|
95 |
+
.apsl-settings.apsl-foursquare-settings.ui-sortable-handle > input,.apsl-settings.apsl-wordpress-settings.ui-sortable-handle > input,
|
96 |
+
.apsl-settings.apsl-buffer-settings.ui-sortable-handle > input
|
97 |
+
|
98 |
+
{
|
99 |
+
margin-right: 30px;
|
100 |
+
margin-left: 5px;
|
101 |
+
}
|
102 |
+
.apsl-submit-settings.primary-button {
|
103 |
+
background: #0074a2 none repeat scroll 0 0;
|
104 |
+
border: medium none;
|
105 |
+
border-radius: 4px;
|
106 |
+
|
107 |
+
color: #ffffff;
|
108 |
+
font-weight: 600;
|
109 |
+
padding: 9px 20px;
|
110 |
+
|
111 |
+
|
112 |
+
}
|
113 |
+
|
114 |
+
.toplevel_page_apsl-lite input[type="text"]{
|
115 |
+
width:70%;
|
116 |
+
}
|
117 |
+
|
118 |
+
.apsl-submit-settings.primary-button {
|
119 |
+
width: 120px;
|
120 |
+
cursor: pointer;
|
121 |
+
float:left;
|
122 |
+
}
|
123 |
+
|
124 |
+
span.apsl-info-note {
|
125 |
+
font-size: 18px;
|
126 |
+
}
|
127 |
+
span.apsl-info-content {
|
128 |
+
font-style: italic;
|
129 |
+
|
130 |
+
}
|
131 |
+
.apsl-info-lists li{
|
132 |
+
list-style-type: square;
|
133 |
+
}
|
134 |
+
ul.apsl-info-lists {
|
135 |
+
margin-left: 17px;
|
136 |
+
font-style: italic;
|
137 |
+
|
138 |
+
}
|
139 |
+
.apsl-settings-tabs-wrapper li .apsl-active-tab {
|
140 |
+
color: #fff;
|
141 |
+
background: rgb(5, 105, 168);
|
142 |
+
font-weight: bold;
|
143 |
+
background: transparent;
|
144 |
+
background:#0074a2;/* FF3+,Saf3+,Opera 10.10+,Chrome,IE9*/
|
145 |
+
|
146 |
+
}
|
147 |
+
#tab-apsl-theme-settings .apsl-theme.apsl-png-theme {
|
148 |
+
width: 10px;
|
149 |
+
}
|
150 |
+
#tab-apsl-theme-settings .apsl-themes {
|
151 |
+
margin-bottom: 14px;
|
152 |
+
margin-top: 0px;
|
153 |
+
padding-bottom: 10px;
|
154 |
+
padding-left: 0px;
|
155 |
+
width: 100%;
|
156 |
+
}
|
157 |
+
|
158 |
+
#tab-apsl-theme-settings h3 {
|
159 |
+
font-size: 14px;
|
160 |
+
font-weight: bold;
|
161 |
+
margin-bottom: 10px;
|
162 |
+
background-color: #DADADA;
|
163 |
+
color: white;
|
164 |
+
padding: 10px;
|
165 |
+
|
166 |
+
}
|
167 |
+
#tab-apsl-how-to-use > p {
|
168 |
+
background: #DADADA none repeat scroll 0 0;
|
169 |
+
color: #000;
|
170 |
+
font-size: 14px;
|
171 |
+
padding-bottom: 5px;
|
172 |
+
padding-left: 5px;
|
173 |
+
padding-top: 5px;
|
174 |
+
width: 98%;
|
175 |
+
}
|
176 |
+
#tab-apsl-how-to-use {
|
177 |
+
width: 100%;
|
178 |
+
margin-top: -6px;
|
179 |
+
background-color: #fff;
|
180 |
+
}
|
181 |
+
#tab-apsl-how-to-use dl {
|
182 |
+
padding-left: 5px;
|
183 |
+
padding-bottom: 1px;
|
184 |
+
}
|
185 |
+
#tab-apsl-how-to-use strong {
|
186 |
+
font-size: 15px;
|
187 |
+
}
|
188 |
+
#tab-apsl-how-to-use dd {
|
189 |
+
margin-left: 0;
|
190 |
+
margin-top: 12px;
|
191 |
+
}
|
192 |
+
#tab-apsl-how-to-use dt {
|
193 |
+
margin-top: 14px;
|
194 |
+
}
|
195 |
+
#tab-apsl-how-to-use p {
|
196 |
+
margin-bottom: 6px;
|
197 |
+
}
|
198 |
+
#tab-apsl-how-to-use dl {
|
199 |
+
padding-bottom: 10px;
|
200 |
+
}
|
201 |
+
#tab-apsl-how-to-use .how-list li{
|
202 |
+
list-style-type: square;
|
203 |
+
margin-left:13px;
|
204 |
+
}
|
205 |
+
#tab-apsl-about .more-product img {
|
206 |
+
width: 100px;
|
207 |
+
}
|
208 |
+
#tab-apsl-about {
|
209 |
+
width: 98%;
|
210 |
+
margin-bottom: 29px;
|
211 |
+
padding-bottom: 22px;
|
212 |
+
background-color: #fff;
|
213 |
+
}
|
214 |
+
#tab-apsl-about .ap-title {
|
215 |
+
background: #DADADA none repeat scroll 0 0;
|
216 |
+
color: #000;
|
217 |
+
font-size: 14px;
|
218 |
+
margin-top: 8px;
|
219 |
+
padding-bottom: 7px;
|
220 |
+
padding-left: 5px;
|
221 |
+
padding-top: 6px;
|
222 |
+
}
|
223 |
+
#tab-apsl-about .more-title {
|
224 |
+
background: #DADADA none repeat scroll 0 0;
|
225 |
+
color: #000;
|
226 |
+
font-weight: 600;
|
227 |
+
padding-bottom: 10px;
|
228 |
+
padding-top: 10px;
|
229 |
+
text-align: center;
|
230 |
+
}
|
231 |
+
#tab-apsl-about .more-product > li {
|
232 |
+
float: left!important;
|
233 |
+
width: 250px!important;
|
234 |
+
margin-left: 7px;
|
235 |
+
}
|
236 |
+
#tab-apsl-about .more-product img {
|
237 |
+
margin-left: -109px;
|
238 |
+
padding-bottom: 21px;
|
239 |
+
}
|
240 |
+
#tab-apsl-about .more-product a {
|
241 |
+
text-decoration: none;
|
242 |
+
}
|
243 |
+
.apsl-message {
|
244 |
+
background: #0074a2 none repeat scroll 0 0;
|
245 |
+
border-left: 5px solid #78B343;
|
246 |
+
border-radius: 8px;
|
247 |
+
color: #ffffff;
|
248 |
+
font-weight: 600;
|
249 |
+
margin-bottom: 5px;
|
250 |
+
margin-top: 6px;
|
251 |
+
padding-bottom: 3px;
|
252 |
+
padding-left: 5px;
|
253 |
+
padding-top: 3px;
|
254 |
+
width: 99%;
|
255 |
+
}
|
256 |
+
.fb ,.twt, .gp,.utube, .skype{
|
257 |
+
float: left;
|
258 |
+
width:100px;
|
259 |
+
}
|
260 |
+
.pin{
|
261 |
+
width:100px;
|
262 |
+
}
|
263 |
+
.about-social .fb .fa {
|
264 |
+
background: #3d5c99 none repeat scroll 0 0;
|
265 |
+
color: #ffffff;
|
266 |
+
font-size: 25px;
|
267 |
+
padding: 20px;
|
268 |
+
}
|
269 |
+
.about-social .twt .fa{
|
270 |
+
background: #2594C4 none repeat scroll 0 0;
|
271 |
+
color: #ffffff;
|
272 |
+
font-size: 25px;
|
273 |
+
padding: 20px;
|
274 |
+
}
|
275 |
+
.about-social .gp .fa{
|
276 |
+
background: #A83636 none repeat scroll 0 0;
|
277 |
+
color: #ffffff;
|
278 |
+
font-size: 25px;
|
279 |
+
padding: 20px;
|
280 |
+
}
|
281 |
+
.about-social .utube .fa{
|
282 |
+
background: #B03434 none repeat scroll 0 0;
|
283 |
+
color: #ffffff;
|
284 |
+
font-size: 25px;
|
285 |
+
padding: 20px;
|
286 |
+
}
|
287 |
+
.about-social .skype .fa{
|
288 |
+
background: #169AD1 none repeat scroll 0 0;
|
289 |
+
color: #ffffff;
|
290 |
+
font-size: 25px;
|
291 |
+
padding: 20px;
|
292 |
+
}
|
293 |
+
.about-social .pin .fa{
|
294 |
+
background: #A6212B none repeat scroll 0 0;
|
295 |
+
color: #ffffff;
|
296 |
+
font-size: 25px;
|
297 |
+
padding: 20px;
|
298 |
+
}
|
299 |
+
#tab-apsl-about .about-social span {
|
300 |
+
display: block;
|
301 |
+
margin-top: 1px;
|
302 |
+
text-decoration: none;
|
303 |
+
}
|
304 |
+
|
305 |
+
.apsl-setting-header.clearfix {
|
306 |
+
background: #0074a2 none repeat scroll 0 0;
|
307 |
+
margin-bottom: 10px;
|
308 |
+
margin-top: 10px;
|
309 |
+
padding-bottom: 13px;
|
310 |
+
width: 100%;
|
311 |
+
}
|
312 |
+
|
313 |
+
.apsl-right-header-block {
|
314 |
+
float: right;
|
315 |
+
margin-right: 12px;
|
316 |
+
color:#fff;
|
317 |
+
}
|
318 |
+
.apsl-headerlogo {
|
319 |
+
float: left;
|
320 |
+
}
|
321 |
+
|
322 |
+
.apsl-headerlogo {
|
323 |
+
color: #ffffff;
|
324 |
+
float: left;
|
325 |
+
font-size: 18px;
|
326 |
+
margin-left: 15px;
|
327 |
+
margin-top: 33px;
|
328 |
+
}
|
329 |
+
input.apsl-reset-button.button.primary-button {
|
330 |
+
background-color: #0074A2;
|
331 |
+
border: none;
|
332 |
+
width: 165px;
|
333 |
+
padding-left: 7px;
|
334 |
+
padding-top: 2px;
|
335 |
+
height: 37px;
|
336 |
+
margin-left: 10px;
|
337 |
+
font-weight: 600;
|
338 |
+
margin-top: 2px;
|
339 |
+
color: #fff;
|
340 |
+
|
341 |
+
}
|
342 |
+
span.plugin-version {
|
343 |
+
display: block;
|
344 |
+
font-size: 11px;
|
345 |
+
}
|
346 |
+
|
347 |
+
.apsl-display-options input#apsl_enable_plugin {
|
348 |
+
width: 1px;
|
349 |
+
margin-left: 21px;
|
350 |
+
}
|
351 |
+
.apsl-display-options input#apsl_disable_plugin {
|
352 |
+
width: 1px;
|
353 |
+
}
|
354 |
+
input.apsl-reset-button.button.primary-button:hover {
|
355 |
+
opacity: 0.7;
|
356 |
+
-webkit-transition: all 1s ease;/* Safari 3.2+, Chrome */
|
357 |
+
-moz-transition: all 1s ease;/* Firefox 4-15 */
|
358 |
+
-o-transition: all 1s ease;/* Opera 10.5-12.00 */
|
359 |
+
transition: all 1s ease;/* Firefox 16+, Opera 12.50+ */
|
360 |
+
}
|
361 |
+
.apsl-submit-settings.primary-button:hover {
|
362 |
+
opacity: 0.7;
|
363 |
+
-webkit-transition: all 1s ease;/* Safari 3.2+, Chrome */
|
364 |
+
-moz-transition: all 1s ease;/* Firefox 4-15 */
|
365 |
+
-o-transition: all 1s ease;/* Opera 10.5-12.00 */
|
366 |
+
transition: all 1s ease;/* Firefox 16+, Opera 12.50+ */
|
367 |
+
}
|
368 |
+
.apsl-display-options {
|
369 |
+
margin-top: 9px;
|
370 |
+
margin-left: 0px;
|
371 |
+
width:100%;
|
372 |
+
}
|
373 |
+
#tab-apsl-theme-settings input#apsl-login-short-text {
|
374 |
+
|
375 |
+
}
|
376 |
+
|
377 |
+
#tab-apsl-theme-settings input#apsl-login-with-long-text {
|
378 |
+
|
379 |
+
}
|
380 |
+
#tab-apsl-theme-settings input#apsl_each_link_title_attribute {
|
381 |
+
|
382 |
+
}
|
383 |
+
#tab-apsl-theme-settings span.apsl-info-note {
|
384 |
+
font-size: 13px;
|
385 |
+
opacity: 0.5;
|
386 |
+
font-style: italic;
|
387 |
+
display: block;
|
388 |
+
padding-top: -42px;
|
389 |
+
margin-top: -19px;
|
390 |
+
margin-bottom: 16px;
|
391 |
+
}
|
392 |
+
#tab-apsl-theme-settings .apsl-each-link-title-attribute {
|
393 |
+
|
394 |
+
padding-left: 7px;
|
395 |
+
}
|
396 |
+
div#tab-apsl-theme-settings {
|
397 |
+
background-color: #fff;
|
398 |
+
width: 98%;
|
399 |
+
padding-bottom: 1px;
|
400 |
+
margin-bottom: 21px;
|
401 |
+
}
|
402 |
+
#tab-apsl-theme-settings .apsl-each-login-short-text {
|
403 |
+
padding-left: 6px;
|
404 |
+
}
|
405 |
+
#tab-apsl-theme-settings .apsl-title-text-field {
|
406 |
+
padding-left: 6px;
|
407 |
+
}
|
408 |
+
#tab-apsl-theme-settings .apsl-each-login-long-text {
|
409 |
+
padding-left: 7px;
|
410 |
+
}
|
411 |
+
#tab-apsl-about ul.about-social.clearfix {
|
412 |
+
margin-left: 7px;
|
413 |
+
}
|
414 |
+
#tab-apsl-about strong {
|
415 |
+
margin-left: 7px;
|
416 |
+
}
|
417 |
+
|
418 |
+
#tab-apsl-theme-settings .apsl-settings{
|
419 |
+
cursor: auto
|
420 |
+
}
|
421 |
+
/** Added By regan **/
|
422 |
+
.apsl-settings-tabs-wrapper.clearfix {
|
423 |
+
border: 1px solid #bbb;
|
424 |
+
background-color: white;
|
425 |
+
padding: 0px 10px;
|
426 |
+
margin-bottom: 12px;
|
427 |
+
}
|
428 |
+
|
429 |
+
.apsl-setting-tabs-wrapper {
|
430 |
+
border: 1px solid #bbb;
|
431 |
+
background-color: white;
|
432 |
+
padding: 15px;
|
433 |
+
}
|
434 |
+
.apsl-outer-wrapper {
|
435 |
+
width: 1024px;
|
436 |
+
}
|
437 |
+
.apsl_network_settings_wrapper label {
|
438 |
+
display: inline-block;
|
439 |
+
width: 25%;
|
440 |
+
font-weight: bold;
|
441 |
+
}
|
442 |
+
.apsl-app-id-wrapper, .apsl-app-secret-wrapper {
|
443 |
+
margin-bottom: 15px;
|
444 |
+
}
|
445 |
+
.apsl-info {
|
446 |
+
background-color: #FFFBCC;
|
447 |
+
color: black !important;
|
448 |
+
padding: 10px;
|
449 |
+
margin-bottom: 28px;
|
450 |
+
}
|
451 |
+
|
452 |
+
.social-login span, .social-login-buddypress span, .social-login-woocommerce span{
|
453 |
+
width: 35%;
|
454 |
+
display: inline-block;}
|
455 |
+
|
456 |
+
#your-profile label+a, fieldset label, label{
|
457 |
+
margin-right: 10px
|
458 |
+
}
|
459 |
+
|
460 |
+
.apsl-themes > div{
|
461 |
+
margin:10px 0 20px;
|
462 |
+
}
|
463 |
+
|
464 |
+
.apsl-theme-previewbox{
|
465 |
+
margin-top: 10px
|
466 |
+
}
|
467 |
+
|
468 |
+
.apsl-theme > label{
|
469 |
+
font-weight: bold;
|
470 |
+
font-size: 14px;
|
471 |
+
}
|
472 |
+
|
473 |
+
.apsl-theme span{margin-left: 5px; display: inline-block;}
|
474 |
+
.apsl-title-text-field span, .apsl-each-login-short-text span, .apsl-each-login-long-text span, .apsl-each-link-title-attribute span{
|
475 |
+
display: inline-block;
|
476 |
+
width: 25%;
|
477 |
+
|
478 |
+
}
|
479 |
+
|
480 |
+
.apsl-themes-wrapper .apsl-theme{
|
481 |
+
margin: 15px 0
|
482 |
+
}
|
483 |
+
|
484 |
+
.logo-wrap, .logo-content{
|
485 |
+
float: left;
|
486 |
+
margin-right: 15px
|
487 |
+
}
|
488 |
+
@media screen and (max-width: 1206px) {
|
489 |
+
.apsl-outer-wrapper {
|
490 |
+
width:100%;
|
491 |
+
}
|
492 |
+
|
493 |
+
.apsl-settings-tab{
|
494 |
+
width: 20%;
|
495 |
+
padding: 10px 0 0;
|
496 |
+
text-align: center;
|
497 |
+
}
|
498 |
+
}
|
css/frontend.css
ADDED
@@ -0,0 +1,503 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
div.social-networks a{
|
2 |
+
border-bottom:none;
|
3 |
+
text-decoration: none;
|
4 |
+
}
|
5 |
+
|
6 |
+
.theme-1 .apsl-long-login-text,.theme-1 .apsl-login-text{
|
7 |
+
display: none;
|
8 |
+
}
|
9 |
+
|
10 |
+
.theme-2 .apsl-login-text,.theme-2 .apsl-long-login-text {
|
11 |
+
display: none;
|
12 |
+
}
|
13 |
+
|
14 |
+
.theme-3 .apsl-long-login-text,.theme-3 .apsl-login-text {
|
15 |
+
display: none;
|
16 |
+
}
|
17 |
+
|
18 |
+
.theme-4 .apsl-long-login-text,.theme-4 .apsl-login-text {
|
19 |
+
display: none;
|
20 |
+
}
|
21 |
+
|
22 |
+
.apsl-icon-block {
|
23 |
+
margin-bottom:10px;
|
24 |
+
|
25 |
+
}
|
26 |
+
|
27 |
+
.theme-1
|
28 |
+
.theme-1 .fa.fa-facebook:hover,.theme-1 .fa.fa-twitter:hover,.theme-1 .fa.fa-google:hover,
|
29 |
+
.theme-1 .fa.fa-linkedin:hover,.theme-1 .fa.fa-instagram:hover,.theme-1 .fa.fa-vk:hover,
|
30 |
+
.theme-1 .fa.fa-foursquare:hover,.theme-1 .fa.fa-wordpress:hover, .theme-1 .fa-buffer:hover
|
31 |
+
|
32 |
+
{
|
33 |
+
opacity:0.5;
|
34 |
+
-webkit-transition: all 1s ease;/* Safari 3.2+, Chrome */
|
35 |
+
-moz-transition: all 1s ease;/* Firefox 4-15 */
|
36 |
+
-o-transition: all 1s ease;/* Opera 10.5-12.00 */
|
37 |
+
transition: all 1s ease;/* Firefox 16+, Opera 12.50+ */
|
38 |
+
}
|
39 |
+
.theme-2 .fa.fa-facebook:hover,.theme-2 .fa.fa-twitter:hover,.theme-2 .fa.fa-google:hover,
|
40 |
+
.theme-2 .fa.fa-linkedin:hover,.theme-2 .fa.fa-instagram:hover,.theme-2 .fa.fa-vk:hover,
|
41 |
+
.theme-2 .fa.fa-foursquare:hover,.theme-2 .fa.fa-wordpress:hover, .theme-2 .fa-buffer:hover
|
42 |
+
|
43 |
+
{background:none;
|
44 |
+
/*opacity:0.5;
|
45 |
+
|
46 |
+
color:black;*/
|
47 |
+
-webkit-transition: all 1s ease;/* Safari 3.2+, Chrome */
|
48 |
+
-moz-transition: all 1s ease;/* Firefox 4-15 */
|
49 |
+
-o-transition: all 1s ease;/* Opera 10.5-12.00 */
|
50 |
+
transition: all 1s ease;/* Firefox 16+, Opera 12.50+ */
|
51 |
+
|
52 |
+
|
53 |
+
}
|
54 |
+
|
55 |
+
.theme-3 .fa.fa-facebook:hover,.theme-3 .fa.fa-twitter:hover,.theme-3 .fa.fa-google:hover,
|
56 |
+
.theme-3 .fa.fa-linkedin:hover,.theme-3 .fa.fa-instagram:hover,.theme-3 .fa.fa-vk:hover,
|
57 |
+
.theme-3 .fa.fa-foursquare:hover,.theme-3 .fa.fa-wordpress:hover, .theme-3 .fa-buffer:hover{
|
58 |
+
opacity:0.8;
|
59 |
+
background-color: #9D1C20;
|
60 |
+
-webkit-transition: all 1s ease;/* Safari 3.2+, Chrome */
|
61 |
+
-moz-transition: all 1s ease;/* Firefox 4-15 */
|
62 |
+
-o-transition: all 1s ease;/* Opera 10.5-12.00 */
|
63 |
+
transition: all 1s ease;/* Firefox 16+, Opera 12.50+ */
|
64 |
+
|
65 |
+
}
|
66 |
+
|
67 |
+
.theme-3 .fa.fa-facebook {
|
68 |
+
background: #3b5999 none repeat scroll 0 0;
|
69 |
+
border-radius: 5px;
|
70 |
+
color: #ffffff;
|
71 |
+
text-align: center;
|
72 |
+
height: 39px;
|
73 |
+
font-size: 20px;
|
74 |
+
vertical-align: middle;
|
75 |
+
display: table-cell;
|
76 |
+
width: 40px;
|
77 |
+
}
|
78 |
+
|
79 |
+
.theme-3 .fa-buffer {
|
80 |
+
background: url("../images/buffer.png") no-repeat scroll center center;
|
81 |
+
border-radius: 5px;
|
82 |
+
color: #ffffff;
|
83 |
+
text-align: center;
|
84 |
+
height: 39px;
|
85 |
+
font-size: 20px;
|
86 |
+
vertical-align: middle;
|
87 |
+
display: table-cell;
|
88 |
+
width: 38px;
|
89 |
+
background-color: #000
|
90 |
+
}
|
91 |
+
|
92 |
+
.theme-3 .fa.fa-twitter {
|
93 |
+
background: #42d3ff none repeat scroll 0 0;
|
94 |
+
border-radius: 5px;
|
95 |
+
color: #ffffff;
|
96 |
+
text-align: center;
|
97 |
+
height: 39px;
|
98 |
+
font-size: 20px;
|
99 |
+
vertical-align: middle;
|
100 |
+
display: table-cell;
|
101 |
+
width: 40px;
|
102 |
+
}
|
103 |
+
|
104 |
+
.theme-3 .fa.fa-google {
|
105 |
+
background: #dd4b39 none repeat scroll 0 0;
|
106 |
+
border-radius: 5px;
|
107 |
+
color: #ffffff;
|
108 |
+
margin-left: 0;
|
109 |
+
text-align: center;
|
110 |
+
height: 39px;
|
111 |
+
font-size: 20px;
|
112 |
+
vertical-align: middle;
|
113 |
+
display: table-cell;
|
114 |
+
width: 40px;
|
115 |
+
}
|
116 |
+
|
117 |
+
.theme-3 .fa.fa-linkedin {
|
118 |
+
background: #42d3ff none repeat scroll 0 0;
|
119 |
+
border-radius: 5px;
|
120 |
+
color: #ffffff;
|
121 |
+
margin-left: 1px;
|
122 |
+
text-align: center;
|
123 |
+
height: 39px;
|
124 |
+
font-size: 20px;
|
125 |
+
vertical-align: middle;
|
126 |
+
display: table-cell;
|
127 |
+
width: 40px;
|
128 |
+
}
|
129 |
+
|
130 |
+
.theme-3 .fa.fa-instagram {
|
131 |
+
background: #3f729b none repeat scroll 0 0;
|
132 |
+
border-radius: 5px;
|
133 |
+
color: #ffffff;
|
134 |
+
margin-left: 3px;
|
135 |
+
text-align: center;
|
136 |
+
height: 39px;
|
137 |
+
font-size: 20px;
|
138 |
+
vertical-align: middle;
|
139 |
+
display: table-cell;
|
140 |
+
width: 40px;
|
141 |
+
}
|
142 |
+
|
143 |
+
.theme-3 .fa.fa-vk {
|
144 |
+
background: #5e5959 none repeat scroll 0 0;
|
145 |
+
border-radius: 5px;
|
146 |
+
color: #ffffff;
|
147 |
+
margin-left: 3px;
|
148 |
+
text-align: center;
|
149 |
+
height: 39px;
|
150 |
+
font-size: 20px;
|
151 |
+
vertical-align: middle;
|
152 |
+
display: table-cell;
|
153 |
+
width: 40px;
|
154 |
+
}
|
155 |
+
|
156 |
+
.theme-3 .fa.fa-foursquare {
|
157 |
+
background: #80b63e none repeat scroll 0 0;
|
158 |
+
border-radius: 5px;
|
159 |
+
color: #ffffff;
|
160 |
+
margin-left: 3px;
|
161 |
+
text-align: center;
|
162 |
+
height: 39px;
|
163 |
+
font-size: 20px;
|
164 |
+
vertical-align: middle;
|
165 |
+
display: table-cell;
|
166 |
+
width: 40px;
|
167 |
+
}
|
168 |
+
|
169 |
+
.theme-3 .fa.fa-wordpress {
|
170 |
+
background: #8f8f8f none repeat scroll 0 0;
|
171 |
+
border-radius: 5px;
|
172 |
+
color: #ffffff;
|
173 |
+
margin-left: 3px;
|
174 |
+
text-align: center;
|
175 |
+
height: 39px;
|
176 |
+
font-size: 20px;
|
177 |
+
vertical-align: middle;
|
178 |
+
display: table-cell;
|
179 |
+
width: 40px;
|
180 |
+
}
|
181 |
+
|
182 |
+
.theme-1 .fa.fa-facebook {
|
183 |
+
background: #0073AA none repeat scroll 0 0;
|
184 |
+
border-radius: 24px;
|
185 |
+
color:#fff;
|
186 |
+
text-align: center;
|
187 |
+
height: 39px;
|
188 |
+
font-size: 20px;
|
189 |
+
vertical-align: middle;
|
190 |
+
display: table-cell;
|
191 |
+
width: 40px;
|
192 |
+
|
193 |
+
}
|
194 |
+
|
195 |
+
.theme-1 .fa-buffer {
|
196 |
+
background: rgba(0, 0, 0, 0) url("../images/buffer.png") no-repeat scroll center center;
|
197 |
+
border-radius: 24px;
|
198 |
+
color: #ffffff;
|
199 |
+
display: table-cell;
|
200 |
+
font-size: 20px;
|
201 |
+
height: 39px;
|
202 |
+
text-align: center;
|
203 |
+
vertical-align: middle;
|
204 |
+
width: 40px;
|
205 |
+
background-color: #333333
|
206 |
+
}
|
207 |
+
|
208 |
+
.theme-1 .fa.fa-twitter {
|
209 |
+
background: #1FCCFF none repeat scroll 0 0;
|
210 |
+
border-radius: 24px;
|
211 |
+
color:#fff;
|
212 |
+
text-align: center;
|
213 |
+
height: 39px;
|
214 |
+
font-size: 20px;
|
215 |
+
vertical-align: middle;
|
216 |
+
display: table-cell;
|
217 |
+
width: 40px;
|
218 |
+
}
|
219 |
+
|
220 |
+
.theme-1 .fa.fa-google {
|
221 |
+
background: #DE4B3B none repeat scroll 0 0;
|
222 |
+
border-radius: 24px;
|
223 |
+
color: #ffffff;
|
224 |
+
margin-left: 1px;
|
225 |
+
text-align: center;
|
226 |
+
height: 39px;
|
227 |
+
font-size: 20px;
|
228 |
+
vertical-align: middle;
|
229 |
+
display: table-cell;
|
230 |
+
width: 40px;
|
231 |
+
}
|
232 |
+
|
233 |
+
.theme-1 .fa.fa-linkedin {
|
234 |
+
background:#3F739A none repeat scroll 0 0;
|
235 |
+
border-radius: 24px;
|
236 |
+
color: #ffffff;
|
237 |
+
margin-left: 2px;
|
238 |
+
text-align: center;
|
239 |
+
height: 39px;
|
240 |
+
font-size: 20px;
|
241 |
+
vertical-align: middle;
|
242 |
+
display: table-cell;
|
243 |
+
width: 40px;
|
244 |
+
}
|
245 |
+
|
246 |
+
.theme-1 .fa.fa-instagram {
|
247 |
+
background: #ff0000 none repeat scroll 0 0;
|
248 |
+
border-radius: 24px;
|
249 |
+
color: #ffffff;
|
250 |
+
margin-left: 4px;
|
251 |
+
text-align: center;
|
252 |
+
height: 39px;
|
253 |
+
font-size: 20px;
|
254 |
+
vertical-align: middle;
|
255 |
+
display: table-cell;
|
256 |
+
width: 40px;
|
257 |
+
}
|
258 |
+
|
259 |
+
.theme-1 .fa.fa-vk {
|
260 |
+
background:#BF0808 none repeat scroll 0 0;
|
261 |
+
border-radius: 24px;
|
262 |
+
color: #ffffff;
|
263 |
+
margin-left: 5px;
|
264 |
+
text-align: center;
|
265 |
+
height: 39px;
|
266 |
+
font-size: 20px;
|
267 |
+
vertical-align: middle;
|
268 |
+
display: table-cell;
|
269 |
+
width: 40px;
|
270 |
+
}
|
271 |
+
.theme-1 .fa.fa-foursquare {
|
272 |
+
background:#8F8F8F none repeat scroll 0 0;
|
273 |
+
border-radius: 24px;
|
274 |
+
color: #ffffff;
|
275 |
+
margin-left: 5px;
|
276 |
+
text-align: center;
|
277 |
+
height: 39px;
|
278 |
+
font-size: 20px;
|
279 |
+
vertical-align: middle;
|
280 |
+
display: table-cell;
|
281 |
+
width: 40px;
|
282 |
+
}
|
283 |
+
|
284 |
+
.theme-1 .fa.fa-wordpress {
|
285 |
+
background:#5F5959 none repeat scroll 0 0;
|
286 |
+
border-radius: 24px;
|
287 |
+
color: #ffffff;
|
288 |
+
margin-left: 5px;
|
289 |
+
text-align: center;
|
290 |
+
height: 39px;
|
291 |
+
font-size: 20px;
|
292 |
+
vertical-align: middle;
|
293 |
+
display: table-cell;
|
294 |
+
width: 40px;
|
295 |
+
}
|
296 |
+
.theme-2 .fa.fa-facebook {
|
297 |
+
background: #1C74BC none repeat scroll 0 0;
|
298 |
+
color: #ffffff;
|
299 |
+
text-align: center;
|
300 |
+
height: 38px;
|
301 |
+
font-size: 20px;
|
302 |
+
vertical-align: middle;
|
303 |
+
display: table-cell;
|
304 |
+
width: 38px;
|
305 |
+
border: 1px solid #1C74BC;
|
306 |
+
}
|
307 |
+
.theme-2 .fa-buffer {
|
308 |
+
background: url("../images/buffer.png") no-repeat scroll center center;
|
309 |
+
color: #fff;
|
310 |
+
text-align: center;
|
311 |
+
height: 38px;
|
312 |
+
font-size: 20px;
|
313 |
+
vertical-align: middle;
|
314 |
+
display: table-cell;
|
315 |
+
width: 38px;
|
316 |
+
border: 1px solid #333333;
|
317 |
+
background-color: #333333
|
318 |
+
}
|
319 |
+
.theme-2 .fa.fa-twitter{
|
320 |
+
background: #24B4F3 none repeat scroll 0 0;
|
321 |
+
color: #ffffff;
|
322 |
+
text-align: center;
|
323 |
+
height: 38px;
|
324 |
+
font-size: 20px;
|
325 |
+
vertical-align: middle;
|
326 |
+
display: table-cell;
|
327 |
+
width: 38px;
|
328 |
+
border: 1px solid #24B4F3;
|
329 |
+
|
330 |
+
}
|
331 |
+
.theme-2 .fa.fa-google{
|
332 |
+
background: #86C344 none repeat scroll 0 0;
|
333 |
+
color: #ffffff;
|
334 |
+
text-align: center;
|
335 |
+
height: 38px;
|
336 |
+
font-size: 20px;
|
337 |
+
vertical-align: middle;
|
338 |
+
display: table-cell;
|
339 |
+
width: 38px;
|
340 |
+
border: 1px solid #86C344;
|
341 |
+
|
342 |
+
}
|
343 |
+
.theme-2 .fa.fa-linkedin{
|
344 |
+
background: #0000ff none repeat scroll 0 0;
|
345 |
+
color: #ffffff;
|
346 |
+
text-align: center;
|
347 |
+
height: 38px;
|
348 |
+
font-size: 20px;
|
349 |
+
vertical-align: middle;
|
350 |
+
display: table-cell;
|
351 |
+
width: 38px;
|
352 |
+
border: 1px solid #0000ff;
|
353 |
+
|
354 |
+
|
355 |
+
}
|
356 |
+
.theme-2 .fa.fa-instagram{
|
357 |
+
background: #D93232 none repeat scroll 0 0;
|
358 |
+
color: #ffffff;
|
359 |
+
text-align: center;
|
360 |
+
height: 38px;
|
361 |
+
font-size: 20px;
|
362 |
+
vertical-align: middle;
|
363 |
+
display: table-cell;
|
364 |
+
width: 38px;
|
365 |
+
border: 1px solid #D93232;
|
366 |
+
|
367 |
+
}
|
368 |
+
.theme-2 .fa.fa-vk{
|
369 |
+
background: #B7BABB none repeat scroll 0 0;
|
370 |
+
color: #ffffff;
|
371 |
+
text-align: center;
|
372 |
+
height: 38px;
|
373 |
+
font-size: 20px;
|
374 |
+
vertical-align: middle;
|
375 |
+
display: table-cell;
|
376 |
+
width: 38px;
|
377 |
+
border: 1px solid #B7BABB;
|
378 |
+
|
379 |
+
}
|
380 |
+
.theme-2 .fa.fa-foursquare{
|
381 |
+
background: #211F20 none repeat scroll 0 0;
|
382 |
+
color: #ffffff;
|
383 |
+
text-align: center;
|
384 |
+
height: 38px;
|
385 |
+
font-size: 20px;
|
386 |
+
vertical-align: middle;
|
387 |
+
display: table-cell;
|
388 |
+
width: 38px;
|
389 |
+
border: 1px solid #211F20;
|
390 |
+
|
391 |
+
}
|
392 |
+
.theme-2 .fa.fa-wordpress{
|
393 |
+
background:#4E624F none repeat scroll 0 0;
|
394 |
+
color: #ffffff;
|
395 |
+
text-align: center;
|
396 |
+
height: 38px;
|
397 |
+
font-size: 20px;
|
398 |
+
vertical-align: middle;
|
399 |
+
display: table-cell;
|
400 |
+
width: 38px;
|
401 |
+
border: 1px solid #4E624F;
|
402 |
+
|
403 |
+
}
|
404 |
+
|
405 |
+
.theme-2 .fa.fa-google:hover{
|
406 |
+
border: 1px solid #86C344;
|
407 |
+
color: #86C344 ;
|
408 |
+
|
409 |
+
}
|
410 |
+
.theme-2 .fa.fa-facebook:hover{
|
411 |
+
border: 1px solid #1C74BC;
|
412 |
+
color: #1C74BC ;
|
413 |
+
|
414 |
+
}
|
415 |
+
|
416 |
+
.theme-2 .fa.fa-twitter:hover{
|
417 |
+
border: 1px solid #24B4F3;
|
418 |
+
color: #24B4F3 ;
|
419 |
+
|
420 |
+
}
|
421 |
+
|
422 |
+
.theme-2 .fa.fa-instagram:hover{
|
423 |
+
border: 1px solid #D93232;
|
424 |
+
color: #D93232 ;
|
425 |
+
|
426 |
+
}
|
427 |
+
|
428 |
+
.theme-2 .fa.fa-foursquare:hover{
|
429 |
+
border: 1px solid #211F20;
|
430 |
+
color: #211F20 ;
|
431 |
+
|
432 |
+
}
|
433 |
+
|
434 |
+
.theme-2 .fa.fa-wordpress:hover{
|
435 |
+
border: 1px solid #4E624F;
|
436 |
+
color: #4E624F ;
|
437 |
+
|
438 |
+
|
439 |
+
}
|
440 |
+
|
441 |
+
.theme-2 .fa.fa-linkedin:hover{
|
442 |
+
border: 1px solid #0000ff;
|
443 |
+
color: #0000ff ;
|
444 |
+
|
445 |
+
|
446 |
+
}
|
447 |
+
|
448 |
+
.theme-2 .fa.fa-vk:hover{
|
449 |
+
border: 1px solid #B7BABB;
|
450 |
+
color: #B7BABB ;
|
451 |
+
|
452 |
+
|
453 |
+
}
|
454 |
+
|
455 |
+
.theme-2 .fa-buffer:hover{
|
456 |
+
|
457 |
+
background: url("../images/buffer-black.png") no-repeat scroll center center;
|
458 |
+
border: 1px solid #333333;
|
459 |
+
background-color: #fff ;
|
460 |
+
}
|
461 |
+
|
462 |
+
.theme-4 .fa.fa-facebook,.theme-4 .apsl-icon-block.buffer,.theme-4 .fa.fa-twitter,.theme-4 .fa.fa-google,
|
463 |
+
.theme-4 .fa.fa-linkedin,.theme-4 .fa.fa-instagram,.theme-4 .fa.fa-vk,.theme-4 .fa.fa-foursquare,
|
464 |
+
.theme-4 .fa.fa-wordpress{
|
465 |
+
color:#000;
|
466 |
+
font-size:20px;
|
467 |
+
}
|
468 |
+
|
469 |
+
.theme-4 .fa.fa-buffer {
|
470 |
+
background: rgba(0, 0, 0, 0) url("../images/buffer-black.png") no-repeat scroll center center;
|
471 |
+
width:18px;
|
472 |
+
height:18px;
|
473 |
+
background-size: cover;
|
474 |
+
margin-top: 1px
|
475 |
+
}
|
476 |
+
|
477 |
+
.apsl-icon-block {
|
478 |
+
display: inline-block;
|
479 |
+
margin-right: 10px;
|
480 |
+
|
481 |
+
}
|
482 |
+
|
483 |
+
span.apsl-login-new-text{
|
484 |
+
font-size: 15px;
|
485 |
+
font-weight: bold;
|
486 |
+
display: block;
|
487 |
+
margin-bottom: 15px
|
488 |
+
}
|
489 |
+
|
490 |
+
#loginform a{
|
491 |
+
display: inline-block;
|
492 |
+
}
|
493 |
+
|
494 |
+
.theme-4 .apsl-icon-block.buffer.clearfix{
|
495 |
+
background-color: #fff;
|
496 |
+
}
|
497 |
+
|
498 |
+
.apsl-error{
|
499 |
+
font-size: 13px;
|
500 |
+
color:red;
|
501 |
+
margin-bottom: 10px;
|
502 |
+
display: block;
|
503 |
+
}
|
facebook/apsl_facebook_class.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Facebook extends loginBySocialID{
|
3 |
+
static $loginBy = 'deLoginByFacebook';
|
4 |
+
|
5 |
+
function loginByOpenID(){
|
6 |
+
$post = $_POST;
|
7 |
+
$get = $_GET;
|
8 |
+
$request = $_REQUEST;
|
9 |
+
$site = $this->siteUrl();
|
10 |
+
$callBackUrl= $this->callBackUrl();
|
11 |
+
$response = new stdClass();
|
12 |
+
$a = explode('_',$this->get_var(parent::$loginKey));
|
13 |
+
$action = $a[1];
|
14 |
+
$options = $this->getOptions();
|
15 |
+
$config = array(
|
16 |
+
'appId' => $options['facebook_key'],
|
17 |
+
'secret' => $options['facebook_secret']
|
18 |
+
);
|
19 |
+
|
20 |
+
$facebook = new Facebook($config);
|
21 |
+
if ($action == 'login'){
|
22 |
+
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$callBackUrl.parent::$loginKey.'='.self::$loginBy.'_check', 'scope'=>'email'));
|
23 |
+
$this->redirect($loginUrl);
|
24 |
+
exit();
|
25 |
+
}else{
|
26 |
+
echo "jay";
|
27 |
+
die();
|
28 |
+
$user = $facebook->getUser();
|
29 |
+
if ($user){
|
30 |
+
try {// Proceed knowing you have a logged in user who's authenticated.
|
31 |
+
$user_profile = $facebook->api('/me');
|
32 |
+
} catch (FacebookApiException $e) {
|
33 |
+
error_log($e);
|
34 |
+
$user = null;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
if($user!=null){
|
38 |
+
$response->status = 'SUCCESS';
|
39 |
+
$response->deuid = $user_profile['id'];
|
40 |
+
$response->deutype = 'facebook';
|
41 |
+
$response->first_name = $user_profile['first_name'];
|
42 |
+
$response->last_name = $user_profile['last_name'];
|
43 |
+
$response->email = $user_profile['email'];
|
44 |
+
$response->username = $user_profile['email'];
|
45 |
+
////['id'].'@facebook';
|
46 |
+
$headers = get_headers('https://graph.facebook.com/'.$user_profile['id'].'/picture',1);
|
47 |
+
// just a precaution, check whether the header isset...
|
48 |
+
if(isset($headers['Location'])) {
|
49 |
+
$response->deuimage = $headers['Location']; // string
|
50 |
+
} else {
|
51 |
+
$response->deuimage = false; // nothing there? .. weird, but okay!
|
52 |
+
}
|
53 |
+
$response->error_message = '';
|
54 |
+
}else{
|
55 |
+
$response->status = 'ERROR';
|
56 |
+
$response->error_code = 2;
|
57 |
+
$response->error_message= 'INVALID AUTHORIZATION';
|
58 |
+
}
|
59 |
+
}
|
60 |
+
return $response;
|
61 |
+
}
|
62 |
+
|
63 |
+
function onLogin(){
|
64 |
+
$response = new stdClass();
|
65 |
+
$result = $this->loginByOpenID($response);
|
66 |
+
if($result->status == 'SUCCESS'){
|
67 |
+
$row = $this->getUserByMail( $result->email);
|
68 |
+
if(!$row){
|
69 |
+
$this->creatUser($result->username, $result->email);
|
70 |
+
$row = $this->getUserByMail( $result->email);
|
71 |
+
update_user_meta($row->ID, 'email', $result->email);
|
72 |
+
update_user_meta($row->ID, 'first_name', $result->first_name);
|
73 |
+
update_user_meta($row->ID, 'last_name', $result->last_name);
|
74 |
+
update_user_meta($row->ID, 'deuid', $result->deuid);
|
75 |
+
update_user_meta($row->ID, 'deutype', $result->deutype);
|
76 |
+
update_user_meta($row->ID, 'deuimage', $result->deuimage);
|
77 |
+
wp_update_user( array ('ID' => $row->ID, 'display_name' => $result->first_name.' '.$result->last_name) ) ;
|
78 |
+
}
|
79 |
+
//var_dump($row);
|
80 |
+
$this->loginUser($row->ID);
|
81 |
+
}
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
?>
|
facebook/src/base_facebook.php
ADDED
@@ -0,0 +1,1543 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
class FacebookApiException extends Exception
|
29 |
+
{
|
30 |
+
/**
|
31 |
+
* The result from the API server that represents the exception information.
|
32 |
+
*
|
33 |
+
* @var mixed
|
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 = 0;
|
46 |
+
if (isset($result['error_code']) && is_int($result['error_code'])) {
|
47 |
+
$code = $result['error_code'];
|
48 |
+
}
|
49 |
+
|
50 |
+
if (isset($result['error_description'])) {
|
51 |
+
// OAuth 2.0 Draft 10 style
|
52 |
+
$msg = $result['error_description'];
|
53 |
+
} else if (isset($result['error']) && is_array($result['error'])) {
|
54 |
+
// OAuth 2.0 Draft 00 style
|
55 |
+
$msg = $result['error']['message'];
|
56 |
+
} else if (isset($result['error_msg'])) {
|
57 |
+
// Rest server style
|
58 |
+
$msg = $result['error_msg'];
|
59 |
+
} else {
|
60 |
+
$msg = 'Unknown Error. Check getResult()';
|
61 |
+
}
|
62 |
+
|
63 |
+
parent::__construct($msg, $code);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Return the associated result object returned by the API server.
|
68 |
+
*
|
69 |
+
* @return array The result from the API server
|
70 |
+
*/
|
71 |
+
public function getResult() {
|
72 |
+
return $this->result;
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Returns the associated type for the error. This will default to
|
77 |
+
* 'Exception' when a type is not available.
|
78 |
+
*
|
79 |
+
* @return string
|
80 |
+
*/
|
81 |
+
public function getType() {
|
82 |
+
if (isset($this->result['error'])) {
|
83 |
+
$error = $this->result['error'];
|
84 |
+
if (is_string($error)) {
|
85 |
+
// OAuth 2.0 Draft 10 style
|
86 |
+
return $error;
|
87 |
+
} else if (is_array($error)) {
|
88 |
+
// OAuth 2.0 Draft 00 style
|
89 |
+
if (isset($error['type'])) {
|
90 |
+
return $error['type'];
|
91 |
+
}
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
return 'Exception';
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* To make debugging easier.
|
100 |
+
*
|
101 |
+
* @return string The string representation of the error
|
102 |
+
*/
|
103 |
+
public function __toString() {
|
104 |
+
$str = $this->getType() . ': ';
|
105 |
+
if ($this->code != 0) {
|
106 |
+
$str .= $this->code . ': ';
|
107 |
+
}
|
108 |
+
return $str . $this->message;
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Provides access to the Facebook Platform. This class provides
|
114 |
+
* a majority of the functionality needed, but the class is abstract
|
115 |
+
* because it is designed to be sub-classed. The subclass must
|
116 |
+
* implement the four abstract methods listed at the bottom of
|
117 |
+
* the file.
|
118 |
+
*
|
119 |
+
* @author Naitik Shah <naitik@facebook.com>
|
120 |
+
*/
|
121 |
+
abstract class BaseFacebook
|
122 |
+
{
|
123 |
+
/**
|
124 |
+
* Version.
|
125 |
+
*/
|
126 |
+
const VERSION = '3.2.3';
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Signed Request Algorithm.
|
130 |
+
*/
|
131 |
+
const SIGNED_REQUEST_ALGORITHM = 'HMAC-SHA256';
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Default options for curl.
|
135 |
+
*
|
136 |
+
* @var array
|
137 |
+
*/
|
138 |
+
public static $CURL_OPTS = array(
|
139 |
+
CURLOPT_CONNECTTIMEOUT => 10,
|
140 |
+
CURLOPT_RETURNTRANSFER => true,
|
141 |
+
CURLOPT_TIMEOUT => 60,
|
142 |
+
CURLOPT_USERAGENT => 'facebook-php-3.2',
|
143 |
+
);
|
144 |
+
|
145 |
+
/**
|
146 |
+
* List of query parameters that get automatically dropped when rebuilding
|
147 |
+
* the current URL.
|
148 |
+
*
|
149 |
+
* @var array
|
150 |
+
*/
|
151 |
+
protected static $DROP_QUERY_PARAMS = array(
|
152 |
+
'code',
|
153 |
+
'state',
|
154 |
+
'signed_request',
|
155 |
+
);
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Maps aliases to Facebook domains.
|
159 |
+
*
|
160 |
+
* @var array
|
161 |
+
*/
|
162 |
+
public static $DOMAIN_MAP = array(
|
163 |
+
'api' => 'https://api.facebook.com/',
|
164 |
+
'api_video' => 'https://api-video.facebook.com/',
|
165 |
+
'api_read' => 'https://api-read.facebook.com/',
|
166 |
+
'graph' => 'https://graph.facebook.com/',
|
167 |
+
'graph_video' => 'https://graph-video.facebook.com/',
|
168 |
+
'www' => 'https://www.facebook.com/',
|
169 |
+
);
|
170 |
+
|
171 |
+
/**
|
172 |
+
* The Application ID.
|
173 |
+
*
|
174 |
+
* @var string
|
175 |
+
*/
|
176 |
+
protected $appId;
|
177 |
+
|
178 |
+
/**
|
179 |
+
* The Application App Secret.
|
180 |
+
*
|
181 |
+
* @var string
|
182 |
+
*/
|
183 |
+
protected $appSecret;
|
184 |
+
|
185 |
+
/**
|
186 |
+
* The ID of the Facebook user, or 0 if the user is logged out.
|
187 |
+
*
|
188 |
+
* @var integer
|
189 |
+
*/
|
190 |
+
protected $user;
|
191 |
+
|
192 |
+
/**
|
193 |
+
* The data from the signed_request token.
|
194 |
+
*
|
195 |
+
* @var string
|
196 |
+
*/
|
197 |
+
protected $signedRequest;
|
198 |
+
|
199 |
+
/**
|
200 |
+
* A CSRF state variable to assist in the defense against CSRF attacks.
|
201 |
+
*
|
202 |
+
* @var string
|
203 |
+
*/
|
204 |
+
protected $state;
|
205 |
+
|
206 |
+
/**
|
207 |
+
* The OAuth access token received in exchange for a valid authorization
|
208 |
+
* code. null means the access token has yet to be determined.
|
209 |
+
*
|
210 |
+
* @var string
|
211 |
+
*/
|
212 |
+
protected $accessToken = null;
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Indicates if the CURL based @ syntax for file uploads is enabled.
|
216 |
+
*
|
217 |
+
* @var boolean
|
218 |
+
*/
|
219 |
+
protected $fileUploadSupport = false;
|
220 |
+
|
221 |
+
/**
|
222 |
+
* Indicates if we trust HTTP_X_FORWARDED_* headers.
|
223 |
+
*
|
224 |
+
* @var boolean
|
225 |
+
*/
|
226 |
+
protected $trustForwarded = false;
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Indicates if signed_request is allowed in query parameters.
|
230 |
+
*
|
231 |
+
* @var boolean
|
232 |
+
*/
|
233 |
+
protected $allowSignedRequest = true;
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Initialize a Facebook Application.
|
237 |
+
*
|
238 |
+
* The configuration:
|
239 |
+
* - appId: the application ID
|
240 |
+
* - secret: the application secret
|
241 |
+
* - fileUpload: (optional) boolean indicating if file uploads are enabled
|
242 |
+
* - allowSignedRequest: (optional) boolean indicating if signed_request is
|
243 |
+
* allowed in query parameters or POST body. Should be
|
244 |
+
* false for non-canvas apps. Defaults to true.
|
245 |
+
*
|
246 |
+
* @param array $config The application configuration
|
247 |
+
*/
|
248 |
+
public function __construct($config) {
|
249 |
+
$this->setAppId($config['appId']);
|
250 |
+
$this->setAppSecret($config['secret']);
|
251 |
+
if (isset($config['fileUpload'])) {
|
252 |
+
$this->setFileUploadSupport($config['fileUpload']);
|
253 |
+
}
|
254 |
+
if (isset($config['trustForwarded']) && $config['trustForwarded']) {
|
255 |
+
$this->trustForwarded = true;
|
256 |
+
}
|
257 |
+
if (isset($config['allowSignedRequest'])
|
258 |
+
&& !$config['allowSignedRequest']) {
|
259 |
+
$this->allowSignedRequest = false;
|
260 |
+
}
|
261 |
+
$state = $this->getPersistentData('state');
|
262 |
+
if (!empty($state)) {
|
263 |
+
$this->state = $state;
|
264 |
+
}
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Set the Application ID.
|
269 |
+
*
|
270 |
+
* @param string $appId The Application ID
|
271 |
+
*
|
272 |
+
* @return BaseFacebook
|
273 |
+
*/
|
274 |
+
public function setAppId($appId) {
|
275 |
+
$this->appId = $appId;
|
276 |
+
return $this;
|
277 |
+
}
|
278 |
+
|
279 |
+
/**
|
280 |
+
* Get the Application ID.
|
281 |
+
*
|
282 |
+
* @return string the Application ID
|
283 |
+
*/
|
284 |
+
public function getAppId() {
|
285 |
+
return $this->appId;
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Set the App Secret.
|
290 |
+
*
|
291 |
+
* @param string $apiSecret The App Secret
|
292 |
+
*
|
293 |
+
* @return BaseFacebook
|
294 |
+
* @deprecated Use setAppSecret instead.
|
295 |
+
* @see setAppSecret()
|
296 |
+
*/
|
297 |
+
public function setApiSecret($apiSecret) {
|
298 |
+
$this->setAppSecret($apiSecret);
|
299 |
+
return $this;
|
300 |
+
}
|
301 |
+
|
302 |
+
/**
|
303 |
+
* Set the App Secret.
|
304 |
+
*
|
305 |
+
* @param string $appSecret The App Secret
|
306 |
+
*
|
307 |
+
* @return BaseFacebook
|
308 |
+
*/
|
309 |
+
public function setAppSecret($appSecret) {
|
310 |
+
$this->appSecret = $appSecret;
|
311 |
+
return $this;
|
312 |
+
}
|
313 |
+
|
314 |
+
/**
|
315 |
+
* Get the App Secret.
|
316 |
+
*
|
317 |
+
* @return string the App Secret
|
318 |
+
*
|
319 |
+
* @deprecated Use getAppSecret instead.
|
320 |
+
* @see getAppSecret()
|
321 |
+
*/
|
322 |
+
public function getApiSecret() {
|
323 |
+
return $this->getAppSecret();
|
324 |
+
}
|
325 |
+
|
326 |
+
/**
|
327 |
+
* Get the App Secret.
|
328 |
+
*
|
329 |
+
* @return string the App Secret
|
330 |
+
*/
|
331 |
+
public function getAppSecret() {
|
332 |
+
return $this->appSecret;
|
333 |
+
}
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Set the file upload support status.
|
337 |
+
*
|
338 |
+
* @param boolean $fileUploadSupport The file upload support status.
|
339 |
+
*
|
340 |
+
* @return BaseFacebook
|
341 |
+
*/
|
342 |
+
public function setFileUploadSupport($fileUploadSupport) {
|
343 |
+
$this->fileUploadSupport = $fileUploadSupport;
|
344 |
+
return $this;
|
345 |
+
}
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Get the file upload support status.
|
349 |
+
*
|
350 |
+
* @return boolean true if and only if the server supports file upload.
|
351 |
+
*/
|
352 |
+
public function getFileUploadSupport() {
|
353 |
+
return $this->fileUploadSupport;
|
354 |
+
}
|
355 |
+
|
356 |
+
/**
|
357 |
+
* Get the file upload support status.
|
358 |
+
*
|
359 |
+
* @return boolean true if and only if the server supports file upload.
|
360 |
+
*
|
361 |
+
* @deprecated Use getFileUploadSupport instead.
|
362 |
+
* @see getFileUploadSupport()
|
363 |
+
*/
|
364 |
+
public function useFileUploadSupport() {
|
365 |
+
return $this->getFileUploadSupport();
|
366 |
+
}
|
367 |
+
|
368 |
+
/**
|
369 |
+
* Sets the access token for api calls. Use this if you get
|
370 |
+
* your access token by other means and just want the SDK
|
371 |
+
* to use it.
|
372 |
+
*
|
373 |
+
* @param string $access_token an access token.
|
374 |
+
*
|
375 |
+
* @return BaseFacebook
|
376 |
+
*/
|
377 |
+
public function setAccessToken($access_token) {
|
378 |
+
$this->accessToken = $access_token;
|
379 |
+
return $this;
|
380 |
+
}
|
381 |
+
|
382 |
+
/**
|
383 |
+
* Extend an access token, while removing the short-lived token that might
|
384 |
+
* have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H
|
385 |
+
* for the workaround.
|
386 |
+
*/
|
387 |
+
public function setExtendedAccessToken() {
|
388 |
+
try {
|
389 |
+
// need to circumvent json_decode by calling _oauthRequest
|
390 |
+
// directly, since response isn't JSON format.
|
391 |
+
$access_token_response = $this->_oauthRequest(
|
392 |
+
$this->getUrl('graph', '/oauth/access_token'),
|
393 |
+
$params = array(
|
394 |
+
'client_id' => $this->getAppId(),
|
395 |
+
'client_secret' => $this->getAppSecret(),
|
396 |
+
'grant_type' => 'fb_exchange_token',
|
397 |
+
'fb_exchange_token' => $this->getAccessToken(),
|
398 |
+
)
|
399 |
+
);
|
400 |
+
}
|
401 |
+
catch (FacebookApiException $e) {
|
402 |
+
// most likely that user very recently revoked authorization.
|
403 |
+
// In any event, we don't have an access token, so say so.
|
404 |
+
return false;
|
405 |
+
}
|
406 |
+
|
407 |
+
if (empty($access_token_response)) {
|
408 |
+
return false;
|
409 |
+
}
|
410 |
+
|
411 |
+
$response_params = array();
|
412 |
+
parse_str($access_token_response, $response_params);
|
413 |
+
|
414 |
+
if (!isset($response_params['access_token'])) {
|
415 |
+
return false;
|
416 |
+
}
|
417 |
+
|
418 |
+
$this->destroySession();
|
419 |
+
|
420 |
+
$this->setPersistentData(
|
421 |
+
'access_token', $response_params['access_token']
|
422 |
+
);
|
423 |
+
}
|
424 |
+
|
425 |
+
/**
|
426 |
+
* Determines the access token that should be used for API calls.
|
427 |
+
* The first time this is called, $this->accessToken is set equal
|
428 |
+
* to either a valid user access token, or it's set to the application
|
429 |
+
* access token if a valid user access token wasn't available. Subsequent
|
430 |
+
* calls return whatever the first call returned.
|
431 |
+
*
|
432 |
+
* @return string The access token
|
433 |
+
*/
|
434 |
+
public function getAccessToken() {
|
435 |
+
if ($this->accessToken !== null) {
|
436 |
+
// we've done this already and cached it. Just return.
|
437 |
+
return $this->accessToken;
|
438 |
+
}
|
439 |
+
|
440 |
+
// first establish access token to be the application
|
441 |
+
// access token, in case we navigate to the /oauth/access_token
|
442 |
+
// endpoint, where SOME access token is required.
|
443 |
+
$this->setAccessToken($this->getApplicationAccessToken());
|
444 |
+
$user_access_token = $this->getUserAccessToken();
|
445 |
+
if ($user_access_token) {
|
446 |
+
$this->setAccessToken($user_access_token);
|
447 |
+
}
|
448 |
+
|
449 |
+
return $this->accessToken;
|
450 |
+
}
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Determines and returns the user access token, first using
|
454 |
+
* the signed request if present, and then falling back on
|
455 |
+
* the authorization code if present. The intent is to
|
456 |
+
* return a valid user access token, or false if one is determined
|
457 |
+
* to not be available.
|
458 |
+
*
|
459 |
+
* @return string A valid user access token, or false if one
|
460 |
+
* could not be determined.
|
461 |
+
*/
|
462 |
+
protected function getUserAccessToken() {
|
463 |
+
// first, consider a signed request if it's supplied.
|
464 |
+
// if there is a signed request, then it alone determines
|
465 |
+
// the access token.
|
466 |
+
$signed_request = $this->getSignedRequest();
|
467 |
+
if ($signed_request) {
|
468 |
+
// apps.facebook.com hands the access_token in the signed_request
|
469 |
+
if (array_key_exists('oauth_token', $signed_request)) {
|
470 |
+
$access_token = $signed_request['oauth_token'];
|
471 |
+
$this->setPersistentData('access_token', $access_token);
|
472 |
+
return $access_token;
|
473 |
+
}
|
474 |
+
|
475 |
+
// the JS SDK puts a code in with the redirect_uri of ''
|
476 |
+
if (array_key_exists('code', $signed_request)) {
|
477 |
+
$code = $signed_request['code'];
|
478 |
+
if ($code && $code == $this->getPersistentData('code')) {
|
479 |
+
// short-circuit if the code we have is the same as the one presented
|
480 |
+
return $this->getPersistentData('access_token');
|
481 |
+
}
|
482 |
+
|
483 |
+
$access_token = $this->getAccessTokenFromCode($code, '');
|
484 |
+
if ($access_token) {
|
485 |
+
$this->setPersistentData('code', $code);
|
486 |
+
$this->setPersistentData('access_token', $access_token);
|
487 |
+
return $access_token;
|
488 |
+
}
|
489 |
+
}
|
490 |
+
|
491 |
+
// signed request states there's no access token, so anything
|
492 |
+
// stored should be cleared.
|
493 |
+
$this->clearAllPersistentData();
|
494 |
+
return false; // respect the signed request's data, even
|
495 |
+
// if there's an authorization code or something else
|
496 |
+
}
|
497 |
+
|
498 |
+
$code = $this->getCode();
|
499 |
+
if ($code && $code != $this->getPersistentData('code')) {
|
500 |
+
$access_token = $this->getAccessTokenFromCode($code);
|
501 |
+
if ($access_token) {
|
502 |
+
$this->setPersistentData('code', $code);
|
503 |
+
$this->setPersistentData('access_token', $access_token);
|
504 |
+
return $access_token;
|
505 |
+
}
|
506 |
+
|
507 |
+
// code was bogus, so everything based on it should be invalidated.
|
508 |
+
$this->clearAllPersistentData();
|
509 |
+
return false;
|
510 |
+
}
|
511 |
+
|
512 |
+
// as a fallback, just return whatever is in the persistent
|
513 |
+
// store, knowing nothing explicit (signed request, authorization
|
514 |
+
// code, etc.) was present to shadow it (or we saw a code in $_REQUEST,
|
515 |
+
// but it's the same as what's in the persistent store)
|
516 |
+
return $this->getPersistentData('access_token');
|
517 |
+
}
|
518 |
+
|
519 |
+
/**
|
520 |
+
* Retrieve the signed request, either from a request parameter or,
|
521 |
+
* if not present, from a cookie.
|
522 |
+
*
|
523 |
+
* @return string the signed request, if available, or null otherwise.
|
524 |
+
*/
|
525 |
+
public function getSignedRequest() {
|
526 |
+
if (!$this->signedRequest) {
|
527 |
+
if ($this->allowSignedRequest && !empty($_REQUEST['signed_request'])) {
|
528 |
+
$this->signedRequest = $this->parseSignedRequest(
|
529 |
+
$_REQUEST['signed_request']
|
530 |
+
);
|
531 |
+
} else if (!empty($_COOKIE[$this->getSignedRequestCookieName()])) {
|
532 |
+
$this->signedRequest = $this->parseSignedRequest(
|
533 |
+
$_COOKIE[$this->getSignedRequestCookieName()]);
|
534 |
+
}
|
535 |
+
}
|
536 |
+
return $this->signedRequest;
|
537 |
+
}
|
538 |
+
|
539 |
+
/**
|
540 |
+
* Get the UID of the connected user, or 0
|
541 |
+
* if the Facebook user is not connected.
|
542 |
+
*
|
543 |
+
* @return string the UID if available.
|
544 |
+
*/
|
545 |
+
public function getUser() {
|
546 |
+
if ($this->user !== null) {
|
547 |
+
// we've already determined this and cached the value.
|
548 |
+
return $this->user;
|
549 |
+
}
|
550 |
+
|
551 |
+
return $this->user = $this->getUserFromAvailableData();
|
552 |
+
}
|
553 |
+
|
554 |
+
/**
|
555 |
+
* Determines the connected user by first examining any signed
|
556 |
+
* requests, then considering an authorization code, and then
|
557 |
+
* falling back to any persistent store storing the user.
|
558 |
+
*
|
559 |
+
* @return integer The id of the connected Facebook user,
|
560 |
+
* or 0 if no such user exists.
|
561 |
+
*/
|
562 |
+
protected function getUserFromAvailableData() {
|
563 |
+
// if a signed request is supplied, then it solely determines
|
564 |
+
// who the user is.
|
565 |
+
$signed_request = $this->getSignedRequest();
|
566 |
+
if ($signed_request) {
|
567 |
+
if (array_key_exists('user_id', $signed_request)) {
|
568 |
+
$user = $signed_request['user_id'];
|
569 |
+
|
570 |
+
if($user != $this->getPersistentData('user_id')){
|
571 |
+
$this->clearAllPersistentData();
|
572 |
+
}
|
573 |
+
|
574 |
+
$this->setPersistentData('user_id', $signed_request['user_id']);
|
575 |
+
return $user;
|
576 |
+
}
|
577 |
+
|
578 |
+
// if the signed request didn't present a user id, then invalidate
|
579 |
+
// all entries in any persistent store.
|
580 |
+
$this->clearAllPersistentData();
|
581 |
+
return 0;
|
582 |
+
}
|
583 |
+
|
584 |
+
$user = $this->getPersistentData('user_id', $default = 0);
|
585 |
+
$persisted_access_token = $this->getPersistentData('access_token');
|
586 |
+
|
587 |
+
// use access_token to fetch user id if we have a user access_token, or if
|
588 |
+
// the cached access token has changed.
|
589 |
+
$access_token = $this->getAccessToken();
|
590 |
+
if ($access_token &&
|
591 |
+
$access_token != $this->getApplicationAccessToken() &&
|
592 |
+
!($user && $persisted_access_token == $access_token)) {
|
593 |
+
$user = $this->getUserFromAccessToken();
|
594 |
+
if ($user) {
|
595 |
+
$this->setPersistentData('user_id', $user);
|
596 |
+
} else {
|
597 |
+
$this->clearAllPersistentData();
|
598 |
+
}
|
599 |
+
}
|
600 |
+
|
601 |
+
return $user;
|
602 |
+
}
|
603 |
+
|
604 |
+
/**
|
605 |
+
* Get a Login URL for use with redirects. By default, full page redirect is
|
606 |
+
* assumed. If you are using the generated URL with a window.open() call in
|
607 |
+
* JavaScript, you can pass in display=popup as part of the $params.
|
608 |
+
*
|
609 |
+
* The parameters:
|
610 |
+
* - redirect_uri: the url to go to after a successful login
|
611 |
+
* - scope: comma separated list of requested extended perms
|
612 |
+
*
|
613 |
+
* @param array $params Provide custom parameters
|
614 |
+
* @return string The URL for the login flow
|
615 |
+
*/
|
616 |
+
public function getLoginUrl($params=array()) {
|
617 |
+
$this->establishCSRFTokenState();
|
618 |
+
$currentUrl = $this->getCurrentUrl();
|
619 |
+
|
620 |
+
// if 'scope' is passed as an array, convert to comma separated list
|
621 |
+
$scopeParams = isset($params['scope']) ? $params['scope'] : null;
|
622 |
+
if ($scopeParams && is_array($scopeParams)) {
|
623 |
+
$params['scope'] = implode(',', $scopeParams);
|
624 |
+
}
|
625 |
+
|
626 |
+
return $this->getUrl(
|
627 |
+
'www',
|
628 |
+
'dialog/oauth',
|
629 |
+
array_merge(
|
630 |
+
array(
|
631 |
+
'client_id' => $this->getAppId(),
|
632 |
+
'redirect_uri' => $currentUrl, // possibly overwritten
|
633 |
+
'state' => $this->state,
|
634 |
+
'sdk' => 'php-sdk-'.self::VERSION
|
635 |
+
),
|
636 |
+
$params
|
637 |
+
));
|
638 |
+
}
|
639 |
+
|
640 |
+
/**
|
641 |
+
* Get a Logout URL suitable for use with redirects.
|
642 |
+
*
|
643 |
+
* The parameters:
|
644 |
+
* - next: the url to go to after a successful logout
|
645 |
+
*
|
646 |
+
* @param array $params Provide custom parameters
|
647 |
+
* @return string The URL for the logout flow
|
648 |
+
*/
|
649 |
+
public function getLogoutUrl($params=array()) {
|
650 |
+
return $this->getUrl(
|
651 |
+
'www',
|
652 |
+
'logout.php',
|
653 |
+
array_merge(array(
|
654 |
+
'next' => $this->getCurrentUrl(),
|
655 |
+
'access_token' => $this->getUserAccessToken(),
|
656 |
+
), $params)
|
657 |
+
);
|
658 |
+
}
|
659 |
+
|
660 |
+
/**
|
661 |
+
* Get a login status URL to fetch the status from Facebook.
|
662 |
+
*
|
663 |
+
* @param array $params Provide custom parameters
|
664 |
+
* @return string The URL for the logout flow
|
665 |
+
*/
|
666 |
+
public function getLoginStatusUrl($params=array()) {
|
667 |
+
return $this->getLoginUrl(
|
668 |
+
array_merge(array(
|
669 |
+
'response_type' => 'code',
|
670 |
+
'display' => 'none',
|
671 |
+
), $params)
|
672 |
+
);
|
673 |
+
}
|
674 |
+
|
675 |
+
/**
|
676 |
+
* Make an API call.
|
677 |
+
*
|
678 |
+
* @return mixed The decoded response
|
679 |
+
*/
|
680 |
+
public function api(/* polymorphic */) {
|
681 |
+
$args = func_get_args();
|
682 |
+
if (is_array($args[0])) {
|
683 |
+
return $this->_restserver($args[0]);
|
684 |
+
} else {
|
685 |
+
return call_user_func_array(array($this, '_graph'), $args);
|
686 |
+
}
|
687 |
+
}
|
688 |
+
|
689 |
+
/**
|
690 |
+
* Constructs and returns the name of the cookie that
|
691 |
+
* potentially houses the signed request for the app user.
|
692 |
+
* The cookie is not set by the BaseFacebook class, but
|
693 |
+
* it may be set by the JavaScript SDK.
|
694 |
+
*
|
695 |
+
* @return string the name of the cookie that would house
|
696 |
+
* the signed request value.
|
697 |
+
*/
|
698 |
+
protected function getSignedRequestCookieName() {
|
699 |
+
return 'fbsr_'.$this->getAppId();
|
700 |
+
}
|
701 |
+
|
702 |
+
/**
|
703 |
+
* Constructs and returns the name of the cookie that potentially contain
|
704 |
+
* metadata. The cookie is not set by the BaseFacebook class, but it may be
|
705 |
+
* set by the JavaScript SDK.
|
706 |
+
*
|
707 |
+
* @return string the name of the cookie that would house metadata.
|
708 |
+
*/
|
709 |
+
protected function getMetadataCookieName() {
|
710 |
+
return 'fbm_'.$this->getAppId();
|
711 |
+
}
|
712 |
+
|
713 |
+
/**
|
714 |
+
* Get the authorization code from the query parameters, if it exists,
|
715 |
+
* and otherwise return false to signal no authorization code was
|
716 |
+
* discoverable.
|
717 |
+
*
|
718 |
+
* @return mixed The authorization code, or false if the authorization
|
719 |
+
* code could not be determined.
|
720 |
+
*/
|
721 |
+
protected function getCode() {
|
722 |
+
if (!isset($_REQUEST['code']) || !isset($_REQUEST['state'])) {
|
723 |
+
return false;
|
724 |
+
}
|
725 |
+
if ($this->state === $_REQUEST['state']) {
|
726 |
+
// CSRF state has done its job, so clear it
|
727 |
+
$this->state = null;
|
728 |
+
$this->clearPersistentData('state');
|
729 |
+
return $_REQUEST['code'];
|
730 |
+
}
|
731 |
+
self::errorLog('CSRF state token does not match one provided.');
|
732 |
+
|
733 |
+
return false;
|
734 |
+
}
|
735 |
+
|
736 |
+
/**
|
737 |
+
* Retrieves the UID with the understanding that
|
738 |
+
* $this->accessToken has already been set and is
|
739 |
+
* seemingly legitimate. It relies on Facebook's Graph API
|
740 |
+
* to retrieve user information and then extract
|
741 |
+
* the user ID.
|
742 |
+
*
|
743 |
+
* @return integer Returns the UID of the Facebook user, or 0
|
744 |
+
* if the Facebook user could not be determined.
|
745 |
+
*/
|
746 |
+
protected function getUserFromAccessToken() {
|
747 |
+
try {
|
748 |
+
$user_info = $this->api('/me');
|
749 |
+
return $user_info['id'];
|
750 |
+
} catch (FacebookApiException $e) {
|
751 |
+
return 0;
|
752 |
+
}
|
753 |
+
}
|
754 |
+
|
755 |
+
/**
|
756 |
+
* Returns the access token that should be used for logged out
|
757 |
+
* users when no authorization code is available.
|
758 |
+
*
|
759 |
+
* @return string The application access token, useful for gathering
|
760 |
+
* public information about users and applications.
|
761 |
+
*/
|
762 |
+
public function getApplicationAccessToken() {
|
763 |
+
return $this->appId.'|'.$this->appSecret;
|
764 |
+
}
|
765 |
+
|
766 |
+
/**
|
767 |
+
* Lays down a CSRF state token for this process.
|
768 |
+
*
|
769 |
+
* @return void
|
770 |
+
*/
|
771 |
+
protected function establishCSRFTokenState() {
|
772 |
+
if ($this->state === null) {
|
773 |
+
$this->state = md5(uniqid(mt_rand(), true));
|
774 |
+
$this->setPersistentData('state', $this->state);
|
775 |
+
}
|
776 |
+
}
|
777 |
+
|
778 |
+
/**
|
779 |
+
* Retrieves an access token for the given authorization code
|
780 |
+
* (previously generated from www.facebook.com on behalf of
|
781 |
+
* a specific user). The authorization code is sent to graph.facebook.com
|
782 |
+
* and a legitimate access token is generated provided the access token
|
783 |
+
* and the user for which it was generated all match, and the user is
|
784 |
+
* either logged in to Facebook or has granted an offline access permission.
|
785 |
+
*
|
786 |
+
* @param string $code An authorization code.
|
787 |
+
* @param string $redirect_uri Optional redirect URI. Default null
|
788 |
+
*
|
789 |
+
* @return mixed An access token exchanged for the authorization code, or
|
790 |
+
* false if an access token could not be generated.
|
791 |
+
*/
|
792 |
+
protected function getAccessTokenFromCode($code, $redirect_uri = null) {
|
793 |
+
if (empty($code)) {
|
794 |
+
return false;
|
795 |
+
}
|
796 |
+
|
797 |
+
if ($redirect_uri === null) {
|
798 |
+
$redirect_uri = $this->getCurrentUrl();
|
799 |
+
}
|
800 |
+
|
801 |
+
try {
|
802 |
+
// need to circumvent json_decode by calling _oauthRequest
|
803 |
+
// directly, since response isn't JSON format.
|
804 |
+
$access_token_response =
|
805 |
+
$this->_oauthRequest(
|
806 |
+
$this->getUrl('graph', '/oauth/access_token'),
|
807 |
+
$params = array('client_id' => $this->getAppId(),
|
808 |
+
'client_secret' => $this->getAppSecret(),
|
809 |
+
'redirect_uri' => $redirect_uri,
|
810 |
+
'code' => $code));
|
811 |
+
} catch (FacebookApiException $e) {
|
812 |
+
// most likely that user very recently revoked authorization.
|
813 |
+
// In any event, we don't have an access token, so say so.
|
814 |
+
return false;
|
815 |
+
}
|
816 |
+
|
817 |
+
if (empty($access_token_response)) {
|
818 |
+
return false;
|
819 |
+
}
|
820 |
+
|
821 |
+
$response_params = array();
|
822 |
+
parse_str($access_token_response, $response_params);
|
823 |
+
if (!isset($response_params['access_token'])) {
|
824 |
+
return false;
|
825 |
+
}
|
826 |
+
|
827 |
+
return $response_params['access_token'];
|
828 |
+
}
|
829 |
+
|
830 |
+
/**
|
831 |
+
* Invoke the old restserver.php endpoint.
|
832 |
+
*
|
833 |
+
* @param array $params Method call object
|
834 |
+
*
|
835 |
+
* @return mixed The decoded response object
|
836 |
+
* @throws FacebookApiException
|
837 |
+
*/
|
838 |
+
protected function _restserver($params) {
|
839 |
+
// generic application level parameters
|
840 |
+
$params['api_key'] = $this->getAppId();
|
841 |
+
$params['format'] = 'json-strings';
|
842 |
+
|
843 |
+
$result = json_decode($this->_oauthRequest(
|
844 |
+
$this->getApiUrl($params['method']),
|
845 |
+
$params
|
846 |
+
), true);
|
847 |
+
|
848 |
+
// results are returned, errors are thrown
|
849 |
+
if (is_array($result) && isset($result['error_code'])) {
|
850 |
+
$this->throwAPIException($result);
|
851 |
+
// @codeCoverageIgnoreStart
|
852 |
+
}
|
853 |
+
// @codeCoverageIgnoreEnd
|
854 |
+
|
855 |
+
$method = strtolower($params['method']);
|
856 |
+
if ($method === 'auth.expiresession' ||
|
857 |
+
$method === 'auth.revokeauthorization') {
|
858 |
+
$this->destroySession();
|
859 |
+
}
|
860 |
+
|
861 |
+
return $result;
|
862 |
+
}
|
863 |
+
|
864 |
+
/**
|
865 |
+
* Return true if this is video post.
|
866 |
+
*
|
867 |
+
* @param string $path The path
|
868 |
+
* @param string $method The http method (default 'GET')
|
869 |
+
*
|
870 |
+
* @return boolean true if this is video post
|
871 |
+
*/
|
872 |
+
protected function isVideoPost($path, $method = 'GET') {
|
873 |
+
if ($method == 'POST' && preg_match("/^(\/)(.+)(\/)(videos)$/", $path)) {
|
874 |
+
return true;
|
875 |
+
}
|
876 |
+
return false;
|
877 |
+
}
|
878 |
+
|
879 |
+
/**
|
880 |
+
* Invoke the Graph API.
|
881 |
+
*
|
882 |
+
* @param string $path The path (required)
|
883 |
+
* @param string $method The http method (default 'GET')
|
884 |
+
* @param array $params The query/post data
|
885 |
+
*
|
886 |
+
* @return mixed The decoded response object
|
887 |
+
* @throws FacebookApiException
|
888 |
+
*/
|
889 |
+
protected function _graph($path, $method = 'GET', $params = array()) {
|
890 |
+
if (is_array($method) && empty($params)) {
|
891 |
+
$params = $method;
|
892 |
+
$method = 'GET';
|
893 |
+
}
|
894 |
+
$params['method'] = $method; // method override as we always do a POST
|
895 |
+
|
896 |
+
if ($this->isVideoPost($path, $method)) {
|
897 |
+
$domainKey = 'graph_video';
|
898 |
+
} else {
|
899 |
+
$domainKey = 'graph';
|
900 |
+
}
|
901 |
+
|
902 |
+
$result = json_decode($this->_oauthRequest(
|
903 |
+
$this->getUrl($domainKey, $path),
|
904 |
+
$params
|
905 |
+
), true);
|
906 |
+
|
907 |
+
// results are returned, errors are thrown
|
908 |
+
if (is_array($result) && isset($result['error'])) {
|
909 |
+
$this->throwAPIException($result);
|
910 |
+
// @codeCoverageIgnoreStart
|
911 |
+
}
|
912 |
+
// @codeCoverageIgnoreEnd
|
913 |
+
|
914 |
+
return $result;
|
915 |
+
}
|
916 |
+
|
917 |
+
/**
|
918 |
+
* Make a OAuth Request.
|
919 |
+
*
|
920 |
+
* @param string $url The path (required)
|
921 |
+
* @param array $params The query/post data
|
922 |
+
*
|
923 |
+
* @return string The decoded response object
|
924 |
+
* @throws FacebookApiException
|
925 |
+
*/
|
926 |
+
protected function _oauthRequest($url, $params) {
|
927 |
+
if (!isset($params['access_token'])) {
|
928 |
+
$params['access_token'] = $this->getAccessToken();
|
929 |
+
}
|
930 |
+
|
931 |
+
if (isset($params['access_token']) && !isset($params['appsecret_proof'])) {
|
932 |
+
$params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
|
933 |
+
}
|
934 |
+
|
935 |
+
// json_encode all params values that are not strings
|
936 |
+
foreach ($params as $key => $value) {
|
937 |
+
if (!is_string($value) && !($value instanceof CURLFile)) {
|
938 |
+
$params[$key] = json_encode($value);
|
939 |
+
}
|
940 |
+
}
|
941 |
+
|
942 |
+
return $this->makeRequest($url, $params);
|
943 |
+
}
|
944 |
+
|
945 |
+
/**
|
946 |
+
* Generate a proof of App Secret
|
947 |
+
* This is required for all API calls originating from a server
|
948 |
+
* It is a sha256 hash of the access_token made using the app secret
|
949 |
+
*
|
950 |
+
* @param string $access_token The access_token to be hashed (required)
|
951 |
+
*
|
952 |
+
* @return string The sha256 hash of the access_token
|
953 |
+
*/
|
954 |
+
protected function getAppSecretProof($access_token) {
|
955 |
+
return hash_hmac('sha256', $access_token, $this->getAppSecret());
|
956 |
+
}
|
957 |
+
|
958 |
+
/**
|
959 |
+
* Makes an HTTP request. This method can be overridden by subclasses if
|
960 |
+
* developers want to do fancier things or use something other than curl to
|
961 |
+
* make the request.
|
962 |
+
*
|
963 |
+
* @param string $url The URL to make the request to
|
964 |
+
* @param array $params The parameters to use for the POST body
|
965 |
+
* @param CurlHandler $ch Initialized curl handle
|
966 |
+
*
|
967 |
+
* @return string The response text
|
968 |
+
*/
|
969 |
+
protected function makeRequest($url, $params, $ch=null) {
|
970 |
+
if (!$ch) {
|
971 |
+
$ch = curl_init();
|
972 |
+
}
|
973 |
+
|
974 |
+
$opts = self::$CURL_OPTS;
|
975 |
+
if ($this->getFileUploadSupport()) {
|
976 |
+
$opts[CURLOPT_POSTFIELDS] = $params;
|
977 |
+
} else {
|
978 |
+
$opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
|
979 |
+
}
|
980 |
+
$opts[CURLOPT_URL] = $url;
|
981 |
+
|
982 |
+
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
|
983 |
+
// for 2 seconds if the server does not support this header.
|
984 |
+
if (isset($opts[CURLOPT_HTTPHEADER])) {
|
985 |
+
$existing_headers = $opts[CURLOPT_HTTPHEADER];
|
986 |
+
$existing_headers[] = 'Expect:';
|
987 |
+
$opts[CURLOPT_HTTPHEADER] = $existing_headers;
|
988 |
+
} else {
|
989 |
+
$opts[CURLOPT_HTTPHEADER] = array('Expect:');
|
990 |
+
}
|
991 |
+
|
992 |
+
curl_setopt_array($ch, $opts);
|
993 |
+
$result = curl_exec($ch);
|
994 |
+
|
995 |
+
$errno = curl_errno($ch);
|
996 |
+
// CURLE_SSL_CACERT || CURLE_SSL_CACERT_BADFILE
|
997 |
+
if ($errno == 60 || $errno == 77) {
|
998 |
+
self::errorLog('Invalid or no certificate authority found, '.
|
999 |
+
'using bundled information');
|
1000 |
+
curl_setopt($ch, CURLOPT_CAINFO,
|
1001 |
+
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fb_ca_chain_bundle.crt');
|
1002 |
+
$result = curl_exec($ch);
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
// With dual stacked DNS responses, it's possible for a server to
|
1006 |
+
// have IPv6 enabled but not have IPv6 connectivity. If this is
|
1007 |
+
// the case, curl will try IPv4 first and if that fails, then it will
|
1008 |
+
// fall back to IPv6 and the error EHOSTUNREACH is returned by the
|
1009 |
+
// operating system.
|
1010 |
+
if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) {
|
1011 |
+
$matches = array();
|
1012 |
+
$regex = '/Failed to connect to ([^:].*): Network is unreachable/';
|
1013 |
+
if (preg_match($regex, curl_error($ch), $matches)) {
|
1014 |
+
if (strlen(@inet_pton($matches[1])) === 16) {
|
1015 |
+
self::errorLog('Invalid IPv6 configuration on server, '.
|
1016 |
+
'Please disable or get native IPv6 on your server.');
|
1017 |
+
self::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
|
1018 |
+
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
|
1019 |
+
$result = curl_exec($ch);
|
1020 |
+
}
|
1021 |
+
}
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
if ($result === false) {
|
1025 |
+
$e = new FacebookApiException(array(
|
1026 |
+
'error_code' => curl_errno($ch),
|
1027 |
+
'error' => array(
|
1028 |
+
'message' => curl_error($ch),
|
1029 |
+
'type' => 'CurlException',
|
1030 |
+
),
|
1031 |
+
));
|
1032 |
+
curl_close($ch);
|
1033 |
+
throw $e;
|
1034 |
+
}
|
1035 |
+
curl_close($ch);
|
1036 |
+
return $result;
|
1037 |
+
}
|
1038 |
+
|
1039 |
+
/**
|
1040 |
+
* Parses a signed_request and validates the signature.
|
1041 |
+
*
|
1042 |
+
* @param string $signed_request A signed token
|
1043 |
+
*
|
1044 |
+
* @return array The payload inside it or null if the sig is wrong
|
1045 |
+
*/
|
1046 |
+
protected function parseSignedRequest($signed_request) {
|
1047 |
+
|
1048 |
+
if (!$signed_request || strpos($signed_request, '.') === false) {
|
1049 |
+
self::errorLog('Signed request was invalid!');
|
1050 |
+
return null;
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
|
1054 |
+
|
1055 |
+
// decode the data
|
1056 |
+
$sig = self::base64UrlDecode($encoded_sig);
|
1057 |
+
$data = json_decode(self::base64UrlDecode($payload), true);
|
1058 |
+
|
1059 |
+
if (!isset($data['algorithm'])
|
1060 |
+
|| strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM
|
1061 |
+
) {
|
1062 |
+
self::errorLog(
|
1063 |
+
'Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM);
|
1064 |
+
return null;
|
1065 |
+
}
|
1066 |
+
|
1067 |
+
// check sig
|
1068 |
+
$expected_sig = hash_hmac('sha256', $payload,
|
1069 |
+
$this->getAppSecret(), $raw = true);
|
1070 |
+
|
1071 |
+
if (strlen($expected_sig) !== strlen($sig)) {
|
1072 |
+
self::errorLog('Bad Signed JSON signature!');
|
1073 |
+
return null;
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
$result = 0;
|
1077 |
+
for ($i = 0; $i < strlen($expected_sig); $i++) {
|
1078 |
+
$result |= ord($expected_sig[$i]) ^ ord($sig[$i]);
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
if ($result == 0) {
|
1082 |
+
return $data;
|
1083 |
+
} else {
|
1084 |
+
self::errorLog('Bad Signed JSON signature!');
|
1085 |
+
return null;
|
1086 |
+
}
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
/**
|
1090 |
+
* Makes a signed_request blob using the given data.
|
1091 |
+
*
|
1092 |
+
* @param array $data The data array.
|
1093 |
+
*
|
1094 |
+
* @return string The signed request.
|
1095 |
+
*/
|
1096 |
+
protected function makeSignedRequest($data) {
|
1097 |
+
if (!is_array($data)) {
|
1098 |
+
throw new InvalidArgumentException(
|
1099 |
+
'makeSignedRequest expects an array. Got: ' . print_r($data, true));
|
1100 |
+
}
|
1101 |
+
$data['algorithm'] = self::SIGNED_REQUEST_ALGORITHM;
|
1102 |
+
$data['issued_at'] = time();
|
1103 |
+
$json = json_encode($data);
|
1104 |
+
$b64 = self::base64UrlEncode($json);
|
1105 |
+
$raw_sig = hash_hmac('sha256', $b64, $this->getAppSecret(), $raw = true);
|
1106 |
+
$sig = self::base64UrlEncode($raw_sig);
|
1107 |
+
return $sig.'.'.$b64;
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
/**
|
1111 |
+
* Build the URL for api given parameters.
|
1112 |
+
*
|
1113 |
+
* @param string $method The method name.
|
1114 |
+
*
|
1115 |
+
* @return string The URL for the given parameters
|
1116 |
+
*/
|
1117 |
+
protected function getApiUrl($method) {
|
1118 |
+
static $READ_ONLY_CALLS =
|
1119 |
+
array('admin.getallocation' => 1,
|
1120 |
+
'admin.getappproperties' => 1,
|
1121 |
+
'admin.getbannedusers' => 1,
|
1122 |
+
'admin.getlivestreamvialink' => 1,
|
1123 |
+
'admin.getmetrics' => 1,
|
1124 |
+
'admin.getrestrictioninfo' => 1,
|
1125 |
+
'application.getpublicinfo' => 1,
|
1126 |
+
'auth.getapppublickey' => 1,
|
1127 |
+
'auth.getsession' => 1,
|
1128 |
+
'auth.getsignedpublicsessiondata' => 1,
|
1129 |
+
'comments.get' => 1,
|
1130 |
+
'connect.getunconnectedfriendscount' => 1,
|
1131 |
+
'dashboard.getactivity' => 1,
|
1132 |
+
'dashboard.getcount' => 1,
|
1133 |
+
'dashboard.getglobalnews' => 1,
|
1134 |
+
'dashboard.getnews' => 1,
|
1135 |
+
'dashboard.multigetcount' => 1,
|
1136 |
+
'dashboard.multigetnews' => 1,
|
1137 |
+
'data.getcookies' => 1,
|
1138 |
+
'events.get' => 1,
|
1139 |
+
'events.getmembers' => 1,
|
1140 |
+
'fbml.getcustomtags' => 1,
|
1141 |
+
'feed.getappfriendstories' => 1,
|
1142 |
+
'feed.getregisteredtemplatebundlebyid' => 1,
|
1143 |
+
'feed.getregisteredtemplatebundles' => 1,
|
1144 |
+
'fql.multiquery' => 1,
|
1145 |
+
'fql.query' => 1,
|
1146 |
+
'friends.arefriends' => 1,
|
1147 |
+
'friends.get' => 1,
|
1148 |
+
'friends.getappusers' => 1,
|
1149 |
+
'friends.getlists' => 1,
|
1150 |
+
'friends.getmutualfriends' => 1,
|
1151 |
+
'gifts.get' => 1,
|
1152 |
+
'groups.get' => 1,
|
1153 |
+
'groups.getmembers' => 1,
|
1154 |
+
'intl.gettranslations' => 1,
|
1155 |
+
'links.get' => 1,
|
1156 |
+
'notes.get' => 1,
|
1157 |
+
'notifications.get' => 1,
|
1158 |
+
'pages.getinfo' => 1,
|
1159 |
+
'pages.isadmin' => 1,
|
1160 |
+
'pages.isappadded' => 1,
|
1161 |
+
'pages.isfan' => 1,
|
1162 |
+
'permissions.checkavailableapiaccess' => 1,
|
1163 |
+
'permissions.checkgrantedapiaccess' => 1,
|
1164 |
+
'photos.get' => 1,
|
1165 |
+
'photos.getalbums' => 1,
|
1166 |
+
'photos.gettags' => 1,
|
1167 |
+
'profile.getinfo' => 1,
|
1168 |
+
'profile.getinfooptions' => 1,
|
1169 |
+
'stream.get' => 1,
|
1170 |
+
'stream.getcomments' => 1,
|
1171 |
+
'stream.getfilters' => 1,
|
1172 |
+
'users.getinfo' => 1,
|
1173 |
+
'users.getloggedinuser' => 1,
|
1174 |
+
'users.getstandardinfo' => 1,
|
1175 |
+
'users.hasapppermission' => 1,
|
1176 |
+
'users.isappuser' => 1,
|
1177 |
+
'users.isverified' => 1,
|
1178 |
+
'video.getuploadlimits' => 1);
|
1179 |
+
$name = 'api';
|
1180 |
+
if (isset($READ_ONLY_CALLS[strtolower($method)])) {
|
1181 |
+
$name = 'api_read';
|
1182 |
+
} else if (strtolower($method) == 'video.upload') {
|
1183 |
+
$name = 'api_video';
|
1184 |
+
}
|
1185 |
+
return self::getUrl($name, 'restserver.php');
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
/**
|
1189 |
+
* Build the URL for given domain alias, path and parameters.
|
1190 |
+
*
|
1191 |
+
* @param string $name The name of the domain
|
1192 |
+
* @param string $path Optional path (without a leading slash)
|
1193 |
+
* @param array $params Optional query parameters
|
1194 |
+
*
|
1195 |
+
* @return string The URL for the given parameters
|
1196 |
+
*/
|
1197 |
+
protected function getUrl($name, $path='', $params=array()) {
|
1198 |
+
$url = self::$DOMAIN_MAP[$name];
|
1199 |
+
if ($path) {
|
1200 |
+
if ($path[0] === '/') {
|
1201 |
+
$path = substr($path, 1);
|
1202 |
+
}
|
1203 |
+
$url .= $path;
|
1204 |
+
}
|
1205 |
+
if ($params) {
|
1206 |
+
$url .= '?' . http_build_query($params, null, '&');
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
return $url;
|
1210 |
+
}
|
1211 |
+
|
1212 |
+
/**
|
1213 |
+
* Returns the HTTP Host
|
1214 |
+
*
|
1215 |
+
* @return string The HTTP Host
|
1216 |
+
*/
|
1217 |
+
protected function getHttpHost() {
|
1218 |
+
if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
|
1219 |
+
$forwardProxies = explode(',', $_SERVER['HTTP_X_FORWARDED_HOST']);
|
1220 |
+
if (!empty($forwardProxies)) {
|
1221 |
+
return $forwardProxies[0];
|
1222 |
+
}
|
1223 |
+
}
|
1224 |
+
return $_SERVER['HTTP_HOST'];
|
1225 |
+
}
|
1226 |
+
|
1227 |
+
/**
|
1228 |
+
* Returns the HTTP Protocol
|
1229 |
+
*
|
1230 |
+
* @return string The HTTP Protocol
|
1231 |
+
*/
|
1232 |
+
protected function getHttpProtocol() {
|
1233 |
+
if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
|
1234 |
+
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
|
1235 |
+
return 'https';
|
1236 |
+
}
|
1237 |
+
return 'http';
|
1238 |
+
}
|
1239 |
+
/*apache + variants specific way of checking for https*/
|
1240 |
+
if (isset($_SERVER['HTTPS']) &&
|
1241 |
+
($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] == 1)) {
|
1242 |
+
return 'https';
|
1243 |
+
}
|
1244 |
+
/*nginx way of checking for https*/
|
1245 |
+
if (isset($_SERVER['SERVER_PORT']) &&
|
1246 |
+
($_SERVER['SERVER_PORT'] === '443')) {
|
1247 |
+
return 'https';
|
1248 |
+
}
|
1249 |
+
return 'http';
|
1250 |
+
}
|
1251 |
+
|
1252 |
+
/**
|
1253 |
+
* Returns the base domain used for the cookie.
|
1254 |
+
*
|
1255 |
+
* @return string The base domain
|
1256 |
+
*/
|
1257 |
+
protected function getBaseDomain() {
|
1258 |
+
// The base domain is stored in the metadata cookie if not we fallback
|
1259 |
+
// to the current hostname
|
1260 |
+
$metadata = $this->getMetadataCookie();
|
1261 |
+
if (array_key_exists('base_domain', $metadata) &&
|
1262 |
+
!empty($metadata['base_domain'])) {
|
1263 |
+
return trim($metadata['base_domain'], '.');
|
1264 |
+
}
|
1265 |
+
return $this->getHttpHost();
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
/**
|
1269 |
+
* Returns the Current URL, stripping it of known FB parameters that should
|
1270 |
+
* not persist.
|
1271 |
+
*
|
1272 |
+
* @return string The current URL
|
1273 |
+
*/
|
1274 |
+
protected function getCurrentUrl() {
|
1275 |
+
$protocol = $this->getHttpProtocol() . '://';
|
1276 |
+
$host = $this->getHttpHost();
|
1277 |
+
$currentUrl = $protocol.$host.$_SERVER['REQUEST_URI'];
|
1278 |
+
$parts = parse_url($currentUrl);
|
1279 |
+
|
1280 |
+
$query = '';
|
1281 |
+
if (!empty($parts['query'])) {
|
1282 |
+
// drop known fb params
|
1283 |
+
$params = explode('&', $parts['query']);
|
1284 |
+
$retained_params = array();
|
1285 |
+
foreach ($params as $param) {
|
1286 |
+
if ($this->shouldRetainParam($param)) {
|
1287 |
+
$retained_params[] = $param;
|
1288 |
+
}
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
if (!empty($retained_params)) {
|
1292 |
+
$query = '?'.implode($retained_params, '&');
|
1293 |
+
}
|
1294 |
+
}
|
1295 |
+
|
1296 |
+
// use port if non default
|
1297 |
+
$port =
|
1298 |
+
isset($parts['port']) &&
|
1299 |
+
(($protocol === 'http://' && $parts['port'] !== 80) ||
|
1300 |
+
($protocol === 'https://' && $parts['port'] !== 443))
|
1301 |
+
? ':' . $parts['port'] : '';
|
1302 |
+
|
1303 |
+
// rebuild
|
1304 |
+
return $protocol . $parts['host'] . $port . $parts['path'] . $query;
|
1305 |
+
}
|
1306 |
+
|
1307 |
+
/**
|
1308 |
+
* Returns true if and only if the key or key/value pair should
|
1309 |
+
* be retained as part of the query string. This amounts to
|
1310 |
+
* a brute-force search of the very small list of Facebook-specific
|
1311 |
+
* params that should be stripped out.
|
1312 |
+
*
|
1313 |
+
* @param string $param A key or key/value pair within a URL's query (e.g.
|
1314 |
+
* 'foo=a', 'foo=', or 'foo'.
|
1315 |
+
*
|
1316 |
+
* @return boolean
|
1317 |
+
*/
|
1318 |
+
protected function shouldRetainParam($param) {
|
1319 |
+
foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) {
|
1320 |
+
if ($param === $drop_query_param ||
|
1321 |
+
strpos($param, $drop_query_param.'=') === 0) {
|
1322 |
+
return false;
|
1323 |
+
}
|
1324 |
+
}
|
1325 |
+
|
1326 |
+
return true;
|
1327 |
+
}
|
1328 |
+
|
1329 |
+
/**
|
1330 |
+
* Analyzes the supplied result to see if it was thrown
|
1331 |
+
* because the access token is no longer valid. If that is
|
1332 |
+
* the case, then we destroy the session.
|
1333 |
+
*
|
1334 |
+
* @param array $result A record storing the error message returned
|
1335 |
+
* by a failed API call.
|
1336 |
+
*/
|
1337 |
+
protected function throwAPIException($result) {
|
1338 |
+
$e = new FacebookApiException($result);
|
1339 |
+
switch ($e->getType()) {
|
1340 |
+
// OAuth 2.0 Draft 00 style
|
1341 |
+
case 'OAuthException':
|
1342 |
+
// OAuth 2.0 Draft 10 style
|
1343 |
+
case 'invalid_token':
|
1344 |
+
// REST server errors are just Exceptions
|
1345 |
+
case 'Exception':
|
1346 |
+
$message = $e->getMessage();
|
1347 |
+
if ((strpos($message, 'Error validating access token') !== false) ||
|
1348 |
+
(strpos($message, 'Invalid OAuth access token') !== false) ||
|
1349 |
+
(strpos($message, 'An active access token must be used') !== false)
|
1350 |
+
) {
|
1351 |
+
$this->destroySession();
|
1352 |
+
}
|
1353 |
+
break;
|
1354 |
+
}
|
1355 |
+
|
1356 |
+
throw $e;
|
1357 |
+
}
|
1358 |
+
|
1359 |
+
|
1360 |
+
/**
|
1361 |
+
* Prints to the error log if you aren't in command line mode.
|
1362 |
+
*
|
1363 |
+
* @param string $msg Log message
|
1364 |
+
*/
|
1365 |
+
protected static function errorLog($msg) {
|
1366 |
+
// disable error log if we are running in a CLI environment
|
1367 |
+
// @codeCoverageIgnoreStart
|
1368 |
+
if (php_sapi_name() != 'cli') {
|
1369 |
+
error_log($msg);
|
1370 |
+
}
|
1371 |
+
// uncomment this if you want to see the errors on the page
|
1372 |
+
// print 'error_log: '.$msg."\n";
|
1373 |
+
// @codeCoverageIgnoreEnd
|
1374 |
+
}
|
1375 |
+
|
1376 |
+
/**
|
1377 |
+
* Base64 encoding that doesn't need to be urlencode()ed.
|
1378 |
+
* Exactly the same as base64_encode except it uses
|
1379 |
+
* - instead of +
|
1380 |
+
* _ instead of /
|
1381 |
+
* No padded =
|
1382 |
+
*
|
1383 |
+
* @param string $input base64UrlEncoded input
|
1384 |
+
*
|
1385 |
+
* @return string The decoded string
|
1386 |
+
*/
|
1387 |
+
protected static function base64UrlDecode($input) {
|
1388 |
+
return base64_decode(strtr($input, '-_', '+/'));
|
1389 |
+
}
|
1390 |
+
|
1391 |
+
/**
|
1392 |
+
* Base64 encoding that doesn't need to be urlencode()ed.
|
1393 |
+
* Exactly the same as base64_encode except it uses
|
1394 |
+
* - instead of +
|
1395 |
+
* _ instead of /
|
1396 |
+
*
|
1397 |
+
* @param string $input The input to encode
|
1398 |
+
* @return string The base64Url encoded input, as a string.
|
1399 |
+
*/
|
1400 |
+
protected static function base64UrlEncode($input) {
|
1401 |
+
$str = strtr(base64_encode($input), '+/', '-_');
|
1402 |
+
$str = str_replace('=', '', $str);
|
1403 |
+
return $str;
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
/**
|
1407 |
+
* Destroy the current session
|
1408 |
+
*/
|
1409 |
+
public function destroySession() {
|
1410 |
+
$this->accessToken = null;
|
1411 |
+
$this->signedRequest = null;
|
1412 |
+
$this->user = null;
|
1413 |
+
$this->clearAllPersistentData();
|
1414 |
+
|
1415 |
+
// Javascript sets a cookie that will be used in getSignedRequest that we
|
1416 |
+
// need to clear if we can
|
1417 |
+
$cookie_name = $this->getSignedRequestCookieName();
|
1418 |
+
if (array_key_exists($cookie_name, $_COOKIE)) {
|
1419 |
+
unset($_COOKIE[$cookie_name]);
|
1420 |
+
if (!headers_sent()) {
|
1421 |
+
$base_domain = $this->getBaseDomain();
|
1422 |
+
setcookie($cookie_name, '', 1, '/', '.'.$base_domain);
|
1423 |
+
} else {
|
1424 |
+
// @codeCoverageIgnoreStart
|
1425 |
+
self::errorLog(
|
1426 |
+
'There exists a cookie that we wanted to clear that we couldn\'t '.
|
1427 |
+
'clear because headers was already sent. Make sure to do the first '.
|
1428 |
+
'API call before outputing anything.'
|
1429 |
+
);
|
1430 |
+
// @codeCoverageIgnoreEnd
|
1431 |
+
}
|
1432 |
+
}
|
1433 |
+
}
|
1434 |
+
|
1435 |
+
/**
|
1436 |
+
* Parses the metadata cookie that our Javascript API set
|
1437 |
+
*
|
1438 |
+
* @return array an array mapping key to value
|
1439 |
+
*/
|
1440 |
+
protected function getMetadataCookie() {
|
1441 |
+
$cookie_name = $this->getMetadataCookieName();
|
1442 |
+
if (!array_key_exists($cookie_name, $_COOKIE)) {
|
1443 |
+
return array();
|
1444 |
+
}
|
1445 |
+
|
1446 |
+
// The cookie value can be wrapped in "-characters so remove them
|
1447 |
+
$cookie_value = trim($_COOKIE[$cookie_name], '"');
|
1448 |
+
|
1449 |
+
if (empty($cookie_value)) {
|
1450 |
+
return array();
|
1451 |
+
}
|
1452 |
+
|
1453 |
+
$parts = explode('&', $cookie_value);
|
1454 |
+
$metadata = array();
|
1455 |
+
foreach ($parts as $part) {
|
1456 |
+
$pair = explode('=', $part, 2);
|
1457 |
+
if (!empty($pair[0])) {
|
1458 |
+
$metadata[urldecode($pair[0])] =
|
1459 |
+
(count($pair) > 1) ? urldecode($pair[1]) : '';
|
1460 |
+
}
|
1461 |
+
}
|
1462 |
+
|
1463 |
+
return $metadata;
|
1464 |
+
}
|
1465 |
+
|
1466 |
+
/**
|
1467 |
+
* Finds whether the given domain is allowed or not
|
1468 |
+
*
|
1469 |
+
* @param string $big The value to be checked against $small
|
1470 |
+
* @param string $small The input string
|
1471 |
+
*
|
1472 |
+
* @return boolean Returns TRUE if $big matches $small
|
1473 |
+
*/
|
1474 |
+
protected static function isAllowedDomain($big, $small) {
|
1475 |
+
if ($big === $small) {
|
1476 |
+
return true;
|
1477 |
+
}
|
1478 |
+
return self::endsWith($big, '.'.$small);
|
1479 |
+
}
|
1480 |
+
|
1481 |
+
/**
|
1482 |
+
* Checks if $big string ends with $small string
|
1483 |
+
*
|
1484 |
+
* @param string $big The value to be checked against $small
|
1485 |
+
* @param string $small The input string
|
1486 |
+
*
|
1487 |
+
* @return boolean TRUE if $big ends with $small
|
1488 |
+
*/
|
1489 |
+
protected static function endsWith($big, $small) {
|
1490 |
+
$len = strlen($small);
|
1491 |
+
if ($len === 0) {
|
1492 |
+
return true;
|
1493 |
+
}
|
1494 |
+
return substr($big, -$len) === $small;
|
1495 |
+
}
|
1496 |
+
|
1497 |
+
/**
|
1498 |
+
* Each of the following four methods should be overridden in
|
1499 |
+
* a concrete subclass, as they are in the provided Facebook class.
|
1500 |
+
* The Facebook class uses PHP sessions to provide a primitive
|
1501 |
+
* persistent store, but another subclass--one that you implement--
|
1502 |
+
* might use a database, memcache, or an in-memory cache.
|
1503 |
+
*
|
1504 |
+
* @see Facebook
|
1505 |
+
*/
|
1506 |
+
|
1507 |
+
/**
|
1508 |
+
* Stores the given ($key, $value) pair, so that future calls to
|
1509 |
+
* getPersistentData($key) return $value. This call may be in another request.
|
1510 |
+
*
|
1511 |
+
* @param string $key
|
1512 |
+
* @param array $value
|
1513 |
+
*
|
1514 |
+
* @return void
|
1515 |
+
*/
|
1516 |
+
abstract protected function setPersistentData($key, $value);
|
1517 |
+
|
1518 |
+
/**
|
1519 |
+
* Get the data for $key, persisted by BaseFacebook::setPersistentData()
|
1520 |
+
*
|
1521 |
+
* @param string $key The key of the data to retrieve
|
1522 |
+
* @param boolean $default The default value to return if $key is not found
|
1523 |
+
*
|
1524 |
+
* @return mixed
|
1525 |
+
*/
|
1526 |
+
abstract protected function getPersistentData($key, $default = false);
|
1527 |
+
|
1528 |
+
/**
|
1529 |
+
* Clear the data with $key from the persistent storage
|
1530 |
+
*
|
1531 |
+
* @param string $key
|
1532 |
+
*
|
1533 |
+
* @return void
|
1534 |
+
*/
|
1535 |
+
abstract protected function clearPersistentData($key);
|
1536 |
+
|
1537 |
+
/**
|
1538 |
+
* Clear all data from the persistent storage
|
1539 |
+
*
|
1540 |
+
* @return void
|
1541 |
+
*/
|
1542 |
+
abstract protected function clearAllPersistentData();
|
1543 |
+
}
|
facebook/src/facebook.php
ADDED
@@ -0,0 +1,227 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
require_once "base_facebook.php";
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Extends the BaseFacebook class with the intent of using
|
22 |
+
* PHP sessions to store user ids and access tokens.
|
23 |
+
*/
|
24 |
+
class Facebook extends BaseFacebook
|
25 |
+
{
|
26 |
+
/**
|
27 |
+
* Cookie prefix
|
28 |
+
*/
|
29 |
+
const FBSS_COOKIE_NAME = 'fbss';
|
30 |
+
|
31 |
+
/**
|
32 |
+
* We can set this to a high number because the main session
|
33 |
+
* expiration will trump this.
|
34 |
+
*/
|
35 |
+
const FBSS_COOKIE_EXPIRE = 31556926; // 1 year
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Stores the shared session ID if one is set.
|
39 |
+
*
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
protected $sharedSessionID;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Identical to the parent constructor, except that
|
46 |
+
* we start a PHP session to store the user ID and
|
47 |
+
* access token if during the course of execution
|
48 |
+
* we discover them.
|
49 |
+
*
|
50 |
+
* @param array $config the application configuration. Additionally
|
51 |
+
* accepts "sharedSession" as a boolean to turn on a secondary
|
52 |
+
* cookie for environments with a shared session (that is, your app
|
53 |
+
* shares the domain with other apps).
|
54 |
+
*
|
55 |
+
* @see BaseFacebook::__construct
|
56 |
+
*/
|
57 |
+
public function __construct($config) {
|
58 |
+
if (!session_id()) {
|
59 |
+
session_start();
|
60 |
+
}
|
61 |
+
parent::__construct($config);
|
62 |
+
if (!empty($config['sharedSession'])) {
|
63 |
+
$this->initSharedSession();
|
64 |
+
|
65 |
+
// re-load the persisted state, since parent
|
66 |
+
// attempted to read out of non-shared cookie
|
67 |
+
$state = $this->getPersistentData('state');
|
68 |
+
if (!empty($state)) {
|
69 |
+
$this->state = $state;
|
70 |
+
} else {
|
71 |
+
$this->state = null;
|
72 |
+
}
|
73 |
+
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Supported keys for persistent data
|
79 |
+
*
|
80 |
+
* @var array
|
81 |
+
*/
|
82 |
+
protected static $kSupportedKeys =
|
83 |
+
array('state', 'code', 'access_token', 'user_id');
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Initiates Shared Session
|
87 |
+
*/
|
88 |
+
protected function initSharedSession() {
|
89 |
+
$cookie_name = $this->getSharedSessionCookieName();
|
90 |
+
if (isset($_COOKIE[$cookie_name])) {
|
91 |
+
$data = $this->parseSignedRequest($_COOKIE[$cookie_name]);
|
92 |
+
if ($data && !empty($data['domain']) &&
|
93 |
+
self::isAllowedDomain($this->getHttpHost(), $data['domain'])) {
|
94 |
+
// good case
|
95 |
+
$this->sharedSessionID = $data['id'];
|
96 |
+
return;
|
97 |
+
}
|
98 |
+
// ignoring potentially unreachable data
|
99 |
+
}
|
100 |
+
// evil/corrupt/missing case
|
101 |
+
$base_domain = $this->getBaseDomain();
|
102 |
+
$this->sharedSessionID = md5(uniqid(mt_rand(), true));
|
103 |
+
$cookie_value = $this->makeSignedRequest(
|
104 |
+
array(
|
105 |
+
'domain' => $base_domain,
|
106 |
+
'id' => $this->sharedSessionID,
|
107 |
+
)
|
108 |
+
);
|
109 |
+
$_COOKIE[$cookie_name] = $cookie_value;
|
110 |
+
if (!headers_sent()) {
|
111 |
+
$expire = time() + self::FBSS_COOKIE_EXPIRE;
|
112 |
+
setcookie($cookie_name, $cookie_value, $expire, '/', '.'.$base_domain);
|
113 |
+
} else {
|
114 |
+
// @codeCoverageIgnoreStart
|
115 |
+
self::errorLog(
|
116 |
+
'Shared session ID cookie could not be set! You must ensure you '.
|
117 |
+
'create the Facebook instance before headers have been sent. This '.
|
118 |
+
'will cause authentication issues after the first request.'
|
119 |
+
);
|
120 |
+
// @codeCoverageIgnoreEnd
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Provides the implementations of the inherited abstract
|
126 |
+
* methods. The implementation uses PHP sessions to maintain
|
127 |
+
* a store for authorization codes, user ids, CSRF states, and
|
128 |
+
* access tokens.
|
129 |
+
*/
|
130 |
+
|
131 |
+
/**
|
132 |
+
* {@inheritdoc}
|
133 |
+
*
|
134 |
+
* @see BaseFacebook::setPersistentData()
|
135 |
+
*/
|
136 |
+
protected function setPersistentData($key, $value) {
|
137 |
+
if (!in_array($key, self::$kSupportedKeys)) {
|
138 |
+
self::errorLog('Unsupported key passed to setPersistentData.');
|
139 |
+
return;
|
140 |
+
}
|
141 |
+
|
142 |
+
$session_var_name = $this->constructSessionVariableName($key);
|
143 |
+
$_SESSION[$session_var_name] = $value;
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* {@inheritdoc}
|
148 |
+
*
|
149 |
+
* @see BaseFacebook::getPersistentData()
|
150 |
+
*/
|
151 |
+
protected function getPersistentData($key, $default = false) {
|
152 |
+
if (!in_array($key, self::$kSupportedKeys)) {
|
153 |
+
self::errorLog('Unsupported key passed to getPersistentData.');
|
154 |
+
return $default;
|
155 |
+
}
|
156 |
+
|
157 |
+
$session_var_name = $this->constructSessionVariableName($key);
|
158 |
+
return isset($_SESSION[$session_var_name]) ?
|
159 |
+
$_SESSION[$session_var_name] : $default;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* {@inheritdoc}
|
164 |
+
*
|
165 |
+
* @see BaseFacebook::clearPersistentData()
|
166 |
+
*/
|
167 |
+
protected function clearPersistentData($key) {
|
168 |
+
if (!in_array($key, self::$kSupportedKeys)) {
|
169 |
+
self::errorLog('Unsupported key passed to clearPersistentData.');
|
170 |
+
return;
|
171 |
+
}
|
172 |
+
|
173 |
+
$session_var_name = $this->constructSessionVariableName($key);
|
174 |
+
if (isset($_SESSION[$session_var_name])) {
|
175 |
+
unset($_SESSION[$session_var_name]);
|
176 |
+
}
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* {@inheritdoc}
|
181 |
+
*
|
182 |
+
* @see BaseFacebook::clearAllPersistentData()
|
183 |
+
*/
|
184 |
+
protected function clearAllPersistentData() {
|
185 |
+
foreach (self::$kSupportedKeys as $key) {
|
186 |
+
$this->clearPersistentData($key);
|
187 |
+
}
|
188 |
+
if ($this->sharedSessionID) {
|
189 |
+
$this->deleteSharedSessionCookie();
|
190 |
+
}
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Deletes Shared session cookie
|
195 |
+
*/
|
196 |
+
protected function deleteSharedSessionCookie() {
|
197 |
+
$cookie_name = $this->getSharedSessionCookieName();
|
198 |
+
unset($_COOKIE[$cookie_name]);
|
199 |
+
$base_domain = $this->getBaseDomain();
|
200 |
+
setcookie($cookie_name, '', 1, '/', '.'.$base_domain);
|
201 |
+
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* Returns the Shared session cookie name
|
205 |
+
*
|
206 |
+
* @return string The Shared session cookie name
|
207 |
+
*/
|
208 |
+
protected function getSharedSessionCookieName() {
|
209 |
+
return self::FBSS_COOKIE_NAME . '_' . $this->getAppId();
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
* Constructs and returns the name of the session key.
|
214 |
+
*
|
215 |
+
* @see setPersistentData()
|
216 |
+
* @param string $key The key for which the session variable name to construct.
|
217 |
+
*
|
218 |
+
* @return string The name of the session key.
|
219 |
+
*/
|
220 |
+
protected function constructSessionVariableName($key) {
|
221 |
+
$parts = array('fb', $this->getAppId(), $key);
|
222 |
+
if ($this->sharedSessionID) {
|
223 |
+
array_unshift($parts, $this->sharedSessionID);
|
224 |
+
}
|
225 |
+
return implode('_', $parts);
|
226 |
+
}
|
227 |
+
}
|
facebook/src/fb_ca_chain_bundle.crt
ADDED
@@ -0,0 +1,3920 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## ca-bundle.crt -- Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Certificate data from Mozilla as of: Thu Oct 18 19:05:59 2012
|
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 |
+
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.86 $ $Date: 2012/10/18 16:26:52 $
|
18 |
+
|
19 |
+
GTE CyberTrust Global Root
|
20 |
+
==========================
|
21 |
+
-----BEGIN CERTIFICATE-----
|
22 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
23 |
+
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
24 |
+
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
25 |
+
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
26 |
+
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
27 |
+
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
28 |
+
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
29 |
+
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
30 |
+
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
31 |
+
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
32 |
+
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
33 |
+
-----END CERTIFICATE-----
|
34 |
+
|
35 |
+
Thawte Server CA
|
36 |
+
================
|
37 |
+
-----BEGIN CERTIFICATE-----
|
38 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
39 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
40 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
41 |
+
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
42 |
+
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
43 |
+
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
44 |
+
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
45 |
+
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
46 |
+
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
47 |
+
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
48 |
+
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
49 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
50 |
+
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
51 |
+
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
52 |
+
-----END CERTIFICATE-----
|
53 |
+
|
54 |
+
Thawte Premium Server CA
|
55 |
+
========================
|
56 |
+
-----BEGIN CERTIFICATE-----
|
57 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
58 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
59 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
60 |
+
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
61 |
+
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
62 |
+
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
63 |
+
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
64 |
+
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
65 |
+
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
66 |
+
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
67 |
+
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
68 |
+
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
69 |
+
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
70 |
+
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
71 |
+
UCemDaYj+bvLpgcUQg==
|
72 |
+
-----END CERTIFICATE-----
|
73 |
+
|
74 |
+
Equifax Secure CA
|
75 |
+
=================
|
76 |
+
-----BEGIN CERTIFICATE-----
|
77 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
78 |
+
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
79 |
+
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
80 |
+
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
81 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
82 |
+
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
83 |
+
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
84 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
85 |
+
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
86 |
+
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
87 |
+
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
88 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
89 |
+
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
90 |
+
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
91 |
+
70+sB3c4
|
92 |
+
-----END CERTIFICATE-----
|
93 |
+
|
94 |
+
Digital Signature Trust Co. Global CA 1
|
95 |
+
=======================================
|
96 |
+
-----BEGIN CERTIFICATE-----
|
97 |
+
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
98 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
99 |
+
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
100 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
101 |
+
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
102 |
+
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
103 |
+
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
104 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
105 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
106 |
+
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
107 |
+
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
108 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
109 |
+
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
110 |
+
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
111 |
+
RbyhkwS7hp86W0N6w4pl
|
112 |
+
-----END CERTIFICATE-----
|
113 |
+
|
114 |
+
Digital Signature Trust Co. Global CA 3
|
115 |
+
=======================================
|
116 |
+
-----BEGIN CERTIFICATE-----
|
117 |
+
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
118 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
119 |
+
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
120 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
121 |
+
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
122 |
+
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
123 |
+
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
124 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
125 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
126 |
+
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
127 |
+
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
128 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
129 |
+
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
130 |
+
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
131 |
+
mPnHfxsb1gYgAlihw6ID
|
132 |
+
-----END CERTIFICATE-----
|
133 |
+
|
134 |
+
Verisign Class 3 Public Primary Certification Authority
|
135 |
+
=======================================================
|
136 |
+
-----BEGIN CERTIFICATE-----
|
137 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
138 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
139 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
140 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
141 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
142 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
143 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
144 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
145 |
+
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
146 |
+
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
147 |
+
Tqj/ZA1k
|
148 |
+
-----END CERTIFICATE-----
|
149 |
+
|
150 |
+
Verisign Class 1 Public Primary Certification Authority - G2
|
151 |
+
============================================================
|
152 |
+
-----BEGIN CERTIFICATE-----
|
153 |
+
MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
154 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
155 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
156 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
157 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
158 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
159 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
160 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
161 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
|
162 |
+
k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
|
163 |
+
WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
|
164 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
|
165 |
+
XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
|
166 |
+
lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
|
167 |
+
-----END CERTIFICATE-----
|
168 |
+
|
169 |
+
Verisign Class 2 Public Primary Certification Authority - G2
|
170 |
+
============================================================
|
171 |
+
-----BEGIN CERTIFICATE-----
|
172 |
+
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
|
173 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
174 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
175 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
176 |
+
c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
|
177 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
178 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
179 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
180 |
+
c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
|
181 |
+
nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
|
182 |
+
wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
|
183 |
+
ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
|
184 |
+
1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
|
185 |
+
LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
|
186 |
+
-----END CERTIFICATE-----
|
187 |
+
|
188 |
+
Verisign Class 3 Public Primary Certification Authority - G2
|
189 |
+
============================================================
|
190 |
+
-----BEGIN CERTIFICATE-----
|
191 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
192 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
193 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
194 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
195 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
196 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
197 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
198 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
199 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
200 |
+
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
201 |
+
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
202 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
203 |
+
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
204 |
+
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
205 |
+
-----END CERTIFICATE-----
|
206 |
+
|
207 |
+
GlobalSign Root CA
|
208 |
+
==================
|
209 |
+
-----BEGIN CERTIFICATE-----
|
210 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
211 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
212 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
213 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
214 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
215 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
216 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
217 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
218 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
219 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
220 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
221 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
222 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
223 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
224 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
225 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
226 |
+
-----END CERTIFICATE-----
|
227 |
+
|
228 |
+
GlobalSign Root CA - R2
|
229 |
+
=======================
|
230 |
+
-----BEGIN CERTIFICATE-----
|
231 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
232 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
233 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
234 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
235 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
236 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
237 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
238 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
239 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
240 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
241 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
242 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
243 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
244 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
245 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
246 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
247 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
248 |
+
-----END CERTIFICATE-----
|
249 |
+
|
250 |
+
ValiCert Class 1 VA
|
251 |
+
===================
|
252 |
+
-----BEGIN CERTIFICATE-----
|
253 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
254 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
255 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
256 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
257 |
+
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
258 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
259 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
260 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
261 |
+
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
262 |
+
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
263 |
+
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
264 |
+
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
265 |
+
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
266 |
+
Orf1LXLI
|
267 |
+
-----END CERTIFICATE-----
|
268 |
+
|
269 |
+
ValiCert Class 2 VA
|
270 |
+
===================
|
271 |
+
-----BEGIN CERTIFICATE-----
|
272 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
273 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
274 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
275 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
276 |
+
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
277 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
278 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
279 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
280 |
+
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
281 |
+
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
282 |
+
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
283 |
+
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
284 |
+
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
285 |
+
W9ViH0Pd
|
286 |
+
-----END CERTIFICATE-----
|
287 |
+
|
288 |
+
RSA Root Certificate 1
|
289 |
+
======================
|
290 |
+
-----BEGIN CERTIFICATE-----
|
291 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
292 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
293 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
294 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
295 |
+
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
296 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
297 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
298 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
299 |
+
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
300 |
+
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
301 |
+
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
302 |
+
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
303 |
+
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
304 |
+
on+jjBXu
|
305 |
+
-----END CERTIFICATE-----
|
306 |
+
|
307 |
+
Verisign Class 1 Public Primary Certification Authority - G3
|
308 |
+
============================================================
|
309 |
+
-----BEGIN CERTIFICATE-----
|
310 |
+
MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
311 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
312 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
313 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
314 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
315 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
316 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
317 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
|
318 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
319 |
+
ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
|
320 |
+
bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
|
321 |
+
rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
|
322 |
+
Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
|
323 |
+
FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
324 |
+
q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
|
325 |
+
y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
|
326 |
+
ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
|
327 |
+
a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
|
328 |
+
D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
|
329 |
+
-----END CERTIFICATE-----
|
330 |
+
|
331 |
+
Verisign Class 2 Public Primary Certification Authority - G3
|
332 |
+
============================================================
|
333 |
+
-----BEGIN CERTIFICATE-----
|
334 |
+
MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
|
335 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
|
336 |
+
azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
|
337 |
+
b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
|
338 |
+
aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
|
339 |
+
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
340 |
+
c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
341 |
+
aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
|
342 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
343 |
+
AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
|
344 |
+
tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
|
345 |
+
C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
|
346 |
+
0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
|
347 |
+
Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
|
348 |
+
JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
|
349 |
+
0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
|
350 |
+
sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
|
351 |
+
JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
|
352 |
+
GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
|
353 |
+
-----END CERTIFICATE-----
|
354 |
+
|
355 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
356 |
+
============================================================
|
357 |
+
-----BEGIN CERTIFICATE-----
|
358 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
359 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
360 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
361 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
362 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
363 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
364 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
365 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
366 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
367 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
368 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
369 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
370 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
371 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
372 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
373 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
374 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
375 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
376 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
377 |
+
-----END CERTIFICATE-----
|
378 |
+
|
379 |
+
Verisign Class 4 Public Primary Certification Authority - G3
|
380 |
+
============================================================
|
381 |
+
-----BEGIN CERTIFICATE-----
|
382 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
383 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
384 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
385 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
386 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
387 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
388 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
389 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
390 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
391 |
+
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
392 |
+
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
393 |
+
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
394 |
+
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
395 |
+
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
396 |
+
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
397 |
+
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
398 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
399 |
+
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
400 |
+
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
401 |
+
-----END CERTIFICATE-----
|
402 |
+
|
403 |
+
Entrust.net Secure Server CA
|
404 |
+
============================
|
405 |
+
-----BEGIN CERTIFICATE-----
|
406 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
407 |
+
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
408 |
+
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
409 |
+
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
410 |
+
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
411 |
+
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
412 |
+
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
413 |
+
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
414 |
+
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
415 |
+
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
416 |
+
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
417 |
+
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
418 |
+
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
419 |
+
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
420 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
421 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
422 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
423 |
+
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
424 |
+
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
425 |
+
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
426 |
+
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
427 |
+
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
428 |
+
-----END CERTIFICATE-----
|
429 |
+
|
430 |
+
Entrust.net Premium 2048 Secure Server CA
|
431 |
+
=========================================
|
432 |
+
-----BEGIN CERTIFICATE-----
|
433 |
+
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
434 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
435 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
436 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
437 |
+
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
438 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
439 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
440 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
441 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
442 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
443 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
444 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
445 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
446 |
+
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
447 |
+
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
448 |
+
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
449 |
+
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
450 |
+
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
451 |
+
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
452 |
+
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
453 |
+
-----END CERTIFICATE-----
|
454 |
+
|
455 |
+
Baltimore CyberTrust Root
|
456 |
+
=========================
|
457 |
+
-----BEGIN CERTIFICATE-----
|
458 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
459 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
460 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
461 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
462 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
463 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
464 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
465 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
466 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
467 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
468 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
469 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
470 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
471 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
472 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
473 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
474 |
+
-----END CERTIFICATE-----
|
475 |
+
|
476 |
+
Equifax Secure Global eBusiness CA
|
477 |
+
==================================
|
478 |
+
-----BEGIN CERTIFICATE-----
|
479 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
480 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
481 |
+
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
482 |
+
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
483 |
+
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
484 |
+
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
485 |
+
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
486 |
+
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
487 |
+
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
488 |
+
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
489 |
+
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
490 |
+
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
491 |
+
-----END CERTIFICATE-----
|
492 |
+
|
493 |
+
Equifax Secure eBusiness CA 1
|
494 |
+
=============================
|
495 |
+
-----BEGIN CERTIFICATE-----
|
496 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
497 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
498 |
+
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
499 |
+
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
500 |
+
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
501 |
+
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
502 |
+
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
503 |
+
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
504 |
+
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
505 |
+
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
506 |
+
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
507 |
+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
508 |
+
-----END CERTIFICATE-----
|
509 |
+
|
510 |
+
Equifax Secure eBusiness CA 2
|
511 |
+
=============================
|
512 |
+
-----BEGIN CERTIFICATE-----
|
513 |
+
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
514 |
+
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
515 |
+
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
516 |
+
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
517 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
518 |
+
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
519 |
+
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
520 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
521 |
+
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
522 |
+
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
523 |
+
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
524 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
525 |
+
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
526 |
+
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
527 |
+
V+GRMOrN
|
528 |
+
-----END CERTIFICATE-----
|
529 |
+
|
530 |
+
AddTrust Low-Value Services Root
|
531 |
+
================================
|
532 |
+
-----BEGIN CERTIFICATE-----
|
533 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
534 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
535 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
536 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
537 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
538 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
539 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
540 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
541 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
542 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
543 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
544 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
545 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
546 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
547 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
548 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
549 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
550 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
551 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
552 |
+
-----END CERTIFICATE-----
|
553 |
+
|
554 |
+
AddTrust External Root
|
555 |
+
======================
|
556 |
+
-----BEGIN CERTIFICATE-----
|
557 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
558 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
559 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
560 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
561 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
562 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
563 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
564 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
565 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
566 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
567 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
568 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
569 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
570 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
571 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
572 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
573 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
574 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
575 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
576 |
+
-----END CERTIFICATE-----
|
577 |
+
|
578 |
+
AddTrust Public Services Root
|
579 |
+
=============================
|
580 |
+
-----BEGIN CERTIFICATE-----
|
581 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
582 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
583 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
584 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
585 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
586 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
587 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
588 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
589 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
590 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
591 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
592 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
593 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
594 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
595 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
596 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
597 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
598 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
599 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
600 |
+
-----END CERTIFICATE-----
|
601 |
+
|
602 |
+
AddTrust Qualified Certificates Root
|
603 |
+
====================================
|
604 |
+
-----BEGIN CERTIFICATE-----
|
605 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
606 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
607 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
608 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
609 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
610 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
611 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
612 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
613 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
614 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
615 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
616 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
617 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
618 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
619 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
620 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
621 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
622 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
623 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
624 |
+
-----END CERTIFICATE-----
|
625 |
+
|
626 |
+
Entrust Root Certification Authority
|
627 |
+
====================================
|
628 |
+
-----BEGIN CERTIFICATE-----
|
629 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
630 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
631 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
632 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
633 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
634 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
635 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
636 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
637 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
638 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
639 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
640 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
641 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
642 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
643 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
644 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
645 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
646 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
647 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
648 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
649 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
650 |
+
-----END CERTIFICATE-----
|
651 |
+
|
652 |
+
RSA Security 2048 v3
|
653 |
+
====================
|
654 |
+
-----BEGIN CERTIFICATE-----
|
655 |
+
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
656 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
657 |
+
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
658 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
659 |
+
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
660 |
+
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
661 |
+
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
662 |
+
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
663 |
+
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
664 |
+
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
665 |
+
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
666 |
+
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
667 |
+
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
668 |
+
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
669 |
+
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
670 |
+
pKnXwiJPZ9d37CAFYd4=
|
671 |
+
-----END CERTIFICATE-----
|
672 |
+
|
673 |
+
GeoTrust Global CA
|
674 |
+
==================
|
675 |
+
-----BEGIN CERTIFICATE-----
|
676 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
677 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
678 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
679 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
680 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
681 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
682 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
683 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
684 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
685 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
686 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
687 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
688 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
689 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
690 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
691 |
+
Mw==
|
692 |
+
-----END CERTIFICATE-----
|
693 |
+
|
694 |
+
GeoTrust Global CA 2
|
695 |
+
====================
|
696 |
+
-----BEGIN CERTIFICATE-----
|
697 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
698 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
699 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
700 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
701 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
702 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
703 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
704 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
705 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
706 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
707 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
708 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
709 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
710 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
711 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
712 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
713 |
+
-----END CERTIFICATE-----
|
714 |
+
|
715 |
+
GeoTrust Universal CA
|
716 |
+
=====================
|
717 |
+
-----BEGIN CERTIFICATE-----
|
718 |
+
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
|
742 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
743 |
+
-----END CERTIFICATE-----
|
744 |
+
|
745 |
+
GeoTrust Universal CA 2
|
746 |
+
=======================
|
747 |
+
-----BEGIN CERTIFICATE-----
|
748 |
+
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
|
772 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
773 |
+
-----END CERTIFICATE-----
|
774 |
+
|
775 |
+
UTN-USER First-Network Applications
|
776 |
+
===================================
|
777 |
+
-----BEGIN CERTIFICATE-----
|
778 |
+
MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
|
779 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
780 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
|
781 |
+
BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
|
782 |
+
WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
|
783 |
+
YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
784 |
+
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
|
785 |
+
cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
|
786 |
+
mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
|
787 |
+
DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
|
788 |
+
Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
|
789 |
+
P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
|
790 |
+
j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
|
791 |
+
HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
|
792 |
+
cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
|
793 |
+
CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
|
794 |
+
IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
|
795 |
+
RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
|
796 |
+
xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
|
797 |
+
DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
|
798 |
+
-----END CERTIFICATE-----
|
799 |
+
|
800 |
+
America Online Root Certification Authority 1
|
801 |
+
=============================================
|
802 |
+
-----BEGIN CERTIFICATE-----
|
803 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
804 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
805 |
+
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
806 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
807 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
808 |
+
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
809 |
+
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
810 |
+
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
811 |
+
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
812 |
+
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
813 |
+
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
814 |
+
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
815 |
+
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
816 |
+
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
817 |
+
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
818 |
+
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
819 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
820 |
+
-----END CERTIFICATE-----
|
821 |
+
|
822 |
+
America Online Root Certification Authority 2
|
823 |
+
=============================================
|
824 |
+
-----BEGIN CERTIFICATE-----
|
825 |
+
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
|
850 |
+
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
851 |
+
-----END CERTIFICATE-----
|
852 |
+
|
853 |
+
Visa eCommerce Root
|
854 |
+
===================
|
855 |
+
-----BEGIN CERTIFICATE-----
|
856 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
857 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
858 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
859 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
860 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
861 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
862 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
863 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
864 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
865 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
866 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
867 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
868 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
869 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
870 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
871 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
872 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
873 |
+
-----END CERTIFICATE-----
|
874 |
+
|
875 |
+
Certum Root CA
|
876 |
+
==============
|
877 |
+
-----BEGIN CERTIFICATE-----
|
878 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
879 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
880 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
881 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
882 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
883 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
884 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
885 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
886 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
887 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
888 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
889 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
890 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
891 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
892 |
+
-----END CERTIFICATE-----
|
893 |
+
|
894 |
+
Comodo AAA Services root
|
895 |
+
========================
|
896 |
+
-----BEGIN CERTIFICATE-----
|
897 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
898 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
899 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
900 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
901 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
902 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
903 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
904 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
905 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
906 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
907 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
908 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
909 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
910 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
911 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
912 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
913 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
914 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
915 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
916 |
+
-----END CERTIFICATE-----
|
917 |
+
|
918 |
+
Comodo Secure Services root
|
919 |
+
===========================
|
920 |
+
-----BEGIN CERTIFICATE-----
|
921 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
922 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
923 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
924 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
925 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
926 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
927 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
928 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
929 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
930 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
931 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
932 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
933 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
934 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
935 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
936 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
937 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
938 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
939 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
940 |
+
RR3B7Hzs/Sk=
|
941 |
+
-----END CERTIFICATE-----
|
942 |
+
|
943 |
+
Comodo Trusted Services root
|
944 |
+
============================
|
945 |
+
-----BEGIN CERTIFICATE-----
|
946 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
947 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
948 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
949 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
950 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
951 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
952 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
953 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
954 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
955 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
956 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
957 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
958 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
959 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
960 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
961 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
962 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
963 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
964 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
965 |
+
9y5Xt5hwXsjEeLBi
|
966 |
+
-----END CERTIFICATE-----
|
967 |
+
|
968 |
+
QuoVadis Root CA
|
969 |
+
================
|
970 |
+
-----BEGIN CERTIFICATE-----
|
971 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
972 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
973 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
974 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
975 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
976 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
977 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
978 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
979 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
980 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
981 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
982 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
983 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
984 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
985 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
986 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
987 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
988 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
989 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
990 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
991 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
992 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
993 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
994 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
995 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
996 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
997 |
+
5nrQNiOKSnQ2+Q==
|
998 |
+
-----END CERTIFICATE-----
|
999 |
+
|
1000 |
+
QuoVadis Root CA 2
|
1001 |
+
==================
|
1002 |
+
-----BEGIN CERTIFICATE-----
|
1003 |
+
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
|
1029 |
+
-----END CERTIFICATE-----
|
1030 |
+
|
1031 |
+
QuoVadis Root CA 3
|
1032 |
+
==================
|
1033 |
+
-----BEGIN CERTIFICATE-----
|
1034 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1035 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1036 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1037 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1038 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1039 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1040 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1041 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1042 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1043 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1044 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1045 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1046 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1047 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1048 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1049 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1050 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1051 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1052 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1053 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1054 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1055 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1056 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1057 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1058 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1059 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1060 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1061 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1062 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1063 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1064 |
+
-----END CERTIFICATE-----
|
1065 |
+
|
1066 |
+
Security Communication Root CA
|
1067 |
+
==============================
|
1068 |
+
-----BEGIN CERTIFICATE-----
|
1069 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1070 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1071 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1072 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1073 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1074 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1075 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1076 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1077 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1078 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1079 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1080 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1081 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1082 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1083 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1084 |
+
FL39vmwLAw==
|
1085 |
+
-----END CERTIFICATE-----
|
1086 |
+
|
1087 |
+
Sonera Class 1 Root CA
|
1088 |
+
======================
|
1089 |
+
-----BEGIN CERTIFICATE-----
|
1090 |
+
MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1091 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
|
1092 |
+
NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1093 |
+
IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
|
1094 |
+
7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
|
1095 |
+
EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
|
1096 |
+
0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
|
1097 |
+
2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
|
1098 |
+
HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
|
1099 |
+
iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
|
1100 |
+
28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
|
1101 |
+
yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
|
1102 |
+
vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
|
1103 |
+
qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
|
1104 |
+
IRlXvVWa
|
1105 |
+
-----END CERTIFICATE-----
|
1106 |
+
|
1107 |
+
Sonera Class 2 Root CA
|
1108 |
+
======================
|
1109 |
+
-----BEGIN CERTIFICATE-----
|
1110 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1111 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1112 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1113 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1114 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
1115 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
1116 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
1117 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
1118 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
1119 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
1120 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
1121 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
1122 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
1123 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
1124 |
+
llpwrN9M
|
1125 |
+
-----END CERTIFICATE-----
|
1126 |
+
|
1127 |
+
Staat der Nederlanden Root CA
|
1128 |
+
=============================
|
1129 |
+
-----BEGIN CERTIFICATE-----
|
1130 |
+
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
1131 |
+
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
1132 |
+
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
1133 |
+
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
1134 |
+
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
1135 |
+
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
1136 |
+
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
1137 |
+
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
1138 |
+
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
1139 |
+
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
1140 |
+
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
1141 |
+
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
1142 |
+
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
1143 |
+
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
1144 |
+
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
1145 |
+
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
1146 |
+
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
1147 |
+
-----END CERTIFICATE-----
|
1148 |
+
|
1149 |
+
TDC Internet Root CA
|
1150 |
+
====================
|
1151 |
+
-----BEGIN CERTIFICATE-----
|
1152 |
+
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
1153 |
+
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
1154 |
+
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
1155 |
+
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1156 |
+
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
1157 |
+
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
1158 |
+
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
1159 |
+
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
1160 |
+
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
1161 |
+
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
1162 |
+
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
1163 |
+
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
1164 |
+
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
1165 |
+
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
1166 |
+
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
1167 |
+
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
1168 |
+
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
1169 |
+
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
1170 |
+
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
1171 |
+
-----END CERTIFICATE-----
|
1172 |
+
|
1173 |
+
TDC OCES Root CA
|
1174 |
+
================
|
1175 |
+
-----BEGIN CERTIFICATE-----
|
1176 |
+
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
1177 |
+
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
1178 |
+
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
1179 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
1180 |
+
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
1181 |
+
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
1182 |
+
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
1183 |
+
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
1184 |
+
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
1185 |
+
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
1186 |
+
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
1187 |
+
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
1188 |
+
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
1189 |
+
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
1190 |
+
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
1191 |
+
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
1192 |
+
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
1193 |
+
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
1194 |
+
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
1195 |
+
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
1196 |
+
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
1197 |
+
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
1198 |
+
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
1199 |
+
-----END CERTIFICATE-----
|
1200 |
+
|
1201 |
+
UTN DATACorp SGC Root CA
|
1202 |
+
========================
|
1203 |
+
-----BEGIN CERTIFICATE-----
|
1204 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
1205 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1206 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
1207 |
+
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
1208 |
+
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
1209 |
+
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
1210 |
+
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1211 |
+
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
1212 |
+
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
1213 |
+
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
1214 |
+
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
1215 |
+
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
1216 |
+
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
1217 |
+
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
1218 |
+
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
1219 |
+
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
1220 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
1221 |
+
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
1222 |
+
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
1223 |
+
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
1224 |
+
-----END CERTIFICATE-----
|
1225 |
+
|
1226 |
+
UTN USERFirst Email Root CA
|
1227 |
+
===========================
|
1228 |
+
-----BEGIN CERTIFICATE-----
|
1229 |
+
MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
1230 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1231 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
|
1232 |
+
BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
|
1233 |
+
OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
|
1234 |
+
FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
|
1235 |
+
ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
|
1236 |
+
dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1237 |
+
MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
|
1238 |
+
B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
|
1239 |
+
om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
|
1240 |
+
TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
|
1241 |
+
yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
|
1242 |
+
AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
|
1243 |
+
HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
|
1244 |
+
bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
|
1245 |
+
AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
|
1246 |
+
xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
|
1247 |
+
5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
|
1248 |
+
NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
|
1249 |
+
w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
|
1250 |
+
-----END CERTIFICATE-----
|
1251 |
+
|
1252 |
+
UTN USERFirst Hardware Root CA
|
1253 |
+
==============================
|
1254 |
+
-----BEGIN CERTIFICATE-----
|
1255 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
1256 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1257 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
1258 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
1259 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
1260 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
1261 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
1262 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
1263 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
1264 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
1265 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
1266 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
1267 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
1268 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
1269 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
1270 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1271 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
1272 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
1273 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
1274 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
1275 |
+
nfhmqA==
|
1276 |
+
-----END CERTIFICATE-----
|
1277 |
+
|
1278 |
+
UTN USERFirst Object Root CA
|
1279 |
+
============================
|
1280 |
+
-----BEGIN CERTIFICATE-----
|
1281 |
+
MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
|
1282 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1283 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
|
1284 |
+
BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
|
1285 |
+
NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
|
1286 |
+
HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
|
1287 |
+
dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
|
1288 |
+
BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
|
1289 |
+
loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
|
1290 |
+
w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
|
1291 |
+
lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
|
1292 |
+
RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
|
1293 |
+
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
|
1294 |
+
ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
|
1295 |
+
c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
|
1296 |
+
DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
|
1297 |
+
NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
|
1298 |
+
PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
|
1299 |
+
qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
|
1300 |
+
hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
|
1301 |
+
-----END CERTIFICATE-----
|
1302 |
+
|
1303 |
+
Camerfirma Chambers of Commerce Root
|
1304 |
+
====================================
|
1305 |
+
-----BEGIN CERTIFICATE-----
|
1306 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1307 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1308 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
1309 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
1310 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
1311 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
1312 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
1313 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
1314 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
1315 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
1316 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
1317 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
1318 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
1319 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
1320 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
1321 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
1322 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
1323 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
1324 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
1325 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
1326 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
1327 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
1328 |
+
-----END CERTIFICATE-----
|
1329 |
+
|
1330 |
+
Camerfirma Global Chambersign Root
|
1331 |
+
==================================
|
1332 |
+
-----BEGIN CERTIFICATE-----
|
1333 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1334 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1335 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
1336 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
1337 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
1338 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
1339 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
1340 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
1341 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
1342 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
1343 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
1344 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
1345 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
1346 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
1347 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
1348 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
1349 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
1350 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
1351 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
1352 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
1353 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
1354 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
1355 |
+
-----END CERTIFICATE-----
|
1356 |
+
|
1357 |
+
NetLock Qualified (Class QA) Root
|
1358 |
+
=================================
|
1359 |
+
-----BEGIN CERTIFICATE-----
|
1360 |
+
MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1361 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1362 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
|
1363 |
+
eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
|
1364 |
+
bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
|
1365 |
+
MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
|
1366 |
+
LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
|
1367 |
+
dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
|
1368 |
+
aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
|
1369 |
+
CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
|
1370 |
+
8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
|
1371 |
+
m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
|
1372 |
+
0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
|
1373 |
+
0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1374 |
+
HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
|
1375 |
+
YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
|
1376 |
+
biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
|
1377 |
+
a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
|
1378 |
+
YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
|
1379 |
+
YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
|
1380 |
+
ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
|
1381 |
+
L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
|
1382 |
+
Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
|
1383 |
+
aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
|
1384 |
+
YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
|
1385 |
+
IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
|
1386 |
+
DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
|
1387 |
+
wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
|
1388 |
+
W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
|
1389 |
+
R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
|
1390 |
+
5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
|
1391 |
+
-----END CERTIFICATE-----
|
1392 |
+
|
1393 |
+
NetLock Notary (Class A) Root
|
1394 |
+
=============================
|
1395 |
+
-----BEGIN CERTIFICATE-----
|
1396 |
+
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
1397 |
+
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1398 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
1399 |
+
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
1400 |
+
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
1401 |
+
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
1402 |
+
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
1403 |
+
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
1404 |
+
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
1405 |
+
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
1406 |
+
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
1407 |
+
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
1408 |
+
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
1409 |
+
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
1410 |
+
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
1411 |
+
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
1412 |
+
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
1413 |
+
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
1414 |
+
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
1415 |
+
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
1416 |
+
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
1417 |
+
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
1418 |
+
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
1419 |
+
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
1420 |
+
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
1421 |
+
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
1422 |
+
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
1423 |
+
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
1424 |
+
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
1425 |
+
8CgHrTwXZoi1/baI
|
1426 |
+
-----END CERTIFICATE-----
|
1427 |
+
|
1428 |
+
NetLock Business (Class B) Root
|
1429 |
+
===============================
|
1430 |
+
-----BEGIN CERTIFICATE-----
|
1431 |
+
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1432 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1433 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
1434 |
+
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
1435 |
+
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
1436 |
+
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
1437 |
+
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1438 |
+
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
1439 |
+
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
1440 |
+
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1441 |
+
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
1442 |
+
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
1443 |
+
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
1444 |
+
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
1445 |
+
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
1446 |
+
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
1447 |
+
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
1448 |
+
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
1449 |
+
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
1450 |
+
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
1451 |
+
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
1452 |
+
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
1453 |
+
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
1454 |
+
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
1455 |
+
-----END CERTIFICATE-----
|
1456 |
+
|
1457 |
+
NetLock Express (Class C) Root
|
1458 |
+
==============================
|
1459 |
+
-----BEGIN CERTIFICATE-----
|
1460 |
+
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1461 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1462 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
1463 |
+
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
1464 |
+
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1465 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
1466 |
+
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
1467 |
+
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
1468 |
+
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
1469 |
+
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
1470 |
+
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
1471 |
+
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
1472 |
+
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
1473 |
+
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
1474 |
+
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
1475 |
+
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
1476 |
+
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
1477 |
+
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
1478 |
+
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
1479 |
+
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
1480 |
+
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
1481 |
+
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
1482 |
+
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
1483 |
+
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
1484 |
+
-----END CERTIFICATE-----
|
1485 |
+
|
1486 |
+
XRamp Global CA Root
|
1487 |
+
====================
|
1488 |
+
-----BEGIN CERTIFICATE-----
|
1489 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
1490 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
1491 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1492 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
1493 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
1494 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1495 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
1496 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
1497 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
1498 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
1499 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
1500 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1501 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
1502 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
1503 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
1504 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1505 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
1506 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
1507 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1508 |
+
-----END CERTIFICATE-----
|
1509 |
+
|
1510 |
+
Go Daddy Class 2 CA
|
1511 |
+
===================
|
1512 |
+
-----BEGIN CERTIFICATE-----
|
1513 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
1514 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
1515 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
1516 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
1517 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
1518 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
1519 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
1520 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
1521 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
1522 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
1523 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
1524 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
1525 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
1526 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
1527 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
1528 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1529 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
1530 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
1531 |
+
vZ8=
|
1532 |
+
-----END CERTIFICATE-----
|
1533 |
+
|
1534 |
+
Starfield Class 2 CA
|
1535 |
+
====================
|
1536 |
+
-----BEGIN CERTIFICATE-----
|
1537 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
1538 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
1539 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
1540 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
1541 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
1542 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
1543 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
1544 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
1545 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
1546 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
1547 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
1548 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
1549 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
1550 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
1551 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
1552 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1553 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
1554 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
1555 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
1556 |
+
-----END CERTIFICATE-----
|
1557 |
+
|
1558 |
+
StartCom Certification Authority
|
1559 |
+
================================
|
1560 |
+
-----BEGIN CERTIFICATE-----
|
1561 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
1562 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
1563 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
1564 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
1565 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
1566 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
1567 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
1568 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
1569 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
1570 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
1571 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
1572 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
1573 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
1574 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
1575 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
1576 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1577 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
1578 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
1579 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
1580 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
1581 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
1582 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
1583 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
1584 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
1585 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
1586 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
1587 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
1588 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
1589 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
1590 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
1591 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
1592 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1593 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
1594 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
1595 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
1596 |
+
g14=
|
1597 |
+
-----END CERTIFICATE-----
|
1598 |
+
|
1599 |
+
Taiwan GRCA
|
1600 |
+
===========
|
1601 |
+
-----BEGIN CERTIFICATE-----
|
1602 |
+
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
|
1627 |
+
-----END CERTIFICATE-----
|
1628 |
+
|
1629 |
+
Firmaprofesional Root CA
|
1630 |
+
========================
|
1631 |
+
-----BEGIN CERTIFICATE-----
|
1632 |
+
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
1633 |
+
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
1634 |
+
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
1635 |
+
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
1636 |
+
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
1637 |
+
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
1638 |
+
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
1639 |
+
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
1640 |
+
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
1641 |
+
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
1642 |
+
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
1643 |
+
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
1644 |
+
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
1645 |
+
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
1646 |
+
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
1647 |
+
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
1648 |
+
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
1649 |
+
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
1650 |
+
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
1651 |
+
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
1652 |
+
-----END CERTIFICATE-----
|
1653 |
+
|
1654 |
+
Wells Fargo Root CA
|
1655 |
+
===================
|
1656 |
+
-----BEGIN CERTIFICATE-----
|
1657 |
+
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
1658 |
+
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1659 |
+
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1660 |
+
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
1661 |
+
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
1662 |
+
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
1663 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
1664 |
+
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
1665 |
+
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
1666 |
+
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
1667 |
+
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
1668 |
+
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
1669 |
+
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
1670 |
+
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
1671 |
+
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
1672 |
+
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
1673 |
+
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
1674 |
+
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
1675 |
+
-----END CERTIFICATE-----
|
1676 |
+
|
1677 |
+
Swisscom Root CA 1
|
1678 |
+
==================
|
1679 |
+
-----BEGIN CERTIFICATE-----
|
1680 |
+
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
|
1706 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
1707 |
+
-----END CERTIFICATE-----
|
1708 |
+
|
1709 |
+
DigiCert Assured ID Root CA
|
1710 |
+
===========================
|
1711 |
+
-----BEGIN CERTIFICATE-----
|
1712 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
1713 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1714 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
1715 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1716 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
1717 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
1718 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
1719 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
1720 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
1721 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
1722 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
1723 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
1724 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
1725 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
1726 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
1727 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1728 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1729 |
+
-----END CERTIFICATE-----
|
1730 |
+
|
1731 |
+
DigiCert Global Root CA
|
1732 |
+
=======================
|
1733 |
+
-----BEGIN CERTIFICATE-----
|
1734 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
1735 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1736 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
1737 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1738 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
1739 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
1740 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
1741 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
1742 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
1743 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
1744 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
1745 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
1746 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
1747 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
1748 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
1749 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1750 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1751 |
+
-----END CERTIFICATE-----
|
1752 |
+
|
1753 |
+
DigiCert High Assurance EV Root CA
|
1754 |
+
==================================
|
1755 |
+
-----BEGIN CERTIFICATE-----
|
1756 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
1757 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
1758 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
1759 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
1760 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
1761 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
1762 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
1763 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
1764 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
1765 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
1766 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
1767 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
1768 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
1769 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
1770 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
1771 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1772 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
1773 |
+
-----END CERTIFICATE-----
|
1774 |
+
|
1775 |
+
Certplus Class 2 Primary CA
|
1776 |
+
===========================
|
1777 |
+
-----BEGIN CERTIFICATE-----
|
1778 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
1779 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
1780 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
1781 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1782 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
1783 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
1784 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
1785 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
1786 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
1787 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
1788 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
1789 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
1790 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
1791 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
1792 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
1793 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
1794 |
+
l7+ijrRU
|
1795 |
+
-----END CERTIFICATE-----
|
1796 |
+
|
1797 |
+
DST Root CA X3
|
1798 |
+
==============
|
1799 |
+
-----BEGIN CERTIFICATE-----
|
1800 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
1801 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
1802 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
1803 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
1804 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
1805 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
1806 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
1807 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
1808 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
1809 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
1810 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
1811 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
1812 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
1813 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
1814 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
1815 |
+
-----END CERTIFICATE-----
|
1816 |
+
|
1817 |
+
DST ACES CA X6
|
1818 |
+
==============
|
1819 |
+
-----BEGIN CERTIFICATE-----
|
1820 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
1821 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
1822 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
1823 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
1824 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1825 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
1826 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
1827 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
1828 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
1829 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
1830 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
1831 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
1832 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
1833 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
1834 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
1835 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
1836 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
1837 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
1838 |
+
oKfN5XozNmr6mis=
|
1839 |
+
-----END CERTIFICATE-----
|
1840 |
+
|
1841 |
+
TURKTRUST Certificate Services Provider Root 1
|
1842 |
+
==============================================
|
1843 |
+
-----BEGIN CERTIFICATE-----
|
1844 |
+
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1845 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
1846 |
+
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
1847 |
+
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
1848 |
+
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
1849 |
+
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
1850 |
+
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
1851 |
+
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1852 |
+
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
1853 |
+
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
1854 |
+
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
1855 |
+
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
1856 |
+
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
1857 |
+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
1858 |
+
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
1859 |
+
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
1860 |
+
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
1861 |
+
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
1862 |
+
-----END CERTIFICATE-----
|
1863 |
+
|
1864 |
+
TURKTRUST Certificate Services Provider Root 2
|
1865 |
+
==============================================
|
1866 |
+
-----BEGIN CERTIFICATE-----
|
1867 |
+
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1868 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
1869 |
+
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
1870 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
1871 |
+
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
1872 |
+
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
1873 |
+
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
1874 |
+
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
1875 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
1876 |
+
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
1877 |
+
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
1878 |
+
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
1879 |
+
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
1880 |
+
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
1881 |
+
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
1882 |
+
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
1883 |
+
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
1884 |
+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
1885 |
+
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
1886 |
+
UrbnBEI=
|
1887 |
+
-----END CERTIFICATE-----
|
1888 |
+
|
1889 |
+
SwissSign Platinum CA - G2
|
1890 |
+
==========================
|
1891 |
+
-----BEGIN CERTIFICATE-----
|
1892 |
+
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
|
1918 |
+
-----END CERTIFICATE-----
|
1919 |
+
|
1920 |
+
SwissSign Gold CA - G2
|
1921 |
+
======================
|
1922 |
+
-----BEGIN CERTIFICATE-----
|
1923 |
+
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
|
1949 |
+
-----END CERTIFICATE-----
|
1950 |
+
|
1951 |
+
SwissSign Silver CA - G2
|
1952 |
+
========================
|
1953 |
+
-----BEGIN CERTIFICATE-----
|
1954 |
+
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
|
1980 |
+
-----END CERTIFICATE-----
|
1981 |
+
|
1982 |
+
GeoTrust Primary Certification Authority
|
1983 |
+
========================================
|
1984 |
+
-----BEGIN CERTIFICATE-----
|
1985 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1986 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1987 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1988 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1989 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1990 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1991 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1992 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1993 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1994 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1995 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1996 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1997 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1998 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1999 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
2000 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
2001 |
+
-----END CERTIFICATE-----
|
2002 |
+
|
2003 |
+
thawte Primary Root CA
|
2004 |
+
======================
|
2005 |
+
-----BEGIN CERTIFICATE-----
|
2006 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
2007 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2008 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2009 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
2010 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
2011 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
2012 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
2013 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
2014 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
2015 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
2016 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
2017 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
2018 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
2019 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
2020 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
2021 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
2022 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
2023 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
2024 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
2025 |
+
-----END CERTIFICATE-----
|
2026 |
+
|
2027 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
2028 |
+
============================================================
|
2029 |
+
-----BEGIN CERTIFICATE-----
|
2030 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
2031 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2032 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2033 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
2034 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
2035 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
2036 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
2037 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
2038 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2039 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
2040 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
2041 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
2042 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
2043 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
2044 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
2045 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
2046 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
2047 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
2048 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
2049 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
2050 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
2051 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
2052 |
+
-----END CERTIFICATE-----
|
2053 |
+
|
2054 |
+
SecureTrust CA
|
2055 |
+
==============
|
2056 |
+
-----BEGIN CERTIFICATE-----
|
2057 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
2058 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
2059 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
2060 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
2061 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
2062 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
2063 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
2064 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
2065 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
2066 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
2067 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
2068 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2069 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
2070 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
2071 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
2072 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
2073 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
2074 |
+
-----END CERTIFICATE-----
|
2075 |
+
|
2076 |
+
Secure Global CA
|
2077 |
+
================
|
2078 |
+
-----BEGIN CERTIFICATE-----
|
2079 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
2080 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
2081 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
2082 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
2083 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
2084 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
2085 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
2086 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
2087 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
2088 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
2089 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
2090 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
2091 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
2092 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
2093 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
2094 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
2095 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
2096 |
+
-----END CERTIFICATE-----
|
2097 |
+
|
2098 |
+
COMODO Certification Authority
|
2099 |
+
==============================
|
2100 |
+
-----BEGIN CERTIFICATE-----
|
2101 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
2102 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
2103 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
2104 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
2105 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
2106 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
2107 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
2108 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
2109 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
2110 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
2111 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
2112 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
2113 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
2114 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
2115 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
2116 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
2117 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
2118 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
2119 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
2120 |
+
-----END CERTIFICATE-----
|
2121 |
+
|
2122 |
+
Network Solutions Certificate Authority
|
2123 |
+
=======================================
|
2124 |
+
-----BEGIN CERTIFICATE-----
|
2125 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
2126 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
2127 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
2128 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
2129 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2130 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
2131 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
2132 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
2133 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
2134 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
2135 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
2136 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
2137 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
2138 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
2139 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
2140 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
2141 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
2142 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
2143 |
+
-----END CERTIFICATE-----
|
2144 |
+
|
2145 |
+
WellsSecure Public Root Certificate Authority
|
2146 |
+
=============================================
|
2147 |
+
-----BEGIN CERTIFICATE-----
|
2148 |
+
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
2149 |
+
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
2150 |
+
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
2151 |
+
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
2152 |
+
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
2153 |
+
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2154 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
2155 |
+
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
2156 |
+
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
2157 |
+
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
2158 |
+
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
2159 |
+
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
2160 |
+
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
2161 |
+
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
2162 |
+
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
2163 |
+
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
2164 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
2165 |
+
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
2166 |
+
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
2167 |
+
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
2168 |
+
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
2169 |
+
tylv2G0xffX8oRAHh84vWdw+WNs=
|
2170 |
+
-----END CERTIFICATE-----
|
2171 |
+
|
2172 |
+
COMODO ECC Certification Authority
|
2173 |
+
==================================
|
2174 |
+
-----BEGIN CERTIFICATE-----
|
2175 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
2176 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
2177 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
2178 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
2179 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
2180 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
2181 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
2182 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
2183 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
2184 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
2185 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
2186 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
2187 |
+
-----END CERTIFICATE-----
|
2188 |
+
|
2189 |
+
IGC/A
|
2190 |
+
=====
|
2191 |
+
-----BEGIN CERTIFICATE-----
|
2192 |
+
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
2193 |
+
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
2194 |
+
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
2195 |
+
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
2196 |
+
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
2197 |
+
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
2198 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
2199 |
+
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
2200 |
+
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
2201 |
+
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
2202 |
+
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
2203 |
+
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
2204 |
+
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
2205 |
+
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
2206 |
+
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
2207 |
+
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
2208 |
+
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
2209 |
+
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
2210 |
+
0mBWWg==
|
2211 |
+
-----END CERTIFICATE-----
|
2212 |
+
|
2213 |
+
Security Communication EV RootCA1
|
2214 |
+
=================================
|
2215 |
+
-----BEGIN CERTIFICATE-----
|
2216 |
+
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
2217 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
2218 |
+
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
2219 |
+
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
2220 |
+
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2221 |
+
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
2222 |
+
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
2223 |
+
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
2224 |
+
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
2225 |
+
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
2226 |
+
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
2227 |
+
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
2228 |
+
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
2229 |
+
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
2230 |
+
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
2231 |
+
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
2232 |
+
-----END CERTIFICATE-----
|
2233 |
+
|
2234 |
+
OISTE WISeKey Global Root GA CA
|
2235 |
+
===============================
|
2236 |
+
-----BEGIN CERTIFICATE-----
|
2237 |
+
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
2238 |
+
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
2239 |
+
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
2240 |
+
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
2241 |
+
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
2242 |
+
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
2243 |
+
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
2244 |
+
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
2245 |
+
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
2246 |
+
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
2247 |
+
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
2248 |
+
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
2249 |
+
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2250 |
+
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
2251 |
+
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
2252 |
+
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
2253 |
+
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
2254 |
+
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
2255 |
+
-----END CERTIFICATE-----
|
2256 |
+
|
2257 |
+
S-TRUST Authentication and Encryption Root CA 2005 PN
|
2258 |
+
=====================================================
|
2259 |
+
-----BEGIN CERTIFICATE-----
|
2260 |
+
MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
2261 |
+
BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
|
2262 |
+
cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
|
2263 |
+
LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
|
2264 |
+
NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
|
2265 |
+
ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
|
2266 |
+
aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
|
2267 |
+
b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2268 |
+
MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
|
2269 |
+
4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
|
2270 |
+
g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
|
2271 |
+
eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
|
2272 |
+
KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
|
2273 |
+
/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
|
2274 |
+
bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
|
2275 |
+
D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
|
2276 |
+
pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
|
2277 |
+
P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
|
2278 |
+
nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
|
2279 |
+
F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
|
2280 |
+
Hz2eBIPdltkdOpQ=
|
2281 |
+
-----END CERTIFICATE-----
|
2282 |
+
|
2283 |
+
Microsec e-Szigno Root CA
|
2284 |
+
=========================
|
2285 |
+
-----BEGIN CERTIFICATE-----
|
2286 |
+
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
2287 |
+
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
2288 |
+
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
2289 |
+
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
2290 |
+
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
2291 |
+
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
2292 |
+
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
2293 |
+
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
2294 |
+
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
2295 |
+
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
2296 |
+
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
2297 |
+
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
2298 |
+
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
2299 |
+
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
2300 |
+
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
2301 |
+
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
2302 |
+
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
2303 |
+
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
2304 |
+
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
2305 |
+
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
2306 |
+
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
2307 |
+
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
2308 |
+
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
2309 |
+
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
2310 |
+
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
2311 |
+
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
2312 |
+
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
2313 |
+
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
2314 |
+
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
2315 |
+
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
2316 |
+
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
2317 |
+
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
2318 |
+
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
2319 |
+
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
2320 |
+
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
2321 |
+
-----END CERTIFICATE-----
|
2322 |
+
|
2323 |
+
Certigna
|
2324 |
+
========
|
2325 |
+
-----BEGIN CERTIFICATE-----
|
2326 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
2327 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
2328 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
2329 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
2330 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
2331 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
2332 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
2333 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
2334 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
2335 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
2336 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
2337 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
2338 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
2339 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
2340 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
2341 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
2342 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
2343 |
+
-----END CERTIFICATE-----
|
2344 |
+
|
2345 |
+
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
2346 |
+
======================================
|
2347 |
+
-----BEGIN CERTIFICATE-----
|
2348 |
+
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
2349 |
+
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
2350 |
+
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
2351 |
+
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
2352 |
+
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
2353 |
+
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
2354 |
+
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
2355 |
+
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
2356 |
+
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
2357 |
+
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
2358 |
+
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
2359 |
+
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
2360 |
+
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
2361 |
+
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
2362 |
+
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
2363 |
+
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
2364 |
+
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
2365 |
+
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
2366 |
+
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
2367 |
+
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
2368 |
+
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
2369 |
+
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
2370 |
+
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
2371 |
+
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
2372 |
+
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
2373 |
+
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
2374 |
+
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
2375 |
+
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
2376 |
+
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
2377 |
+
-----END CERTIFICATE-----
|
2378 |
+
|
2379 |
+
TC TrustCenter Class 2 CA II
|
2380 |
+
============================
|
2381 |
+
-----BEGIN CERTIFICATE-----
|
2382 |
+
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2383 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2384 |
+
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
|
2385 |
+
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2386 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
|
2387 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2388 |
+
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
|
2389 |
+
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
|
2390 |
+
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
|
2391 |
+
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
|
2392 |
+
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2393 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
|
2394 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2395 |
+
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2396 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2397 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2398 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
|
2399 |
+
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
|
2400 |
+
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
|
2401 |
+
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
|
2402 |
+
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
|
2403 |
+
vQ==
|
2404 |
+
-----END CERTIFICATE-----
|
2405 |
+
|
2406 |
+
TC TrustCenter Class 3 CA II
|
2407 |
+
============================
|
2408 |
+
-----BEGIN CERTIFICATE-----
|
2409 |
+
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2410 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2411 |
+
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
|
2412 |
+
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2413 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
|
2414 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2415 |
+
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
|
2416 |
+
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
|
2417 |
+
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
|
2418 |
+
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
|
2419 |
+
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2420 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
|
2421 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2422 |
+
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2423 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2424 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2425 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
|
2426 |
+
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
|
2427 |
+
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
|
2428 |
+
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
|
2429 |
+
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
|
2430 |
+
5A==
|
2431 |
+
-----END CERTIFICATE-----
|
2432 |
+
|
2433 |
+
TC TrustCenter Universal CA I
|
2434 |
+
=============================
|
2435 |
+
-----BEGIN CERTIFICATE-----
|
2436 |
+
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
|
2437 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2438 |
+
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
|
2439 |
+
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
|
2440 |
+
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
|
2441 |
+
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
2442 |
+
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
|
2443 |
+
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
|
2444 |
+
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
|
2445 |
+
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
|
2446 |
+
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
|
2447 |
+
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2448 |
+
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
|
2449 |
+
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
|
2450 |
+
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
|
2451 |
+
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
2452 |
+
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
|
2453 |
+
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
2454 |
+
-----END CERTIFICATE-----
|
2455 |
+
|
2456 |
+
Deutsche Telekom Root CA 2
|
2457 |
+
==========================
|
2458 |
+
-----BEGIN CERTIFICATE-----
|
2459 |
+
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
2460 |
+
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
2461 |
+
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
2462 |
+
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
2463 |
+
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
2464 |
+
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
2465 |
+
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
2466 |
+
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
2467 |
+
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
2468 |
+
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
2469 |
+
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
2470 |
+
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
2471 |
+
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
2472 |
+
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
2473 |
+
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
2474 |
+
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
2475 |
+
Cm26OWMohpLzGITY+9HPBVZkVw==
|
2476 |
+
-----END CERTIFICATE-----
|
2477 |
+
|
2478 |
+
ComSign CA
|
2479 |
+
==========
|
2480 |
+
-----BEGIN CERTIFICATE-----
|
2481 |
+
MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
|
2482 |
+
EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
|
2483 |
+
MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
|
2484 |
+
Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
|
2485 |
+
ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
|
2486 |
+
P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
|
2487 |
+
GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
|
2488 |
+
YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
|
2489 |
+
rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
|
2490 |
+
oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
|
2491 |
+
AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
|
2492 |
+
VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
|
2493 |
+
QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
|
2494 |
+
mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
|
2495 |
+
/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
|
2496 |
+
zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
|
2497 |
+
AGegcQCCSA==
|
2498 |
+
-----END CERTIFICATE-----
|
2499 |
+
|
2500 |
+
ComSign Secured CA
|
2501 |
+
==================
|
2502 |
+
-----BEGIN CERTIFICATE-----
|
2503 |
+
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
|
2504 |
+
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
|
2505 |
+
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
|
2506 |
+
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2507 |
+
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
|
2508 |
+
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
|
2509 |
+
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
|
2510 |
+
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
|
2511 |
+
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
|
2512 |
+
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
|
2513 |
+
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
|
2514 |
+
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
|
2515 |
+
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
|
2516 |
+
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
|
2517 |
+
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
|
2518 |
+
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
|
2519 |
+
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
|
2520 |
+
-----END CERTIFICATE-----
|
2521 |
+
|
2522 |
+
Cybertrust Global Root
|
2523 |
+
======================
|
2524 |
+
-----BEGIN CERTIFICATE-----
|
2525 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
2526 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
2527 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
2528 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
2529 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
2530 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
2531 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
2532 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
2533 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
2534 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
2535 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
2536 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
2537 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
2538 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
2539 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
2540 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
2541 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
2542 |
+
-----END CERTIFICATE-----
|
2543 |
+
|
2544 |
+
ePKI Root Certification Authority
|
2545 |
+
=================================
|
2546 |
+
-----BEGIN CERTIFICATE-----
|
2547 |
+
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
|
2573 |
+
-----END CERTIFICATE-----
|
2574 |
+
|
2575 |
+
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
|
2576 |
+
=============================================================================================================================
|
2577 |
+
-----BEGIN CERTIFICATE-----
|
2578 |
+
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
2579 |
+
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
2580 |
+
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
2581 |
+
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
2582 |
+
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
2583 |
+
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
2584 |
+
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
2585 |
+
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
2586 |
+
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
2587 |
+
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
2588 |
+
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
2589 |
+
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
2590 |
+
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
2591 |
+
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
2592 |
+
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
2593 |
+
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
2594 |
+
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
2595 |
+
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
2596 |
+
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
2597 |
+
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
2598 |
+
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
2599 |
+
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
2600 |
+
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
2601 |
+
-----END CERTIFICATE-----
|
2602 |
+
|
2603 |
+
Buypass Class 2 CA 1
|
2604 |
+
====================
|
2605 |
+
-----BEGIN CERTIFICATE-----
|
2606 |
+
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2607 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
2608 |
+
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2609 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
2610 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
2611 |
+
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
2612 |
+
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
2613 |
+
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
2614 |
+
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
2615 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
2616 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
2617 |
+
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
2618 |
+
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
2619 |
+
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
2620 |
+
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
2621 |
+
-----END CERTIFICATE-----
|
2622 |
+
|
2623 |
+
Buypass Class 3 CA 1
|
2624 |
+
====================
|
2625 |
+
-----BEGIN CERTIFICATE-----
|
2626 |
+
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2627 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
|
2628 |
+
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2629 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
|
2630 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
|
2631 |
+
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
|
2632 |
+
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
|
2633 |
+
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
|
2634 |
+
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
|
2635 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
|
2636 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
|
2637 |
+
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
|
2638 |
+
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
|
2639 |
+
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
2640 |
+
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
2641 |
+
-----END CERTIFICATE-----
|
2642 |
+
|
2643 |
+
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
2644 |
+
==========================================================================
|
2645 |
+
-----BEGIN CERTIFICATE-----
|
2646 |
+
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
|
2673 |
+
-----END CERTIFICATE-----
|
2674 |
+
|
2675 |
+
certSIGN ROOT CA
|
2676 |
+
================
|
2677 |
+
-----BEGIN CERTIFICATE-----
|
2678 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
2679 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
2680 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
2681 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
2682 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
2683 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
2684 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
2685 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
2686 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
2687 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
2688 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
2689 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
2690 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
2691 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
2692 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
2693 |
+
-----END CERTIFICATE-----
|
2694 |
+
|
2695 |
+
CNNIC ROOT
|
2696 |
+
==========
|
2697 |
+
-----BEGIN CERTIFICATE-----
|
2698 |
+
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
2699 |
+
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
2700 |
+
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
2701 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
2702 |
+
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
2703 |
+
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
2704 |
+
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
2705 |
+
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
2706 |
+
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
2707 |
+
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
2708 |
+
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
2709 |
+
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
2710 |
+
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
2711 |
+
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
2712 |
+
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
2713 |
+
mxE=
|
2714 |
+
-----END CERTIFICATE-----
|
2715 |
+
|
2716 |
+
ApplicationCA - Japanese Government
|
2717 |
+
===================================
|
2718 |
+
-----BEGIN CERTIFICATE-----
|
2719 |
+
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
2720 |
+
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
2721 |
+
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
2722 |
+
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2723 |
+
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
2724 |
+
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
2725 |
+
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
2726 |
+
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
2727 |
+
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
2728 |
+
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
2729 |
+
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
2730 |
+
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
2731 |
+
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
2732 |
+
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
2733 |
+
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
2734 |
+
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
2735 |
+
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
2736 |
+
-----END CERTIFICATE-----
|
2737 |
+
|
2738 |
+
GeoTrust Primary Certification Authority - G3
|
2739 |
+
=============================================
|
2740 |
+
-----BEGIN CERTIFICATE-----
|
2741 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
2742 |
+
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
2743 |
+
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
2744 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
2745 |
+
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
2746 |
+
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
2747 |
+
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
2748 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
2749 |
+
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
2750 |
+
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
2751 |
+
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
2752 |
+
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
2753 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
2754 |
+
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
2755 |
+
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
2756 |
+
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
2757 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
2758 |
+
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
2759 |
+
-----END CERTIFICATE-----
|
2760 |
+
|
2761 |
+
thawte Primary Root CA - G2
|
2762 |
+
===========================
|
2763 |
+
-----BEGIN CERTIFICATE-----
|
2764 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
2765 |
+
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
2766 |
+
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
2767 |
+
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
2768 |
+
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
2769 |
+
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
2770 |
+
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
2771 |
+
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
2772 |
+
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
2773 |
+
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
2774 |
+
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
2775 |
+
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
2776 |
+
-----END CERTIFICATE-----
|
2777 |
+
|
2778 |
+
thawte Primary Root CA - G3
|
2779 |
+
===========================
|
2780 |
+
-----BEGIN CERTIFICATE-----
|
2781 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
2782 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2783 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2784 |
+
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
2785 |
+
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
2786 |
+
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
2787 |
+
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
2788 |
+
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2789 |
+
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
2790 |
+
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
2791 |
+
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
2792 |
+
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
2793 |
+
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
2794 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
2795 |
+
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
2796 |
+
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
2797 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
2798 |
+
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
2799 |
+
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
2800 |
+
-----END CERTIFICATE-----
|
2801 |
+
|
2802 |
+
GeoTrust Primary Certification Authority - G2
|
2803 |
+
=============================================
|
2804 |
+
-----BEGIN CERTIFICATE-----
|
2805 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
2806 |
+
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
2807 |
+
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
2808 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
2809 |
+
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
2810 |
+
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
2811 |
+
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
2812 |
+
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
2813 |
+
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
2814 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
2815 |
+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
2816 |
+
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
2817 |
+
npaqBA+K
|
2818 |
+
-----END CERTIFICATE-----
|
2819 |
+
|
2820 |
+
VeriSign Universal Root Certification Authority
|
2821 |
+
===============================================
|
2822 |
+
-----BEGIN CERTIFICATE-----
|
2823 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
2824 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2825 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2826 |
+
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
2827 |
+
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
2828 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
2829 |
+
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
2830 |
+
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
2831 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
2832 |
+
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
2833 |
+
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
2834 |
+
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
2835 |
+
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
2836 |
+
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
2837 |
+
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
2838 |
+
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
2839 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
2840 |
+
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
2841 |
+
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
2842 |
+
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
2843 |
+
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
2844 |
+
mJO37M2CYfE45k+XmCpajQ==
|
2845 |
+
-----END CERTIFICATE-----
|
2846 |
+
|
2847 |
+
VeriSign Class 3 Public Primary Certification Authority - G4
|
2848 |
+
============================================================
|
2849 |
+
-----BEGIN CERTIFICATE-----
|
2850 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
2851 |
+
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
2852 |
+
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
2853 |
+
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
2854 |
+
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
2855 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
2856 |
+
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
2857 |
+
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2858 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
2859 |
+
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
2860 |
+
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
2861 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
2862 |
+
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
2863 |
+
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
2864 |
+
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
2865 |
+
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
2866 |
+
-----END CERTIFICATE-----
|
2867 |
+
|
2868 |
+
NetLock Arany (Class Gold) Főtanúsítvány
|
2869 |
+
============================================
|
2870 |
+
-----BEGIN CERTIFICATE-----
|
2871 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
2872 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
2873 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
2874 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
2875 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
2876 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
2877 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
2878 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
2879 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
2880 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
2881 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
2882 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
2883 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
2884 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
2885 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
2886 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
2887 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
2888 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
2889 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
2890 |
+
-----END CERTIFICATE-----
|
2891 |
+
|
2892 |
+
Staat der Nederlanden Root CA - G2
|
2893 |
+
==================================
|
2894 |
+
-----BEGIN CERTIFICATE-----
|
2895 |
+
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
|
2921 |
+
66+KAQ==
|
2922 |
+
-----END CERTIFICATE-----
|
2923 |
+
|
2924 |
+
CA Disig
|
2925 |
+
========
|
2926 |
+
-----BEGIN CERTIFICATE-----
|
2927 |
+
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
2928 |
+
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
2929 |
+
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
2930 |
+
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
2931 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
2932 |
+
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
2933 |
+
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
2934 |
+
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
2935 |
+
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
2936 |
+
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
2937 |
+
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
2938 |
+
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
2939 |
+
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
2940 |
+
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
2941 |
+
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
2942 |
+
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
2943 |
+
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
2944 |
+
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
2945 |
+
4Z7CRneC9VkGjCFMhwnN5ag=
|
2946 |
+
-----END CERTIFICATE-----
|
2947 |
+
|
2948 |
+
Juur-SK
|
2949 |
+
=======
|
2950 |
+
-----BEGIN CERTIFICATE-----
|
2951 |
+
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
2952 |
+
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
2953 |
+
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
2954 |
+
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
2955 |
+
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2956 |
+
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
2957 |
+
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
2958 |
+
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
2959 |
+
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
2960 |
+
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
2961 |
+
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
2962 |
+
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
2963 |
+
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
2964 |
+
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
2965 |
+
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
2966 |
+
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
2967 |
+
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
2968 |
+
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
2969 |
+
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
2970 |
+
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
2971 |
+
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
2972 |
+
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
2973 |
+
yyqcjg==
|
2974 |
+
-----END CERTIFICATE-----
|
2975 |
+
|
2976 |
+
Hongkong Post Root CA 1
|
2977 |
+
=======================
|
2978 |
+
-----BEGIN CERTIFICATE-----
|
2979 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
2980 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
2981 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
2982 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
2983 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
2984 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
2985 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
2986 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
2987 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
2988 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
2989 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
2990 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
2991 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
2992 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
2993 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
2994 |
+
-----END CERTIFICATE-----
|
2995 |
+
|
2996 |
+
SecureSign RootCA11
|
2997 |
+
===================
|
2998 |
+
-----BEGIN CERTIFICATE-----
|
2999 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
3000 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
3001 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
3002 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
3003 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
3004 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
3005 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
3006 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
3007 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
3008 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
3009 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
3010 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
3011 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
3012 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
3013 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
3014 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
3015 |
+
-----END CERTIFICATE-----
|
3016 |
+
|
3017 |
+
ACEDICOM Root
|
3018 |
+
=============
|
3019 |
+
-----BEGIN CERTIFICATE-----
|
3020 |
+
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
|
3046 |
+
-----END CERTIFICATE-----
|
3047 |
+
|
3048 |
+
Verisign Class 1 Public Primary Certification Authority
|
3049 |
+
=======================================================
|
3050 |
+
-----BEGIN CERTIFICATE-----
|
3051 |
+
MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3052 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
|
3053 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3054 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx
|
3055 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3056 |
+
A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ
|
3057 |
+
VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2
|
3058 |
+
yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa
|
3059 |
+
XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n
|
3060 |
+
0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ
|
3061 |
+
RjXZ+Hxb
|
3062 |
+
-----END CERTIFICATE-----
|
3063 |
+
|
3064 |
+
Verisign Class 3 Public Primary Certification Authority
|
3065 |
+
=======================================================
|
3066 |
+
-----BEGIN CERTIFICATE-----
|
3067 |
+
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3068 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
3069 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3070 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
3071 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3072 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
3073 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
3074 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
3075 |
+
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
3076 |
+
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
3077 |
+
D/xwzoiQ
|
3078 |
+
-----END CERTIFICATE-----
|
3079 |
+
|
3080 |
+
Microsec e-Szigno Root CA 2009
|
3081 |
+
==============================
|
3082 |
+
-----BEGIN CERTIFICATE-----
|
3083 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
3084 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
3085 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
3086 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
3087 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
3088 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
3089 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
3090 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
3091 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
3092 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
3093 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
3094 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
3095 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
3096 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
3097 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
3098 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
3099 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
3100 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
3101 |
+
LXpUq3DDfSJlgnCW
|
3102 |
+
-----END CERTIFICATE-----
|
3103 |
+
|
3104 |
+
E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
|
3105 |
+
===================================================
|
3106 |
+
-----BEGIN CERTIFICATE-----
|
3107 |
+
MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3108 |
+
EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
|
3109 |
+
ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
|
3110 |
+
MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
|
3111 |
+
cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
|
3112 |
+
aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3113 |
+
AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
|
3114 |
+
8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
|
3115 |
+
jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
|
3116 |
+
JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
|
3117 |
+
9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
3118 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
|
3119 |
+
SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
|
3120 |
+
F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
|
3121 |
+
D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
|
3122 |
+
Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
|
3123 |
+
fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
|
3124 |
+
-----END CERTIFICATE-----
|
3125 |
+
|
3126 |
+
GlobalSign Root CA - R3
|
3127 |
+
=======================
|
3128 |
+
-----BEGIN CERTIFICATE-----
|
3129 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
3130 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
3131 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
3132 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
3133 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
3134 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
3135 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
3136 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
3137 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
3138 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
3139 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
3140 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
3141 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
3142 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
3143 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
3144 |
+
kpeDMdmztcpHWD9f
|
3145 |
+
-----END CERTIFICATE-----
|
3146 |
+
|
3147 |
+
TC TrustCenter Universal CA III
|
3148 |
+
===============================
|
3149 |
+
-----BEGIN CERTIFICATE-----
|
3150 |
+
MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
|
3151 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
3152 |
+
IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
|
3153 |
+
Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
|
3154 |
+
QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
|
3155 |
+
KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
|
3156 |
+
AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
|
3157 |
+
QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
|
3158 |
+
juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
|
3159 |
+
CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
|
3160 |
+
M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
|
3161 |
+
A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
|
3162 |
+
BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
|
3163 |
+
g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
|
3164 |
+
KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
|
3165 |
+
BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
|
3166 |
+
CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
|
3167 |
+
woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
|
3168 |
+
-----END CERTIFICATE-----
|
3169 |
+
|
3170 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
3171 |
+
=========================================================
|
3172 |
+
-----BEGIN CERTIFICATE-----
|
3173 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
3174 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
3175 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
3176 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
3177 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
3178 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
3179 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
3180 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
3181 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
3182 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
3183 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
3184 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
3185 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
3186 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
3187 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
3188 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
3189 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
3190 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
3191 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
3192 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
3193 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
3194 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
3195 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
3196 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
3197 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
3198 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
3199 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
3200 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
3201 |
+
-----END CERTIFICATE-----
|
3202 |
+
|
3203 |
+
Izenpe.com
|
3204 |
+
==========
|
3205 |
+
-----BEGIN CERTIFICATE-----
|
3206 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
3207 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
3208 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
3209 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
3210 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
3211 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
3212 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
3213 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
3214 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
3215 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
3216 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
3217 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
3218 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
3219 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
3220 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
3221 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
3222 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3223 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
3224 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
3225 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
3226 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
3227 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
3228 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
3229 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
3230 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
3231 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
3232 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
3233 |
+
-----END CERTIFICATE-----
|
3234 |
+
|
3235 |
+
Chambers of Commerce Root - 2008
|
3236 |
+
================================
|
3237 |
+
-----BEGIN CERTIFICATE-----
|
3238 |
+
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
3239 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3240 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3241 |
+
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
3242 |
+
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
3243 |
+
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
3244 |
+
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
3245 |
+
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
3246 |
+
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
3247 |
+
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
3248 |
+
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
3249 |
+
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
3250 |
+
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
3251 |
+
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
3252 |
+
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
3253 |
+
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
3254 |
+
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
3255 |
+
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
3256 |
+
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
3257 |
+
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
3258 |
+
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
3259 |
+
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
3260 |
+
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
3261 |
+
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
3262 |
+
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
3263 |
+
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
3264 |
+
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
3265 |
+
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
3266 |
+
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
3267 |
+
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
3268 |
+
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
3269 |
+
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
3270 |
+
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
3271 |
+
-----END CERTIFICATE-----
|
3272 |
+
|
3273 |
+
Global Chambersign Root - 2008
|
3274 |
+
==============================
|
3275 |
+
-----BEGIN CERTIFICATE-----
|
3276 |
+
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
3277 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3278 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3279 |
+
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
3280 |
+
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
3281 |
+
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
3282 |
+
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
3283 |
+
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
3284 |
+
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
3285 |
+
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
3286 |
+
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
3287 |
+
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
3288 |
+
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
3289 |
+
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
3290 |
+
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
3291 |
+
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
3292 |
+
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
3293 |
+
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
3294 |
+
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
3295 |
+
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
3296 |
+
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
3297 |
+
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
3298 |
+
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
3299 |
+
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
3300 |
+
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
3301 |
+
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
3302 |
+
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
3303 |
+
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
3304 |
+
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
3305 |
+
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
3306 |
+
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
3307 |
+
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
3308 |
+
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
3309 |
+
-----END CERTIFICATE-----
|
3310 |
+
|
3311 |
+
Go Daddy Root Certificate Authority - G2
|
3312 |
+
========================================
|
3313 |
+
-----BEGIN CERTIFICATE-----
|
3314 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3315 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
3316 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
3317 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
3318 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
3319 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
3320 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
3321 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
3322 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
3323 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
3324 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
3325 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
3326 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
3327 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
3328 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
3329 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
3330 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
3331 |
+
-----END CERTIFICATE-----
|
3332 |
+
|
3333 |
+
Starfield Root Certificate Authority - G2
|
3334 |
+
=========================================
|
3335 |
+
-----BEGIN CERTIFICATE-----
|
3336 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3337 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3338 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
3339 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
3340 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
3341 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
3342 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
3343 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
3344 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
3345 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
3346 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
3347 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3348 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
3349 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
3350 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
3351 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
3352 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
3353 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
3354 |
+
-----END CERTIFICATE-----
|
3355 |
+
|
3356 |
+
Starfield Services Root Certificate Authority - G2
|
3357 |
+
==================================================
|
3358 |
+
-----BEGIN CERTIFICATE-----
|
3359 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3360 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3361 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
3362 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
3363 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
3364 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
3365 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3366 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
3367 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
3368 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
3369 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
3370 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
3371 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
3372 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
3373 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
3374 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
3375 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
3376 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
3377 |
+
-----END CERTIFICATE-----
|
3378 |
+
|
3379 |
+
AffirmTrust Commercial
|
3380 |
+
======================
|
3381 |
+
-----BEGIN CERTIFICATE-----
|
3382 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3383 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
3384 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3385 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
3386 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
3387 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
3388 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
3389 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
3390 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
3391 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3392 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
3393 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
3394 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
3395 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
3396 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
3397 |
+
-----END CERTIFICATE-----
|
3398 |
+
|
3399 |
+
AffirmTrust Networking
|
3400 |
+
======================
|
3401 |
+
-----BEGIN CERTIFICATE-----
|
3402 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3403 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
3404 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3405 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
3406 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
3407 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
3408 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
3409 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
3410 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
3411 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3412 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
3413 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
3414 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
3415 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
3416 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
3417 |
+
-----END CERTIFICATE-----
|
3418 |
+
|
3419 |
+
AffirmTrust Premium
|
3420 |
+
===================
|
3421 |
+
-----BEGIN CERTIFICATE-----
|
3422 |
+
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
|
3446 |
+
-----END CERTIFICATE-----
|
3447 |
+
|
3448 |
+
AffirmTrust Premium ECC
|
3449 |
+
=======================
|
3450 |
+
-----BEGIN CERTIFICATE-----
|
3451 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
3452 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
3453 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
3454 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
3455 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
3456 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
3457 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
3458 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
3459 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
3460 |
+
eQ==
|
3461 |
+
-----END CERTIFICATE-----
|
3462 |
+
|
3463 |
+
Certum Trusted Network CA
|
3464 |
+
=========================
|
3465 |
+
-----BEGIN CERTIFICATE-----
|
3466 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
3467 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
3468 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
3469 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
3470 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3471 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
3472 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
3473 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
3474 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
3475 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
3476 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
3477 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
3478 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
3479 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
3480 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
3481 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
3482 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
3483 |
+
-----END CERTIFICATE-----
|
3484 |
+
|
3485 |
+
Certinomis - Autorité Racine
|
3486 |
+
=============================
|
3487 |
+
-----BEGIN CERTIFICATE-----
|
3488 |
+
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
|
3513 |
+
vgt2Fl43N+bYdJeimUV5
|
3514 |
+
-----END CERTIFICATE-----
|
3515 |
+
|
3516 |
+
Root CA Generalitat Valenciana
|
3517 |
+
==============================
|
3518 |
+
-----BEGIN CERTIFICATE-----
|
3519 |
+
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
3520 |
+
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
3521 |
+
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
3522 |
+
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
3523 |
+
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
3524 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
3525 |
+
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
3526 |
+
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
3527 |
+
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
3528 |
+
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
3529 |
+
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
3530 |
+
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
3531 |
+
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
3532 |
+
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
3533 |
+
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
3534 |
+
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
3535 |
+
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
3536 |
+
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
3537 |
+
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
3538 |
+
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
3539 |
+
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
3540 |
+
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
3541 |
+
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
3542 |
+
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
3543 |
+
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
3544 |
+
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
3545 |
+
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
3546 |
+
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
3547 |
+
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
3548 |
+
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
3549 |
+
-----END CERTIFICATE-----
|
3550 |
+
|
3551 |
+
A-Trust-nQual-03
|
3552 |
+
================
|
3553 |
+
-----BEGIN CERTIFICATE-----
|
3554 |
+
MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
|
3555 |
+
Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
|
3556 |
+
a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
|
3557 |
+
dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
|
3558 |
+
RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
|
3559 |
+
ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
|
3560 |
+
c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
|
3561 |
+
zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
|
3562 |
+
yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
|
3563 |
+
SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
|
3564 |
+
iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
|
3565 |
+
cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
|
3566 |
+
eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
|
3567 |
+
ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
|
3568 |
+
sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
|
3569 |
+
JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
|
3570 |
+
mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
|
3571 |
+
ahq97BvIxYSazQ==
|
3572 |
+
-----END CERTIFICATE-----
|
3573 |
+
|
3574 |
+
TWCA Root Certification Authority
|
3575 |
+
=================================
|
3576 |
+
-----BEGIN CERTIFICATE-----
|
3577 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
3578 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
3579 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
3580 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
3581 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3582 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
3583 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
3584 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
3585 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
3586 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
3587 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
3588 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
3589 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
3590 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
3591 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
3592 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
3593 |
+
-----END CERTIFICATE-----
|
3594 |
+
|
3595 |
+
Security Communication RootCA2
|
3596 |
+
==============================
|
3597 |
+
-----BEGIN CERTIFICATE-----
|
3598 |
+
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
3599 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
3600 |
+
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
3601 |
+
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
3602 |
+
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3603 |
+
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
3604 |
+
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
3605 |
+
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
3606 |
+
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
3607 |
+
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
3608 |
+
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
3609 |
+
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
3610 |
+
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
3611 |
+
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
3612 |
+
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
3613 |
+
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
3614 |
+
-----END CERTIFICATE-----
|
3615 |
+
|
3616 |
+
EC-ACC
|
3617 |
+
======
|
3618 |
+
-----BEGIN CERTIFICATE-----
|
3619 |
+
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
3620 |
+
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
3621 |
+
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
3622 |
+
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
3623 |
+
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
3624 |
+
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
3625 |
+
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
3626 |
+
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
3627 |
+
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
3628 |
+
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
3629 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
3630 |
+
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
3631 |
+
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
3632 |
+
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
3633 |
+
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
3634 |
+
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
3635 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
3636 |
+
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
3637 |
+
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
3638 |
+
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
3639 |
+
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
3640 |
+
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
3641 |
+
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
3642 |
+
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
3643 |
+
5EI=
|
3644 |
+
-----END CERTIFICATE-----
|
3645 |
+
|
3646 |
+
Hellenic Academic and Research Institutions RootCA 2011
|
3647 |
+
=======================================================
|
3648 |
+
-----BEGIN CERTIFICATE-----
|
3649 |
+
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
|
3650 |
+
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
|
3651 |
+
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3652 |
+
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
|
3653 |
+
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3654 |
+
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
|
3655 |
+
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3656 |
+
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
|
3657 |
+
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
|
3658 |
+
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
|
3659 |
+
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
|
3660 |
+
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
|
3661 |
+
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
|
3662 |
+
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
|
3663 |
+
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
|
3664 |
+
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
|
3665 |
+
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
|
3666 |
+
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
|
3667 |
+
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
|
3668 |
+
-----END CERTIFICATE-----
|
3669 |
+
|
3670 |
+
Actalis Authentication Root CA
|
3671 |
+
==============================
|
3672 |
+
-----BEGIN CERTIFICATE-----
|
3673 |
+
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
3674 |
+
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
3675 |
+
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
3676 |
+
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
3677 |
+
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
3678 |
+
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
3679 |
+
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
3680 |
+
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
3681 |
+
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
3682 |
+
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
3683 |
+
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
3684 |
+
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
3685 |
+
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
3686 |
+
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
3687 |
+
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
3688 |
+
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
3689 |
+
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
3690 |
+
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
3691 |
+
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
3692 |
+
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
3693 |
+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
3694 |
+
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
3695 |
+
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
3696 |
+
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
3697 |
+
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
3698 |
+
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
3699 |
+
-----END CERTIFICATE-----
|
3700 |
+
|
3701 |
+
Trustis FPS Root CA
|
3702 |
+
===================
|
3703 |
+
-----BEGIN CERTIFICATE-----
|
3704 |
+
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
3705 |
+
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
3706 |
+
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
3707 |
+
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
3708 |
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
3709 |
+
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
3710 |
+
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
3711 |
+
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
3712 |
+
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
3713 |
+
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
3714 |
+
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
3715 |
+
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
3716 |
+
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
3717 |
+
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
3718 |
+
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
3719 |
+
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
3720 |
+
-----END CERTIFICATE-----
|
3721 |
+
|
3722 |
+
StartCom Certification Authority
|
3723 |
+
================================
|
3724 |
+
-----BEGIN CERTIFICATE-----
|
3725 |
+
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
3726 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
3727 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
3728 |
+
NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
3729 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
3730 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
3731 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
3732 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
3733 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
3734 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
3735 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
3736 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
3737 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
3738 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
3739 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
3740 |
+
37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
3741 |
+
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
|
3742 |
+
Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
|
3743 |
+
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
|
3744 |
+
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
|
3745 |
+
bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
|
3746 |
+
aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
|
3747 |
+
aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
|
3748 |
+
L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
|
3749 |
+
cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
|
3750 |
+
fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
|
3751 |
+
N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
|
3752 |
+
Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
|
3753 |
+
tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
|
3754 |
+
e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
|
3755 |
+
2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
|
3756 |
+
HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
3757 |
+
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
|
3758 |
+
D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
|
3759 |
+
-----END CERTIFICATE-----
|
3760 |
+
|
3761 |
+
StartCom Certification Authority G2
|
3762 |
+
===================================
|
3763 |
+
-----BEGIN CERTIFICATE-----
|
3764 |
+
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
|
3788 |
+
obp573PYtlNXLfbQ4ddI
|
3789 |
+
-----END CERTIFICATE-----
|
3790 |
+
|
3791 |
+
Buypass Class 2 Root CA
|
3792 |
+
=======================
|
3793 |
+
-----BEGIN CERTIFICATE-----
|
3794 |
+
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
|
3818 |
+
rJgWVqA=
|
3819 |
+
-----END CERTIFICATE-----
|
3820 |
+
|
3821 |
+
Buypass Class 3 Root CA
|
3822 |
+
=======================
|
3823 |
+
-----BEGIN CERTIFICATE-----
|
3824 |
+
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
|
3848 |
+
Cp/HuZc=
|
3849 |
+
-----END CERTIFICATE-----
|
3850 |
+
|
3851 |
+
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı
|
3852 |
+
======================================================
|
3853 |
+
-----BEGIN CERTIFICATE-----
|
3854 |
+
MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
3855 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
3856 |
+
MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
3857 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
|
3858 |
+
DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
|
3859 |
+
a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
|
3860 |
+
BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
3861 |
+
bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
|
3862 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
|
3863 |
+
YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
|
3864 |
+
KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
|
3865 |
+
KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
|
3866 |
+
rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
|
3867 |
+
AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
|
3868 |
+
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
|
3869 |
+
Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
|
3870 |
+
aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
|
3871 |
+
Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
|
3872 |
+
BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
|
3873 |
+
poRq0Tl9
|
3874 |
+
-----END CERTIFICATE-----
|
3875 |
+
|
3876 |
+
T-TeleSec GlobalRoot Class 3
|
3877 |
+
============================
|
3878 |
+
-----BEGIN CERTIFICATE-----
|
3879 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
3880 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
3881 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
|
3882 |
+
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
3883 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
3884 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
|
3885 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
|
3886 |
+
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
|
3887 |
+
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
|
3888 |
+
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
|
3889 |
+
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
|
3890 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
|
3891 |
+
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
|
3892 |
+
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
|
3893 |
+
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
|
3894 |
+
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
|
3895 |
+
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
|
3896 |
+
-----END CERTIFICATE-----
|
3897 |
+
|
3898 |
+
EE Certification Centre Root CA
|
3899 |
+
===============================
|
3900 |
+
-----BEGIN CERTIFICATE-----
|
3901 |
+
MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3902 |
+
EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
|
3903 |
+
dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
|
3904 |
+
MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
|
3905 |
+
UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
|
3906 |
+
ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
3907 |
+
DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
|
3908 |
+
TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
|
3909 |
+
rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
|
3910 |
+
93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
|
3911 |
+
P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
|
3912 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
|
3913 |
+
MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
|
3914 |
+
BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
|
3915 |
+
xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
|
3916 |
+
lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
|
3917 |
+
uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
|
3918 |
+
3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
|
3919 |
+
dcGWxZ0=
|
3920 |
+
-----END CERTIFICATE-----
|
google/Auth/Abstract.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Abstract class for the Authentication in the API client
|
21 |
+
* @author Chris Chabot <chabotc@google.com>
|
22 |
+
*
|
23 |
+
*/
|
24 |
+
abstract class Google_Auth_Abstract
|
25 |
+
{
|
26 |
+
/**
|
27 |
+
* An utility function that first calls $this->auth->sign($request) and then
|
28 |
+
* executes makeRequest() on that signed request. Used for when a request
|
29 |
+
* should be authenticated
|
30 |
+
* @param Google_Http_Request $request
|
31 |
+
* @return Google_Http_Request $request
|
32 |
+
*/
|
33 |
+
abstract public function authenticatedRequest(Google_Http_Request $request);
|
34 |
+
abstract public function sign(Google_Http_Request $request);
|
35 |
+
}
|
google/Auth/AppIdentity.php
ADDED
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2014 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/*
|
19 |
+
* WARNING - this class depends on the Google App Engine PHP library
|
20 |
+
* which is 5.3 and above only, so if you include this in a PHP 5.2
|
21 |
+
* setup or one without 5.3 things will blow up.
|
22 |
+
*/
|
23 |
+
use google\appengine\api\app_identity\AppIdentityService;
|
24 |
+
|
25 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Abstract.php";
|
26 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Authentication via the Google App Engine App Identity service.
|
30 |
+
*/
|
31 |
+
class Google_Auth_AppIdentity extends Google_Auth_Abstract
|
32 |
+
{
|
33 |
+
const CACHE_PREFIX = "Google_Auth_AppIdentity::";
|
34 |
+
const CACHE_LIFETIME = 1500;
|
35 |
+
private $key = null;
|
36 |
+
private $client;
|
37 |
+
private $token = false;
|
38 |
+
private $tokenScopes = false;
|
39 |
+
|
40 |
+
public function __construct(Google_Client $client, $config = null)
|
41 |
+
{
|
42 |
+
$this->client = $client;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Retrieve an access token for the scopes supplied.
|
47 |
+
*/
|
48 |
+
public function authenticateForScope($scopes)
|
49 |
+
{
|
50 |
+
if ($this->token && $this->tokenScopes == $scopes) {
|
51 |
+
return $this->token;
|
52 |
+
}
|
53 |
+
$memcache = new Memcached();
|
54 |
+
$this->token = $memcache->get(self::CACHE_PREFIX . $scopes);
|
55 |
+
if (!$this->token) {
|
56 |
+
$this->token = AppIdentityService::getAccessToken($scopes);
|
57 |
+
if ($this->token) {
|
58 |
+
$memcache->set(self::CACHE_PREFIX . $scopes, $this->token, self::CACHE_LIFETIME);
|
59 |
+
}
|
60 |
+
}
|
61 |
+
$this->tokenScopes = $scopes;
|
62 |
+
return $this->token;
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Perform an authenticated / signed apiHttpRequest.
|
67 |
+
* This function takes the apiHttpRequest, calls apiAuth->sign on it
|
68 |
+
* (which can modify the request in what ever way fits the auth mechanism)
|
69 |
+
* and then calls apiCurlIO::makeRequest on the signed request
|
70 |
+
*
|
71 |
+
* @param Google_Http_Request $request
|
72 |
+
* @return Google_Http_Request The resulting HTTP response including the
|
73 |
+
* responseHttpCode, responseHeaders and responseBody.
|
74 |
+
*/
|
75 |
+
public function authenticatedRequest(Google_Http_Request $request)
|
76 |
+
{
|
77 |
+
$request = $this->sign($request);
|
78 |
+
return $this->io->makeRequest($request);
|
79 |
+
}
|
80 |
+
|
81 |
+
public function sign(Google_Http_Request $request)
|
82 |
+
{
|
83 |
+
if (!$this->token) {
|
84 |
+
// No token, so nothing to do.
|
85 |
+
return $request;
|
86 |
+
}
|
87 |
+
// Add the OAuth2 header to the request
|
88 |
+
$request->setRequestHeaders(
|
89 |
+
array('Authorization' => 'Bearer ' . $this->token['access_token'])
|
90 |
+
);
|
91 |
+
|
92 |
+
return $request;
|
93 |
+
}
|
94 |
+
}
|
google/Auth/AssertionCredentials.php
ADDED
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2012 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Auth/OAuth2.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Signer/P12.php";
|
20 |
+
require_once APSL_PLUGIN_DIR."google/Utils.php";
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Credentials object used for OAuth 2.0 Signed JWT assertion grants.
|
24 |
+
*
|
25 |
+
* @author Chirag Shah <chirags@google.com>
|
26 |
+
*/
|
27 |
+
class Google_Auth_AssertionCredentials
|
28 |
+
{
|
29 |
+
const MAX_TOKEN_LIFETIME_SECS = 3600;
|
30 |
+
|
31 |
+
public $serviceAccountName;
|
32 |
+
public $scopes;
|
33 |
+
public $privateKey;
|
34 |
+
public $privateKeyPassword;
|
35 |
+
public $assertionType;
|
36 |
+
public $sub;
|
37 |
+
/**
|
38 |
+
* @deprecated
|
39 |
+
* @link http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-06
|
40 |
+
*/
|
41 |
+
public $prn;
|
42 |
+
private $useCache;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param $serviceAccountName
|
46 |
+
* @param $scopes array List of scopes
|
47 |
+
* @param $privateKey
|
48 |
+
* @param string $privateKeyPassword
|
49 |
+
* @param string $assertionType
|
50 |
+
* @param bool|string $sub The email address of the user for which the
|
51 |
+
* application is requesting delegated access.
|
52 |
+
* @param bool useCache Whether to generate a cache key and allow
|
53 |
+
* automatic caching of the generated token.
|
54 |
+
*/
|
55 |
+
public function __construct(
|
56 |
+
$serviceAccountName,
|
57 |
+
$scopes,
|
58 |
+
$privateKey,
|
59 |
+
$privateKeyPassword = 'notasecret',
|
60 |
+
$assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer',
|
61 |
+
$sub = false,
|
62 |
+
$useCache = true
|
63 |
+
) {
|
64 |
+
$this->serviceAccountName = $serviceAccountName;
|
65 |
+
$this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes);
|
66 |
+
$this->privateKey = $privateKey;
|
67 |
+
$this->privateKeyPassword = $privateKeyPassword;
|
68 |
+
$this->assertionType = $assertionType;
|
69 |
+
$this->sub = $sub;
|
70 |
+
$this->prn = $sub;
|
71 |
+
$this->useCache = $useCache;
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Generate a unique key to represent this credential.
|
76 |
+
* @return string
|
77 |
+
*/
|
78 |
+
public function getCacheKey()
|
79 |
+
{
|
80 |
+
if (!$this->useCache) {
|
81 |
+
return false;
|
82 |
+
}
|
83 |
+
$h = $this->sub;
|
84 |
+
$h .= $this->assertionType;
|
85 |
+
$h .= $this->privateKey;
|
86 |
+
$h .= $this->scopes;
|
87 |
+
$h .= $this->serviceAccountName;
|
88 |
+
return md5($h);
|
89 |
+
}
|
90 |
+
|
91 |
+
public function generateAssertion()
|
92 |
+
{
|
93 |
+
$now = time();
|
94 |
+
|
95 |
+
$jwtParams = array(
|
96 |
+
'aud' => Google_Auth_OAuth2::OAUTH2_TOKEN_URI,
|
97 |
+
'scope' => $this->scopes,
|
98 |
+
'iat' => $now,
|
99 |
+
'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS,
|
100 |
+
'iss' => $this->serviceAccountName,
|
101 |
+
);
|
102 |
+
|
103 |
+
if ($this->sub !== false) {
|
104 |
+
$jwtParams['sub'] = $this->sub;
|
105 |
+
} else if ($this->prn !== false) {
|
106 |
+
$jwtParams['prn'] = $this->prn;
|
107 |
+
}
|
108 |
+
|
109 |
+
return $this->makeSignedJwt($jwtParams);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Creates a signed JWT.
|
114 |
+
* @param array $payload
|
115 |
+
* @return string The signed JWT.
|
116 |
+
*/
|
117 |
+
private function makeSignedJwt($payload)
|
118 |
+
{
|
119 |
+
$header = array('typ' => 'JWT', 'alg' => 'RS256');
|
120 |
+
|
121 |
+
$payload = json_encode($payload);
|
122 |
+
// Handle some overzealous escaping in PHP json that seemed to cause some errors
|
123 |
+
// with claimsets.
|
124 |
+
$payload = str_replace('\/', '/', $payload);
|
125 |
+
|
126 |
+
$segments = array(
|
127 |
+
Google_Utils::urlSafeB64Encode(json_encode($header)),
|
128 |
+
Google_Utils::urlSafeB64Encode($payload)
|
129 |
+
);
|
130 |
+
|
131 |
+
$signingInput = implode('.', $segments);
|
132 |
+
$signer = new Google_Signer_P12($this->privateKey, $this->privateKeyPassword);
|
133 |
+
$signature = $signer->sign($signingInput);
|
134 |
+
$segments[] = Google_Utils::urlSafeB64Encode($signature);
|
135 |
+
|
136 |
+
return implode(".", $segments);
|
137 |
+
}
|
138 |
+
}
|
google/Auth/Exception.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Exception.php";
|
19 |
+
|
20 |
+
class Google_Auth_Exception extends Google_Exception
|
21 |
+
{
|
22 |
+
}
|
google/Auth/LoginTicket.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Exception.php";
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class to hold information about an authenticated login.
|
22 |
+
*
|
23 |
+
* @author Brian Eaton <beaton@google.com>
|
24 |
+
*/
|
25 |
+
class Google_Auth_LoginTicket
|
26 |
+
{
|
27 |
+
const USER_ATTR = "sub";
|
28 |
+
|
29 |
+
// Information from id token envelope.
|
30 |
+
private $envelope;
|
31 |
+
|
32 |
+
// Information from id token payload.
|
33 |
+
private $payload;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Creates a user based on the supplied token.
|
37 |
+
*
|
38 |
+
* @param string $envelope Header from a verified authentication token.
|
39 |
+
* @param string $payload Information from a verified authentication token.
|
40 |
+
*/
|
41 |
+
public function __construct($envelope, $payload)
|
42 |
+
{
|
43 |
+
$this->envelope = $envelope;
|
44 |
+
$this->payload = $payload;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Returns the numeric identifier for the user.
|
49 |
+
* @throws Google_Auth_Exception
|
50 |
+
* @return
|
51 |
+
*/
|
52 |
+
public function getUserId()
|
53 |
+
{
|
54 |
+
if (array_key_exists(self::USER_ATTR, $this->payload)) {
|
55 |
+
return $this->payload[self::USER_ATTR];
|
56 |
+
}
|
57 |
+
throw new Google_Auth_Exception("No user_id in token");
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Returns attributes from the login ticket. This can contain
|
62 |
+
* various information about the user session.
|
63 |
+
* @return array
|
64 |
+
*/
|
65 |
+
public function getAttributes()
|
66 |
+
{
|
67 |
+
return array("envelope" => $this->envelope, "payload" => $this->payload);
|
68 |
+
}
|
69 |
+
}
|
google/Auth/OAuth2.php
ADDED
@@ -0,0 +1,595 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2008 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Abstract.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Auth/AssertionCredentials.php";
|
20 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Exception.php";
|
21 |
+
require_once APSL_PLUGIN_DIR."google/Auth/LoginTicket.php";
|
22 |
+
require_once APSL_PLUGIN_DIR."google/Client.php";
|
23 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
24 |
+
require_once APSL_PLUGIN_DIR."google/Utils.php";
|
25 |
+
require_once APSL_PLUGIN_DIR."google/Verifier/Pem.php";
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Authentication class that deals with the OAuth 2 web-server authentication flow
|
29 |
+
*
|
30 |
+
* @author Chris Chabot <chabotc@google.com>
|
31 |
+
* @author Chirag Shah <chirags@google.com>
|
32 |
+
*
|
33 |
+
*/
|
34 |
+
class Google_Auth_OAuth2 extends Google_Auth_Abstract
|
35 |
+
{
|
36 |
+
const OAUTH2_REVOKE_URI = 'https://accounts.google.com/o/oauth2/revoke';
|
37 |
+
const OAUTH2_TOKEN_URI = 'https://accounts.google.com/o/oauth2/token';
|
38 |
+
const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/auth';
|
39 |
+
const CLOCK_SKEW_SECS = 300; // five minutes in seconds
|
40 |
+
const AUTH_TOKEN_LIFETIME_SECS = 300; // five minutes in seconds
|
41 |
+
const MAX_TOKEN_LIFETIME_SECS = 86400; // one day in seconds
|
42 |
+
const OAUTH2_ISSUER = 'accounts.google.com';
|
43 |
+
|
44 |
+
/** @var Google_Auth_AssertionCredentials $assertionCredentials */
|
45 |
+
private $assertionCredentials;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var string The state parameters for CSRF and other forgery protection.
|
49 |
+
*/
|
50 |
+
private $state;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @var array The token bundle.
|
54 |
+
*/
|
55 |
+
private $token = array();
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @var Google_Client the base client
|
59 |
+
*/
|
60 |
+
private $client;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Instantiates the class, but does not initiate the login flow, leaving it
|
64 |
+
* to the discretion of the caller.
|
65 |
+
*/
|
66 |
+
public function __construct(Google_Client $client)
|
67 |
+
{
|
68 |
+
$this->client = $client;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Perform an authenticated / signed apiHttpRequest.
|
73 |
+
* This function takes the apiHttpRequest, calls apiAuth->sign on it
|
74 |
+
* (which can modify the request in what ever way fits the auth mechanism)
|
75 |
+
* and then calls apiCurlIO::makeRequest on the signed request
|
76 |
+
*
|
77 |
+
* @param Google_Http_Request $request
|
78 |
+
* @return Google_Http_Request The resulting HTTP response including the
|
79 |
+
* responseHttpCode, responseHeaders and responseBody.
|
80 |
+
*/
|
81 |
+
public function authenticatedRequest(Google_Http_Request $request)
|
82 |
+
{
|
83 |
+
$request = $this->sign($request);
|
84 |
+
return $this->client->getIo()->makeRequest($request);
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @param string $code
|
89 |
+
* @throws Google_Auth_Exception
|
90 |
+
* @return string
|
91 |
+
*/
|
92 |
+
public function authenticate($code)
|
93 |
+
{
|
94 |
+
if (strlen($code) == 0) {
|
95 |
+
throw new Google_Auth_Exception("Invalid code");
|
96 |
+
}
|
97 |
+
|
98 |
+
// We got here from the redirect from a successful authorization grant,
|
99 |
+
// fetch the access token
|
100 |
+
$request = new Google_Http_Request(
|
101 |
+
self::OAUTH2_TOKEN_URI,
|
102 |
+
'POST',
|
103 |
+
array(),
|
104 |
+
array(
|
105 |
+
'code' => $code,
|
106 |
+
'grant_type' => 'authorization_code',
|
107 |
+
'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'),
|
108 |
+
'client_id' => $this->client->getClassConfig($this, 'client_id'),
|
109 |
+
'client_secret' => $this->client->getClassConfig($this, 'client_secret')
|
110 |
+
)
|
111 |
+
);
|
112 |
+
$request->disableGzip();
|
113 |
+
$response = $this->client->getIo()->makeRequest($request);
|
114 |
+
|
115 |
+
if ($response->getResponseHttpCode() == 200) {
|
116 |
+
$this->setAccessToken($response->getResponseBody());
|
117 |
+
$this->token['created'] = time();
|
118 |
+
return $this->getAccessToken();
|
119 |
+
} else {
|
120 |
+
$decodedResponse = json_decode($response->getResponseBody(), true);
|
121 |
+
if ($decodedResponse != null && $decodedResponse['error']) {
|
122 |
+
$decodedResponse = $decodedResponse['error'];
|
123 |
+
}
|
124 |
+
throw new Google_Auth_Exception(
|
125 |
+
sprintf(
|
126 |
+
"Error fetching OAuth2 access token, message: '%s'",
|
127 |
+
$decodedResponse
|
128 |
+
),
|
129 |
+
$response->getResponseHttpCode()
|
130 |
+
);
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Create a URL to obtain user authorization.
|
136 |
+
* The authorization endpoint allows the user to first
|
137 |
+
* authenticate, and then grant/deny the access request.
|
138 |
+
* @param string $scope The scope is expressed as a list of space-delimited strings.
|
139 |
+
* @return string
|
140 |
+
*/
|
141 |
+
public function createAuthUrl($scope)
|
142 |
+
{
|
143 |
+
$params = array(
|
144 |
+
'response_type' => 'code',
|
145 |
+
'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'),
|
146 |
+
'client_id' => $this->client->getClassConfig($this, 'client_id'),
|
147 |
+
'scope' => $scope,
|
148 |
+
'access_type' => $this->client->getClassConfig($this, 'access_type'),
|
149 |
+
'approval_prompt' => $this->client->getClassConfig($this, 'approval_prompt'),
|
150 |
+
);
|
151 |
+
|
152 |
+
$login_hint = $this->client->getClassConfig($this, 'login_hint');
|
153 |
+
if ($login_hint != '') {
|
154 |
+
$params['login_hint'] = $login_hint;
|
155 |
+
}
|
156 |
+
|
157 |
+
// If the list of scopes contains plus.login, add request_visible_actions
|
158 |
+
// to auth URL.
|
159 |
+
$rva = $this->client->getClassConfig($this, 'request_visible_actions');
|
160 |
+
if (strpos($scope, 'plus.login') && strlen($rva) > 0) {
|
161 |
+
$params['request_visible_actions'] = $rva;
|
162 |
+
}
|
163 |
+
|
164 |
+
if (isset($this->state)) {
|
165 |
+
$params['state'] = $this->state;
|
166 |
+
}
|
167 |
+
|
168 |
+
return self::OAUTH2_AUTH_URL . "?" . http_build_query($params, '', '&');
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* @param string $token
|
173 |
+
* @throws Google_Auth_Exception
|
174 |
+
*/
|
175 |
+
public function setAccessToken($token)
|
176 |
+
{
|
177 |
+
$token = json_decode($token, true);
|
178 |
+
if ($token == null) {
|
179 |
+
throw new Google_Auth_Exception('Could not json decode the token');
|
180 |
+
}
|
181 |
+
if (! isset($token['access_token'])) {
|
182 |
+
throw new Google_Auth_Exception("Invalid token format");
|
183 |
+
}
|
184 |
+
$this->token = $token;
|
185 |
+
}
|
186 |
+
|
187 |
+
public function getAccessToken()
|
188 |
+
{
|
189 |
+
return json_encode($this->token);
|
190 |
+
}
|
191 |
+
|
192 |
+
public function setState($state)
|
193 |
+
{
|
194 |
+
$this->state = $state;
|
195 |
+
}
|
196 |
+
|
197 |
+
public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds)
|
198 |
+
{
|
199 |
+
$this->assertionCredentials = $creds;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Include an accessToken in a given apiHttpRequest.
|
204 |
+
* @param Google_Http_Request $request
|
205 |
+
* @return Google_Http_Request
|
206 |
+
* @throws Google_Auth_Exception
|
207 |
+
*/
|
208 |
+
public function sign(Google_Http_Request $request)
|
209 |
+
{
|
210 |
+
// add the developer key to the request before signing it
|
211 |
+
if ($this->client->getClassConfig($this, 'developer_key')) {
|
212 |
+
$request->setQueryParam('key', $this->client->getClassConfig($this, 'developer_key'));
|
213 |
+
}
|
214 |
+
|
215 |
+
// Cannot sign the request without an OAuth access token.
|
216 |
+
if (null == $this->token && null == $this->assertionCredentials) {
|
217 |
+
return $request;
|
218 |
+
}
|
219 |
+
|
220 |
+
// Check if the token is set to expire in the next 30 seconds
|
221 |
+
// (or has already expired).
|
222 |
+
if ($this->isAccessTokenExpired()) {
|
223 |
+
if ($this->assertionCredentials) {
|
224 |
+
$this->refreshTokenWithAssertion();
|
225 |
+
} else {
|
226 |
+
if (! array_key_exists('refresh_token', $this->token)) {
|
227 |
+
throw new Google_Auth_Exception(
|
228 |
+
"The OAuth 2.0 access token has expired,"
|
229 |
+
." and a refresh token is not available. Refresh tokens"
|
230 |
+
." are not returned for responses that were auto-approved."
|
231 |
+
);
|
232 |
+
}
|
233 |
+
$this->refreshToken($this->token['refresh_token']);
|
234 |
+
}
|
235 |
+
}
|
236 |
+
|
237 |
+
// Add the OAuth2 header to the request
|
238 |
+
$request->setRequestHeaders(
|
239 |
+
array('Authorization' => 'Bearer ' . $this->token['access_token'])
|
240 |
+
);
|
241 |
+
|
242 |
+
return $request;
|
243 |
+
}
|
244 |
+
|
245 |
+
/**
|
246 |
+
* Fetches a fresh access token with the given refresh token.
|
247 |
+
* @param string $refreshToken
|
248 |
+
* @return void
|
249 |
+
*/
|
250 |
+
public function refreshToken($refreshToken)
|
251 |
+
{
|
252 |
+
$this->refreshTokenRequest(
|
253 |
+
array(
|
254 |
+
'client_id' => $this->client->getClassConfig($this, 'client_id'),
|
255 |
+
'client_secret' => $this->client->getClassConfig($this, 'client_secret'),
|
256 |
+
'refresh_token' => $refreshToken,
|
257 |
+
'grant_type' => 'refresh_token'
|
258 |
+
)
|
259 |
+
);
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Fetches a fresh access token with a given assertion token.
|
264 |
+
* @param Google_Auth_AssertionCredentials $assertionCredentials optional.
|
265 |
+
* @return void
|
266 |
+
*/
|
267 |
+
public function refreshTokenWithAssertion($assertionCredentials = null)
|
268 |
+
{
|
269 |
+
if (!$assertionCredentials) {
|
270 |
+
$assertionCredentials = $this->assertionCredentials;
|
271 |
+
}
|
272 |
+
|
273 |
+
$cacheKey = $assertionCredentials->getCacheKey();
|
274 |
+
|
275 |
+
if ($cacheKey) {
|
276 |
+
// We can check whether we have a token available in the
|
277 |
+
// cache. If it is expired, we can retrieve a new one from
|
278 |
+
// the assertion.
|
279 |
+
$token = $this->client->getCache()->get($cacheKey);
|
280 |
+
if ($token) {
|
281 |
+
$this->setAccessToken($token);
|
282 |
+
}
|
283 |
+
if (!$this->isAccessTokenExpired()) {
|
284 |
+
return;
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
$this->refreshTokenRequest(
|
289 |
+
array(
|
290 |
+
'grant_type' => 'assertion',
|
291 |
+
'assertion_type' => $assertionCredentials->assertionType,
|
292 |
+
'assertion' => $assertionCredentials->generateAssertion(),
|
293 |
+
)
|
294 |
+
);
|
295 |
+
|
296 |
+
if ($cacheKey) {
|
297 |
+
// Attempt to cache the token.
|
298 |
+
$this->client->getCache()->set(
|
299 |
+
$cacheKey,
|
300 |
+
$this->getAccessToken()
|
301 |
+
);
|
302 |
+
}
|
303 |
+
}
|
304 |
+
|
305 |
+
private function refreshTokenRequest($params)
|
306 |
+
{
|
307 |
+
$http = new Google_Http_Request(
|
308 |
+
self::OAUTH2_TOKEN_URI,
|
309 |
+
'POST',
|
310 |
+
array(),
|
311 |
+
$params
|
312 |
+
);
|
313 |
+
$http->disableGzip();
|
314 |
+
$request = $this->client->getIo()->makeRequest($http);
|
315 |
+
|
316 |
+
$code = $request->getResponseHttpCode();
|
317 |
+
$body = $request->getResponseBody();
|
318 |
+
if (200 == $code) {
|
319 |
+
$token = json_decode($body, true);
|
320 |
+
if ($token == null) {
|
321 |
+
throw new Google_Auth_Exception("Could not json decode the access token");
|
322 |
+
}
|
323 |
+
|
324 |
+
if (! isset($token['access_token']) || ! isset($token['expires_in'])) {
|
325 |
+
throw new Google_Auth_Exception("Invalid token format");
|
326 |
+
}
|
327 |
+
|
328 |
+
if (isset($token['id_token'])) {
|
329 |
+
$this->token['id_token'] = $token['id_token'];
|
330 |
+
}
|
331 |
+
$this->token['access_token'] = $token['access_token'];
|
332 |
+
$this->token['expires_in'] = $token['expires_in'];
|
333 |
+
$this->token['created'] = time();
|
334 |
+
} else {
|
335 |
+
throw new Google_Auth_Exception("Error refreshing the OAuth2 token, message: '$body'", $code);
|
336 |
+
}
|
337 |
+
}
|
338 |
+
|
339 |
+
/**
|
340 |
+
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
|
341 |
+
* token, if a token isn't provided.
|
342 |
+
* @throws Google_Auth_Exception
|
343 |
+
* @param string|null $token The token (access token or a refresh token) that should be revoked.
|
344 |
+
* @return boolean Returns True if the revocation was successful, otherwise False.
|
345 |
+
*/
|
346 |
+
public function revokeToken($token = null)
|
347 |
+
{
|
348 |
+
if (!$token) {
|
349 |
+
if (!$this->token) {
|
350 |
+
// Not initialized, no token to actually revoke
|
351 |
+
return false;
|
352 |
+
} elseif (array_key_exists('refresh_token', $this->token)) {
|
353 |
+
$token = $this->token['refresh_token'];
|
354 |
+
} else {
|
355 |
+
$token = $this->token['access_token'];
|
356 |
+
}
|
357 |
+
}
|
358 |
+
$request = new Google_Http_Request(
|
359 |
+
self::OAUTH2_REVOKE_URI,
|
360 |
+
'POST',
|
361 |
+
array(),
|
362 |
+
"token=$token"
|
363 |
+
);
|
364 |
+
$request->disableGzip();
|
365 |
+
$response = $this->client->getIo()->makeRequest($request);
|
366 |
+
$code = $response->getResponseHttpCode();
|
367 |
+
if ($code == 200) {
|
368 |
+
$this->token = null;
|
369 |
+
return true;
|
370 |
+
}
|
371 |
+
|
372 |
+
return false;
|
373 |
+
}
|
374 |
+
|
375 |
+
/**
|
376 |
+
* Returns if the access_token is expired.
|
377 |
+
* @return bool Returns True if the access_token is expired.
|
378 |
+
*/
|
379 |
+
public function isAccessTokenExpired()
|
380 |
+
{
|
381 |
+
if (!$this->token || !isset($this->token['created'])) {
|
382 |
+
return true;
|
383 |
+
}
|
384 |
+
|
385 |
+
// If the token is set to expire in the next 30 seconds.
|
386 |
+
$expired = ($this->token['created']
|
387 |
+
+ ($this->token['expires_in'] - 30)) < time();
|
388 |
+
|
389 |
+
return $expired;
|
390 |
+
}
|
391 |
+
|
392 |
+
// Gets federated sign-on certificates to use for verifying identity tokens.
|
393 |
+
// Returns certs as array structure, where keys are key ids, and values
|
394 |
+
// are PEM encoded certificates.
|
395 |
+
private function getFederatedSignOnCerts()
|
396 |
+
{
|
397 |
+
return $this->retrieveCertsFromLocation(
|
398 |
+
$this->client->getClassConfig($this, 'federated_signon_certs_url')
|
399 |
+
);
|
400 |
+
}
|
401 |
+
|
402 |
+
/**
|
403 |
+
* Retrieve and cache a certificates file.
|
404 |
+
* @param $url location
|
405 |
+
* @return array certificates
|
406 |
+
*/
|
407 |
+
public function retrieveCertsFromLocation($url)
|
408 |
+
{
|
409 |
+
// If we're retrieving a local file, just grab it.
|
410 |
+
if ("http" != substr($url, 0, 4)) {
|
411 |
+
$file = file_get_contents($url);
|
412 |
+
if ($file) {
|
413 |
+
return json_decode($file, true);
|
414 |
+
} else {
|
415 |
+
throw new Google_Auth_Exception(
|
416 |
+
"Failed to retrieve verification certificates: '" .
|
417 |
+
$url . "'."
|
418 |
+
);
|
419 |
+
}
|
420 |
+
}
|
421 |
+
|
422 |
+
// This relies on makeRequest caching certificate responses.
|
423 |
+
$request = $this->client->getIo()->makeRequest(
|
424 |
+
new Google_Http_Request(
|
425 |
+
$url
|
426 |
+
)
|
427 |
+
);
|
428 |
+
if ($request->getResponseHttpCode() == 200) {
|
429 |
+
$certs = json_decode($request->getResponseBody(), true);
|
430 |
+
if ($certs) {
|
431 |
+
return $certs;
|
432 |
+
}
|
433 |
+
}
|
434 |
+
throw new Google_Auth_Exception(
|
435 |
+
"Failed to retrieve verification certificates: '" .
|
436 |
+
$request->getResponseBody() . "'.",
|
437 |
+
$request->getResponseHttpCode()
|
438 |
+
);
|
439 |
+
}
|
440 |
+
|
441 |
+
/**
|
442 |
+
* Verifies an id token and returns the authenticated apiLoginTicket.
|
443 |
+
* Throws an exception if the id token is not valid.
|
444 |
+
* The audience parameter can be used to control which id tokens are
|
445 |
+
* accepted. By default, the id token must have been issued to this OAuth2 client.
|
446 |
+
*
|
447 |
+
* @param $id_token
|
448 |
+
* @param $audience
|
449 |
+
* @return Google_Auth_LoginTicket
|
450 |
+
*/
|
451 |
+
public function verifyIdToken($id_token = null, $audience = null)
|
452 |
+
{
|
453 |
+
if (!$id_token) {
|
454 |
+
$id_token = $this->token['id_token'];
|
455 |
+
}
|
456 |
+
$certs = $this->getFederatedSignonCerts();
|
457 |
+
if (!$audience) {
|
458 |
+
$audience = $this->client->getClassConfig($this, 'client_id');
|
459 |
+
}
|
460 |
+
|
461 |
+
return $this->verifySignedJwtWithCerts($id_token, $certs, $audience, self::OAUTH2_ISSUER);
|
462 |
+
}
|
463 |
+
|
464 |
+
/**
|
465 |
+
* Verifies the id token, returns the verified token contents.
|
466 |
+
*
|
467 |
+
* @param $jwt the token
|
468 |
+
* @param $certs array of certificates
|
469 |
+
* @param $required_audience the expected consumer of the token
|
470 |
+
* @param [$issuer] the expected issues, defaults to Google
|
471 |
+
* @param [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS
|
472 |
+
* @return token information if valid, false if not
|
473 |
+
*/
|
474 |
+
public function verifySignedJwtWithCerts(
|
475 |
+
$jwt,
|
476 |
+
$certs,
|
477 |
+
$required_audience,
|
478 |
+
$issuer = null,
|
479 |
+
$max_expiry = null
|
480 |
+
) {
|
481 |
+
if (!$max_expiry) {
|
482 |
+
// Set the maximum time we will accept a token for.
|
483 |
+
$max_expiry = self::MAX_TOKEN_LIFETIME_SECS;
|
484 |
+
}
|
485 |
+
|
486 |
+
$segments = explode(".", $jwt);
|
487 |
+
if (count($segments) != 3) {
|
488 |
+
throw new Google_Auth_Exception("Wrong number of segments in token: $jwt");
|
489 |
+
}
|
490 |
+
$signed = $segments[0] . "." . $segments[1];
|
491 |
+
$signature = Google_Utils::urlSafeB64Decode($segments[2]);
|
492 |
+
|
493 |
+
// Parse envelope.
|
494 |
+
$envelope = json_decode(Google_Utils::urlSafeB64Decode($segments[0]), true);
|
495 |
+
if (!$envelope) {
|
496 |
+
throw new Google_Auth_Exception("Can't parse token envelope: " . $segments[0]);
|
497 |
+
}
|
498 |
+
|
499 |
+
// Parse token
|
500 |
+
$json_body = Google_Utils::urlSafeB64Decode($segments[1]);
|
501 |
+
$payload = json_decode($json_body, true);
|
502 |
+
if (!$payload) {
|
503 |
+
throw new Google_Auth_Exception("Can't parse token payload: " . $segments[1]);
|
504 |
+
}
|
505 |
+
|
506 |
+
// Check signature
|
507 |
+
$verified = false;
|
508 |
+
foreach ($certs as $keyName => $pem) {
|
509 |
+
$public_key = new Google_Verifier_Pem($pem);
|
510 |
+
if ($public_key->verify($signed, $signature)) {
|
511 |
+
$verified = true;
|
512 |
+
break;
|
513 |
+
}
|
514 |
+
}
|
515 |
+
|
516 |
+
if (!$verified) {
|
517 |
+
throw new Google_Auth_Exception("Invalid token signature: $jwt");
|
518 |
+
}
|
519 |
+
|
520 |
+
// Check issued-at timestamp
|
521 |
+
$iat = 0;
|
522 |
+
if (array_key_exists("iat", $payload)) {
|
523 |
+
$iat = $payload["iat"];
|
524 |
+
}
|
525 |
+
if (!$iat) {
|
526 |
+
throw new Google_Auth_Exception("No issue time in token: $json_body");
|
527 |
+
}
|
528 |
+
$earliest = $iat - self::CLOCK_SKEW_SECS;
|
529 |
+
|
530 |
+
// Check expiration timestamp
|
531 |
+
$now = time();
|
532 |
+
$exp = 0;
|
533 |
+
if (array_key_exists("exp", $payload)) {
|
534 |
+
$exp = $payload["exp"];
|
535 |
+
}
|
536 |
+
if (!$exp) {
|
537 |
+
throw new Google_Auth_Exception("No expiration time in token: $json_body");
|
538 |
+
}
|
539 |
+
if ($exp >= $now + $max_expiry) {
|
540 |
+
throw new Google_Auth_Exception(
|
541 |
+
sprintf("Expiration time too far in future: %s", $json_body)
|
542 |
+
);
|
543 |
+
}
|
544 |
+
|
545 |
+
$latest = $exp + self::CLOCK_SKEW_SECS;
|
546 |
+
if ($now < $earliest) {
|
547 |
+
throw new Google_Auth_Exception(
|
548 |
+
sprintf(
|
549 |
+
"Token used too early, %s < %s: %s",
|
550 |
+
$now,
|
551 |
+
$earliest,
|
552 |
+
$json_body
|
553 |
+
)
|
554 |
+
);
|
555 |
+
}
|
556 |
+
if ($now > $latest) {
|
557 |
+
throw new Google_Auth_Exception(
|
558 |
+
sprintf(
|
559 |
+
"Token used too late, %s > %s: %s",
|
560 |
+
$now,
|
561 |
+
$latest,
|
562 |
+
$json_body
|
563 |
+
)
|
564 |
+
);
|
565 |
+
}
|
566 |
+
|
567 |
+
$iss = $payload['iss'];
|
568 |
+
if ($issuer && $iss != $issuer) {
|
569 |
+
throw new Google_Auth_Exception(
|
570 |
+
sprintf(
|
571 |
+
"Invalid issuer, %s != %s: %s",
|
572 |
+
$iss,
|
573 |
+
$issuer,
|
574 |
+
$json_body
|
575 |
+
)
|
576 |
+
);
|
577 |
+
}
|
578 |
+
|
579 |
+
// Check audience
|
580 |
+
$aud = $payload["aud"];
|
581 |
+
if ($aud != $required_audience) {
|
582 |
+
throw new Google_Auth_Exception(
|
583 |
+
sprintf(
|
584 |
+
"Wrong recipient, %s != %s:",
|
585 |
+
$aud,
|
586 |
+
$required_audience,
|
587 |
+
$json_body
|
588 |
+
)
|
589 |
+
);
|
590 |
+
}
|
591 |
+
|
592 |
+
// All good.
|
593 |
+
return new Google_Auth_LoginTicket($envelope, $payload);
|
594 |
+
}
|
595 |
+
}
|
google/Auth/Simple.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Abstract.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Simple API access implementation. Can either be used to make requests
|
23 |
+
* completely unauthenticated, or by using a Simple API Access developer
|
24 |
+
* key.
|
25 |
+
* @author Chris Chabot <chabotc@google.com>
|
26 |
+
* @author Chirag Shah <chirags@google.com>
|
27 |
+
*/
|
28 |
+
class Google_Auth_Simple extends Google_Auth_Abstract
|
29 |
+
{
|
30 |
+
private $key = null;
|
31 |
+
private $client;
|
32 |
+
|
33 |
+
public function __construct(Google_Client $client, $config = null)
|
34 |
+
{
|
35 |
+
$this->client = $client;
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Perform an authenticated / signed apiHttpRequest.
|
40 |
+
* This function takes the apiHttpRequest, calls apiAuth->sign on it
|
41 |
+
* (which can modify the request in what ever way fits the auth mechanism)
|
42 |
+
* and then calls apiCurlIO::makeRequest on the signed request
|
43 |
+
*
|
44 |
+
* @param Google_Http_Request $request
|
45 |
+
* @return Google_Http_Request The resulting HTTP response including the
|
46 |
+
* responseHttpCode, responseHeaders and responseBody.
|
47 |
+
*/
|
48 |
+
public function authenticatedRequest(Google_Http_Request $request)
|
49 |
+
{
|
50 |
+
$request = $this->sign($request);
|
51 |
+
return $this->io->makeRequest($request);
|
52 |
+
}
|
53 |
+
|
54 |
+
public function sign(Google_Http_Request $request)
|
55 |
+
{
|
56 |
+
$key = $this->client->getClassConfig($this, 'developer_key');
|
57 |
+
if ($key) {
|
58 |
+
$request->setQueryParam('key', $key);
|
59 |
+
}
|
60 |
+
return $request;
|
61 |
+
}
|
62 |
+
}
|
google/Cache/Abstract.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2008 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Abstract storage class
|
20 |
+
*
|
21 |
+
* @author Chris Chabot <chabotc@google.com>
|
22 |
+
*/
|
23 |
+
abstract class Google_Cache_Abstract
|
24 |
+
{
|
25 |
+
|
26 |
+
abstract public function __construct(Google_Client $client);
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Retrieves the data for the given key, or false if they
|
30 |
+
* key is unknown or expired
|
31 |
+
*
|
32 |
+
* @param String $key The key who's data to retrieve
|
33 |
+
* @param boolean|int $expiration Expiration time in seconds
|
34 |
+
*
|
35 |
+
*/
|
36 |
+
abstract public function get($key, $expiration = false);
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Store the key => $value set. The $value is serialized
|
40 |
+
* by this function so can be of any type
|
41 |
+
*
|
42 |
+
* @param string $key Key of the data
|
43 |
+
* @param string $value data
|
44 |
+
*/
|
45 |
+
abstract public function set($key, $value);
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Removes the key/data pair for the given $key
|
49 |
+
*
|
50 |
+
* @param String $key
|
51 |
+
*/
|
52 |
+
abstract public function delete($key);
|
53 |
+
}
|
google/Cache/Apc.php
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Abstract.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Exception.php";
|
20 |
+
|
21 |
+
/**
|
22 |
+
* A persistent storage class based on the APC cache, which is not
|
23 |
+
* really very persistent, as soon as you restart your web server
|
24 |
+
* the storage will be wiped, however for debugging and/or speed
|
25 |
+
* it can be useful, and cache is a lot cheaper then storage.
|
26 |
+
*
|
27 |
+
* @author Chris Chabot <chabotc@google.com>
|
28 |
+
*/
|
29 |
+
class Google_Cache_Apc extends Google_Cache_Abstract
|
30 |
+
{
|
31 |
+
public function __construct(Google_Client $client)
|
32 |
+
{
|
33 |
+
if (! function_exists('apc_add') ) {
|
34 |
+
throw new Google_Cache_Exception("Apc functions not available");
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @inheritDoc
|
40 |
+
*/
|
41 |
+
public function get($key, $expiration = false)
|
42 |
+
{
|
43 |
+
$ret = apc_fetch($key);
|
44 |
+
if ($ret === false) {
|
45 |
+
return false;
|
46 |
+
}
|
47 |
+
if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) {
|
48 |
+
$this->delete($key);
|
49 |
+
return false;
|
50 |
+
}
|
51 |
+
return $ret['data'];
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @inheritDoc
|
56 |
+
*/
|
57 |
+
public function set($key, $value)
|
58 |
+
{
|
59 |
+
$rc = apc_store($key, array('time' => time(), 'data' => $value));
|
60 |
+
if ($rc == false) {
|
61 |
+
throw new Google_Cache_Exception("Couldn't store data");
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @inheritDoc
|
67 |
+
* @param String $key
|
68 |
+
*/
|
69 |
+
public function delete($key)
|
70 |
+
{
|
71 |
+
apc_delete($key);
|
72 |
+
}
|
73 |
+
}
|
google/Cache/Exception.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
require_once APSL_PLUGIN_DIR."google/Exception.php";
|
18 |
+
|
19 |
+
class Google_Cache_Exception extends Google_Exception
|
20 |
+
{
|
21 |
+
}
|
google/Cache/File.php
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2008 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Abstract.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Exception.php";
|
20 |
+
|
21 |
+
/*
|
22 |
+
* This class implements a basic on disk storage. While that does
|
23 |
+
* work quite well it's not the most elegant and scalable solution.
|
24 |
+
* It will also get you into a heap of trouble when you try to run
|
25 |
+
* this in a clustered environment.
|
26 |
+
*
|
27 |
+
* @author Chris Chabot <chabotc@google.com>
|
28 |
+
*/
|
29 |
+
class Google_Cache_File extends Google_Cache_Abstract
|
30 |
+
{
|
31 |
+
const MAX_LOCK_RETRIES = 10;
|
32 |
+
private $path;
|
33 |
+
private $fh;
|
34 |
+
|
35 |
+
public function __construct(Google_Client $client)
|
36 |
+
{
|
37 |
+
$this->path = $client->getClassConfig($this, 'directory');
|
38 |
+
}
|
39 |
+
|
40 |
+
public function get($key, $expiration = false)
|
41 |
+
{
|
42 |
+
$storageFile = $this->getCacheFile($key);
|
43 |
+
$data = false;
|
44 |
+
|
45 |
+
if (!file_exists($storageFile)) {
|
46 |
+
return false;
|
47 |
+
}
|
48 |
+
|
49 |
+
if ($expiration) {
|
50 |
+
$mtime = filemtime($storageFile);
|
51 |
+
if ((time() - $mtime) >= $expiration) {
|
52 |
+
$this->delete($key);
|
53 |
+
return false;
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
if ($this->acquireReadLock($storageFile)) {
|
58 |
+
$data = fread($this->fh, filesize($storageFile));
|
59 |
+
$data = unserialize($data);
|
60 |
+
$this->unlock($storageFile);
|
61 |
+
}
|
62 |
+
|
63 |
+
return $data;
|
64 |
+
}
|
65 |
+
|
66 |
+
public function set($key, $value)
|
67 |
+
{
|
68 |
+
$storageFile = $this->getWriteableCacheFile($key);
|
69 |
+
if ($this->acquireWriteLock($storageFile)) {
|
70 |
+
// We serialize the whole request object, since we don't only want the
|
71 |
+
// responseContent but also the postBody used, headers, size, etc.
|
72 |
+
$data = serialize($value);
|
73 |
+
$result = fwrite($this->fh, $data);
|
74 |
+
$this->unlock($storageFile);
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
public function delete($key)
|
79 |
+
{
|
80 |
+
$file = $this->getCacheFile($key);
|
81 |
+
if (file_exists($file) && !unlink($file)) {
|
82 |
+
throw new Google_Cache_Exception("Cache file could not be deleted");
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
private function getWriteableCacheFile($file)
|
87 |
+
{
|
88 |
+
return $this->getCacheFile($file, true);
|
89 |
+
}
|
90 |
+
|
91 |
+
private function getCacheFile($file, $forWrite = false)
|
92 |
+
{
|
93 |
+
return $this->getCacheDir($file, $forWrite) . '/' . md5($file);
|
94 |
+
}
|
95 |
+
|
96 |
+
private function getCacheDir($file, $forWrite)
|
97 |
+
{
|
98 |
+
// use the first 2 characters of the hash as a directory prefix
|
99 |
+
// this should prevent slowdowns due to huge directory listings
|
100 |
+
// and thus give some basic amount of scalability
|
101 |
+
$storageDir = $this->path . '/' . substr(md5($file), 0, 2);
|
102 |
+
if ($forWrite && ! is_dir($storageDir)) {
|
103 |
+
if (! mkdir($storageDir, 0755, true)) {
|
104 |
+
throw new Google_Cache_Exception("Could not create storage directory: $storageDir");
|
105 |
+
}
|
106 |
+
}
|
107 |
+
return $storageDir;
|
108 |
+
}
|
109 |
+
|
110 |
+
private function acquireReadLock($storageFile)
|
111 |
+
{
|
112 |
+
return $this->acquireLock(LOCK_SH, $storageFile);
|
113 |
+
}
|
114 |
+
|
115 |
+
private function acquireWriteLock($storageFile)
|
116 |
+
{
|
117 |
+
$rc = $this->acquireLock(LOCK_EX, $storageFile);
|
118 |
+
if (!$rc) {
|
119 |
+
$this->delete($storageFile);
|
120 |
+
}
|
121 |
+
return $rc;
|
122 |
+
}
|
123 |
+
|
124 |
+
private function acquireLock($type, $storageFile)
|
125 |
+
{
|
126 |
+
$mode = $type == LOCK_EX ? "w" : "r";
|
127 |
+
$this->fh = fopen($storageFile, $mode);
|
128 |
+
$count = 0;
|
129 |
+
while (!flock($this->fh, $type | LOCK_NB)) {
|
130 |
+
// Sleep for 10ms.
|
131 |
+
usleep(10000);
|
132 |
+
if (++$count < self::MAX_LOCK_RETRIES) {
|
133 |
+
return false;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
return true;
|
137 |
+
}
|
138 |
+
|
139 |
+
public function unlock($storageFile)
|
140 |
+
{
|
141 |
+
if ($this->fh) {
|
142 |
+
flock($this->fh, LOCK_UN);
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
google/Cache/Memcache.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2008 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Abstract.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Exception.php";
|
20 |
+
|
21 |
+
/**
|
22 |
+
* A persistent storage class based on the memcache, which is not
|
23 |
+
* really very persistent, as soon as you restart your memcache daemon
|
24 |
+
* the storage will be wiped.
|
25 |
+
*
|
26 |
+
* Will use either the memcache or memcached extensions, preferring
|
27 |
+
* memcached.
|
28 |
+
*
|
29 |
+
* @author Chris Chabot <chabotc@google.com>
|
30 |
+
*/
|
31 |
+
class Google_Cache_Memcache extends Google_Cache_Abstract
|
32 |
+
{
|
33 |
+
private $connection = false;
|
34 |
+
private $mc = false;
|
35 |
+
private $host;
|
36 |
+
private $port;
|
37 |
+
|
38 |
+
public function __construct(Google_Client $client)
|
39 |
+
{
|
40 |
+
if (!function_exists('memcache_connect') && !class_exists("Memcached")) {
|
41 |
+
throw new Google_Cache_Exception("Memcache functions not available");
|
42 |
+
}
|
43 |
+
if ($client->isAppEngine()) {
|
44 |
+
// No credentials needed for GAE.
|
45 |
+
$this->mc = new Memcached();
|
46 |
+
$this->connection = true;
|
47 |
+
} else {
|
48 |
+
$this->host = $client->getClassConfig($this, 'host');
|
49 |
+
$this->port = $client->getClassConfig($this, 'port');
|
50 |
+
if (empty($this->host) || empty($this->port)) {
|
51 |
+
throw new Google_Cache_Exception("You need to supply a valid memcache host and port");
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @inheritDoc
|
58 |
+
*/
|
59 |
+
public function get($key, $expiration = false)
|
60 |
+
{
|
61 |
+
$this->connect();
|
62 |
+
$ret = false;
|
63 |
+
if ($this->mc) {
|
64 |
+
$ret = $this->mc->get($key);
|
65 |
+
} else {
|
66 |
+
$ret = memcache_get($this->connection, $key);
|
67 |
+
}
|
68 |
+
if ($ret === false) {
|
69 |
+
return false;
|
70 |
+
}
|
71 |
+
if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) {
|
72 |
+
$this->delete($key);
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
return $ret['data'];
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* @inheritDoc
|
80 |
+
* @param string $key
|
81 |
+
* @param string $value
|
82 |
+
* @throws Google_Cache_Exception
|
83 |
+
*/
|
84 |
+
public function set($key, $value)
|
85 |
+
{
|
86 |
+
$this->connect();
|
87 |
+
// we store it with the cache_time default expiration so objects will at
|
88 |
+
// least get cleaned eventually.
|
89 |
+
$data = array('time' => time(), 'data' => $value);
|
90 |
+
$rc = false;
|
91 |
+
if ($this->mc) {
|
92 |
+
$rc = $this->mc->set($key, $data);
|
93 |
+
} else {
|
94 |
+
$rc = memcache_set($this->connection, $key, $data, false);
|
95 |
+
}
|
96 |
+
if ($rc == false) {
|
97 |
+
throw new Google_Cache_Exception("Couldn't store data in cache");
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* @inheritDoc
|
103 |
+
* @param String $key
|
104 |
+
*/
|
105 |
+
public function delete($key)
|
106 |
+
{
|
107 |
+
$this->connect();
|
108 |
+
if ($this->mc) {
|
109 |
+
$this->mc->delete($key, 0);
|
110 |
+
} else {
|
111 |
+
memcache_delete($this->connection, $key, 0);
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Lazy initialiser for memcache connection. Uses pconnect for to take
|
117 |
+
* advantage of the persistence pool where possible.
|
118 |
+
*/
|
119 |
+
private function connect()
|
120 |
+
{
|
121 |
+
if ($this->connection) {
|
122 |
+
return;
|
123 |
+
}
|
124 |
+
|
125 |
+
if (class_exists("Memcached")) {
|
126 |
+
$this->mc = new Memcached();
|
127 |
+
$this->mc->addServer($this->host, $this->port);
|
128 |
+
$this->connection = true;
|
129 |
+
} else {
|
130 |
+
$this->connection = memcache_pconnect($this->host, $this->port);
|
131 |
+
}
|
132 |
+
|
133 |
+
if (! $this->connection) {
|
134 |
+
throw new Google_Cache_Exception("Couldn't connect to memcache server");
|
135 |
+
}
|
136 |
+
}
|
137 |
+
}
|
google/Cache/Null.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2014 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Abstract.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Cache/Exception.php";
|
20 |
+
|
21 |
+
/**
|
22 |
+
* A blank storage class, for cases where caching is not
|
23 |
+
* required.
|
24 |
+
*/
|
25 |
+
class Google_Cache_Null extends Google_Cache_Abstract
|
26 |
+
{
|
27 |
+
public function __construct(Google_Client $client)
|
28 |
+
{
|
29 |
+
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @inheritDoc
|
34 |
+
*/
|
35 |
+
public function get($key, $expiration = false)
|
36 |
+
{
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @inheritDoc
|
42 |
+
*/
|
43 |
+
public function set($key, $value)
|
44 |
+
{
|
45 |
+
// Nop.
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @inheritDoc
|
50 |
+
* @param String $key
|
51 |
+
*/
|
52 |
+
public function delete($key)
|
53 |
+
{
|
54 |
+
// Nop.
|
55 |
+
}
|
56 |
+
}
|
google/Client.php
ADDED
@@ -0,0 +1,617 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR.'google/Auth/AssertionCredentials.php';
|
19 |
+
require_once APSL_PLUGIN_DIR.'google/Cache/File.php';
|
20 |
+
require_once APSL_PLUGIN_DIR.'google/Cache/Memcache.php';
|
21 |
+
require_once APSL_PLUGIN_DIR.'google/Config.php';
|
22 |
+
require_once APSL_PLUGIN_DIR.'google/Collection.php';
|
23 |
+
require_once APSL_PLUGIN_DIR.'google/Exception.php';
|
24 |
+
require_once APSL_PLUGIN_DIR.'google/IO/Curl.php';
|
25 |
+
require_once APSL_PLUGIN_DIR.'google/IO/Stream.php';
|
26 |
+
require_once APSL_PLUGIN_DIR.'google/Model.php';
|
27 |
+
require_once APSL_PLUGIN_DIR.'google/Service.php';
|
28 |
+
require_once APSL_PLUGIN_DIR.'google/Service/Resource.php';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* The Google API Client
|
32 |
+
* http://code.google.com/p/google-api-php-client/
|
33 |
+
*
|
34 |
+
* @author Chris Chabot <chabotc@google.com>
|
35 |
+
* @author Chirag Shah <chirags@google.com>
|
36 |
+
*/
|
37 |
+
class Google_Client
|
38 |
+
{
|
39 |
+
const LIBVER = "1.0.5-beta";
|
40 |
+
const USER_AGENT_SUFFIX = "google-api-php-client/";
|
41 |
+
/**
|
42 |
+
* @var Google_Auth_Abstract $auth
|
43 |
+
*/
|
44 |
+
private $auth;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @var Google_IO_Abstract $io
|
48 |
+
*/
|
49 |
+
private $io;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @var Google_Cache_Abstract $cache
|
53 |
+
*/
|
54 |
+
private $cache;
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @var Google_Config $config
|
58 |
+
*/
|
59 |
+
private $config;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @var boolean $deferExecution
|
63 |
+
*/
|
64 |
+
private $deferExecution = false;
|
65 |
+
|
66 |
+
/** @var array $scopes */
|
67 |
+
// Scopes requested by the client
|
68 |
+
protected $requestedScopes = array();
|
69 |
+
|
70 |
+
// definitions of services that are discovered.
|
71 |
+
protected $services = array();
|
72 |
+
|
73 |
+
// Used to track authenticated state, can't discover services after doing authenticate()
|
74 |
+
private $authenticated = false;
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Construct the Google Client.
|
78 |
+
*
|
79 |
+
* @param $config Google_Config or string for the ini file to load
|
80 |
+
*/
|
81 |
+
public function __construct($config = null)
|
82 |
+
{
|
83 |
+
if (! ini_get('date.timezone') &&
|
84 |
+
function_exists('date_default_timezone_set')) {
|
85 |
+
date_default_timezone_set('UTC');
|
86 |
+
}
|
87 |
+
|
88 |
+
if (is_string($config) && strlen($config)) {
|
89 |
+
$config = new Google_Config($config);
|
90 |
+
} else if ( !($config instanceof Google_Config)) {
|
91 |
+
$config = new Google_Config();
|
92 |
+
|
93 |
+
if ($this->isAppEngine()) {
|
94 |
+
// Automatically use Memcache if we're in AppEngine.
|
95 |
+
$config->setCacheClass('Google_Cache_Memcache');
|
96 |
+
}
|
97 |
+
|
98 |
+
if (version_compare(phpversion(), "5.3.4", "<=") || $this->isAppEngine()) {
|
99 |
+
// Automatically disable compress.zlib, as currently unsupported.
|
100 |
+
$config->setClassConfig('Google_Http_Request', 'disable_gzip', true);
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
if ($config->getIoClass() == Google_Config::USE_AUTO_IO_SELECTION) {
|
105 |
+
if (function_exists('curl_version') && function_exists('curl_exec')) {
|
106 |
+
$config->setIoClass("Google_IO_Curl");
|
107 |
+
} else {
|
108 |
+
$config->setIoClass("Google_IO_Stream");
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
$this->config = $config;
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Get a string containing the version of the library.
|
117 |
+
*
|
118 |
+
* @return string
|
119 |
+
*/
|
120 |
+
public function getLibraryVersion()
|
121 |
+
{
|
122 |
+
return self::LIBVER;
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Attempt to exchange a code for an valid authentication token.
|
127 |
+
* Helper wrapped around the OAuth 2.0 implementation.
|
128 |
+
*
|
129 |
+
* @param $code string code from accounts.google.com
|
130 |
+
* @return string token
|
131 |
+
*/
|
132 |
+
public function authenticate($code)
|
133 |
+
{
|
134 |
+
$this->authenticated = true;
|
135 |
+
return $this->getAuth()->authenticate($code);
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Set the auth config from the JSON string provided.
|
140 |
+
* This structure should match the file downloaded from
|
141 |
+
* the "Download JSON" button on in the Google Developer
|
142 |
+
* Console.
|
143 |
+
* @param string $json the configuration json
|
144 |
+
*/
|
145 |
+
public function setAuthConfig($json)
|
146 |
+
{
|
147 |
+
$data = json_decode($json);
|
148 |
+
$key = isset($data->installed) ? 'installed' : 'web';
|
149 |
+
if (!isset($data->$key)) {
|
150 |
+
throw new Google_Exception("Invalid client secret JSON file.");
|
151 |
+
}
|
152 |
+
$this->setClientId($data->$key->client_id);
|
153 |
+
$this->setClientSecret($data->$key->client_secret);
|
154 |
+
if (isset($data->$key->redirect_uris)) {
|
155 |
+
$this->setRedirectUri($data->$key->redirect_uris[0]);
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Set the auth config from the JSON file in the path
|
161 |
+
* provided. This should match the file downloaded from
|
162 |
+
* the "Download JSON" button on in the Google Developer
|
163 |
+
* Console.
|
164 |
+
* @param string $file the file location of the client json
|
165 |
+
*/
|
166 |
+
public function setAuthConfigFile($file)
|
167 |
+
{
|
168 |
+
$this->setAuthConfig(file_get_contents($file));
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* @return array
|
173 |
+
* @visible For Testing
|
174 |
+
*/
|
175 |
+
public function prepareScopes()
|
176 |
+
{
|
177 |
+
if (empty($this->requestedScopes)) {
|
178 |
+
throw new Google_Auth_Exception("No scopes specified");
|
179 |
+
}
|
180 |
+
$scopes = implode(' ', $this->requestedScopes);
|
181 |
+
return $scopes;
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Set the OAuth 2.0 access token using the string that resulted from calling createAuthUrl()
|
186 |
+
* or Google_Client#getAccessToken().
|
187 |
+
* @param string $accessToken JSON encoded string containing in the following format:
|
188 |
+
* {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer",
|
189 |
+
* "expires_in":3600, "id_token":"TOKEN", "created":1320790426}
|
190 |
+
*/
|
191 |
+
public function setAccessToken($accessToken)
|
192 |
+
{
|
193 |
+
if ($accessToken == 'null') {
|
194 |
+
$accessToken = null;
|
195 |
+
}
|
196 |
+
$this->getAuth()->setAccessToken($accessToken);
|
197 |
+
}
|
198 |
+
|
199 |
+
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Set the authenticator object
|
203 |
+
* @param Google_Auth_Abstract $auth
|
204 |
+
*/
|
205 |
+
public function setAuth(Google_Auth_Abstract $auth)
|
206 |
+
{
|
207 |
+
$this->config->setAuthClass(get_class($auth));
|
208 |
+
$this->auth = $auth;
|
209 |
+
}
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Set the IO object
|
213 |
+
* @param Google_Io_Abstract $auth
|
214 |
+
*/
|
215 |
+
public function setIo(Google_Io_Abstract $io)
|
216 |
+
{
|
217 |
+
$this->config->setIoClass(get_class($io));
|
218 |
+
$this->io = $io;
|
219 |
+
}
|
220 |
+
|
221 |
+
/**
|
222 |
+
* Set the Cache object
|
223 |
+
* @param Google_Cache_Abstract $auth
|
224 |
+
*/
|
225 |
+
public function setCache(Google_Cache_Abstract $cache)
|
226 |
+
{
|
227 |
+
$this->config->setCacheClass(get_class($cache));
|
228 |
+
$this->cache = $cache;
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Construct the OAuth 2.0 authorization request URI.
|
233 |
+
* @return string
|
234 |
+
*/
|
235 |
+
public function createAuthUrl()
|
236 |
+
{
|
237 |
+
$scopes = $this->prepareScopes();
|
238 |
+
return $this->getAuth()->createAuthUrl($scopes);
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* Get the OAuth 2.0 access token.
|
243 |
+
* @return string $accessToken JSON encoded string in the following format:
|
244 |
+
* {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer",
|
245 |
+
* "expires_in":3600,"id_token":"TOKEN", "created":1320790426}
|
246 |
+
*/
|
247 |
+
public function getAccessToken()
|
248 |
+
{
|
249 |
+
$token = $this->getAuth()->getAccessToken();
|
250 |
+
// The response is json encoded, so could be the string null.
|
251 |
+
// It is arguable whether this check should be here or lower
|
252 |
+
// in the library.
|
253 |
+
return (null == $token || 'null' == $token || '[]' == $token) ? null : $token;
|
254 |
+
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Returns if the access_token is expired.
|
258 |
+
* @return bool Returns True if the access_token is expired.
|
259 |
+
*/
|
260 |
+
public function isAccessTokenExpired()
|
261 |
+
{
|
262 |
+
return $this->getAuth()->isAccessTokenExpired();
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Set OAuth 2.0 "state" parameter to achieve per-request customization.
|
267 |
+
* @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2
|
268 |
+
* @param string $state
|
269 |
+
*/
|
270 |
+
public function setState($state)
|
271 |
+
{
|
272 |
+
$this->getAuth()->setState($state);
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* @param string $accessType Possible values for access_type include:
|
277 |
+
* {@code "offline"} to request offline access from the user.
|
278 |
+
* {@code "online"} to request online access from the user.
|
279 |
+
*/
|
280 |
+
public function setAccessType($accessType)
|
281 |
+
{
|
282 |
+
$this->config->setAccessType($accessType);
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* @param string $approvalPrompt Possible values for approval_prompt include:
|
287 |
+
* {@code "force"} to force the approval UI to appear. (This is the default value)
|
288 |
+
* {@code "auto"} to request auto-approval when possible.
|
289 |
+
*/
|
290 |
+
public function setApprovalPrompt($approvalPrompt)
|
291 |
+
{
|
292 |
+
$this->config->setApprovalPrompt($approvalPrompt);
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Set the login hint, email address or sub id.
|
297 |
+
* @param string $loginHint
|
298 |
+
*/
|
299 |
+
public function setLoginHint($loginHint)
|
300 |
+
{
|
301 |
+
$this->config->setLoginHint($loginHint);
|
302 |
+
}
|
303 |
+
|
304 |
+
/**
|
305 |
+
* Set the application name, this is included in the User-Agent HTTP header.
|
306 |
+
* @param string $applicationName
|
307 |
+
*/
|
308 |
+
public function setApplicationName($applicationName)
|
309 |
+
{
|
310 |
+
$this->config->setApplicationName($applicationName);
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Set the OAuth 2.0 Client ID.
|
315 |
+
* @param string $clientId
|
316 |
+
*/
|
317 |
+
public function setClientId($clientId)
|
318 |
+
{
|
319 |
+
$this->config->setClientId($clientId);
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Set the OAuth 2.0 Client Secret.
|
324 |
+
* @param string $clientSecret
|
325 |
+
*/
|
326 |
+
public function setClientSecret($clientSecret)
|
327 |
+
{
|
328 |
+
$this->config->setClientSecret($clientSecret);
|
329 |
+
}
|
330 |
+
|
331 |
+
/**
|
332 |
+
* Set the OAuth 2.0 Redirect URI.
|
333 |
+
* @param string $redirectUri
|
334 |
+
*/
|
335 |
+
public function setRedirectUri($redirectUri)
|
336 |
+
{
|
337 |
+
$this->config->setRedirectUri($redirectUri);
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* If 'plus.login' is included in the list of requested scopes, you can use
|
342 |
+
* this method to define types of app activities that your app will write.
|
343 |
+
* You can find a list of available types here:
|
344 |
+
* @link https://developers.google.com/+/api/moment-types
|
345 |
+
*
|
346 |
+
* @param array $requestVisibleActions Array of app activity types
|
347 |
+
*/
|
348 |
+
public function setRequestVisibleActions($requestVisibleActions)
|
349 |
+
{
|
350 |
+
if (is_array($requestVisibleActions)) {
|
351 |
+
$requestVisibleActions = join(" ", $requestVisibleActions);
|
352 |
+
}
|
353 |
+
$this->config->setRequestVisibleActions($requestVisibleActions);
|
354 |
+
}
|
355 |
+
|
356 |
+
/**
|
357 |
+
* Set the developer key to use, these are obtained through the API Console.
|
358 |
+
* @see http://code.google.com/apis/console-help/#generatingdevkeys
|
359 |
+
* @param string $developerKey
|
360 |
+
*/
|
361 |
+
public function setDeveloperKey($developerKey)
|
362 |
+
{
|
363 |
+
$this->config->setDeveloperKey($developerKey);
|
364 |
+
}
|
365 |
+
|
366 |
+
/**
|
367 |
+
* Fetches a fresh OAuth 2.0 access token with the given refresh token.
|
368 |
+
* @param string $refreshToken
|
369 |
+
* @return void
|
370 |
+
*/
|
371 |
+
public function refreshToken($refreshToken)
|
372 |
+
{
|
373 |
+
return $this->getAuth()->refreshToken($refreshToken);
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
|
378 |
+
* token, if a token isn't provided.
|
379 |
+
* @throws Google_Auth_Exception
|
380 |
+
* @param string|null $token The token (access token or a refresh token) that should be revoked.
|
381 |
+
* @return boolean Returns True if the revocation was successful, otherwise False.
|
382 |
+
*/
|
383 |
+
public function revokeToken($token = null)
|
384 |
+
{
|
385 |
+
return $this->getAuth()->revokeToken($token);
|
386 |
+
}
|
387 |
+
|
388 |
+
/**
|
389 |
+
* Verify an id_token. This method will verify the current id_token, if one
|
390 |
+
* isn't provided.
|
391 |
+
* @throws Google_Auth_Exception
|
392 |
+
* @param string|null $token The token (id_token) that should be verified.
|
393 |
+
* @return Google_Auth_LoginTicket Returns an apiLoginTicket if the verification was
|
394 |
+
* successful.
|
395 |
+
*/
|
396 |
+
public function verifyIdToken($token = null)
|
397 |
+
{
|
398 |
+
return $this->getAuth()->verifyIdToken($token);
|
399 |
+
}
|
400 |
+
|
401 |
+
/**
|
402 |
+
* Verify a JWT that was signed with your own certificates.
|
403 |
+
*
|
404 |
+
* @param $jwt the token
|
405 |
+
* @param $certs array of certificates
|
406 |
+
* @param $required_audience the expected consumer of the token
|
407 |
+
* @param [$issuer] the expected issues, defaults to Google
|
408 |
+
* @param [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS
|
409 |
+
* @return token information if valid, false if not
|
410 |
+
*/
|
411 |
+
public function verifySignedJwt($id_token, $cert_location, $audience, $issuer, $max_expiry = null)
|
412 |
+
{
|
413 |
+
$auth = new Google_Auth_OAuth2($this);
|
414 |
+
$certs = $auth->retrieveCertsFromLocation($cert_location);
|
415 |
+
return $auth->verifySignedJwtWithCerts($id_token, $certs, $audience, $issuer, $max_expiry);
|
416 |
+
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* @param Google_Auth_AssertionCredentials $creds
|
420 |
+
* @return void
|
421 |
+
*/
|
422 |
+
public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds)
|
423 |
+
{
|
424 |
+
$this->getAuth()->setAssertionCredentials($creds);
|
425 |
+
}
|
426 |
+
|
427 |
+
/**
|
428 |
+
* Set the scopes to be requested. Must be called before createAuthUrl().
|
429 |
+
* Will remove any previously configured scopes.
|
430 |
+
* @param array $scopes, ie: array('https://www.googleapis.com/auth/plus.login',
|
431 |
+
* 'https://www.googleapis.com/auth/moderator')
|
432 |
+
*/
|
433 |
+
public function setScopes($scopes)
|
434 |
+
{
|
435 |
+
$this->requestedScopes = array();
|
436 |
+
$this->addScope($scopes);
|
437 |
+
}
|
438 |
+
|
439 |
+
/**
|
440 |
+
* This functions adds a scope to be requested as part of the OAuth2.0 flow.
|
441 |
+
* Will append any scopes not previously requested to the scope parameter.
|
442 |
+
* A single string will be treated as a scope to request. An array of strings
|
443 |
+
* will each be appended.
|
444 |
+
* @param $scope_or_scopes string|array e.g. "profile"
|
445 |
+
*/
|
446 |
+
public function addScope($scope_or_scopes)
|
447 |
+
{
|
448 |
+
if (is_string($scope_or_scopes) && !in_array($scope_or_scopes, $this->requestedScopes)) {
|
449 |
+
$this->requestedScopes[] = $scope_or_scopes;
|
450 |
+
} else if (is_array($scope_or_scopes)) {
|
451 |
+
foreach ($scope_or_scopes as $scope) {
|
452 |
+
$this->addScope($scope);
|
453 |
+
}
|
454 |
+
}
|
455 |
+
}
|
456 |
+
|
457 |
+
/**
|
458 |
+
* Returns the list of scopes requested by the client
|
459 |
+
* @return array the list of scopes
|
460 |
+
*
|
461 |
+
*/
|
462 |
+
public function getScopes()
|
463 |
+
{
|
464 |
+
return $this->requestedScopes;
|
465 |
+
}
|
466 |
+
|
467 |
+
/**
|
468 |
+
* Declare whether batch calls should be used. This may increase throughput
|
469 |
+
* by making multiple requests in one connection.
|
470 |
+
*
|
471 |
+
* @param boolean $useBatch True if the batch support should
|
472 |
+
* be enabled. Defaults to False.
|
473 |
+
*/
|
474 |
+
public function setUseBatch($useBatch)
|
475 |
+
{
|
476 |
+
// This is actually an alias for setDefer.
|
477 |
+
$this->setDefer($useBatch);
|
478 |
+
}
|
479 |
+
|
480 |
+
/**
|
481 |
+
* Declare whether making API calls should make the call immediately, or
|
482 |
+
* return a request which can be called with ->execute();
|
483 |
+
*
|
484 |
+
* @param boolean $defer True if calls should not be executed right away.
|
485 |
+
*/
|
486 |
+
public function setDefer($defer)
|
487 |
+
{
|
488 |
+
$this->deferExecution = $defer;
|
489 |
+
}
|
490 |
+
|
491 |
+
/**
|
492 |
+
* Helper method to execute deferred HTTP requests.
|
493 |
+
*
|
494 |
+
* @returns object of the type of the expected class or array.
|
495 |
+
*/
|
496 |
+
public function execute($request)
|
497 |
+
{
|
498 |
+
if ($request instanceof Google_Http_Request) {
|
499 |
+
$request->setUserAgent(
|
500 |
+
$this->getApplicationName()
|
501 |
+
. " " . self::USER_AGENT_SUFFIX
|
502 |
+
. $this->getLibraryVersion()
|
503 |
+
);
|
504 |
+
if (!$this->getClassConfig("Google_Http_Request", "disable_gzip")) {
|
505 |
+
$request->enableGzip();
|
506 |
+
}
|
507 |
+
$request->maybeMoveParametersToBody();
|
508 |
+
return Google_Http_REST::execute($this, $request);
|
509 |
+
} else if ($request instanceof Google_Http_Batch) {
|
510 |
+
return $request->execute();
|
511 |
+
} else {
|
512 |
+
throw new Google_Exception("Do not know how to execute this type of object.");
|
513 |
+
}
|
514 |
+
}
|
515 |
+
|
516 |
+
/**
|
517 |
+
* Whether or not to return raw requests
|
518 |
+
* @return boolean
|
519 |
+
*/
|
520 |
+
public function shouldDefer()
|
521 |
+
{
|
522 |
+
return $this->deferExecution;
|
523 |
+
}
|
524 |
+
|
525 |
+
/**
|
526 |
+
* @return Google_Auth_Abstract Authentication implementation
|
527 |
+
*/
|
528 |
+
public function getAuth()
|
529 |
+
{
|
530 |
+
if (!isset($this->auth)) {
|
531 |
+
$class = $this->config->getAuthClass();
|
532 |
+
$this->auth = new $class($this);
|
533 |
+
}
|
534 |
+
return $this->auth;
|
535 |
+
}
|
536 |
+
|
537 |
+
/**
|
538 |
+
* @return Google_IO_Abstract IO implementation
|
539 |
+
*/
|
540 |
+
public function getIo()
|
541 |
+
{
|
542 |
+
if (!isset($this->io)) {
|
543 |
+
$class = $this->config->getIoClass();
|
544 |
+
$this->io = new $class($this);
|
545 |
+
}
|
546 |
+
return $this->io;
|
547 |
+
}
|
548 |
+
|
549 |
+
/**
|
550 |
+
* @return Google_Cache_Abstract Cache implementation
|
551 |
+
*/
|
552 |
+
public function getCache()
|
553 |
+
{
|
554 |
+
if (!isset($this->cache)) {
|
555 |
+
$class = $this->config->getCacheClass();
|
556 |
+
$this->cache = new $class($this);
|
557 |
+
}
|
558 |
+
return $this->cache;
|
559 |
+
}
|
560 |
+
|
561 |
+
/**
|
562 |
+
* Retrieve custom configuration for a specific class.
|
563 |
+
* @param $class string|object - class or instance of class to retrieve
|
564 |
+
* @param $key string optional - key to retrieve
|
565 |
+
*/
|
566 |
+
public function getClassConfig($class, $key = null)
|
567 |
+
{
|
568 |
+
if (!is_string($class)) {
|
569 |
+
$class = get_class($class);
|
570 |
+
}
|
571 |
+
return $this->config->getClassConfig($class, $key);
|
572 |
+
}
|
573 |
+
|
574 |
+
/**
|
575 |
+
* Set configuration specific to a given class.
|
576 |
+
* $config->setClassConfig('Google_Cache_File',
|
577 |
+
* array('directory' => '/tmp/cache'));
|
578 |
+
* @param $class The class name for the configuration
|
579 |
+
* @param $config string key or an array of configuration values
|
580 |
+
* @param $value optional - if $config is a key, the value
|
581 |
+
*
|
582 |
+
*/
|
583 |
+
public function setClassConfig($class, $config, $value = null)
|
584 |
+
{
|
585 |
+
if (!is_string($class)) {
|
586 |
+
$class = get_class($class);
|
587 |
+
}
|
588 |
+
return $this->config->setClassConfig($class, $config, $value);
|
589 |
+
|
590 |
+
}
|
591 |
+
|
592 |
+
/**
|
593 |
+
* @return string the base URL to use for calls to the APIs
|
594 |
+
*/
|
595 |
+
public function getBasePath()
|
596 |
+
{
|
597 |
+
return $this->config->getBasePath();
|
598 |
+
}
|
599 |
+
|
600 |
+
/**
|
601 |
+
* @return string the name of the application
|
602 |
+
*/
|
603 |
+
public function getApplicationName()
|
604 |
+
{
|
605 |
+
return $this->config->getApplicationName();
|
606 |
+
}
|
607 |
+
|
608 |
+
/**
|
609 |
+
* Are we running in Google AppEngine?
|
610 |
+
* return bool
|
611 |
+
*/
|
612 |
+
public function isAppEngine()
|
613 |
+
{
|
614 |
+
return (isset($_SERVER['SERVER_SOFTWARE']) &&
|
615 |
+
strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== false);
|
616 |
+
}
|
617 |
+
}
|
google/Collection.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once APSL_PLUGIN_DIR."google/Model.php";
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Extension to the regular Google_Model that automatically
|
7 |
+
* exposes the items array for iteration, so you can just
|
8 |
+
* iterate over the object rather than a reference inside.
|
9 |
+
*/
|
10 |
+
class Google_Collection extends Google_Model implements Iterator, Countable
|
11 |
+
{
|
12 |
+
protected $collection_key = 'items';
|
13 |
+
|
14 |
+
public function rewind()
|
15 |
+
{
|
16 |
+
if (isset($this->modelData[$this->collection_key])
|
17 |
+
&& is_array($this->modelData[$this->collection_key])) {
|
18 |
+
reset($this->modelData[$this->collection_key]);
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
public function current()
|
23 |
+
{
|
24 |
+
$this->coerceType($this->key());
|
25 |
+
if (is_array($this->modelData[$this->collection_key])) {
|
26 |
+
return current($this->modelData[$this->collection_key]);
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
public function key()
|
31 |
+
{
|
32 |
+
if (isset($this->modelData[$this->collection_key])
|
33 |
+
&& is_array($this->modelData[$this->collection_key])) {
|
34 |
+
return key($this->modelData[$this->collection_key]);
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
public function next()
|
39 |
+
{
|
40 |
+
return next($this->modelData[$this->collection_key]);
|
41 |
+
}
|
42 |
+
|
43 |
+
public function valid()
|
44 |
+
{
|
45 |
+
$key = $this->key();
|
46 |
+
return $key !== null && $key !== false;
|
47 |
+
}
|
48 |
+
|
49 |
+
public function count()
|
50 |
+
{
|
51 |
+
return count($this->modelData[$this->collection_key]);
|
52 |
+
}
|
53 |
+
|
54 |
+
public function offsetExists ($offset)
|
55 |
+
{
|
56 |
+
if (!is_numeric($offset)) {
|
57 |
+
return parent::offsetExists($offset);
|
58 |
+
}
|
59 |
+
return isset($this->modelData[$this->collection_key][$offset]);
|
60 |
+
}
|
61 |
+
|
62 |
+
public function offsetGet($offset)
|
63 |
+
{
|
64 |
+
if (!is_numeric($offset)) {
|
65 |
+
return parent::offsetGet($offset);
|
66 |
+
}
|
67 |
+
$this->coerceType($offset);
|
68 |
+
return $this->modelData[$this->collection_key][$offset];
|
69 |
+
}
|
70 |
+
|
71 |
+
public function offsetSet($offset, $value)
|
72 |
+
{
|
73 |
+
if (!is_numeric($offset)) {
|
74 |
+
return parent::offsetSet($offset, $value);
|
75 |
+
}
|
76 |
+
$this->modelData[$this->collection_key][$offset] = $value;
|
77 |
+
}
|
78 |
+
|
79 |
+
public function offsetUnset($offset)
|
80 |
+
{
|
81 |
+
if (!is_numeric($offset)) {
|
82 |
+
return parent::offsetUnset($offset);
|
83 |
+
}
|
84 |
+
unset($this->modelData[$this->collection_key][$offset]);
|
85 |
+
}
|
86 |
+
|
87 |
+
private function coerceType($offset)
|
88 |
+
{
|
89 |
+
$typeKey = $this->keyType($this->collection_key);
|
90 |
+
if (isset($this->$typeKey) && !is_object($this->modelData[$this->collection_key][$offset])) {
|
91 |
+
$type = $this->$typeKey;
|
92 |
+
$this->modelData[$this->collection_key][$offset] =
|
93 |
+
new $type($this->modelData[$this->collection_key][$offset]);
|
94 |
+
}
|
95 |
+
}
|
96 |
+
}
|
google/Config.php
ADDED
@@ -0,0 +1,325 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* A class to contain the library configuration for the Google API client.
|
20 |
+
*/
|
21 |
+
class Google_Config
|
22 |
+
{
|
23 |
+
const GZIP_DISABLED = true;
|
24 |
+
const GZIP_ENABLED = false;
|
25 |
+
const GZIP_UPLOADS_ENABLED = true;
|
26 |
+
const GZIP_UPLOADS_DISABLED = false;
|
27 |
+
const USE_AUTO_IO_SELECTION = "auto";
|
28 |
+
private $configuration;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Create a new Google_Config. Can accept an ini file location with the
|
32 |
+
* local configuration. For example:
|
33 |
+
* application_name: "My App";
|
34 |
+
*
|
35 |
+
* @param [$ini_file_location] - optional - The location of the ini file to load
|
36 |
+
*/
|
37 |
+
public function __construct($ini_file_location = null)
|
38 |
+
{
|
39 |
+
$this->configuration = array(
|
40 |
+
// The application_name is included in the User-Agent HTTP header.
|
41 |
+
'application_name' => '',
|
42 |
+
|
43 |
+
// Which Authentication, Storage and HTTP IO classes to use.
|
44 |
+
'auth_class' => 'Google_Auth_OAuth2',
|
45 |
+
'io_class' => self::USE_AUTO_IO_SELECTION,
|
46 |
+
'cache_class' => 'Google_Cache_File',
|
47 |
+
|
48 |
+
// Don't change these unless you're working against a special development
|
49 |
+
// or testing environment.
|
50 |
+
'base_path' => 'https://www.googleapis.com',
|
51 |
+
|
52 |
+
// Definition of class specific values, like file paths and so on.
|
53 |
+
'classes' => array(
|
54 |
+
'Google_IO_Abstract' => array(
|
55 |
+
'request_timeout_seconds' => 100,
|
56 |
+
),
|
57 |
+
'Google_Http_Request' => array(
|
58 |
+
// Disable the use of gzip on calls if set to true. Defaults to false.
|
59 |
+
'disable_gzip' => self::GZIP_ENABLED,
|
60 |
+
|
61 |
+
// We default gzip to disabled on uploads even if gzip is otherwise
|
62 |
+
// enabled, due to some issues seen with small packet sizes for uploads.
|
63 |
+
// Please test with this option before enabling gzip for uploads in
|
64 |
+
// a production environment.
|
65 |
+
'enable_gzip_for_uploads' => self::GZIP_UPLOADS_DISABLED,
|
66 |
+
),
|
67 |
+
// If you want to pass in OAuth 2.0 settings, they will need to be
|
68 |
+
// structured like this.
|
69 |
+
'Google_Auth_OAuth2' => array(
|
70 |
+
// Keys for OAuth 2.0 access, see the API console at
|
71 |
+
// https://developers.google.com/console
|
72 |
+
'client_id' => '',
|
73 |
+
'client_secret' => '',
|
74 |
+
'redirect_uri' => '',
|
75 |
+
|
76 |
+
// Simple API access key, also from the API console. Ensure you get
|
77 |
+
// a Server key, and not a Browser key.
|
78 |
+
'developer_key' => '',
|
79 |
+
|
80 |
+
// Other parameters.
|
81 |
+
'access_type' => 'online',
|
82 |
+
'approval_prompt' => 'auto',
|
83 |
+
'login_hint' => '',
|
84 |
+
'request_visible_actions' => '',
|
85 |
+
'federated_signon_certs_url' =>
|
86 |
+
'https://www.googleapis.com/oauth2/v1/certs',
|
87 |
+
),
|
88 |
+
// Set a default directory for the file cache.
|
89 |
+
'Google_Cache_File' => array(
|
90 |
+
'directory' => sys_get_temp_dir() . '/Google_Client'
|
91 |
+
)
|
92 |
+
),
|
93 |
+
|
94 |
+
// Definition of service specific values like scopes, oauth token URLs,
|
95 |
+
// etc. Example:
|
96 |
+
'services' => array(
|
97 |
+
),
|
98 |
+
);
|
99 |
+
if ($ini_file_location) {
|
100 |
+
$ini = parse_ini_file($ini_file_location, true);
|
101 |
+
if (is_array($ini) && count($ini)) {
|
102 |
+
$this->configuration = array_merge($this->configuration, $ini);
|
103 |
+
}
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Set configuration specific to a given class.
|
109 |
+
* $config->setClassConfig('Google_Cache_File',
|
110 |
+
* array('directory' => '/tmp/cache'));
|
111 |
+
* @param $class The class name for the configuration
|
112 |
+
* @param $config string key or an array of configuration values
|
113 |
+
* @param $value optional - if $config is a key, the value
|
114 |
+
*/
|
115 |
+
public function setClassConfig($class, $config, $value = null)
|
116 |
+
{
|
117 |
+
if (!is_array($config)) {
|
118 |
+
if (!isset($this->configuration['classes'][$class])) {
|
119 |
+
$this->configuration['classes'][$class] = array();
|
120 |
+
}
|
121 |
+
$this->configuration['classes'][$class][$config] = $value;
|
122 |
+
} else {
|
123 |
+
$this->configuration['classes'][$class] = $config;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
public function getClassConfig($class, $key = null)
|
128 |
+
{
|
129 |
+
if (!isset($this->configuration['classes'][$class])) {
|
130 |
+
return null;
|
131 |
+
}
|
132 |
+
if ($key === null) {
|
133 |
+
return $this->configuration['classes'][$class];
|
134 |
+
} else {
|
135 |
+
return $this->configuration['classes'][$class][$key];
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Return the configured cache class.
|
141 |
+
* @return string
|
142 |
+
*/
|
143 |
+
public function getCacheClass()
|
144 |
+
{
|
145 |
+
return $this->configuration['cache_class'];
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Return the configured Auth class.
|
150 |
+
* @return string
|
151 |
+
*/
|
152 |
+
public function getAuthClass()
|
153 |
+
{
|
154 |
+
return $this->configuration['auth_class'];
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Set the auth class.
|
159 |
+
*
|
160 |
+
* @param $class the class name to set
|
161 |
+
*/
|
162 |
+
public function setAuthClass($class)
|
163 |
+
{
|
164 |
+
$prev = $this->configuration['auth_class'];
|
165 |
+
if (!isset($this->configuration['classes'][$class]) &&
|
166 |
+
isset($this->configuration['classes'][$prev])) {
|
167 |
+
$this->configuration['classes'][$class] =
|
168 |
+
$this->configuration['classes'][$prev];
|
169 |
+
}
|
170 |
+
$this->configuration['auth_class'] = $class;
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Set the IO class.
|
175 |
+
*
|
176 |
+
* @param $class the class name to set
|
177 |
+
*/
|
178 |
+
public function setIoClass($class)
|
179 |
+
{
|
180 |
+
$prev = $this->configuration['io_class'];
|
181 |
+
if (!isset($this->configuration['classes'][$class]) &&
|
182 |
+
isset($this->configuration['classes'][$prev])) {
|
183 |
+
$this->configuration['classes'][$class] =
|
184 |
+
$this->configuration['classes'][$prev];
|
185 |
+
}
|
186 |
+
$this->configuration['io_class'] = $class;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Set the cache class.
|
191 |
+
*
|
192 |
+
* @param $class the class name to set
|
193 |
+
*/
|
194 |
+
public function setCacheClass($class)
|
195 |
+
{
|
196 |
+
$prev = $this->configuration['cache_class'];
|
197 |
+
if (!isset($this->configuration['classes'][$class]) &&
|
198 |
+
isset($this->configuration['classes'][$prev])) {
|
199 |
+
$this->configuration['classes'][$class] =
|
200 |
+
$this->configuration['classes'][$prev];
|
201 |
+
}
|
202 |
+
$this->configuration['cache_class'] = $class;
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Return the configured IO class.
|
207 |
+
* @return string
|
208 |
+
*/
|
209 |
+
public function getIoClass()
|
210 |
+
{
|
211 |
+
return $this->configuration['io_class'];
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Set the application name, this is included in the User-Agent HTTP header.
|
216 |
+
* @param string $name
|
217 |
+
*/
|
218 |
+
public function setApplicationName($name)
|
219 |
+
{
|
220 |
+
$this->configuration['application_name'] = $name;
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* @return string the name of the application
|
225 |
+
*/
|
226 |
+
public function getApplicationName()
|
227 |
+
{
|
228 |
+
return $this->configuration['application_name'];
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Set the client ID for the auth class.
|
233 |
+
* @param $key string - the API console client ID
|
234 |
+
*/
|
235 |
+
public function setClientId($clientId)
|
236 |
+
{
|
237 |
+
$this->setAuthConfig('client_id', $clientId);
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* Set the client secret for the auth class.
|
242 |
+
* @param $key string - the API console client secret
|
243 |
+
*/
|
244 |
+
public function setClientSecret($secret)
|
245 |
+
{
|
246 |
+
$this->setAuthConfig('client_secret', $secret);
|
247 |
+
}
|
248 |
+
|
249 |
+
/**
|
250 |
+
* Set the redirect uri for the auth class. Note that if using the
|
251 |
+
* Javascript based sign in flow, this should be the string 'postmessage'.
|
252 |
+
* @param $key string - the URI that users should be redirected to
|
253 |
+
*/
|
254 |
+
public function setRedirectUri($uri)
|
255 |
+
{
|
256 |
+
$this->setAuthConfig('redirect_uri', $uri);
|
257 |
+
}
|
258 |
+
|
259 |
+
/**
|
260 |
+
* Set the app activities for the auth class.
|
261 |
+
* @param $rva string a space separated list of app activity types
|
262 |
+
*/
|
263 |
+
public function setRequestVisibleActions($rva)
|
264 |
+
{
|
265 |
+
$this->setAuthConfig('request_visible_actions', $rva);
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Set the the access type requested (offline or online.)
|
270 |
+
* @param $access string - the access type
|
271 |
+
*/
|
272 |
+
public function setAccessType($access)
|
273 |
+
{
|
274 |
+
$this->setAuthConfig('access_type', $access);
|
275 |
+
}
|
276 |
+
|
277 |
+
/**
|
278 |
+
* Set when to show the approval prompt (auto or force)
|
279 |
+
* @param $approval string - the approval request
|
280 |
+
*/
|
281 |
+
public function setApprovalPrompt($approval)
|
282 |
+
{
|
283 |
+
$this->setAuthConfig('approval_prompt', $approval);
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* Set the login hint (email address or sub identifier)
|
288 |
+
* @param $hint string
|
289 |
+
*/
|
290 |
+
public function setLoginHint($hint)
|
291 |
+
{
|
292 |
+
$this->setAuthConfig('login_hint', $hint);
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Set the developer key for the auth class. Note that this is separate value
|
297 |
+
* from the client ID - if it looks like a URL, its a client ID!
|
298 |
+
* @param $key string - the API console developer key
|
299 |
+
*/
|
300 |
+
public function setDeveloperKey($key)
|
301 |
+
{
|
302 |
+
$this->setAuthConfig('developer_key', $key);
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* @return string the base URL to use for API calls
|
307 |
+
*/
|
308 |
+
public function getBasePath()
|
309 |
+
{
|
310 |
+
return $this->configuration['base_path'];
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Set the auth configuration for the current auth class.
|
315 |
+
* @param $key - the key to set
|
316 |
+
* @param $value - the parameter value
|
317 |
+
*/
|
318 |
+
private function setAuthConfig($key, $value)
|
319 |
+
{
|
320 |
+
if (!isset($this->configuration['classes'][$this->getAuthClass()])) {
|
321 |
+
$this->configuration['classes'][$this->getAuthClass()] = array();
|
322 |
+
}
|
323 |
+
$this->configuration['classes'][$this->getAuthClass()][$key] = $value;
|
324 |
+
}
|
325 |
+
}
|
google/Exception.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
class Google_Exception extends Exception
|
19 |
+
{
|
20 |
+
}
|
google/Http/Batch.php
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2012 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Client.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
20 |
+
require_once APSL_PLUGIN_DIR."google/Http/REST.php";
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @author Chirag Shah <chirags@google.com>
|
24 |
+
*/
|
25 |
+
class Google_Http_Batch
|
26 |
+
{
|
27 |
+
/** @var string Multipart Boundary. */
|
28 |
+
private $boundary;
|
29 |
+
|
30 |
+
/** @var array service requests to be executed. */
|
31 |
+
private $requests = array();
|
32 |
+
|
33 |
+
/** @var Google_Client */
|
34 |
+
private $client;
|
35 |
+
|
36 |
+
private $expected_classes = array();
|
37 |
+
|
38 |
+
private $base_path;
|
39 |
+
|
40 |
+
public function __construct(Google_Client $client, $boundary = false)
|
41 |
+
{
|
42 |
+
$this->client = $client;
|
43 |
+
$this->base_path = $this->client->getBasePath();
|
44 |
+
$this->expected_classes = array();
|
45 |
+
$boundary = (false == $boundary) ? mt_rand() : $boundary;
|
46 |
+
$this->boundary = str_replace('"', '', $boundary);
|
47 |
+
}
|
48 |
+
|
49 |
+
public function add(Google_Http_Request $request, $key = false)
|
50 |
+
{
|
51 |
+
if (false == $key) {
|
52 |
+
$key = mt_rand();
|
53 |
+
}
|
54 |
+
|
55 |
+
$this->requests[$key] = $request;
|
56 |
+
}
|
57 |
+
|
58 |
+
public function execute()
|
59 |
+
{
|
60 |
+
$body = '';
|
61 |
+
|
62 |
+
/** @var Google_Http_Request $req */
|
63 |
+
foreach ($this->requests as $key => $req) {
|
64 |
+
$body .= "--{$this->boundary}\n";
|
65 |
+
$body .= $req->toBatchString($key) . "\n";
|
66 |
+
$this->expected_classes["response-" . $key] = $req->getExpectedClass();
|
67 |
+
}
|
68 |
+
|
69 |
+
$body = rtrim($body);
|
70 |
+
$body .= "\n--{$this->boundary}--";
|
71 |
+
|
72 |
+
$url = $this->base_path . '/batch';
|
73 |
+
$httpRequest = new Google_Http_Request($url, 'POST');
|
74 |
+
$httpRequest->setRequestHeaders(
|
75 |
+
array('Content-Type' => 'multipart/mixed; boundary=' . $this->boundary)
|
76 |
+
);
|
77 |
+
|
78 |
+
$httpRequest->setPostBody($body);
|
79 |
+
$response = $this->client->getIo()->makeRequest($httpRequest);
|
80 |
+
|
81 |
+
return $this->parseResponse($response);
|
82 |
+
}
|
83 |
+
|
84 |
+
public function parseResponse(Google_Http_Request $response)
|
85 |
+
{
|
86 |
+
$contentType = $response->getResponseHeader('content-type');
|
87 |
+
$contentType = explode(';', $contentType);
|
88 |
+
$boundary = false;
|
89 |
+
foreach ($contentType as $part) {
|
90 |
+
$part = (explode('=', $part, 2));
|
91 |
+
if (isset($part[0]) && 'boundary' == trim($part[0])) {
|
92 |
+
$boundary = $part[1];
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
$body = $response->getResponseBody();
|
97 |
+
if ($body) {
|
98 |
+
$body = str_replace("--$boundary--", "--$boundary", $body);
|
99 |
+
$parts = explode("--$boundary", $body);
|
100 |
+
$responses = array();
|
101 |
+
|
102 |
+
foreach ($parts as $part) {
|
103 |
+
$part = trim($part);
|
104 |
+
if (!empty($part)) {
|
105 |
+
list($metaHeaders, $part) = explode("\r\n\r\n", $part, 2);
|
106 |
+
$metaHeaders = $this->client->getIo()->getHttpResponseHeaders($metaHeaders);
|
107 |
+
|
108 |
+
$status = substr($part, 0, strpos($part, "\n"));
|
109 |
+
$status = explode(" ", $status);
|
110 |
+
$status = $status[1];
|
111 |
+
|
112 |
+
list($partHeaders, $partBody) = $this->client->getIo()->ParseHttpResponse($part, false);
|
113 |
+
$response = new Google_Http_Request("");
|
114 |
+
$response->setResponseHttpCode($status);
|
115 |
+
$response->setResponseHeaders($partHeaders);
|
116 |
+
$response->setResponseBody($partBody);
|
117 |
+
|
118 |
+
// Need content id.
|
119 |
+
$key = $metaHeaders['content-id'];
|
120 |
+
|
121 |
+
if (isset($this->expected_classes[$key]) &&
|
122 |
+
strlen($this->expected_classes[$key]) > 0) {
|
123 |
+
$class = $this->expected_classes[$key];
|
124 |
+
$response->setExpectedClass($class);
|
125 |
+
}
|
126 |
+
|
127 |
+
try {
|
128 |
+
$response = Google_Http_REST::decodeHttpResponse($response);
|
129 |
+
$responses[$key] = $response;
|
130 |
+
} catch (Google_Service_Exception $e) {
|
131 |
+
// Store the exception as the response, so succesful responses
|
132 |
+
// can be processed.
|
133 |
+
$responses[$key] = $e;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
return $responses;
|
139 |
+
}
|
140 |
+
|
141 |
+
return null;
|
142 |
+
}
|
143 |
+
}
|
google/Http/CacheParser.php
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2012 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Implement the caching directives specified in rfc2616. This
|
22 |
+
* implementation is guided by the guidance offered in rfc2616-sec13.
|
23 |
+
* @author Chirag Shah <chirags@google.com>
|
24 |
+
*/
|
25 |
+
class Google_Http_CacheParser
|
26 |
+
{
|
27 |
+
public static $CACHEABLE_HTTP_METHODS = array('GET', 'HEAD');
|
28 |
+
public static $CACHEABLE_STATUS_CODES = array('200', '203', '300', '301');
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Check if an HTTP request can be cached by a private local cache.
|
32 |
+
*
|
33 |
+
* @static
|
34 |
+
* @param Google_Http_Request $resp
|
35 |
+
* @return bool True if the request is cacheable.
|
36 |
+
* False if the request is uncacheable.
|
37 |
+
*/
|
38 |
+
public static function isRequestCacheable(Google_Http_Request $resp)
|
39 |
+
{
|
40 |
+
$method = $resp->getRequestMethod();
|
41 |
+
if (! in_array($method, self::$CACHEABLE_HTTP_METHODS)) {
|
42 |
+
return false;
|
43 |
+
}
|
44 |
+
|
45 |
+
// Don't cache authorized requests/responses.
|
46 |
+
// [rfc2616-14.8] When a shared cache receives a request containing an
|
47 |
+
// Authorization field, it MUST NOT return the corresponding response
|
48 |
+
// as a reply to any other request...
|
49 |
+
if ($resp->getRequestHeader("authorization")) {
|
50 |
+
return false;
|
51 |
+
}
|
52 |
+
|
53 |
+
return true;
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Check if an HTTP response can be cached by a private local cache.
|
58 |
+
*
|
59 |
+
* @static
|
60 |
+
* @param Google_Http_Request $resp
|
61 |
+
* @return bool True if the response is cacheable.
|
62 |
+
* False if the response is un-cacheable.
|
63 |
+
*/
|
64 |
+
public static function isResponseCacheable(Google_Http_Request $resp)
|
65 |
+
{
|
66 |
+
// First, check if the HTTP request was cacheable before inspecting the
|
67 |
+
// HTTP response.
|
68 |
+
if (false == self::isRequestCacheable($resp)) {
|
69 |
+
return false;
|
70 |
+
}
|
71 |
+
|
72 |
+
$code = $resp->getResponseHttpCode();
|
73 |
+
if (! in_array($code, self::$CACHEABLE_STATUS_CODES)) {
|
74 |
+
return false;
|
75 |
+
}
|
76 |
+
|
77 |
+
// The resource is uncacheable if the resource is already expired and
|
78 |
+
// the resource doesn't have an ETag for revalidation.
|
79 |
+
$etag = $resp->getResponseHeader("etag");
|
80 |
+
if (self::isExpired($resp) && $etag == false) {
|
81 |
+
return false;
|
82 |
+
}
|
83 |
+
|
84 |
+
// [rfc2616-14.9.2] If [no-store is] sent in a response, a cache MUST NOT
|
85 |
+
// store any part of either this response or the request that elicited it.
|
86 |
+
$cacheControl = $resp->getParsedCacheControl();
|
87 |
+
if (isset($cacheControl['no-store'])) {
|
88 |
+
return false;
|
89 |
+
}
|
90 |
+
|
91 |
+
// Pragma: no-cache is an http request directive, but is occasionally
|
92 |
+
// used as a response header incorrectly.
|
93 |
+
$pragma = $resp->getResponseHeader('pragma');
|
94 |
+
if ($pragma == 'no-cache' || strpos($pragma, 'no-cache') !== false) {
|
95 |
+
return false;
|
96 |
+
}
|
97 |
+
|
98 |
+
// [rfc2616-14.44] Vary: * is extremely difficult to cache. "It implies that
|
99 |
+
// a cache cannot determine from the request headers of a subsequent request
|
100 |
+
// whether this response is the appropriate representation."
|
101 |
+
// Given this, we deem responses with the Vary header as uncacheable.
|
102 |
+
$vary = $resp->getResponseHeader('vary');
|
103 |
+
if ($vary) {
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
|
107 |
+
return true;
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* @static
|
112 |
+
* @param Google_Http_Request $resp
|
113 |
+
* @return bool True if the HTTP response is considered to be expired.
|
114 |
+
* False if it is considered to be fresh.
|
115 |
+
*/
|
116 |
+
public static function isExpired(Google_Http_Request $resp)
|
117 |
+
{
|
118 |
+
// HTTP/1.1 clients and caches MUST treat other invalid date formats,
|
119 |
+
// especially including the value “0”, as in the past.
|
120 |
+
$parsedExpires = false;
|
121 |
+
$responseHeaders = $resp->getResponseHeaders();
|
122 |
+
|
123 |
+
if (isset($responseHeaders['expires'])) {
|
124 |
+
$rawExpires = $responseHeaders['expires'];
|
125 |
+
// Check for a malformed expires header first.
|
126 |
+
if (empty($rawExpires) || (is_numeric($rawExpires) && $rawExpires <= 0)) {
|
127 |
+
return true;
|
128 |
+
}
|
129 |
+
|
130 |
+
// See if we can parse the expires header.
|
131 |
+
$parsedExpires = strtotime($rawExpires);
|
132 |
+
if (false == $parsedExpires || $parsedExpires <= 0) {
|
133 |
+
return true;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
// Calculate the freshness of an http response.
|
138 |
+
$freshnessLifetime = false;
|
139 |
+
$cacheControl = $resp->getParsedCacheControl();
|
140 |
+
if (isset($cacheControl['max-age'])) {
|
141 |
+
$freshnessLifetime = $cacheControl['max-age'];
|
142 |
+
}
|
143 |
+
|
144 |
+
$rawDate = $resp->getResponseHeader('date');
|
145 |
+
$parsedDate = strtotime($rawDate);
|
146 |
+
|
147 |
+
if (empty($rawDate) || false == $parsedDate) {
|
148 |
+
// We can't default this to now, as that means future cache reads
|
149 |
+
// will always pass with the logic below, so we will require a
|
150 |
+
// date be injected if not supplied.
|
151 |
+
throw new Google_Exception("All cacheable requests must have creation dates.");
|
152 |
+
}
|
153 |
+
|
154 |
+
if (false == $freshnessLifetime && isset($responseHeaders['expires'])) {
|
155 |
+
$freshnessLifetime = $parsedExpires - $parsedDate;
|
156 |
+
}
|
157 |
+
|
158 |
+
if (false == $freshnessLifetime) {
|
159 |
+
return true;
|
160 |
+
}
|
161 |
+
|
162 |
+
// Calculate the age of an http response.
|
163 |
+
$age = max(0, time() - $parsedDate);
|
164 |
+
if (isset($responseHeaders['age'])) {
|
165 |
+
$age = max($age, strtotime($responseHeaders['age']));
|
166 |
+
}
|
167 |
+
|
168 |
+
return $freshnessLifetime <= $age;
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Determine if a cache entry should be revalidated with by the origin.
|
173 |
+
*
|
174 |
+
* @param Google_Http_Request $response
|
175 |
+
* @return bool True if the entry is expired, else return false.
|
176 |
+
*/
|
177 |
+
public static function mustRevalidate(Google_Http_Request $response)
|
178 |
+
{
|
179 |
+
// [13.3] When a cache has a stale entry that it would like to use as a
|
180 |
+
// response to a client's request, it first has to check with the origin
|
181 |
+
// server to see if its cached entry is still usable.
|
182 |
+
return self::isExpired($response);
|
183 |
+
}
|
184 |
+
}
|
google/Http/MediaFileUpload.php
ADDED
@@ -0,0 +1,292 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2012 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Client.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Exception.php";
|
20 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
21 |
+
require_once APSL_PLUGIN_DIR."google/Http/REST.php";
|
22 |
+
require_once APSL_PLUGIN_DIR."google/Utils.php";
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @author Chirag Shah <chirags@google.com>
|
26 |
+
*
|
27 |
+
*/
|
28 |
+
class Google_Http_MediaFileUpload
|
29 |
+
{
|
30 |
+
const UPLOAD_MEDIA_TYPE = 'media';
|
31 |
+
const UPLOAD_MULTIPART_TYPE = 'multipart';
|
32 |
+
const UPLOAD_RESUMABLE_TYPE = 'resumable';
|
33 |
+
|
34 |
+
/** @var string $mimeType */
|
35 |
+
private $mimeType;
|
36 |
+
|
37 |
+
/** @var string $data */
|
38 |
+
private $data;
|
39 |
+
|
40 |
+
/** @var bool $resumable */
|
41 |
+
private $resumable;
|
42 |
+
|
43 |
+
/** @var int $chunkSize */
|
44 |
+
private $chunkSize;
|
45 |
+
|
46 |
+
/** @var int $size */
|
47 |
+
private $size;
|
48 |
+
|
49 |
+
/** @var string $resumeUri */
|
50 |
+
private $resumeUri;
|
51 |
+
|
52 |
+
/** @var int $progress */
|
53 |
+
private $progress;
|
54 |
+
|
55 |
+
/** @var Google_Client */
|
56 |
+
private $client;
|
57 |
+
|
58 |
+
/** @var Google_Http_Request */
|
59 |
+
private $request;
|
60 |
+
|
61 |
+
/** @var string */
|
62 |
+
private $boundary;
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Result code from last HTTP call
|
66 |
+
* @var int
|
67 |
+
*/
|
68 |
+
private $httpResultCode;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @param $mimeType string
|
72 |
+
* @param $data string The bytes you want to upload.
|
73 |
+
* @param $resumable bool
|
74 |
+
* @param bool $chunkSize File will be uploaded in chunks of this many bytes.
|
75 |
+
* only used if resumable=True
|
76 |
+
*/
|
77 |
+
public function __construct(
|
78 |
+
Google_Client $client,
|
79 |
+
Google_Http_Request $request,
|
80 |
+
$mimeType,
|
81 |
+
$data,
|
82 |
+
$resumable = false,
|
83 |
+
$chunkSize = false,
|
84 |
+
$boundary = false
|
85 |
+
) {
|
86 |
+
$this->client = $client;
|
87 |
+
$this->request = $request;
|
88 |
+
$this->mimeType = $mimeType;
|
89 |
+
$this->data = $data;
|
90 |
+
$this->size = strlen($this->data);
|
91 |
+
$this->resumable = $resumable;
|
92 |
+
if (!$chunkSize) {
|
93 |
+
$chunkSize = 256 * 1024;
|
94 |
+
}
|
95 |
+
$this->chunkSize = $chunkSize;
|
96 |
+
$this->progress = 0;
|
97 |
+
$this->boundary = $boundary;
|
98 |
+
|
99 |
+
// Process Media Request
|
100 |
+
$this->process();
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Set the size of the file that is being uploaded.
|
105 |
+
* @param $size - int file size in bytes
|
106 |
+
*/
|
107 |
+
public function setFileSize($size)
|
108 |
+
{
|
109 |
+
$this->size = $size;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Return the progress on the upload
|
114 |
+
* @return int progress in bytes uploaded.
|
115 |
+
*/
|
116 |
+
public function getProgress()
|
117 |
+
{
|
118 |
+
return $this->progress;
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Return the HTTP result code from the last call made.
|
123 |
+
* @return int code
|
124 |
+
*/
|
125 |
+
public function getHttpResultCode()
|
126 |
+
{
|
127 |
+
return $this->httpResultCode;
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Send the next part of the file to upload.
|
132 |
+
* @param [$chunk] the next set of bytes to send. If false will used $data passed
|
133 |
+
* at construct time.
|
134 |
+
*/
|
135 |
+
public function nextChunk($chunk = false)
|
136 |
+
{
|
137 |
+
if (false == $this->resumeUri) {
|
138 |
+
$this->resumeUri = $this->getResumeUri();
|
139 |
+
}
|
140 |
+
|
141 |
+
if (false == $chunk) {
|
142 |
+
$chunk = substr($this->data, $this->progress, $this->chunkSize);
|
143 |
+
}
|
144 |
+
|
145 |
+
$lastBytePos = $this->progress + strlen($chunk) - 1;
|
146 |
+
$headers = array(
|
147 |
+
'content-range' => "bytes $this->progress-$lastBytePos/$this->size",
|
148 |
+
'content-type' => $this->request->getRequestHeader('content-type'),
|
149 |
+
'content-length' => $this->chunkSize,
|
150 |
+
'expect' => '',
|
151 |
+
);
|
152 |
+
|
153 |
+
$httpRequest = new Google_Http_Request(
|
154 |
+
$this->resumeUri,
|
155 |
+
'PUT',
|
156 |
+
$headers,
|
157 |
+
$chunk
|
158 |
+
);
|
159 |
+
|
160 |
+
if ($this->client->getClassConfig("Google_Http_Request", "enable_gzip_for_uploads")) {
|
161 |
+
$httpRequest->enableGzip();
|
162 |
+
} else {
|
163 |
+
$httpRequest->disableGzip();
|
164 |
+
}
|
165 |
+
|
166 |
+
$response = $this->client->getIo()->makeRequest($httpRequest);
|
167 |
+
$response->setExpectedClass($this->request->getExpectedClass());
|
168 |
+
$code = $response->getResponseHttpCode();
|
169 |
+
$this->httpResultCode = $code;
|
170 |
+
|
171 |
+
if (308 == $code) {
|
172 |
+
// Track the amount uploaded.
|
173 |
+
$range = explode('-', $response->getResponseHeader('range'));
|
174 |
+
$this->progress = $range[1] + 1;
|
175 |
+
|
176 |
+
// Allow for changing upload URLs.
|
177 |
+
$location = $response->getResponseHeader('location');
|
178 |
+
if ($location) {
|
179 |
+
$this->resumeUri = $location;
|
180 |
+
}
|
181 |
+
|
182 |
+
// No problems, but upload not complete.
|
183 |
+
return false;
|
184 |
+
} else {
|
185 |
+
return Google_Http_REST::decodeHttpResponse($response);
|
186 |
+
}
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* @param $meta
|
191 |
+
* @param $params
|
192 |
+
* @return array|bool
|
193 |
+
* @visible for testing
|
194 |
+
*/
|
195 |
+
private function process()
|
196 |
+
{
|
197 |
+
$postBody = false;
|
198 |
+
$contentType = false;
|
199 |
+
|
200 |
+
$meta = $this->request->getPostBody();
|
201 |
+
$meta = is_string($meta) ? json_decode($meta, true) : $meta;
|
202 |
+
|
203 |
+
$uploadType = $this->getUploadType($meta);
|
204 |
+
$this->request->setQueryParam('uploadType', $uploadType);
|
205 |
+
$this->transformToUploadUrl();
|
206 |
+
$mimeType = $this->mimeType ?
|
207 |
+
$this->mimeType :
|
208 |
+
$this->request->getRequestHeader('content-type');
|
209 |
+
|
210 |
+
if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) {
|
211 |
+
$contentType = $mimeType;
|
212 |
+
$postBody = is_string($meta) ? $meta : json_encode($meta);
|
213 |
+
} else if (self::UPLOAD_MEDIA_TYPE == $uploadType) {
|
214 |
+
$contentType = $mimeType;
|
215 |
+
$postBody = $this->data;
|
216 |
+
} else if (self::UPLOAD_MULTIPART_TYPE == $uploadType) {
|
217 |
+
// This is a multipart/related upload.
|
218 |
+
$boundary = $this->boundary ? $this->boundary : mt_rand();
|
219 |
+
$boundary = str_replace('"', '', $boundary);
|
220 |
+
$contentType = 'multipart/related; boundary=' . $boundary;
|
221 |
+
$related = "--$boundary\r\n";
|
222 |
+
$related .= "Content-Type: application/json; charset=UTF-8\r\n";
|
223 |
+
$related .= "\r\n" . json_encode($meta) . "\r\n";
|
224 |
+
$related .= "--$boundary\r\n";
|
225 |
+
$related .= "Content-Type: $mimeType\r\n";
|
226 |
+
$related .= "Content-Transfer-Encoding: base64\r\n";
|
227 |
+
$related .= "\r\n" . base64_encode($this->data) . "\r\n";
|
228 |
+
$related .= "--$boundary--";
|
229 |
+
$postBody = $related;
|
230 |
+
}
|
231 |
+
|
232 |
+
$this->request->setPostBody($postBody);
|
233 |
+
|
234 |
+
if (isset($contentType) && $contentType) {
|
235 |
+
$contentTypeHeader['content-type'] = $contentType;
|
236 |
+
$this->request->setRequestHeaders($contentTypeHeader);
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
private function transformToUploadUrl()
|
241 |
+
{
|
242 |
+
$base = $this->request->getBaseComponent();
|
243 |
+
$this->request->setBaseComponent($base . '/upload');
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Valid upload types:
|
248 |
+
* - resumable (UPLOAD_RESUMABLE_TYPE)
|
249 |
+
* - media (UPLOAD_MEDIA_TYPE)
|
250 |
+
* - multipart (UPLOAD_MULTIPART_TYPE)
|
251 |
+
* @param $meta
|
252 |
+
* @return string
|
253 |
+
* @visible for testing
|
254 |
+
*/
|
255 |
+
public function getUploadType($meta)
|
256 |
+
{
|
257 |
+
if ($this->resumable) {
|
258 |
+
return self::UPLOAD_RESUMABLE_TYPE;
|
259 |
+
}
|
260 |
+
|
261 |
+
if (false == $meta && $this->data) {
|
262 |
+
return self::UPLOAD_MEDIA_TYPE;
|
263 |
+
}
|
264 |
+
|
265 |
+
return self::UPLOAD_MULTIPART_TYPE;
|
266 |
+
}
|
267 |
+
|
268 |
+
private function getResumeUri()
|
269 |
+
{
|
270 |
+
$result = null;
|
271 |
+
$body = $this->request->getPostBody();
|
272 |
+
if ($body) {
|
273 |
+
$headers = array(
|
274 |
+
'content-type' => 'application/json; charset=UTF-8',
|
275 |
+
'content-length' => Google_Utils::getStrLen($body),
|
276 |
+
'x-upload-content-type' => $this->mimeType,
|
277 |
+
'x-upload-content-length' => $this->size,
|
278 |
+
'expect' => '',
|
279 |
+
);
|
280 |
+
$this->request->setRequestHeaders($headers);
|
281 |
+
}
|
282 |
+
|
283 |
+
$response = $this->client->getIo()->makeRequest($this->request);
|
284 |
+
$location = $response->getResponseHeader('location');
|
285 |
+
$code = $response->getResponseHttpCode();
|
286 |
+
|
287 |
+
if (200 == $code && true == $location) {
|
288 |
+
return $location;
|
289 |
+
}
|
290 |
+
throw new Google_Exception("Failed to start the resumable upload");
|
291 |
+
}
|
292 |
+
}
|
google/Http/REST.php
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Client.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
20 |
+
require_once APSL_PLUGIN_DIR."google/Service/Exception.php";
|
21 |
+
require_once APSL_PLUGIN_DIR."google/Utils/URITemplate.php";
|
22 |
+
|
23 |
+
/**
|
24 |
+
* This class implements the RESTful transport of apiServiceRequest()'s
|
25 |
+
*
|
26 |
+
* @author Chris Chabot <chabotc@google.com>
|
27 |
+
* @author Chirag Shah <chirags@google.com>
|
28 |
+
*/
|
29 |
+
class Google_Http_REST
|
30 |
+
{
|
31 |
+
/**
|
32 |
+
* Executes a Google_Http_Request
|
33 |
+
*
|
34 |
+
* @param Google_Client $client
|
35 |
+
* @param Google_Http_Request $req
|
36 |
+
* @return array decoded result
|
37 |
+
* @throws Google_Service_Exception on server side error (ie: not authenticated,
|
38 |
+
* invalid or malformed post body, invalid url)
|
39 |
+
*/
|
40 |
+
public static function execute(Google_Client $client, Google_Http_Request $req)
|
41 |
+
{
|
42 |
+
$httpRequest = $client->getIo()->makeRequest($req);
|
43 |
+
$httpRequest->setExpectedClass($req->getExpectedClass());
|
44 |
+
return self::decodeHttpResponse($httpRequest);
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Decode an HTTP Response.
|
49 |
+
* @static
|
50 |
+
* @throws Google_Service_Exception
|
51 |
+
* @param Google_Http_Request $response The http response to be decoded.
|
52 |
+
* @return mixed|null
|
53 |
+
*/
|
54 |
+
public static function decodeHttpResponse($response)
|
55 |
+
{
|
56 |
+
$code = $response->getResponseHttpCode();
|
57 |
+
$body = $response->getResponseBody();
|
58 |
+
$decoded = null;
|
59 |
+
|
60 |
+
if ((intVal($code)) >= 300) {
|
61 |
+
$decoded = json_decode($body, true);
|
62 |
+
$err = 'Error calling ' . $response->getRequestMethod() . ' ' . $response->getUrl();
|
63 |
+
if (isset($decoded['error']) &&
|
64 |
+
isset($decoded['error']['message']) &&
|
65 |
+
isset($decoded['error']['code'])) {
|
66 |
+
// if we're getting a json encoded error definition, use that instead of the raw response
|
67 |
+
// body for improved readability
|
68 |
+
$err .= ": ({$decoded['error']['code']}) {$decoded['error']['message']}";
|
69 |
+
} else {
|
70 |
+
$err .= ": ($code) $body";
|
71 |
+
}
|
72 |
+
|
73 |
+
$errors = null;
|
74 |
+
// Specific check for APIs which don't return error details, such as Blogger.
|
75 |
+
if (isset($decoded['error']) && isset($decoded['error']['errors'])) {
|
76 |
+
$errors = $decoded['error']['errors'];
|
77 |
+
}
|
78 |
+
|
79 |
+
throw new Google_Service_Exception($err, $code, null, $errors);
|
80 |
+
}
|
81 |
+
|
82 |
+
// Only attempt to decode the response, if the response code wasn't (204) 'no content'
|
83 |
+
if ($code != '204') {
|
84 |
+
$decoded = json_decode($body, true);
|
85 |
+
if ($decoded === null || $decoded === "") {
|
86 |
+
throw new Google_Service_Exception("Invalid json in service response: $body");
|
87 |
+
}
|
88 |
+
|
89 |
+
if ($response->getExpectedClass()) {
|
90 |
+
$class = $response->getExpectedClass();
|
91 |
+
$decoded = new $class($decoded);
|
92 |
+
}
|
93 |
+
}
|
94 |
+
return $decoded;
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Parse/expand request parameters and create a fully qualified
|
99 |
+
* request uri.
|
100 |
+
* @static
|
101 |
+
* @param string $servicePath
|
102 |
+
* @param string $restPath
|
103 |
+
* @param array $params
|
104 |
+
* @return string $requestUrl
|
105 |
+
*/
|
106 |
+
public static function createRequestUri($servicePath, $restPath, $params)
|
107 |
+
{
|
108 |
+
$requestUrl = $servicePath . $restPath;
|
109 |
+
$uriTemplateVars = array();
|
110 |
+
$queryVars = array();
|
111 |
+
foreach ($params as $paramName => $paramSpec) {
|
112 |
+
if ($paramSpec['type'] == 'boolean') {
|
113 |
+
$paramSpec['value'] = ($paramSpec['value']) ? 'true' : 'false';
|
114 |
+
}
|
115 |
+
if ($paramSpec['location'] == 'path') {
|
116 |
+
$uriTemplateVars[$paramName] = $paramSpec['value'];
|
117 |
+
} else if ($paramSpec['location'] == 'query') {
|
118 |
+
if (isset($paramSpec['repeated']) && is_array($paramSpec['value'])) {
|
119 |
+
foreach ($paramSpec['value'] as $value) {
|
120 |
+
$queryVars[] = $paramName . '=' . rawurlencode($value);
|
121 |
+
}
|
122 |
+
} else {
|
123 |
+
$queryVars[] = $paramName . '=' . rawurlencode($paramSpec['value']);
|
124 |
+
}
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
if (count($uriTemplateVars)) {
|
129 |
+
$uriTemplateParser = new Google_Utils_URITemplate();
|
130 |
+
$requestUrl = $uriTemplateParser->parse($requestUrl, $uriTemplateVars);
|
131 |
+
}
|
132 |
+
|
133 |
+
if (count($queryVars)) {
|
134 |
+
$requestUrl .= '?' . implode($queryVars, '&');
|
135 |
+
}
|
136 |
+
|
137 |
+
return $requestUrl;
|
138 |
+
}
|
139 |
+
}
|
google/Http/Request.php
ADDED
@@ -0,0 +1,476 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Utils.php";
|
19 |
+
|
20 |
+
/**
|
21 |
+
* HTTP Request to be executed by IO classes. Upon execution, the
|
22 |
+
* responseHttpCode, responseHeaders and responseBody will be filled in.
|
23 |
+
*
|
24 |
+
* @author Chris Chabot <chabotc@google.com>
|
25 |
+
* @author Chirag Shah <chirags@google.com>
|
26 |
+
*
|
27 |
+
*/
|
28 |
+
class Google_Http_Request
|
29 |
+
{
|
30 |
+
const GZIP_UA = " (gzip)";
|
31 |
+
|
32 |
+
private $batchHeaders = array(
|
33 |
+
'Content-Type' => 'application/http',
|
34 |
+
'Content-Transfer-Encoding' => 'binary',
|
35 |
+
'MIME-Version' => '1.0',
|
36 |
+
);
|
37 |
+
|
38 |
+
protected $queryParams;
|
39 |
+
protected $requestMethod;
|
40 |
+
protected $requestHeaders;
|
41 |
+
protected $baseComponent = null;
|
42 |
+
protected $path;
|
43 |
+
protected $postBody;
|
44 |
+
protected $userAgent;
|
45 |
+
protected $canGzip = null;
|
46 |
+
|
47 |
+
protected $responseHttpCode;
|
48 |
+
protected $responseHeaders;
|
49 |
+
protected $responseBody;
|
50 |
+
|
51 |
+
protected $expectedClass;
|
52 |
+
|
53 |
+
public $accessKey;
|
54 |
+
|
55 |
+
public function __construct(
|
56 |
+
$url,
|
57 |
+
$method = 'GET',
|
58 |
+
$headers = array(),
|
59 |
+
$postBody = null
|
60 |
+
) {
|
61 |
+
$this->setUrl($url);
|
62 |
+
$this->setRequestMethod($method);
|
63 |
+
$this->setRequestHeaders($headers);
|
64 |
+
$this->setPostBody($postBody);
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Misc function that returns the base url component of the $url
|
69 |
+
* used by the OAuth signing class to calculate the base string
|
70 |
+
* @return string The base url component of the $url.
|
71 |
+
*/
|
72 |
+
public function getBaseComponent()
|
73 |
+
{
|
74 |
+
return $this->baseComponent;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Set the base URL that path and query parameters will be added to.
|
79 |
+
* @param $baseComponent string
|
80 |
+
*/
|
81 |
+
public function setBaseComponent($baseComponent)
|
82 |
+
{
|
83 |
+
$this->baseComponent = $baseComponent;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Enable support for gzipped responses with this request.
|
88 |
+
*/
|
89 |
+
public function enableGzip()
|
90 |
+
{
|
91 |
+
$this->setRequestHeaders(array("Accept-Encoding" => "gzip"));
|
92 |
+
$this->canGzip = true;
|
93 |
+
$this->setUserAgent($this->userAgent);
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Disable support for gzip responses with this request.
|
98 |
+
*/
|
99 |
+
public function disableGzip()
|
100 |
+
{
|
101 |
+
if (
|
102 |
+
isset($this->requestHeaders['accept-encoding']) &&
|
103 |
+
$this->requestHeaders['accept-encoding'] == "gzip"
|
104 |
+
) {
|
105 |
+
unset($this->requestHeaders['accept-encoding']);
|
106 |
+
}
|
107 |
+
$this->canGzip = false;
|
108 |
+
$this->userAgent = str_replace(self::GZIP_UA, "", $this->userAgent);
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Can this request accept a gzip response?
|
113 |
+
* @return bool
|
114 |
+
*/
|
115 |
+
public function canGzip()
|
116 |
+
{
|
117 |
+
return $this->canGzip;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Misc function that returns an array of the query parameters of the current
|
122 |
+
* url used by the OAuth signing class to calculate the signature
|
123 |
+
* @return array Query parameters in the query string.
|
124 |
+
*/
|
125 |
+
public function getQueryParams()
|
126 |
+
{
|
127 |
+
return $this->queryParams;
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Set a new query parameter.
|
132 |
+
* @param $key - string to set, does not need to be URL encoded
|
133 |
+
* @param $value - string to set, does not need to be URL encoded
|
134 |
+
*/
|
135 |
+
public function setQueryParam($key, $value)
|
136 |
+
{
|
137 |
+
$this->queryParams[$key] = $value;
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* @return string HTTP Response Code.
|
142 |
+
*/
|
143 |
+
public function getResponseHttpCode()
|
144 |
+
{
|
145 |
+
return (int) $this->responseHttpCode;
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* @param int $responseHttpCode HTTP Response Code.
|
150 |
+
*/
|
151 |
+
public function setResponseHttpCode($responseHttpCode)
|
152 |
+
{
|
153 |
+
$this->responseHttpCode = $responseHttpCode;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* @return $responseHeaders (array) HTTP Response Headers.
|
158 |
+
*/
|
159 |
+
public function getResponseHeaders()
|
160 |
+
{
|
161 |
+
return $this->responseHeaders;
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* @return string HTTP Response Body
|
166 |
+
*/
|
167 |
+
public function getResponseBody()
|
168 |
+
{
|
169 |
+
return $this->responseBody;
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Set the class the response to this request should expect.
|
174 |
+
*
|
175 |
+
* @param $class string the class name
|
176 |
+
*/
|
177 |
+
public function setExpectedClass($class)
|
178 |
+
{
|
179 |
+
$this->expectedClass = $class;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Retrieve the expected class the response should expect.
|
184 |
+
* @return string class name
|
185 |
+
*/
|
186 |
+
public function getExpectedClass()
|
187 |
+
{
|
188 |
+
return $this->expectedClass;
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* @param array $headers The HTTP response headers
|
193 |
+
* to be normalized.
|
194 |
+
*/
|
195 |
+
public function setResponseHeaders($headers)
|
196 |
+
{
|
197 |
+
$headers = Google_Utils::normalize($headers);
|
198 |
+
if ($this->responseHeaders) {
|
199 |
+
$headers = array_merge($this->responseHeaders, $headers);
|
200 |
+
}
|
201 |
+
|
202 |
+
$this->responseHeaders = $headers;
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* @param string $key
|
207 |
+
* @return array|boolean Returns the requested HTTP header or
|
208 |
+
* false if unavailable.
|
209 |
+
*/
|
210 |
+
public function getResponseHeader($key)
|
211 |
+
{
|
212 |
+
return isset($this->responseHeaders[$key])
|
213 |
+
? $this->responseHeaders[$key]
|
214 |
+
: false;
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* @param string $responseBody The HTTP response body.
|
219 |
+
*/
|
220 |
+
public function setResponseBody($responseBody)
|
221 |
+
{
|
222 |
+
$this->responseBody = $responseBody;
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* @return string $url The request URL.
|
227 |
+
*/
|
228 |
+
public function getUrl()
|
229 |
+
{
|
230 |
+
return $this->baseComponent . $this->path .
|
231 |
+
(count($this->queryParams) ?
|
232 |
+
"?" . $this->buildQuery($this->queryParams) :
|
233 |
+
'');
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* @return string $method HTTP Request Method.
|
238 |
+
*/
|
239 |
+
public function getRequestMethod()
|
240 |
+
{
|
241 |
+
return $this->requestMethod;
|
242 |
+
}
|
243 |
+
|
244 |
+
/**
|
245 |
+
* @return array $headers HTTP Request Headers.
|
246 |
+
*/
|
247 |
+
public function getRequestHeaders()
|
248 |
+
{
|
249 |
+
return $this->requestHeaders;
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* @param string $key
|
254 |
+
* @return array|boolean Returns the requested HTTP header or
|
255 |
+
* false if unavailable.
|
256 |
+
*/
|
257 |
+
public function getRequestHeader($key)
|
258 |
+
{
|
259 |
+
return isset($this->requestHeaders[$key])
|
260 |
+
? $this->requestHeaders[$key]
|
261 |
+
: false;
|
262 |
+
}
|
263 |
+
|
264 |
+
/**
|
265 |
+
* @return string $postBody HTTP Request Body.
|
266 |
+
*/
|
267 |
+
public function getPostBody()
|
268 |
+
{
|
269 |
+
return $this->postBody;
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* @param string $url the url to set
|
274 |
+
*/
|
275 |
+
public function setUrl($url)
|
276 |
+
{
|
277 |
+
if (substr($url, 0, 4) != 'http') {
|
278 |
+
// Force the path become relative.
|
279 |
+
if (substr($url, 0, 1) !== '/') {
|
280 |
+
$url = '/' . $url;
|
281 |
+
}
|
282 |
+
}
|
283 |
+
$parts = parse_url($url);
|
284 |
+
if (isset($parts['host'])) {
|
285 |
+
$this->baseComponent = sprintf(
|
286 |
+
"%s%s%s",
|
287 |
+
isset($parts['scheme']) ? $parts['scheme'] . "://" : '',
|
288 |
+
isset($parts['host']) ? $parts['host'] : '',
|
289 |
+
isset($parts['port']) ? ":" . $parts['port'] : ''
|
290 |
+
);
|
291 |
+
}
|
292 |
+
$this->path = isset($parts['path']) ? $parts['path'] : '';
|
293 |
+
$this->queryParams = array();
|
294 |
+
if (isset($parts['query'])) {
|
295 |
+
$this->queryParams = $this->parseQuery($parts['query']);
|
296 |
+
}
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* @param string $method Set he HTTP Method and normalize
|
301 |
+
* it to upper-case, as required by HTTP.
|
302 |
+
*
|
303 |
+
*/
|
304 |
+
public function setRequestMethod($method)
|
305 |
+
{
|
306 |
+
$this->requestMethod = strtoupper($method);
|
307 |
+
}
|
308 |
+
|
309 |
+
/**
|
310 |
+
* @param array $headers The HTTP request headers
|
311 |
+
* to be set and normalized.
|
312 |
+
*/
|
313 |
+
public function setRequestHeaders($headers)
|
314 |
+
{
|
315 |
+
$headers = Google_Utils::normalize($headers);
|
316 |
+
if ($this->requestHeaders) {
|
317 |
+
$headers = array_merge($this->requestHeaders, $headers);
|
318 |
+
}
|
319 |
+
$this->requestHeaders = $headers;
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* @param string $postBody the postBody to set
|
324 |
+
*/
|
325 |
+
public function setPostBody($postBody)
|
326 |
+
{
|
327 |
+
$this->postBody = $postBody;
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Set the User-Agent Header.
|
332 |
+
* @param string $userAgent The User-Agent.
|
333 |
+
*/
|
334 |
+
public function setUserAgent($userAgent)
|
335 |
+
{
|
336 |
+
$this->userAgent = $userAgent;
|
337 |
+
if ($this->canGzip) {
|
338 |
+
$this->userAgent = $userAgent . self::GZIP_UA;
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* @return string The User-Agent.
|
344 |
+
*/
|
345 |
+
public function getUserAgent()
|
346 |
+
{
|
347 |
+
return $this->userAgent;
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* Returns a cache key depending on if this was an OAuth signed request
|
352 |
+
* in which case it will use the non-signed url and access key to make this
|
353 |
+
* cache key unique per authenticated user, else use the plain request url
|
354 |
+
* @return string The md5 hash of the request cache key.
|
355 |
+
*/
|
356 |
+
public function getCacheKey()
|
357 |
+
{
|
358 |
+
$key = $this->getUrl();
|
359 |
+
|
360 |
+
if (isset($this->accessKey)) {
|
361 |
+
$key .= $this->accessKey;
|
362 |
+
}
|
363 |
+
|
364 |
+
if (isset($this->requestHeaders['authorization'])) {
|
365 |
+
$key .= $this->requestHeaders['authorization'];
|
366 |
+
}
|
367 |
+
|
368 |
+
return md5($key);
|
369 |
+
}
|
370 |
+
|
371 |
+
public function getParsedCacheControl()
|
372 |
+
{
|
373 |
+
$parsed = array();
|
374 |
+
$rawCacheControl = $this->getResponseHeader('cache-control');
|
375 |
+
if ($rawCacheControl) {
|
376 |
+
$rawCacheControl = str_replace(', ', '&', $rawCacheControl);
|
377 |
+
parse_str($rawCacheControl, $parsed);
|
378 |
+
}
|
379 |
+
|
380 |
+
return $parsed;
|
381 |
+
}
|
382 |
+
|
383 |
+
/**
|
384 |
+
* @param string $id
|
385 |
+
* @return string A string representation of the HTTP Request.
|
386 |
+
*/
|
387 |
+
public function toBatchString($id)
|
388 |
+
{
|
389 |
+
$str = '';
|
390 |
+
$path = parse_url($this->getUrl(), PHP_URL_PATH) . "?" .
|
391 |
+
http_build_query($this->queryParams);
|
392 |
+
$str .= $this->getRequestMethod() . ' ' . $path . " HTTP/1.1\n";
|
393 |
+
|
394 |
+
foreach ($this->getRequestHeaders() as $key => $val) {
|
395 |
+
$str .= $key . ': ' . $val . "\n";
|
396 |
+
}
|
397 |
+
|
398 |
+
if ($this->getPostBody()) {
|
399 |
+
$str .= "\n";
|
400 |
+
$str .= $this->getPostBody();
|
401 |
+
}
|
402 |
+
|
403 |
+
$headers = '';
|
404 |
+
foreach ($this->batchHeaders as $key => $val) {
|
405 |
+
$headers .= $key . ': ' . $val . "\n";
|
406 |
+
}
|
407 |
+
|
408 |
+
$headers .= "Content-ID: $id\n";
|
409 |
+
$str = $headers . "\n" . $str;
|
410 |
+
|
411 |
+
return $str;
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Our own version of parse_str that allows for multiple variables
|
416 |
+
* with the same name.
|
417 |
+
* @param $string - the query string to parse
|
418 |
+
*/
|
419 |
+
private function parseQuery($string)
|
420 |
+
{
|
421 |
+
$return = array();
|
422 |
+
$parts = explode("&", $string);
|
423 |
+
foreach ($parts as $part) {
|
424 |
+
list($key, $value) = explode('=', $part, 2);
|
425 |
+
$value = urldecode($value);
|
426 |
+
if (isset($return[$key])) {
|
427 |
+
if (!is_array($return[$key])) {
|
428 |
+
$return[$key] = array($return[$key]);
|
429 |
+
}
|
430 |
+
$return[$key][] = $value;
|
431 |
+
} else {
|
432 |
+
$return[$key] = $value;
|
433 |
+
}
|
434 |
+
}
|
435 |
+
return $return;
|
436 |
+
}
|
437 |
+
|
438 |
+
/**
|
439 |
+
* A version of build query that allows for multiple
|
440 |
+
* duplicate keys.
|
441 |
+
* @param $parts array of key value pairs
|
442 |
+
*/
|
443 |
+
private function buildQuery($parts)
|
444 |
+
{
|
445 |
+
$return = array();
|
446 |
+
foreach ($parts as $key => $value) {
|
447 |
+
if (is_array($value)) {
|
448 |
+
foreach ($value as $v) {
|
449 |
+
$return[] = urlencode($key) . "=" . urlencode($v);
|
450 |
+
}
|
451 |
+
} else {
|
452 |
+
$return[] = urlencode($key) . "=" . urlencode($value);
|
453 |
+
}
|
454 |
+
}
|
455 |
+
return implode('&', $return);
|
456 |
+
}
|
457 |
+
|
458 |
+
/**
|
459 |
+
* If we're POSTing and have no body to send, we can send the query
|
460 |
+
* parameters in there, which avoids length issues with longer query
|
461 |
+
* params.
|
462 |
+
*/
|
463 |
+
public function maybeMoveParametersToBody()
|
464 |
+
{
|
465 |
+
if ($this->getRequestMethod() == "POST" && empty($this->postBody)) {
|
466 |
+
$this->setRequestHeaders(
|
467 |
+
array(
|
468 |
+
"content-type" =>
|
469 |
+
"application/x-www-form-urlencoded; charset=UTF-8"
|
470 |
+
)
|
471 |
+
);
|
472 |
+
$this->setPostBody($this->buildQuery($this->queryParams));
|
473 |
+
$this->queryParams = array();
|
474 |
+
}
|
475 |
+
}
|
476 |
+
}
|
google/IO/Abstract.php
ADDED
@@ -0,0 +1,322 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Abstract IO base class
|
20 |
+
*/
|
21 |
+
|
22 |
+
require_once APSL_PLUGIN_DIR."google/Client.php";
|
23 |
+
require_once APSL_PLUGIN_DIR."google/IO/Exception.php";
|
24 |
+
require_once APSL_PLUGIN_DIR."google/Http/CacheParser.php";
|
25 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
26 |
+
|
27 |
+
abstract class Google_IO_Abstract
|
28 |
+
{
|
29 |
+
const UNKNOWN_CODE = 0;
|
30 |
+
const FORM_URLENCODED = 'application/x-www-form-urlencoded';
|
31 |
+
const CONNECTION_ESTABLISHED = "HTTP/1.0 200 Connection established\r\n\r\n";
|
32 |
+
private static $ENTITY_HTTP_METHODS = array("POST" => null, "PUT" => null);
|
33 |
+
|
34 |
+
/** @var Google_Client */
|
35 |
+
protected $client;
|
36 |
+
|
37 |
+
public function __construct(Google_Client $client)
|
38 |
+
{
|
39 |
+
$this->client = $client;
|
40 |
+
$timeout = $client->getClassConfig('Google_IO_Abstract', 'request_timeout_seconds');
|
41 |
+
if ($timeout > 0) {
|
42 |
+
$this->setTimeout($timeout);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Executes a Google_Http_Request and returns the resulting populated Google_Http_Request
|
48 |
+
* @param Google_Http_Request $request
|
49 |
+
* @return Google_Http_Request $request
|
50 |
+
*/
|
51 |
+
abstract public function executeRequest(Google_Http_Request $request);
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Set options that update the transport implementation's behavior.
|
55 |
+
* @param $options
|
56 |
+
*/
|
57 |
+
abstract public function setOptions($options);
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Set the maximum request time in seconds.
|
61 |
+
* @param $timeout in seconds
|
62 |
+
*/
|
63 |
+
abstract public function setTimeout($timeout);
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Get the maximum request time in seconds.
|
67 |
+
* @return timeout in seconds
|
68 |
+
*/
|
69 |
+
abstract public function getTimeout();
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Test for the presence of a cURL header processing bug
|
73 |
+
*
|
74 |
+
* The cURL bug was present in versions prior to 7.30.0 and caused the header
|
75 |
+
* length to be miscalculated when a "Connection established" header added by
|
76 |
+
* some proxies was present.
|
77 |
+
*
|
78 |
+
* @return boolean
|
79 |
+
*/
|
80 |
+
abstract protected function needsQuirk();
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @visible for testing.
|
84 |
+
* Cache the response to an HTTP request if it is cacheable.
|
85 |
+
* @param Google_Http_Request $request
|
86 |
+
* @return bool Returns true if the insertion was successful.
|
87 |
+
* Otherwise, return false.
|
88 |
+
*/
|
89 |
+
public function setCachedRequest(Google_Http_Request $request)
|
90 |
+
{
|
91 |
+
// Determine if the request is cacheable.
|
92 |
+
if (Google_Http_CacheParser::isResponseCacheable($request)) {
|
93 |
+
$this->client->getCache()->set($request->getCacheKey(), $request);
|
94 |
+
return true;
|
95 |
+
}
|
96 |
+
|
97 |
+
return false;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Execute an HTTP Request
|
102 |
+
*
|
103 |
+
* @param Google_HttpRequest $request the http request to be executed
|
104 |
+
* @return Google_HttpRequest http request with the response http code,
|
105 |
+
* response headers and response body filled in
|
106 |
+
* @throws Google_IO_Exception on curl or IO error
|
107 |
+
*/
|
108 |
+
public function makeRequest(Google_Http_Request $request)
|
109 |
+
{
|
110 |
+
// First, check to see if we have a valid cached version.
|
111 |
+
$cached = $this->getCachedRequest($request);
|
112 |
+
if ($cached !== false && $cached instanceof Google_Http_Request) {
|
113 |
+
if (!$this->checkMustRevalidateCachedRequest($cached, $request)) {
|
114 |
+
return $cached;
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
if (array_key_exists($request->getRequestMethod(), self::$ENTITY_HTTP_METHODS)) {
|
119 |
+
$request = $this->processEntityRequest($request);
|
120 |
+
}
|
121 |
+
|
122 |
+
list($responseData, $responseHeaders, $respHttpCode) = $this->executeRequest($request);
|
123 |
+
|
124 |
+
if ($respHttpCode == 304 && $cached) {
|
125 |
+
// If the server responded NOT_MODIFIED, return the cached request.
|
126 |
+
$this->updateCachedRequest($cached, $responseHeaders);
|
127 |
+
return $cached;
|
128 |
+
}
|
129 |
+
|
130 |
+
if (!isset($responseHeaders['Date']) && !isset($responseHeaders['date'])) {
|
131 |
+
$responseHeaders['Date'] = date("r");
|
132 |
+
}
|
133 |
+
|
134 |
+
$request->setResponseHttpCode($respHttpCode);
|
135 |
+
$request->setResponseHeaders($responseHeaders);
|
136 |
+
$request->setResponseBody($responseData);
|
137 |
+
// Store the request in cache (the function checks to see if the request
|
138 |
+
// can actually be cached)
|
139 |
+
$this->setCachedRequest($request);
|
140 |
+
return $request;
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* @visible for testing.
|
145 |
+
* @param Google_Http_Request $request
|
146 |
+
* @return Google_Http_Request|bool Returns the cached object or
|
147 |
+
* false if the operation was unsuccessful.
|
148 |
+
*/
|
149 |
+
public function getCachedRequest(Google_Http_Request $request)
|
150 |
+
{
|
151 |
+
if (false === Google_Http_CacheParser::isRequestCacheable($request)) {
|
152 |
+
return false;
|
153 |
+
}
|
154 |
+
|
155 |
+
return $this->client->getCache()->get($request->getCacheKey());
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* @visible for testing
|
160 |
+
* Process an http request that contains an enclosed entity.
|
161 |
+
* @param Google_Http_Request $request
|
162 |
+
* @return Google_Http_Request Processed request with the enclosed entity.
|
163 |
+
*/
|
164 |
+
public function processEntityRequest(Google_Http_Request $request)
|
165 |
+
{
|
166 |
+
$postBody = $request->getPostBody();
|
167 |
+
$contentType = $request->getRequestHeader("content-type");
|
168 |
+
|
169 |
+
// Set the default content-type as application/x-www-form-urlencoded.
|
170 |
+
if (false == $contentType) {
|
171 |
+
$contentType = self::FORM_URLENCODED;
|
172 |
+
$request->setRequestHeaders(array('content-type' => $contentType));
|
173 |
+
}
|
174 |
+
|
175 |
+
// Force the payload to match the content-type asserted in the header.
|
176 |
+
if ($contentType == self::FORM_URLENCODED && is_array($postBody)) {
|
177 |
+
$postBody = http_build_query($postBody, '', '&');
|
178 |
+
$request->setPostBody($postBody);
|
179 |
+
}
|
180 |
+
|
181 |
+
// Make sure the content-length header is set.
|
182 |
+
if (!$postBody || is_string($postBody)) {
|
183 |
+
$postsLength = strlen($postBody);
|
184 |
+
$request->setRequestHeaders(array('content-length' => $postsLength));
|
185 |
+
}
|
186 |
+
|
187 |
+
return $request;
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Check if an already cached request must be revalidated, and if so update
|
192 |
+
* the request with the correct ETag headers.
|
193 |
+
* @param Google_Http_Request $cached A previously cached response.
|
194 |
+
* @param Google_Http_Request $request The outbound request.
|
195 |
+
* return bool If the cached object needs to be revalidated, false if it is
|
196 |
+
* still current and can be re-used.
|
197 |
+
*/
|
198 |
+
protected function checkMustRevalidateCachedRequest($cached, $request)
|
199 |
+
{
|
200 |
+
if (Google_Http_CacheParser::mustRevalidate($cached)) {
|
201 |
+
$addHeaders = array();
|
202 |
+
if ($cached->getResponseHeader('etag')) {
|
203 |
+
// [13.3.4] If an entity tag has been provided by the origin server,
|
204 |
+
// we must use that entity tag in any cache-conditional request.
|
205 |
+
$addHeaders['If-None-Match'] = $cached->getResponseHeader('etag');
|
206 |
+
} elseif ($cached->getResponseHeader('date')) {
|
207 |
+
$addHeaders['If-Modified-Since'] = $cached->getResponseHeader('date');
|
208 |
+
}
|
209 |
+
|
210 |
+
$request->setRequestHeaders($addHeaders);
|
211 |
+
return true;
|
212 |
+
} else {
|
213 |
+
return false;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* Update a cached request, using the headers from the last response.
|
219 |
+
* @param Google_HttpRequest $cached A previously cached response.
|
220 |
+
* @param mixed Associative array of response headers from the last request.
|
221 |
+
*/
|
222 |
+
protected function updateCachedRequest($cached, $responseHeaders)
|
223 |
+
{
|
224 |
+
if (isset($responseHeaders['connection'])) {
|
225 |
+
$hopByHop = array_merge(
|
226 |
+
self::$HOP_BY_HOP,
|
227 |
+
explode(
|
228 |
+
',',
|
229 |
+
$responseHeaders['connection']
|
230 |
+
)
|
231 |
+
);
|
232 |
+
|
233 |
+
$endToEnd = array();
|
234 |
+
foreach ($hopByHop as $key) {
|
235 |
+
if (isset($responseHeaders[$key])) {
|
236 |
+
$endToEnd[$key] = $responseHeaders[$key];
|
237 |
+
}
|
238 |
+
}
|
239 |
+
$cached->setResponseHeaders($endToEnd);
|
240 |
+
}
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Used by the IO lib and also the batch processing.
|
245 |
+
*
|
246 |
+
* @param $respData
|
247 |
+
* @param $headerSize
|
248 |
+
* @return array
|
249 |
+
*/
|
250 |
+
public function parseHttpResponse($respData, $headerSize)
|
251 |
+
{
|
252 |
+
if (stripos($respData, self::CONNECTION_ESTABLISHED) !== false) {
|
253 |
+
$respData = str_ireplace(self::CONNECTION_ESTABLISHED, '', $respData);
|
254 |
+
|
255 |
+
// Subtract the proxy header size unless the cURL bug prior to 7.30.0
|
256 |
+
// is present which prevented the proxy header size from being taken into
|
257 |
+
// account.
|
258 |
+
if (!$this->needsQuirk()) {
|
259 |
+
$headerSize -= strlen(self::CONNECTION_ESTABLISHED);
|
260 |
+
}
|
261 |
+
}
|
262 |
+
|
263 |
+
if ($headerSize) {
|
264 |
+
$responseBody = substr($respData, $headerSize);
|
265 |
+
$responseHeaders = substr($respData, 0, $headerSize);
|
266 |
+
} else {
|
267 |
+
list($responseHeaders, $responseBody) = explode("\r\n\r\n", $respData, 2);
|
268 |
+
}
|
269 |
+
|
270 |
+
$responseHeaders = $this->getHttpResponseHeaders($responseHeaders);
|
271 |
+
return array($responseHeaders, $responseBody);
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Parse out headers from raw headers
|
276 |
+
* @param rawHeaders array or string
|
277 |
+
* @return array
|
278 |
+
*/
|
279 |
+
public function getHttpResponseHeaders($rawHeaders)
|
280 |
+
{
|
281 |
+
if (is_array($rawHeaders)) {
|
282 |
+
return $this->parseArrayHeaders($rawHeaders);
|
283 |
+
} else {
|
284 |
+
return $this->parseStringHeaders($rawHeaders);
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
private function parseStringHeaders($rawHeaders)
|
289 |
+
{
|
290 |
+
$headers = array();
|
291 |
+
$responseHeaderLines = explode("\r\n", $rawHeaders);
|
292 |
+
foreach ($responseHeaderLines as $headerLine) {
|
293 |
+
if ($headerLine && strpos($headerLine, ':') !== false) {
|
294 |
+
list($header, $value) = explode(': ', $headerLine, 2);
|
295 |
+
$header = strtolower($header);
|
296 |
+
if (isset($responseHeaders[$header])) {
|
297 |
+
$headers[$header] .= "\n" . $value;
|
298 |
+
} else {
|
299 |
+
$headers[$header] = $value;
|
300 |
+
}
|
301 |
+
}
|
302 |
+
}
|
303 |
+
return $headers;
|
304 |
+
}
|
305 |
+
|
306 |
+
private function parseArrayHeaders($rawHeaders)
|
307 |
+
{
|
308 |
+
$header_count = count($rawHeaders);
|
309 |
+
$headers = array();
|
310 |
+
|
311 |
+
for ($i = 0; $i < $header_count; $i++) {
|
312 |
+
$header = $rawHeaders[$i];
|
313 |
+
// Times will have colons in - so we just want the first match.
|
314 |
+
$header_parts = explode(': ', $header, 2);
|
315 |
+
if (count($header_parts) == 2) {
|
316 |
+
$headers[$header_parts[0]] = $header_parts[1];
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
return $headers;
|
321 |
+
}
|
322 |
+
}
|
google/IO/Curl.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2014 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Curl based implementation of Google_IO.
|
20 |
+
*
|
21 |
+
* @author Stuart Langley <slangley@google.com>
|
22 |
+
*/
|
23 |
+
|
24 |
+
require_once APSL_PLUGIN_DIR."google/IO/Abstract.php";
|
25 |
+
|
26 |
+
class Google_IO_Curl extends Google_IO_Abstract
|
27 |
+
{
|
28 |
+
// cURL hex representation of version 7.30.0
|
29 |
+
const NO_QUIRK_VERSION = 0x071E00;
|
30 |
+
|
31 |
+
private $options = array();
|
32 |
+
/**
|
33 |
+
* Execute an HTTP Request
|
34 |
+
*
|
35 |
+
* @param Google_HttpRequest $request the http request to be executed
|
36 |
+
* @return Google_HttpRequest http request with the response http code,
|
37 |
+
* response headers and response body filled in
|
38 |
+
* @throws Google_IO_Exception on curl or IO error
|
39 |
+
*/
|
40 |
+
public function executeRequest(Google_Http_Request $request)
|
41 |
+
{
|
42 |
+
$curl = curl_init();
|
43 |
+
|
44 |
+
if ($request->getPostBody()) {
|
45 |
+
curl_setopt($curl, CURLOPT_POSTFIELDS, $request->getPostBody());
|
46 |
+
}
|
47 |
+
|
48 |
+
$requestHeaders = $request->getRequestHeaders();
|
49 |
+
if ($requestHeaders && is_array($requestHeaders)) {
|
50 |
+
$curlHeaders = array();
|
51 |
+
foreach ($requestHeaders as $k => $v) {
|
52 |
+
$curlHeaders[] = "$k: $v";
|
53 |
+
}
|
54 |
+
curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders);
|
55 |
+
}
|
56 |
+
|
57 |
+
curl_setopt($curl, CURLOPT_URL, $request->getUrl());
|
58 |
+
|
59 |
+
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request->getRequestMethod());
|
60 |
+
curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent());
|
61 |
+
|
62 |
+
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
|
63 |
+
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
|
64 |
+
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
65 |
+
curl_setopt($curl, CURLOPT_HEADER, true);
|
66 |
+
|
67 |
+
if ($request->canGzip()) {
|
68 |
+
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
|
69 |
+
}
|
70 |
+
|
71 |
+
foreach ($this->options as $key => $var) {
|
72 |
+
curl_setopt($curl, $key, $var);
|
73 |
+
}
|
74 |
+
|
75 |
+
if (!isset($this->options[CURLOPT_CAINFO])) {
|
76 |
+
curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacerts.pem');
|
77 |
+
}
|
78 |
+
|
79 |
+
$response = curl_exec($curl);
|
80 |
+
if ($response === false) {
|
81 |
+
throw new Google_IO_Exception(curl_error($curl));
|
82 |
+
}
|
83 |
+
$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
|
84 |
+
|
85 |
+
list($responseHeaders, $responseBody) = $this->parseHttpResponse($response, $headerSize);
|
86 |
+
|
87 |
+
$responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
88 |
+
|
89 |
+
return array($responseBody, $responseHeaders, $responseCode);
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Set options that update the transport implementation's behavior.
|
94 |
+
* @param $options
|
95 |
+
*/
|
96 |
+
public function setOptions($options)
|
97 |
+
{
|
98 |
+
$this->options = $options + $this->options;
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Set the maximum request time in seconds.
|
103 |
+
* @param $timeout in seconds
|
104 |
+
*/
|
105 |
+
public function setTimeout($timeout)
|
106 |
+
{
|
107 |
+
// Since this timeout is really for putting a bound on the time
|
108 |
+
// we'll set them both to the same. If you need to specify a longer
|
109 |
+
// CURLOPT_TIMEOUT, or a tigher CONNECTTIMEOUT, the best thing to
|
110 |
+
// do is use the setOptions method for the values individually.
|
111 |
+
$this->options[CURLOPT_CONNECTTIMEOUT] = $timeout;
|
112 |
+
$this->options[CURLOPT_TIMEOUT] = $timeout;
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Get the maximum request time in seconds.
|
117 |
+
* @return timeout in seconds
|
118 |
+
*/
|
119 |
+
public function getTimeout()
|
120 |
+
{
|
121 |
+
return $this->options[CURLOPT_TIMEOUT];
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Test for the presence of a cURL header processing bug
|
126 |
+
*
|
127 |
+
* {@inheritDoc}
|
128 |
+
*
|
129 |
+
* @return boolean
|
130 |
+
*/
|
131 |
+
protected function needsQuirk()
|
132 |
+
{
|
133 |
+
$ver = curl_version();
|
134 |
+
$versionNum = $ver['version_number'];
|
135 |
+
return $versionNum < Google_IO_Curl::NO_QUIRK_VERSION;
|
136 |
+
}
|
137 |
+
}
|
google/IO/Exception.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Exception.php";
|
19 |
+
|
20 |
+
class Google_IO_Exception extends Google_Exception
|
21 |
+
{
|
22 |
+
}
|
google/IO/Stream.php
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Http Streams based implementation of Google_IO.
|
20 |
+
*
|
21 |
+
* @author Stuart Langley <slangley@google.com>
|
22 |
+
*/
|
23 |
+
|
24 |
+
require_once APSL_PLUGIN_DIR."google/IO/Abstract.php";
|
25 |
+
|
26 |
+
class Google_IO_Stream extends Google_IO_Abstract
|
27 |
+
{
|
28 |
+
const TIMEOUT = "timeout";
|
29 |
+
const ZLIB = "compress.zlib://";
|
30 |
+
private $options = array();
|
31 |
+
private $trappedErrorNumber;
|
32 |
+
private $trappedErrorString;
|
33 |
+
|
34 |
+
private static $DEFAULT_HTTP_CONTEXT = array(
|
35 |
+
"follow_location" => 0,
|
36 |
+
"ignore_errors" => 1,
|
37 |
+
);
|
38 |
+
|
39 |
+
private static $DEFAULT_SSL_CONTEXT = array(
|
40 |
+
"verify_peer" => true,
|
41 |
+
);
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Execute an HTTP Request
|
45 |
+
*
|
46 |
+
* @param Google_HttpRequest $request the http request to be executed
|
47 |
+
* @return Google_HttpRequest http request with the response http code,
|
48 |
+
* response headers and response body filled in
|
49 |
+
* @throws Google_IO_Exception on curl or IO error
|
50 |
+
*/
|
51 |
+
public function executeRequest(Google_Http_Request $request)
|
52 |
+
{
|
53 |
+
$default_options = stream_context_get_options(stream_context_get_default());
|
54 |
+
|
55 |
+
$requestHttpContext = array_key_exists('http', $default_options) ?
|
56 |
+
$default_options['http'] : array();
|
57 |
+
|
58 |
+
if ($request->getPostBody()) {
|
59 |
+
$requestHttpContext["content"] = $request->getPostBody();
|
60 |
+
}
|
61 |
+
|
62 |
+
$requestHeaders = $request->getRequestHeaders();
|
63 |
+
if ($requestHeaders && is_array($requestHeaders)) {
|
64 |
+
$headers = "";
|
65 |
+
foreach ($requestHeaders as $k => $v) {
|
66 |
+
$headers .= "$k: $v\r\n";
|
67 |
+
}
|
68 |
+
$requestHttpContext["header"] = $headers;
|
69 |
+
}
|
70 |
+
|
71 |
+
$requestHttpContext["method"] = $request->getRequestMethod();
|
72 |
+
$requestHttpContext["user_agent"] = $request->getUserAgent();
|
73 |
+
|
74 |
+
$requestSslContext = array_key_exists('ssl', $default_options) ?
|
75 |
+
$default_options['ssl'] : array();
|
76 |
+
|
77 |
+
if (!array_key_exists("cafile", $requestSslContext)) {
|
78 |
+
$requestSslContext["cafile"] = dirname(__FILE__) . '/cacerts.pem';
|
79 |
+
}
|
80 |
+
|
81 |
+
$options = array(
|
82 |
+
"http" => array_merge(
|
83 |
+
self::$DEFAULT_HTTP_CONTEXT,
|
84 |
+
$requestHttpContext
|
85 |
+
),
|
86 |
+
"ssl" => array_merge(
|
87 |
+
self::$DEFAULT_SSL_CONTEXT,
|
88 |
+
$requestSslContext
|
89 |
+
)
|
90 |
+
);
|
91 |
+
|
92 |
+
$context = stream_context_create($options);
|
93 |
+
|
94 |
+
$url = $request->getUrl();
|
95 |
+
|
96 |
+
if ($request->canGzip()) {
|
97 |
+
$url = self::ZLIB . $url;
|
98 |
+
}
|
99 |
+
|
100 |
+
// We are trapping any thrown errors in this method only and
|
101 |
+
// throwing an exception.
|
102 |
+
$this->trappedErrorNumber = null;
|
103 |
+
$this->trappedErrorString = null;
|
104 |
+
|
105 |
+
// START - error trap.
|
106 |
+
set_error_handler(array($this, 'trapError'));
|
107 |
+
$fh = fopen($url, 'r', false, $context);
|
108 |
+
restore_error_handler();
|
109 |
+
// END - error trap.
|
110 |
+
|
111 |
+
if ($this->trappedErrorNumber) {
|
112 |
+
throw new Google_IO_Exception(
|
113 |
+
sprintf(
|
114 |
+
"HTTP Error: Unable to connect: '%s'",
|
115 |
+
$this->trappedErrorString
|
116 |
+
),
|
117 |
+
$this->trappedErrorNumber
|
118 |
+
);
|
119 |
+
}
|
120 |
+
|
121 |
+
$response_data = false;
|
122 |
+
$respHttpCode = self::UNKNOWN_CODE;
|
123 |
+
if ($fh) {
|
124 |
+
if (isset($this->options[self::TIMEOUT])) {
|
125 |
+
stream_set_timeout($fh, $this->options[self::TIMEOUT]);
|
126 |
+
}
|
127 |
+
|
128 |
+
$response_data = stream_get_contents($fh);
|
129 |
+
fclose($fh);
|
130 |
+
|
131 |
+
$respHttpCode = $this->getHttpResponseCode($http_response_header);
|
132 |
+
}
|
133 |
+
|
134 |
+
if (false === $response_data) {
|
135 |
+
throw new Google_IO_Exception(
|
136 |
+
sprintf(
|
137 |
+
"HTTP Error: Unable to connect: '%s'",
|
138 |
+
$respHttpCode
|
139 |
+
),
|
140 |
+
$respHttpCode
|
141 |
+
);
|
142 |
+
}
|
143 |
+
|
144 |
+
$responseHeaders = $this->getHttpResponseHeaders($http_response_header);
|
145 |
+
|
146 |
+
return array($response_data, $responseHeaders, $respHttpCode);
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Set options that update the transport implementation's behavior.
|
151 |
+
* @param $options
|
152 |
+
*/
|
153 |
+
public function setOptions($options)
|
154 |
+
{
|
155 |
+
$this->options = $options + $this->options;
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Method to handle errors, used for error handling around
|
160 |
+
* stream connection methods.
|
161 |
+
*/
|
162 |
+
public function trapError($errno, $errstr)
|
163 |
+
{
|
164 |
+
$this->trappedErrorNumber = $errno;
|
165 |
+
$this->trappedErrorString = $errstr;
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Set the maximum request time in seconds.
|
170 |
+
* @param $timeout in seconds
|
171 |
+
*/
|
172 |
+
public function setTimeout($timeout)
|
173 |
+
{
|
174 |
+
$this->options[self::TIMEOUT] = $timeout;
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Get the maximum request time in seconds.
|
179 |
+
* @return timeout in seconds
|
180 |
+
*/
|
181 |
+
public function getTimeout()
|
182 |
+
{
|
183 |
+
return $this->options[self::TIMEOUT];
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* Test for the presence of a cURL header processing bug
|
188 |
+
*
|
189 |
+
* {@inheritDoc}
|
190 |
+
*
|
191 |
+
* @return boolean
|
192 |
+
*/
|
193 |
+
protected function needsQuirk()
|
194 |
+
{
|
195 |
+
return false;
|
196 |
+
}
|
197 |
+
|
198 |
+
protected function getHttpResponseCode($response_headers)
|
199 |
+
{
|
200 |
+
$header_count = count($response_headers);
|
201 |
+
|
202 |
+
for ($i = 0; $i < $header_count; $i++) {
|
203 |
+
$header = $response_headers[$i];
|
204 |
+
if (strncasecmp("HTTP", $header, strlen("HTTP")) == 0) {
|
205 |
+
$response = explode(' ', $header);
|
206 |
+
return $response[1];
|
207 |
+
}
|
208 |
+
}
|
209 |
+
return self::UNKNOWN_CODE;
|
210 |
+
}
|
211 |
+
}
|
google/IO/cacerts.pem
ADDED
@@ -0,0 +1,2183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc.
|
2 |
+
# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc.
|
3 |
+
# Label: "GTE CyberTrust Global Root"
|
4 |
+
# Serial: 421
|
5 |
+
# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db
|
6 |
+
# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74
|
7 |
+
# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36
|
8 |
+
-----BEGIN CERTIFICATE-----
|
9 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
|
10 |
+
VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
|
11 |
+
bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
|
12 |
+
b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
|
13 |
+
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
14 |
+
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
15 |
+
b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
|
16 |
+
iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
|
17 |
+
r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
|
18 |
+
04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
|
19 |
+
GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
|
20 |
+
3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
|
21 |
+
lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
22 |
+
-----END CERTIFICATE-----
|
23 |
+
|
24 |
+
# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division
|
25 |
+
# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division
|
26 |
+
# Label: "Thawte Server CA"
|
27 |
+
# Serial: 1
|
28 |
+
# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d
|
29 |
+
# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c
|
30 |
+
# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9
|
31 |
+
-----BEGIN CERTIFICATE-----
|
32 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
|
33 |
+
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
34 |
+
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
35 |
+
biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
|
36 |
+
MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
|
37 |
+
MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
38 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
|
39 |
+
dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
|
40 |
+
cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
|
41 |
+
DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
|
42 |
+
gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
|
43 |
+
yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
|
44 |
+
L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
|
45 |
+
EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
|
46 |
+
7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
|
47 |
+
QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
|
48 |
+
qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
49 |
+
-----END CERTIFICATE-----
|
50 |
+
|
51 |
+
# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division
|
52 |
+
# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division
|
53 |
+
# Label: "Thawte Premium Server CA"
|
54 |
+
# Serial: 1
|
55 |
+
# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a
|
56 |
+
# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a
|
57 |
+
# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72
|
58 |
+
-----BEGIN CERTIFICATE-----
|
59 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
|
60 |
+
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
61 |
+
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
62 |
+
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
|
63 |
+
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
|
64 |
+
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
|
65 |
+
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
|
66 |
+
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
|
67 |
+
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
|
68 |
+
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
|
69 |
+
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
|
70 |
+
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
|
71 |
+
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
|
72 |
+
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
73 |
+
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
|
74 |
+
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
|
75 |
+
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
|
76 |
+
-----END CERTIFICATE-----
|
77 |
+
|
78 |
+
# Issuer: O=Equifax OU=Equifax Secure Certificate Authority
|
79 |
+
# Subject: O=Equifax OU=Equifax Secure Certificate Authority
|
80 |
+
# Label: "Equifax Secure CA"
|
81 |
+
# Serial: 903804111
|
82 |
+
# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4
|
83 |
+
# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a
|
84 |
+
# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78
|
85 |
+
-----BEGIN CERTIFICATE-----
|
86 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
|
87 |
+
UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
|
88 |
+
dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
|
89 |
+
MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
|
90 |
+
dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
|
91 |
+
AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
|
92 |
+
BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
|
93 |
+
cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
|
94 |
+
AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
|
95 |
+
MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
|
96 |
+
aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
|
97 |
+
ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
|
98 |
+
IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
|
99 |
+
MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
|
100 |
+
A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
|
101 |
+
7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
|
102 |
+
1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
|
103 |
+
-----END CERTIFICATE-----
|
104 |
+
|
105 |
+
# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
106 |
+
# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
107 |
+
# Label: "Verisign Class 3 Public Primary Certification Authority"
|
108 |
+
# Serial: 149843929435818692848040365716851702463
|
109 |
+
# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67
|
110 |
+
# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2
|
111 |
+
# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70
|
112 |
+
-----BEGIN CERTIFICATE-----
|
113 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
|
114 |
+
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
115 |
+
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
116 |
+
MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
117 |
+
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
118 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
119 |
+
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
120 |
+
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
121 |
+
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
122 |
+
CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
|
123 |
+
lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
|
124 |
+
AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
|
125 |
+
-----END CERTIFICATE-----
|
126 |
+
|
127 |
+
# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network
|
128 |
+
# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network
|
129 |
+
# Label: "Verisign Class 3 Public Primary Certification Authority - G2"
|
130 |
+
# Serial: 167285380242319648451154478808036881606
|
131 |
+
# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9
|
132 |
+
# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f
|
133 |
+
# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b
|
134 |
+
-----BEGIN CERTIFICATE-----
|
135 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
|
136 |
+
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
|
137 |
+
c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
|
138 |
+
MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
|
139 |
+
emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
|
140 |
+
DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
|
141 |
+
FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
|
142 |
+
UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
|
143 |
+
YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
|
144 |
+
MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
|
145 |
+
AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
|
146 |
+
pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
|
147 |
+
13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
|
148 |
+
AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
|
149 |
+
U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
|
150 |
+
F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
|
151 |
+
oJ2daZH9
|
152 |
+
-----END CERTIFICATE-----
|
153 |
+
|
154 |
+
# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
155 |
+
# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
156 |
+
# Label: "GlobalSign Root CA"
|
157 |
+
# Serial: 4835703278459707669005204
|
158 |
+
# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a
|
159 |
+
# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c
|
160 |
+
# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99
|
161 |
+
-----BEGIN CERTIFICATE-----
|
162 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
163 |
+
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
164 |
+
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
|
165 |
+
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
|
166 |
+
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
|
167 |
+
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
|
168 |
+
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
|
169 |
+
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
|
170 |
+
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
|
171 |
+
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
|
172 |
+
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
|
173 |
+
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
|
174 |
+
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
|
175 |
+
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
|
176 |
+
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
|
177 |
+
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
|
178 |
+
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
|
179 |
+
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
|
180 |
+
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
181 |
+
-----END CERTIFICATE-----
|
182 |
+
|
183 |
+
# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2
|
184 |
+
# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2
|
185 |
+
# Label: "GlobalSign Root CA - R2"
|
186 |
+
# Serial: 4835703278459682885658125
|
187 |
+
# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30
|
188 |
+
# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe
|
189 |
+
# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e
|
190 |
+
-----BEGIN CERTIFICATE-----
|
191 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
|
192 |
+
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
|
193 |
+
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
|
194 |
+
MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
|
195 |
+
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
|
196 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
|
197 |
+
v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
|
198 |
+
eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
|
199 |
+
tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
|
200 |
+
C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
|
201 |
+
zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
|
202 |
+
mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
|
203 |
+
V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
|
204 |
+
bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
|
205 |
+
3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
|
206 |
+
J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
|
207 |
+
291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
|
208 |
+
ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
|
209 |
+
AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
210 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
211 |
+
-----END CERTIFICATE-----
|
212 |
+
|
213 |
+
# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority
|
214 |
+
# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority
|
215 |
+
# Label: "ValiCert Class 1 VA"
|
216 |
+
# Serial: 1
|
217 |
+
# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb
|
218 |
+
# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e
|
219 |
+
# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04
|
220 |
+
-----BEGIN CERTIFICATE-----
|
221 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
222 |
+
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
223 |
+
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
224 |
+
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
225 |
+
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy
|
226 |
+
NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
227 |
+
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
228 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
229 |
+
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
230 |
+
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y
|
231 |
+
LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+
|
232 |
+
TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y
|
233 |
+
TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0
|
234 |
+
LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW
|
235 |
+
I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw
|
236 |
+
nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI
|
237 |
+
-----END CERTIFICATE-----
|
238 |
+
|
239 |
+
# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority
|
240 |
+
# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority
|
241 |
+
# Label: "ValiCert Class 2 VA"
|
242 |
+
# Serial: 1
|
243 |
+
# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87
|
244 |
+
# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6
|
245 |
+
# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b
|
246 |
+
-----BEGIN CERTIFICATE-----
|
247 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
248 |
+
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
249 |
+
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
250 |
+
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
251 |
+
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy
|
252 |
+
NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
253 |
+
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
254 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
255 |
+
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
256 |
+
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY
|
257 |
+
dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9
|
258 |
+
WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS
|
259 |
+
v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v
|
260 |
+
UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu
|
261 |
+
IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC
|
262 |
+
W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd
|
263 |
+
-----END CERTIFICATE-----
|
264 |
+
|
265 |
+
# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority
|
266 |
+
# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority
|
267 |
+
# Label: "RSA Root Certificate 1"
|
268 |
+
# Serial: 1
|
269 |
+
# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72
|
270 |
+
# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb
|
271 |
+
# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a
|
272 |
+
-----BEGIN CERTIFICATE-----
|
273 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
274 |
+
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
275 |
+
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
276 |
+
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
277 |
+
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
|
278 |
+
NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
279 |
+
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
280 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
281 |
+
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
282 |
+
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
|
283 |
+
cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
|
284 |
+
2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
|
285 |
+
JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
|
286 |
+
Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
|
287 |
+
n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
|
288 |
+
PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
|
289 |
+
-----END CERTIFICATE-----
|
290 |
+
|
291 |
+
# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
|
292 |
+
# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
|
293 |
+
# Label: "Verisign Class 3 Public Primary Certification Authority - G3"
|
294 |
+
# Serial: 206684696279472310254277870180966723415
|
295 |
+
# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09
|
296 |
+
# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6
|
297 |
+
# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44
|
298 |
+
-----BEGIN CERTIFICATE-----
|
299 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw
|
300 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
|
301 |
+
cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu
|
302 |
+
LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
|
303 |
+
aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
304 |
+
dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD
|
305 |
+
VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT
|
306 |
+
aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ
|
307 |
+
bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu
|
308 |
+
IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
|
309 |
+
LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b
|
310 |
+
N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t
|
311 |
+
KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu
|
312 |
+
kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm
|
313 |
+
CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ
|
314 |
+
Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu
|
315 |
+
imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te
|
316 |
+
2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe
|
317 |
+
DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
318 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p
|
319 |
+
F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt
|
320 |
+
TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
321 |
+
-----END CERTIFICATE-----
|
322 |
+
|
323 |
+
# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
|
324 |
+
# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
|
325 |
+
# Label: "Verisign Class 4 Public Primary Certification Authority - G3"
|
326 |
+
# Serial: 314531972711909413743075096039378935511
|
327 |
+
# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df
|
328 |
+
# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d
|
329 |
+
# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06
|
330 |
+
-----BEGIN CERTIFICATE-----
|
331 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw
|
332 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
|
333 |
+
cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu
|
334 |
+
LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
|
335 |
+
aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
336 |
+
dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD
|
337 |
+
VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT
|
338 |
+
aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ
|
339 |
+
bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu
|
340 |
+
IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
|
341 |
+
LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1
|
342 |
+
GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ
|
343 |
+
+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd
|
344 |
+
U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm
|
345 |
+
NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY
|
346 |
+
ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/
|
347 |
+
ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1
|
348 |
+
CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq
|
349 |
+
g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
350 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c
|
351 |
+
2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/
|
352 |
+
bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
353 |
+
-----END CERTIFICATE-----
|
354 |
+
|
355 |
+
# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
356 |
+
# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
357 |
+
# Label: "Entrust.net Secure Server CA"
|
358 |
+
# Serial: 927650371
|
359 |
+
# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee
|
360 |
+
# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39
|
361 |
+
# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50
|
362 |
+
-----BEGIN CERTIFICATE-----
|
363 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
364 |
+
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
365 |
+
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
366 |
+
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
367 |
+
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1
|
368 |
+
MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE
|
369 |
+
ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j
|
370 |
+
b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
371 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg
|
372 |
+
U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA
|
373 |
+
A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/
|
374 |
+
I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3
|
375 |
+
wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC
|
376 |
+
AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb
|
377 |
+
oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
|
378 |
+
BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p
|
379 |
+
dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
|
380 |
+
MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
|
381 |
+
b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
382 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0
|
383 |
+
MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi
|
384 |
+
E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa
|
385 |
+
MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
|
386 |
+
hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN
|
387 |
+
95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd
|
388 |
+
2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
389 |
+
-----END CERTIFICATE-----
|
390 |
+
|
391 |
+
# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
392 |
+
# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
393 |
+
# Label: "Entrust.net Premium 2048 Secure Server CA"
|
394 |
+
# Serial: 946059622
|
395 |
+
# MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc
|
396 |
+
# SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe
|
397 |
+
# SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f
|
398 |
+
-----BEGIN CERTIFICATE-----
|
399 |
+
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
|
400 |
+
RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
|
401 |
+
bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
|
402 |
+
IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
|
403 |
+
ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy
|
404 |
+
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
|
405 |
+
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
|
406 |
+
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
|
407 |
+
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
|
408 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
|
409 |
+
K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe
|
410 |
+
sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX
|
411 |
+
MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT
|
412 |
+
XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/
|
413 |
+
HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
|
414 |
+
4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA
|
415 |
+
vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G
|
416 |
+
CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA
|
417 |
+
WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
418 |
+
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ
|
419 |
+
h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18
|
420 |
+
f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN
|
421 |
+
B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy
|
422 |
+
vUxFnmG6v4SBkgPR0ml8xQ==
|
423 |
+
-----END CERTIFICATE-----
|
424 |
+
|
425 |
+
# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
|
426 |
+
# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
|
427 |
+
# Label: "Baltimore CyberTrust Root"
|
428 |
+
# Serial: 33554617
|
429 |
+
# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
|
430 |
+
# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
|
431 |
+
# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
|
432 |
+
-----BEGIN CERTIFICATE-----
|
433 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
|
434 |
+
RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
|
435 |
+
VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
|
436 |
+
DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
|
437 |
+
ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
|
438 |
+
VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
|
439 |
+
mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
|
440 |
+
IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
|
441 |
+
mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
|
442 |
+
XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
|
443 |
+
dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
|
444 |
+
jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
|
445 |
+
BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
|
446 |
+
DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
|
447 |
+
9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
|
448 |
+
jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
|
449 |
+
Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
|
450 |
+
ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
|
451 |
+
R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
452 |
+
-----END CERTIFICATE-----
|
453 |
+
|
454 |
+
# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc.
|
455 |
+
# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc.
|
456 |
+
# Label: "Equifax Secure Global eBusiness CA"
|
457 |
+
# Serial: 1
|
458 |
+
# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc
|
459 |
+
# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45
|
460 |
+
# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07
|
461 |
+
-----BEGIN CERTIFICATE-----
|
462 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc
|
463 |
+
MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT
|
464 |
+
ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw
|
465 |
+
MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj
|
466 |
+
dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l
|
467 |
+
c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC
|
468 |
+
UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc
|
469 |
+
58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/
|
470 |
+
o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH
|
471 |
+
MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr
|
472 |
+
aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA
|
473 |
+
A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA
|
474 |
+
Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv
|
475 |
+
8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
476 |
+
-----END CERTIFICATE-----
|
477 |
+
|
478 |
+
# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc.
|
479 |
+
# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc.
|
480 |
+
# Label: "Equifax Secure eBusiness CA 1"
|
481 |
+
# Serial: 4
|
482 |
+
# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d
|
483 |
+
# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41
|
484 |
+
# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73
|
485 |
+
-----BEGIN CERTIFICATE-----
|
486 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc
|
487 |
+
MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT
|
488 |
+
ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw
|
489 |
+
MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j
|
490 |
+
LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ
|
491 |
+
KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo
|
492 |
+
RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu
|
493 |
+
WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw
|
494 |
+
Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD
|
495 |
+
AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK
|
496 |
+
eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM
|
497 |
+
zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+
|
498 |
+
WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN
|
499 |
+
/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
500 |
+
-----END CERTIFICATE-----
|
501 |
+
|
502 |
+
# Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2
|
503 |
+
# Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2
|
504 |
+
# Label: "Equifax Secure eBusiness CA 2"
|
505 |
+
# Serial: 930140085
|
506 |
+
# MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca
|
507 |
+
# SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc
|
508 |
+
# SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20
|
509 |
+
-----BEGIN CERTIFICATE-----
|
510 |
+
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
|
511 |
+
UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj
|
512 |
+
dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0
|
513 |
+
NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD
|
514 |
+
VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B
|
515 |
+
AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G
|
516 |
+
vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/
|
517 |
+
BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C
|
518 |
+
AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX
|
519 |
+
MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl
|
520 |
+
IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw
|
521 |
+
NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq
|
522 |
+
y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF
|
523 |
+
MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
|
524 |
+
A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy
|
525 |
+
0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1
|
526 |
+
E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN
|
527 |
+
-----END CERTIFICATE-----
|
528 |
+
|
529 |
+
# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network
|
530 |
+
# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network
|
531 |
+
# Label: "AddTrust Low-Value Services Root"
|
532 |
+
# Serial: 1
|
533 |
+
# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc
|
534 |
+
# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d
|
535 |
+
# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7
|
536 |
+
-----BEGIN CERTIFICATE-----
|
537 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU
|
538 |
+
MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
|
539 |
+
b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw
|
540 |
+
MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
541 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD
|
542 |
+
VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA
|
543 |
+
A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul
|
544 |
+
CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n
|
545 |
+
tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl
|
546 |
+
dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch
|
547 |
+
PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC
|
548 |
+
+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O
|
549 |
+
BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E
|
550 |
+
BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl
|
551 |
+
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk
|
552 |
+
ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB
|
553 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X
|
554 |
+
7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz
|
555 |
+
43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
556 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl
|
557 |
+
pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA
|
558 |
+
WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
559 |
+
-----END CERTIFICATE-----
|
560 |
+
|
561 |
+
# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network
|
562 |
+
# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network
|
563 |
+
# Label: "AddTrust External Root"
|
564 |
+
# Serial: 1
|
565 |
+
# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f
|
566 |
+
# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68
|
567 |
+
# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2
|
568 |
+
-----BEGIN CERTIFICATE-----
|
569 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
|
570 |
+
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
|
571 |
+
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
|
572 |
+
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
|
573 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
|
574 |
+
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
|
575 |
+
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
|
576 |
+
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
|
577 |
+
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
|
578 |
+
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
|
579 |
+
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
|
580 |
+
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
|
581 |
+
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
|
582 |
+
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
|
583 |
+
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
|
584 |
+
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
|
585 |
+
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
|
586 |
+
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
|
587 |
+
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
588 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
|
589 |
+
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
|
590 |
+
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
|
591 |
+
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
592 |
+
-----END CERTIFICATE-----
|
593 |
+
|
594 |
+
# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network
|
595 |
+
# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network
|
596 |
+
# Label: "AddTrust Public Services Root"
|
597 |
+
# Serial: 1
|
598 |
+
# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f
|
599 |
+
# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5
|
600 |
+
# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27
|
601 |
+
-----BEGIN CERTIFICATE-----
|
602 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU
|
603 |
+
MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
|
604 |
+
b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx
|
605 |
+
MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB
|
606 |
+
ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV
|
607 |
+
BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
608 |
+
AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV
|
609 |
+
6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX
|
610 |
+
GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP
|
611 |
+
dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH
|
612 |
+
1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF
|
613 |
+
62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW
|
614 |
+
BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw
|
615 |
+
AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL
|
616 |
+
MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU
|
617 |
+
cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv
|
618 |
+
b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6
|
619 |
+
IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/
|
620 |
+
iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
621 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh
|
622 |
+
4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm
|
623 |
+
XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
624 |
+
-----END CERTIFICATE-----
|
625 |
+
|
626 |
+
# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network
|
627 |
+
# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network
|
628 |
+
# Label: "AddTrust Qualified Certificates Root"
|
629 |
+
# Serial: 1
|
630 |
+
# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb
|
631 |
+
# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf
|
632 |
+
# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16
|
633 |
+
-----BEGIN CERTIFICATE-----
|
634 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU
|
635 |
+
MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
|
636 |
+
b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1
|
637 |
+
MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK
|
638 |
+
EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh
|
639 |
+
BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B
|
640 |
+
AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq
|
641 |
+
xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G
|
642 |
+
87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i
|
643 |
+
2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U
|
644 |
+
WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1
|
645 |
+
0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G
|
646 |
+
A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T
|
647 |
+
AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr
|
648 |
+
pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL
|
649 |
+
ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm
|
650 |
+
aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv
|
651 |
+
hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm
|
652 |
+
hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
653 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3
|
654 |
+
P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y
|
655 |
+
iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no
|
656 |
+
xqE=
|
657 |
+
-----END CERTIFICATE-----
|
658 |
+
|
659 |
+
# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
|
660 |
+
# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
|
661 |
+
# Label: "Entrust Root Certification Authority"
|
662 |
+
# Serial: 1164660820
|
663 |
+
# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4
|
664 |
+
# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9
|
665 |
+
# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c
|
666 |
+
-----BEGIN CERTIFICATE-----
|
667 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC
|
668 |
+
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
|
669 |
+
Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
|
670 |
+
KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
|
671 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw
|
672 |
+
NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw
|
673 |
+
NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy
|
674 |
+
ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV
|
675 |
+
BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ
|
676 |
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo
|
677 |
+
Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4
|
678 |
+
4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9
|
679 |
+
KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI
|
680 |
+
rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi
|
681 |
+
94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB
|
682 |
+
sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi
|
683 |
+
gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo
|
684 |
+
kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE
|
685 |
+
vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
686 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t
|
687 |
+
O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua
|
688 |
+
AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP
|
689 |
+
9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/
|
690 |
+
eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m
|
691 |
+
0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
692 |
+
-----END CERTIFICATE-----
|
693 |
+
|
694 |
+
# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc.
|
695 |
+
# Subject: CN=GeoTrust Global CA O=GeoTrust Inc.
|
696 |
+
# Label: "GeoTrust Global CA"
|
697 |
+
# Serial: 144470
|
698 |
+
# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5
|
699 |
+
# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12
|
700 |
+
# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a
|
701 |
+
-----BEGIN CERTIFICATE-----
|
702 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
|
703 |
+
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
|
704 |
+
YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
|
705 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
|
706 |
+
R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
|
707 |
+
9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
|
708 |
+
fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
|
709 |
+
iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
|
710 |
+
1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
|
711 |
+
bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
|
712 |
+
MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
|
713 |
+
ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
|
714 |
+
uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
|
715 |
+
Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
|
716 |
+
tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
|
717 |
+
PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
|
718 |
+
hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
|
719 |
+
5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
|
720 |
+
-----END CERTIFICATE-----
|
721 |
+
|
722 |
+
# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc.
|
723 |
+
# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc.
|
724 |
+
# Label: "GeoTrust Global CA 2"
|
725 |
+
# Serial: 1
|
726 |
+
# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9
|
727 |
+
# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d
|
728 |
+
# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85
|
729 |
+
-----BEGIN CERTIFICATE-----
|
730 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW
|
731 |
+
MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs
|
732 |
+
IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG
|
733 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg
|
734 |
+
R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A
|
735 |
+
PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8
|
736 |
+
Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL
|
737 |
+
TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL
|
738 |
+
5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7
|
739 |
+
S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe
|
740 |
+
2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
741 |
+
FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap
|
742 |
+
EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td
|
743 |
+
EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv
|
744 |
+
/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN
|
745 |
+
A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0
|
746 |
+
abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF
|
747 |
+
I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz
|
748 |
+
4iIprn2DQKi6bA==
|
749 |
+
-----END CERTIFICATE-----
|
750 |
+
|
751 |
+
# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc.
|
752 |
+
# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc.
|
753 |
+
# Label: "GeoTrust Universal CA"
|
754 |
+
# Serial: 1
|
755 |
+
# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48
|
756 |
+
# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79
|
757 |
+
# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12
|
758 |
+
-----BEGIN CERTIFICATE-----
|
759 |
+
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
|
788 |
+
-----END CERTIFICATE-----
|
789 |
+
|
790 |
+
# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc.
|
791 |
+
# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc.
|
792 |
+
# Label: "GeoTrust Universal CA 2"
|
793 |
+
# Serial: 1
|
794 |
+
# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7
|
795 |
+
# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79
|
796 |
+
# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b
|
797 |
+
-----BEGIN CERTIFICATE-----
|
798 |
+
MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW
|
799 |
+
MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy
|
800 |
+
c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD
|
801 |
+
VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1
|
802 |
+
c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
803 |
+
AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81
|
804 |
+
WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG
|
805 |
+
FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq
|
806 |
+
XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL
|
807 |
+
se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb
|
808 |
+
KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd
|
809 |
+
IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73
|
810 |
+
y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt
|
811 |
+
hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc
|
812 |
+
QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4
|
813 |
+
Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV
|
814 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV
|
815 |
+
HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ
|
816 |
+
KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
|
817 |
+
dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ
|
818 |
+
L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr
|
819 |
+
Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo
|
820 |
+
ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY
|
821 |
+
T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz
|
822 |
+
GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m
|
823 |
+
1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV
|
824 |
+
OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH
|
825 |
+
6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX
|
826 |
+
QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
827 |
+
-----END CERTIFICATE-----
|
828 |
+
|
829 |
+
# Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc.
|
830 |
+
# Subject: CN=America Online Root Certification Authority 1 O=America Online Inc.
|
831 |
+
# Label: "America Online Root Certification Authority 1"
|
832 |
+
# Serial: 1
|
833 |
+
# MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e
|
834 |
+
# SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a
|
835 |
+
# SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3
|
836 |
+
-----BEGIN CERTIFICATE-----
|
837 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
|
838 |
+
MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
|
839 |
+
bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2
|
840 |
+
MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft
|
841 |
+
ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg
|
842 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
843 |
+
ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk
|
844 |
+
hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym
|
845 |
+
1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW
|
846 |
+
OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb
|
847 |
+
2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko
|
848 |
+
O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
|
849 |
+
AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU
|
850 |
+
AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
|
851 |
+
BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
|
852 |
+
Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb
|
853 |
+
LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir
|
854 |
+
oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C
|
855 |
+
MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
856 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
857 |
+
-----END CERTIFICATE-----
|
858 |
+
|
859 |
+
# Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc.
|
860 |
+
# Subject: CN=America Online Root Certification Authority 2 O=America Online Inc.
|
861 |
+
# Label: "America Online Root Certification Authority 2"
|
862 |
+
# Serial: 1
|
863 |
+
# MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf
|
864 |
+
# SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84
|
865 |
+
# SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd
|
866 |
+
-----BEGIN CERTIFICATE-----
|
867 |
+
MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
|
868 |
+
MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
|
869 |
+
bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2
|
870 |
+
MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft
|
871 |
+
ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg
|
872 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
873 |
+
ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC
|
874 |
+
206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci
|
875 |
+
KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2
|
876 |
+
JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9
|
877 |
+
BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e
|
878 |
+
Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B
|
879 |
+
PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67
|
880 |
+
Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq
|
881 |
+
Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ
|
882 |
+
o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3
|
883 |
+
+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj
|
884 |
+
YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj
|
885 |
+
FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
|
886 |
+
AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn
|
887 |
+
xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2
|
888 |
+
LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc
|
889 |
+
obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8
|
890 |
+
CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe
|
891 |
+
IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA
|
892 |
+
DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F
|
893 |
+
AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX
|
894 |
+
Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb
|
895 |
+
AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl
|
896 |
+
Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw
|
897 |
+
RY8mkaKO/qk=
|
898 |
+
-----END CERTIFICATE-----
|
899 |
+
|
900 |
+
# Issuer: CN=AAA Certificate Services O=Comodo CA Limited
|
901 |
+
# Subject: CN=AAA Certificate Services O=Comodo CA Limited
|
902 |
+
# Label: "Comodo AAA Services root"
|
903 |
+
# Serial: 1
|
904 |
+
# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0
|
905 |
+
# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49
|
906 |
+
# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4
|
907 |
+
-----BEGIN CERTIFICATE-----
|
908 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
|
909 |
+
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
|
910 |
+
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
|
911 |
+
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
|
912 |
+
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
|
913 |
+
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
|
914 |
+
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
915 |
+
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
|
916 |
+
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
|
917 |
+
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
|
918 |
+
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
|
919 |
+
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
|
920 |
+
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
|
921 |
+
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
922 |
+
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
|
923 |
+
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
|
924 |
+
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
|
925 |
+
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
|
926 |
+
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
927 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
|
928 |
+
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
|
929 |
+
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
|
930 |
+
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
931 |
+
-----END CERTIFICATE-----
|
932 |
+
|
933 |
+
# Issuer: CN=Secure Certificate Services O=Comodo CA Limited
|
934 |
+
# Subject: CN=Secure Certificate Services O=Comodo CA Limited
|
935 |
+
# Label: "Comodo Secure Services root"
|
936 |
+
# Serial: 1
|
937 |
+
# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd
|
938 |
+
# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1
|
939 |
+
# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8
|
940 |
+
-----BEGIN CERTIFICATE-----
|
941 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb
|
942 |
+
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
|
943 |
+
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp
|
944 |
+
ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow
|
945 |
+
fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
946 |
+
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV
|
947 |
+
BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB
|
948 |
+
BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM
|
949 |
+
cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S
|
950 |
+
HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996
|
951 |
+
CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk
|
952 |
+
3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz
|
953 |
+
6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV
|
954 |
+
HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
|
955 |
+
EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv
|
956 |
+
Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw
|
957 |
+
Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww
|
958 |
+
DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0
|
959 |
+
5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
960 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI
|
961 |
+
gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ
|
962 |
+
aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl
|
963 |
+
izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk=
|
964 |
+
-----END CERTIFICATE-----
|
965 |
+
|
966 |
+
# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited
|
967 |
+
# Subject: CN=Trusted Certificate Services O=Comodo CA Limited
|
968 |
+
# Label: "Comodo Trusted Services root"
|
969 |
+
# Serial: 1
|
970 |
+
# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27
|
971 |
+
# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd
|
972 |
+
# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69
|
973 |
+
-----BEGIN CERTIFICATE-----
|
974 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb
|
975 |
+
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
|
976 |
+
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0
|
977 |
+
aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla
|
978 |
+
MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
|
979 |
+
BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD
|
980 |
+
VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B
|
981 |
+
AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW
|
982 |
+
fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt
|
983 |
+
TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL
|
984 |
+
fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW
|
985 |
+
1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7
|
986 |
+
kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G
|
987 |
+
A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD
|
988 |
+
VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v
|
989 |
+
ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo
|
990 |
+
dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu
|
991 |
+
Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/
|
992 |
+
HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
993 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS
|
994 |
+
jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+
|
995 |
+
xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn
|
996 |
+
dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi
|
997 |
+
-----END CERTIFICATE-----
|
998 |
+
|
999 |
+
# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com
|
1000 |
+
# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com
|
1001 |
+
# Label: "UTN DATACorp SGC Root CA"
|
1002 |
+
# Serial: 91374294542884689855167577680241077609
|
1003 |
+
# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06
|
1004 |
+
# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4
|
1005 |
+
# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48
|
1006 |
+
-----BEGIN CERTIFICATE-----
|
1007 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB
|
1008 |
+
kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
|
1009 |
+
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
1010 |
+
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw
|
1011 |
+
IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG
|
1012 |
+
EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD
|
1013 |
+
VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu
|
1014 |
+
dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN
|
1015 |
+
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6
|
1016 |
+
E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ
|
1017 |
+
D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK
|
1018 |
+
4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq
|
1019 |
+
lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW
|
1020 |
+
bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB
|
1021 |
+
o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT
|
1022 |
+
MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js
|
1023 |
+
LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr
|
1024 |
+
BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB
|
1025 |
+
AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
1026 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj
|
1027 |
+
j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH
|
1028 |
+
KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv
|
1029 |
+
2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3
|
1030 |
+
mfnGV/TJVTl4uix5yaaIK/QI
|
1031 |
+
-----END CERTIFICATE-----
|
1032 |
+
|
1033 |
+
# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com
|
1034 |
+
# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com
|
1035 |
+
# Label: "UTN USERFirst Hardware Root CA"
|
1036 |
+
# Serial: 91374294542884704022267039221184531197
|
1037 |
+
# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39
|
1038 |
+
# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7
|
1039 |
+
# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37
|
1040 |
+
-----BEGIN CERTIFICATE-----
|
1041 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
|
1042 |
+
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
|
1043 |
+
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
1044 |
+
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
|
1045 |
+
SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG
|
1046 |
+
A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe
|
1047 |
+
MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v
|
1048 |
+
d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh
|
1049 |
+
cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn
|
1050 |
+
0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ
|
1051 |
+
M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a
|
1052 |
+
MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd
|
1053 |
+
oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI
|
1054 |
+
DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy
|
1055 |
+
oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
1056 |
+
VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0
|
1057 |
+
dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy
|
1058 |
+
bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF
|
1059 |
+
BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1060 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli
|
1061 |
+
CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE
|
1062 |
+
CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t
|
1063 |
+
3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS
|
1064 |
+
KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA==
|
1065 |
+
-----END CERTIFICATE-----
|
1066 |
+
|
1067 |
+
# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
|
1068 |
+
# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
|
1069 |
+
# Label: "XRamp Global CA Root"
|
1070 |
+
# Serial: 107108908803651509692980124233745014957
|
1071 |
+
# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1
|
1072 |
+
# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6
|
1073 |
+
# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2
|
1074 |
+
-----BEGIN CERTIFICATE-----
|
1075 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
|
1076 |
+
gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
|
1077 |
+
MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY
|
1078 |
+
UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx
|
1079 |
+
NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3
|
1080 |
+
dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy
|
1081 |
+
dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1082 |
+
dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6
|
1083 |
+
38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP
|
1084 |
+
KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q
|
1085 |
+
DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4
|
1086 |
+
qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa
|
1087 |
+
JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi
|
1088 |
+
PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P
|
1089 |
+
BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs
|
1090 |
+
jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0
|
1091 |
+
eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD
|
1092 |
+
ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR
|
1093 |
+
vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1094 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa
|
1095 |
+
IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
|
1096 |
+
i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
|
1097 |
+
O+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1098 |
+
-----END CERTIFICATE-----
|
1099 |
+
|
1100 |
+
# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority
|
1101 |
+
# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority
|
1102 |
+
# Label: "Go Daddy Class 2 CA"
|
1103 |
+
# Serial: 0
|
1104 |
+
# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67
|
1105 |
+
# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4
|
1106 |
+
# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4
|
1107 |
+
-----BEGIN CERTIFICATE-----
|
1108 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh
|
1109 |
+
MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE
|
1110 |
+
YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3
|
1111 |
+
MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo
|
1112 |
+
ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg
|
1113 |
+
MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN
|
1114 |
+
ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA
|
1115 |
+
PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w
|
1116 |
+
wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi
|
1117 |
+
EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY
|
1118 |
+
avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+
|
1119 |
+
YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE
|
1120 |
+
sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h
|
1121 |
+
/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5
|
1122 |
+
IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj
|
1123 |
+
YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
|
1124 |
+
ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy
|
1125 |
+
OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P
|
1126 |
+
TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1127 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER
|
1128 |
+
dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf
|
1129 |
+
ReYNnyicsbkqWletNw+vHX/bvZ8=
|
1130 |
+
-----END CERTIFICATE-----
|
1131 |
+
|
1132 |
+
# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority
|
1133 |
+
# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority
|
1134 |
+
# Label: "Starfield Class 2 CA"
|
1135 |
+
# Serial: 0
|
1136 |
+
# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24
|
1137 |
+
# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a
|
1138 |
+
# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58
|
1139 |
+
-----BEGIN CERTIFICATE-----
|
1140 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
|
1141 |
+
MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
|
1142 |
+
U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
|
1143 |
+
NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
|
1144 |
+
ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
|
1145 |
+
ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
|
1146 |
+
DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
|
1147 |
+
8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
|
1148 |
+
+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
|
1149 |
+
X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
|
1150 |
+
K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
|
1151 |
+
1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
|
1152 |
+
A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
|
1153 |
+
zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
|
1154 |
+
YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
|
1155 |
+
bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
|
1156 |
+
DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
|
1157 |
+
L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
|
1158 |
+
eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1159 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
|
1160 |
+
VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
|
1161 |
+
WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
|
1162 |
+
-----END CERTIFICATE-----
|
1163 |
+
|
1164 |
+
# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
|
1165 |
+
# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
|
1166 |
+
# Label: "StartCom Certification Authority"
|
1167 |
+
# Serial: 1
|
1168 |
+
# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16
|
1169 |
+
# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f
|
1170 |
+
# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea
|
1171 |
+
-----BEGIN CERTIFICATE-----
|
1172 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW
|
1173 |
+
MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
|
1174 |
+
Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
|
1175 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9
|
1176 |
+
MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
|
1177 |
+
U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
|
1178 |
+
cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
|
1179 |
+
A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
|
1180 |
+
pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
|
1181 |
+
OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
|
1182 |
+
Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
|
1183 |
+
Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
|
1184 |
+
HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
|
1185 |
+
Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
|
1186 |
+
+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
|
1187 |
+
Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
|
1188 |
+
Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
|
1189 |
+
26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
|
1190 |
+
AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1191 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j
|
1192 |
+
ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js
|
1193 |
+
LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM
|
1194 |
+
BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0
|
1195 |
+
Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy
|
1196 |
+
dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh
|
1197 |
+
cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh
|
1198 |
+
YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
|
1199 |
+
dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp
|
1200 |
+
bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ
|
1201 |
+
YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT
|
1202 |
+
TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ
|
1203 |
+
9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8
|
1204 |
+
jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW
|
1205 |
+
FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz
|
1206 |
+
ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1
|
1207 |
+
ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L
|
1208 |
+
EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu
|
1209 |
+
L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1210 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC
|
1211 |
+
O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V
|
1212 |
+
um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh
|
1213 |
+
NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14=
|
1214 |
+
-----END CERTIFICATE-----
|
1215 |
+
|
1216 |
+
# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
1217 |
+
# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
1218 |
+
# Label: "DigiCert Assured ID Root CA"
|
1219 |
+
# Serial: 17154717934120587862167794914071425081
|
1220 |
+
# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72
|
1221 |
+
# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43
|
1222 |
+
# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c
|
1223 |
+
-----BEGIN CERTIFICATE-----
|
1224 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
|
1225 |
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
1226 |
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
1227 |
+
b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
|
1228 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
1229 |
+
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
|
1230 |
+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
|
1231 |
+
JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
|
1232 |
+
mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
|
1233 |
+
wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
|
1234 |
+
VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
|
1235 |
+
AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
|
1236 |
+
AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
1237 |
+
BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
|
1238 |
+
pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
|
1239 |
+
dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
|
1240 |
+
fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
|
1241 |
+
NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
|
1242 |
+
H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1243 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1244 |
+
-----END CERTIFICATE-----
|
1245 |
+
|
1246 |
+
# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
|
1247 |
+
# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
|
1248 |
+
# Label: "DigiCert Global Root CA"
|
1249 |
+
# Serial: 10944719598952040374951832963794454346
|
1250 |
+
# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e
|
1251 |
+
# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36
|
1252 |
+
# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61
|
1253 |
+
-----BEGIN CERTIFICATE-----
|
1254 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
1255 |
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
1256 |
+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
1257 |
+
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
1258 |
+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
1259 |
+
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
1260 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
1261 |
+
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
1262 |
+
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
1263 |
+
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
1264 |
+
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
1265 |
+
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
1266 |
+
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
1267 |
+
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
1268 |
+
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
1269 |
+
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
1270 |
+
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
1271 |
+
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
1272 |
+
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1273 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1274 |
+
-----END CERTIFICATE-----
|
1275 |
+
|
1276 |
+
# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
|
1277 |
+
# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
|
1278 |
+
# Label: "DigiCert High Assurance EV Root CA"
|
1279 |
+
# Serial: 3553400076410547919724730734378100087
|
1280 |
+
# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a
|
1281 |
+
# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25
|
1282 |
+
# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf
|
1283 |
+
-----BEGIN CERTIFICATE-----
|
1284 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
|
1285 |
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
1286 |
+
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
|
1287 |
+
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
|
1288 |
+
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
|
1289 |
+
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
|
1290 |
+
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
|
1291 |
+
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
|
1292 |
+
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
|
1293 |
+
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
|
1294 |
+
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
|
1295 |
+
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
|
1296 |
+
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
|
1297 |
+
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
|
1298 |
+
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
|
1299 |
+
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
|
1300 |
+
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
|
1301 |
+
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
|
1302 |
+
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1303 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
|
1304 |
+
+OkuE6N36B9K
|
1305 |
+
-----END CERTIFICATE-----
|
1306 |
+
|
1307 |
+
# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc.
|
1308 |
+
# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc.
|
1309 |
+
# Label: "GeoTrust Primary Certification Authority"
|
1310 |
+
# Serial: 32798226551256963324313806436981982369
|
1311 |
+
# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf
|
1312 |
+
# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96
|
1313 |
+
# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c
|
1314 |
+
-----BEGIN CERTIFICATE-----
|
1315 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY
|
1316 |
+
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo
|
1317 |
+
R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx
|
1318 |
+
MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
1319 |
+
Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp
|
1320 |
+
ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
1321 |
+
AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9
|
1322 |
+
AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA
|
1323 |
+
ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0
|
1324 |
+
7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W
|
1325 |
+
kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI
|
1326 |
+
mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G
|
1327 |
+
A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ
|
1328 |
+
KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1
|
1329 |
+
6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl
|
1330 |
+
4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K
|
1331 |
+
oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj
|
1332 |
+
UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU
|
1333 |
+
AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
1334 |
+
-----END CERTIFICATE-----
|
1335 |
+
|
1336 |
+
# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only
|
1337 |
+
# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only
|
1338 |
+
# Label: "thawte Primary Root CA"
|
1339 |
+
# Serial: 69529181992039203566298953787712940909
|
1340 |
+
# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12
|
1341 |
+
# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81
|
1342 |
+
# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f
|
1343 |
+
-----BEGIN CERTIFICATE-----
|
1344 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
|
1345 |
+
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
|
1346 |
+
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
|
1347 |
+
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
|
1348 |
+
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
|
1349 |
+
NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
|
1350 |
+
LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
|
1351 |
+
A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
1352 |
+
IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
|
1353 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
|
1354 |
+
W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
|
1355 |
+
3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
|
1356 |
+
6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
|
1357 |
+
Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
|
1358 |
+
NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
|
1359 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
|
1360 |
+
r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
|
1361 |
+
DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
|
1362 |
+
YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
1363 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
|
1364 |
+
/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
|
1365 |
+
LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
|
1366 |
+
jVaMaA==
|
1367 |
+
-----END CERTIFICATE-----
|
1368 |
+
|
1369 |
+
# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only
|
1370 |
+
# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only
|
1371 |
+
# Label: "VeriSign Class 3 Public Primary Certification Authority - G5"
|
1372 |
+
# Serial: 33037644167568058970164719475676101450
|
1373 |
+
# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c
|
1374 |
+
# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5
|
1375 |
+
# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df
|
1376 |
+
-----BEGIN CERTIFICATE-----
|
1377 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
|
1378 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
|
1379 |
+
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
|
1380 |
+
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
|
1381 |
+
ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
|
1382 |
+
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
|
1383 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
|
1384 |
+
ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
|
1385 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
|
1386 |
+
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
|
1387 |
+
aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
|
1388 |
+
nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
|
1389 |
+
t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
|
1390 |
+
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
|
1391 |
+
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
|
1392 |
+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
|
1393 |
+
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
|
1394 |
+
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
|
1395 |
+
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
1396 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
|
1397 |
+
MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
|
1398 |
+
p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
|
1399 |
+
5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
|
1400 |
+
WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
|
1401 |
+
4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
|
1402 |
+
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
1403 |
+
-----END CERTIFICATE-----
|
1404 |
+
|
1405 |
+
# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited
|
1406 |
+
# Subject: CN=COMODO Certification Authority O=COMODO CA Limited
|
1407 |
+
# Label: "COMODO Certification Authority"
|
1408 |
+
# Serial: 104350513648249232941998508985834464573
|
1409 |
+
# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75
|
1410 |
+
# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b
|
1411 |
+
# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66
|
1412 |
+
-----BEGIN CERTIFICATE-----
|
1413 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
|
1414 |
+
gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
1415 |
+
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
|
1416 |
+
BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
|
1417 |
+
MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
|
1418 |
+
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
|
1419 |
+
RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
|
1420 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
|
1421 |
+
UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
|
1422 |
+
2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8
|
1423 |
+
Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
|
1424 |
+
+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
|
1425 |
+
DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
|
1426 |
+
nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
|
1427 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
|
1428 |
+
PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
|
1429 |
+
QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
|
1430 |
+
SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
|
1431 |
+
IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
1432 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
|
1433 |
+
zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
|
1434 |
+
BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
|
1435 |
+
ZQ==
|
1436 |
+
-----END CERTIFICATE-----
|
1437 |
+
|
1438 |
+
# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C.
|
1439 |
+
# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C.
|
1440 |
+
# Label: "Network Solutions Certificate Authority"
|
1441 |
+
# Serial: 116697915152937497490437556386812487904
|
1442 |
+
# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e
|
1443 |
+
# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce
|
1444 |
+
# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c
|
1445 |
+
-----BEGIN CERTIFICATE-----
|
1446 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi
|
1447 |
+
MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
1448 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp
|
1449 |
+
dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV
|
1450 |
+
UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO
|
1451 |
+
ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
1452 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz
|
1453 |
+
c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP
|
1454 |
+
OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl
|
1455 |
+
mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF
|
1456 |
+
BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4
|
1457 |
+
qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw
|
1458 |
+
gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB
|
1459 |
+
BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu
|
1460 |
+
bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp
|
1461 |
+
dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8
|
1462 |
+
6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/
|
1463 |
+
h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH
|
1464 |
+
/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
1465 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
|
1466 |
+
pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
1467 |
+
-----END CERTIFICATE-----
|
1468 |
+
|
1469 |
+
# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited
|
1470 |
+
# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited
|
1471 |
+
# Label: "COMODO ECC Certification Authority"
|
1472 |
+
# Serial: 41578283867086692638256921589707938090
|
1473 |
+
# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23
|
1474 |
+
# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11
|
1475 |
+
# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7
|
1476 |
+
-----BEGIN CERTIFICATE-----
|
1477 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
|
1478 |
+
MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
|
1479 |
+
BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
|
1480 |
+
IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
|
1481 |
+
MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
|
1482 |
+
ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
|
1483 |
+
T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
|
1484 |
+
biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
|
1485 |
+
FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
|
1486 |
+
cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
|
1487 |
+
BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
|
1488 |
+
BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
|
1489 |
+
fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
|
1490 |
+
GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
1491 |
+
-----END CERTIFICATE-----
|
1492 |
+
|
1493 |
+
# Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA
|
1494 |
+
# Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA
|
1495 |
+
# Label: "TC TrustCenter Class 2 CA II"
|
1496 |
+
# Serial: 941389028203453866782103406992443
|
1497 |
+
# MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23
|
1498 |
+
# SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e
|
1499 |
+
# SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4
|
1500 |
+
-----BEGIN CERTIFICATE-----
|
1501 |
+
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL
|
1502 |
+
MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV
|
1503 |
+
BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0
|
1504 |
+
Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1
|
1505 |
+
OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i
|
1506 |
+
SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc
|
1507 |
+
VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
1508 |
+
ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf
|
1509 |
+
tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg
|
1510 |
+
uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J
|
1511 |
+
XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK
|
1512 |
+
8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99
|
1513 |
+
5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud
|
1514 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3
|
1515 |
+
kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy
|
1516 |
+
dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6
|
1517 |
+
Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz
|
1518 |
+
JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290
|
1519 |
+
Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
1520 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS
|
1521 |
+
GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt
|
1522 |
+
ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8
|
1523 |
+
au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV
|
1524 |
+
hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI
|
1525 |
+
dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ==
|
1526 |
+
-----END CERTIFICATE-----
|
1527 |
+
|
1528 |
+
# Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA
|
1529 |
+
# Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA
|
1530 |
+
# Label: "TC TrustCenter Class 3 CA II"
|
1531 |
+
# Serial: 1506523511417715638772220530020799
|
1532 |
+
# MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e
|
1533 |
+
# SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5
|
1534 |
+
# SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e
|
1535 |
+
-----BEGIN CERTIFICATE-----
|
1536 |
+
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL
|
1537 |
+
MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV
|
1538 |
+
BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0
|
1539 |
+
Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1
|
1540 |
+
OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i
|
1541 |
+
SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc
|
1542 |
+
VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
1543 |
+
ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW
|
1544 |
+
Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q
|
1545 |
+
Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2
|
1546 |
+
1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq
|
1547 |
+
ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1
|
1548 |
+
Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud
|
1549 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX
|
1550 |
+
XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy
|
1551 |
+
dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6
|
1552 |
+
Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz
|
1553 |
+
JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290
|
1554 |
+
Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
1555 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN
|
1556 |
+
irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8
|
1557 |
+
TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6
|
1558 |
+
g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB
|
1559 |
+
95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj
|
1560 |
+
S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A==
|
1561 |
+
-----END CERTIFICATE-----
|
1562 |
+
|
1563 |
+
# Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
|
1564 |
+
# Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
|
1565 |
+
# Label: "TC TrustCenter Universal CA I"
|
1566 |
+
# Serial: 601024842042189035295619584734726
|
1567 |
+
# MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c
|
1568 |
+
# SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3
|
1569 |
+
# SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7
|
1570 |
+
-----BEGIN CERTIFICATE-----
|
1571 |
+
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL
|
1572 |
+
MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV
|
1573 |
+
BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1
|
1574 |
+
c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx
|
1575 |
+
MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg
|
1576 |
+
R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD
|
1577 |
+
VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN
|
1578 |
+
AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR
|
1579 |
+
JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T
|
1580 |
+
fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu
|
1581 |
+
jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z
|
1582 |
+
wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ
|
1583 |
+
fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD
|
1584 |
+
VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO
|
1585 |
+
BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G
|
1586 |
+
CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1
|
1587 |
+
7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn
|
1588 |
+
8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs
|
1589 |
+
ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
1590 |
+
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/
|
1591 |
+
2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
1592 |
+
-----END CERTIFICATE-----
|
1593 |
+
|
1594 |
+
# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc
|
1595 |
+
# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc
|
1596 |
+
# Label: "Cybertrust Global Root"
|
1597 |
+
# Serial: 4835703278459682877484360
|
1598 |
+
# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1
|
1599 |
+
# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6
|
1600 |
+
# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3
|
1601 |
+
-----BEGIN CERTIFICATE-----
|
1602 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG
|
1603 |
+
A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh
|
1604 |
+
bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE
|
1605 |
+
ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS
|
1606 |
+
b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5
|
1607 |
+
7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS
|
1608 |
+
J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y
|
1609 |
+
HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP
|
1610 |
+
t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz
|
1611 |
+
FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY
|
1612 |
+
XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/
|
1613 |
+
MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw
|
1614 |
+
hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js
|
1615 |
+
MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA
|
1616 |
+
A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj
|
1617 |
+
Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx
|
1618 |
+
XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o
|
1619 |
+
omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc
|
1620 |
+
A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
1621 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
1622 |
+
-----END CERTIFICATE-----
|
1623 |
+
|
1624 |
+
# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
|
1625 |
+
# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
|
1626 |
+
# Label: "GeoTrust Primary Certification Authority - G3"
|
1627 |
+
# Serial: 28809105769928564313984085209975885599
|
1628 |
+
# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05
|
1629 |
+
# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd
|
1630 |
+
# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4
|
1631 |
+
-----BEGIN CERTIFICATE-----
|
1632 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB
|
1633 |
+
mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT
|
1634 |
+
MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
|
1635 |
+
eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1636 |
+
cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ
|
1637 |
+
BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
1638 |
+
MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0
|
1639 |
+
BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
|
1640 |
+
LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz
|
1641 |
+
+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm
|
1642 |
+
hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn
|
1643 |
+
5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W
|
1644 |
+
JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL
|
1645 |
+
DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC
|
1646 |
+
huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
|
1647 |
+
HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB
|
1648 |
+
AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB
|
1649 |
+
zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN
|
1650 |
+
kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
1651 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH
|
1652 |
+
SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G
|
1653 |
+
spki4cErx5z481+oghLrGREt
|
1654 |
+
-----END CERTIFICATE-----
|
1655 |
+
|
1656 |
+
# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only
|
1657 |
+
# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only
|
1658 |
+
# Label: "thawte Primary Root CA - G2"
|
1659 |
+
# Serial: 71758320672825410020661621085256472406
|
1660 |
+
# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f
|
1661 |
+
# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12
|
1662 |
+
# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57
|
1663 |
+
-----BEGIN CERTIFICATE-----
|
1664 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL
|
1665 |
+
MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp
|
1666 |
+
IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi
|
1667 |
+
BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw
|
1668 |
+
MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
1669 |
+
d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig
|
1670 |
+
YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v
|
1671 |
+
dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/
|
1672 |
+
BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6
|
1673 |
+
papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E
|
1674 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K
|
1675 |
+
DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3
|
1676 |
+
KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox
|
1677 |
+
XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
1678 |
+
-----END CERTIFICATE-----
|
1679 |
+
|
1680 |
+
# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only
|
1681 |
+
# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only
|
1682 |
+
# Label: "thawte Primary Root CA - G3"
|
1683 |
+
# Serial: 127614157056681299805556476275995414779
|
1684 |
+
# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31
|
1685 |
+
# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2
|
1686 |
+
# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c
|
1687 |
+
-----BEGIN CERTIFICATE-----
|
1688 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB
|
1689 |
+
rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
|
1690 |
+
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
|
1691 |
+
MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV
|
1692 |
+
BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa
|
1693 |
+
Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl
|
1694 |
+
LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u
|
1695 |
+
MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl
|
1696 |
+
ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz
|
1697 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm
|
1698 |
+
gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8
|
1699 |
+
YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf
|
1700 |
+
b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9
|
1701 |
+
9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S
|
1702 |
+
zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk
|
1703 |
+
OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
|
1704 |
+
HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA
|
1705 |
+
2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW
|
1706 |
+
oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
1707 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c
|
1708 |
+
KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM
|
1709 |
+
m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu
|
1710 |
+
MdRAGmI0Nj81Aa6sY6A=
|
1711 |
+
-----END CERTIFICATE-----
|
1712 |
+
|
1713 |
+
# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
|
1714 |
+
# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
|
1715 |
+
# Label: "GeoTrust Primary Certification Authority - G2"
|
1716 |
+
# Serial: 80682863203381065782177908751794619243
|
1717 |
+
# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a
|
1718 |
+
# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0
|
1719 |
+
# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66
|
1720 |
+
-----BEGIN CERTIFICATE-----
|
1721 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL
|
1722 |
+
MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj
|
1723 |
+
KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2
|
1724 |
+
MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1725 |
+
eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV
|
1726 |
+
BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw
|
1727 |
+
NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV
|
1728 |
+
BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
|
1729 |
+
MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL
|
1730 |
+
So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal
|
1731 |
+
tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
|
1732 |
+
BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG
|
1733 |
+
CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT
|
1734 |
+
qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz
|
1735 |
+
rD6ogRLQy7rQkgu2npaqBA+K
|
1736 |
+
-----END CERTIFICATE-----
|
1737 |
+
|
1738 |
+
# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
|
1739 |
+
# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
|
1740 |
+
# Label: "VeriSign Universal Root Certification Authority"
|
1741 |
+
# Serial: 85209574734084581917763752644031726877
|
1742 |
+
# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19
|
1743 |
+
# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54
|
1744 |
+
# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c
|
1745 |
+
-----BEGIN CERTIFICATE-----
|
1746 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB
|
1747 |
+
vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
|
1748 |
+
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp
|
1749 |
+
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W
|
1750 |
+
ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
|
1751 |
+
Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX
|
1752 |
+
MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
|
1753 |
+
IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y
|
1754 |
+
IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh
|
1755 |
+
bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
1756 |
+
AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF
|
1757 |
+
9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH
|
1758 |
+
H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H
|
1759 |
+
LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN
|
1760 |
+
/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT
|
1761 |
+
rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud
|
1762 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
|
1763 |
+
WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs
|
1764 |
+
exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
1765 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4
|
1766 |
+
sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+
|
1767 |
+
seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz
|
1768 |
+
4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+
|
1769 |
+
BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR
|
1770 |
+
lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
|
1771 |
+
7M2CYfE45k+XmCpajQ==
|
1772 |
+
-----END CERTIFICATE-----
|
1773 |
+
|
1774 |
+
# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only
|
1775 |
+
# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only
|
1776 |
+
# Label: "VeriSign Class 3 Public Primary Certification Authority - G4"
|
1777 |
+
# Serial: 63143484348153506665311985501458640051
|
1778 |
+
# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41
|
1779 |
+
# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a
|
1780 |
+
# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79
|
1781 |
+
-----BEGIN CERTIFICATE-----
|
1782 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL
|
1783 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
|
1784 |
+
ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln
|
1785 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
|
1786 |
+
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
|
1787 |
+
aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG
|
1788 |
+
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp
|
1789 |
+
U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg
|
1790 |
+
SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln
|
1791 |
+
biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
1792 |
+
IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm
|
1793 |
+
GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve
|
1794 |
+
fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw
|
1795 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ
|
1796 |
+
aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj
|
1797 |
+
aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW
|
1798 |
+
kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC
|
1799 |
+
4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga
|
1800 |
+
FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
1801 |
+
-----END CERTIFICATE-----
|
1802 |
+
|
1803 |
+
# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
1804 |
+
# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
1805 |
+
# Label: "Verisign Class 3 Public Primary Certification Authority"
|
1806 |
+
# Serial: 80507572722862485515306429940691309246
|
1807 |
+
# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4
|
1808 |
+
# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b
|
1809 |
+
# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05
|
1810 |
+
-----BEGIN CERTIFICATE-----
|
1811 |
+
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
|
1812 |
+
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
1813 |
+
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
1814 |
+
MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
1815 |
+
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
1816 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
1817 |
+
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
1818 |
+
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
1819 |
+
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
1820 |
+
CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
|
1821 |
+
2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
|
1822 |
+
2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
|
1823 |
+
-----END CERTIFICATE-----
|
1824 |
+
|
1825 |
+
# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
|
1826 |
+
# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
|
1827 |
+
# Label: "GlobalSign Root CA - R3"
|
1828 |
+
# Serial: 4835703278459759426209954
|
1829 |
+
# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28
|
1830 |
+
# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad
|
1831 |
+
# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b
|
1832 |
+
-----BEGIN CERTIFICATE-----
|
1833 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
|
1834 |
+
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
|
1835 |
+
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
|
1836 |
+
MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
|
1837 |
+
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
|
1838 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
|
1839 |
+
RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
|
1840 |
+
gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
|
1841 |
+
KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
|
1842 |
+
QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
|
1843 |
+
XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
|
1844 |
+
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
|
1845 |
+
LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
|
1846 |
+
RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
|
1847 |
+
jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
|
1848 |
+
6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
|
1849 |
+
mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
|
1850 |
+
Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
|
1851 |
+
WD9f
|
1852 |
+
-----END CERTIFICATE-----
|
1853 |
+
|
1854 |
+
# Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
|
1855 |
+
# Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
|
1856 |
+
# Label: "TC TrustCenter Universal CA III"
|
1857 |
+
# Serial: 2010889993983507346460533407902964
|
1858 |
+
# MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b
|
1859 |
+
# SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87
|
1860 |
+
# SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d
|
1861 |
+
-----BEGIN CERTIFICATE-----
|
1862 |
+
MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL
|
1863 |
+
MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV
|
1864 |
+
BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1
|
1865 |
+
c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy
|
1866 |
+
MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl
|
1867 |
+
ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm
|
1868 |
+
BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG
|
1869 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF
|
1870 |
+
5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv
|
1871 |
+
DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v
|
1872 |
+
zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT
|
1873 |
+
yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj
|
1874 |
+
dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh
|
1875 |
+
MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB
|
1876 |
+
Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI
|
1877 |
+
4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz
|
1878 |
+
dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY
|
1879 |
+
aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G
|
1880 |
+
DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
|
1881 |
+
CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH
|
1882 |
+
LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
|
1883 |
+
-----END CERTIFICATE-----
|
1884 |
+
|
1885 |
+
# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
|
1886 |
+
# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
|
1887 |
+
# Label: "Go Daddy Root Certificate Authority - G2"
|
1888 |
+
# Serial: 0
|
1889 |
+
# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01
|
1890 |
+
# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b
|
1891 |
+
# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da
|
1892 |
+
-----BEGIN CERTIFICATE-----
|
1893 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
|
1894 |
+
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
|
1895 |
+
EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
|
1896 |
+
ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
|
1897 |
+
NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
|
1898 |
+
EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
|
1899 |
+
AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
|
1900 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
|
1901 |
+
E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
|
1902 |
+
/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
|
1903 |
+
DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
|
1904 |
+
GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
|
1905 |
+
tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
|
1906 |
+
AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
|
1907 |
+
FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
|
1908 |
+
WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
|
1909 |
+
9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
|
1910 |
+
gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
|
1911 |
+
2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
1912 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
|
1913 |
+
4uJEvlz36hz1
|
1914 |
+
-----END CERTIFICATE-----
|
1915 |
+
|
1916 |
+
# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc.
|
1917 |
+
# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc.
|
1918 |
+
# Label: "Starfield Root Certificate Authority - G2"
|
1919 |
+
# Serial: 0
|
1920 |
+
# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96
|
1921 |
+
# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e
|
1922 |
+
# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5
|
1923 |
+
-----BEGIN CERTIFICATE-----
|
1924 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx
|
1925 |
+
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
|
1926 |
+
HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs
|
1927 |
+
ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw
|
1928 |
+
MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
1929 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj
|
1930 |
+
aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp
|
1931 |
+
Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
1932 |
+
ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg
|
1933 |
+
nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1
|
1934 |
+
HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N
|
1935 |
+
Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN
|
1936 |
+
dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0
|
1937 |
+
HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
|
1938 |
+
BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G
|
1939 |
+
CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU
|
1940 |
+
sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3
|
1941 |
+
4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg
|
1942 |
+
8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
1943 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1
|
1944 |
+
mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
1945 |
+
-----END CERTIFICATE-----
|
1946 |
+
|
1947 |
+
# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc.
|
1948 |
+
# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc.
|
1949 |
+
# Label: "Starfield Services Root Certificate Authority - G2"
|
1950 |
+
# Serial: 0
|
1951 |
+
# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2
|
1952 |
+
# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f
|
1953 |
+
# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5
|
1954 |
+
-----BEGIN CERTIFICATE-----
|
1955 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx
|
1956 |
+
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
|
1957 |
+
HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs
|
1958 |
+
ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
1959 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD
|
1960 |
+
VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy
|
1961 |
+
ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy
|
1962 |
+
dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
1963 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p
|
1964 |
+
OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2
|
1965 |
+
8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K
|
1966 |
+
Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe
|
1967 |
+
hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk
|
1968 |
+
6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw
|
1969 |
+
DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q
|
1970 |
+
AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI
|
1971 |
+
bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB
|
1972 |
+
ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z
|
1973 |
+
qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
1974 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn
|
1975 |
+
0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN
|
1976 |
+
sSi6
|
1977 |
+
-----END CERTIFICATE-----
|
1978 |
+
|
1979 |
+
# Issuer: CN=AffirmTrust Commercial O=AffirmTrust
|
1980 |
+
# Subject: CN=AffirmTrust Commercial O=AffirmTrust
|
1981 |
+
# Label: "AffirmTrust Commercial"
|
1982 |
+
# Serial: 8608355977964138876
|
1983 |
+
# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7
|
1984 |
+
# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7
|
1985 |
+
# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7
|
1986 |
+
-----BEGIN CERTIFICATE-----
|
1987 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE
|
1988 |
+
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
|
1989 |
+
dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL
|
1990 |
+
MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
|
1991 |
+
cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
1992 |
+
AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP
|
1993 |
+
Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr
|
1994 |
+
ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL
|
1995 |
+
MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1
|
1996 |
+
yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr
|
1997 |
+
VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/
|
1998 |
+
nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
|
1999 |
+
KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG
|
2000 |
+
XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj
|
2001 |
+
vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt
|
2002 |
+
Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g
|
2003 |
+
N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC
|
2004 |
+
nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
2005 |
+
-----END CERTIFICATE-----
|
2006 |
+
|
2007 |
+
# Issuer: CN=AffirmTrust Networking O=AffirmTrust
|
2008 |
+
# Subject: CN=AffirmTrust Networking O=AffirmTrust
|
2009 |
+
# Label: "AffirmTrust Networking"
|
2010 |
+
# Serial: 8957382827206547757
|
2011 |
+
# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f
|
2012 |
+
# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f
|
2013 |
+
# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b
|
2014 |
+
-----BEGIN CERTIFICATE-----
|
2015 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE
|
2016 |
+
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
|
2017 |
+
dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL
|
2018 |
+
MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
|
2019 |
+
cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
2020 |
+
AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y
|
2021 |
+
YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua
|
2022 |
+
kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL
|
2023 |
+
QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp
|
2024 |
+
6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG
|
2025 |
+
yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i
|
2026 |
+
QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
|
2027 |
+
KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO
|
2028 |
+
tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu
|
2029 |
+
QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ
|
2030 |
+
Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u
|
2031 |
+
olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48
|
2032 |
+
x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
2033 |
+
-----END CERTIFICATE-----
|
2034 |
+
|
2035 |
+
# Issuer: CN=AffirmTrust Premium O=AffirmTrust
|
2036 |
+
# Subject: CN=AffirmTrust Premium O=AffirmTrust
|
2037 |
+
# Label: "AffirmTrust Premium"
|
2038 |
+
# Serial: 7893706540734352110
|
2039 |
+
# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57
|
2040 |
+
# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27
|
2041 |
+
# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a
|
2042 |
+
-----BEGIN CERTIFICATE-----
|
2043 |
+
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
|
2071 |
+
KeC2uAloGRwYQw==
|
2072 |
+
-----END CERTIFICATE-----
|
2073 |
+
|
2074 |
+
# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust
|
2075 |
+
# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust
|
2076 |
+
# Label: "AffirmTrust Premium ECC"
|
2077 |
+
# Serial: 8401224907861490260
|
2078 |
+
# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d
|
2079 |
+
# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb
|
2080 |
+
# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23
|
2081 |
+
-----BEGIN CERTIFICATE-----
|
2082 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC
|
2083 |
+
VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ
|
2084 |
+
cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ
|
2085 |
+
BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt
|
2086 |
+
VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D
|
2087 |
+
0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9
|
2088 |
+
ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G
|
2089 |
+
A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G
|
2090 |
+
A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs
|
2091 |
+
aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I
|
2092 |
+
flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==
|
2093 |
+
-----END CERTIFICATE-----
|
2094 |
+
|
2095 |
+
# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
|
2096 |
+
# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
|
2097 |
+
# Label: "StartCom Certification Authority"
|
2098 |
+
# Serial: 45
|
2099 |
+
# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16
|
2100 |
+
# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0
|
2101 |
+
# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11
|
2102 |
+
-----BEGIN CERTIFICATE-----
|
2103 |
+
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW
|
2104 |
+
MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
|
2105 |
+
Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
|
2106 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9
|
2107 |
+
MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
|
2108 |
+
U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
|
2109 |
+
cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
|
2110 |
+
A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
|
2111 |
+
pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
|
2112 |
+
OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
|
2113 |
+
Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
|
2114 |
+
Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
|
2115 |
+
HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
|
2116 |
+
Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
|
2117 |
+
+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
|
2118 |
+
Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
|
2119 |
+
Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
|
2120 |
+
26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
|
2121 |
+
AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
2122 |
+
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul
|
2123 |
+
F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC
|
2124 |
+
ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w
|
2125 |
+
ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk
|
2126 |
+
aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0
|
2127 |
+
YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg
|
2128 |
+
c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0
|
2129 |
+
aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
|
2130 |
+
d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG
|
2131 |
+
CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1
|
2132 |
+
dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF
|
2133 |
+
wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS
|
2134 |
+
Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst
|
2135 |
+
0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc
|
2136 |
+
pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl
|
2137 |
+
CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF
|
2138 |
+
P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK
|
2139 |
+
1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm
|
2140 |
+
KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
2141 |
+
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ
|
2142 |
+
8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm
|
2143 |
+
fyWl8kgAwKQB2j8=
|
2144 |
+
-----END CERTIFICATE-----
|
2145 |
+
|
2146 |
+
# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd.
|
2147 |
+
# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd.
|
2148 |
+
# Label: "StartCom Certification Authority G2"
|
2149 |
+
# Serial: 59
|
2150 |
+
# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64
|
2151 |
+
# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17
|
2152 |
+
# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95
|
2153 |
+
-----BEGIN CERTIFICATE-----
|
2154 |
+
MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW
|
2155 |
+
MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm
|
2156 |
+
aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1
|
2157 |
+
OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG
|
2158 |
+
A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G
|
2159 |
+
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ
|
2160 |
+
JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD
|
2161 |
+
vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo
|
2162 |
+
D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/
|
2163 |
+
Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW
|
2164 |
+
RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK
|
2165 |
+
HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN
|
2166 |
+
nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM
|
2167 |
+
0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i
|
2168 |
+
UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9
|
2169 |
+
Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg
|
2170 |
+
TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
2171 |
+
AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL
|
2172 |
+
BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
|
2173 |
+
2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX
|
2174 |
+
UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl
|
2175 |
+
6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK
|
2176 |
+
9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ
|
2177 |
+
HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI
|
2178 |
+
wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY
|
2179 |
+
XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l
|
2180 |
+
IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo
|
2181 |
+
hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr
|
2182 |
+
so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI
|
2183 |
+
-----END CERTIFICATE-----
|
google/Model.php
ADDED
@@ -0,0 +1,250 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* This class defines attributes, valid values, and usage which is generated
|
20 |
+
* from a given json schema.
|
21 |
+
* http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5
|
22 |
+
*
|
23 |
+
* @author Chirag Shah <chirags@google.com>
|
24 |
+
*
|
25 |
+
*/
|
26 |
+
class Google_Model implements ArrayAccess
|
27 |
+
{
|
28 |
+
protected $modelData = array();
|
29 |
+
protected $processed = array();
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Polymorphic - accepts a variable number of arguments dependent
|
33 |
+
* on the type of the model subclass.
|
34 |
+
*/
|
35 |
+
public function __construct()
|
36 |
+
{
|
37 |
+
if (func_num_args() == 1 && is_array(func_get_arg(0))) {
|
38 |
+
// Initialize the model with the array's contents.
|
39 |
+
$array = func_get_arg(0);
|
40 |
+
$this->mapTypes($array);
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
public function __get($key)
|
45 |
+
{
|
46 |
+
$keyTypeName = $this->keyType($key);
|
47 |
+
$keyDataType = $this->dataType($key);
|
48 |
+
if (isset($this->$keyTypeName) && !isset($this->processed[$key])) {
|
49 |
+
if (isset($this->modelData[$key])) {
|
50 |
+
$val = $this->modelData[$key];
|
51 |
+
} else if (isset($this->$keyDataType) &&
|
52 |
+
($this->$keyDataType == 'array' || $this->$keyDataType == 'map')) {
|
53 |
+
$val = array();
|
54 |
+
} else {
|
55 |
+
$val = null;
|
56 |
+
}
|
57 |
+
|
58 |
+
if ($this->isAssociativeArray($val)) {
|
59 |
+
if (isset($this->$keyDataType) && 'map' == $this->$keyDataType) {
|
60 |
+
foreach ($val as $arrayKey => $arrayItem) {
|
61 |
+
$this->modelData[$key][$arrayKey] =
|
62 |
+
$this->createObjectFromName($keyTypeName, $arrayItem);
|
63 |
+
}
|
64 |
+
} else {
|
65 |
+
$this->modelData[$key] = $this->createObjectFromName($keyTypeName, $val);
|
66 |
+
}
|
67 |
+
} else if (is_array($val)) {
|
68 |
+
$arrayObject = array();
|
69 |
+
foreach ($val as $arrayIndex => $arrayItem) {
|
70 |
+
$arrayObject[$arrayIndex] =
|
71 |
+
$this->createObjectFromName($keyTypeName, $arrayItem);
|
72 |
+
}
|
73 |
+
$this->modelData[$key] = $arrayObject;
|
74 |
+
}
|
75 |
+
$this->processed[$key] = true;
|
76 |
+
}
|
77 |
+
|
78 |
+
return $this->modelData[$key];
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Initialize this object's properties from an array.
|
83 |
+
*
|
84 |
+
* @param array $array Used to seed this object's properties.
|
85 |
+
* @return void
|
86 |
+
*/
|
87 |
+
protected function mapTypes($array)
|
88 |
+
{
|
89 |
+
// Hard initilise simple types, lazy load more complex ones.
|
90 |
+
foreach ($array as $key => $val) {
|
91 |
+
if ( !property_exists($this, $this->keyType($key)) &&
|
92 |
+
property_exists($this, $key)) {
|
93 |
+
$this->$key = $val;
|
94 |
+
unset($array[$key]);
|
95 |
+
} elseif (property_exists($this, $camelKey = Google_Utils::camelCase($key))) {
|
96 |
+
// This checks if property exists as camelCase, leaving it in array as snake_case
|
97 |
+
// in case of backwards compatibility issues.
|
98 |
+
$this->$camelKey = $val;
|
99 |
+
}
|
100 |
+
}
|
101 |
+
$this->modelData = $array;
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Create a simplified object suitable for straightforward
|
106 |
+
* conversion to JSON. This is relatively expensive
|
107 |
+
* due to the usage of reflection, but shouldn't be called
|
108 |
+
* a whole lot, and is the most straightforward way to filter.
|
109 |
+
*/
|
110 |
+
public function toSimpleObject()
|
111 |
+
{
|
112 |
+
$object = new stdClass();
|
113 |
+
|
114 |
+
// Process all other data.
|
115 |
+
foreach ($this->modelData as $key => $val) {
|
116 |
+
$result = $this->getSimpleValue($val);
|
117 |
+
if ($result !== null) {
|
118 |
+
$object->$key = $result;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
// Process all public properties.
|
123 |
+
$reflect = new ReflectionObject($this);
|
124 |
+
$props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
|
125 |
+
foreach ($props as $member) {
|
126 |
+
$name = $member->getName();
|
127 |
+
$result = $this->getSimpleValue($this->$name);
|
128 |
+
if ($result !== null) {
|
129 |
+
$object->$name = $result;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
return $object;
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Handle different types of values, primarily
|
138 |
+
* other objects and map and array data types.
|
139 |
+
*/
|
140 |
+
private function getSimpleValue($value)
|
141 |
+
{
|
142 |
+
if ($value instanceof Google_Model) {
|
143 |
+
return $value->toSimpleObject();
|
144 |
+
} else if (is_array($value)) {
|
145 |
+
$return = array();
|
146 |
+
foreach ($value as $key => $a_value) {
|
147 |
+
$a_value = $this->getSimpleValue($a_value);
|
148 |
+
if ($a_value !== null) {
|
149 |
+
$return[$key] = $a_value;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
return $return;
|
153 |
+
}
|
154 |
+
return $value;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Returns true only if the array is associative.
|
159 |
+
* @param array $array
|
160 |
+
* @return bool True if the array is associative.
|
161 |
+
*/
|
162 |
+
protected function isAssociativeArray($array)
|
163 |
+
{
|
164 |
+
if (!is_array($array)) {
|
165 |
+
return false;
|
166 |
+
}
|
167 |
+
$keys = array_keys($array);
|
168 |
+
foreach ($keys as $key) {
|
169 |
+
if (is_string($key)) {
|
170 |
+
return true;
|
171 |
+
}
|
172 |
+
}
|
173 |
+
return false;
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Given a variable name, discover its type.
|
178 |
+
*
|
179 |
+
* @param $name
|
180 |
+
* @param $item
|
181 |
+
* @return object The object from the item.
|
182 |
+
*/
|
183 |
+
private function createObjectFromName($name, $item)
|
184 |
+
{
|
185 |
+
$type = $this->$name;
|
186 |
+
return new $type($item);
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Verify if $obj is an array.
|
191 |
+
* @throws Google_Exception Thrown if $obj isn't an array.
|
192 |
+
* @param array $obj Items that should be validated.
|
193 |
+
* @param string $method Method expecting an array as an argument.
|
194 |
+
*/
|
195 |
+
public function assertIsArray($obj, $method)
|
196 |
+
{
|
197 |
+
if ($obj && !is_array($obj)) {
|
198 |
+
throw new Google_Exception(
|
199 |
+
"Incorrect parameter type passed to $method(). Expected an array."
|
200 |
+
);
|
201 |
+
}
|
202 |
+
}
|
203 |
+
|
204 |
+
public function offsetExists($offset)
|
205 |
+
{
|
206 |
+
return isset($this->$offset) || isset($this->modelData[$offset]);
|
207 |
+
}
|
208 |
+
|
209 |
+
public function offsetGet($offset)
|
210 |
+
{
|
211 |
+
return isset($this->$offset) ?
|
212 |
+
$this->$offset :
|
213 |
+
$this->__get($offset);
|
214 |
+
}
|
215 |
+
|
216 |
+
public function offsetSet($offset, $value)
|
217 |
+
{
|
218 |
+
if (property_exists($this, $offset)) {
|
219 |
+
$this->$offset = $value;
|
220 |
+
} else {
|
221 |
+
$this->modelData[$offset] = $value;
|
222 |
+
$this->processed[$offset] = true;
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
public function offsetUnset($offset)
|
227 |
+
{
|
228 |
+
unset($this->modelData[$offset]);
|
229 |
+
}
|
230 |
+
|
231 |
+
protected function keyType($key)
|
232 |
+
{
|
233 |
+
return $key . "Type";
|
234 |
+
}
|
235 |
+
|
236 |
+
protected function dataType($key)
|
237 |
+
{
|
238 |
+
return $key . "DataType";
|
239 |
+
}
|
240 |
+
|
241 |
+
public function __isset($key)
|
242 |
+
{
|
243 |
+
return isset($this->modelData[$key]);
|
244 |
+
}
|
245 |
+
|
246 |
+
public function __unset($key)
|
247 |
+
{
|
248 |
+
unset($this->modelData[$key]);
|
249 |
+
}
|
250 |
+
}
|
google/Service.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
class Google_Service
|
19 |
+
{
|
20 |
+
public $version;
|
21 |
+
public $servicePath;
|
22 |
+
public $availableScopes;
|
23 |
+
public $resource;
|
24 |
+
private $client;
|
25 |
+
|
26 |
+
public function __construct(Google_Client $client)
|
27 |
+
{
|
28 |
+
$this->client = $client;
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Return the associated Google_Client class.
|
33 |
+
* @return Google_Client
|
34 |
+
*/
|
35 |
+
public function getClient()
|
36 |
+
{
|
37 |
+
return $this->client;
|
38 |
+
}
|
39 |
+
}
|
google/Service/Exception.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once APSL_PLUGIN_DIR."google/Exception.php";
|
4 |
+
|
5 |
+
class Google_Service_Exception extends Google_Exception
|
6 |
+
{
|
7 |
+
/**
|
8 |
+
* Optional list of errors returned in a JSON body of an HTTP error response.
|
9 |
+
*/
|
10 |
+
protected $errors = array();
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Override default constructor to add ability to set $errors.
|
14 |
+
*
|
15 |
+
* @param string $message
|
16 |
+
* @param int $code
|
17 |
+
* @param Exception|null $previous
|
18 |
+
* @param [{string, string}] errors List of errors returned in an HTTP
|
19 |
+
* response. Defaults to [].
|
20 |
+
*/
|
21 |
+
public function __construct(
|
22 |
+
$message,
|
23 |
+
$code = 0,
|
24 |
+
Exception $previous = null,
|
25 |
+
$errors = array()
|
26 |
+
) {
|
27 |
+
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
|
28 |
+
parent::__construct($message, $code, $previous);
|
29 |
+
} else {
|
30 |
+
parent::__construct($message, $code);
|
31 |
+
}
|
32 |
+
|
33 |
+
$this->errors = $errors;
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* An example of the possible errors returned.
|
38 |
+
*
|
39 |
+
* {
|
40 |
+
* "domain": "global",
|
41 |
+
* "reason": "authError",
|
42 |
+
* "message": "Invalid Credentials",
|
43 |
+
* "locationType": "header",
|
44 |
+
* "location": "Authorization",
|
45 |
+
* }
|
46 |
+
*
|
47 |
+
* @return [{string, string}] List of errors return in an HTTP response or [].
|
48 |
+
*/
|
49 |
+
public function getErrors()
|
50 |
+
{
|
51 |
+
return $this->errors;
|
52 |
+
}
|
53 |
+
}
|
google/Service/Oauth2.php
ADDED
@@ -0,0 +1,412 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* 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 under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Service definition for Oauth2 (v2).
|
20 |
+
*
|
21 |
+
* <p>
|
22 |
+
* Lets you access OAuth2 protocol related APIs.
|
23 |
+
* </p>
|
24 |
+
*
|
25 |
+
* <p>
|
26 |
+
* For more information about this service, see the API
|
27 |
+
* <a href="https://developers.google.com/accounts/docs/OAuth2" target="_blank">Documentation</a>
|
28 |
+
* </p>
|
29 |
+
*
|
30 |
+
* @author Google, Inc.
|
31 |
+
*/
|
32 |
+
class Google_Service_Oauth2 extends Google_Service
|
33 |
+
{
|
34 |
+
/** Know your basic profile info and list of people in your circles.. */
|
35 |
+
const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login";
|
36 |
+
/** Know who you are on Google. */
|
37 |
+
const PLUS_ME = "https://www.googleapis.com/auth/plus.me";
|
38 |
+
/** View your email address. */
|
39 |
+
const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email";
|
40 |
+
/** View your basic profile info. */
|
41 |
+
const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile";
|
42 |
+
|
43 |
+
public $userinfo;
|
44 |
+
public $userinfo_v2_me;
|
45 |
+
private $base_methods;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Constructs the internal representation of the Oauth2 service.
|
49 |
+
*
|
50 |
+
* @param Google_Client $client
|
51 |
+
*/
|
52 |
+
public function __construct(Google_Client $client)
|
53 |
+
{
|
54 |
+
parent::__construct($client);
|
55 |
+
$this->servicePath = '';
|
56 |
+
$this->version = 'v2';
|
57 |
+
$this->serviceName = 'oauth2';
|
58 |
+
|
59 |
+
$this->userinfo = new Google_Service_Oauth2_Userinfo_Resource(
|
60 |
+
$this,
|
61 |
+
$this->serviceName,
|
62 |
+
'userinfo',
|
63 |
+
array(
|
64 |
+
'methods' => array(
|
65 |
+
'get' => array(
|
66 |
+
'path' => 'oauth2/v2/userinfo',
|
67 |
+
'httpMethod' => 'GET',
|
68 |
+
'parameters' => array(),
|
69 |
+
),
|
70 |
+
)
|
71 |
+
)
|
72 |
+
);
|
73 |
+
$this->userinfo_v2_me = new Google_Service_Oauth2_UserinfoV2Me_Resource(
|
74 |
+
$this,
|
75 |
+
$this->serviceName,
|
76 |
+
'me',
|
77 |
+
array(
|
78 |
+
'methods' => array(
|
79 |
+
'get' => array(
|
80 |
+
'path' => 'userinfo/v2/me',
|
81 |
+
'httpMethod' => 'GET',
|
82 |
+
'parameters' => array(),
|
83 |
+
),
|
84 |
+
)
|
85 |
+
)
|
86 |
+
);
|
87 |
+
$this->base_methods = new Google_Service_Resource(
|
88 |
+
$this,
|
89 |
+
$this->serviceName,
|
90 |
+
'',
|
91 |
+
array(
|
92 |
+
'methods' => array(
|
93 |
+
'tokeninfo' => array(
|
94 |
+
'path' => 'oauth2/v2/tokeninfo',
|
95 |
+
'httpMethod' => 'POST',
|
96 |
+
'parameters' => array(
|
97 |
+
'access_token' => array(
|
98 |
+
'location' => 'query',
|
99 |
+
'type' => 'string',
|
100 |
+
),
|
101 |
+
'id_token' => array(
|
102 |
+
'location' => 'query',
|
103 |
+
'type' => 'string',
|
104 |
+
),
|
105 |
+
),
|
106 |
+
),
|
107 |
+
)
|
108 |
+
)
|
109 |
+
);
|
110 |
+
}
|
111 |
+
/**
|
112 |
+
* (tokeninfo)
|
113 |
+
*
|
114 |
+
* @param array $optParams Optional parameters.
|
115 |
+
*
|
116 |
+
* @opt_param string access_token
|
117 |
+
*
|
118 |
+
* @opt_param string id_token
|
119 |
+
*
|
120 |
+
* @return Google_Service_Oauth2_Tokeninfo
|
121 |
+
*/
|
122 |
+
public function tokeninfo($optParams = array())
|
123 |
+
{
|
124 |
+
$params = array();
|
125 |
+
$params = array_merge($params, $optParams);
|
126 |
+
return $this->base_methods->call('tokeninfo', array($params), "Google_Service_Oauth2_Tokeninfo");
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
|
131 |
+
/**
|
132 |
+
* The "userinfo" collection of methods.
|
133 |
+
* Typical usage is:
|
134 |
+
* <code>
|
135 |
+
* $oauth2Service = new Google_Service_Oauth2(...);
|
136 |
+
* $userinfo = $oauth2Service->userinfo;
|
137 |
+
* </code>
|
138 |
+
*/
|
139 |
+
class Google_Service_Oauth2_Userinfo_Resource extends Google_Service_Resource
|
140 |
+
{
|
141 |
+
|
142 |
+
/**
|
143 |
+
* (userinfo.get)
|
144 |
+
*
|
145 |
+
* @param array $optParams Optional parameters.
|
146 |
+
* @return Google_Service_Oauth2_Userinfoplus
|
147 |
+
*/
|
148 |
+
public function get($optParams = array())
|
149 |
+
{
|
150 |
+
$params = array();
|
151 |
+
$params = array_merge($params, $optParams);
|
152 |
+
return $this->call('get', array($params), "Google_Service_Oauth2_Userinfoplus");
|
153 |
+
}
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* The "v2" collection of methods.
|
158 |
+
* Typical usage is:
|
159 |
+
* <code>
|
160 |
+
* $oauth2Service = new Google_Service_Oauth2(...);
|
161 |
+
* $v2 = $oauth2Service->v2;
|
162 |
+
* </code>
|
163 |
+
*/
|
164 |
+
class Google_Service_Oauth2_UserinfoV2_Resource extends Google_Service_Resource
|
165 |
+
{
|
166 |
+
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* The "me" collection of methods.
|
171 |
+
* Typical usage is:
|
172 |
+
* <code>
|
173 |
+
* $oauth2Service = new Google_Service_Oauth2(...);
|
174 |
+
* $me = $oauth2Service->me;
|
175 |
+
* </code>
|
176 |
+
*/
|
177 |
+
class Google_Service_Oauth2_UserinfoV2Me_Resource extends Google_Service_Resource
|
178 |
+
{
|
179 |
+
|
180 |
+
/**
|
181 |
+
* (me.get)
|
182 |
+
*
|
183 |
+
* @param array $optParams Optional parameters.
|
184 |
+
* @return Google_Service_Oauth2_Userinfoplus
|
185 |
+
*/
|
186 |
+
public function get($optParams = array())
|
187 |
+
{
|
188 |
+
$params = array();
|
189 |
+
$params = array_merge($params, $optParams);
|
190 |
+
return $this->call('get', array($params), "Google_Service_Oauth2_Userinfoplus");
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
class Google_Service_Oauth2_Tokeninfo extends Google_Model
|
198 |
+
{
|
199 |
+
public $accessType;
|
200 |
+
public $audience;
|
201 |
+
public $email;
|
202 |
+
public $expiresIn;
|
203 |
+
public $issuedTo;
|
204 |
+
public $scope;
|
205 |
+
public $userId;
|
206 |
+
public $verifiedEmail;
|
207 |
+
|
208 |
+
public function setAccessType($accessType)
|
209 |
+
{
|
210 |
+
$this->accessType = $accessType;
|
211 |
+
}
|
212 |
+
|
213 |
+
public function getAccessType()
|
214 |
+
{
|
215 |
+
return $this->accessType;
|
216 |
+
}
|
217 |
+
|
218 |
+
public function setAudience($audience)
|
219 |
+
{
|
220 |
+
$this->audience = $audience;
|
221 |
+
}
|
222 |
+
|
223 |
+
public function getAudience()
|
224 |
+
{
|
225 |
+
return $this->audience;
|
226 |
+
}
|
227 |
+
|
228 |
+
public function setEmail($email)
|
229 |
+
{
|
230 |
+
$this->email = $email;
|
231 |
+
}
|
232 |
+
|
233 |
+
public function getEmail()
|
234 |
+
{
|
235 |
+
return $this->email;
|
236 |
+
}
|
237 |
+
|
238 |
+
public function setExpiresIn($expiresIn)
|
239 |
+
{
|
240 |
+
$this->expiresIn = $expiresIn;
|
241 |
+
}
|
242 |
+
|
243 |
+
public function getExpiresIn()
|
244 |
+
{
|
245 |
+
return $this->expiresIn;
|
246 |
+
}
|
247 |
+
|
248 |
+
public function setIssuedTo($issuedTo)
|
249 |
+
{
|
250 |
+
$this->issuedTo = $issuedTo;
|
251 |
+
}
|
252 |
+
|
253 |
+
public function getIssuedTo()
|
254 |
+
{
|
255 |
+
return $this->issuedTo;
|
256 |
+
}
|
257 |
+
|
258 |
+
public function setScope($scope)
|
259 |
+
{
|
260 |
+
$this->scope = $scope;
|
261 |
+
}
|
262 |
+
|
263 |
+
public function getScope()
|
264 |
+
{
|
265 |
+
return $this->scope;
|
266 |
+
}
|
267 |
+
|
268 |
+
public function setUserId($userId)
|
269 |
+
{
|
270 |
+
$this->userId = $userId;
|
271 |
+
}
|
272 |
+
|
273 |
+
public function getUserId()
|
274 |
+
{
|
275 |
+
return $this->userId;
|
276 |
+
}
|
277 |
+
|
278 |
+
public function setVerifiedEmail($verifiedEmail)
|
279 |
+
{
|
280 |
+
$this->verifiedEmail = $verifiedEmail;
|
281 |
+
}
|
282 |
+
|
283 |
+
public function getVerifiedEmail()
|
284 |
+
{
|
285 |
+
return $this->verifiedEmail;
|
286 |
+
}
|
287 |
+
}
|
288 |
+
|
289 |
+
class Google_Service_Oauth2_Userinfoplus extends Google_Model
|
290 |
+
{
|
291 |
+
public $email;
|
292 |
+
public $familyName;
|
293 |
+
public $gender;
|
294 |
+
public $givenName;
|
295 |
+
public $hd;
|
296 |
+
public $id;
|
297 |
+
public $link;
|
298 |
+
public $locale;
|
299 |
+
public $name;
|
300 |
+
public $picture;
|
301 |
+
public $verifiedEmail;
|
302 |
+
|
303 |
+
public function setEmail($email)
|
304 |
+
{
|
305 |
+
$this->email = $email;
|
306 |
+
}
|
307 |
+
|
308 |
+
public function getEmail()
|
309 |
+
{
|
310 |
+
return $this->email;
|
311 |
+
}
|
312 |
+
|
313 |
+
public function setFamilyName($familyName)
|
314 |
+
{
|
315 |
+
$this->familyName = $familyName;
|
316 |
+
}
|
317 |
+
|
318 |
+
public function getFamilyName()
|
319 |
+
{
|
320 |
+
return $this->familyName;
|
321 |
+
}
|
322 |
+
|
323 |
+
public function setGender($gender)
|
324 |
+
{
|
325 |
+
$this->gender = $gender;
|
326 |
+
}
|
327 |
+
|
328 |
+
public function getGender()
|
329 |
+
{
|
330 |
+
return $this->gender;
|
331 |
+
}
|
332 |
+
|
333 |
+
public function setGivenName($givenName)
|
334 |
+
{
|
335 |
+
$this->givenName = $givenName;
|
336 |
+
}
|
337 |
+
|
338 |
+
public function getGivenName()
|
339 |
+
{
|
340 |
+
return $this->givenName;
|
341 |
+
}
|
342 |
+
|
343 |
+
public function setHd($hd)
|
344 |
+
{
|
345 |
+
$this->hd = $hd;
|
346 |
+
}
|
347 |
+
|
348 |
+
public function getHd()
|
349 |
+
{
|
350 |
+
return $this->hd;
|
351 |
+
}
|
352 |
+
|
353 |
+
public function setId($id)
|
354 |
+
{
|
355 |
+
$this->id = $id;
|
356 |
+
}
|
357 |
+
|
358 |
+
public function getId()
|
359 |
+
{
|
360 |
+
return $this->id;
|
361 |
+
}
|
362 |
+
|
363 |
+
public function setLink($link)
|
364 |
+
{
|
365 |
+
$this->link = $link;
|
366 |
+
}
|
367 |
+
|
368 |
+
public function getLink()
|
369 |
+
{
|
370 |
+
return $this->link;
|
371 |
+
}
|
372 |
+
|
373 |
+
public function setLocale($locale)
|
374 |
+
{
|
375 |
+
$this->locale = $locale;
|
376 |
+
}
|
377 |
+
|
378 |
+
public function getLocale()
|
379 |
+
{
|
380 |
+
return $this->locale;
|
381 |
+
}
|
382 |
+
|
383 |
+
public function setName($name)
|
384 |
+
{
|
385 |
+
$this->name = $name;
|
386 |
+
}
|
387 |
+
|
388 |
+
public function getName()
|
389 |
+
{
|
390 |
+
return $this->name;
|
391 |
+
}
|
392 |
+
|
393 |
+
public function setPicture($picture)
|
394 |
+
{
|
395 |
+
$this->picture = $picture;
|
396 |
+
}
|
397 |
+
|
398 |
+
public function getPicture()
|
399 |
+
{
|
400 |
+
return $this->picture;
|
401 |
+
}
|
402 |
+
|
403 |
+
public function setVerifiedEmail($verifiedEmail)
|
404 |
+
{
|
405 |
+
$this->verifiedEmail = $verifiedEmail;
|
406 |
+
}
|
407 |
+
|
408 |
+
public function getVerifiedEmail()
|
409 |
+
{
|
410 |
+
return $this->verifiedEmail;
|
411 |
+
}
|
412 |
+
}
|
google/Service/Plus.php
ADDED
@@ -0,0 +1,3854 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* 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 under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Service definition for Plus (v1).
|
20 |
+
*
|
21 |
+
* <p>
|
22 |
+
* The Google+ API enables developers to build on top of the Google+ platform.
|
23 |
+
* </p>
|
24 |
+
*
|
25 |
+
* <p>
|
26 |
+
* For more information about this service, see the API
|
27 |
+
* <a href="https://developers.google.com/+/api/" target="_blank">Documentation</a>
|
28 |
+
* </p>
|
29 |
+
*
|
30 |
+
* @author Google, Inc.
|
31 |
+
*/
|
32 |
+
class Google_Service_Plus extends Google_Service{
|
33 |
+
/** Know your basic profile info and list of people in your circles.. */
|
34 |
+
const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login";
|
35 |
+
/** Know who you are on Google. */
|
36 |
+
const PLUS_ME = "https://www.googleapis.com/auth/plus.me";
|
37 |
+
/** View your email address. */
|
38 |
+
const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email";
|
39 |
+
/** View your basic profile info. */
|
40 |
+
const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile";
|
41 |
+
|
42 |
+
public $activities;
|
43 |
+
public $comments;
|
44 |
+
public $moments;
|
45 |
+
public $people;
|
46 |
+
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Constructs the internal representation of the Plus service.
|
50 |
+
*
|
51 |
+
* @param Google_Client $client
|
52 |
+
*/
|
53 |
+
public function __construct(Google_Client $client)
|
54 |
+
{
|
55 |
+
parent::__construct($client);
|
56 |
+
$this->servicePath = 'plus/v1/';
|
57 |
+
$this->version = 'v1';
|
58 |
+
$this->serviceName = 'plus';
|
59 |
+
|
60 |
+
$this->activities = new Google_Service_Plus_Activities_Resource(
|
61 |
+
$this,
|
62 |
+
$this->serviceName,
|
63 |
+
'activities',
|
64 |
+
array(
|
65 |
+
'methods' => array(
|
66 |
+
'get' => array(
|
67 |
+
'path' => 'activities/{activityId}',
|
68 |
+
'httpMethod' => 'GET',
|
69 |
+
'parameters' => array(
|
70 |
+
'activityId' => array(
|
71 |
+
'location' => 'path',
|
72 |
+
'type' => 'string',
|
73 |
+
'required' => true,
|
74 |
+
),
|
75 |
+
),
|
76 |
+
),'list' => array(
|
77 |
+
'path' => 'people/{userId}/activities/{collection}',
|
78 |
+
'httpMethod' => 'GET',
|
79 |
+
'parameters' => array(
|
80 |
+
'userId' => array(
|
81 |
+
'location' => 'path',
|
82 |
+
'type' => 'string',
|
83 |
+
'required' => true,
|
84 |
+
),
|
85 |
+
'collection' => array(
|
86 |
+
'location' => 'path',
|
87 |
+
'type' => 'string',
|
88 |
+
'required' => true,
|
89 |
+
),
|
90 |
+
'pageToken' => array(
|
91 |
+
'location' => 'query',
|
92 |
+
'type' => 'string',
|
93 |
+
),
|
94 |
+
'maxResults' => array(
|
95 |
+
'location' => 'query',
|
96 |
+
'type' => 'integer',
|
97 |
+
),
|
98 |
+
),
|
99 |
+
),'search' => array(
|
100 |
+
'path' => 'activities',
|
101 |
+
'httpMethod' => 'GET',
|
102 |
+
'parameters' => array(
|
103 |
+
'query' => array(
|
104 |
+
'location' => 'query',
|
105 |
+
'type' => 'string',
|
106 |
+
'required' => true,
|
107 |
+
),
|
108 |
+
'orderBy' => array(
|
109 |
+
'location' => 'query',
|
110 |
+
'type' => 'string',
|
111 |
+
),
|
112 |
+
'pageToken' => array(
|
113 |
+
'location' => 'query',
|
114 |
+
'type' => 'string',
|
115 |
+
),
|
116 |
+
'maxResults' => array(
|
117 |
+
'location' => 'query',
|
118 |
+
'type' => 'integer',
|
119 |
+
),
|
120 |
+
'language' => array(
|
121 |
+
'location' => 'query',
|
122 |
+
'type' => 'string',
|
123 |
+
),
|
124 |
+
),
|
125 |
+
),
|
126 |
+
)
|
127 |
+
)
|
128 |
+
);
|
129 |
+
$this->comments = new Google_Service_Plus_Comments_Resource(
|
130 |
+
$this,
|
131 |
+
$this->serviceName,
|
132 |
+
'comments',
|
133 |
+
array(
|
134 |
+
'methods' => array(
|
135 |
+
'get' => array(
|
136 |
+
'path' => 'comments/{commentId}',
|
137 |
+
'httpMethod' => 'GET',
|
138 |
+
'parameters' => array(
|
139 |
+
'commentId' => array(
|
140 |
+
'location' => 'path',
|
141 |
+
'type' => 'string',
|
142 |
+
'required' => true,
|
143 |
+
),
|
144 |
+
),
|
145 |
+
),'list' => array(
|
146 |
+
'path' => 'activities/{activityId}/comments',
|
147 |
+
'httpMethod' => 'GET',
|
148 |
+
'parameters' => array(
|
149 |
+
'activityId' => array(
|
150 |
+
'location' => 'path',
|
151 |
+
'type' => 'string',
|
152 |
+
'required' => true,
|
153 |
+
),
|
154 |
+
'pageToken' => array(
|
155 |
+
'location' => 'query',
|
156 |
+
'type' => 'string',
|
157 |
+
),
|
158 |
+
'sortOrder' => array(
|
159 |
+
'location' => 'query',
|
160 |
+
'type' => 'string',
|
161 |
+
),
|
162 |
+
'maxResults' => array(
|
163 |
+
'location' => 'query',
|
164 |
+
'type' => 'integer',
|
165 |
+
),
|
166 |
+
),
|
167 |
+
),
|
168 |
+
)
|
169 |
+
)
|
170 |
+
);
|
171 |
+
$this->moments = new Google_Service_Plus_Moments_Resource(
|
172 |
+
$this,
|
173 |
+
$this->serviceName,
|
174 |
+
'moments',
|
175 |
+
array(
|
176 |
+
'methods' => array(
|
177 |
+
'insert' => array(
|
178 |
+
'path' => 'people/{userId}/moments/{collection}',
|
179 |
+
'httpMethod' => 'POST',
|
180 |
+
'parameters' => array(
|
181 |
+
'userId' => array(
|
182 |
+
'location' => 'path',
|
183 |
+
'type' => 'string',
|
184 |
+
'required' => true,
|
185 |
+
),
|
186 |
+
'collection' => array(
|
187 |
+
'location' => 'path',
|
188 |
+
'type' => 'string',
|
189 |
+
'required' => true,
|
190 |
+
),
|
191 |
+
'debug' => array(
|
192 |
+
'location' => 'query',
|
193 |
+
'type' => 'boolean',
|
194 |
+
),
|
195 |
+
),
|
196 |
+
),'list' => array(
|
197 |
+
'path' => 'people/{userId}/moments/{collection}',
|
198 |
+
'httpMethod' => 'GET',
|
199 |
+
'parameters' => array(
|
200 |
+
'userId' => array(
|
201 |
+
'location' => 'path',
|
202 |
+
'type' => 'string',
|
203 |
+
'required' => true,
|
204 |
+
),
|
205 |
+
'collection' => array(
|
206 |
+
'location' => 'path',
|
207 |
+
'type' => 'string',
|
208 |
+
'required' => true,
|
209 |
+
),
|
210 |
+
'maxResults' => array(
|
211 |
+
'location' => 'query',
|
212 |
+
'type' => 'integer',
|
213 |
+
),
|
214 |
+
'pageToken' => array(
|
215 |
+
'location' => 'query',
|
216 |
+
'type' => 'string',
|
217 |
+
),
|
218 |
+
'targetUrl' => array(
|
219 |
+
'location' => 'query',
|
220 |
+
'type' => 'string',
|
221 |
+
),
|
222 |
+
'type' => array(
|
223 |
+
'location' => 'query',
|
224 |
+
'type' => 'string',
|
225 |
+
),
|
226 |
+
),
|
227 |
+
),'remove' => array(
|
228 |
+
'path' => 'moments/{id}',
|
229 |
+
'httpMethod' => 'DELETE',
|
230 |
+
'parameters' => array(
|
231 |
+
'id' => array(
|
232 |
+
'location' => 'path',
|
233 |
+
'type' => 'string',
|
234 |
+
'required' => true,
|
235 |
+
),
|
236 |
+
),
|
237 |
+
),
|
238 |
+
)
|
239 |
+
)
|
240 |
+
);
|
241 |
+
$this->people = new Google_Service_Plus_People_Resource(
|
242 |
+
$this,
|
243 |
+
$this->serviceName,
|
244 |
+
'people',
|
245 |
+
array(
|
246 |
+
'methods' => array(
|
247 |
+
'get' => array(
|
248 |
+
'path' => 'people/{userId}',
|
249 |
+
'httpMethod' => 'GET',
|
250 |
+
'parameters' => array(
|
251 |
+
'userId' => array(
|
252 |
+
'location' => 'path',
|
253 |
+
'type' => 'string',
|
254 |
+
'required' => true,
|
255 |
+
),
|
256 |
+
),
|
257 |
+
),'list' => array(
|
258 |
+
'path' => 'people/{userId}/people/{collection}',
|
259 |
+
'httpMethod' => 'GET',
|
260 |
+
'parameters' => array(
|
261 |
+
'userId' => array(
|
262 |
+
'location' => 'path',
|
263 |
+
'type' => 'string',
|
264 |
+
'required' => true,
|
265 |
+
),
|
266 |
+
'collection' => array(
|
267 |
+
'location' => 'path',
|
268 |
+
'type' => 'string',
|
269 |
+
'required' => true,
|
270 |
+
),
|
271 |
+
'orderBy' => array(
|
272 |
+
'location' => 'query',
|
273 |
+
'type' => 'string',
|
274 |
+
),
|
275 |
+
'pageToken' => array(
|
276 |
+
'location' => 'query',
|
277 |
+
'type' => 'string',
|
278 |
+
),
|
279 |
+
'maxResults' => array(
|
280 |
+
'location' => 'query',
|
281 |
+
'type' => 'integer',
|
282 |
+
),
|
283 |
+
),
|
284 |
+
),'listByActivity' => array(
|
285 |
+
'path' => 'activities/{activityId}/people/{collection}',
|
286 |
+
'httpMethod' => 'GET',
|
287 |
+
'parameters' => array(
|
288 |
+
'activityId' => array(
|
289 |
+
'location' => 'path',
|
290 |
+
'type' => 'string',
|
291 |
+
'required' => true,
|
292 |
+
),
|
293 |
+
'collection' => array(
|
294 |
+
'location' => 'path',
|
295 |
+
'type' => 'string',
|
296 |
+
'required' => true,
|
297 |
+
),
|
298 |
+
'pageToken' => array(
|
299 |
+
'location' => 'query',
|
300 |
+
'type' => 'string',
|
301 |
+
),
|
302 |
+
'maxResults' => array(
|
303 |
+
'location' => 'query',
|
304 |
+
'type' => 'integer',
|
305 |
+
),
|
306 |
+
),
|
307 |
+
),'search' => array(
|
308 |
+
'path' => 'people',
|
309 |
+
'httpMethod' => 'GET',
|
310 |
+
'parameters' => array(
|
311 |
+
'query' => array(
|
312 |
+
'location' => 'query',
|
313 |
+
'type' => 'string',
|
314 |
+
'required' => true,
|
315 |
+
),
|
316 |
+
'pageToken' => array(
|
317 |
+
'location' => 'query',
|
318 |
+
'type' => 'string',
|
319 |
+
),
|
320 |
+
'maxResults' => array(
|
321 |
+
'location' => 'query',
|
322 |
+
'type' => 'integer',
|
323 |
+
),
|
324 |
+
'language' => array(
|
325 |
+
'location' => 'query',
|
326 |
+
'type' => 'string',
|
327 |
+
),
|
328 |
+
),
|
329 |
+
),
|
330 |
+
)
|
331 |
+
)
|
332 |
+
);
|
333 |
+
}
|
334 |
+
}
|
335 |
+
|
336 |
+
|
337 |
+
/**
|
338 |
+
* The "activities" collection of methods.
|
339 |
+
* Typical usage is:
|
340 |
+
* <code>
|
341 |
+
* $plusService = new Google_Service_Plus(...);
|
342 |
+
* $activities = $plusService->activities;
|
343 |
+
* </code>
|
344 |
+
*/
|
345 |
+
class Google_Service_Plus_Activities_Resource extends Google_Service_Resource
|
346 |
+
{
|
347 |
+
|
348 |
+
/**
|
349 |
+
* Get an activity. (activities.get)
|
350 |
+
*
|
351 |
+
* @param string $activityId
|
352 |
+
* The ID of the activity to get.
|
353 |
+
* @param array $optParams Optional parameters.
|
354 |
+
* @return Google_Service_Plus_Activity
|
355 |
+
*/
|
356 |
+
public function get($activityId, $optParams = array())
|
357 |
+
{
|
358 |
+
$params = array('activityId' => $activityId);
|
359 |
+
$params = array_merge($params, $optParams);
|
360 |
+
return $this->call('get', array($params), "Google_Service_Plus_Activity");
|
361 |
+
}
|
362 |
+
/**
|
363 |
+
* List all of the activities in the specified collection for a particular user.
|
364 |
+
* (activities.listActivities)
|
365 |
+
*
|
366 |
+
* @param string $userId
|
367 |
+
* The ID of the user to get activities for. The special value "me" can be used to indicate the
|
368 |
+
* authenticated user.
|
369 |
+
* @param string $collection
|
370 |
+
* The collection of activities to list.
|
371 |
+
* @param array $optParams Optional parameters.
|
372 |
+
*
|
373 |
+
* @opt_param string pageToken
|
374 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
375 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response.
|
376 |
+
* @opt_param string maxResults
|
377 |
+
* The maximum number of activities to include in the response, which is used for paging. For any
|
378 |
+
* response, the actual number returned might be less than the specified maxResults.
|
379 |
+
* @return Google_Service_Plus_ActivityFeed
|
380 |
+
*/
|
381 |
+
public function listActivities($userId, $collection, $optParams = array())
|
382 |
+
{
|
383 |
+
$params = array('userId' => $userId, 'collection' => $collection);
|
384 |
+
$params = array_merge($params, $optParams);
|
385 |
+
return $this->call('list', array($params), "Google_Service_Plus_ActivityFeed");
|
386 |
+
}
|
387 |
+
/**
|
388 |
+
* Search public activities. (activities.search)
|
389 |
+
*
|
390 |
+
* @param string $query
|
391 |
+
* Full-text search query string.
|
392 |
+
* @param array $optParams Optional parameters.
|
393 |
+
*
|
394 |
+
* @opt_param string orderBy
|
395 |
+
* Specifies how to order search results.
|
396 |
+
* @opt_param string pageToken
|
397 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
398 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response. This
|
399 |
+
* token can be of any length.
|
400 |
+
* @opt_param string maxResults
|
401 |
+
* The maximum number of activities to include in the response, which is used for paging. For any
|
402 |
+
* response, the actual number returned might be less than the specified maxResults.
|
403 |
+
* @opt_param string language
|
404 |
+
* Specify the preferred language to search with. See search language codes for available values.
|
405 |
+
* @return Google_Service_Plus_ActivityFeed
|
406 |
+
*/
|
407 |
+
public function search($query, $optParams = array())
|
408 |
+
{
|
409 |
+
$params = array('query' => $query);
|
410 |
+
$params = array_merge($params, $optParams);
|
411 |
+
return $this->call('search', array($params), "Google_Service_Plus_ActivityFeed");
|
412 |
+
}
|
413 |
+
}
|
414 |
+
|
415 |
+
/**
|
416 |
+
* The "comments" collection of methods.
|
417 |
+
* Typical usage is:
|
418 |
+
* <code>
|
419 |
+
* $plusService = new Google_Service_Plus(...);
|
420 |
+
* $comments = $plusService->comments;
|
421 |
+
* </code>
|
422 |
+
*/
|
423 |
+
class Google_Service_Plus_Comments_Resource extends Google_Service_Resource
|
424 |
+
{
|
425 |
+
|
426 |
+
/**
|
427 |
+
* Get a comment. (comments.get)
|
428 |
+
*
|
429 |
+
* @param string $commentId
|
430 |
+
* The ID of the comment to get.
|
431 |
+
* @param array $optParams Optional parameters.
|
432 |
+
* @return Google_Service_Plus_Comment
|
433 |
+
*/
|
434 |
+
public function get($commentId, $optParams = array())
|
435 |
+
{
|
436 |
+
$params = array('commentId' => $commentId);
|
437 |
+
$params = array_merge($params, $optParams);
|
438 |
+
return $this->call('get', array($params), "Google_Service_Plus_Comment");
|
439 |
+
}
|
440 |
+
/**
|
441 |
+
* List all of the comments for an activity. (comments.listComments)
|
442 |
+
*
|
443 |
+
* @param string $activityId
|
444 |
+
* The ID of the activity to get comments for.
|
445 |
+
* @param array $optParams Optional parameters.
|
446 |
+
*
|
447 |
+
* @opt_param string pageToken
|
448 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
449 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response.
|
450 |
+
* @opt_param string sortOrder
|
451 |
+
* The order in which to sort the list of comments.
|
452 |
+
* @opt_param string maxResults
|
453 |
+
* The maximum number of comments to include in the response, which is used for paging. For any
|
454 |
+
* response, the actual number returned might be less than the specified maxResults.
|
455 |
+
* @return Google_Service_Plus_CommentFeed
|
456 |
+
*/
|
457 |
+
public function listComments($activityId, $optParams = array())
|
458 |
+
{
|
459 |
+
$params = array('activityId' => $activityId);
|
460 |
+
$params = array_merge($params, $optParams);
|
461 |
+
return $this->call('list', array($params), "Google_Service_Plus_CommentFeed");
|
462 |
+
}
|
463 |
+
}
|
464 |
+
|
465 |
+
/**
|
466 |
+
* The "moments" collection of methods.
|
467 |
+
* Typical usage is:
|
468 |
+
* <code>
|
469 |
+
* $plusService = new Google_Service_Plus(...);
|
470 |
+
* $moments = $plusService->moments;
|
471 |
+
* </code>
|
472 |
+
*/
|
473 |
+
class Google_Service_Plus_Moments_Resource extends Google_Service_Resource
|
474 |
+
{
|
475 |
+
|
476 |
+
/**
|
477 |
+
* Record a moment representing a user's action such as making a purchase or
|
478 |
+
* commenting on a blog. (moments.insert)
|
479 |
+
*
|
480 |
+
* @param string $userId
|
481 |
+
* The ID of the user to record actions for. The only valid values are "me" and the ID of the
|
482 |
+
* authenticated user.
|
483 |
+
* @param string $collection
|
484 |
+
* The collection to which to write moments.
|
485 |
+
* @param Google_Moment $postBody
|
486 |
+
* @param array $optParams Optional parameters.
|
487 |
+
*
|
488 |
+
* @opt_param bool debug
|
489 |
+
* Return the moment as written. Should be used only for debugging.
|
490 |
+
* @return Google_Service_Plus_Moment
|
491 |
+
*/
|
492 |
+
public function insert($userId, $collection, Google_Service_Plus_Moment $postBody, $optParams = array())
|
493 |
+
{
|
494 |
+
$params = array('userId' => $userId, 'collection' => $collection, 'postBody' => $postBody);
|
495 |
+
$params = array_merge($params, $optParams);
|
496 |
+
return $this->call('insert', array($params), "Google_Service_Plus_Moment");
|
497 |
+
}
|
498 |
+
/**
|
499 |
+
* List all of the moments for a particular user. (moments.listMoments)
|
500 |
+
*
|
501 |
+
* @param string $userId
|
502 |
+
* The ID of the user to get moments for. The special value "me" can be used to indicate the
|
503 |
+
* authenticated user.
|
504 |
+
* @param string $collection
|
505 |
+
* The collection of moments to list.
|
506 |
+
* @param array $optParams Optional parameters.
|
507 |
+
*
|
508 |
+
* @opt_param string maxResults
|
509 |
+
* The maximum number of moments to include in the response, which is used for paging. For any
|
510 |
+
* response, the actual number returned might be less than the specified maxResults.
|
511 |
+
* @opt_param string pageToken
|
512 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
513 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response.
|
514 |
+
* @opt_param string targetUrl
|
515 |
+
* Only moments containing this targetUrl will be returned.
|
516 |
+
* @opt_param string type
|
517 |
+
* Only moments of this type will be returned.
|
518 |
+
* @return Google_Service_Plus_MomentsFeed
|
519 |
+
*/
|
520 |
+
public function listMoments($userId, $collection, $optParams = array())
|
521 |
+
{
|
522 |
+
$params = array('userId' => $userId, 'collection' => $collection);
|
523 |
+
$params = array_merge($params, $optParams);
|
524 |
+
return $this->call('list', array($params), "Google_Service_Plus_MomentsFeed");
|
525 |
+
}
|
526 |
+
/**
|
527 |
+
* Delete a moment. (moments.remove)
|
528 |
+
*
|
529 |
+
* @param string $id
|
530 |
+
* The ID of the moment to delete.
|
531 |
+
* @param array $optParams Optional parameters.
|
532 |
+
*/
|
533 |
+
public function remove($id, $optParams = array())
|
534 |
+
{
|
535 |
+
$params = array('id' => $id);
|
536 |
+
$params = array_merge($params, $optParams);
|
537 |
+
return $this->call('remove', array($params));
|
538 |
+
}
|
539 |
+
}
|
540 |
+
|
541 |
+
/**
|
542 |
+
* The "people" collection of methods.
|
543 |
+
* Typical usage is:
|
544 |
+
* <code>
|
545 |
+
* $plusService = new Google_Service_Plus(...);
|
546 |
+
* $people = $plusService->people;
|
547 |
+
* </code>
|
548 |
+
*/
|
549 |
+
class Google_Service_Plus_People_Resource extends Google_Service_Resource
|
550 |
+
{
|
551 |
+
|
552 |
+
/**
|
553 |
+
* Get a person's profile. If your app uses scope
|
554 |
+
* https://www.googleapis.com/auth/plus.login, this method is guaranteed to
|
555 |
+
* return ageRange and language. (people.get)
|
556 |
+
*
|
557 |
+
* @param string $userId
|
558 |
+
* The ID of the person to get the profile for. The special value "me" can be used to indicate the
|
559 |
+
* authenticated user.
|
560 |
+
* @param array $optParams Optional parameters.
|
561 |
+
* @return Google_Service_Plus_Person
|
562 |
+
*/
|
563 |
+
public function get($userId, $optParams = array())
|
564 |
+
{
|
565 |
+
$params = array('userId' => $userId);
|
566 |
+
$params = array_merge($params, $optParams);
|
567 |
+
return $this->call('get', array($params), "Google_Service_Plus_Person");
|
568 |
+
}
|
569 |
+
/**
|
570 |
+
* List all of the people in the specified collection. (people.listPeople)
|
571 |
+
*
|
572 |
+
* @param string $userId
|
573 |
+
* Get the collection of people for the person identified. Use "me" to indicate the authenticated
|
574 |
+
* user.
|
575 |
+
* @param string $collection
|
576 |
+
* The collection of people to list.
|
577 |
+
* @param array $optParams Optional parameters.
|
578 |
+
*
|
579 |
+
* @opt_param string orderBy
|
580 |
+
* The order to return people in.
|
581 |
+
* @opt_param string pageToken
|
582 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
583 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response.
|
584 |
+
* @opt_param string maxResults
|
585 |
+
* The maximum number of people to include in the response, which is used for paging. For any
|
586 |
+
* response, the actual number returned might be less than the specified maxResults.
|
587 |
+
* @return Google_Service_Plus_PeopleFeed
|
588 |
+
*/
|
589 |
+
public function listPeople($userId, $collection, $optParams = array())
|
590 |
+
{
|
591 |
+
$params = array('userId' => $userId, 'collection' => $collection);
|
592 |
+
$params = array_merge($params, $optParams);
|
593 |
+
return $this->call('list', array($params), "Google_Service_Plus_PeopleFeed");
|
594 |
+
}
|
595 |
+
/**
|
596 |
+
* List all of the people in the specified collection for a particular activity.
|
597 |
+
* (people.listByActivity)
|
598 |
+
*
|
599 |
+
* @param string $activityId
|
600 |
+
* The ID of the activity to get the list of people for.
|
601 |
+
* @param string $collection
|
602 |
+
* The collection of people to list.
|
603 |
+
* @param array $optParams Optional parameters.
|
604 |
+
*
|
605 |
+
* @opt_param string pageToken
|
606 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
607 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response.
|
608 |
+
* @opt_param string maxResults
|
609 |
+
* The maximum number of people to include in the response, which is used for paging. For any
|
610 |
+
* response, the actual number returned might be less than the specified maxResults.
|
611 |
+
* @return Google_Service_Plus_PeopleFeed
|
612 |
+
*/
|
613 |
+
public function listByActivity($activityId, $collection, $optParams = array())
|
614 |
+
{
|
615 |
+
$params = array('activityId' => $activityId, 'collection' => $collection);
|
616 |
+
$params = array_merge($params, $optParams);
|
617 |
+
return $this->call('listByActivity', array($params), "Google_Service_Plus_PeopleFeed");
|
618 |
+
}
|
619 |
+
/**
|
620 |
+
* Search all public profiles. (people.search)
|
621 |
+
*
|
622 |
+
* @param string $query
|
623 |
+
* Specify a query string for full text search of public text in all profiles.
|
624 |
+
* @param array $optParams Optional parameters.
|
625 |
+
*
|
626 |
+
* @opt_param string pageToken
|
627 |
+
* The continuation token, which is used to page through large result sets. To get the next page of
|
628 |
+
* results, set this parameter to the value of "nextPageToken" from the previous response. This
|
629 |
+
* token can be of any length.
|
630 |
+
* @opt_param string maxResults
|
631 |
+
* The maximum number of people to include in the response, which is used for paging. For any
|
632 |
+
* response, the actual number returned might be less than the specified maxResults.
|
633 |
+
* @opt_param string language
|
634 |
+
* Specify the preferred language to search with. See search language codes for available values.
|
635 |
+
* @return Google_Service_Plus_PeopleFeed
|
636 |
+
*/
|
637 |
+
public function search($query, $optParams = array())
|
638 |
+
{
|
639 |
+
$params = array('query' => $query);
|
640 |
+
$params = array_merge($params, $optParams);
|
641 |
+
return $this->call('search', array($params), "Google_Service_Plus_PeopleFeed");
|
642 |
+
}
|
643 |
+
}
|
644 |
+
|
645 |
+
|
646 |
+
|
647 |
+
|
648 |
+
class Google_Service_Plus_Acl extends Google_Collection
|
649 |
+
{
|
650 |
+
public $description;
|
651 |
+
protected $itemsType = 'Google_Service_Plus_PlusAclentryResource';
|
652 |
+
protected $itemsDataType = 'array';
|
653 |
+
public $kind;
|
654 |
+
|
655 |
+
public function setDescription($description)
|
656 |
+
{
|
657 |
+
$this->description = $description;
|
658 |
+
}
|
659 |
+
|
660 |
+
public function getDescription()
|
661 |
+
{
|
662 |
+
return $this->description;
|
663 |
+
}
|
664 |
+
|
665 |
+
public function setItems($items)
|
666 |
+
{
|
667 |
+
$this->items = $items;
|
668 |
+
}
|
669 |
+
|
670 |
+
public function getItems()
|
671 |
+
{
|
672 |
+
return $this->items;
|
673 |
+
}
|
674 |
+
|
675 |
+
public function setKind($kind)
|
676 |
+
{
|
677 |
+
$this->kind = $kind;
|
678 |
+
}
|
679 |
+
|
680 |
+
public function getKind()
|
681 |
+
{
|
682 |
+
return $this->kind;
|
683 |
+
}
|
684 |
+
}
|
685 |
+
|
686 |
+
class Google_Service_Plus_Activity extends Google_Model
|
687 |
+
{
|
688 |
+
protected $accessType = 'Google_Service_Plus_Acl';
|
689 |
+
protected $accessDataType = '';
|
690 |
+
protected $actorType = 'Google_Service_Plus_ActivityActor';
|
691 |
+
protected $actorDataType = '';
|
692 |
+
public $address;
|
693 |
+
public $annotation;
|
694 |
+
public $crosspostSource;
|
695 |
+
public $etag;
|
696 |
+
public $geocode;
|
697 |
+
public $id;
|
698 |
+
public $kind;
|
699 |
+
protected $locationType = 'Google_Service_Plus_Place';
|
700 |
+
protected $locationDataType = '';
|
701 |
+
protected $objectType = 'Google_Service_Plus_ActivityObject';
|
702 |
+
protected $objectDataType = '';
|
703 |
+
public $placeId;
|
704 |
+
public $placeName;
|
705 |
+
protected $providerType = 'Google_Service_Plus_ActivityProvider';
|
706 |
+
protected $providerDataType = '';
|
707 |
+
public $published;
|
708 |
+
public $radius;
|
709 |
+
public $title;
|
710 |
+
public $updated;
|
711 |
+
public $url;
|
712 |
+
public $verb;
|
713 |
+
|
714 |
+
public function setAccess(Google_Service_Plus_Acl $access)
|
715 |
+
{
|
716 |
+
$this->access = $access;
|
717 |
+
}
|
718 |
+
|
719 |
+
public function getAccess()
|
720 |
+
{
|
721 |
+
return $this->access;
|
722 |
+
}
|
723 |
+
|
724 |
+
public function setActor(Google_Service_Plus_ActivityActor $actor)
|
725 |
+
{
|
726 |
+
$this->actor = $actor;
|
727 |
+
}
|
728 |
+
|
729 |
+
public function getActor()
|
730 |
+
{
|
731 |
+
return $this->actor;
|
732 |
+
}
|
733 |
+
|
734 |
+
public function setAddress($address)
|
735 |
+
{
|
736 |
+
$this->address = $address;
|
737 |
+
}
|
738 |
+
|
739 |
+
public function getAddress()
|
740 |
+
{
|
741 |
+
return $this->address;
|
742 |
+
}
|
743 |
+
|
744 |
+
public function setAnnotation($annotation)
|
745 |
+
{
|
746 |
+
$this->annotation = $annotation;
|
747 |
+
}
|
748 |
+
|
749 |
+
public function getAnnotation()
|
750 |
+
{
|
751 |
+
return $this->annotation;
|
752 |
+
}
|
753 |
+
|
754 |
+
public function setCrosspostSource($crosspostSource)
|
755 |
+
{
|
756 |
+
$this->crosspostSource = $crosspostSource;
|
757 |
+
}
|
758 |
+
|
759 |
+
public function getCrosspostSource()
|
760 |
+
{
|
761 |
+
return $this->crosspostSource;
|
762 |
+
}
|
763 |
+
|
764 |
+
public function setEtag($etag)
|
765 |
+
{
|
766 |
+
$this->etag = $etag;
|
767 |
+
}
|
768 |
+
|
769 |
+
public function getEtag()
|
770 |
+
{
|
771 |
+
return $this->etag;
|
772 |
+
}
|
773 |
+
|
774 |
+
public function setGeocode($geocode)
|
775 |
+
{
|
776 |
+
$this->geocode = $geocode;
|
777 |
+
}
|
778 |
+
|
779 |
+
public function getGeocode()
|
780 |
+
{
|
781 |
+
return $this->geocode;
|
782 |
+
}
|
783 |
+
|
784 |
+
public function setId($id)
|
785 |
+
{
|
786 |
+
$this->id = $id;
|
787 |
+
}
|
788 |
+
|
789 |
+
public function getId()
|
790 |
+
{
|
791 |
+
return $this->id;
|
792 |
+
}
|
793 |
+
|
794 |
+
public function setKind($kind)
|
795 |
+
{
|
796 |
+
$this->kind = $kind;
|
797 |
+
}
|
798 |
+
|
799 |
+
public function getKind()
|
800 |
+
{
|
801 |
+
return $this->kind;
|
802 |
+
}
|
803 |
+
|
804 |
+
public function setLocation(Google_Service_Plus_Place $location)
|
805 |
+
{
|
806 |
+
$this->location = $location;
|
807 |
+
}
|
808 |
+
|
809 |
+
public function getLocation()
|
810 |
+
{
|
811 |
+
return $this->location;
|
812 |
+
}
|
813 |
+
|
814 |
+
public function setObject(Google_Service_Plus_ActivityObject $object)
|
815 |
+
{
|
816 |
+
$this->object = $object;
|
817 |
+
}
|
818 |
+
|
819 |
+
public function getObject()
|
820 |
+
{
|
821 |
+
return $this->object;
|
822 |
+
}
|
823 |
+
|
824 |
+
public function setPlaceId($placeId)
|
825 |
+
{
|
826 |
+
$this->placeId = $placeId;
|
827 |
+
}
|
828 |
+
|
829 |
+
public function getPlaceId()
|
830 |
+
{
|
831 |
+
return $this->placeId;
|
832 |
+
}
|
833 |
+
|
834 |
+
public function setPlaceName($placeName)
|
835 |
+
{
|
836 |
+
$this->placeName = $placeName;
|
837 |
+
}
|
838 |
+
|
839 |
+
public function getPlaceName()
|
840 |
+
{
|
841 |
+
return $this->placeName;
|
842 |
+
}
|
843 |
+
|
844 |
+
public function setProvider(Google_Service_Plus_ActivityProvider $provider)
|
845 |
+
{
|
846 |
+
$this->provider = $provider;
|
847 |
+
}
|
848 |
+
|
849 |
+
public function getProvider()
|
850 |
+
{
|
851 |
+
return $this->provider;
|
852 |
+
}
|
853 |
+
|
854 |
+
public function setPublished($published)
|
855 |
+
{
|
856 |
+
$this->published = $published;
|
857 |
+
}
|
858 |
+
|
859 |
+
public function getPublished()
|
860 |
+
{
|
861 |
+
return $this->published;
|
862 |
+
}
|
863 |
+
|
864 |
+
public function setRadius($radius)
|
865 |
+
{
|
866 |
+
$this->radius = $radius;
|
867 |
+
}
|
868 |
+
|
869 |
+
public function getRadius()
|
870 |
+
{
|
871 |
+
return $this->radius;
|
872 |
+
}
|
873 |
+
|
874 |
+
public function setTitle($title)
|
875 |
+
{
|
876 |
+
$this->title = $title;
|
877 |
+
}
|
878 |
+
|
879 |
+
public function getTitle()
|
880 |
+
{
|
881 |
+
return $this->title;
|
882 |
+
}
|
883 |
+
|
884 |
+
public function setUpdated($updated)
|
885 |
+
{
|
886 |
+
$this->updated = $updated;
|
887 |
+
}
|
888 |
+
|
889 |
+
public function getUpdated()
|
890 |
+
{
|
891 |
+
return $this->updated;
|
892 |
+
}
|
893 |
+
|
894 |
+
public function setUrl($url)
|
895 |
+
{
|
896 |
+
$this->url = $url;
|
897 |
+
}
|
898 |
+
|
899 |
+
public function getUrl()
|
900 |
+
{
|
901 |
+
return $this->url;
|
902 |
+
}
|
903 |
+
|
904 |
+
public function setVerb($verb)
|
905 |
+
{
|
906 |
+
$this->verb = $verb;
|
907 |
+
}
|
908 |
+
|
909 |
+
public function getVerb()
|
910 |
+
{
|
911 |
+
return $this->verb;
|
912 |
+
}
|
913 |
+
}
|
914 |
+
|
915 |
+
class Google_Service_Plus_ActivityActor extends Google_Model
|
916 |
+
{
|
917 |
+
public $displayName;
|
918 |
+
public $id;
|
919 |
+
protected $imageType = 'Google_Service_Plus_ActivityActorImage';
|
920 |
+
protected $imageDataType = '';
|
921 |
+
protected $nameType = 'Google_Service_Plus_ActivityActorName';
|
922 |
+
protected $nameDataType = '';
|
923 |
+
public $url;
|
924 |
+
|
925 |
+
public function setDisplayName($displayName)
|
926 |
+
{
|
927 |
+
$this->displayName = $displayName;
|
928 |
+
}
|
929 |
+
|
930 |
+
public function getDisplayName()
|
931 |
+
{
|
932 |
+
return $this->displayName;
|
933 |
+
}
|
934 |
+
|
935 |
+
public function setId($id)
|
936 |
+
{
|
937 |
+
$this->id = $id;
|
938 |
+
}
|
939 |
+
|
940 |
+
public function getId()
|
941 |
+
{
|
942 |
+
return $this->id;
|
943 |
+
}
|
944 |
+
|
945 |
+
public function setImage(Google_Service_Plus_ActivityActorImage $image)
|
946 |
+
{
|
947 |
+
$this->image = $image;
|
948 |
+
}
|
949 |
+
|
950 |
+
public function getImage()
|
951 |
+
{
|
952 |
+
return $this->image;
|
953 |
+
}
|
954 |
+
|
955 |
+
public function setName(Google_Service_Plus_ActivityActorName $name)
|
956 |
+
{
|
957 |
+
$this->name = $name;
|
958 |
+
}
|
959 |
+
|
960 |
+
public function getName()
|
961 |
+
{
|
962 |
+
return $this->name;
|
963 |
+
}
|
964 |
+
|
965 |
+
public function setUrl($url)
|
966 |
+
{
|
967 |
+
$this->url = $url;
|
968 |
+
}
|
969 |
+
|
970 |
+
public function getUrl()
|
971 |
+
{
|
972 |
+
return $this->url;
|
973 |
+
}
|
974 |
+
}
|
975 |
+
|
976 |
+
class Google_Service_Plus_ActivityActorImage extends Google_Model
|
977 |
+
{
|
978 |
+
public $url;
|
979 |
+
|
980 |
+
public function setUrl($url)
|
981 |
+
{
|
982 |
+
$this->url = $url;
|
983 |
+
}
|
984 |
+
|
985 |
+
public function getUrl()
|
986 |
+
{
|
987 |
+
return $this->url;
|
988 |
+
}
|
989 |
+
}
|
990 |
+
|
991 |
+
class Google_Service_Plus_ActivityActorName extends Google_Model
|
992 |
+
{
|
993 |
+
public $familyName;
|
994 |
+
public $givenName;
|
995 |
+
|
996 |
+
public function setFamilyName($familyName)
|
997 |
+
{
|
998 |
+
$this->familyName = $familyName;
|
999 |
+
}
|
1000 |
+
|
1001 |
+
public function getFamilyName()
|
1002 |
+
{
|
1003 |
+
return $this->familyName;
|
1004 |
+
}
|
1005 |
+
|
1006 |
+
public function setGivenName($givenName)
|
1007 |
+
{
|
1008 |
+
$this->givenName = $givenName;
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
public function getGivenName()
|
1012 |
+
{
|
1013 |
+
return $this->givenName;
|
1014 |
+
}
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
class Google_Service_Plus_ActivityFeed extends Google_Collection
|
1018 |
+
{
|
1019 |
+
public $etag;
|
1020 |
+
public $id;
|
1021 |
+
protected $itemsType = 'Google_Service_Plus_Activity';
|
1022 |
+
protected $itemsDataType = 'array';
|
1023 |
+
public $kind;
|
1024 |
+
public $nextLink;
|
1025 |
+
public $nextPageToken;
|
1026 |
+
public $selfLink;
|
1027 |
+
public $title;
|
1028 |
+
public $updated;
|
1029 |
+
|
1030 |
+
public function setEtag($etag)
|
1031 |
+
{
|
1032 |
+
$this->etag = $etag;
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
public function getEtag()
|
1036 |
+
{
|
1037 |
+
return $this->etag;
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
public function setId($id)
|
1041 |
+
{
|
1042 |
+
$this->id = $id;
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
public function getId()
|
1046 |
+
{
|
1047 |
+
return $this->id;
|
1048 |
+
}
|
1049 |
+
|
1050 |
+
public function setItems($items)
|
1051 |
+
{
|
1052 |
+
$this->items = $items;
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
public function getItems()
|
1056 |
+
{
|
1057 |
+
return $this->items;
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
public function setKind($kind)
|
1061 |
+
{
|
1062 |
+
$this->kind = $kind;
|
1063 |
+
}
|
1064 |
+
|
1065 |
+
public function getKind()
|
1066 |
+
{
|
1067 |
+
return $this->kind;
|
1068 |
+
}
|
1069 |
+
|
1070 |
+
public function setNextLink($nextLink)
|
1071 |
+
{
|
1072 |
+
$this->nextLink = $nextLink;
|
1073 |
+
}
|
1074 |
+
|
1075 |
+
public function getNextLink()
|
1076 |
+
{
|
1077 |
+
return $this->nextLink;
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
public function setNextPageToken($nextPageToken)
|
1081 |
+
{
|
1082 |
+
$this->nextPageToken = $nextPageToken;
|
1083 |
+
}
|
1084 |
+
|
1085 |
+
public function getNextPageToken()
|
1086 |
+
{
|
1087 |
+
return $this->nextPageToken;
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
public function setSelfLink($selfLink)
|
1091 |
+
{
|
1092 |
+
$this->selfLink = $selfLink;
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
public function getSelfLink()
|
1096 |
+
{
|
1097 |
+
return $this->selfLink;
|
1098 |
+
}
|
1099 |
+
|
1100 |
+
public function setTitle($title)
|
1101 |
+
{
|
1102 |
+
$this->title = $title;
|
1103 |
+
}
|
1104 |
+
|
1105 |
+
public function getTitle()
|
1106 |
+
{
|
1107 |
+
return $this->title;
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
public function setUpdated($updated)
|
1111 |
+
{
|
1112 |
+
$this->updated = $updated;
|
1113 |
+
}
|
1114 |
+
|
1115 |
+
public function getUpdated()
|
1116 |
+
{
|
1117 |
+
return $this->updated;
|
1118 |
+
}
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
class Google_Service_Plus_ActivityObject extends Google_Collection
|
1122 |
+
{
|
1123 |
+
protected $actorType = 'Google_Service_Plus_ActivityObjectActor';
|
1124 |
+
protected $actorDataType = '';
|
1125 |
+
protected $attachmentsType = 'Google_Service_Plus_ActivityObjectAttachments';
|
1126 |
+
protected $attachmentsDataType = 'array';
|
1127 |
+
public $content;
|
1128 |
+
public $id;
|
1129 |
+
public $objectType;
|
1130 |
+
public $originalContent;
|
1131 |
+
protected $plusonersType = 'Google_Service_Plus_ActivityObjectPlusoners';
|
1132 |
+
protected $plusonersDataType = '';
|
1133 |
+
protected $repliesType = 'Google_Service_Plus_ActivityObjectReplies';
|
1134 |
+
protected $repliesDataType = '';
|
1135 |
+
protected $resharersType = 'Google_Service_Plus_ActivityObjectResharers';
|
1136 |
+
protected $resharersDataType = '';
|
1137 |
+
public $url;
|
1138 |
+
|
1139 |
+
public function setActor(Google_Service_Plus_ActivityObjectActor $actor)
|
1140 |
+
{
|
1141 |
+
$this->actor = $actor;
|
1142 |
+
}
|
1143 |
+
|
1144 |
+
public function getActor()
|
1145 |
+
{
|
1146 |
+
return $this->actor;
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
public function setAttachments($attachments)
|
1150 |
+
{
|
1151 |
+
$this->attachments = $attachments;
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
public function getAttachments()
|
1155 |
+
{
|
1156 |
+
return $this->attachments;
|
1157 |
+
}
|
1158 |
+
|
1159 |
+
public function setContent($content)
|
1160 |
+
{
|
1161 |
+
$this->content = $content;
|
1162 |
+
}
|
1163 |
+
|
1164 |
+
public function getContent()
|
1165 |
+
{
|
1166 |
+
return $this->content;
|
1167 |
+
}
|
1168 |
+
|
1169 |
+
public function setId($id)
|
1170 |
+
{
|
1171 |
+
$this->id = $id;
|
1172 |
+
}
|
1173 |
+
|
1174 |
+
public function getId()
|
1175 |
+
{
|
1176 |
+
return $this->id;
|
1177 |
+
}
|
1178 |
+
|
1179 |
+
public function setObjectType($objectType)
|
1180 |
+
{
|
1181 |
+
$this->objectType = $objectType;
|
1182 |
+
}
|
1183 |
+
|
1184 |
+
public function getObjectType()
|
1185 |
+
{
|
1186 |
+
return $this->objectType;
|
1187 |
+
}
|
1188 |
+
|
1189 |
+
public function setOriginalContent($originalContent)
|
1190 |
+
{
|
1191 |
+
$this->originalContent = $originalContent;
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
public function getOriginalContent()
|
1195 |
+
{
|
1196 |
+
return $this->originalContent;
|
1197 |
+
}
|
1198 |
+
|
1199 |
+
public function setPlusoners(Google_Service_Plus_ActivityObjectPlusoners $plusoners)
|
1200 |
+
{
|
1201 |
+
$this->plusoners = $plusoners;
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
public function getPlusoners()
|
1205 |
+
{
|
1206 |
+
return $this->plusoners;
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
public function setReplies(Google_Service_Plus_ActivityObjectReplies $replies)
|
1210 |
+
{
|
1211 |
+
$this->replies = $replies;
|
1212 |
+
}
|
1213 |
+
|
1214 |
+
public function getReplies()
|
1215 |
+
{
|
1216 |
+
return $this->replies;
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
public function setResharers(Google_Service_Plus_ActivityObjectResharers $resharers)
|
1220 |
+
{
|
1221 |
+
$this->resharers = $resharers;
|
1222 |
+
}
|
1223 |
+
|
1224 |
+
public function getResharers()
|
1225 |
+
{
|
1226 |
+
return $this->resharers;
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
public function setUrl($url)
|
1230 |
+
{
|
1231 |
+
$this->url = $url;
|
1232 |
+
}
|
1233 |
+
|
1234 |
+
public function getUrl()
|
1235 |
+
{
|
1236 |
+
return $this->url;
|
1237 |
+
}
|
1238 |
+
}
|
1239 |
+
|
1240 |
+
class Google_Service_Plus_ActivityObjectActor extends Google_Model
|
1241 |
+
{
|
1242 |
+
public $displayName;
|
1243 |
+
public $id;
|
1244 |
+
protected $imageType = 'Google_Service_Plus_ActivityObjectActorImage';
|
1245 |
+
protected $imageDataType = '';
|
1246 |
+
public $url;
|
1247 |
+
|
1248 |
+
public function setDisplayName($displayName)
|
1249 |
+
{
|
1250 |
+
$this->displayName = $displayName;
|
1251 |
+
}
|
1252 |
+
|
1253 |
+
public function getDisplayName()
|
1254 |
+
{
|
1255 |
+
return $this->displayName;
|
1256 |
+
}
|
1257 |
+
|
1258 |
+
public function setId($id)
|
1259 |
+
{
|
1260 |
+
$this->id = $id;
|
1261 |
+
}
|
1262 |
+
|
1263 |
+
public function getId()
|
1264 |
+
{
|
1265 |
+
return $this->id;
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
public function setImage(Google_Service_Plus_ActivityObjectActorImage $image)
|
1269 |
+
{
|
1270 |
+
$this->image = $image;
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
public function getImage()
|
1274 |
+
{
|
1275 |
+
return $this->image;
|
1276 |
+
}
|
1277 |
+
|
1278 |
+
public function setUrl($url)
|
1279 |
+
{
|
1280 |
+
$this->url = $url;
|
1281 |
+
}
|
1282 |
+
|
1283 |
+
public function getUrl()
|
1284 |
+
{
|
1285 |
+
return $this->url;
|
1286 |
+
}
|
1287 |
+
}
|
1288 |
+
|
1289 |
+
class Google_Service_Plus_ActivityObjectActorImage extends Google_Model
|
1290 |
+
{
|
1291 |
+
public $url;
|
1292 |
+
|
1293 |
+
public function setUrl($url)
|
1294 |
+
{
|
1295 |
+
$this->url = $url;
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
public function getUrl()
|
1299 |
+
{
|
1300 |
+
return $this->url;
|
1301 |
+
}
|
1302 |
+
}
|
1303 |
+
|
1304 |
+
class Google_Service_Plus_ActivityObjectAttachments extends Google_Collection
|
1305 |
+
{
|
1306 |
+
public $content;
|
1307 |
+
public $displayName;
|
1308 |
+
protected $embedType = 'Google_Service_Plus_ActivityObjectAttachmentsEmbed';
|
1309 |
+
protected $embedDataType = '';
|
1310 |
+
protected $fullImageType = 'Google_Service_Plus_ActivityObjectAttachmentsFullImage';
|
1311 |
+
protected $fullImageDataType = '';
|
1312 |
+
public $id;
|
1313 |
+
protected $imageType = 'Google_Service_Plus_ActivityObjectAttachmentsImage';
|
1314 |
+
protected $imageDataType = '';
|
1315 |
+
public $objectType;
|
1316 |
+
protected $thumbnailsType = 'Google_Service_Plus_ActivityObjectAttachmentsThumbnails';
|
1317 |
+
protected $thumbnailsDataType = 'array';
|
1318 |
+
public $url;
|
1319 |
+
|
1320 |
+
public function setContent($content)
|
1321 |
+
{
|
1322 |
+
$this->content = $content;
|
1323 |
+
}
|
1324 |
+
|
1325 |
+
public function getContent()
|
1326 |
+
{
|
1327 |
+
return $this->content;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
public function setDisplayName($displayName)
|
1331 |
+
{
|
1332 |
+
$this->displayName = $displayName;
|
1333 |
+
}
|
1334 |
+
|
1335 |
+
public function getDisplayName()
|
1336 |
+
{
|
1337 |
+
return $this->displayName;
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
public function setEmbed(Google_Service_Plus_ActivityObjectAttachmentsEmbed $embed)
|
1341 |
+
{
|
1342 |
+
$this->embed = $embed;
|
1343 |
+
}
|
1344 |
+
|
1345 |
+
public function getEmbed()
|
1346 |
+
{
|
1347 |
+
return $this->embed;
|
1348 |
+
}
|
1349 |
+
|
1350 |
+
public function setFullImage(Google_Service_Plus_ActivityObjectAttachmentsFullImage $fullImage)
|
1351 |
+
{
|
1352 |
+
$this->fullImage = $fullImage;
|
1353 |
+
}
|
1354 |
+
|
1355 |
+
public function getFullImage()
|
1356 |
+
{
|
1357 |
+
return $this->fullImage;
|
1358 |
+
}
|
1359 |
+
|
1360 |
+
public function setId($id)
|
1361 |
+
{
|
1362 |
+
$this->id = $id;
|
1363 |
+
}
|
1364 |
+
|
1365 |
+
public function getId()
|
1366 |
+
{
|
1367 |
+
return $this->id;
|
1368 |
+
}
|
1369 |
+
|
1370 |
+
public function setImage(Google_Service_Plus_ActivityObjectAttachmentsImage $image)
|
1371 |
+
{
|
1372 |
+
$this->image = $image;
|
1373 |
+
}
|
1374 |
+
|
1375 |
+
public function getImage()
|
1376 |
+
{
|
1377 |
+
return $this->image;
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
public function setObjectType($objectType)
|
1381 |
+
{
|
1382 |
+
$this->objectType = $objectType;
|
1383 |
+
}
|
1384 |
+
|
1385 |
+
public function getObjectType()
|
1386 |
+
{
|
1387 |
+
return $this->objectType;
|
1388 |
+
}
|
1389 |
+
|
1390 |
+
public function setThumbnails($thumbnails)
|
1391 |
+
{
|
1392 |
+
$this->thumbnails = $thumbnails;
|
1393 |
+
}
|
1394 |
+
|
1395 |
+
public function getThumbnails()
|
1396 |
+
{
|
1397 |
+
return $this->thumbnails;
|
1398 |
+
}
|
1399 |
+
|
1400 |
+
public function setUrl($url)
|
1401 |
+
{
|
1402 |
+
$this->url = $url;
|
1403 |
+
}
|
1404 |
+
|
1405 |
+
public function getUrl()
|
1406 |
+
{
|
1407 |
+
return $this->url;
|
1408 |
+
}
|
1409 |
+
}
|
1410 |
+
|
1411 |
+
class Google_Service_Plus_ActivityObjectAttachmentsEmbed extends Google_Model
|
1412 |
+
{
|
1413 |
+
public $type;
|
1414 |
+
public $url;
|
1415 |
+
|
1416 |
+
public function setType($type)
|
1417 |
+
{
|
1418 |
+
$this->type = $type;
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
public function getType()
|
1422 |
+
{
|
1423 |
+
return $this->type;
|
1424 |
+
}
|
1425 |
+
|
1426 |
+
public function setUrl($url)
|
1427 |
+
{
|
1428 |
+
$this->url = $url;
|
1429 |
+
}
|
1430 |
+
|
1431 |
+
public function getUrl()
|
1432 |
+
{
|
1433 |
+
return $this->url;
|
1434 |
+
}
|
1435 |
+
}
|
1436 |
+
|
1437 |
+
class Google_Service_Plus_ActivityObjectAttachmentsFullImage extends Google_Model
|
1438 |
+
{
|
1439 |
+
public $height;
|
1440 |
+
public $type;
|
1441 |
+
public $url;
|
1442 |
+
public $width;
|
1443 |
+
|
1444 |
+
public function setHeight($height)
|
1445 |
+
{
|
1446 |
+
$this->height = $height;
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
public function getHeight()
|
1450 |
+
{
|
1451 |
+
return $this->height;
|
1452 |
+
}
|
1453 |
+
|
1454 |
+
public function setType($type)
|
1455 |
+
{
|
1456 |
+
$this->type = $type;
|
1457 |
+
}
|
1458 |
+
|
1459 |
+
public function getType()
|
1460 |
+
{
|
1461 |
+
return $this->type;
|
1462 |
+
}
|
1463 |
+
|
1464 |
+
public function setUrl($url)
|
1465 |
+
{
|
1466 |
+
$this->url = $url;
|
1467 |
+
}
|
1468 |
+
|
1469 |
+
public function getUrl()
|
1470 |
+
{
|
1471 |
+
return $this->url;
|
1472 |
+
}
|
1473 |
+
|
1474 |
+
public function setWidth($width)
|
1475 |
+
{
|
1476 |
+
$this->width = $width;
|
1477 |
+
}
|
1478 |
+
|
1479 |
+
public function getWidth()
|
1480 |
+
{
|
1481 |
+
return $this->width;
|
1482 |
+
}
|
1483 |
+
}
|
1484 |
+
|
1485 |
+
class Google_Service_Plus_ActivityObjectAttachmentsImage extends Google_Model
|
1486 |
+
{
|
1487 |
+
public $height;
|
1488 |
+
public $type;
|
1489 |
+
public $url;
|
1490 |
+
public $width;
|
1491 |
+
|
1492 |
+
public function setHeight($height)
|
1493 |
+
{
|
1494 |
+
$this->height = $height;
|
1495 |
+
}
|
1496 |
+
|
1497 |
+
public function getHeight()
|
1498 |
+
{
|
1499 |
+
return $this->height;
|
1500 |
+
}
|
1501 |
+
|
1502 |
+
public function setType($type)
|
1503 |
+
{
|
1504 |
+
$this->type = $type;
|
1505 |
+
}
|
1506 |
+
|
1507 |
+
public function getType()
|
1508 |
+
{
|
1509 |
+
return $this->type;
|
1510 |
+
}
|
1511 |
+
|
1512 |
+
public function setUrl($url)
|
1513 |
+
{
|
1514 |
+
$this->url = $url;
|
1515 |
+
}
|
1516 |
+
|
1517 |
+
public function getUrl()
|
1518 |
+
{
|
1519 |
+
return $this->url;
|
1520 |
+
}
|
1521 |
+
|
1522 |
+
public function setWidth($width)
|
1523 |
+
{
|
1524 |
+
$this->width = $width;
|
1525 |
+
}
|
1526 |
+
|
1527 |
+
public function getWidth()
|
1528 |
+
{
|
1529 |
+
return $this->width;
|
1530 |
+
}
|
1531 |
+
}
|
1532 |
+
|
1533 |
+
class Google_Service_Plus_ActivityObjectAttachmentsThumbnails extends Google_Model
|
1534 |
+
{
|
1535 |
+
public $description;
|
1536 |
+
protected $imageType = 'Google_Service_Plus_ActivityObjectAttachmentsThumbnailsImage';
|
1537 |
+
protected $imageDataType = '';
|
1538 |
+
public $url;
|
1539 |
+
|
1540 |
+
public function setDescription($description)
|
1541 |
+
{
|
1542 |
+
$this->description = $description;
|
1543 |
+
}
|
1544 |
+
|
1545 |
+
public function getDescription()
|
1546 |
+
{
|
1547 |
+
return $this->description;
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
public function setImage(Google_Service_Plus_ActivityObjectAttachmentsThumbnailsImage $image)
|
1551 |
+
{
|
1552 |
+
$this->image = $image;
|
1553 |
+
}
|
1554 |
+
|
1555 |
+
public function getImage()
|
1556 |
+
{
|
1557 |
+
return $this->image;
|
1558 |
+
}
|
1559 |
+
|
1560 |
+
public function setUrl($url)
|
1561 |
+
{
|
1562 |
+
$this->url = $url;
|
1563 |
+
}
|
1564 |
+
|
1565 |
+
public function getUrl()
|
1566 |
+
{
|
1567 |
+
return $this->url;
|
1568 |
+
}
|
1569 |
+
}
|
1570 |
+
|
1571 |
+
class Google_Service_Plus_ActivityObjectAttachmentsThumbnailsImage extends Google_Model
|
1572 |
+
{
|
1573 |
+
public $height;
|
1574 |
+
public $type;
|
1575 |
+
public $url;
|
1576 |
+
public $width;
|
1577 |
+
|
1578 |
+
public function setHeight($height)
|
1579 |
+
{
|
1580 |
+
$this->height = $height;
|
1581 |
+
}
|
1582 |
+
|
1583 |
+
public function getHeight()
|
1584 |
+
{
|
1585 |
+
return $this->height;
|
1586 |
+
}
|
1587 |
+
|
1588 |
+
public function setType($type)
|
1589 |
+
{
|
1590 |
+
$this->type = $type;
|
1591 |
+
}
|
1592 |
+
|
1593 |
+
public function getType()
|
1594 |
+
{
|
1595 |
+
return $this->type;
|
1596 |
+
}
|
1597 |
+
|
1598 |
+
public function setUrl($url)
|
1599 |
+
{
|
1600 |
+
$this->url = $url;
|
1601 |
+
}
|
1602 |
+
|
1603 |
+
public function getUrl()
|
1604 |
+
{
|
1605 |
+
return $this->url;
|
1606 |
+
}
|
1607 |
+
|
1608 |
+
public function setWidth($width)
|
1609 |
+
{
|
1610 |
+
$this->width = $width;
|
1611 |
+
}
|
1612 |
+
|
1613 |
+
public function getWidth()
|
1614 |
+
{
|
1615 |
+
return $this->width;
|
1616 |
+
}
|
1617 |
+
}
|
1618 |
+
|
1619 |
+
class Google_Service_Plus_ActivityObjectPlusoners extends Google_Model
|
1620 |
+
{
|
1621 |
+
public $selfLink;
|
1622 |
+
public $totalItems;
|
1623 |
+
|
1624 |
+
public function setSelfLink($selfLink)
|
1625 |
+
{
|
1626 |
+
$this->selfLink = $selfLink;
|
1627 |
+
}
|
1628 |
+
|
1629 |
+
public function getSelfLink()
|
1630 |
+
{
|
1631 |
+
return $this->selfLink;
|
1632 |
+
}
|
1633 |
+
|
1634 |
+
public function setTotalItems($totalItems)
|
1635 |
+
{
|
1636 |
+
$this->totalItems = $totalItems;
|
1637 |
+
}
|
1638 |
+
|
1639 |
+
public function getTotalItems()
|
1640 |
+
{
|
1641 |
+
return $this->totalItems;
|
1642 |
+
}
|
1643 |
+
}
|
1644 |
+
|
1645 |
+
class Google_Service_Plus_ActivityObjectReplies extends Google_Model
|
1646 |
+
{
|
1647 |
+
public $selfLink;
|
1648 |
+
public $totalItems;
|
1649 |
+
|
1650 |
+
public function setSelfLink($selfLink)
|
1651 |
+
{
|
1652 |
+
$this->selfLink = $selfLink;
|
1653 |
+
}
|
1654 |
+
|
1655 |
+
public function getSelfLink()
|
1656 |
+
{
|
1657 |
+
return $this->selfLink;
|
1658 |
+
}
|
1659 |
+
|
1660 |
+
public function setTotalItems($totalItems)
|
1661 |
+
{
|
1662 |
+
$this->totalItems = $totalItems;
|
1663 |
+
}
|
1664 |
+
|
1665 |
+
public function getTotalItems()
|
1666 |
+
{
|
1667 |
+
return $this->totalItems;
|
1668 |
+
}
|
1669 |
+
}
|
1670 |
+
|
1671 |
+
class Google_Service_Plus_ActivityObjectResharers extends Google_Model
|
1672 |
+
{
|
1673 |
+
public $selfLink;
|
1674 |
+
public $totalItems;
|
1675 |
+
|
1676 |
+
public function setSelfLink($selfLink)
|
1677 |
+
{
|
1678 |
+
$this->selfLink = $selfLink;
|
1679 |
+
}
|
1680 |
+
|
1681 |
+
public function getSelfLink()
|
1682 |
+
{
|
1683 |
+
return $this->selfLink;
|
1684 |
+
}
|
1685 |
+
|
1686 |
+
public function setTotalItems($totalItems)
|
1687 |
+
{
|
1688 |
+
$this->totalItems = $totalItems;
|
1689 |
+
}
|
1690 |
+
|
1691 |
+
public function getTotalItems()
|
1692 |
+
{
|
1693 |
+
return $this->totalItems;
|
1694 |
+
}
|
1695 |
+
}
|
1696 |
+
|
1697 |
+
class Google_Service_Plus_ActivityProvider extends Google_Model
|
1698 |
+
{
|
1699 |
+
public $title;
|
1700 |
+
|
1701 |
+
public function setTitle($title)
|
1702 |
+
{
|
1703 |
+
$this->title = $title;
|
1704 |
+
}
|
1705 |
+
|
1706 |
+
public function getTitle()
|
1707 |
+
{
|
1708 |
+
return $this->title;
|
1709 |
+
}
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
class Google_Service_Plus_Comment extends Google_Collection
|
1713 |
+
{
|
1714 |
+
protected $actorType = 'Google_Service_Plus_CommentActor';
|
1715 |
+
protected $actorDataType = '';
|
1716 |
+
public $etag;
|
1717 |
+
public $id;
|
1718 |
+
protected $inReplyToType = 'Google_Service_Plus_CommentInReplyTo';
|
1719 |
+
protected $inReplyToDataType = 'array';
|
1720 |
+
public $kind;
|
1721 |
+
protected $objectType = 'Google_Service_Plus_CommentObject';
|
1722 |
+
protected $objectDataType = '';
|
1723 |
+
protected $plusonersType = 'Google_Service_Plus_CommentPlusoners';
|
1724 |
+
protected $plusonersDataType = '';
|
1725 |
+
public $published;
|
1726 |
+
public $selfLink;
|
1727 |
+
public $updated;
|
1728 |
+
public $verb;
|
1729 |
+
|
1730 |
+
public function setActor(Google_Service_Plus_CommentActor $actor)
|
1731 |
+
{
|
1732 |
+
$this->actor = $actor;
|
1733 |
+
}
|
1734 |
+
|
1735 |
+
public function getActor()
|
1736 |
+
{
|
1737 |
+
return $this->actor;
|
1738 |
+
}
|
1739 |
+
|
1740 |
+
public function setEtag($etag)
|
1741 |
+
{
|
1742 |
+
$this->etag = $etag;
|
1743 |
+
}
|
1744 |
+
|
1745 |
+
public function getEtag()
|
1746 |
+
{
|
1747 |
+
return $this->etag;
|
1748 |
+
}
|
1749 |
+
|
1750 |
+
public function setId($id)
|
1751 |
+
{
|
1752 |
+
$this->id = $id;
|
1753 |
+
}
|
1754 |
+
|
1755 |
+
public function getId()
|
1756 |
+
{
|
1757 |
+
return $this->id;
|
1758 |
+
}
|
1759 |
+
|
1760 |
+
public function setInReplyTo($inReplyTo)
|
1761 |
+
{
|
1762 |
+
$this->inReplyTo = $inReplyTo;
|
1763 |
+
}
|
1764 |
+
|
1765 |
+
public function getInReplyTo()
|
1766 |
+
{
|
1767 |
+
return $this->inReplyTo;
|
1768 |
+
}
|
1769 |
+
|
1770 |
+
public function setKind($kind)
|
1771 |
+
{
|
1772 |
+
$this->kind = $kind;
|
1773 |
+
}
|
1774 |
+
|
1775 |
+
public function getKind()
|
1776 |
+
{
|
1777 |
+
return $this->kind;
|
1778 |
+
}
|
1779 |
+
|
1780 |
+
public function setObject(Google_Service_Plus_CommentObject $object)
|
1781 |
+
{
|
1782 |
+
$this->object = $object;
|
1783 |
+
}
|
1784 |
+
|
1785 |
+
public function getObject()
|
1786 |
+
{
|
1787 |
+
return $this->object;
|
1788 |
+
}
|
1789 |
+
|
1790 |
+
public function setPlusoners(Google_Service_Plus_CommentPlusoners $plusoners)
|
1791 |
+
{
|
1792 |
+
$this->plusoners = $plusoners;
|
1793 |
+
}
|
1794 |
+
|
1795 |
+
public function getPlusoners()
|
1796 |
+
{
|
1797 |
+
return $this->plusoners;
|
1798 |
+
}
|
1799 |
+
|
1800 |
+
public function setPublished($published)
|
1801 |
+
{
|
1802 |
+
$this->published = $published;
|
1803 |
+
}
|
1804 |
+
|
1805 |
+
public function getPublished()
|
1806 |
+
{
|
1807 |
+
return $this->published;
|
1808 |
+
}
|
1809 |
+
|
1810 |
+
public function setSelfLink($selfLink)
|
1811 |
+
{
|
1812 |
+
$this->selfLink = $selfLink;
|
1813 |
+
}
|
1814 |
+
|
1815 |
+
public function getSelfLink()
|
1816 |
+
{
|
1817 |
+
return $this->selfLink;
|
1818 |
+
}
|
1819 |
+
|
1820 |
+
public function setUpdated($updated)
|
1821 |
+
{
|
1822 |
+
$this->updated = $updated;
|
1823 |
+
}
|
1824 |
+
|
1825 |
+
public function getUpdated()
|
1826 |
+
{
|
1827 |
+
return $this->updated;
|
1828 |
+
}
|
1829 |
+
|
1830 |
+
public function setVerb($verb)
|
1831 |
+
{
|
1832 |
+
$this->verb = $verb;
|
1833 |
+
}
|
1834 |
+
|
1835 |
+
public function getVerb()
|
1836 |
+
{
|
1837 |
+
return $this->verb;
|
1838 |
+
}
|
1839 |
+
}
|
1840 |
+
|
1841 |
+
class Google_Service_Plus_CommentActor extends Google_Model
|
1842 |
+
{
|
1843 |
+
public $displayName;
|
1844 |
+
public $id;
|
1845 |
+
protected $imageType = 'Google_Service_Plus_CommentActorImage';
|
1846 |
+
protected $imageDataType = '';
|
1847 |
+
public $url;
|
1848 |
+
|
1849 |
+
public function setDisplayName($displayName)
|
1850 |
+
{
|
1851 |
+
$this->displayName = $displayName;
|
1852 |
+
}
|
1853 |
+
|
1854 |
+
public function getDisplayName()
|
1855 |
+
{
|
1856 |
+
return $this->displayName;
|
1857 |
+
}
|
1858 |
+
|
1859 |
+
public function setId($id)
|
1860 |
+
{
|
1861 |
+
$this->id = $id;
|
1862 |
+
}
|
1863 |
+
|
1864 |
+
public function getId()
|
1865 |
+
{
|
1866 |
+
return $this->id;
|
1867 |
+
}
|
1868 |
+
|
1869 |
+
public function setImage(Google_Service_Plus_CommentActorImage $image)
|
1870 |
+
{
|
1871 |
+
$this->image = $image;
|
1872 |
+
}
|
1873 |
+
|
1874 |
+
public function getImage()
|
1875 |
+
{
|
1876 |
+
return $this->image;
|
1877 |
+
}
|
1878 |
+
|
1879 |
+
public function setUrl($url)
|
1880 |
+
{
|
1881 |
+
$this->url = $url;
|
1882 |
+
}
|
1883 |
+
|
1884 |
+
public function getUrl()
|
1885 |
+
{
|
1886 |
+
return $this->url;
|
1887 |
+
}
|
1888 |
+
}
|
1889 |
+
|
1890 |
+
class Google_Service_Plus_CommentActorImage extends Google_Model
|
1891 |
+
{
|
1892 |
+
public $url;
|
1893 |
+
|
1894 |
+
public function setUrl($url)
|
1895 |
+
{
|
1896 |
+
$this->url = $url;
|
1897 |
+
}
|
1898 |
+
|
1899 |
+
public function getUrl()
|
1900 |
+
{
|
1901 |
+
return $this->url;
|
1902 |
+
}
|
1903 |
+
}
|
1904 |
+
|
1905 |
+
class Google_Service_Plus_CommentFeed extends Google_Collection
|
1906 |
+
{
|
1907 |
+
public $etag;
|
1908 |
+
public $id;
|
1909 |
+
protected $itemsType = 'Google_Service_Plus_Comment';
|
1910 |
+
protected $itemsDataType = 'array';
|
1911 |
+
public $kind;
|
1912 |
+
public $nextLink;
|
1913 |
+
public $nextPageToken;
|
1914 |
+
public $title;
|
1915 |
+
public $updated;
|
1916 |
+
|
1917 |
+
public function setEtag($etag)
|
1918 |
+
{
|
1919 |
+
$this->etag = $etag;
|
1920 |
+
}
|
1921 |
+
|
1922 |
+
public function getEtag()
|
1923 |
+
{
|
1924 |
+
return $this->etag;
|
1925 |
+
}
|
1926 |
+
|
1927 |
+
public function setId($id)
|
1928 |
+
{
|
1929 |
+
$this->id = $id;
|
1930 |
+
}
|
1931 |
+
|
1932 |
+
public function getId()
|
1933 |
+
{
|
1934 |
+
return $this->id;
|
1935 |
+
}
|
1936 |
+
|
1937 |
+
public function setItems($items)
|
1938 |
+
{
|
1939 |
+
$this->items = $items;
|
1940 |
+
}
|
1941 |
+
|
1942 |
+
public function getItems()
|
1943 |
+
{
|
1944 |
+
return $this->items;
|
1945 |
+
}
|
1946 |
+
|
1947 |
+
public function setKind($kind)
|
1948 |
+
{
|
1949 |
+
$this->kind = $kind;
|
1950 |
+
}
|
1951 |
+
|
1952 |
+
public function getKind()
|
1953 |
+
{
|
1954 |
+
return $this->kind;
|
1955 |
+
}
|
1956 |
+
|
1957 |
+
public function setNextLink($nextLink)
|
1958 |
+
{
|
1959 |
+
$this->nextLink = $nextLink;
|
1960 |
+
}
|
1961 |
+
|
1962 |
+
public function getNextLink()
|
1963 |
+
{
|
1964 |
+
return $this->nextLink;
|
1965 |
+
}
|
1966 |
+
|
1967 |
+
public function setNextPageToken($nextPageToken)
|
1968 |
+
{
|
1969 |
+
$this->nextPageToken = $nextPageToken;
|
1970 |
+
}
|
1971 |
+
|
1972 |
+
public function getNextPageToken()
|
1973 |
+
{
|
1974 |
+
return $this->nextPageToken;
|
1975 |
+
}
|
1976 |
+
|
1977 |
+
public function setTitle($title)
|
1978 |
+
{
|
1979 |
+
$this->title = $title;
|
1980 |
+
}
|
1981 |
+
|
1982 |
+
public function getTitle()
|
1983 |
+
{
|
1984 |
+
return $this->title;
|
1985 |
+
}
|
1986 |
+
|
1987 |
+
public function setUpdated($updated)
|
1988 |
+
{
|
1989 |
+
$this->updated = $updated;
|
1990 |
+
}
|
1991 |
+
|
1992 |
+
public function getUpdated()
|
1993 |
+
{
|
1994 |
+
return $this->updated;
|
1995 |
+
}
|
1996 |
+
}
|
1997 |
+
|
1998 |
+
class Google_Service_Plus_CommentInReplyTo extends Google_Model
|
1999 |
+
{
|
2000 |
+
public $id;
|
2001 |
+
public $url;
|
2002 |
+
|
2003 |
+
public function setId($id)
|
2004 |
+
{
|
2005 |
+
$this->id = $id;
|
2006 |
+
}
|
2007 |
+
|
2008 |
+
public function getId()
|
2009 |
+
{
|
2010 |
+
return $this->id;
|
2011 |
+
}
|
2012 |
+
|
2013 |
+
public function setUrl($url)
|
2014 |
+
{
|
2015 |
+
$this->url = $url;
|
2016 |
+
}
|
2017 |
+
|
2018 |
+
public function getUrl()
|
2019 |
+
{
|
2020 |
+
return $this->url;
|
2021 |
+
}
|
2022 |
+
}
|
2023 |
+
|
2024 |
+
class Google_Service_Plus_CommentObject extends Google_Model
|
2025 |
+
{
|
2026 |
+
public $content;
|
2027 |
+
public $objectType;
|
2028 |
+
public $originalContent;
|
2029 |
+
|
2030 |
+
public function setContent($content)
|
2031 |
+
{
|
2032 |
+
$this->content = $content;
|
2033 |
+
}
|
2034 |
+
|
2035 |
+
public function getContent()
|
2036 |
+
{
|
2037 |
+
return $this->content;
|
2038 |
+
}
|
2039 |
+
|
2040 |
+
public function setObjectType($objectType)
|
2041 |
+
{
|
2042 |
+
$this->objectType = $objectType;
|
2043 |
+
}
|
2044 |
+
|
2045 |
+
public function getObjectType()
|
2046 |
+
{
|
2047 |
+
return $this->objectType;
|
2048 |
+
}
|
2049 |
+
|
2050 |
+
public function setOriginalContent($originalContent)
|
2051 |
+
{
|
2052 |
+
$this->originalContent = $originalContent;
|
2053 |
+
}
|
2054 |
+
|
2055 |
+
public function getOriginalContent()
|
2056 |
+
{
|
2057 |
+
return $this->originalContent;
|
2058 |
+
}
|
2059 |
+
}
|
2060 |
+
|
2061 |
+
class Google_Service_Plus_CommentPlusoners extends Google_Model
|
2062 |
+
{
|
2063 |
+
public $totalItems;
|
2064 |
+
|
2065 |
+
public function setTotalItems($totalItems)
|
2066 |
+
{
|
2067 |
+
$this->totalItems = $totalItems;
|
2068 |
+
}
|
2069 |
+
|
2070 |
+
public function getTotalItems()
|
2071 |
+
{
|
2072 |
+
return $this->totalItems;
|
2073 |
+
}
|
2074 |
+
}
|
2075 |
+
|
2076 |
+
class Google_Service_Plus_ItemScope extends Google_Collection
|
2077 |
+
{
|
2078 |
+
protected $aboutType = 'Google_Service_Plus_ItemScope';
|
2079 |
+
protected $aboutDataType = '';
|
2080 |
+
public $additionalName;
|
2081 |
+
protected $addressType = 'Google_Service_Plus_ItemScope';
|
2082 |
+
protected $addressDataType = '';
|
2083 |
+
public $addressCountry;
|
2084 |
+
public $addressLocality;
|
2085 |
+
public $addressRegion;
|
2086 |
+
protected $associatedMediaType = 'Google_Service_Plus_ItemScope';
|
2087 |
+
protected $associatedMediaDataType = 'array';
|
2088 |
+
public $attendeeCount;
|
2089 |
+
protected $attendeesType = 'Google_Service_Plus_ItemScope';
|
2090 |
+
protected $attendeesDataType = 'array';
|
2091 |
+
protected $audioType = 'Google_Service_Plus_ItemScope';
|
2092 |
+
protected $audioDataType = '';
|
2093 |
+
protected $authorType = 'Google_Service_Plus_ItemScope';
|
2094 |
+
protected $authorDataType = 'array';
|
2095 |
+
public $bestRating;
|
2096 |
+
public $birthDate;
|
2097 |
+
protected $byArtistType = 'Google_Service_Plus_ItemScope';
|
2098 |
+
protected $byArtistDataType = '';
|
2099 |
+
public $caption;
|
2100 |
+
public $contentSize;
|
2101 |
+
public $contentUrl;
|
2102 |
+
protected $contributorType = 'Google_Service_Plus_ItemScope';
|
2103 |
+
protected $contributorDataType = 'array';
|
2104 |
+
public $dateCreated;
|
2105 |
+
public $dateModified;
|
2106 |
+
public $datePublished;
|
2107 |
+
public $description;
|
2108 |
+
public $duration;
|
2109 |
+
public $embedUrl;
|
2110 |
+
public $endDate;
|
2111 |
+
public $familyName;
|
2112 |
+
public $gender;
|
2113 |
+
protected $geoType = 'Google_Service_Plus_ItemScope';
|
2114 |
+
protected $geoDataType = '';
|
2115 |
+
public $givenName;
|
2116 |
+
public $height;
|
2117 |
+
public $id;
|
2118 |
+
public $image;
|
2119 |
+
protected $inAlbumType = 'Google_Service_Plus_ItemScope';
|
2120 |
+
protected $inAlbumDataType = '';
|
2121 |
+
public $kind;
|
2122 |
+
public $latitude;
|
2123 |
+
protected $locationType = 'Google_Service_Plus_ItemScope';
|
2124 |
+
protected $locationDataType = '';
|
2125 |
+
public $longitude;
|
2126 |
+
public $name;
|
2127 |
+
protected $partOfTVSeriesType = 'Google_Service_Plus_ItemScope';
|
2128 |
+
protected $partOfTVSeriesDataType = '';
|
2129 |
+
protected $performersType = 'Google_Service_Plus_ItemScope';
|
2130 |
+
protected $performersDataType = 'array';
|
2131 |
+
public $playerType;
|
2132 |
+
public $postOfficeBoxNumber;
|
2133 |
+
public $postalCode;
|
2134 |
+
public $ratingValue;
|
2135 |
+
protected $reviewRatingType = 'Google_Service_Plus_ItemScope';
|
2136 |
+
protected $reviewRatingDataType = '';
|
2137 |
+
public $startDate;
|
2138 |
+
public $streetAddress;
|
2139 |
+
public $text;
|
2140 |
+
protected $thumbnailType = 'Google_Service_Plus_ItemScope';
|
2141 |
+
protected $thumbnailDataType = '';
|
2142 |
+
public $thumbnailUrl;
|
2143 |
+
public $tickerSymbol;
|
2144 |
+
public $type;
|
2145 |
+
public $url;
|
2146 |
+
public $width;
|
2147 |
+
public $worstRating;
|
2148 |
+
|
2149 |
+
public function setAbout(Google_Service_Plus_ItemScope $about)
|
2150 |
+
{
|
2151 |
+
$this->about = $about;
|
2152 |
+
}
|
2153 |
+
|
2154 |
+
public function getAbout()
|
2155 |
+
{
|
2156 |
+
return $this->about;
|
2157 |
+
}
|
2158 |
+
|
2159 |
+
public function setAdditionalName($additionalName)
|
2160 |
+
{
|
2161 |
+
$this->additionalName = $additionalName;
|
2162 |
+
}
|
2163 |
+
|
2164 |
+
public function getAdditionalName()
|
2165 |
+
{
|
2166 |
+
return $this->additionalName;
|
2167 |
+
}
|
2168 |
+
|
2169 |
+
public function setAddress(Google_Service_Plus_ItemScope $address)
|
2170 |
+
{
|
2171 |
+
$this->address = $address;
|
2172 |
+
}
|
2173 |
+
|
2174 |
+
public function getAddress()
|
2175 |
+
{
|
2176 |
+
return $this->address;
|
2177 |
+
}
|
2178 |
+
|
2179 |
+
public function setAddressCountry($addressCountry)
|
2180 |
+
{
|
2181 |
+
$this->addressCountry = $addressCountry;
|
2182 |
+
}
|
2183 |
+
|
2184 |
+
public function getAddressCountry()
|
2185 |
+
{
|
2186 |
+
return $this->addressCountry;
|
2187 |
+
}
|
2188 |
+
|
2189 |
+
public function setAddressLocality($addressLocality)
|
2190 |
+
{
|
2191 |
+
$this->addressLocality = $addressLocality;
|
2192 |
+
}
|
2193 |
+
|
2194 |
+
public function getAddressLocality()
|
2195 |
+
{
|
2196 |
+
return $this->addressLocality;
|
2197 |
+
}
|
2198 |
+
|
2199 |
+
public function setAddressRegion($addressRegion)
|
2200 |
+
{
|
2201 |
+
$this->addressRegion = $addressRegion;
|
2202 |
+
}
|
2203 |
+
|
2204 |
+
public function getAddressRegion()
|
2205 |
+
{
|
2206 |
+
return $this->addressRegion;
|
2207 |
+
}
|
2208 |
+
|
2209 |
+
public function setAssociatedMedia($associatedMedia)
|
2210 |
+
{
|
2211 |
+
$this->associatedMedia = $associatedMedia;
|
2212 |
+
}
|
2213 |
+
|
2214 |
+
public function getAssociatedMedia()
|
2215 |
+
{
|
2216 |
+
return $this->associatedMedia;
|
2217 |
+
}
|
2218 |
+
|
2219 |
+
public function setAttendeeCount($attendeeCount)
|
2220 |
+
{
|
2221 |
+
$this->attendeeCount = $attendeeCount;
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
public function getAttendeeCount()
|
2225 |
+
{
|
2226 |
+
return $this->attendeeCount;
|
2227 |
+
}
|
2228 |
+
|
2229 |
+
public function setAttendees($attendees)
|
2230 |
+
{
|
2231 |
+
$this->attendees = $attendees;
|
2232 |
+
}
|
2233 |
+
|
2234 |
+
public function getAttendees()
|
2235 |
+
{
|
2236 |
+
return $this->attendees;
|
2237 |
+
}
|
2238 |
+
|
2239 |
+
public function setAudio(Google_Service_Plus_ItemScope $audio)
|
2240 |
+
{
|
2241 |
+
$this->audio = $audio;
|
2242 |
+
}
|
2243 |
+
|
2244 |
+
public function getAudio()
|
2245 |
+
{
|
2246 |
+
return $this->audio;
|
2247 |
+
}
|
2248 |
+
|
2249 |
+
public function setAuthor($author)
|
2250 |
+
{
|
2251 |
+
$this->author = $author;
|
2252 |
+
}
|
2253 |
+
|
2254 |
+
public function getAuthor()
|
2255 |
+
{
|
2256 |
+
return $this->author;
|
2257 |
+
}
|
2258 |
+
|
2259 |
+
public function setBestRating($bestRating)
|
2260 |
+
{
|
2261 |
+
$this->bestRating = $bestRating;
|
2262 |
+
}
|
2263 |
+
|
2264 |
+
public function getBestRating()
|
2265 |
+
{
|
2266 |
+
return $this->bestRating;
|
2267 |
+
}
|
2268 |
+
|
2269 |
+
public function setBirthDate($birthDate)
|
2270 |
+
{
|
2271 |
+
$this->birthDate = $birthDate;
|
2272 |
+
}
|
2273 |
+
|
2274 |
+
public function getBirthDate()
|
2275 |
+
{
|
2276 |
+
return $this->birthDate;
|
2277 |
+
}
|
2278 |
+
|
2279 |
+
public function setByArtist(Google_Service_Plus_ItemScope $byArtist)
|
2280 |
+
{
|
2281 |
+
$this->byArtist = $byArtist;
|
2282 |
+
}
|
2283 |
+
|
2284 |
+
public function getByArtist()
|
2285 |
+
{
|
2286 |
+
return $this->byArtist;
|
2287 |
+
}
|
2288 |
+
|
2289 |
+
public function setCaption($caption)
|
2290 |
+
{
|
2291 |
+
$this->caption = $caption;
|
2292 |
+
}
|
2293 |
+
|
2294 |
+
public function getCaption()
|
2295 |
+
{
|
2296 |
+
return $this->caption;
|
2297 |
+
}
|
2298 |
+
|
2299 |
+
public function setContentSize($contentSize)
|
2300 |
+
{
|
2301 |
+
$this->contentSize = $contentSize;
|
2302 |
+
}
|
2303 |
+
|
2304 |
+
public function getContentSize()
|
2305 |
+
{
|
2306 |
+
return $this->contentSize;
|
2307 |
+
}
|
2308 |
+
|
2309 |
+
public function setContentUrl($contentUrl)
|
2310 |
+
{
|
2311 |
+
$this->contentUrl = $contentUrl;
|
2312 |
+
}
|
2313 |
+
|
2314 |
+
public function getContentUrl()
|
2315 |
+
{
|
2316 |
+
return $this->contentUrl;
|
2317 |
+
}
|
2318 |
+
|
2319 |
+
public function setContributor($contributor)
|
2320 |
+
{
|
2321 |
+
$this->contributor = $contributor;
|
2322 |
+
}
|
2323 |
+
|
2324 |
+
public function getContributor()
|
2325 |
+
{
|
2326 |
+
return $this->contributor;
|
2327 |
+
}
|
2328 |
+
|
2329 |
+
public function setDateCreated($dateCreated)
|
2330 |
+
{
|
2331 |
+
$this->dateCreated = $dateCreated;
|
2332 |
+
}
|
2333 |
+
|
2334 |
+
public function getDateCreated()
|
2335 |
+
{
|
2336 |
+
return $this->dateCreated;
|
2337 |
+
}
|
2338 |
+
|
2339 |
+
public function setDateModified($dateModified)
|
2340 |
+
{
|
2341 |
+
$this->dateModified = $dateModified;
|
2342 |
+
}
|
2343 |
+
|
2344 |
+
public function getDateModified()
|
2345 |
+
{
|
2346 |
+
return $this->dateModified;
|
2347 |
+
}
|
2348 |
+
|
2349 |
+
public function setDatePublished($datePublished)
|
2350 |
+
{
|
2351 |
+
$this->datePublished = $datePublished;
|
2352 |
+
}
|
2353 |
+
|
2354 |
+
public function getDatePublished()
|
2355 |
+
{
|
2356 |
+
return $this->datePublished;
|
2357 |
+
}
|
2358 |
+
|
2359 |
+
public function setDescription($description)
|
2360 |
+
{
|
2361 |
+
$this->description = $description;
|
2362 |
+
}
|
2363 |
+
|
2364 |
+
public function getDescription()
|
2365 |
+
{
|
2366 |
+
return $this->description;
|
2367 |
+
}
|
2368 |
+
|
2369 |
+
public function setDuration($duration)
|
2370 |
+
{
|
2371 |
+
$this->duration = $duration;
|
2372 |
+
}
|
2373 |
+
|
2374 |
+
public function getDuration()
|
2375 |
+
{
|
2376 |
+
return $this->duration;
|
2377 |
+
}
|
2378 |
+
|
2379 |
+
public function setEmbedUrl($embedUrl)
|
2380 |
+
{
|
2381 |
+
$this->embedUrl = $embedUrl;
|
2382 |
+
}
|
2383 |
+
|
2384 |
+
public function getEmbedUrl()
|
2385 |
+
{
|
2386 |
+
return $this->embedUrl;
|
2387 |
+
}
|
2388 |
+
|
2389 |
+
public function setEndDate($endDate)
|
2390 |
+
{
|
2391 |
+
$this->endDate = $endDate;
|
2392 |
+
}
|
2393 |
+
|
2394 |
+
public function getEndDate()
|
2395 |
+
{
|
2396 |
+
return $this->endDate;
|
2397 |
+
}
|
2398 |
+
|
2399 |
+
public function setFamilyName($familyName)
|
2400 |
+
{
|
2401 |
+
$this->familyName = $familyName;
|
2402 |
+
}
|
2403 |
+
|
2404 |
+
public function getFamilyName()
|
2405 |
+
{
|
2406 |
+
return $this->familyName;
|
2407 |
+
}
|
2408 |
+
|
2409 |
+
public function setGender($gender)
|
2410 |
+
{
|
2411 |
+
$this->gender = $gender;
|
2412 |
+
}
|
2413 |
+
|
2414 |
+
public function getGender()
|
2415 |
+
{
|
2416 |
+
return $this->gender;
|
2417 |
+
}
|
2418 |
+
|
2419 |
+
public function setGeo(Google_Service_Plus_ItemScope $geo)
|
2420 |
+
{
|
2421 |
+
$this->geo = $geo;
|
2422 |
+
}
|
2423 |
+
|
2424 |
+
public function getGeo()
|
2425 |
+
{
|
2426 |
+
return $this->geo;
|
2427 |
+
}
|
2428 |
+
|
2429 |
+
public function setGivenName($givenName)
|
2430 |
+
{
|
2431 |
+
$this->givenName = $givenName;
|
2432 |
+
}
|
2433 |
+
|
2434 |
+
public function getGivenName()
|
2435 |
+
{
|
2436 |
+
return $this->givenName;
|
2437 |
+
}
|
2438 |
+
|
2439 |
+
public function setHeight($height)
|
2440 |
+
{
|
2441 |
+
$this->height = $height;
|
2442 |
+
}
|
2443 |
+
|
2444 |
+
public function getHeight()
|
2445 |
+
{
|
2446 |
+
return $this->height;
|
2447 |
+
}
|
2448 |
+
|
2449 |
+
public function setId($id)
|
2450 |
+
{
|
2451 |
+
$this->id = $id;
|
2452 |
+
}
|
2453 |
+
|
2454 |
+
public function getId()
|
2455 |
+
{
|
2456 |
+
return $this->id;
|
2457 |
+
}
|
2458 |
+
|
2459 |
+
public function setImage($image)
|
2460 |
+
{
|
2461 |
+
$this->image = $image;
|
2462 |
+
}
|
2463 |
+
|
2464 |
+
public function getImage()
|
2465 |
+
{
|
2466 |
+
return $this->image;
|
2467 |
+
}
|
2468 |
+
|
2469 |
+
public function setInAlbum(Google_Service_Plus_ItemScope $inAlbum)
|
2470 |
+
{
|
2471 |
+
$this->inAlbum = $inAlbum;
|
2472 |
+
}
|
2473 |
+
|
2474 |
+
public function getInAlbum()
|
2475 |
+
{
|
2476 |
+
return $this->inAlbum;
|
2477 |
+
}
|
2478 |
+
|
2479 |
+
public function setKind($kind)
|
2480 |
+
{
|
2481 |
+
$this->kind = $kind;
|
2482 |
+
}
|
2483 |
+
|
2484 |
+
public function getKind()
|
2485 |
+
{
|
2486 |
+
return $this->kind;
|
2487 |
+
}
|
2488 |
+
|
2489 |
+
public function setLatitude($latitude)
|
2490 |
+
{
|
2491 |
+
$this->latitude = $latitude;
|
2492 |
+
}
|
2493 |
+
|
2494 |
+
public function getLatitude()
|
2495 |
+
{
|
2496 |
+
return $this->latitude;
|
2497 |
+
}
|
2498 |
+
|
2499 |
+
public function setLocation(Google_Service_Plus_ItemScope $location)
|
2500 |
+
{
|
2501 |
+
$this->location = $location;
|
2502 |
+
}
|
2503 |
+
|
2504 |
+
public function getLocation()
|
2505 |
+
{
|
2506 |
+
return $this->location;
|
2507 |
+
}
|
2508 |
+
|
2509 |
+
public function setLongitude($longitude)
|
2510 |
+
{
|
2511 |
+
$this->longitude = $longitude;
|
2512 |
+
}
|
2513 |
+
|
2514 |
+
public function getLongitude()
|
2515 |
+
{
|
2516 |
+
return $this->longitude;
|
2517 |
+
}
|
2518 |
+
|
2519 |
+
public function setName($name)
|
2520 |
+
{
|
2521 |
+
$this->name = $name;
|
2522 |
+
}
|
2523 |
+
|
2524 |
+
public function getName()
|
2525 |
+
{
|
2526 |
+
return $this->name;
|
2527 |
+
}
|
2528 |
+
|
2529 |
+
public function setPartOfTVSeries(Google_Service_Plus_ItemScope $partOfTVSeries)
|
2530 |
+
{
|
2531 |
+
$this->partOfTVSeries = $partOfTVSeries;
|
2532 |
+
}
|
2533 |
+
|
2534 |
+
public function getPartOfTVSeries()
|
2535 |
+
{
|
2536 |
+
return $this->partOfTVSeries;
|
2537 |
+
}
|
2538 |
+
|
2539 |
+
public function setPerformers($performers)
|
2540 |
+
{
|
2541 |
+
$this->performers = $performers;
|
2542 |
+
}
|
2543 |
+
|
2544 |
+
public function getPerformers()
|
2545 |
+
{
|
2546 |
+
return $this->performers;
|
2547 |
+
}
|
2548 |
+
|
2549 |
+
public function setPlayerType($playerType)
|
2550 |
+
{
|
2551 |
+
$this->playerType = $playerType;
|
2552 |
+
}
|
2553 |
+
|
2554 |
+
public function getPlayerType()
|
2555 |
+
{
|
2556 |
+
return $this->playerType;
|
2557 |
+
}
|
2558 |
+
|
2559 |
+
public function setPostOfficeBoxNumber($postOfficeBoxNumber)
|
2560 |
+
{
|
2561 |
+
$this->postOfficeBoxNumber = $postOfficeBoxNumber;
|
2562 |
+
}
|
2563 |
+
|
2564 |
+
public function getPostOfficeBoxNumber()
|
2565 |
+
{
|
2566 |
+
return $this->postOfficeBoxNumber;
|
2567 |
+
}
|
2568 |
+
|
2569 |
+
public function setPostalCode($postalCode)
|
2570 |
+
{
|
2571 |
+
$this->postalCode = $postalCode;
|
2572 |
+
}
|
2573 |
+
|
2574 |
+
public function getPostalCode()
|
2575 |
+
{
|
2576 |
+
return $this->postalCode;
|
2577 |
+
}
|
2578 |
+
|
2579 |
+
public function setRatingValue($ratingValue)
|
2580 |
+
{
|
2581 |
+
$this->ratingValue = $ratingValue;
|
2582 |
+
}
|
2583 |
+
|
2584 |
+
public function getRatingValue()
|
2585 |
+
{
|
2586 |
+
return $this->ratingValue;
|
2587 |
+
}
|
2588 |
+
|
2589 |
+
public function setReviewRating(Google_Service_Plus_ItemScope $reviewRating)
|
2590 |
+
{
|
2591 |
+
$this->reviewRating = $reviewRating;
|
2592 |
+
}
|
2593 |
+
|
2594 |
+
public function getReviewRating()
|
2595 |
+
{
|
2596 |
+
return $this->reviewRating;
|
2597 |
+
}
|
2598 |
+
|
2599 |
+
public function setStartDate($startDate)
|
2600 |
+
{
|
2601 |
+
$this->startDate = $startDate;
|
2602 |
+
}
|
2603 |
+
|
2604 |
+
public function getStartDate()
|
2605 |
+
{
|
2606 |
+
return $this->startDate;
|
2607 |
+
}
|
2608 |
+
|
2609 |
+
public function setStreetAddress($streetAddress)
|
2610 |
+
{
|
2611 |
+
$this->streetAddress = $streetAddress;
|
2612 |
+
}
|
2613 |
+
|
2614 |
+
public function getStreetAddress()
|
2615 |
+
{
|
2616 |
+
return $this->streetAddress;
|
2617 |
+
}
|
2618 |
+
|
2619 |
+
public function setText($text)
|
2620 |
+
{
|
2621 |
+
$this->text = $text;
|
2622 |
+
}
|
2623 |
+
|
2624 |
+
public function getText()
|
2625 |
+
{
|
2626 |
+
return $this->text;
|
2627 |
+
}
|
2628 |
+
|
2629 |
+
public function setThumbnail(Google_Service_Plus_ItemScope $thumbnail)
|
2630 |
+
{
|
2631 |
+
$this->thumbnail = $thumbnail;
|
2632 |
+
}
|
2633 |
+
|
2634 |
+
public function getThumbnail()
|
2635 |
+
{
|
2636 |
+
return $this->thumbnail;
|
2637 |
+
}
|
2638 |
+
|
2639 |
+
public function setThumbnailUrl($thumbnailUrl)
|
2640 |
+
{
|
2641 |
+
$this->thumbnailUrl = $thumbnailUrl;
|
2642 |
+
}
|
2643 |
+
|
2644 |
+
public function getThumbnailUrl()
|
2645 |
+
{
|
2646 |
+
return $this->thumbnailUrl;
|
2647 |
+
}
|
2648 |
+
|
2649 |
+
public function setTickerSymbol($tickerSymbol)
|
2650 |
+
{
|
2651 |
+
$this->tickerSymbol = $tickerSymbol;
|
2652 |
+
}
|
2653 |
+
|
2654 |
+
public function getTickerSymbol()
|
2655 |
+
{
|
2656 |
+
return $this->tickerSymbol;
|
2657 |
+
}
|
2658 |
+
|
2659 |
+
public function setType($type)
|
2660 |
+
{
|
2661 |
+
$this->type = $type;
|
2662 |
+
}
|
2663 |
+
|
2664 |
+
public function getType()
|
2665 |
+
{
|
2666 |
+
return $this->type;
|
2667 |
+
}
|
2668 |
+
|
2669 |
+
public function setUrl($url)
|
2670 |
+
{
|
2671 |
+
$this->url = $url;
|
2672 |
+
}
|
2673 |
+
|
2674 |
+
public function getUrl()
|
2675 |
+
{
|
2676 |
+
return $this->url;
|
2677 |
+
}
|
2678 |
+
|
2679 |
+
public function setWidth($width)
|
2680 |
+
{
|
2681 |
+
$this->width = $width;
|
2682 |
+
}
|
2683 |
+
|
2684 |
+
public function getWidth()
|
2685 |
+
{
|
2686 |
+
return $this->width;
|
2687 |
+
}
|
2688 |
+
|
2689 |
+
public function setWorstRating($worstRating)
|
2690 |
+
{
|
2691 |
+
$this->worstRating = $worstRating;
|
2692 |
+
}
|
2693 |
+
|
2694 |
+
public function getWorstRating()
|
2695 |
+
{
|
2696 |
+
return $this->worstRating;
|
2697 |
+
}
|
2698 |
+
}
|
2699 |
+
|
2700 |
+
class Google_Service_Plus_Moment extends Google_Model
|
2701 |
+
{
|
2702 |
+
public $id;
|
2703 |
+
public $kind;
|
2704 |
+
protected $objectType = 'Google_Service_Plus_ItemScope';
|
2705 |
+
protected $objectDataType = '';
|
2706 |
+
protected $resultType = 'Google_Service_Plus_ItemScope';
|
2707 |
+
protected $resultDataType = '';
|
2708 |
+
public $startDate;
|
2709 |
+
protected $targetType = 'Google_Service_Plus_ItemScope';
|
2710 |
+
protected $targetDataType = '';
|
2711 |
+
public $type;
|
2712 |
+
|
2713 |
+
public function setId($id)
|
2714 |
+
{
|
2715 |
+
$this->id = $id;
|
2716 |
+
}
|
2717 |
+
|
2718 |
+
public function getId()
|
2719 |
+
{
|
2720 |
+
return $this->id;
|
2721 |
+
}
|
2722 |
+
|
2723 |
+
public function setKind($kind)
|
2724 |
+
{
|
2725 |
+
$this->kind = $kind;
|
2726 |
+
}
|
2727 |
+
|
2728 |
+
public function getKind()
|
2729 |
+
{
|
2730 |
+
return $this->kind;
|
2731 |
+
}
|
2732 |
+
|
2733 |
+
public function setObject(Google_Service_Plus_ItemScope $object)
|
2734 |
+
{
|
2735 |
+
$this->object = $object;
|
2736 |
+
}
|
2737 |
+
|
2738 |
+
public function getObject()
|
2739 |
+
{
|
2740 |
+
return $this->object;
|
2741 |
+
}
|
2742 |
+
|
2743 |
+
public function setResult(Google_Service_Plus_ItemScope $result)
|
2744 |
+
{
|
2745 |
+
$this->result = $result;
|
2746 |
+
}
|
2747 |
+
|
2748 |
+
public function getResult()
|
2749 |
+
{
|
2750 |
+
return $this->result;
|
2751 |
+
}
|
2752 |
+
|
2753 |
+
public function setStartDate($startDate)
|
2754 |
+
{
|
2755 |
+
$this->startDate = $startDate;
|
2756 |
+
}
|
2757 |
+
|
2758 |
+
public function getStartDate()
|
2759 |
+
{
|
2760 |
+
return $this->startDate;
|
2761 |
+
}
|
2762 |
+
|
2763 |
+
public function setTarget(Google_Service_Plus_ItemScope $target)
|
2764 |
+
{
|
2765 |
+
$this->target = $target;
|
2766 |
+
}
|
2767 |
+
|
2768 |
+
public function getTarget()
|
2769 |
+
{
|
2770 |
+
return $this->target;
|
2771 |
+
}
|
2772 |
+
|
2773 |
+
public function setType($type)
|
2774 |
+
{
|
2775 |
+
$this->type = $type;
|
2776 |
+
}
|
2777 |
+
|
2778 |
+
public function getType()
|
2779 |
+
{
|
2780 |
+
return $this->type;
|
2781 |
+
}
|
2782 |
+
}
|
2783 |
+
|
2784 |
+
class Google_Service_Plus_MomentsFeed extends Google_Collection
|
2785 |
+
{
|
2786 |
+
public $etag;
|
2787 |
+
protected $itemsType = 'Google_Service_Plus_Moment';
|
2788 |
+
protected $itemsDataType = 'array';
|
2789 |
+
public $kind;
|
2790 |
+
public $nextLink;
|
2791 |
+
public $nextPageToken;
|
2792 |
+
public $selfLink;
|
2793 |
+
public $title;
|
2794 |
+
public $updated;
|
2795 |
+
|
2796 |
+
public function setEtag($etag)
|
2797 |
+
{
|
2798 |
+
$this->etag = $etag;
|
2799 |
+
}
|
2800 |
+
|
2801 |
+
public function getEtag()
|
2802 |
+
{
|
2803 |
+
return $this->etag;
|
2804 |
+
}
|
2805 |
+
|
2806 |
+
public function setItems($items)
|
2807 |
+
{
|
2808 |
+
$this->items = $items;
|
2809 |
+
}
|
2810 |
+
|
2811 |
+
public function getItems()
|
2812 |
+
{
|
2813 |
+
return $this->items;
|
2814 |
+
}
|
2815 |
+
|
2816 |
+
public function setKind($kind)
|
2817 |
+
{
|
2818 |
+
$this->kind = $kind;
|
2819 |
+
}
|
2820 |
+
|
2821 |
+
public function getKind()
|
2822 |
+
{
|
2823 |
+
return $this->kind;
|
2824 |
+
}
|
2825 |
+
|
2826 |
+
public function setNextLink($nextLink)
|
2827 |
+
{
|
2828 |
+
$this->nextLink = $nextLink;
|
2829 |
+
}
|
2830 |
+
|
2831 |
+
public function getNextLink()
|
2832 |
+
{
|
2833 |
+
return $this->nextLink;
|
2834 |
+
}
|
2835 |
+
|
2836 |
+
public function setNextPageToken($nextPageToken)
|
2837 |
+
{
|
2838 |
+
$this->nextPageToken = $nextPageToken;
|
2839 |
+
}
|
2840 |
+
|
2841 |
+
public function getNextPageToken()
|
2842 |
+
{
|
2843 |
+
return $this->nextPageToken;
|
2844 |
+
}
|
2845 |
+
|
2846 |
+
public function setSelfLink($selfLink)
|
2847 |
+
{
|
2848 |
+
$this->selfLink = $selfLink;
|
2849 |
+
}
|
2850 |
+
|
2851 |
+
public function getSelfLink()
|
2852 |
+
{
|
2853 |
+
return $this->selfLink;
|
2854 |
+
}
|
2855 |
+
|
2856 |
+
public function setTitle($title)
|
2857 |
+
{
|
2858 |
+
$this->title = $title;
|
2859 |
+
}
|
2860 |
+
|
2861 |
+
public function getTitle()
|
2862 |
+
{
|
2863 |
+
return $this->title;
|
2864 |
+
}
|
2865 |
+
|
2866 |
+
public function setUpdated($updated)
|
2867 |
+
{
|
2868 |
+
$this->updated = $updated;
|
2869 |
+
}
|
2870 |
+
|
2871 |
+
public function getUpdated()
|
2872 |
+
{
|
2873 |
+
return $this->updated;
|
2874 |
+
}
|
2875 |
+
}
|
2876 |
+
|
2877 |
+
class Google_Service_Plus_PeopleFeed extends Google_Collection
|
2878 |
+
{
|
2879 |
+
public $etag;
|
2880 |
+
protected $itemsType = 'Google_Service_Plus_Person';
|
2881 |
+
protected $itemsDataType = 'array';
|
2882 |
+
public $kind;
|
2883 |
+
public $nextPageToken;
|
2884 |
+
public $selfLink;
|
2885 |
+
public $title;
|
2886 |
+
public $totalItems;
|
2887 |
+
|
2888 |
+
public function setEtag($etag)
|
2889 |
+
{
|
2890 |
+
$this->etag = $etag;
|
2891 |
+
}
|
2892 |
+
|
2893 |
+
public function getEtag()
|
2894 |
+
{
|
2895 |
+
return $this->etag;
|
2896 |
+
}
|
2897 |
+
|
2898 |
+
public function setItems($items)
|
2899 |
+
{
|
2900 |
+
$this->items = $items;
|
2901 |
+
}
|
2902 |
+
|
2903 |
+
public function getItems()
|
2904 |
+
{
|
2905 |
+
return $this->items;
|
2906 |
+
}
|
2907 |
+
|
2908 |
+
public function setKind($kind)
|
2909 |
+
{
|
2910 |
+
$this->kind = $kind;
|
2911 |
+
}
|
2912 |
+
|
2913 |
+
public function getKind()
|
2914 |
+
{
|
2915 |
+
return $this->kind;
|
2916 |
+
}
|
2917 |
+
|
2918 |
+
public function setNextPageToken($nextPageToken)
|
2919 |
+
{
|
2920 |
+
$this->nextPageToken = $nextPageToken;
|
2921 |
+
}
|
2922 |
+
|
2923 |
+
public function getNextPageToken()
|
2924 |
+
{
|
2925 |
+
return $this->nextPageToken;
|
2926 |
+
}
|
2927 |
+
|
2928 |
+
public function setSelfLink($selfLink)
|
2929 |
+
{
|
2930 |
+
$this->selfLink = $selfLink;
|
2931 |
+
}
|
2932 |
+
|
2933 |
+
public function getSelfLink()
|
2934 |
+
{
|
2935 |
+
return $this->selfLink;
|
2936 |
+
}
|
2937 |
+
|
2938 |
+
public function setTitle($title)
|
2939 |
+
{
|
2940 |
+
$this->title = $title;
|
2941 |
+
}
|
2942 |
+
|
2943 |
+
public function getTitle()
|
2944 |
+
{
|
2945 |
+
return $this->title;
|
2946 |
+
}
|
2947 |
+
|
2948 |
+
public function setTotalItems($totalItems)
|
2949 |
+
{
|
2950 |
+
$this->totalItems = $totalItems;
|
2951 |
+
}
|
2952 |
+
|
2953 |
+
public function getTotalItems()
|
2954 |
+
{
|
2955 |
+
return $this->totalItems;
|
2956 |
+
}
|
2957 |
+
}
|
2958 |
+
|
2959 |
+
class Google_Service_Plus_Person extends Google_Collection
|
2960 |
+
{
|
2961 |
+
public $aboutMe;
|
2962 |
+
protected $ageRangeType = 'Google_Service_Plus_PersonAgeRange';
|
2963 |
+
protected $ageRangeDataType = '';
|
2964 |
+
public $birthday;
|
2965 |
+
public $braggingRights;
|
2966 |
+
public $circledByCount;
|
2967 |
+
protected $coverType = 'Google_Service_Plus_PersonCover';
|
2968 |
+
protected $coverDataType = '';
|
2969 |
+
public $currentLocation;
|
2970 |
+
public $displayName;
|
2971 |
+
public $domain;
|
2972 |
+
protected $emailsType = 'Google_Service_Plus_PersonEmails';
|
2973 |
+
protected $emailsDataType = 'array';
|
2974 |
+
public $etag;
|
2975 |
+
public $gender;
|
2976 |
+
public $id;
|
2977 |
+
protected $imageType = 'Google_Service_Plus_PersonImage';
|
2978 |
+
protected $imageDataType = '';
|
2979 |
+
public $isPlusUser;
|
2980 |
+
public $kind;
|
2981 |
+
public $language;
|
2982 |
+
protected $nameType = 'Google_Service_Plus_PersonName';
|
2983 |
+
protected $nameDataType = '';
|
2984 |
+
public $nickname;
|
2985 |
+
public $objectType;
|
2986 |
+
public $occupation;
|
2987 |
+
protected $organizationsType = 'Google_Service_Plus_PersonOrganizations';
|
2988 |
+
protected $organizationsDataType = 'array';
|
2989 |
+
protected $placesLivedType = 'Google_Service_Plus_PersonPlacesLived';
|
2990 |
+
protected $placesLivedDataType = 'array';
|
2991 |
+
public $plusOneCount;
|
2992 |
+
public $relationshipStatus;
|
2993 |
+
public $skills;
|
2994 |
+
public $tagline;
|
2995 |
+
public $url;
|
2996 |
+
protected $urlsType = 'Google_Service_Plus_PersonUrls';
|
2997 |
+
protected $urlsDataType = 'array';
|
2998 |
+
public $verified;
|
2999 |
+
|
3000 |
+
public function setAboutMe($aboutMe)
|
3001 |
+
{
|
3002 |
+
$this->aboutMe = $aboutMe;
|
3003 |
+
}
|
3004 |
+
|
3005 |
+
public function getAboutMe()
|
3006 |
+
{
|
3007 |
+
return $this->aboutMe;
|
3008 |
+
}
|
3009 |
+
|
3010 |
+
public function setAgeRange(Google_Service_Plus_PersonAgeRange $ageRange)
|
3011 |
+
{
|
3012 |
+
$this->ageRange = $ageRange;
|
3013 |
+
}
|
3014 |
+
|
3015 |
+
public function getAgeRange()
|
3016 |
+
{
|
3017 |
+
return $this->ageRange;
|
3018 |
+
}
|
3019 |
+
|
3020 |
+
public function setBirthday($birthday)
|
3021 |
+
{
|
3022 |
+
$this->birthday = $birthday;
|
3023 |
+
}
|
3024 |
+
|
3025 |
+
public function getBirthday()
|
3026 |
+
{
|
3027 |
+
return $this->birthday;
|
3028 |
+
}
|
3029 |
+
|
3030 |
+
public function setBraggingRights($braggingRights)
|
3031 |
+
{
|
3032 |
+
$this->braggingRights = $braggingRights;
|
3033 |
+
}
|
3034 |
+
|
3035 |
+
public function getBraggingRights()
|
3036 |
+
{
|
3037 |
+
return $this->braggingRights;
|
3038 |
+
}
|
3039 |
+
|
3040 |
+
public function setCircledByCount($circledByCount)
|
3041 |
+
{
|
3042 |
+
$this->circledByCount = $circledByCount;
|
3043 |
+
}
|
3044 |
+
|
3045 |
+
public function getCircledByCount()
|
3046 |
+
{
|
3047 |
+
return $this->circledByCount;
|
3048 |
+
}
|
3049 |
+
|
3050 |
+
public function setCover(Google_Service_Plus_PersonCover $cover)
|
3051 |
+
{
|
3052 |
+
$this->cover = $cover;
|
3053 |
+
}
|
3054 |
+
|
3055 |
+
public function getCover()
|
3056 |
+
{
|
3057 |
+
return $this->cover;
|
3058 |
+
}
|
3059 |
+
|
3060 |
+
public function setCurrentLocation($currentLocation)
|
3061 |
+
{
|
3062 |
+
$this->currentLocation = $currentLocation;
|
3063 |
+
}
|
3064 |
+
|
3065 |
+
public function getCurrentLocation()
|
3066 |
+
{
|
3067 |
+
return $this->currentLocation;
|
3068 |
+
}
|
3069 |
+
|
3070 |
+
public function setDisplayName($displayName)
|
3071 |
+
{
|
3072 |
+
$this->displayName = $displayName;
|
3073 |
+
}
|
3074 |
+
|
3075 |
+
public function getDisplayName()
|
3076 |
+
{
|
3077 |
+
return $this->displayName;
|
3078 |
+
}
|
3079 |
+
|
3080 |
+
public function setDomain($domain)
|
3081 |
+
{
|
3082 |
+
$this->domain = $domain;
|
3083 |
+
}
|
3084 |
+
|
3085 |
+
public function getDomain()
|
3086 |
+
{
|
3087 |
+
return $this->domain;
|
3088 |
+
}
|
3089 |
+
|
3090 |
+
public function setEmails($emails)
|
3091 |
+
{
|
3092 |
+
$this->emails = $emails;
|
3093 |
+
}
|
3094 |
+
|
3095 |
+
public function getEmails()
|
3096 |
+
{
|
3097 |
+
return $this->emails;
|
3098 |
+
}
|
3099 |
+
|
3100 |
+
public function setEtag($etag)
|
3101 |
+
{
|
3102 |
+
$this->etag = $etag;
|
3103 |
+
}
|
3104 |
+
|
3105 |
+
public function getEtag()
|
3106 |
+
{
|
3107 |
+
return $this->etag;
|
3108 |
+
}
|
3109 |
+
|
3110 |
+
public function setGender($gender)
|
3111 |
+
{
|
3112 |
+
$this->gender = $gender;
|
3113 |
+
}
|
3114 |
+
|
3115 |
+
public function getGender()
|
3116 |
+
{
|
3117 |
+
return $this->gender;
|
3118 |
+
}
|
3119 |
+
|
3120 |
+
public function setId($id)
|
3121 |
+
{
|
3122 |
+
$this->id = $id;
|
3123 |
+
}
|
3124 |
+
|
3125 |
+
public function getId()
|
3126 |
+
{
|
3127 |
+
return $this->id;
|
3128 |
+
}
|
3129 |
+
|
3130 |
+
public function setImage(Google_Service_Plus_PersonImage $image)
|
3131 |
+
{
|
3132 |
+
$this->image = $image;
|
3133 |
+
}
|
3134 |
+
|
3135 |
+
public function getImage()
|
3136 |
+
{
|
3137 |
+
return $this->image;
|
3138 |
+
}
|
3139 |
+
|
3140 |
+
public function setIsPlusUser($isPlusUser)
|
3141 |
+
{
|
3142 |
+
$this->isPlusUser = $isPlusUser;
|
3143 |
+
}
|
3144 |
+
|
3145 |
+
public function getIsPlusUser()
|
3146 |
+
{
|
3147 |
+
return $this->isPlusUser;
|
3148 |
+
}
|
3149 |
+
|
3150 |
+
public function setKind($kind)
|
3151 |
+
{
|
3152 |
+
$this->kind = $kind;
|
3153 |
+
}
|
3154 |
+
|
3155 |
+
public function getKind()
|
3156 |
+
{
|
3157 |
+
return $this->kind;
|
3158 |
+
}
|
3159 |
+
|
3160 |
+
public function setLanguage($language)
|
3161 |
+
{
|
3162 |
+
$this->language = $language;
|
3163 |
+
}
|
3164 |
+
|
3165 |
+
public function getLanguage()
|
3166 |
+
{
|
3167 |
+
return $this->language;
|
3168 |
+
}
|
3169 |
+
|
3170 |
+
public function setName(Google_Service_Plus_PersonName $name)
|
3171 |
+
{
|
3172 |
+
$this->name = $name;
|
3173 |
+
}
|
3174 |
+
|
3175 |
+
public function getName()
|
3176 |
+
{
|
3177 |
+
return $this->name;
|
3178 |
+
}
|
3179 |
+
|
3180 |
+
public function setNickname($nickname)
|
3181 |
+
{
|
3182 |
+
$this->nickname = $nickname;
|
3183 |
+
}
|
3184 |
+
|
3185 |
+
public function getNickname()
|
3186 |
+
{
|
3187 |
+
return $this->nickname;
|
3188 |
+
}
|
3189 |
+
|
3190 |
+
public function setObjectType($objectType)
|
3191 |
+
{
|
3192 |
+
$this->objectType = $objectType;
|
3193 |
+
}
|
3194 |
+
|
3195 |
+
public function getObjectType()
|
3196 |
+
{
|
3197 |
+
return $this->objectType;
|
3198 |
+
}
|
3199 |
+
|
3200 |
+
public function setOccupation($occupation)
|
3201 |
+
{
|
3202 |
+
$this->occupation = $occupation;
|
3203 |
+
}
|
3204 |
+
|
3205 |
+
public function getOccupation()
|
3206 |
+
{
|
3207 |
+
return $this->occupation;
|
3208 |
+
}
|
3209 |
+
|
3210 |
+
public function setOrganizations($organizations)
|
3211 |
+
{
|
3212 |
+
$this->organizations = $organizations;
|
3213 |
+
}
|
3214 |
+
|
3215 |
+
public function getOrganizations()
|
3216 |
+
{
|
3217 |
+
return $this->organizations;
|
3218 |
+
}
|
3219 |
+
|
3220 |
+
public function setPlacesLived($placesLived)
|
3221 |
+
{
|
3222 |
+
$this->placesLived = $placesLived;
|
3223 |
+
}
|
3224 |
+
|
3225 |
+
public function getPlacesLived()
|
3226 |
+
{
|
3227 |
+
return $this->placesLived;
|
3228 |
+
}
|
3229 |
+
|
3230 |
+
public function setPlusOneCount($plusOneCount)
|
3231 |
+
{
|
3232 |
+
$this->plusOneCount = $plusOneCount;
|
3233 |
+
}
|
3234 |
+
|
3235 |
+
public function getPlusOneCount()
|
3236 |
+
{
|
3237 |
+
return $this->plusOneCount;
|
3238 |
+
}
|
3239 |
+
|
3240 |
+
public function setRelationshipStatus($relationshipStatus)
|
3241 |
+
{
|
3242 |
+
$this->relationshipStatus = $relationshipStatus;
|
3243 |
+
}
|
3244 |
+
|
3245 |
+
public function getRelationshipStatus()
|
3246 |
+
{
|
3247 |
+
return $this->relationshipStatus;
|
3248 |
+
}
|
3249 |
+
|
3250 |
+
public function setSkills($skills)
|
3251 |
+
{
|
3252 |
+
$this->skills = $skills;
|
3253 |
+
}
|
3254 |
+
|
3255 |
+
public function getSkills()
|
3256 |
+
{
|
3257 |
+
return $this->skills;
|
3258 |
+
}
|
3259 |
+
|
3260 |
+
public function setTagline($tagline)
|
3261 |
+
{
|
3262 |
+
$this->tagline = $tagline;
|
3263 |
+
}
|
3264 |
+
|
3265 |
+
public function getTagline()
|
3266 |
+
{
|
3267 |
+
return $this->tagline;
|
3268 |
+
}
|
3269 |
+
|
3270 |
+
public function setUrl($url)
|
3271 |
+
{
|
3272 |
+
$this->url = $url;
|
3273 |
+
}
|
3274 |
+
|
3275 |
+
public function getUrl()
|
3276 |
+
{
|
3277 |
+
return $this->url;
|
3278 |
+
}
|
3279 |
+
|
3280 |
+
public function setUrls($urls)
|
3281 |
+
{
|
3282 |
+
$this->urls = $urls;
|
3283 |
+
}
|
3284 |
+
|
3285 |
+
public function getUrls()
|
3286 |
+
{
|
3287 |
+
return $this->urls;
|
3288 |
+
}
|
3289 |
+
|
3290 |
+
public function setVerified($verified)
|
3291 |
+
{
|
3292 |
+
$this->verified = $verified;
|
3293 |
+
}
|
3294 |
+
|
3295 |
+
public function getVerified()
|
3296 |
+
{
|
3297 |
+
return $this->verified;
|
3298 |
+
}
|
3299 |
+
}
|
3300 |
+
|
3301 |
+
class Google_Service_Plus_PersonAgeRange extends Google_Model
|
3302 |
+
{
|
3303 |
+
public $max;
|
3304 |
+
public $min;
|
3305 |
+
|
3306 |
+
public function setMax($max)
|
3307 |
+
{
|
3308 |
+
$this->max = $max;
|
3309 |
+
}
|
3310 |
+
|
3311 |
+
public function getMax()
|
3312 |
+
{
|
3313 |
+
return $this->max;
|
3314 |
+
}
|
3315 |
+
|
3316 |
+
public function setMin($min)
|
3317 |
+
{
|
3318 |
+
$this->min = $min;
|
3319 |
+
}
|
3320 |
+
|
3321 |
+
public function getMin()
|
3322 |
+
{
|
3323 |
+
return $this->min;
|
3324 |
+
}
|
3325 |
+
}
|
3326 |
+
|
3327 |
+
class Google_Service_Plus_PersonCover extends Google_Model
|
3328 |
+
{
|
3329 |
+
protected $coverInfoType = 'Google_Service_Plus_PersonCoverCoverInfo';
|
3330 |
+
protected $coverInfoDataType = '';
|
3331 |
+
protected $coverPhotoType = 'Google_Service_Plus_PersonCoverCoverPhoto';
|
3332 |
+
protected $coverPhotoDataType = '';
|
3333 |
+
public $layout;
|
3334 |
+
|
3335 |
+
public function setCoverInfo(Google_Service_Plus_PersonCoverCoverInfo $coverInfo)
|
3336 |
+
{
|
3337 |
+
$this->coverInfo = $coverInfo;
|
3338 |
+
}
|
3339 |
+
|
3340 |
+
public function getCoverInfo()
|
3341 |
+
{
|
3342 |
+
return $this->coverInfo;
|
3343 |
+
}
|
3344 |
+
|
3345 |
+
public function setCoverPhoto(Google_Service_Plus_PersonCoverCoverPhoto $coverPhoto)
|
3346 |
+
{
|
3347 |
+
$this->coverPhoto = $coverPhoto;
|
3348 |
+
}
|
3349 |
+
|
3350 |
+
public function getCoverPhoto()
|
3351 |
+
{
|
3352 |
+
return $this->coverPhoto;
|
3353 |
+
}
|
3354 |
+
|
3355 |
+
public function setLayout($layout)
|
3356 |
+
{
|
3357 |
+
$this->layout = $layout;
|
3358 |
+
}
|
3359 |
+
|
3360 |
+
public function getLayout()
|
3361 |
+
{
|
3362 |
+
return $this->layout;
|
3363 |
+
}
|
3364 |
+
}
|
3365 |
+
|
3366 |
+
class Google_Service_Plus_PersonCoverCoverInfo extends Google_Model
|
3367 |
+
{
|
3368 |
+
public $leftImageOffset;
|
3369 |
+
public $topImageOffset;
|
3370 |
+
|
3371 |
+
public function setLeftImageOffset($leftImageOffset)
|
3372 |
+
{
|
3373 |
+
$this->leftImageOffset = $leftImageOffset;
|
3374 |
+
}
|
3375 |
+
|
3376 |
+
public function getLeftImageOffset()
|
3377 |
+
{
|
3378 |
+
return $this->leftImageOffset;
|
3379 |
+
}
|
3380 |
+
|
3381 |
+
public function setTopImageOffset($topImageOffset)
|
3382 |
+
{
|
3383 |
+
$this->topImageOffset = $topImageOffset;
|
3384 |
+
}
|
3385 |
+
|
3386 |
+
public function getTopImageOffset()
|
3387 |
+
{
|
3388 |
+
return $this->topImageOffset;
|
3389 |
+
}
|
3390 |
+
}
|
3391 |
+
|
3392 |
+
class Google_Service_Plus_PersonCoverCoverPhoto extends Google_Model
|
3393 |
+
{
|
3394 |
+
public $height;
|
3395 |
+
public $url;
|
3396 |
+
public $width;
|
3397 |
+
|
3398 |
+
public function setHeight($height)
|
3399 |
+
{
|
3400 |
+
$this->height = $height;
|
3401 |
+
}
|
3402 |
+
|
3403 |
+
public function getHeight()
|
3404 |
+
{
|
3405 |
+
return $this->height;
|
3406 |
+
}
|
3407 |
+
|
3408 |
+
public function setUrl($url)
|
3409 |
+
{
|
3410 |
+
$this->url = $url;
|
3411 |
+
}
|
3412 |
+
|
3413 |
+
public function getUrl()
|
3414 |
+
{
|
3415 |
+
return $this->url;
|
3416 |
+
}
|
3417 |
+
|
3418 |
+
public function setWidth($width)
|
3419 |
+
{
|
3420 |
+
$this->width = $width;
|
3421 |
+
}
|
3422 |
+
|
3423 |
+
public function getWidth()
|
3424 |
+
{
|
3425 |
+
return $this->width;
|
3426 |
+
}
|
3427 |
+
}
|
3428 |
+
|
3429 |
+
class Google_Service_Plus_PersonEmails extends Google_Model
|
3430 |
+
{
|
3431 |
+
public $type;
|
3432 |
+
public $value;
|
3433 |
+
|
3434 |
+
public function setType($type)
|
3435 |
+
{
|
3436 |
+
$this->type = $type;
|
3437 |
+
}
|
3438 |
+
|
3439 |
+
public function getType()
|
3440 |
+
{
|
3441 |
+
return $this->type;
|
3442 |
+
}
|
3443 |
+
|
3444 |
+
public function setValue($value)
|
3445 |
+
{
|
3446 |
+
$this->value = $value;
|
3447 |
+
}
|
3448 |
+
|
3449 |
+
public function getValue()
|
3450 |
+
{
|
3451 |
+
return $this->value;
|
3452 |
+
}
|
3453 |
+
}
|
3454 |
+
|
3455 |
+
class Google_Service_Plus_PersonImage extends Google_Model
|
3456 |
+
{
|
3457 |
+
public $isDefault;
|
3458 |
+
public $url;
|
3459 |
+
|
3460 |
+
public function setIsDefault($isDefault)
|
3461 |
+
{
|
3462 |
+
$this->isDefault = $isDefault;
|
3463 |
+
}
|
3464 |
+
|
3465 |
+
public function getIsDefault()
|
3466 |
+
{
|
3467 |
+
return $this->isDefault;
|
3468 |
+
}
|
3469 |
+
|
3470 |
+
public function setUrl($url)
|
3471 |
+
{
|
3472 |
+
$this->url = $url;
|
3473 |
+
}
|
3474 |
+
|
3475 |
+
public function getUrl()
|
3476 |
+
{
|
3477 |
+
return $this->url;
|
3478 |
+
}
|
3479 |
+
}
|
3480 |
+
|
3481 |
+
class Google_Service_Plus_PersonName extends Google_Model
|
3482 |
+
{
|
3483 |
+
public $familyName;
|
3484 |
+
public $formatted;
|
3485 |
+
public $givenName;
|
3486 |
+
public $honorificPrefix;
|
3487 |
+
public $honorificSuffix;
|
3488 |
+
public $middleName;
|
3489 |
+
|
3490 |
+
public function setFamilyName($familyName)
|
3491 |
+
{
|
3492 |
+
$this->familyName = $familyName;
|
3493 |
+
}
|
3494 |
+
|
3495 |
+
public function getFamilyName()
|
3496 |
+
{
|
3497 |
+
return $this->familyName;
|
3498 |
+
}
|
3499 |
+
|
3500 |
+
public function setFormatted($formatted)
|
3501 |
+
{
|
3502 |
+
$this->formatted = $formatted;
|
3503 |
+
}
|
3504 |
+
|
3505 |
+
public function getFormatted()
|
3506 |
+
{
|
3507 |
+
return $this->formatted;
|
3508 |
+
}
|
3509 |
+
|
3510 |
+
public function setGivenName($givenName)
|
3511 |
+
{
|
3512 |
+
$this->givenName = $givenName;
|
3513 |
+
}
|
3514 |
+
|
3515 |
+
public function getGivenName()
|
3516 |
+
{
|
3517 |
+
return $this->givenName;
|
3518 |
+
}
|
3519 |
+
|
3520 |
+
public function setHonorificPrefix($honorificPrefix)
|
3521 |
+
{
|
3522 |
+
$this->honorificPrefix = $honorificPrefix;
|
3523 |
+
}
|
3524 |
+
|
3525 |
+
public function getHonorificPrefix()
|
3526 |
+
{
|
3527 |
+
return $this->honorificPrefix;
|
3528 |
+
}
|
3529 |
+
|
3530 |
+
public function setHonorificSuffix($honorificSuffix)
|
3531 |
+
{
|
3532 |
+
$this->honorificSuffix = $honorificSuffix;
|
3533 |
+
}
|
3534 |
+
|
3535 |
+
public function getHonorificSuffix()
|
3536 |
+
{
|
3537 |
+
return $this->honorificSuffix;
|
3538 |
+
}
|
3539 |
+
|
3540 |
+
public function setMiddleName($middleName)
|
3541 |
+
{
|
3542 |
+
$this->middleName = $middleName;
|
3543 |
+
}
|
3544 |
+
|
3545 |
+
public function getMiddleName()
|
3546 |
+
{
|
3547 |
+
return $this->middleName;
|
3548 |
+
}
|
3549 |
+
}
|
3550 |
+
|
3551 |
+
class Google_Service_Plus_PersonOrganizations extends Google_Model
|
3552 |
+
{
|
3553 |
+
public $department;
|
3554 |
+
public $description;
|
3555 |
+
public $endDate;
|
3556 |
+
public $location;
|
3557 |
+
public $name;
|
3558 |
+
public $primary;
|
3559 |
+
public $startDate;
|
3560 |
+
public $title;
|
3561 |
+
public $type;
|
3562 |
+
|
3563 |
+
public function setDepartment($department)
|
3564 |
+
{
|
3565 |
+
$this->department = $department;
|
3566 |
+
}
|
3567 |
+
|
3568 |
+
public function getDepartment()
|
3569 |
+
{
|
3570 |
+
return $this->department;
|
3571 |
+
}
|
3572 |
+
|
3573 |
+
public function setDescription($description)
|
3574 |
+
{
|
3575 |
+
$this->description = $description;
|
3576 |
+
}
|
3577 |
+
|
3578 |
+
public function getDescription()
|
3579 |
+
{
|
3580 |
+
return $this->description;
|
3581 |
+
}
|
3582 |
+
|
3583 |
+
public function setEndDate($endDate)
|
3584 |
+
{
|
3585 |
+
$this->endDate = $endDate;
|
3586 |
+
}
|
3587 |
+
|
3588 |
+
public function getEndDate()
|
3589 |
+
{
|
3590 |
+
return $this->endDate;
|
3591 |
+
}
|
3592 |
+
|
3593 |
+
public function setLocation($location)
|
3594 |
+
{
|
3595 |
+
$this->location = $location;
|
3596 |
+
}
|
3597 |
+
|
3598 |
+
public function getLocation()
|
3599 |
+
{
|
3600 |
+
return $this->location;
|
3601 |
+
}
|
3602 |
+
|
3603 |
+
public function setName($name)
|
3604 |
+
{
|
3605 |
+
$this->name = $name;
|
3606 |
+
}
|
3607 |
+
|
3608 |
+
public function getName()
|
3609 |
+
{
|
3610 |
+
return $this->name;
|
3611 |
+
}
|
3612 |
+
|
3613 |
+
public function setPrimary($primary)
|
3614 |
+
{
|
3615 |
+
$this->primary = $primary;
|
3616 |
+
}
|
3617 |
+
|
3618 |
+
public function getPrimary()
|
3619 |
+
{
|
3620 |
+
return $this->primary;
|
3621 |
+
}
|
3622 |
+
|
3623 |
+
public function setStartDate($startDate)
|
3624 |
+
{
|
3625 |
+
$this->startDate = $startDate;
|
3626 |
+
}
|
3627 |
+
|
3628 |
+
public function getStartDate()
|
3629 |
+
{
|
3630 |
+
return $this->startDate;
|
3631 |
+
}
|
3632 |
+
|
3633 |
+
public function setTitle($title)
|
3634 |
+
{
|
3635 |
+
$this->title = $title;
|
3636 |
+
}
|
3637 |
+
|
3638 |
+
public function getTitle()
|
3639 |
+
{
|
3640 |
+
return $this->title;
|
3641 |
+
}
|
3642 |
+
|
3643 |
+
public function setType($type)
|
3644 |
+
{
|
3645 |
+
$this->type = $type;
|
3646 |
+
}
|
3647 |
+
|
3648 |
+
public function getType()
|
3649 |
+
{
|
3650 |
+
return $this->type;
|
3651 |
+
}
|
3652 |
+
}
|
3653 |
+
|
3654 |
+
class Google_Service_Plus_PersonPlacesLived extends Google_Model
|
3655 |
+
{
|
3656 |
+
public $primary;
|
3657 |
+
public $value;
|
3658 |
+
|
3659 |
+
public function setPrimary($primary)
|
3660 |
+
{
|
3661 |
+
$this->primary = $primary;
|
3662 |
+
}
|
3663 |
+
|
3664 |
+
public function getPrimary()
|
3665 |
+
{
|
3666 |
+
return $this->primary;
|
3667 |
+
}
|
3668 |
+
|
3669 |
+
public function setValue($value)
|
3670 |
+
{
|
3671 |
+
$this->value = $value;
|
3672 |
+
}
|
3673 |
+
|
3674 |
+
public function getValue()
|
3675 |
+
{
|
3676 |
+
return $this->value;
|
3677 |
+
}
|
3678 |
+
}
|
3679 |
+
|
3680 |
+
class Google_Service_Plus_PersonUrls extends Google_Model
|
3681 |
+
{
|
3682 |
+
public $label;
|
3683 |
+
public $type;
|
3684 |
+
public $value;
|
3685 |
+
|
3686 |
+
public function setLabel($label)
|
3687 |
+
{
|
3688 |
+
$this->label = $label;
|
3689 |
+
}
|
3690 |
+
|
3691 |
+
public function getLabel()
|
3692 |
+
{
|
3693 |
+
return $this->label;
|
3694 |
+
}
|
3695 |
+
|
3696 |
+
public function setType($type)
|
3697 |
+
{
|
3698 |
+
$this->type = $type;
|
3699 |
+
}
|
3700 |
+
|
3701 |
+
public function getType()
|
3702 |
+
{
|
3703 |
+
return $this->type;
|
3704 |
+
}
|
3705 |
+
|
3706 |
+
public function setValue($value)
|
3707 |
+
{
|
3708 |
+
$this->value = $value;
|
3709 |
+
}
|
3710 |
+
|
3711 |
+
public function getValue()
|
3712 |
+
{
|
3713 |
+
return $this->value;
|
3714 |
+
}
|
3715 |
+
}
|
3716 |
+
|
3717 |
+
class Google_Service_Plus_Place extends Google_Model
|
3718 |
+
{
|
3719 |
+
protected $addressType = 'Google_Service_Plus_PlaceAddress';
|
3720 |
+
protected $addressDataType = '';
|
3721 |
+
public $displayName;
|
3722 |
+
public $id;
|
3723 |
+
public $kind;
|
3724 |
+
protected $positionType = 'Google_Service_Plus_PlacePosition';
|
3725 |
+
protected $positionDataType = '';
|
3726 |
+
|
3727 |
+
public function setAddress(Google_Service_Plus_PlaceAddress $address)
|
3728 |
+
{
|
3729 |
+
$this->address = $address;
|
3730 |
+
}
|
3731 |
+
|
3732 |
+
public function getAddress()
|
3733 |
+
{
|
3734 |
+
return $this->address;
|
3735 |
+
}
|
3736 |
+
|
3737 |
+
public function setDisplayName($displayName)
|
3738 |
+
{
|
3739 |
+
$this->displayName = $displayName;
|
3740 |
+
}
|
3741 |
+
|
3742 |
+
public function getDisplayName()
|
3743 |
+
{
|
3744 |
+
return $this->displayName;
|
3745 |
+
}
|
3746 |
+
|
3747 |
+
public function setId($id)
|
3748 |
+
{
|
3749 |
+
$this->id = $id;
|
3750 |
+
}
|
3751 |
+
|
3752 |
+
public function getId()
|
3753 |
+
{
|
3754 |
+
return $this->id;
|
3755 |
+
}
|
3756 |
+
|
3757 |
+
public function setKind($kind)
|
3758 |
+
{
|
3759 |
+
$this->kind = $kind;
|
3760 |
+
}
|
3761 |
+
|
3762 |
+
public function getKind()
|
3763 |
+
{
|
3764 |
+
return $this->kind;
|
3765 |
+
}
|
3766 |
+
|
3767 |
+
public function setPosition(Google_Service_Plus_PlacePosition $position)
|
3768 |
+
{
|
3769 |
+
$this->position = $position;
|
3770 |
+
}
|
3771 |
+
|
3772 |
+
public function getPosition()
|
3773 |
+
{
|
3774 |
+
return $this->position;
|
3775 |
+
}
|
3776 |
+
}
|
3777 |
+
|
3778 |
+
class Google_Service_Plus_PlaceAddress extends Google_Model
|
3779 |
+
{
|
3780 |
+
public $formatted;
|
3781 |
+
|
3782 |
+
public function setFormatted($formatted)
|
3783 |
+
{
|
3784 |
+
$this->formatted = $formatted;
|
3785 |
+
}
|
3786 |
+
|
3787 |
+
public function getFormatted()
|
3788 |
+
{
|
3789 |
+
return $this->formatted;
|
3790 |
+
}
|
3791 |
+
}
|
3792 |
+
|
3793 |
+
class Google_Service_Plus_PlacePosition extends Google_Model
|
3794 |
+
{
|
3795 |
+
public $latitude;
|
3796 |
+
public $longitude;
|
3797 |
+
|
3798 |
+
public function setLatitude($latitude)
|
3799 |
+
{
|
3800 |
+
$this->latitude = $latitude;
|
3801 |
+
}
|
3802 |
+
|
3803 |
+
public function getLatitude()
|
3804 |
+
{
|
3805 |
+
return $this->latitude;
|
3806 |
+
}
|
3807 |
+
|
3808 |
+
public function setLongitude($longitude)
|
3809 |
+
{
|
3810 |
+
$this->longitude = $longitude;
|
3811 |
+
}
|
3812 |
+
|
3813 |
+
public function getLongitude()
|
3814 |
+
{
|
3815 |
+
return $this->longitude;
|
3816 |
+
}
|
3817 |
+
}
|
3818 |
+
|
3819 |
+
class Google_Service_Plus_PlusAclentryResource extends Google_Model
|
3820 |
+
{
|
3821 |
+
public $displayName;
|
3822 |
+
public $id;
|
3823 |
+
public $type;
|
3824 |
+
|
3825 |
+
public function setDisplayName($displayName)
|
3826 |
+
{
|
3827 |
+
$this->displayName = $displayName;
|
3828 |
+
}
|
3829 |
+
|
3830 |
+
public function getDisplayName()
|
3831 |
+
{
|
3832 |
+
return $this->displayName;
|
3833 |
+
}
|
3834 |
+
|
3835 |
+
public function setId($id)
|
3836 |
+
{
|
3837 |
+
$this->id = $id;
|
3838 |
+
}
|
3839 |
+
|
3840 |
+
public function getId()
|
3841 |
+
{
|
3842 |
+
return $this->id;
|
3843 |
+
}
|
3844 |
+
|
3845 |
+
public function setType($type)
|
3846 |
+
{
|
3847 |
+
$this->type = $type;
|
3848 |
+
}
|
3849 |
+
|
3850 |
+
public function getType()
|
3851 |
+
{
|
3852 |
+
return $this->type;
|
3853 |
+
}
|
3854 |
+
}
|
google/Service/Resource.php
ADDED
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2010 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Client.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Exception.php";
|
20 |
+
require_once APSL_PLUGIN_DIR."google/Utils.php";
|
21 |
+
require_once APSL_PLUGIN_DIR."google/Http/Request.php";
|
22 |
+
require_once APSL_PLUGIN_DIR."google/Http/MediaFileUpload.php";
|
23 |
+
require_once APSL_PLUGIN_DIR."google/Http/REST.php";
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Implements the actual methods/resources of the discovered Google API using magic function
|
27 |
+
* calling overloading (__call()), which on call will see if the method name (plus.activities.list)
|
28 |
+
* is available in this service, and if so construct an apiHttpRequest representing it.
|
29 |
+
*
|
30 |
+
* @author Chris Chabot <chabotc@google.com>
|
31 |
+
* @author Chirag Shah <chirags@google.com>
|
32 |
+
*
|
33 |
+
*/
|
34 |
+
class Google_Service_Resource
|
35 |
+
{
|
36 |
+
// Valid query parameters that work, but don't appear in discovery.
|
37 |
+
private $stackParameters = array(
|
38 |
+
'alt' => array('type' => 'string', 'location' => 'query'),
|
39 |
+
'fields' => array('type' => 'string', 'location' => 'query'),
|
40 |
+
'trace' => array('type' => 'string', 'location' => 'query'),
|
41 |
+
'userIp' => array('type' => 'string', 'location' => 'query'),
|
42 |
+
'userip' => array('type' => 'string', 'location' => 'query'),
|
43 |
+
'quotaUser' => array('type' => 'string', 'location' => 'query'),
|
44 |
+
'data' => array('type' => 'string', 'location' => 'body'),
|
45 |
+
'mimeType' => array('type' => 'string', 'location' => 'header'),
|
46 |
+
'uploadType' => array('type' => 'string', 'location' => 'query'),
|
47 |
+
'mediaUpload' => array('type' => 'complex', 'location' => 'query'),
|
48 |
+
);
|
49 |
+
|
50 |
+
/** @var Google_Service $service */
|
51 |
+
private $service;
|
52 |
+
|
53 |
+
/** @var Google_Client $client */
|
54 |
+
private $client;
|
55 |
+
|
56 |
+
/** @var string $serviceName */
|
57 |
+
private $serviceName;
|
58 |
+
|
59 |
+
/** @var string $resourceName */
|
60 |
+
private $resourceName;
|
61 |
+
|
62 |
+
/** @var array $methods */
|
63 |
+
private $methods;
|
64 |
+
|
65 |
+
public function __construct($service, $serviceName, $resourceName, $resource)
|
66 |
+
{
|
67 |
+
$this->service = $service;
|
68 |
+
$this->client = $service->getClient();
|
69 |
+
$this->serviceName = $serviceName;
|
70 |
+
$this->resourceName = $resourceName;
|
71 |
+
$this->methods = isset($resource['methods']) ?
|
72 |
+
$resource['methods'] :
|
73 |
+
array($resourceName => $resource);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* TODO(ianbarber): This function needs simplifying.
|
78 |
+
* @param $name
|
79 |
+
* @param $arguments
|
80 |
+
* @param $expected_class - optional, the expected class name
|
81 |
+
* @return Google_Http_Request|expected_class
|
82 |
+
* @throws Google_Exception
|
83 |
+
*/
|
84 |
+
public function call($name, $arguments, $expected_class = null)
|
85 |
+
{
|
86 |
+
if (! isset($this->methods[$name])) {
|
87 |
+
throw new Google_Exception(
|
88 |
+
"Unknown function: " .
|
89 |
+
"{$this->serviceName}->{$this->resourceName}->{$name}()"
|
90 |
+
);
|
91 |
+
}
|
92 |
+
$method = $this->methods[$name];
|
93 |
+
$parameters = $arguments[0];
|
94 |
+
|
95 |
+
// postBody is a special case since it's not defined in the discovery
|
96 |
+
// document as parameter, but we abuse the param entry for storing it.
|
97 |
+
$postBody = null;
|
98 |
+
if (isset($parameters['postBody'])) {
|
99 |
+
if ($parameters['postBody'] instanceof Google_Model) {
|
100 |
+
// In the cases the post body is an existing object, we want
|
101 |
+
// to use the smart method to create a simple object for
|
102 |
+
// for JSONification.
|
103 |
+
$parameters['postBody'] = $parameters['postBody']->toSimpleObject();
|
104 |
+
} else if (is_object($parameters['postBody'])) {
|
105 |
+
// If the post body is another kind of object, we will try and
|
106 |
+
// wrangle it into a sensible format.
|
107 |
+
$parameters['postBody'] =
|
108 |
+
$this->convertToArrayAndStripNulls($parameters['postBody']);
|
109 |
+
}
|
110 |
+
$postBody = json_encode($parameters['postBody']);
|
111 |
+
unset($parameters['postBody']);
|
112 |
+
}
|
113 |
+
|
114 |
+
// TODO(ianbarber): optParams here probably should have been
|
115 |
+
// handled already - this may well be redundant code.
|
116 |
+
if (isset($parameters['optParams'])) {
|
117 |
+
$optParams = $parameters['optParams'];
|
118 |
+
unset($parameters['optParams']);
|
119 |
+
$parameters = array_merge($parameters, $optParams);
|
120 |
+
}
|
121 |
+
|
122 |
+
if (!isset($method['parameters'])) {
|
123 |
+
$method['parameters'] = array();
|
124 |
+
}
|
125 |
+
|
126 |
+
$method['parameters'] = array_merge(
|
127 |
+
$method['parameters'],
|
128 |
+
$this->stackParameters
|
129 |
+
);
|
130 |
+
foreach ($parameters as $key => $val) {
|
131 |
+
if ($key != 'postBody' && ! isset($method['parameters'][$key])) {
|
132 |
+
throw new Google_Exception("($name) unknown parameter: '$key'");
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
foreach ($method['parameters'] as $paramName => $paramSpec) {
|
137 |
+
if (isset($paramSpec['required']) &&
|
138 |
+
$paramSpec['required'] &&
|
139 |
+
! isset($parameters[$paramName])
|
140 |
+
) {
|
141 |
+
throw new Google_Exception("($name) missing required param: '$paramName'");
|
142 |
+
}
|
143 |
+
if (isset($parameters[$paramName])) {
|
144 |
+
$value = $parameters[$paramName];
|
145 |
+
$parameters[$paramName] = $paramSpec;
|
146 |
+
$parameters[$paramName]['value'] = $value;
|
147 |
+
unset($parameters[$paramName]['required']);
|
148 |
+
} else {
|
149 |
+
// Ensure we don't pass nulls.
|
150 |
+
unset($parameters[$paramName]);
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
$servicePath = $this->service->servicePath;
|
155 |
+
|
156 |
+
$url = Google_Http_REST::createRequestUri(
|
157 |
+
$servicePath,
|
158 |
+
$method['path'],
|
159 |
+
$parameters
|
160 |
+
);
|
161 |
+
$httpRequest = new Google_Http_Request(
|
162 |
+
$url,
|
163 |
+
$method['httpMethod'],
|
164 |
+
null,
|
165 |
+
$postBody
|
166 |
+
);
|
167 |
+
$httpRequest->setBaseComponent($this->client->getBasePath());
|
168 |
+
|
169 |
+
if ($postBody) {
|
170 |
+
$contentTypeHeader = array();
|
171 |
+
$contentTypeHeader['content-type'] = 'application/json; charset=UTF-8';
|
172 |
+
$httpRequest->setRequestHeaders($contentTypeHeader);
|
173 |
+
$httpRequest->setPostBody($postBody);
|
174 |
+
}
|
175 |
+
|
176 |
+
$httpRequest = $this->client->getAuth()->sign($httpRequest);
|
177 |
+
$httpRequest->setExpectedClass($expected_class);
|
178 |
+
|
179 |
+
if (isset($parameters['data']) &&
|
180 |
+
($parameters['uploadType']['value'] == 'media' || $parameters['uploadType']['value'] == 'multipart')) {
|
181 |
+
// If we are doing a simple media upload, trigger that as a convenience.
|
182 |
+
$mfu = new Google_Http_MediaFileUpload(
|
183 |
+
$this->client,
|
184 |
+
$httpRequest,
|
185 |
+
isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream',
|
186 |
+
$parameters['data']['value']
|
187 |
+
);
|
188 |
+
}
|
189 |
+
|
190 |
+
if ($this->client->shouldDefer()) {
|
191 |
+
// If we are in batch or upload mode, return the raw request.
|
192 |
+
return $httpRequest;
|
193 |
+
}
|
194 |
+
|
195 |
+
return $this->client->execute($httpRequest);
|
196 |
+
}
|
197 |
+
|
198 |
+
protected function convertToArrayAndStripNulls($o)
|
199 |
+
{
|
200 |
+
$o = (array) $o;
|
201 |
+
foreach ($o as $k => $v) {
|
202 |
+
if ($v === null) {
|
203 |
+
unset($o[$k]);
|
204 |
+
} elseif (is_object($v) || is_array($v)) {
|
205 |
+
$o[$k] = $this->convertToArrayAndStripNulls($o[$k]);
|
206 |
+
}
|
207 |
+
}
|
208 |
+
return $o;
|
209 |
+
}
|
210 |
+
}
|
google/Signer/Abstract.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Signs data.
|
20 |
+
*
|
21 |
+
* @author Brian Eaton <beaton@google.com>
|
22 |
+
*/
|
23 |
+
abstract class Google_Signer_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Signs data, returns the signature as binary data.
|
27 |
+
*/
|
28 |
+
abstract public function sign($data);
|
29 |
+
}
|
google/Signer/P12.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Exception.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Signer/Abstract.php";
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Signs data.
|
23 |
+
*
|
24 |
+
* Only used for testing.
|
25 |
+
*
|
26 |
+
* @author Brian Eaton <beaton@google.com>
|
27 |
+
*/
|
28 |
+
class Google_Signer_P12 extends Google_Signer_Abstract
|
29 |
+
{
|
30 |
+
// OpenSSL private key resource
|
31 |
+
private $privateKey;
|
32 |
+
|
33 |
+
// Creates a new signer from a .p12 file.
|
34 |
+
public function __construct($p12, $password)
|
35 |
+
{
|
36 |
+
if (!function_exists('openssl_x509_read')) {
|
37 |
+
throw new Google_Exception(
|
38 |
+
'The Google PHP API library needs the openssl PHP extension'
|
39 |
+
);
|
40 |
+
}
|
41 |
+
|
42 |
+
// If the private key is provided directly, then this isn't in the p12
|
43 |
+
// format. Different versions of openssl support different p12 formats
|
44 |
+
// and the key from google wasn't being accepted by the version available
|
45 |
+
// at the time.
|
46 |
+
if (!$password && strpos($p12, "-----BEGIN RSA PRIVATE KEY-----") !== false) {
|
47 |
+
$this->privateKey = openssl_pkey_get_private($p12);
|
48 |
+
} else {
|
49 |
+
// This throws on error
|
50 |
+
$certs = array();
|
51 |
+
if (!openssl_pkcs12_read($p12, $certs, $password)) {
|
52 |
+
throw new Google_Auth_Exception(
|
53 |
+
"Unable to parse the p12 file. " .
|
54 |
+
"Is this a .p12 file? Is the password correct? OpenSSL error: " .
|
55 |
+
openssl_error_string()
|
56 |
+
);
|
57 |
+
}
|
58 |
+
// TODO(beaton): is this part of the contract for the openssl_pkcs12_read
|
59 |
+
// method? What happens if there are multiple private keys? Do we care?
|
60 |
+
if (!array_key_exists("pkey", $certs) || !$certs["pkey"]) {
|
61 |
+
throw new Google_Auth_Exception("No private key found in p12 file.");
|
62 |
+
}
|
63 |
+
$this->privateKey = openssl_pkey_get_private($certs['pkey']);
|
64 |
+
}
|
65 |
+
|
66 |
+
if (!$this->privateKey) {
|
67 |
+
throw new Google_Auth_Exception("Unable to load private key");
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
public function __destruct()
|
72 |
+
{
|
73 |
+
if ($this->privateKey) {
|
74 |
+
openssl_pkey_free($this->privateKey);
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
public function sign($data)
|
79 |
+
{
|
80 |
+
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
|
81 |
+
throw new Google_Auth_Exception(
|
82 |
+
"PHP 5.3.0 or higher is required to use service accounts."
|
83 |
+
);
|
84 |
+
}
|
85 |
+
$hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256";
|
86 |
+
if (!openssl_sign($data, $signature, $this->privateKey, $hash)) {
|
87 |
+
throw new Google_Auth_Exception("Unable to sign data");
|
88 |
+
}
|
89 |
+
return $signature;
|
90 |
+
}
|
91 |
+
}
|
google/Utils.php
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Collection of static utility methods used for convenience across
|
20 |
+
* the client library.
|
21 |
+
*
|
22 |
+
* @author Chirag Shah <chirags@google.com>
|
23 |
+
*/
|
24 |
+
class Google_Utils
|
25 |
+
{
|
26 |
+
public static function urlSafeB64Encode($data)
|
27 |
+
{
|
28 |
+
$b64 = base64_encode($data);
|
29 |
+
$b64 = str_replace(
|
30 |
+
array('+', '/', '\r', '\n', '='),
|
31 |
+
array('-', '_'),
|
32 |
+
$b64
|
33 |
+
);
|
34 |
+
return $b64;
|
35 |
+
}
|
36 |
+
|
37 |
+
public static function urlSafeB64Decode($b64)
|
38 |
+
{
|
39 |
+
$b64 = str_replace(
|
40 |
+
array('-', '_'),
|
41 |
+
array('+', '/'),
|
42 |
+
$b64
|
43 |
+
);
|
44 |
+
return base64_decode($b64);
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Misc function used to count the number of bytes in a post body, in the
|
49 |
+
* world of multi-byte chars and the unpredictability of
|
50 |
+
* strlen/mb_strlen/sizeof, this is the only way to do that in a sane
|
51 |
+
* manner at the moment.
|
52 |
+
*
|
53 |
+
* This algorithm was originally developed for the
|
54 |
+
* Solar Framework by Paul M. Jones
|
55 |
+
*
|
56 |
+
* @link http://solarphp.com/
|
57 |
+
* @link http://svn.solarphp.com/core/trunk/Solar/Json.php
|
58 |
+
* @link http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Json/Decoder.php
|
59 |
+
* @param string $str
|
60 |
+
* @return int The number of bytes in a string.
|
61 |
+
*/
|
62 |
+
public static function getStrLen($str)
|
63 |
+
{
|
64 |
+
$strlenVar = strlen($str);
|
65 |
+
$d = $ret = 0;
|
66 |
+
for ($count = 0; $count < $strlenVar; ++ $count) {
|
67 |
+
$ordinalValue = ord($str{$ret});
|
68 |
+
switch (true) {
|
69 |
+
case (($ordinalValue >= 0x20) && ($ordinalValue <= 0x7F)):
|
70 |
+
// characters U-00000000 - U-0000007F (same as ASCII)
|
71 |
+
$ret ++;
|
72 |
+
break;
|
73 |
+
case (($ordinalValue & 0xE0) == 0xC0):
|
74 |
+
// characters U-00000080 - U-000007FF, mask 110XXXXX
|
75 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
76 |
+
$ret += 2;
|
77 |
+
break;
|
78 |
+
case (($ordinalValue & 0xF0) == 0xE0):
|
79 |
+
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
80 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
81 |
+
$ret += 3;
|
82 |
+
break;
|
83 |
+
case (($ordinalValue & 0xF8) == 0xF0):
|
84 |
+
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
85 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
86 |
+
$ret += 4;
|
87 |
+
break;
|
88 |
+
case (($ordinalValue & 0xFC) == 0xF8):
|
89 |
+
// characters U-00200000 - U-03FFFFFF, mask 111110XX
|
90 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
91 |
+
$ret += 5;
|
92 |
+
break;
|
93 |
+
case (($ordinalValue & 0xFE) == 0xFC):
|
94 |
+
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
95 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
96 |
+
$ret += 6;
|
97 |
+
break;
|
98 |
+
default:
|
99 |
+
$ret ++;
|
100 |
+
}
|
101 |
+
}
|
102 |
+
return $ret;
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Normalize all keys in an array to lower-case.
|
107 |
+
* @param array $arr
|
108 |
+
* @return array Normalized array.
|
109 |
+
*/
|
110 |
+
public static function normalize($arr)
|
111 |
+
{
|
112 |
+
if (!is_array($arr)) {
|
113 |
+
return array();
|
114 |
+
}
|
115 |
+
|
116 |
+
$normalized = array();
|
117 |
+
foreach ($arr as $key => $val) {
|
118 |
+
$normalized[strtolower($key)] = $val;
|
119 |
+
}
|
120 |
+
return $normalized;
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Convert a string to camelCase
|
125 |
+
* @param string $value
|
126 |
+
* @return string
|
127 |
+
*/
|
128 |
+
public static function camelCase($value)
|
129 |
+
{
|
130 |
+
$value = ucwords(str_replace(array('-', '_'), ' ', $value));
|
131 |
+
$value = str_replace(' ', '', $value);
|
132 |
+
$value[0] = strtolower($value[0]);
|
133 |
+
return $value;
|
134 |
+
}
|
135 |
+
}
|
google/Utils/URITemplate.php
ADDED
@@ -0,0 +1,333 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2013 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Implementation of levels 1-3 of the URI Template spec.
|
20 |
+
* @see http://tools.ietf.org/html/rfc6570
|
21 |
+
*/
|
22 |
+
class Google_Utils_URITemplate
|
23 |
+
{
|
24 |
+
const TYPE_MAP = "1";
|
25 |
+
const TYPE_LIST = "2";
|
26 |
+
const TYPE_SCALAR = "4";
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @var $operators array
|
30 |
+
* These are valid at the start of a template block to
|
31 |
+
* modify the way in which the variables inside are
|
32 |
+
* processed.
|
33 |
+
*/
|
34 |
+
private $operators = array(
|
35 |
+
"+" => "reserved",
|
36 |
+
"/" => "segments",
|
37 |
+
"." => "dotprefix",
|
38 |
+
"#" => "fragment",
|
39 |
+
";" => "semicolon",
|
40 |
+
"?" => "form",
|
41 |
+
"&" => "continuation"
|
42 |
+
);
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @var reserved array
|
46 |
+
* These are the characters which should not be URL encoded in reserved
|
47 |
+
* strings.
|
48 |
+
*/
|
49 |
+
private $reserved = array(
|
50 |
+
"=", ",", "!", "@", "|", ":", "/", "?", "#",
|
51 |
+
"[", "]",'$', "&", "'", "(", ")", "*", "+", ";"
|
52 |
+
);
|
53 |
+
private $reservedEncoded = array(
|
54 |
+
"%3D", "%2C", "%21", "%40", "%7C", "%3A", "%2F", "%3F",
|
55 |
+
"%23", "%5B", "%5D", "%24", "%26", "%27", "%28", "%29",
|
56 |
+
"%2A", "%2B", "%3B"
|
57 |
+
);
|
58 |
+
|
59 |
+
public function parse($string, array $parameters)
|
60 |
+
{
|
61 |
+
return $this->resolveNextSection($string, $parameters);
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* This function finds the first matching {...} block and
|
66 |
+
* executes the replacement. It then calls itself to find
|
67 |
+
* subsequent blocks, if any.
|
68 |
+
*/
|
69 |
+
private function resolveNextSection($string, $parameters)
|
70 |
+
{
|
71 |
+
$start = strpos($string, "{");
|
72 |
+
if ($start === false) {
|
73 |
+
return $string;
|
74 |
+
}
|
75 |
+
$end = strpos($string, "}");
|
76 |
+
if ($end === false) {
|
77 |
+
return $string;
|
78 |
+
}
|
79 |
+
$string = $this->replace($string, $start, $end, $parameters);
|
80 |
+
return $this->resolveNextSection($string, $parameters);
|
81 |
+
}
|
82 |
+
|
83 |
+
private function replace($string, $start, $end, $parameters)
|
84 |
+
{
|
85 |
+
// We know a data block will have {} round it, so we can strip that.
|
86 |
+
$data = substr($string, $start + 1, $end - $start - 1);
|
87 |
+
|
88 |
+
// If the first character is one of the reserved operators, it effects
|
89 |
+
// the processing of the stream.
|
90 |
+
if (isset($this->operators[$data[0]])) {
|
91 |
+
$op = $this->operators[$data[0]];
|
92 |
+
$data = substr($data, 1);
|
93 |
+
$prefix = "";
|
94 |
+
$prefix_on_missing = false;
|
95 |
+
|
96 |
+
switch ($op) {
|
97 |
+
case "reserved":
|
98 |
+
// Reserved means certain characters should not be URL encoded
|
99 |
+
$data = $this->replaceVars($data, $parameters, ",", null, true);
|
100 |
+
break;
|
101 |
+
case "fragment":
|
102 |
+
// Comma separated with fragment prefix. Bare values only.
|
103 |
+
$prefix = "#";
|
104 |
+
$prefix_on_missing = true;
|
105 |
+
$data = $this->replaceVars($data, $parameters, ",", null, true);
|
106 |
+
break;
|
107 |
+
case "segments":
|
108 |
+
// Slash separated data. Bare values only.
|
109 |
+
$prefix = "/";
|
110 |
+
$data =$this->replaceVars($data, $parameters, "/");
|
111 |
+
break;
|
112 |
+
case "dotprefix":
|
113 |
+
// Dot separated data. Bare values only.
|
114 |
+
$prefix = ".";
|
115 |
+
$prefix_on_missing = true;
|
116 |
+
$data = $this->replaceVars($data, $parameters, ".");
|
117 |
+
break;
|
118 |
+
case "semicolon":
|
119 |
+
// Semicolon prefixed and separated. Uses the key name
|
120 |
+
$prefix = ";";
|
121 |
+
$data = $this->replaceVars($data, $parameters, ";", "=", false, true, false);
|
122 |
+
break;
|
123 |
+
case "form":
|
124 |
+
// Standard URL format. Uses the key name
|
125 |
+
$prefix = "?";
|
126 |
+
$data = $this->replaceVars($data, $parameters, "&", "=");
|
127 |
+
break;
|
128 |
+
case "continuation":
|
129 |
+
// Standard URL, but with leading ampersand. Uses key name.
|
130 |
+
$prefix = "&";
|
131 |
+
$data = $this->replaceVars($data, $parameters, "&", "=");
|
132 |
+
break;
|
133 |
+
}
|
134 |
+
|
135 |
+
// Add the initial prefix character if data is valid.
|
136 |
+
if ($data || ($data !== false && $prefix_on_missing)) {
|
137 |
+
$data = $prefix . $data;
|
138 |
+
}
|
139 |
+
|
140 |
+
} else {
|
141 |
+
// If no operator we replace with the defaults.
|
142 |
+
$data = $this->replaceVars($data, $parameters);
|
143 |
+
}
|
144 |
+
// This is chops out the {...} and replaces with the new section.
|
145 |
+
return substr($string, 0, $start) . $data . substr($string, $end + 1);
|
146 |
+
}
|
147 |
+
|
148 |
+
private function replaceVars(
|
149 |
+
$section,
|
150 |
+
$parameters,
|
151 |
+
$sep = ",",
|
152 |
+
$combine = null,
|
153 |
+
$reserved = false,
|
154 |
+
$tag_empty = false,
|
155 |
+
$combine_on_empty = true
|
156 |
+
) {
|
157 |
+
if (strpos($section, ",") === false) {
|
158 |
+
// If we only have a single value, we can immediately process.
|
159 |
+
return $this->combine(
|
160 |
+
$section,
|
161 |
+
$parameters,
|
162 |
+
$sep,
|
163 |
+
$combine,
|
164 |
+
$reserved,
|
165 |
+
$tag_empty,
|
166 |
+
$combine_on_empty
|
167 |
+
);
|
168 |
+
} else {
|
169 |
+
// If we have multiple values, we need to split and loop over them.
|
170 |
+
// Each is treated individually, then glued together with the
|
171 |
+
// separator character.
|
172 |
+
$vars = explode(",", $section);
|
173 |
+
return $this->combineList(
|
174 |
+
$vars,
|
175 |
+
$sep,
|
176 |
+
$parameters,
|
177 |
+
$combine,
|
178 |
+
$reserved,
|
179 |
+
false, // Never emit empty strings in multi-param replacements
|
180 |
+
$combine_on_empty
|
181 |
+
);
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
public function combine(
|
186 |
+
$key,
|
187 |
+
$parameters,
|
188 |
+
$sep,
|
189 |
+
$combine,
|
190 |
+
$reserved,
|
191 |
+
$tag_empty,
|
192 |
+
$combine_on_empty
|
193 |
+
) {
|
194 |
+
$length = false;
|
195 |
+
$explode = false;
|
196 |
+
$skip_final_combine = false;
|
197 |
+
$value = false;
|
198 |
+
|
199 |
+
// Check for length restriction.
|
200 |
+
if (strpos($key, ":") !== false) {
|
201 |
+
list($key, $length) = explode(":", $key);
|
202 |
+
}
|
203 |
+
|
204 |
+
// Check for explode parameter.
|
205 |
+
if ($key[strlen($key) - 1] == "*") {
|
206 |
+
$explode = true;
|
207 |
+
$key = substr($key, 0, -1);
|
208 |
+
$skip_final_combine = true;
|
209 |
+
}
|
210 |
+
|
211 |
+
// Define the list separator.
|
212 |
+
$list_sep = $explode ? $sep : ",";
|
213 |
+
|
214 |
+
if (isset($parameters[$key])) {
|
215 |
+
$data_type = $this->getDataType($parameters[$key]);
|
216 |
+
switch($data_type) {
|
217 |
+
case self::TYPE_SCALAR:
|
218 |
+
$value = $this->getValue($parameters[$key], $length);
|
219 |
+
break;
|
220 |
+
case self::TYPE_LIST:
|
221 |
+
$values = array();
|
222 |
+
foreach ($parameters[$key] as $pkey => $pvalue) {
|
223 |
+
$pvalue = $this->getValue($pvalue, $length);
|
224 |
+
if ($combine && $explode) {
|
225 |
+
$values[$pkey] = $key . $combine . $pvalue;
|
226 |
+
} else {
|
227 |
+
$values[$pkey] = $pvalue;
|
228 |
+
}
|
229 |
+
}
|
230 |
+
$value = implode($list_sep, $values);
|
231 |
+
if ($value == '') {
|
232 |
+
return '';
|
233 |
+
}
|
234 |
+
break;
|
235 |
+
case self::TYPE_MAP:
|
236 |
+
$values = array();
|
237 |
+
foreach ($parameters[$key] as $pkey => $pvalue) {
|
238 |
+
$pvalue = $this->getValue($pvalue, $length);
|
239 |
+
if ($explode) {
|
240 |
+
$pkey = $this->getValue($pkey, $length);
|
241 |
+
$values[] = $pkey . "=" . $pvalue; // Explode triggers = combine.
|
242 |
+
} else {
|
243 |
+
$values[] = $pkey;
|
244 |
+
$values[] = $pvalue;
|
245 |
+
}
|
246 |
+
}
|
247 |
+
$value = implode($list_sep, $values);
|
248 |
+
if ($value == '') {
|
249 |
+
return false;
|
250 |
+
}
|
251 |
+
break;
|
252 |
+
}
|
253 |
+
} else if ($tag_empty) {
|
254 |
+
// If we are just indicating empty values with their key name, return that.
|
255 |
+
return $key;
|
256 |
+
} else {
|
257 |
+
// Otherwise we can skip this variable due to not being defined.
|
258 |
+
return false;
|
259 |
+
}
|
260 |
+
|
261 |
+
if ($reserved) {
|
262 |
+
$value = str_replace($this->reservedEncoded, $this->reserved, $value);
|
263 |
+
}
|
264 |
+
|
265 |
+
// If we do not need to include the key name, we just return the raw
|
266 |
+
// value.
|
267 |
+
if (!$combine || $skip_final_combine) {
|
268 |
+
return $value;
|
269 |
+
}
|
270 |
+
|
271 |
+
// Else we combine the key name: foo=bar, if value is not the empty string.
|
272 |
+
return $key . ($value != '' || $combine_on_empty ? $combine . $value : '');
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* Return the type of a passed in value
|
277 |
+
*/
|
278 |
+
private function getDataType($data)
|
279 |
+
{
|
280 |
+
if (is_array($data)) {
|
281 |
+
reset($data);
|
282 |
+
if (key($data) !== 0) {
|
283 |
+
return self::TYPE_MAP;
|
284 |
+
}
|
285 |
+
return self::TYPE_LIST;
|
286 |
+
}
|
287 |
+
return self::TYPE_SCALAR;
|
288 |
+
}
|
289 |
+
|
290 |
+
/**
|
291 |
+
* Utility function that merges multiple combine calls
|
292 |
+
* for multi-key templates.
|
293 |
+
*/
|
294 |
+
private function combineList(
|
295 |
+
$vars,
|
296 |
+
$sep,
|
297 |
+
$parameters,
|
298 |
+
$combine,
|
299 |
+
$reserved,
|
300 |
+
$tag_empty,
|
301 |
+
$combine_on_empty
|
302 |
+
) {
|
303 |
+
$ret = array();
|
304 |
+
foreach ($vars as $var) {
|
305 |
+
$response = $this->combine(
|
306 |
+
$var,
|
307 |
+
$parameters,
|
308 |
+
$sep,
|
309 |
+
$combine,
|
310 |
+
$reserved,
|
311 |
+
$tag_empty,
|
312 |
+
$combine_on_empty
|
313 |
+
);
|
314 |
+
if ($response === false) {
|
315 |
+
continue;
|
316 |
+
}
|
317 |
+
$ret[] = $response;
|
318 |
+
}
|
319 |
+
return implode($sep, $ret);
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Utility function to encode and trim values
|
324 |
+
*/
|
325 |
+
private function getValue($value, $length)
|
326 |
+
{
|
327 |
+
if ($length) {
|
328 |
+
$value = substr($value, 0, $length);
|
329 |
+
}
|
330 |
+
$value = rawurlencode($value);
|
331 |
+
return $value;
|
332 |
+
}
|
333 |
+
}
|
google/Verifier/Abstract.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Verifies signatures.
|
20 |
+
*
|
21 |
+
* @author Brian Eaton <beaton@google.com>
|
22 |
+
*/
|
23 |
+
abstract class Google_Verifier_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Checks a signature, returns true if the signature is correct,
|
27 |
+
* false otherwise.
|
28 |
+
*/
|
29 |
+
abstract public function verify($data, $signature);
|
30 |
+
}
|
google/Verifier/Pem.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2011 Google Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain 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,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once APSL_PLUGIN_DIR."google/Auth/Exception.php";
|
19 |
+
require_once APSL_PLUGIN_DIR."google/Verifier/Abstract.php";
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Verifies signatures using PEM encoded certificates.
|
23 |
+
*
|
24 |
+
* @author Brian Eaton <beaton@google.com>
|
25 |
+
*/
|
26 |
+
class Google_Verifier_Pem extends Google_Verifier_Abstract
|
27 |
+
{
|
28 |
+
private $publicKey;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Constructs a verifier from the supplied PEM-encoded certificate.
|
32 |
+
*
|
33 |
+
* $pem: a PEM encoded certificate (not a file).
|
34 |
+
* @param $pem
|
35 |
+
* @throws Google_Auth_Exception
|
36 |
+
* @throws Google_Exception
|
37 |
+
*/
|
38 |
+
public function __construct($pem)
|
39 |
+
{
|
40 |
+
if (!function_exists('openssl_x509_read')) {
|
41 |
+
throw new Google_Exception('Google API PHP client needs the openssl PHP extension');
|
42 |
+
}
|
43 |
+
$this->publicKey = openssl_x509_read($pem);
|
44 |
+
if (!$this->publicKey) {
|
45 |
+
throw new Google_Auth_Exception("Unable to parse PEM: $pem");
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
public function __destruct()
|
50 |
+
{
|
51 |
+
if ($this->publicKey) {
|
52 |
+
openssl_x509_free($this->publicKey);
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Verifies the signature on data.
|
58 |
+
*
|
59 |
+
* Returns true if the signature is valid, false otherwise.
|
60 |
+
* @param $data
|
61 |
+
* @param $signature
|
62 |
+
* @throws Google_Auth_Exception
|
63 |
+
* @return bool
|
64 |
+
*/
|
65 |
+
public function verify($data, $signature)
|
66 |
+
{
|
67 |
+
$hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256";
|
68 |
+
$status = openssl_verify($data, $signature, $this->publicKey, $hash);
|
69 |
+
if ($status === -1) {
|
70 |
+
throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string());
|
71 |
+
}
|
72 |
+
return $status === 1;
|
73 |
+
}
|
74 |
+
}
|
images/Thumbs.db
ADDED
Binary file
|
images/buffer-black.png
ADDED
Binary file
|
images/buffer-white.png
ADDED
Binary file
|
images/buffer.png
ADDED
Binary file
|
images/customize.png
ADDED
Binary file
|
images/icon.png
ADDED
Binary file
|
images/icon1.png
ADDED
Binary file
|
images/logo.png
ADDED
Binary file
|
images/plugin.png
ADDED
Binary file
|
images/preview-1.jpg
ADDED
Binary file
|
images/preview-2.jpg
ADDED
Binary file
|
images/preview-3.jpg
ADDED
Binary file
|
images/preview-4.jpg
ADDED
Binary file
|
images/theme.png
ADDED
Binary file
|
images/top-line.png
ADDED
Binary file
|
inc/backend/about.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="about-wrapper clearfix">
|
2 |
+
<div class="about-desc-wrap clearfix">
|
3 |
+
<div class="ap-title"> About AccessPress Social Login</div>
|
4 |
+
<div class="about-content">
|
5 |
+
<p>AccessPress<strong>Social Login</strong> - is a perfect WordPress plugin to allow your website users to register/login to the website using one of their favorite social website accounts.</p>
|
6 |
+
</div>
|
7 |
+
</div>
|
8 |
+
</div>
|
9 |
+
<div class="social-more-wrap clearfix">
|
10 |
+
<div class="more-title"> More from AccessPress Themes </div>
|
11 |
+
<ul class="more-product">
|
12 |
+
<li><a href="https://accesspressthemes.com/plugins/"><span class="prod-title"> Wordpress Plugins </span> <img src="<?php echo APSL_IMAGE_DIR . '/plugin.png'; ?>" width="100%" /> </a></li>
|
13 |
+
<li><a href="https://accesspressthemes.com/themes/"><span class="prod-title"> Wordpress Themes </span> <img src="<?php echo APSL_IMAGE_DIR . '/theme.png'; ?>" width="100%" /></a></li>
|
14 |
+
<li><a href="https://accesspressthemes.com/contact/"><span class="prod-title"> Wordpress Customization </span> <img src="<?php echo APSL_IMAGE_DIR . '/customize.png'; ?>" width="100%" /></a></li>
|
15 |
+
</ul>
|
16 |
+
<div class="clear"></div>
|
17 |
+
</div>
|
18 |
+
|
19 |
+
<div class="social-share-wrap clearfix">
|
20 |
+
<div class="more-title"> Get social </div>
|
21 |
+
<div class="social-iframe"> <strong>Like us on facebook:</strong><br />
|
22 |
+
<iframe style="border: none; overflow: hidden; width: 764px; height: 206px;" src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FAccessPress-Themes%2F1396595907277967&width=842&height=258&colorscheme=light&show_faces=true&header=false&stream=false&show_border=true&appId=1411139805828592" width="240" height="150" frameborder="0" scrolling="no"></iframe></div>
|
23 |
+
<ul class="about-social clearfix">
|
24 |
+
<li><a href="https://www.facebook.com/pages/AccessPress-Themes/1396595907277967" class="fb"><i class="fa fa-facebook"> </i><br /> <span> Follow us on <span class="bold"> Facebook </span></span></a></li>
|
25 |
+
<li><a href="https://twitter.com/apthemes" class="twt"><i class="fa fa-twitter"> </i><br /><span> Follow us on <span class="bold"> Twitter </span> </span></a></li>
|
26 |
+
<li><a href="https://plus.google.com/+Accesspressthemesprofile/" class="gp"><i class="fa fa-google-plus"> </i><br /><span> Follow us on <span class="bold"> Google + </span> </span></a></li>
|
27 |
+
<li><a href="https://www.youtube.com/user/accesspressthemes" class="utube"><i class="fa fa-youtube"> </i><br /><span> Subscribe us on <span class="bold"> Youtube </span> </span></a></li>
|
28 |
+
<li><a href="skype:access-keys" class="skype"><i class="fa fa-skype"> </i><br /><span> Contact us on <span class="bold"> Skype </span> </span></a></li>
|
29 |
+
<li><a href="https://www.pinterest.com/accesspresswp/" class="pin"><i class="fa fa-pinterest"> </i><br /><span> Follow us on <span class="bold"> Pinterest </span> </span></a></li>
|
30 |
+
</ul>
|
31 |
+
</div>
|
inc/backend/activation.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); ?>
|
2 |
+
<?php
|
3 |
+
$apsl_settings = array();
|
4 |
+
|
5 |
+
$social_networks = array(0=>'facebook', 1=>'twitter', 2=>'google');
|
6 |
+
$apsl_settings['network_ordering'] = $social_networks;
|
7 |
+
|
8 |
+
//facebook settings
|
9 |
+
$facebook_parameters = array(
|
10 |
+
'apsl_facebook_enable' =>'0',
|
11 |
+
'apsl_facebook_app_id' =>'',
|
12 |
+
'apsl_facebook_app_secret'=>''
|
13 |
+
);
|
14 |
+
$apsl_settings['apsl_facebook_settings'] = $facebook_parameters;
|
15 |
+
|
16 |
+
//twitter settings
|
17 |
+
$twitter_parameters = array(
|
18 |
+
'apsl_twitter_enable' =>'0',
|
19 |
+
'apsl_twitter_api_key' =>'',
|
20 |
+
'apsl_twitter_api_secret'=>''
|
21 |
+
);
|
22 |
+
$apsl_settings['apsl_twitter_settings'] = $twitter_parameters;
|
23 |
+
|
24 |
+
//google settings
|
25 |
+
$google_parameters = array(
|
26 |
+
'apsl_google_enable' =>'0',
|
27 |
+
'apsl_google_client_id' =>'',
|
28 |
+
'apsl_google_client_secret'=>''
|
29 |
+
);
|
30 |
+
$apsl_settings['apsl_google_settings'] = $google_parameters;
|
31 |
+
|
32 |
+
$apsl_settings['apsl_enable_disable_plugin'] = 'yes';
|
33 |
+
|
34 |
+
$display_options = array('login_form', 'register_form', 'comment_form');
|
35 |
+
$apsl_settings['apsl_display_options'] =$display_options;
|
36 |
+
|
37 |
+
$apsl_settings['apsl_icon_theme'] = '1';
|
38 |
+
|
39 |
+
$apsl_settings['apsl_title_text_field'] = 'Social connect:';
|
40 |
+
|
41 |
+
update_option( APSL_SETTINGS, $apsl_settings );
|
42 |
+
?>
|
inc/backend/how-to-use.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php defined('ABSPATH') or die("No script kiddies please!"); ?>
|
2 |
+
<p>There are 2 main settings tabs that will help you to setup the plugin to work properly.</p>
|
3 |
+
<dl>
|
4 |
+
<dt><strong>Network Settings:</strong></dt>
|
5 |
+
<dd>In this tab you can enable and disable the available social medias as per your need. Also you can order the apperance of the social medias simply by drag and drop.
|
6 |
+
</dd>
|
7 |
+
<p>For each social media you can</p>
|
8 |
+
<ul class='how-list'>
|
9 |
+
<li>Enable/Disable: You can enable and disable the social media.</li>
|
10 |
+
<li>App ID: App id of the social media.</li>
|
11 |
+
<li>App secret: App secret of the social media.</li>
|
12 |
+
</ul>
|
13 |
+
To get the App ID and App Secret please follow the instructions(notes).
|
14 |
+
|
15 |
+
<dt><strong>Other settings:</strong></dt>
|
16 |
+
<dd>
|
17 |
+
<p>In this tab you can do various settings of a plugin.</p>
|
18 |
+
<ul class="how-list">
|
19 |
+
<li>Enable or disable the social login.</li>
|
20 |
+
<li>Options to enable the social logins for login form, registration form and in comments.</li>
|
21 |
+
<li>Options to choose the pre available themes, You can choose any one theme from the pre available 4 themes.</li>
|
22 |
+
<li>Login text: Here you can setup the login text as per your need.</li>
|
23 |
+
</ul>
|
24 |
+
</dd>
|
25 |
+
|
26 |
+
<dt><strong>Shortcode:</strong></dt>
|
27 |
+
<dd><p>You can use shortcode for the display of the social logins in the contents of a posts and pages.
|
28 |
+
<ul class="how-list">
|
29 |
+
<li>Example 1: [apsl-login-lite login_text='Social Connection']</li>
|
30 |
+
<li>Shortcode attributes: <br />
|
31 |
+
i. login_text: you can use the custom login text for the shortcodes using this attribute.<br />
|
32 |
+
</li>
|
33 |
+
</ul>
|
34 |
+
</p></dd>
|
35 |
+
|
36 |
+
<dt><strong>Widget:</strong></dt>
|
37 |
+
<dd>
|
38 |
+
<p>You can use widget for the display of the social logins in the widgets area. <br/>
|
39 |
+
<ul class="how-list">
|
40 |
+
<li>Widget attributes <br />
|
41 |
+
i. Title: You can setup the widget title here.<br />
|
42 |
+
ii. Login text: You can setup the login text here.<br />
|
43 |
+
</li>
|
44 |
+
</ul>
|
45 |
+
</dd>
|
46 |
+
|
47 |
+
</dl>
|
48 |
+
|
49 |
+
|
50 |
+
|
inc/backend/main-page.php
ADDED
@@ -0,0 +1,271 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wrap"><div class='apsl-outer-wrapper'>
|
2 |
+
|
3 |
+
<div class="apsl-setting-header clearfix">
|
4 |
+
|
5 |
+
<div class="apsl-headerlogo">
|
6 |
+
<div class="logo-wrap"> <img src="<?php echo APSL_IMAGE_DIR; ?>/logo.png" alt="<?php esc_attr_e('AccessPress Social Login Lite', APSL_TEXT_DOMAIN ); ?>" /></div>
|
7 |
+
<div class="logo-content"><?php esc_attr_e('AccessPress Social Login Lite', APSL_TEXT_DOMAIN ); ?><br />
|
8 |
+
<span class='plugin-version'><?php _e('version '.APSL_VERSION, APSL_TEXT_DOMAIN ); ?></span></div>
|
9 |
+
</div>
|
10 |
+
|
11 |
+
<div class="apsl-right-header-block">
|
12 |
+
<div class="apsl-header-icons">
|
13 |
+
<p>Follow us for new updates</p>
|
14 |
+
<div class="apsl-social-bttns">
|
15 |
+
<iframe src="//www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FAccessPress-Themes%2F1396595907277967&width&layout=button&action=like&show_faces=false&share=false&height=35&appId=1411139805828592" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:20px; width:50px " allowtransparency="true"></iframe>
|
16 |
+
|
17 |
+
<iframe id="twitter-widget-0" scrolling="no" frameborder="0" allowtransparency="true" src="http://platform.twitter.com/widgets/follow_button.5f46501ecfda1c3e1c05dd3e24875611.en.html#_=1421918256492&dnt=true&id=twitter-widget-0&lang=en&screen_name=apthemes&show_count=false&show_screen_name=true&size=m" class="twitter-follow-button twitter-follow-button" title="Twitter Follow Button" data-twttr-rendered="true" style="width: 126px; height: 20px;"></iframe>
|
18 |
+
<script>
|
19 |
+
!function (d, s, id) {
|
20 |
+
var js, fjs = d.getElementsByTagName(s)[0];
|
21 |
+
if (!d.getElementById(id)) {
|
22 |
+
js = d.createElement(s);
|
23 |
+
js.id = id;
|
24 |
+
js.src = "//platform.twitter.com/widgets.js";
|
25 |
+
fjs.parentNode.insertBefore(js, fjs);
|
26 |
+
}
|
27 |
+
}(document, "script", "twitter-wjs");
|
28 |
+
</script>
|
29 |
+
|
30 |
+
</div>
|
31 |
+
</div>
|
32 |
+
|
33 |
+
</div>
|
34 |
+
<div class="clear"></div>
|
35 |
+
</div>
|
36 |
+
<div class="clear"></div>
|
37 |
+
|
38 |
+
<?php $options = get_option( APSL_SETTINGS );
|
39 |
+
//$this->print_array($options);
|
40 |
+
?>
|
41 |
+
|
42 |
+
<?php
|
43 |
+
|
44 |
+
if(isset($_SESSION['apsl_message'])){ ?>
|
45 |
+
<div class="apsl-message">
|
46 |
+
<p><?php
|
47 |
+
echo $_SESSION['apsl_message'];
|
48 |
+
unset($_SESSION['apsl_message']);
|
49 |
+
?></p>
|
50 |
+
</div>
|
51 |
+
<?php } ?>
|
52 |
+
<div class='apsl-networks'>
|
53 |
+
<div class='apsl-network-options'>
|
54 |
+
<form method="post" action="<?php echo admin_url() . 'admin-post.php' ?>">
|
55 |
+
<input type="hidden" name="action" value="apsl_save_options"/>
|
56 |
+
<div class='apsl-settings-tabs-wrapper clearfix'>
|
57 |
+
<ul class='apsl-tab-wrapper-fix clearfix'>
|
58 |
+
<li><a href='javascript: void(0);' id='apsl-networks-settings' class='apsl-settings-tab apsl-active-tab' ><?php _e('Network settings', APSL_TEXT_DOMAIN ) ?></a></li>
|
59 |
+
<li><a href='javascript: void(0);' id='apsl-theme-settings' class='apsl-settings-tab' ><?php _e('Other settings', APSL_TEXT_DOMAIN ) ?></a></li>
|
60 |
+
<li><a href='javascript: void(0);' id='apsl-how-to-use' class='apsl-settings-tab' ><?php _e('How to use', APSL_TEXT_DOMAIN ) ?></a></li>
|
61 |
+
<li><a href='javascript: void(0);' id='apsl-about' class='apsl-settings-tab' ><?php _e('About', APSL_TEXT_DOMAIN ) ?></a></li>
|
62 |
+
</ul>
|
63 |
+
</div>
|
64 |
+
<div class="clear"></div>
|
65 |
+
<div class='apsl-setting-tabs-wrapper'>
|
66 |
+
<div class='apsl-tab-contents' id='tab-apsl-networks-settings'>
|
67 |
+
|
68 |
+
<div class='network-settings'>
|
69 |
+
<?php foreach($options['network_ordering'] as $key=>$value): ?>
|
70 |
+
<?php switch($value){
|
71 |
+
case 'facebook': ?>
|
72 |
+
<div class='apsl-settings apsl-facebook-settings'>
|
73 |
+
<!-- Facebook Settings -->
|
74 |
+
<div class='apsl-label'><?php _e( "Facebook", APSL_TEXT_DOMAIN ); ?><span class='apsl_show_hide' id='apsl_show_hide_<?php echo $value; ?>'><i class="fa fa-caret-down"></i></span> </div>
|
75 |
+
<div class='apsl_network_settings_wrapper' id='apsl_network_settings_<?php echo $value; ?>' style='display:none'>
|
76 |
+
<div class='apsl-enable-disable'>
|
77 |
+
<label><?php _e('Enable?', APSL_TEXT_DOMAIN ); ?></label>
|
78 |
+
<input type='hidden' name='network_ordering[]' value='facebook' />
|
79 |
+
<input type="checkbox" id='aspl-facbook-enable' value='enable' name='apsl_facebook_settings[apsl_facebook_enable]' <?php checked( 'enable', $options['apsl_facebook_settings']['apsl_facebook_enable'] ); ?> />
|
80 |
+
</div>
|
81 |
+
<div class='apsl-app-id-wrapper'>
|
82 |
+
<label><?php _e( 'App ID:', APSL_TEXT_DOMAIN ); ?></label><input type='text' id='apsl-facebook-app-id' name='apsl_facebook_settings[apsl_facebook_app_id]' value='<?php if(isset($options['apsl_facebook_settings']['apsl_facebook_app_id'])){ echo $options['apsl_facebook_settings']['apsl_facebook_app_id']; } ?>' />
|
83 |
+
</div>
|
84 |
+
<div class='apsl-app-secret-wrapper'>
|
85 |
+
<label><?php _e( 'App Secret:', APSL_TEXT_DOMAIN ); ?></label><input type='text' id='apsl-facebook-app-secret' name='apsl_facebook_settings[apsl_facebook_app_secret]' value='<?php if(isset($options['apsl_facebook_settings']['apsl_facebook_app_secret'])){ echo $options['apsl_facebook_settings']['apsl_facebook_app_secret']; } ?>' />
|
86 |
+
</div>
|
87 |
+
<div class='apsl-info'>
|
88 |
+
<span class='apsl-info-note'><?php _e('Note:', APSL_TEXT_DOMAIN ); ?></span> <br />
|
89 |
+
<span class='apsl-info-content'>You need to create a new facebook API Applitation to setup facebook login. Please follow the instructions to create new app.</span>
|
90 |
+
<br />
|
91 |
+
<ul class='apsl-info-lists'>
|
92 |
+
<li>Go to <a href='https://developers.facebook.com/apps' target='_blank'>https://developers.facebook.com/apps</a>.</li>
|
93 |
+
<li>Click on 'Add a New App' button. A popup will open. Then choose website.</li>
|
94 |
+
<li>Add the required informations and don't forget to make your app live. This is very important otherwise your app will not work for all users.</li>
|
95 |
+
<li>Then Click the "Create App" button and follow the instructions, your new app will be created. </li>
|
96 |
+
<li>Copy and Paste "App ID" and "App Secret" here.</li>
|
97 |
+
<li>Site url: <?php echo site_url(); ?></li>
|
98 |
+
</ul>
|
99 |
+
</div>
|
100 |
+
</div>
|
101 |
+
</div>
|
102 |
+
<?php break; ?>
|
103 |
+
|
104 |
+
<?php case 'twitter': ?>
|
105 |
+
<div class='apsl-settings apsl-twitter-settings'>
|
106 |
+
<!-- Twitter Settings -->
|
107 |
+
<div class='apsl-label'><?php _e( "Twitter", APSL_TEXT_DOMAIN ); ?> <span class='apsl_show_hide' id='apsl_show_hide_<?php echo $value; ?>'><i class="fa fa-caret-down"></i></span> </div>
|
108 |
+
<div class='apsl_network_settings_wrapper' id='apsl_network_settings_<?php echo $value; ?>' style='display:none'>
|
109 |
+
<div class='apsl-enable-disable'>
|
110 |
+
<label><?php _e('Enable?', APSL_TEXT_DOMAIN ); ?></label>
|
111 |
+
<input type="checkbox" id='aspl-twitter-enable' value='enable' name='apsl_twitter_settings[apsl_twitter_enable]' <?php checked( 'enable', $options['apsl_twitter_settings']['apsl_twitter_enable'] ); ?> />
|
112 |
+
</div>
|
113 |
+
|
114 |
+
<div class='apsl-app-id-wrapper'>
|
115 |
+
<label><?php _e( 'Consumer Key (API Key):', APSL_TEXT_DOMAIN ); ?></label><input type='text' id='apsl-twitter-app-id' name='apsl_twitter_settings[apsl_twitter_api_key]' value='<?php if(isset($options['apsl_twitter_settings']['apsl_twitter_api_key'])){ echo $options['apsl_twitter_settings']['apsl_twitter_api_key']; } ?>' />
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<div class='apsl-app-secret-wrapper'>
|
119 |
+
<label><?php _e( 'Consumer Secret (API Secret):', APSL_TEXT_DOMAIN ); ?></label><input type='text' id='apsl-twitter-app-secret' name='apsl_twitter_settings[apsl_twitter_api_secret]' value='<?php if(isset($options['apsl_twitter_settings']['apsl_twitter_api_secret'])){ echo $options['apsl_twitter_settings']['apsl_twitter_api_secret']; } ?>' />
|
120 |
+
</div>
|
121 |
+
|
122 |
+
<input type='hidden' name='network_ordering[]' value='twitter' />
|
123 |
+
<div class='apsl-info'>
|
124 |
+
<span class='apsl-info-note'><?php _e('Note:', APSL_TEXT_DOMAIN ); ?> <br /> </span>
|
125 |
+
<span class='apsl-info-content'>You need to create new twitter API application to setup the twitter login. Please follow the instructions to create new app.</span>
|
126 |
+
<ul class='apsl-info-lists'>
|
127 |
+
<li>Go to <a href='https://apps.twitter.com/' target='_blank'>https://apps.twitter.com/</a></li>
|
128 |
+
<li>Click on Create New App button. A new application details form will appear. Please fill up the application details and click on "create your twitter application" button.</li>
|
129 |
+
<li>Please note that before creating twiiter API application, You must add your mobile phone to your Twitter profile.</li>
|
130 |
+
<li>After successful creation of the app. Please go to "Keys and Access Tokens" tabs and get Consumer key(API Key) and Consumer secret(API secret).</li>
|
131 |
+
<li>Website: <?php echo site_url(); ?></li>
|
132 |
+
<li>Callback URL: <?php echo site_url(); ?></li>
|
133 |
+
</ul>
|
134 |
+
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
+
</div>
|
138 |
+
<?php break;
|
139 |
+
|
140 |
+
case 'google': ?>
|
141 |
+
<div class='apsl-settings apsl-google-settings'>
|
142 |
+
<!-- Google Settings -->
|
143 |
+
<div class='apsl-label'><?php _e( "Google", APSL_TEXT_DOMAIN ); ?> <span class='apsl_show_hide' id='apsl_show_hide_<?php echo $value; ?>'><i class="fa fa-caret-down"></i></span> </div>
|
144 |
+
<div class='apsl_network_settings_wrapper' id='apsl_network_settings_<?php echo $value; ?>' style='display:none'>
|
145 |
+
<div class='apsl-enable-disable'>
|
146 |
+
<label><?php _e('Enable?', APSL_TEXT_DOMAIN ); ?></label>
|
147 |
+
<input type="checkbox" id='aspl-google-enable' value='enable' name='apsl_google_settings[apsl_google_enable]' <?php checked( 'enable', $options['apsl_google_settings']['apsl_google_enable'] ); ?> />
|
148 |
+
</div>
|
149 |
+
<div class='apsl-app-id-wrapper'>
|
150 |
+
<label><?php _e( 'Client ID:', APSL_TEXT_DOMAIN ); ?></label><input type='text' id='apsl-google-client-id' name='apsl_google_settings[apsl_google_client_id]' value='<?php if(isset($options['apsl_google_settings']['apsl_google_client_id'])){ echo $options['apsl_google_settings']['apsl_google_client_id']; } ?>' />
|
151 |
+
</div>
|
152 |
+
<div class='apsl-app-secret-wrapper'>
|
153 |
+
<label><?php _e( 'Client Secret:', APSL_TEXT_DOMAIN ); ?></label><input type='text' id='apsl-google-client-secret' name='apsl_google_settings[apsl_google_client_secret]' value='<?php if(isset($options['apsl_google_settings']['apsl_google_client_secret'])){ echo $options['apsl_google_settings']['apsl_google_client_secret']; } ?>' />
|
154 |
+
</div>
|
155 |
+
<input type='hidden' name='network_ordering[]' value='google' />
|
156 |
+
<div class='apsl-info'>
|
157 |
+
<span class='apsl-info-note'><?php _e('Note:', APSL_TEXT_DOMAIN ); ?></span> <br />
|
158 |
+
<span class='apsl-info-content'>You need to create new google API application to setup the google login. Please follow the instructions to create new application.</span>
|
159 |
+
<ul class='apsl-info-lists'>
|
160 |
+
<li>Go to <a href='https://console.developers.google.com/project' target='_blank'>https://console.developers.google.com/project.</a> </li>
|
161 |
+
<li>Click on "Create Project" button.</li>
|
162 |
+
<li>A pop up will appear.</li>
|
163 |
+
<li>Please enter Project name and click on "Create" button.</li>
|
164 |
+
<li>Now click on APIs & Auth > Consent screen and fill up the required credentials.</li>
|
165 |
+
<li>Now click on APIs & Auth > Credentials.</li>
|
166 |
+
<li>Now click on "Create new Client ID" button and fill up the required credentials.</li>
|
167 |
+
<li>Get the client ID and client secret.</li>
|
168 |
+
<li>Now go to APIs > Social APIs > Google+ API and enable it. It is very important to enable it for the google login to work.</li>
|
169 |
+
<li>Rediret uri setup:<br />
|
170 |
+
Please use <?php echo site_url(); ?>/wp-login.php?apsl_login_id=google_check - for wordpress login page.<br />
|
171 |
+
<?php echo site_url(); ?>/index.php?apsl_login_id=google_check - if you have used the shortcode or widget in frontend.
|
172 |
+
</li>
|
173 |
+
</ul>
|
174 |
+
</div>
|
175 |
+
</div>
|
176 |
+
</div>
|
177 |
+
<?php break; ?>
|
178 |
+
|
179 |
+
<?php default:
|
180 |
+
echo "should not reach here";
|
181 |
+
break;
|
182 |
+
|
183 |
+
} ?>
|
184 |
+
<?php endforeach; ?>
|
185 |
+
</div>
|
186 |
+
</div>
|
187 |
+
|
188 |
+
<div class='apsl-tab-contents' id='tab-apsl-theme-settings' style="display:none">
|
189 |
+
|
190 |
+
<div class='apsl-settings'>
|
191 |
+
<div class='apsl-enable-disable-opt'>
|
192 |
+
<div class="apsl-label"><?php _e('Social Login', APSL_TEXT_DOMAIN ); ?> <span class='apsl_show_hide'><i class="fa fa-caret-down"></i></span> </div>
|
193 |
+
<div class='apsl_network_settings_wrapper' style='display:none'>
|
194 |
+
<p class="social-login">
|
195 |
+
<span><?php _e('Enable social login?', APSL_TEXT_DOMAIN ); ?></span>
|
196 |
+
<input type='radio' id='apsl_enable_plugin' name='apsl_enable_disable_plugin' value='yes' <?php checked( $options['apsl_enable_disable_plugin'], 'yes', 'true' ); ?> /> <label for='apsl_enable_plugin'>Yes</label>
|
197 |
+
<input type='radio' id='apsl_disable_plugin' name='apsl_enable_disable_plugin' value='no' <?php checked( $options['apsl_enable_disable_plugin'], 'no', 'true' ); ?> /> <label for='apsl_disable_plugin'>No</label>
|
198 |
+
</p>
|
199 |
+
</div>
|
200 |
+
</div>
|
201 |
+
</div>
|
202 |
+
|
203 |
+
<div class='apsl-settings'>
|
204 |
+
<div class='apsl-display-options'>
|
205 |
+
<div class="apsl-label"><?php _e('Display options', APSL_TEXT_DOMAIN ); ?> <span class='apsl_show_hide'><i class="fa fa-caret-down"></i></span></div>
|
206 |
+
<div class='apsl_network_settings_wrapper' style='display:none'>
|
207 |
+
<p><?php _e('Please choose the options where you want to display the social login form.', APSL_TEXT_DOMAIN ); ?></p>
|
208 |
+
<p><input type="checkbox" id="apsl_login_form" value="login_form" name="apsl_display_options[]" <?php if (in_array("login_form", $options['apsl_display_options'])) { echo "checked='checked'"; } ?> ><label for="apsl_login_form"><?php _e( 'Login Form', APSL_TEXT_DOMAIN ); ?> </label></p>
|
209 |
+
<p><input type="checkbox" id="apsl_register_form" value="register_form" name="apsl_display_options[]" <?php if (in_array("register_form", $options['apsl_display_options'])) { echo "checked='checked'"; } ?> ><label for="apsl_register_form"><?php _e( 'Register Form', APSL_TEXT_DOMAIN ); ?> </label></p>
|
210 |
+
<p><input type="checkbox" id="apsl_comment_form" value="comment_form" name="apsl_display_options[]" <?php if (in_array("comment_form", $options['apsl_display_options'])) { echo "checked='checked'"; } ?> ><label for="apsl_comment_form"><?php _e( 'Comments', APSL_TEXT_DOMAIN ); ?> </label></p>
|
211 |
+
</div>
|
212 |
+
</div>
|
213 |
+
</div>
|
214 |
+
|
215 |
+
<div class='apsl-settings'>
|
216 |
+
<div class='apsl-themes-wrapper'>
|
217 |
+
<div class="apsl-label"><?php _e('Available icon themes', APSL_TEXT_DOMAIN ); ?> <span class='apsl_show_hide'><i class="fa fa-caret-down"></i></span> </div>
|
218 |
+
<div class='apsl_network_settings_wrapper' style='display:none'>
|
219 |
+
<?php for($i=1; $i<=4; $i++): ?>
|
220 |
+
<div class='apsl-theme apsl-theme-<?php echo $i; ?>'>
|
221 |
+
<label><input type="radio" id="apsl-theme-<?php echo $i; ?>" value="<?php echo $i; ?>" class="apsl-theme apsl-png-theme" name="apsl_icon_theme" <?php checked( $i, $options['apsl_icon_theme'] ); ?> >
|
222 |
+
<span><?php _e('Theme '.$i, APSL_TEXT_DOMAIN ); ?></span></label>
|
223 |
+
<div class="apsl-theme-previewbox">
|
224 |
+
<img src="<?php echo APSL_IMAGE_DIR; ?>/preview-<?php echo $i; ?>.jpg" alt="theme preview">
|
225 |
+
</div>
|
226 |
+
</div>
|
227 |
+
<?php endfor; ?>
|
228 |
+
</div>
|
229 |
+
</div>
|
230 |
+
</div>
|
231 |
+
|
232 |
+
<div class='apsl-settings'>
|
233 |
+
<div class='apsl-text-settings'>
|
234 |
+
<div class="apsl-label"><?php _e('Text Settings', APSL_TEXT_DOMAIN ); ?> <span class='apsl_show_hide'><i class="fa fa-caret-down"></i></span> </div>
|
235 |
+
<div class='apsl_network_settings_wrapper' style='display:none'>
|
236 |
+
<p class='apsl-title-text-field'>
|
237 |
+
<span><?php _e('Login text:', APSL_TEXT_DOMAIN ); ?></span> <input type='text' name='apsl_title_text_field' id='apsl-title-text' value='<?php if(isset($options['apsl_title_text_field']) && $options['apsl_title_text_field'] !=''){ echo $options['apsl_title_text_field']; } ?>' />
|
238 |
+
</p>
|
239 |
+
</div>
|
240 |
+
</div>
|
241 |
+
</div>
|
242 |
+
|
243 |
+
</div>
|
244 |
+
|
245 |
+
|
246 |
+
<!-- how to use section -->
|
247 |
+
<div class='apsl-tab-contents' id='tab-apsl-how-to-use' style="display:none">
|
248 |
+
<?php include(APSL_PLUGIN_DIR.'inc/backend/how-to-use.php'); ?>
|
249 |
+
</div>
|
250 |
+
|
251 |
+
<!-- about section -->
|
252 |
+
<div class='apsl-tab-contents' id='tab-apsl-about' style="display:none">
|
253 |
+
<?php include(APSL_PLUGIN_DIR.'inc/backend/about.php'); ?>
|
254 |
+
</div>
|
255 |
+
|
256 |
+
<!-- Save settings Button -->
|
257 |
+
<div class='apsl-save-settings'>
|
258 |
+
<?php wp_nonce_field( 'apsl_nonce_save_settings', 'apsl_settings_action' ); ?>
|
259 |
+
<input type='submit' class='apsl-submit-settings primary-button' name='apsl_save_settings' value='<?php _e('Save settings', APSL_TEXT_DOMAIN ); ?>' />
|
260 |
+
</div>
|
261 |
+
|
262 |
+
<div class='apsl-restore-settings'>
|
263 |
+
<?php $nonce = wp_create_nonce( 'apsl-restore-default-settings-nonce' ); ?>
|
264 |
+
<a href="<?php echo admin_url().'admin-post.php?action=apsl_restore_default_settings&_wpnonce='.$nonce;?>" onclick="return confirm('<?php _e( 'Are you sure you want to restore default settings?',APSL_TEXT_DOMAIN ); ?>')"><input type="button" value="Restore Default Settings" class="apsl-reset-button button primary-button"/></a>
|
265 |
+
</div>
|
266 |
+
|
267 |
+
</div>
|
268 |
+
</div>
|
269 |
+
</div>
|
270 |
+
</div>
|
271 |
+
</div>
|
inc/backend/save-settings.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$apsl_settings= array();
|
3 |
+
|
4 |
+
if(isset($_POST['apsl_save_settings'])){
|
5 |
+
$apsl_settings['network_ordering'] = $_POST['network_ordering'];
|
6 |
+
|
7 |
+
//for facebook settings
|
8 |
+
foreach ($_POST['apsl_facebook_settings'] as $key => $value) {
|
9 |
+
$$key = $value;
|
10 |
+
}
|
11 |
+
$apsl_facebook_enable = isset($apsl_facebook_enable) ? $apsl_facebook_enable : '';
|
12 |
+
|
13 |
+
$facebook_parameters = array(
|
14 |
+
'apsl_facebook_enable' =>$apsl_facebook_enable,
|
15 |
+
'apsl_facebook_app_id' =>$apsl_facebook_app_id,
|
16 |
+
'apsl_facebook_app_secret'=>$apsl_facebook_app_secret
|
17 |
+
);
|
18 |
+
$apsl_settings['apsl_facebook_settings'] = $facebook_parameters;
|
19 |
+
|
20 |
+
//for twitter settings
|
21 |
+
foreach ($_POST['apsl_twitter_settings'] as $key => $value) {
|
22 |
+
$$key = $value;
|
23 |
+
}
|
24 |
+
$apsl_twitter_enable = isset($apsl_twitter_enable) ? $apsl_twitter_enable : '';
|
25 |
+
|
26 |
+
$twitter_parameters = array(
|
27 |
+
'apsl_twitter_enable' =>$apsl_twitter_enable,
|
28 |
+
'apsl_twitter_api_key' =>$apsl_twitter_api_key,
|
29 |
+
'apsl_twitter_api_secret'=>$apsl_twitter_api_secret
|
30 |
+
);
|
31 |
+
|
32 |
+
$apsl_settings['apsl_twitter_settings'] = $twitter_parameters;
|
33 |
+
|
34 |
+
//for google settings
|
35 |
+
foreach ($_POST['apsl_google_settings'] as $key => $value) {
|
36 |
+
$$key = $value;
|
37 |
+
}
|
38 |
+
$apsl_google_enable = isset($apsl_google_enable) ? $apsl_google_enable : '';
|
39 |
+
|
40 |
+
$google_parameters = array(
|
41 |
+
'apsl_google_enable' =>$apsl_google_enable,
|
42 |
+
'apsl_google_client_id' =>$apsl_google_client_id,
|
43 |
+
'apsl_google_client_secret'=>$apsl_google_client_secret
|
44 |
+
);
|
45 |
+
$apsl_settings['apsl_google_settings'] = $google_parameters;
|
46 |
+
|
47 |
+
$apsl_settings['apsl_enable_disable_plugin'] = $_POST['apsl_enable_disable_plugin'];
|
48 |
+
|
49 |
+
$display_options = array();
|
50 |
+
if(isset($_POST['apsl_display_options'])){
|
51 |
+
|
52 |
+
foreach ( $_POST['apsl_display_options'] as $key=>$value ){
|
53 |
+
$display_options[]=$value;
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
$apsl_settings['apsl_display_options'] =$display_options;
|
58 |
+
|
59 |
+
$apsl_settings['apsl_icon_theme'] = $_POST['apsl_icon_theme'];
|
60 |
+
|
61 |
+
$apsl_settings['apsl_title_text_field'] = $_POST['apsl_title_text_field'];
|
62 |
+
|
63 |
+
//for saving the settings
|
64 |
+
update_option( APSL_SETTINGS, $apsl_settings );
|
65 |
+
$_SESSION['apsl_message'] = __( 'Settings Saved Successfully.', APSL_TEXT_DOMAIN );
|
66 |
+
wp_redirect( admin_url().'admin.php?page='.APSL_TEXT_DOMAIN );
|
67 |
+
exit;
|
68 |
+
}
|
69 |
+
|
70 |
+
?>
|
inc/backend/widget.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') or die("No script kiddies please!");
|
3 |
+
/**
|
4 |
+
* Adds AccessPress Social Login Widget
|
5 |
+
*/
|
6 |
+
|
7 |
+
class APSL_Lite_Widget extends WP_Widget {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Register widget with WordPress.
|
11 |
+
*/
|
12 |
+
function __construct() {
|
13 |
+
parent::__construct(
|
14 |
+
'apsl_widget', // Base ID
|
15 |
+
__('AccessPress Social Login Lite', APSL_TEXT_DOMAIN ), // Name
|
16 |
+
array('description' => __('AccessPress Social Login Lite Widget', APSL_TEXT_DOMAIN )) // Args
|
17 |
+
);
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Back-end widget form.
|
22 |
+
*
|
23 |
+
* @see WP_Widget::form()
|
24 |
+
*
|
25 |
+
* @param array $instance Previously saved values from database.
|
26 |
+
*/
|
27 |
+
public function form($instance) {
|
28 |
+
|
29 |
+
if (isset($instance['title'])) {
|
30 |
+
$title = $instance['title'];
|
31 |
+
} else {
|
32 |
+
$title = '';
|
33 |
+
}
|
34 |
+
|
35 |
+
if (isset($instance['login_text'])) {
|
36 |
+
$login_text = $instance['login_text'];
|
37 |
+
} else {
|
38 |
+
$login_text = '';
|
39 |
+
}
|
40 |
+
|
41 |
+
?>
|
42 |
+
<p>
|
43 |
+
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title: ', APSL_TEXT_DOMAIN ); ?></label>
|
44 |
+
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>">
|
45 |
+
</p>
|
46 |
+
|
47 |
+
<p>
|
48 |
+
<label for="<?php echo $this->get_field_id('login_text'); ?>"><?php _e( 'Login Text: ', APSL_TEXT_DOMAIN ); ?></label>
|
49 |
+
<input class="widefat" id="<?php echo $this->get_field_id('login_text'); ?>" name="<?php echo $this->get_field_name('login_text'); ?>" type="text" value="<?php echo esc_attr($login_text); ?>">
|
50 |
+
</p>
|
51 |
+
|
52 |
+
<?php
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Front-end display of widget.
|
57 |
+
*
|
58 |
+
* @see WP_Widget::widget()
|
59 |
+
*
|
60 |
+
* @param array $args Widget arguments.
|
61 |
+
* @param array $instance Saved values from database.
|
62 |
+
*/
|
63 |
+
public function widget($args, $instance) {
|
64 |
+
echo $args['before_widget'];
|
65 |
+
if (!empty($instance['title'])) {
|
66 |
+
echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
|
67 |
+
}
|
68 |
+
global $post;
|
69 |
+
if(have_posts()){
|
70 |
+
$widget_flag = get_post_meta($post->ID, 'apsl_widget_flag', true);
|
71 |
+
}else{
|
72 |
+
$widget_flag=0;
|
73 |
+
}
|
74 |
+
if($widget_flag !='1'){
|
75 |
+
echo "<div class='apsl-widget'>";
|
76 |
+
echo do_shortcode("[apsl-login-lite login_text='{$instance['login_text']}']");
|
77 |
+
echo "</div>";
|
78 |
+
}
|
79 |
+
echo $args['after_widget'];
|
80 |
+
}
|
81 |
+
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Sanitize widget form values as they are saved.
|
85 |
+
*
|
86 |
+
* @see WP_Widget::update()
|
87 |
+
*
|
88 |
+
* @param array $new_instance Values just sent to be saved.
|
89 |
+
* @param array $old_instance Previously saved values from database.
|
90 |
+
*
|
91 |
+
* @return array Updated safe values to be saved.
|
92 |
+
*/
|
93 |
+
public function update($new_instance, $old_instance) {
|
94 |
+
$instance = array();
|
95 |
+
$instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
|
96 |
+
$instance['login_text'] = (!empty($new_instance['login_text']) ) ? strip_tags($new_instance['login_text']) : '';
|
97 |
+
return $instance;
|
98 |
+
}
|
99 |
+
|
100 |
+
|
101 |
+
|
102 |
+
}
|
103 |
+
|
104 |
+
?>
|
inc/frontend/login_check.php
ADDED
@@ -0,0 +1,492 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php defined( 'ABSPATH' ) or die( "No script kiddies please!" ); ?>
|
2 |
+
<?php
|
3 |
+
|
4 |
+
if( !class_exists( 'APSL_Lite_Login_Check_Class' ) ){
|
5 |
+
class APSL_Lite_Login_Check_Class{
|
6 |
+
|
7 |
+
//constructor
|
8 |
+
function __construct(){
|
9 |
+
if(isset($_GET['apsl_login_id'])){
|
10 |
+
$exploder=explode( '_', $_GET['apsl_login_id'] );
|
11 |
+
switch($exploder[0]){
|
12 |
+
case 'facebook':
|
13 |
+
include( APSL_PLUGIN_DIR.'facebook/src/facebook.php' );
|
14 |
+
$this->onFacebookLogin();
|
15 |
+
break;
|
16 |
+
|
17 |
+
case 'twitter':
|
18 |
+
include( APSL_PLUGIN_DIR.'twitter/OAuth.php' );
|
19 |
+
include( APSL_PLUGIN_DIR.'twitter/twitteroauth.php' );
|
20 |
+
$this->onTwitterLogin();
|
21 |
+
break;
|
22 |
+
|
23 |
+
case 'google':
|
24 |
+
include( APSL_PLUGIN_DIR.'google/Client.php' );
|
25 |
+
include( APSL_PLUGIN_DIR.'google/Service/Plus.php' );
|
26 |
+
$this->onGoogleLogin();
|
27 |
+
break;
|
28 |
+
|
29 |
+
}
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
//for facebook login
|
34 |
+
function onFacebookLogin(){
|
35 |
+
$response = new stdClass();
|
36 |
+
$result = $this->facebookLogin($response);
|
37 |
+
if(isset($result->status) == 'SUCCESS'){
|
38 |
+
$row = $this->getUserByMail( $result->email );
|
39 |
+
$options = get_option( APSL_SETTINGS );
|
40 |
+
|
41 |
+
if(!$row){
|
42 |
+
$this->creatUser($result->username, $result->email);
|
43 |
+
$row = $this->getUserByMail( $result->email);
|
44 |
+
update_user_meta($row->ID, 'email', $result->email);
|
45 |
+
update_user_meta($row->ID, 'first_name', $result->first_name);
|
46 |
+
update_user_meta($row->ID, 'last_name', $result->last_name);
|
47 |
+
update_user_meta($row->ID, 'deuid', $result->deuid);
|
48 |
+
update_user_meta($row->ID, 'deutype', $result->deutype);
|
49 |
+
update_user_meta($row->ID, 'deuimage', $result->deuimage);
|
50 |
+
wp_update_user( array ('ID' => $row->ID, 'display_name' => $result->first_name.' '.$result->last_name, 'role'=>$options['apsl_user_role']) ) ;
|
51 |
+
}
|
52 |
+
$this->loginUser($row->ID);
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
|
57 |
+
|
58 |
+
function facebookLogin(){
|
59 |
+
$request = $_REQUEST;
|
60 |
+
$site = $this->siteUrl();
|
61 |
+
$callBackUrl= $this->callBackUrl();
|
62 |
+
$response = new stdClass();
|
63 |
+
$exploder=explode('_', $_GET['apsl_login_id']);
|
64 |
+
$action = $exploder[1];
|
65 |
+
$options = get_option( APSL_SETTINGS );
|
66 |
+
$config = array(
|
67 |
+
'appId' => $options['apsl_facebook_settings']['apsl_facebook_app_id'],
|
68 |
+
'secret' => $options['apsl_facebook_settings']['apsl_facebook_app_secret']
|
69 |
+
);
|
70 |
+
|
71 |
+
$facebook = new Facebook($config);
|
72 |
+
$encoded_url = isset($_GET['redirect_to']) ? $_GET['redirect_to'] : '';
|
73 |
+
|
74 |
+
if(isset($encoded_url) && $encoded_url !=''){
|
75 |
+
$callback =$callBackUrl.'apsl_login_id'.'=facebook_check&redirect_to='.$encoded_url;
|
76 |
+
}else{
|
77 |
+
$callback =$callBackUrl.'apsl_login_id'.'=facebook_check';
|
78 |
+
}
|
79 |
+
|
80 |
+
if ($action == 'login'){
|
81 |
+
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$callback, 'scope'=>'email'));
|
82 |
+
$this->redirect($loginUrl);
|
83 |
+
exit();
|
84 |
+
}else{
|
85 |
+
if(isset($_REQUEST['error'])){
|
86 |
+
$response->status = 'ERROR';
|
87 |
+
$response->error_code = 2;
|
88 |
+
$response->error_message= 'INVALID AUTHORIZATION';
|
89 |
+
return $response;
|
90 |
+
die();
|
91 |
+
}
|
92 |
+
|
93 |
+
$user = $facebook->getUser();
|
94 |
+
if ($user){
|
95 |
+
try {// Proceed knowing you have a logged in user who's authenticated.
|
96 |
+
$user_profile = $facebook->api('/me');
|
97 |
+
} catch (FacebookApiException $e) {
|
98 |
+
error_log($e);
|
99 |
+
$user = null;
|
100 |
+
}
|
101 |
+
}
|
102 |
+
if($user!=null){
|
103 |
+
$response->status = 'SUCCESS';
|
104 |
+
$response->deuid = $user_profile['id'];
|
105 |
+
$response->deutype = 'facebook';
|
106 |
+
$response->first_name = $user_profile['first_name'];
|
107 |
+
$response->last_name = $user_profile['last_name'];
|
108 |
+
$response->email = $user_profile['email'];
|
109 |
+
$response->username = $user_profile['email'];
|
110 |
+
$headers = get_headers('https://graph.facebook.com/'.$user_profile['id'].'/picture',1);
|
111 |
+
|
112 |
+
// just a precaution, check whether the header isset...
|
113 |
+
if(isset($headers['Location'])) {
|
114 |
+
$response->deuimage = $headers['Location']; // string
|
115 |
+
} else {
|
116 |
+
$response->deuimage = false; // nothing there? .. weird, but okay!
|
117 |
+
}
|
118 |
+
$response->error_message = '';
|
119 |
+
}else{
|
120 |
+
$response->status = 'ERROR';
|
121 |
+
$response->error_code = 2;
|
122 |
+
$response->error_message= 'INVALID AUTHORIZATION';
|
123 |
+
}
|
124 |
+
}
|
125 |
+
return $response;
|
126 |
+
}
|
127 |
+
|
128 |
+
|
129 |
+
//for twitter login
|
130 |
+
function onTwitterLogin(){
|
131 |
+
$result = $this->twitterLogin();
|
132 |
+
if(isset($result->status) == 'SUCCESS'){
|
133 |
+
$row = $this->getUserByMail( $result->email);
|
134 |
+
$options = get_option( APSL_SETTINGS );
|
135 |
+
if(!$row){
|
136 |
+
$this->creatUser($result->username, $result->email);
|
137 |
+
$row = $this->getUserByMail( $result->email);
|
138 |
+
update_user_meta($row->ID, 'email', $result->email);
|
139 |
+
update_user_meta($row->ID, 'first_name', $result->first_name);
|
140 |
+
update_user_meta($row->ID, 'last_name', $result->last_name);
|
141 |
+
update_user_meta($row->ID, 'deuid', $result->deuid);
|
142 |
+
update_user_meta($row->ID, 'deutype', $result->deutype);
|
143 |
+
update_user_meta($row->ID, 'deuimage', $result->deuimage);
|
144 |
+
wp_update_user( array ('ID' => $row->ID, 'display_name' => $result->first_name.' '.$result->last_name, 'role'=>$options['apsl_user_role']) ) ;
|
145 |
+
}
|
146 |
+
$this->loginUser($row->ID);
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
function twitterLogin(){
|
151 |
+
$request = $_REQUEST;
|
152 |
+
$site = $this->siteUrl();
|
153 |
+
$callBackUrl= $this->callBackUrl();
|
154 |
+
$response = new stdClass();
|
155 |
+
$exploder=explode('_', $_GET['apsl_login_id']);
|
156 |
+
$action = $exploder[1];
|
157 |
+
@session_start();
|
158 |
+
$options = get_option( APSL_SETTINGS );
|
159 |
+
if ($action == 'login'){
|
160 |
+
// Get identity from user and redirect browser to OpenID Server
|
161 |
+
if(!isset($request['oauth_token']) || $request['oauth_token']==''){
|
162 |
+
$twitterObj = new TwitterOAuth($options['apsl_twitter_settings']['apsl_twitter_api_key'], $options['apsl_twitter_settings']['apsl_twitter_api_secret'] );
|
163 |
+
$encoded_url = isset($_GET['redirect_to']) ? $_GET['redirect_to'] : '';
|
164 |
+
if(isset($encoded_url) && $encoded_url !=''){
|
165 |
+
$callback =$callBackUrl.'apsl_login_id'.'=twitter_check&redirect_to='.$encoded_url;
|
166 |
+
}else{
|
167 |
+
$callback =$callBackUrl.'apsl_login_id'.'=twitter_check';
|
168 |
+
}
|
169 |
+
|
170 |
+
$request_token = $twitterObj->getRequestToken($callback);
|
171 |
+
$_SESSION['oauth_twitter'] = array();
|
172 |
+
|
173 |
+
/* Save temporary credentials to session. */
|
174 |
+
$_SESSION['oauth_twitter']['oauth_token'] = $token = $request_token['oauth_token'];
|
175 |
+
$_SESSION['oauth_twitter']['oauth_token_secret'] = $request_token['oauth_token_secret'];
|
176 |
+
|
177 |
+
/* If last connection failed don't display authorization link. */
|
178 |
+
switch ($twitterObj->http_code) {
|
179 |
+
case 200:
|
180 |
+
try{
|
181 |
+
$url = $twitterObj->getAuthorizeUrl($token);
|
182 |
+
$this->redirect($url);
|
183 |
+
}catch(Exception $e){
|
184 |
+
$response->status = 'ERROR';
|
185 |
+
$response->error_code = 2;
|
186 |
+
$response->error_message= 'Could not get AuthorizeUrl.';
|
187 |
+
}
|
188 |
+
break;
|
189 |
+
|
190 |
+
default:
|
191 |
+
$response->status = 'ERROR';
|
192 |
+
$response->error_code = 2;
|
193 |
+
$response->error_message= 'Could not connect to Twitter. Refresh the page or try again later.';
|
194 |
+
break;
|
195 |
+
}
|
196 |
+
|
197 |
+
}else{
|
198 |
+
$response->status = 'ERROR';
|
199 |
+
$response->error_code = 2;
|
200 |
+
$response->error_message= 'INVALID AUTHORIZATION';
|
201 |
+
}
|
202 |
+
}else if(isset($request['oauth_token']) && isset($request['oauth_verifier'])){
|
203 |
+
|
204 |
+
/* Create TwitteroAuth object with app key/secret and token key/secret from default phase */
|
205 |
+
$twitterObj = new TwitterOAuth($options['apsl_twitter_settings']['apsl_twitter_api_key'], $options['apsl_twitter_settings']['apsl_twitter_api_secret'], $_SESSION['oauth_twitter']['oauth_token'], $_SESSION['oauth_twitter']['oauth_token_secret']);
|
206 |
+
|
207 |
+
/* Remove no longer needed request tokens */
|
208 |
+
unset($_SESSION['oauth_twitter']);
|
209 |
+
try{
|
210 |
+
$access_token = $twitterObj->getAccessToken($request['oauth_verifier']);
|
211 |
+
/* If HTTP response is 200 continue otherwise send to connect page to retry */
|
212 |
+
if (200 == $twitterObj->http_code) {
|
213 |
+
$user_profile = $twitterObj->get('users/show',array('screen_name'=>$access_token['screen_name'],'include_entities'=>true));
|
214 |
+
|
215 |
+
/* Request access twitterObj from twitter */
|
216 |
+
$response->status = 'SUCCESS';
|
217 |
+
$response->deuid = $user_profile->id;
|
218 |
+
$response->deutype = 'twitter';
|
219 |
+
$response->name = explode(' ', $user_profile->name, 2);
|
220 |
+
$response->first_name = $response->name[0];
|
221 |
+
$response->last_name = (isset($response->name[1]))?$response->name[1]:'';
|
222 |
+
$response->deuimage = $user_profile->profile_image_url;
|
223 |
+
$response->email = $user_profile->screen_name.'@twitter.com';
|
224 |
+
$response->username = $user_profile->screen_name.'@twitter.com';
|
225 |
+
$response->error_message = '';
|
226 |
+
}else{
|
227 |
+
$response->status = 'ERROR';
|
228 |
+
$response->error_code = 2;
|
229 |
+
$response->error_message= 'Could not connect to Twitter. Refresh the page or try again later.';
|
230 |
+
}
|
231 |
+
}catch(Exception $e){
|
232 |
+
$response->status = 'ERROR';
|
233 |
+
$response->error_code = 2;
|
234 |
+
$response->error_message= 'Could not get AccessToken.';
|
235 |
+
}
|
236 |
+
}else{ // User Canceled your Request
|
237 |
+
$response->status = 'ERROR';
|
238 |
+
$response->error_code = 1;
|
239 |
+
$response->error_message= "USER CANCELED REQUEST";
|
240 |
+
}
|
241 |
+
return $response;
|
242 |
+
}
|
243 |
+
|
244 |
+
//for google login
|
245 |
+
function onGoogleLogin(){
|
246 |
+
$result = $this->GoogleLogin();
|
247 |
+
if(isset($result->status) == 'SUCCESS'){
|
248 |
+
$row = $this->getUserByMail( $result->email);
|
249 |
+
$options = get_option( APSL_SETTINGS );
|
250 |
+
if(!$row){
|
251 |
+
$this->creatUser($result->username, $result->email);
|
252 |
+
$row = $this->getUserByMail($result->email);
|
253 |
+
update_user_meta($row->ID, 'email', $result->email);
|
254 |
+
update_user_meta($row->ID, 'first_name', $result->first_name);
|
255 |
+
update_user_meta($row->ID, 'last_name', $result->last_name);
|
256 |
+
update_user_meta($row->ID, 'deuid', $result->deuid);
|
257 |
+
update_user_meta($row->ID, 'deutype', $result->deutype);
|
258 |
+
wp_update_user( array ('ID' => $row->ID, 'display_name' => $result->first_name, 'role'=>$options['apsl_user_role']) ) ;
|
259 |
+
}
|
260 |
+
$this->loginUser($row->ID);
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
function GoogleLogin(){
|
265 |
+
$post = $_POST;
|
266 |
+
$get = $_GET;
|
267 |
+
$request = $_REQUEST;
|
268 |
+
$site = $this->siteUrl();
|
269 |
+
$callBackUrl= $this->callBackUrl();
|
270 |
+
$options = get_option( APSL_SETTINGS );
|
271 |
+
$response = new stdClass();
|
272 |
+
$a = explode('_', $_GET['apsl_login_id']);
|
273 |
+
$action = $a[1];
|
274 |
+
$client_id = $options['apsl_google_settings']['apsl_google_client_id'];
|
275 |
+
$client_secret = $options['apsl_google_settings']['apsl_google_client_secret'];
|
276 |
+
|
277 |
+
$encoded_url = isset($_GET['redirect_to']) ? $_GET['redirect_to'] : '';
|
278 |
+
if(isset($encoded_url) && $encoded_url !=''){
|
279 |
+
$callback =$callBackUrl.'apsl_login_id'.'=google_check';
|
280 |
+
}else{
|
281 |
+
$callback =$callBackUrl.'apsl_login_id'.'=google_check';
|
282 |
+
}
|
283 |
+
|
284 |
+
$redirect_uri = $callback;
|
285 |
+
$client = new Google_Client;
|
286 |
+
$client->setClientId($client_id);
|
287 |
+
$client->setClientSecret($client_secret);
|
288 |
+
$client->setRedirectUri($redirect_uri);
|
289 |
+
$client->addScope("https://www.googleapis.com/auth/plus.profile.emails.read");
|
290 |
+
$service = new Google_Service_Plus($client);
|
291 |
+
|
292 |
+
if ($action == 'login'){// Get identity from user and redirect browser to OpenID Server
|
293 |
+
if(!(isset($_SESSION['access_token']) && $_SESSION['access_token'])){
|
294 |
+
$authUrl = $client->createAuthUrl();
|
295 |
+
$this->redirect($authUrl);
|
296 |
+
die();
|
297 |
+
}else{
|
298 |
+
$this->redirect($redirect_uri);
|
299 |
+
die();
|
300 |
+
}
|
301 |
+
|
302 |
+
}elseif(isset($_GET['code'])){ // Perform HTTP Request to OpenID server to validate key
|
303 |
+
$client->authenticate($_GET['code']);
|
304 |
+
$_SESSION['access_token'] = $client->getAccessToken();
|
305 |
+
$this->redirect($redirect_uri);
|
306 |
+
die();
|
307 |
+
}elseif(isset($_SESSION['access_token']) && $_SESSION['access_token']){
|
308 |
+
$client->setAccessToken($_SESSION['access_token']);
|
309 |
+
try{
|
310 |
+
$user = $service->people->get("me", array());
|
311 |
+
}catch(Exception $fault){
|
312 |
+
unset($_SESSION['access_token']);
|
313 |
+
$ref_object = $this->accessProtected($fault, 'errors');
|
314 |
+
echo $ref_object[0]['message']." Please notify about this error to the Site Admin.";
|
315 |
+
die();
|
316 |
+
}
|
317 |
+
|
318 |
+
if(!empty($user)){
|
319 |
+
if(!empty($user->emails)){
|
320 |
+
$response->email = $user->emails[0]->value;
|
321 |
+
$response->username = $user->emails[0]->value;
|
322 |
+
$response->first_name = $user->name->givenName;
|
323 |
+
$response->last_name = $user->name->familyName;
|
324 |
+
$response->deuid = $user->emails[0]->value;
|
325 |
+
$response->deutype = 'google';
|
326 |
+
$response->status = 'SUCCESS';
|
327 |
+
$response->error_message = '';
|
328 |
+
}else{
|
329 |
+
$response->status = 'ERROR';
|
330 |
+
$response->error_code = 2;
|
331 |
+
$response->error_message = "INVALID AUTHORIZATION";
|
332 |
+
}
|
333 |
+
}else{// Signature Verification Failed
|
334 |
+
$response->status = 'ERROR';
|
335 |
+
$response->error_code = 2;
|
336 |
+
$response->error_message = "INVALID AUTHORIZATION";
|
337 |
+
}
|
338 |
+
}elseif ($get['openid_mode'] == 'cancel'){ // User Canceled your Request
|
339 |
+
$response->status = 'ERROR';
|
340 |
+
$response->error_code = 1;
|
341 |
+
$response->error_message = "USER CANCELED REQUEST";
|
342 |
+
}else{ // User failed to login
|
343 |
+
$response->status = 'ERROR';
|
344 |
+
$response->error_code = 3;
|
345 |
+
$response->error_message = "USER LOGIN FAIL";
|
346 |
+
}
|
347 |
+
return $response;
|
348 |
+
}
|
349 |
+
|
350 |
+
|
351 |
+
//other remaining methods
|
352 |
+
function siteUrl(){
|
353 |
+
return site_url();
|
354 |
+
}
|
355 |
+
|
356 |
+
function callBackUrl(){
|
357 |
+
$url = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"];
|
358 |
+
if(strpos($url, '?')===false){
|
359 |
+
$url .= '?';
|
360 |
+
}else{
|
361 |
+
$url .= '&';
|
362 |
+
}
|
363 |
+
return $url;
|
364 |
+
}
|
365 |
+
|
366 |
+
//function to return json values from social media urls
|
367 |
+
function get_json_values( $url ){
|
368 |
+
$response = wp_remote_get( $url);
|
369 |
+
$json_response = wp_remote_retrieve_body( $response );
|
370 |
+
return $json_response;
|
371 |
+
}
|
372 |
+
|
373 |
+
function redirect($redirect){
|
374 |
+
if (headers_sent()){ // Use JavaScript to redirect if content has been previously sent (not recommended, but safe)
|
375 |
+
echo '<script language="JavaScript" type="text/javascript">window.location=\'';
|
376 |
+
echo $redirect;
|
377 |
+
echo '\';</script>';
|
378 |
+
}else{ // Default Header Redirect
|
379 |
+
header('Location: ' . $redirect);
|
380 |
+
}
|
381 |
+
exit;
|
382 |
+
}
|
383 |
+
|
384 |
+
function updateUser($username, $email){
|
385 |
+
$row = $this->getUserByUsername ($username);
|
386 |
+
if($row && $email!='' && $row->user_email!=$email){
|
387 |
+
$row = (array) $row;
|
388 |
+
$row['user_email'] = $email;
|
389 |
+
wp_update_user($row);
|
390 |
+
}
|
391 |
+
}
|
392 |
+
|
393 |
+
function getUserByMail($email){
|
394 |
+
global $wpdb;
|
395 |
+
$row = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE user_email = '$email'");
|
396 |
+
if($row){
|
397 |
+
return $row;
|
398 |
+
}
|
399 |
+
return false;
|
400 |
+
}
|
401 |
+
|
402 |
+
function getUserByUsername ($username){
|
403 |
+
global $wpdb;
|
404 |
+
$row = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE user_login = '$username'");
|
405 |
+
if($row){
|
406 |
+
return $row;
|
407 |
+
}
|
408 |
+
return false;
|
409 |
+
}
|
410 |
+
|
411 |
+
function creatUser($user_name, $user_email){
|
412 |
+
$random_password = wp_generate_password(12, false);
|
413 |
+
$user_id = wp_create_user( $user_name, $random_password, $user_email );
|
414 |
+
wp_new_user_notification( $user_id, $random_password );
|
415 |
+
return $user_id;
|
416 |
+
}
|
417 |
+
|
418 |
+
function set_cookies($user_id = 0, $remember = true) {
|
419 |
+
if (!function_exists('wp_set_auth_cookie')){
|
420 |
+
return false;
|
421 |
+
}
|
422 |
+
if (!$user_id){
|
423 |
+
return false;
|
424 |
+
}
|
425 |
+
wp_clear_auth_cookie();
|
426 |
+
wp_set_auth_cookie($user_id, $remember);
|
427 |
+
wp_set_current_user($user_id);
|
428 |
+
return true;
|
429 |
+
}
|
430 |
+
|
431 |
+
function loginUser($user_id){
|
432 |
+
$reauth = empty($_REQUEST['reauth']) ? false : true;
|
433 |
+
if ( $reauth )
|
434 |
+
wp_clear_auth_cookie();
|
435 |
+
|
436 |
+
if ( isset( $_REQUEST['redirect_to'] ) ) {
|
437 |
+
$redirect_to = $_REQUEST['redirect_to'];
|
438 |
+
// Redirect to https if user wants ssl
|
439 |
+
if ( isset($secure_cookie) && false !== strpos($redirect_to, 'wp-admin') )
|
440 |
+
$redirect_to = preg_replace('|^http://|', 'https://', $redirect_to);
|
441 |
+
} else {
|
442 |
+
$redirect_to = admin_url();
|
443 |
+
}
|
444 |
+
|
445 |
+
if ( !isset($secure_cookie) && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
|
446 |
+
$secure_cookie = false;
|
447 |
+
|
448 |
+
// If cookies are disabled we can't log in even with a valid user+pass
|
449 |
+
if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
|
450 |
+
$user = new WP_Error('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
|
451 |
+
else
|
452 |
+
$user = wp_signon('', isset($secure_cookie));
|
453 |
+
|
454 |
+
if(!$this->set_cookies($user_id)){
|
455 |
+
return false;
|
456 |
+
}
|
457 |
+
|
458 |
+
$requested_redirect_to = isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : site_url();
|
459 |
+
$redirect_to = apply_filters( 'login_redirect', $redirect_to, $requested_redirect_to, $user );
|
460 |
+
wp_safe_redirect( $redirect_to );
|
461 |
+
exit();
|
462 |
+
}
|
463 |
+
|
464 |
+
//returns the current page url
|
465 |
+
function curPageURL() {
|
466 |
+
$pageURL = 'http';
|
467 |
+
if ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) {
|
468 |
+
$pageURL .= "s";
|
469 |
+
}
|
470 |
+
$pageURL .= "://";
|
471 |
+
if ( $_SERVER["SERVER_PORT"] != "80" ) {
|
472 |
+
$pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
|
473 |
+
} else {
|
474 |
+
$pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
|
475 |
+
}
|
476 |
+
return $pageURL;
|
477 |
+
}
|
478 |
+
|
479 |
+
//function to access the protected object properties
|
480 |
+
function accessProtected($obj, $prop) {
|
481 |
+
$reflection = new ReflectionClass($obj);
|
482 |
+
$property = $reflection->getProperty($prop);
|
483 |
+
$property->setAccessible(true);
|
484 |
+
return $property->getValue($obj);
|
485 |
+
}
|
486 |
+
} //termination of a class
|
487 |
+
|
488 |
+
} //end of if statement
|
489 |
+
|
490 |
+
$apsl_login_check = new APSL_Lite_Login_Check_Class();
|
491 |
+
|
492 |
+
?>
|
inc/frontend/login_integration.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $options = get_option( APSL_SETTINGS ); ?>
|
2 |
+
|
3 |
+
<div class='apsl-login-networks theme-<?php echo $options['apsl_icon_theme']; ?> clearfix'>
|
4 |
+
<span class='apsl-login-new-text'><?php echo $options['apsl_title_text_field']; ?></span>
|
5 |
+
<?php if( isset($_REQUEST['error']) || isset($_REQUEST['denied']) ){ ?>
|
6 |
+
<div class='apsl-error'>
|
7 |
+
<?php _e('You have Access Denied. Please authorize the app to login.', APSL_TEXT_DOMAIN ); ?>
|
8 |
+
</div>
|
9 |
+
<?php } ?>
|
10 |
+
|
11 |
+
<div class='social-networks'>
|
12 |
+
<?php foreach($options['network_ordering'] as $key=>$value): ?>
|
13 |
+
<?php if($options["apsl_{$value}_settings"]["apsl_{$value}_enable"]==='enable'){ ?>
|
14 |
+
<a href="?apsl_login_id=<?php echo $value; ?>_login" title='<?php _e('Login with', APSL_TEXT_DOMAIN ); echo ' '.$value; ?>' >
|
15 |
+
<div class="apsl-icon-block icon-<?php echo $value; ?> clearfix">
|
16 |
+
<i class="fa fa-<?php echo $value; ?>"></i>
|
17 |
+
</div>
|
18 |
+
</a>
|
19 |
+
<?php } ?>
|
20 |
+
<?php endforeach; ?>
|
21 |
+
</div>
|
22 |
+
</div>
|
inc/frontend/shortcode.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); ?>
|
2 |
+
<?php
|
3 |
+
if (is_user_logged_in()){
|
4 |
+
global $current_user;
|
5 |
+
$user_info = "<span class='display-name'>{$current_user->data->display_name}</span> ";
|
6 |
+
$user_info .= get_avatar( $current_user->ID, 20 );
|
7 |
+
?><div class="user-login">Welcome <b><?php echo $user_info;?></b> | <a href="<?php echo wp_logout_url(); ?>" title="Logout">Logout</a></div>
|
8 |
+
<?php
|
9 |
+
}else{
|
10 |
+
?>
|
11 |
+
<?php $options = get_option( APSL_SETTINGS ); ?>
|
12 |
+
<?php
|
13 |
+
$current_url = APSL_Lite_Login_Check_Class::curPageURL();
|
14 |
+
$encoded_url = urlencode($current_url);
|
15 |
+
?>
|
16 |
+
|
17 |
+
<?php $theme = $options['apsl_icon_theme']; ?>
|
18 |
+
|
19 |
+
<div class='apsl-login-networks theme-<?php echo $theme; ?> clearfix'>
|
20 |
+
<?php if(isset($attr['login_text']) && $attr['login_text']!=''){ ?>
|
21 |
+
<span class='apsl-login-new-text'><?php echo $attr['login_text']; ?></span>
|
22 |
+
<?php } ?>
|
23 |
+
<?php if(isset($_REQUEST['error']) || isset($_REQUEST['denied'])){ ?>
|
24 |
+
<div class='apsl-error'><?php _e('You have Access Denied. Please authorize the app to login.', APSL_TEXT_DOMAIN ); ?></div>
|
25 |
+
<?php } ?>
|
26 |
+
<div class='social-networks'>
|
27 |
+
<?php foreach($options['network_ordering'] as $key=>$value): ?>
|
28 |
+
<?php if($options["apsl_{$value}_settings"]["apsl_{$value}_enable"]==='enable'){ ?>
|
29 |
+
<a href="?apsl_login_id=<?php echo $value; ?>_login&redirect_to=<?php echo $encoded_url; ?>" title='<?php _e('Login with', APSL_TEXT_DOMAIN ); echo ' '.$value; ?>'>
|
30 |
+
<div class="apsl-icon-block icon-<?php echo $value; ?>">
|
31 |
+
<i class="fa fa-<?php echo $value; ?>"></i>
|
32 |
+
</div>
|
33 |
+
</a>
|
34 |
+
<?php } ?>
|
35 |
+
<?php endforeach; ?>
|
36 |
+
</div>
|
37 |
+
</div>
|
38 |
+
<?php } ?>
|
index.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//silence is golden
|
3 |
+
|
4 |
+
?>
|
js/backend.js
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function($){
|
2 |
+
//for sorting the social networks
|
3 |
+
$('.network-settings').sortable({
|
4 |
+
containment: "parent",
|
5 |
+
});
|
6 |
+
|
7 |
+
//for the tabs
|
8 |
+
$('.apsl-settings-tab').click(function(){
|
9 |
+
$( '.apsl-settings-tab' ).removeClass( 'apsl-active-tab' );
|
10 |
+
$(this).addClass( 'apsl-active-tab' );
|
11 |
+
var tab_id = 'tab-'+$(this).attr('id');
|
12 |
+
$('.apsl-tab-contents').hide();
|
13 |
+
$('#'+tab_id).show();
|
14 |
+
});
|
15 |
+
|
16 |
+
|
17 |
+
$('.apsl-label').click(function(){
|
18 |
+
$(this).closest('.apsl-settings').find('.apsl_network_settings_wrapper').toggle('slow', function(){
|
19 |
+
if ($(this).closest('.apsl-settings').find('.apsl_network_settings_wrapper').is(':visible')) {
|
20 |
+
$(this).closest('.apsl-settings').find('.apsl_show_hide i').removeClass('fa-caret-down');
|
21 |
+
$(this).closest('.apsl-settings').find('.apsl_show_hide i').addClass('fa-caret-up');
|
22 |
+
} else {
|
23 |
+
$(this).closest('.apsl-settings').find('.apsl_show_hide i').removeClass('fa-caret-up');
|
24 |
+
$(this).closest('.apsl-settings').find('.apsl_show_hide i').addClass('fa-caret-down');
|
25 |
+
}
|
26 |
+
|
27 |
+
});
|
28 |
+
});
|
29 |
+
|
30 |
+
});
|
js/frontend.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function($){
|
2 |
+
$('.show-apsl-container').on('click', function(e){
|
3 |
+
e.preventDefault();
|
4 |
+
$('.apsl-container').slideToggle();
|
5 |
+
});
|
6 |
+
});
|
readme.txt
ADDED
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== AccessPress Social Login Lite ===
|
2 |
+
Contributors: Access Keys
|
3 |
+
Tags: social, login, social login, facebook, twitter, google, social connect, social network login, register, login with, signin, oauth, authorize, oauth
|
4 |
+
Donate link: http://accesspressthemes.com/donation/
|
5 |
+
Requires at least: 3.8
|
6 |
+
Tested up to: 4.2
|
7 |
+
Stable tag: 1.0.0
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
No WordPress account and user credentials to remember, login using any of the most popular 3 social media accounts!
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
AccessPress <strong>Social Login<strong> lite - is a perfect <strong>Free WordPress plugin</strong> to allow your website users to register/login to the website using one of their favorite social website accounts.
|
15 |
+
|
16 |
+
As a website owner you can easily configure which social accounts to enable/disable for login, which areas of the website social login should be displayed (login, registration, comments). Also you can select the social login buttons/icons from 4 beautifully designed templates to fit them with your website's overall design/theme. Your website will fetch real data of the user's social profile!
|
17 |
+
|
18 |
+
Your website visitors, can choose one of their favorite social accounts to login into your website. No need to fill up the long registration forms and remember many login credentials.
|
19 |
+
|
20 |
+
Plugin setup is as easy as 1, 2, 3!
|
21 |
+
|
22 |
+
<strong>Select from the most popular 3 social media<strong>
|
23 |
+
configure which social media option to display at login area.
|
24 |
+
|
25 |
+
<strong>Easy setup</strong>
|
26 |
+
Just put a few authorization details for each option you want to enable. Select which login area you'd like to show the social login option ( login, registration, comments).
|
27 |
+
|
28 |
+
<strong>Beautify your login page</strong>
|
29 |
+
Select from 4 beautiful designs of social login buttons/icons.
|
30 |
+
|
31 |
+
|
32 |
+
<strong>Your website visitors can now login using one of their favorite social account login. Easy, quick and convenient.<strong>
|
33 |
+
|
34 |
+
= Free Features: =
|
35 |
+
* Login with the most popular 3 social media.
|
36 |
+
* Configure each social accounts by setting up a few authorization details.
|
37 |
+
* Configure which social media account to enable/disable in the login area.
|
38 |
+
* Configure which area of the website the social login should be displayed (eg. Registration, login, comments).
|
39 |
+
* Option to choose from 4 beautifully designed social login buttons/icons.
|
40 |
+
* Option to configure the order of the social login buttons.
|
41 |
+
* Use shortcode anywhere in the post/page to display social login.
|
42 |
+
* Use widget to display social login.
|
43 |
+
* Option to enable / disable social login (completely).
|
44 |
+
* One click registration/login.
|
45 |
+
* Ability to send the login details to the user's email.
|
46 |
+
* Integrate with the wordpress users.
|
47 |
+
* Nice and easy to use admin interface for site admin to manage, configure the plugin.
|
48 |
+
* Translation ready.
|
49 |
+
* <strong>Support</strong>
|
50 |
+
- Dedicated email, forum support.
|
51 |
+
|
52 |
+
= Supported Networks: =
|
53 |
+
* Facebook
|
54 |
+
* Twitter
|
55 |
+
* Google
|
56 |
+
|
57 |
+
|
58 |
+
= Premium Features: =
|
59 |
+
|
60 |
+
For more features upgrade to PRO version
|
61 |
+
|
62 |
+
Upgrade to PRO version for:
|
63 |
+
★ 9 social network support
|
64 |
+
- Facebook
|
65 |
+
- Twitter
|
66 |
+
- Google
|
67 |
+
- LinkedIn
|
68 |
+
- Vkonate
|
69 |
+
- Instagram
|
70 |
+
- Foursquare
|
71 |
+
- Wordpress
|
72 |
+
- Buffer
|
73 |
+
|
74 |
+
★ 16 Beautiful design templates.
|
75 |
+
|
76 |
+
★ Works with Woocommerce.
|
77 |
+
|
78 |
+
★ Works with Buddypress.
|
79 |
+
|
80 |
+
★ High level of customization/configuration - admin can change the title
|
81 |
+
attributes for social media icons, other texts, strings etc.
|
82 |
+
|
83 |
+
= Premium upgrade =
|
84 |
+
|
85 |
+
For premium upgrade please go [here](https://accesspressthemes.com/wordpress-plugins/accesspress-social-login/)
|
86 |
+
|
87 |
+
|
88 |
+
= Some Useful Links =
|
89 |
+
* <strong>Support Email</strong>: support@accesspressthemes.com
|
90 |
+
* <strong>Support Forum Link</strong>: http://accesspressthemes.com/support/
|
91 |
+
* <strong>Website Link</strong>: http://accesspressthemes.com/
|
92 |
+
* <strong>Youtube channel link</strong>: https://www.youtube.com/watch?v=TjZNcVG3fDE
|
93 |
+
* <strong>Facebook link</strong>: https://www.facebook.com/AccessPressThemes
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
+
For a easy installation guide checkout the Installation tab above.
|
98 |
+
|
99 |
+
For complete information and documentation regarding plugin, please visit below links.
|
100 |
+
|
101 |
+
[Plugin information](https://accesspressthemes.com/wordpress-plugins/accesspress-social-login-lite/)
|
102 |
+
|
103 |
+
[Docs](https://accesspressthemes.com/documentation/documentationplugin-instruction-accesspress-social-login-lite/)
|
104 |
+
|
105 |
+
[Demo](https://accesspressthemes.com/demo/wordpress-plugins/accesspress-social-login-lite/)
|
106 |
+
|
107 |
+
|
108 |
+
== Installation ==
|
109 |
+
1. Unzip accesspress-social-login-lite.zip
|
110 |
+
2. Upload all the files to the /wp-content/plugins/accesspress-social-login-lite
|
111 |
+
3. Activate the plugin through the 'Plugins' menu in WordPress.
|
112 |
+
4. For customizing the plugin's settings, click on AccessPress Social login lite menu in Wordpress left admin menu.
|
113 |
+
|
114 |
+
== Frequently Asked Questions ==
|
115 |
+
= What does this plugin do? =
|
116 |
+
This plugin provides the ability to allow anyone to login into your site using major social media (Facebook, Twitter, google) by the use of the latest APIs on your website!
|
117 |
+
|
118 |
+
= Will it effect my site's speed? =
|
119 |
+
No, because we have integrated the plugin with the minimal codes to do the social login.
|
120 |
+
|
121 |
+
= Do I need to design the icons again? =
|
122 |
+
No , you won't need to get any trouble regarding design and layout of the icons since we have provided inbuilt 4 beautiful icon themes.You can choose any as per your requirement.
|
123 |
+
|
124 |
+
= Can I use AccessPress social Login lite where ever I want? =
|
125 |
+
Yes. You can use the AccessPress social login lite anywhere by using shortcode in your templates files or in posts and pages content. Also you can use login widget in sidebar.
|
126 |
+
|
127 |
+
== Screenshots ==
|
128 |
+
1. Backend Display of Social Login.
|
129 |
+
2. Frontend Display of Social Login.
|
130 |
+
3. Backend Networks settings section.
|
131 |
+
4. Backend Other settings Section.
|
132 |
+
|
133 |
+
== Changelog ==
|
134 |
+
= 1.0.0 =
|
135 |
+
* Plugin submitted to http://wordpress.org for review and approval
|
136 |
+
|
137 |
+
== Upgrade Notice ==
|
138 |
+
There is an update available for the AccessPress Social Login lite Plugin. Please update to recieve new updates and bug fixes.
|
twitter/OAuth.php
ADDED
@@ -0,0 +1,895 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: foldmethod=marker
|
3 |
+
|
4 |
+
/* Generic exception class
|
5 |
+
*/
|
6 |
+
class OAuthException extends Exception {
|
7 |
+
// pass
|
8 |
+
}
|
9 |
+
|
10 |
+
class OAuthConsumer {
|
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 OAuthToken {
|
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 |
+
OAuthUtil::urlencode_rfc3986($this->key) .
|
46 |
+
"&oauth_token_secret=" .
|
47 |
+
OAuthUtil::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 OAuthSignatureMethod {
|
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 |
+
|
89 |
+
// Check for zero length, although unlikely here
|
90 |
+
if (strlen($built) == 0 || strlen($signature) == 0) {
|
91 |
+
return false;
|
92 |
+
}
|
93 |
+
|
94 |
+
if (strlen($built) != strlen($signature)) {
|
95 |
+
return false;
|
96 |
+
}
|
97 |
+
|
98 |
+
// Avoid a timing leak with a (hopefully) time insensitive compare
|
99 |
+
$result = 0;
|
100 |
+
for ($i = 0; $i < strlen($signature); $i++) {
|
101 |
+
$result |= ord($built{$i}) ^ ord($signature{$i});
|
102 |
+
}
|
103 |
+
|
104 |
+
return $result == 0;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
|
110 |
+
* where the Signature Base String is the text and the key is the concatenated values (each first
|
111 |
+
* encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
|
112 |
+
* character (ASCII code 38) even if empty.
|
113 |
+
* - Chapter 9.2 ("HMAC-SHA1")
|
114 |
+
*/
|
115 |
+
class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod {
|
116 |
+
function get_name() {
|
117 |
+
return "HMAC-SHA1";
|
118 |
+
}
|
119 |
+
|
120 |
+
public function build_signature($request, $consumer, $token) {
|
121 |
+
$base_string = $request->get_signature_base_string();
|
122 |
+
$request->base_string = $base_string;
|
123 |
+
|
124 |
+
$key_parts = array(
|
125 |
+
$consumer->secret,
|
126 |
+
($token) ? $token->secret : ""
|
127 |
+
);
|
128 |
+
|
129 |
+
$key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
|
130 |
+
$key = implode('&', $key_parts);
|
131 |
+
|
132 |
+
return base64_encode(hash_hmac('sha1', $base_string, $key, true));
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* The PLAINTEXT method does not provide any security protection and SHOULD only be used
|
138 |
+
* over a secure channel such as HTTPS. It does not use the Signature Base String.
|
139 |
+
* - Chapter 9.4 ("PLAINTEXT")
|
140 |
+
*/
|
141 |
+
class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod {
|
142 |
+
public function get_name() {
|
143 |
+
return "PLAINTEXT";
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* oauth_signature is set to the concatenated encoded values of the Consumer Secret and
|
148 |
+
* Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
|
149 |
+
* empty. The result MUST be encoded again.
|
150 |
+
* - Chapter 9.4.1 ("Generating Signatures")
|
151 |
+
*
|
152 |
+
* Please note that the second encoding MUST NOT happen in the SignatureMethod, as
|
153 |
+
* OAuthRequest handles this!
|
154 |
+
*/
|
155 |
+
public function build_signature($request, $consumer, $token) {
|
156 |
+
$key_parts = array(
|
157 |
+
$consumer->secret,
|
158 |
+
($token) ? $token->secret : ""
|
159 |
+
);
|
160 |
+
|
161 |
+
$key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
|
162 |
+
$key = implode('&', $key_parts);
|
163 |
+
$request->base_string = $key;
|
164 |
+
|
165 |
+
return $key;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
|
171 |
+
* [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
|
172 |
+
* EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
|
173 |
+
* verified way to the Service Provider, in a manner which is beyond the scope of this
|
174 |
+
* specification.
|
175 |
+
* - Chapter 9.3 ("RSA-SHA1")
|
176 |
+
*/
|
177 |
+
abstract class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod {
|
178 |
+
public function get_name() {
|
179 |
+
return "RSA-SHA1";
|
180 |
+
}
|
181 |
+
|
182 |
+
// Up to the SP to implement this lookup of keys. Possible ideas are:
|
183 |
+
// (1) do a lookup in a table of trusted certs keyed off of consumer
|
184 |
+
// (2) fetch via http using a url provided by the requester
|
185 |
+
// (3) some sort of specific discovery code based on request
|
186 |
+
//
|
187 |
+
// Either way should return a string representation of the certificate
|
188 |
+
protected abstract function fetch_public_cert(&$request);
|
189 |
+
|
190 |
+
// Up to the SP to implement this lookup of keys. Possible ideas are:
|
191 |
+
// (1) do a lookup in a table of trusted certs keyed off of consumer
|
192 |
+
//
|
193 |
+
// Either way should return a string representation of the certificate
|
194 |
+
protected abstract function fetch_private_cert(&$request);
|
195 |
+
|
196 |
+
public function build_signature($request, $consumer, $token) {
|
197 |
+
$base_string = $request->get_signature_base_string();
|
198 |
+
$request->base_string = $base_string;
|
199 |
+
|
200 |
+
// Fetch the private key cert based on the request
|
201 |
+
$cert = $this->fetch_private_cert($request);
|
202 |
+
|
203 |
+
// Pull the private key ID from the certificate
|
204 |
+
$privatekeyid = openssl_get_privatekey($cert);
|
205 |
+
|
206 |
+
// Sign using the key
|
207 |
+
$ok = openssl_sign($base_string, $signature, $privatekeyid);
|
208 |
+
|
209 |
+
// Release the key resource
|
210 |
+
openssl_free_key($privatekeyid);
|
211 |
+
|
212 |
+
return base64_encode($signature);
|
213 |
+
}
|
214 |
+
|
215 |
+
public function check_signature($request, $consumer, $token, $signature) {
|
216 |
+
$decoded_sig = base64_decode($signature);
|
217 |
+
|
218 |
+
$base_string = $request->get_signature_base_string();
|
219 |
+
|
220 |
+
// Fetch the public key cert based on the request
|
221 |
+
$cert = $this->fetch_public_cert($request);
|
222 |
+
|
223 |
+
// Pull the public key ID from the certificate
|
224 |
+
$publickeyid = openssl_get_publickey($cert);
|
225 |
+
|
226 |
+
// Check the computed signature against the one passed in the query
|
227 |
+
$ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
|
228 |
+
|
229 |
+
// Release the key resource
|
230 |
+
openssl_free_key($publickeyid);
|
231 |
+
|
232 |
+
return $ok == 1;
|
233 |
+
}
|
234 |
+
}
|
235 |
+
|
236 |
+
class OAuthRequest {
|
237 |
+
protected $parameters;
|
238 |
+
protected $http_method;
|
239 |
+
protected $http_url;
|
240 |
+
// for debug purposes
|
241 |
+
public $base_string;
|
242 |
+
public static $version = '1.0';
|
243 |
+
public static $POST_INPUT = 'php://input';
|
244 |
+
|
245 |
+
function __construct($http_method, $http_url, $parameters=NULL) {
|
246 |
+
$parameters = ($parameters) ? $parameters : array();
|
247 |
+
$parameters = array_merge( OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
|
248 |
+
$this->parameters = $parameters;
|
249 |
+
$this->http_method = $http_method;
|
250 |
+
$this->http_url = $http_url;
|
251 |
+
}
|
252 |
+
|
253 |
+
|
254 |
+
/**
|
255 |
+
* attempt to build up a request from what was passed to the server
|
256 |
+
*/
|
257 |
+
public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
|
258 |
+
$scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
|
259 |
+
? 'http'
|
260 |
+
: 'https';
|
261 |
+
$http_url = ($http_url) ? $http_url : $scheme .
|
262 |
+
'://' . $_SERVER['SERVER_NAME'] .
|
263 |
+
':' .
|
264 |
+
$_SERVER['SERVER_PORT'] .
|
265 |
+
$_SERVER['REQUEST_URI'];
|
266 |
+
$http_method = ($http_method) ? $http_method : $_SERVER['REQUEST_METHOD'];
|
267 |
+
|
268 |
+
// We weren't handed any parameters, so let's find the ones relevant to
|
269 |
+
// this request.
|
270 |
+
// If you run XML-RPC or similar you should use this to provide your own
|
271 |
+
// parsed parameter-list
|
272 |
+
if (!$parameters) {
|
273 |
+
// Find request headers
|
274 |
+
$request_headers = OAuthUtil::get_headers();
|
275 |
+
|
276 |
+
// Parse the query-string to find GET parameters
|
277 |
+
$parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);
|
278 |
+
|
279 |
+
// It's a POST request of the proper content-type, so parse POST
|
280 |
+
// parameters and add those overriding any duplicates from GET
|
281 |
+
if ($http_method == "POST"
|
282 |
+
&& isset($request_headers['Content-Type'])
|
283 |
+
&& strstr($request_headers['Content-Type'],
|
284 |
+
'application/x-www-form-urlencoded')
|
285 |
+
) {
|
286 |
+
$post_data = OAuthUtil::parse_parameters(
|
287 |
+
file_get_contents(self::$POST_INPUT)
|
288 |
+
);
|
289 |
+
$parameters = array_merge($parameters, $post_data);
|
290 |
+
}
|
291 |
+
|
292 |
+
// We have a Authorization-header with OAuth data. Parse the header
|
293 |
+
// and add those overriding any duplicates from GET or POST
|
294 |
+
if (isset($request_headers['Authorization']) && substr($request_headers['Authorization'], 0, 6) == 'OAuth ') {
|
295 |
+
$header_parameters = OAuthUtil::split_header(
|
296 |
+
$request_headers['Authorization']
|
297 |
+
);
|
298 |
+
$parameters = array_merge($parameters, $header_parameters);
|
299 |
+
}
|
300 |
+
|
301 |
+
}
|
302 |
+
|
303 |
+
return new OAuthRequest($http_method, $http_url, $parameters);
|
304 |
+
}
|
305 |
+
|
306 |
+
/**
|
307 |
+
* pretty much a helper function to set up the request
|
308 |
+
*/
|
309 |
+
public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
|
310 |
+
$parameters = ($parameters) ? $parameters : array();
|
311 |
+
$defaults = array("oauth_version" => OAuthRequest::$version,
|
312 |
+
"oauth_nonce" => OAuthRequest::generate_nonce(),
|
313 |
+
"oauth_timestamp" => OAuthRequest::generate_timestamp(),
|
314 |
+
"oauth_consumer_key" => $consumer->key);
|
315 |
+
if ($token)
|
316 |
+
$defaults['oauth_token'] = $token->key;
|
317 |
+
|
318 |
+
$parameters = array_merge($defaults, $parameters);
|
319 |
+
|
320 |
+
return new OAuthRequest($http_method, $http_url, $parameters);
|
321 |
+
}
|
322 |
+
|
323 |
+
public function set_parameter($name, $value, $allow_duplicates = true) {
|
324 |
+
if ($allow_duplicates && isset($this->parameters[$name])) {
|
325 |
+
// We have already added parameter(s) with this name, so add to the list
|
326 |
+
if (is_scalar($this->parameters[$name])) {
|
327 |
+
// This is the first duplicate, so transform scalar (string)
|
328 |
+
// into an array so we can add the duplicates
|
329 |
+
$this->parameters[$name] = array($this->parameters[$name]);
|
330 |
+
}
|
331 |
+
|
332 |
+
$this->parameters[$name][] = $value;
|
333 |
+
} else {
|
334 |
+
$this->parameters[$name] = $value;
|
335 |
+
}
|
336 |
+
}
|
337 |
+
|
338 |
+
public function get_parameter($name) {
|
339 |
+
return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
|
340 |
+
}
|
341 |
+
|
342 |
+
public function get_parameters() {
|
343 |
+
return $this->parameters;
|
344 |
+
}
|
345 |
+
|
346 |
+
public function unset_parameter($name) {
|
347 |
+
unset($this->parameters[$name]);
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* The request parameters, sorted and concatenated into a normalized string.
|
352 |
+
* @return string
|
353 |
+
*/
|
354 |
+
public function get_signable_parameters() {
|
355 |
+
// Grab all parameters
|
356 |
+
$params = $this->parameters;
|
357 |
+
|
358 |
+
// Remove oauth_signature if present
|
359 |
+
// Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
|
360 |
+
if (isset($params['oauth_signature'])) {
|
361 |
+
unset($params['oauth_signature']);
|
362 |
+
}
|
363 |
+
|
364 |
+
return OAuthUtil::build_http_query($params);
|
365 |
+
}
|
366 |
+
|
367 |
+
/**
|
368 |
+
* Returns the base string of this request
|
369 |
+
*
|
370 |
+
* The base string defined as the method, the url
|
371 |
+
* and the parameters (normalized), each urlencoded
|
372 |
+
* and the concated with &.
|
373 |
+
*/
|
374 |
+
public function get_signature_base_string() {
|
375 |
+
$parts = array(
|
376 |
+
$this->get_normalized_http_method(),
|
377 |
+
$this->get_normalized_http_url(),
|
378 |
+
$this->get_signable_parameters()
|
379 |
+
);
|
380 |
+
|
381 |
+
$parts = OAuthUtil::urlencode_rfc3986($parts);
|
382 |
+
|
383 |
+
return implode('&', $parts);
|
384 |
+
}
|
385 |
+
|
386 |
+
/**
|
387 |
+
* just uppercases the http method
|
388 |
+
*/
|
389 |
+
public function get_normalized_http_method() {
|
390 |
+
return strtoupper($this->http_method);
|
391 |
+
}
|
392 |
+
|
393 |
+
/**
|
394 |
+
* parses the url and rebuilds it to be
|
395 |
+
* scheme://host/path
|
396 |
+
*/
|
397 |
+
public function get_normalized_http_url() {
|
398 |
+
$parts = parse_url($this->http_url);
|
399 |
+
|
400 |
+
$scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http';
|
401 |
+
$port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80');
|
402 |
+
$host = (isset($parts['host'])) ? strtolower($parts['host']) : '';
|
403 |
+
$path = (isset($parts['path'])) ? $parts['path'] : '';
|
404 |
+
|
405 |
+
if (($scheme == 'https' && $port != '443')
|
406 |
+
|| ($scheme == 'http' && $port != '80')) {
|
407 |
+
$host = "$host:$port";
|
408 |
+
}
|
409 |
+
return "$scheme://$host$path";
|
410 |
+
}
|
411 |
+
|
412 |
+
/**
|
413 |
+
* builds a url usable for a GET request
|
414 |
+
*/
|
415 |
+
public function to_url() {
|
416 |
+
$post_data = $this->to_postdata();
|
417 |
+
$out = $this->get_normalized_http_url();
|
418 |
+
if ($post_data) {
|
419 |
+
$out .= '?'.$post_data;
|
420 |
+
}
|
421 |
+
return $out;
|
422 |
+
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* builds the data one would send in a POST request
|
426 |
+
*/
|
427 |
+
public function to_postdata() {
|
428 |
+
return OAuthUtil::build_http_query($this->parameters);
|
429 |
+
}
|
430 |
+
|
431 |
+
/**
|
432 |
+
* builds the Authorization: header
|
433 |
+
*/
|
434 |
+
public function to_header($realm=null) {
|
435 |
+
$first = true;
|
436 |
+
if($realm) {
|
437 |
+
$out = 'Authorization: OAuth realm="' . OAuthUtil::urlencode_rfc3986($realm) . '"';
|
438 |
+
$first = false;
|
439 |
+
} else
|
440 |
+
$out = 'Authorization: OAuth';
|
441 |
+
|
442 |
+
$total = array();
|
443 |
+
foreach ($this->parameters as $k => $v) {
|
444 |
+
if (substr($k, 0, 5) != "oauth") continue;
|
445 |
+
if (is_array($v)) {
|
446 |
+
throw new OAuthException('Arrays not supported in headers');
|
447 |
+
}
|
448 |
+
$out .= ($first) ? ' ' : ',';
|
449 |
+
$out .= OAuthUtil::urlencode_rfc3986($k) .
|
450 |
+
'="' .
|
451 |
+
OAuthUtil::urlencode_rfc3986($v) .
|
452 |
+
'"';
|
453 |
+
$first = false;
|
454 |
+
}
|
455 |
+
return $out;
|
456 |
+
}
|
457 |
+
|
458 |
+
public function __toString() {
|
459 |
+
return $this->to_url();
|
460 |
+
}
|
461 |
+
|
462 |
+
|
463 |
+
public function sign_request($signature_method, $consumer, $token) {
|
464 |
+
$this->set_parameter(
|
465 |
+
"oauth_signature_method",
|
466 |
+
$signature_method->get_name(),
|
467 |
+
false
|
468 |
+
);
|
469 |
+
$signature = $this->build_signature($signature_method, $consumer, $token);
|
470 |
+
$this->set_parameter("oauth_signature", $signature, false);
|
471 |
+
}
|
472 |
+
|
473 |
+
public function build_signature($signature_method, $consumer, $token) {
|
474 |
+
$signature = $signature_method->build_signature($this, $consumer, $token);
|
475 |
+
return $signature;
|
476 |
+
}
|
477 |
+
|
478 |
+
/**
|
479 |
+
* util function: current timestamp
|
480 |
+
*/
|
481 |
+
private static function generate_timestamp() {
|
482 |
+
return time();
|
483 |
+
}
|
484 |
+
|
485 |
+
/**
|
486 |
+
* util function: current nonce
|
487 |
+
*/
|
488 |
+
private static function generate_nonce() {
|
489 |
+
$mt = microtime();
|
490 |
+
$rand = mt_rand();
|
491 |
+
|
492 |
+
return md5($mt . $rand); // md5s look nicer than numbers
|
493 |
+
}
|
494 |
+
}
|
495 |
+
|
496 |
+
class OAuthServer {
|
497 |
+
protected $timestamp_threshold = 300; // in seconds, five minutes
|
498 |
+
protected $version = '1.0'; // hi blaine
|
499 |
+
protected $signature_methods = array();
|
500 |
+
|
501 |
+
protected $data_store;
|
502 |
+
|
503 |
+
function __construct($data_store) {
|
504 |
+
$this->data_store = $data_store;
|
505 |
+
}
|
506 |
+
|
507 |
+
public function add_signature_method($signature_method) {
|
508 |
+
$this->signature_methods[$signature_method->get_name()] =
|
509 |
+
$signature_method;
|
510 |
+
}
|
511 |
+
|
512 |
+
// high level functions
|
513 |
+
|
514 |
+
/**
|
515 |
+
* process a request_token request
|
516 |
+
* returns the request token on success
|
517 |
+
*/
|
518 |
+
public function fetch_request_token(&$request) {
|
519 |
+
$this->get_version($request);
|
520 |
+
|
521 |
+
$consumer = $this->get_consumer($request);
|
522 |
+
|
523 |
+
// no token required for the initial token request
|
524 |
+
$token = NULL;
|
525 |
+
|
526 |
+
$this->check_signature($request, $consumer, $token);
|
527 |
+
|
528 |
+
// Rev A change
|
529 |
+
$callback = $request->get_parameter('oauth_callback');
|
530 |
+
$new_token = $this->data_store->new_request_token($consumer, $callback);
|
531 |
+
|
532 |
+
return $new_token;
|
533 |
+
}
|
534 |
+
|
535 |
+
/**
|
536 |
+
* process an access_token request
|
537 |
+
* returns the access token on success
|
538 |
+
*/
|
539 |
+
public function fetch_access_token(&$request) {
|
540 |
+
$this->get_version($request);
|
541 |
+
|
542 |
+
$consumer = $this->get_consumer($request);
|
543 |
+
|
544 |
+
// requires authorized request token
|
545 |
+
$token = $this->get_token($request, $consumer, "request");
|
546 |
+
|
547 |
+
$this->check_signature($request, $consumer, $token);
|
548 |
+
|
549 |
+
// Rev A change
|
550 |
+
$verifier = $request->get_parameter('oauth_verifier');
|
551 |
+
$new_token = $this->data_store->new_access_token($token, $consumer, $verifier);
|
552 |
+
|
553 |
+
return $new_token;
|
554 |
+
}
|
555 |
+
|
556 |
+
/**
|
557 |
+
* verify an api call, checks all the parameters
|
558 |
+
*/
|
559 |
+
public function verify_request(&$request) {
|
560 |
+
$this->get_version($request);
|
561 |
+
$consumer = $this->get_consumer($request);
|
562 |
+
$token = $this->get_token($request, $consumer, "access");
|
563 |
+
$this->check_signature($request, $consumer, $token);
|
564 |
+
return array($consumer, $token);
|
565 |
+
}
|
566 |
+
|
567 |
+
// Internals from here
|
568 |
+
/**
|
569 |
+
* version 1
|
570 |
+
*/
|
571 |
+
private function get_version(&$request) {
|
572 |
+
$version = $request->get_parameter("oauth_version");
|
573 |
+
if (!$version) {
|
574 |
+
// Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
|
575 |
+
// Chapter 7.0 ("Accessing Protected Ressources")
|
576 |
+
$version = '1.0';
|
577 |
+
}
|
578 |
+
if ($version !== $this->version) {
|
579 |
+
throw new OAuthException("OAuth version '$version' not supported");
|
580 |
+
}
|
581 |
+
return $version;
|
582 |
+
}
|
583 |
+
|
584 |
+
/**
|
585 |
+
* figure out the signature with some defaults
|
586 |
+
*/
|
587 |
+
private function get_signature_method($request) {
|
588 |
+
$signature_method = $request instanceof OAuthRequest
|
589 |
+
? $request->get_parameter("oauth_signature_method")
|
590 |
+
: NULL;
|
591 |
+
|
592 |
+
if (!$signature_method) {
|
593 |
+
// According to chapter 7 ("Accessing Protected Ressources") the signature-method
|
594 |
+
// parameter is required, and we can't just fallback to PLAINTEXT
|
595 |
+
throw new OAuthException('No signature method parameter. This parameter is required');
|
596 |
+
}
|
597 |
+
|
598 |
+
if (!in_array($signature_method,
|
599 |
+
array_keys($this->signature_methods))) {
|
600 |
+
throw new OAuthException(
|
601 |
+
"Signature method '$signature_method' not supported " .
|
602 |
+
"try one of the following: " .
|
603 |
+
implode(", ", array_keys($this->signature_methods))
|
604 |
+
);
|
605 |
+
}
|
606 |
+
return $this->signature_methods[$signature_method];
|
607 |
+
}
|
608 |
+
|
609 |
+
/**
|
610 |
+
* try to find the consumer for the provided request's consumer key
|
611 |
+
*/
|
612 |
+
private function get_consumer($request) {
|
613 |
+
$consumer_key = $request instanceof OAuthRequest
|
614 |
+
? $request->get_parameter("oauth_consumer_key")
|
615 |
+
: NULL;
|
616 |
+
|
617 |
+
if (!$consumer_key) {
|
618 |
+
throw new OAuthException("Invalid consumer key");
|
619 |
+
}
|
620 |
+
|
621 |
+
$consumer = $this->data_store->lookup_consumer($consumer_key);
|
622 |
+
if (!$consumer) {
|
623 |
+
throw new OAuthException("Invalid consumer");
|
624 |
+
}
|
625 |
+
|
626 |
+
return $consumer;
|
627 |
+
}
|
628 |
+
|
629 |
+
/**
|
630 |
+
* try to find the token for the provided request's token key
|
631 |
+
*/
|
632 |
+
private function get_token($request, $consumer, $token_type="access") {
|
633 |
+
$token_field = $request instanceof OAuthRequest
|
634 |
+
? $request->get_parameter('oauth_token')
|
635 |
+
: NULL;
|
636 |
+
|
637 |
+
$token = $this->data_store->lookup_token(
|
638 |
+
$consumer, $token_type, $token_field
|
639 |
+
);
|
640 |
+
if (!$token) {
|
641 |
+
throw new OAuthException("Invalid $token_type token: $token_field");
|
642 |
+
}
|
643 |
+
return $token;
|
644 |
+
}
|
645 |
+
|
646 |
+
/**
|
647 |
+
* all-in-one function to check the signature on a request
|
648 |
+
* should guess the signature method appropriately
|
649 |
+
*/
|
650 |
+
private function check_signature($request, $consumer, $token) {
|
651 |
+
// this should probably be in a different method
|
652 |
+
$timestamp = $request instanceof OAuthRequest
|
653 |
+
? $request->get_parameter('oauth_timestamp')
|
654 |
+
: NULL;
|
655 |
+
$nonce = $request instanceof OAuthRequest
|
656 |
+
? $request->get_parameter('oauth_nonce')
|
657 |
+
: NULL;
|
658 |
+
|
659 |
+
$this->check_timestamp($timestamp);
|
660 |
+
$this->check_nonce($consumer, $token, $nonce, $timestamp);
|
661 |
+
|
662 |
+
$signature_method = $this->get_signature_method($request);
|
663 |
+
|
664 |
+
$signature = $request->get_parameter('oauth_signature');
|
665 |
+
$valid_sig = $signature_method->check_signature(
|
666 |
+
$request,
|
667 |
+
$consumer,
|
668 |
+
$token,
|
669 |
+
$signature
|
670 |
+
);
|
671 |
+
|
672 |
+
if (!$valid_sig) {
|
673 |
+
throw new OAuthException("Invalid signature");
|
674 |
+
}
|
675 |
+
}
|
676 |
+
|
677 |
+
/**
|
678 |
+
* check that the timestamp is new enough
|
679 |
+
*/
|
680 |
+
private function check_timestamp($timestamp) {
|
681 |
+
if( ! $timestamp )
|
682 |
+
throw new OAuthException(
|
683 |
+
'Missing timestamp parameter. The parameter is required'
|
684 |
+
);
|
685 |
+
|
686 |
+
// verify that timestamp is recentish
|
687 |
+
$now = time();
|
688 |
+
if (abs($now - $timestamp) > $this->timestamp_threshold) {
|
689 |
+
throw new OAuthException(
|
690 |
+
"Expired timestamp, yours $timestamp, ours $now"
|
691 |
+
);
|
692 |
+
}
|
693 |
+
}
|
694 |
+
|
695 |
+
/**
|
696 |
+
* check that the nonce is not repeated
|
697 |
+
*/
|
698 |
+
private function check_nonce($consumer, $token, $nonce, $timestamp) {
|
699 |
+
if( ! $nonce )
|
700 |
+
throw new OAuthException(
|
701 |
+
'Missing nonce parameter. The parameter is required'
|
702 |
+
);
|
703 |
+
|
704 |
+
// verify that the nonce is uniqueish
|
705 |
+
$found = $this->data_store->lookup_nonce(
|
706 |
+
$consumer,
|
707 |
+
$token,
|
708 |
+
$nonce,
|
709 |
+
$timestamp
|
710 |
+
);
|
711 |
+
if ($found) {
|
712 |
+
throw new OAuthException("Nonce already used: $nonce");
|
713 |
+
}
|
714 |
+
}
|
715 |
+
|
716 |
+
}
|
717 |
+
|
718 |
+
class OAuthDataStore {
|
719 |
+
function lookup_consumer($consumer_key) {
|
720 |
+
// implement me
|
721 |
+
}
|
722 |
+
|
723 |
+
function lookup_token($consumer, $token_type, $token) {
|
724 |
+
// implement me
|
725 |
+
}
|
726 |
+
|
727 |
+
function lookup_nonce($consumer, $token, $nonce, $timestamp) {
|
728 |
+
// implement me
|
729 |
+
}
|
730 |
+
|
731 |
+
function new_request_token($consumer, $callback = null) {
|
732 |
+
// return a new token attached to this consumer
|
733 |
+
}
|
734 |
+
|
735 |
+
function new_access_token($token, $consumer, $verifier = null) {
|
736 |
+
// return a new access token attached to this consumer
|
737 |
+
// for the user associated with this token if the request token
|
738 |
+
// is authorized
|
739 |
+
// should also invalidate the request token
|
740 |
+
}
|
741 |
+
|
742 |
+
}
|
743 |
+
|
744 |
+
class OAuthUtil {
|
745 |
+
public static function urlencode_rfc3986($input) {
|
746 |
+
if (is_array($input)) {
|
747 |
+
return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input);
|
748 |
+
} else if (is_scalar($input)) {
|
749 |
+
return str_replace(
|
750 |
+
'+',
|
751 |
+
' ',
|
752 |
+
str_replace('%7E', '~', rawurlencode($input))
|
753 |
+
);
|
754 |
+
} else {
|
755 |
+
return '';
|
756 |
+
}
|
757 |
+
}
|
758 |
+
|
759 |
+
|
760 |
+
// This decode function isn't taking into consideration the above
|
761 |
+
// modifications to the encoding process. However, this method doesn't
|
762 |
+
// seem to be used anywhere so leaving it as is.
|
763 |
+
public static function urldecode_rfc3986($string) {
|
764 |
+
return urldecode($string);
|
765 |
+
}
|
766 |
+
|
767 |
+
// Utility function for turning the Authorization: header into
|
768 |
+
// parameters, has to do some unescaping
|
769 |
+
// Can filter out any non-oauth parameters if needed (default behaviour)
|
770 |
+
// May 28th, 2010 - method updated to tjerk.meesters for a speed improvement.
|
771 |
+
// see http://code.google.com/p/oauth/issues/detail?id=163
|
772 |
+
public static function split_header($header, $only_allow_oauth_parameters = true) {
|
773 |
+
$params = array();
|
774 |
+
if (preg_match_all('/('.($only_allow_oauth_parameters ? 'oauth_' : '').'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, $matches)) {
|
775 |
+
foreach ($matches[1] as $i => $h) {
|
776 |
+
$params[$h] = OAuthUtil::urldecode_rfc3986(empty($matches[3][$i]) ? $matches[4][$i] : $matches[3][$i]);
|
777 |
+
}
|
778 |
+
if (isset($params['realm'])) {
|
779 |
+
unset($params['realm']);
|
780 |
+
}
|
781 |
+
}
|
782 |
+
return $params;
|
783 |
+
}
|
784 |
+
|
785 |
+
// helper to try to sort out headers for people who aren't running apache
|
786 |
+
public static function get_headers() {
|
787 |
+
if (function_exists('apache_request_headers')) {
|
788 |
+
// we need this to get the actual Authorization: header
|
789 |
+
// because apache tends to tell us it doesn't exist
|
790 |
+
$headers = apache_request_headers();
|
791 |
+
|
792 |
+
// sanitize the output of apache_request_headers because
|
793 |
+
// we always want the keys to be Cased-Like-This and arh()
|
794 |
+
// returns the headers in the same case as they are in the
|
795 |
+
// request
|
796 |
+
$out = array();
|
797 |
+
foreach ($headers AS $key => $value) {
|
798 |
+
$key = str_replace(
|
799 |
+
" ",
|
800 |
+
"-",
|
801 |
+
ucwords(strtolower(str_replace("-", " ", $key)))
|
802 |
+
);
|
803 |
+
$out[$key] = $value;
|
804 |
+
}
|
805 |
+
} else {
|
806 |
+
// otherwise we don't have apache and are just going to have to hope
|
807 |
+
// that $_SERVER actually contains what we need
|
808 |
+
$out = array();
|
809 |
+
if( isset($_SERVER['CONTENT_TYPE']) )
|
810 |
+
$out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
|
811 |
+
if( isset($_ENV['CONTENT_TYPE']) )
|
812 |
+
$out['Content-Type'] = $_ENV['CONTENT_TYPE'];
|
813 |
+
|
814 |
+
foreach ($_SERVER as $key => $value) {
|
815 |
+
if (substr($key, 0, 5) == "HTTP_") {
|
816 |
+
// this is chaos, basically it is just there to capitalize the first
|
817 |
+
// letter of every word that is not an initial HTTP and strip HTTP
|
818 |
+
// code from przemek
|
819 |
+
$key = str_replace(
|
820 |
+
" ",
|
821 |
+
"-",
|
822 |
+
ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
|
823 |
+
);
|
824 |
+
$out[$key] = $value;
|
825 |
+
}
|
826 |
+
}
|
827 |
+
}
|
828 |
+
return $out;
|
829 |
+
}
|
830 |
+
|
831 |
+
// This function takes a input like a=b&a=c&d=e and returns the parsed
|
832 |
+
// parameters like this
|
833 |
+
// array('a' => array('b','c'), 'd' => 'e')
|
834 |
+
public static function parse_parameters( $input ) {
|
835 |
+
if (!isset($input) || !$input) return array();
|
836 |
+
|
837 |
+
$pairs = explode('&', $input);
|
838 |
+
|
839 |
+
$parsed_parameters = array();
|
840 |
+
foreach ($pairs as $pair) {
|
841 |
+
$split = explode('=', $pair, 2);
|
842 |
+
$parameter = OAuthUtil::urldecode_rfc3986($split[0]);
|
843 |
+
$value = isset($split[1]) ? OAuthUtil::urldecode_rfc3986($split[1]) : '';
|
844 |
+
|
845 |
+
if (isset($parsed_parameters[$parameter])) {
|
846 |
+
// We have already recieved parameter(s) with this name, so add to the list
|
847 |
+
// of parameters with this name
|
848 |
+
|
849 |
+
if (is_scalar($parsed_parameters[$parameter])) {
|
850 |
+
// This is the first duplicate, so transform scalar (string) into an array
|
851 |
+
// so we can add the duplicates
|
852 |
+
$parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
|
853 |
+
}
|
854 |
+
|
855 |
+
$parsed_parameters[$parameter][] = $value;
|
856 |
+
} else {
|
857 |
+
$parsed_parameters[$parameter] = $value;
|
858 |
+
}
|
859 |
+
}
|
860 |
+
return $parsed_parameters;
|
861 |
+
}
|
862 |
+
|
863 |
+
public static function build_http_query($params) {
|
864 |
+
if (!$params) return '';
|
865 |
+
|
866 |
+
// Urlencode both keys and values
|
867 |
+
$keys = OAuthUtil::urlencode_rfc3986(array_keys($params));
|
868 |
+
$values = OAuthUtil::urlencode_rfc3986(array_values($params));
|
869 |
+
$params = array_combine($keys, $values);
|
870 |
+
|
871 |
+
// Parameters are sorted by name, using lexicographical byte value ordering.
|
872 |
+
// Ref: Spec: 9.1.1 (1)
|
873 |
+
uksort($params, 'strcmp');
|
874 |
+
|
875 |
+
$pairs = array();
|
876 |
+
foreach ($params as $parameter => $value) {
|
877 |
+
if (is_array($value)) {
|
878 |
+
// If two or more parameters share the same name, they are sorted by their value
|
879 |
+
// Ref: Spec: 9.1.1 (1)
|
880 |
+
// June 12th, 2010 - changed to sort because of issue 164 by hidetaka
|
881 |
+
sort($value, SORT_STRING);
|
882 |
+
foreach ($value as $duplicate_value) {
|
883 |
+
$pairs[] = $parameter . '=' . $duplicate_value;
|
884 |
+
}
|
885 |
+
} else {
|
886 |
+
$pairs[] = $parameter . '=' . $value;
|
887 |
+
}
|
888 |
+
}
|
889 |
+
// For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
|
890 |
+
// Each name-value pair is separated by an '&' character (ASCII code 38)
|
891 |
+
return implode('&', $pairs);
|
892 |
+
}
|
893 |
+
}
|
894 |
+
|
895 |
+
?>
|
twitter/twitteroauth.php
ADDED
@@ -0,0 +1,235 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Twitter OAuth class
|
4 |
+
*/
|
5 |
+
class TwitterOAuth {
|
6 |
+
/* Contains the last HTTP status code returned. */
|
7 |
+
public $http_code;
|
8 |
+
/* Contains the last API call. */
|
9 |
+
public $url;
|
10 |
+
/* Set up the API root URL. */
|
11 |
+
public $host = "https://api.twitter.com/1.1/";//https://dev.twitter.com/docs/api/1.1/overview
|
12 |
+
/* Set timeout default. */
|
13 |
+
public $timeout = 30;
|
14 |
+
/* Set connect timeout. */
|
15 |
+
public $connecttimeout = 30;
|
16 |
+
/* Verify SSL Cert. */
|
17 |
+
public $ssl_verifypeer = FALSE;
|
18 |
+
/* Respons format. */
|
19 |
+
public $format = 'json';
|
20 |
+
/* Decode returned json data. */
|
21 |
+
public $decode_json = TRUE;
|
22 |
+
/* Contains the last HTTP headers returned. */
|
23 |
+
public $http_info;
|
24 |
+
/* Set the useragnet. */
|
25 |
+
public $useragent = 'TwitterOAuth v0.2.0-beta2';
|
26 |
+
/* Immediately retry the API call if the response was not successful. */
|
27 |
+
//public $retry = TRUE;
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Set API URLS
|
34 |
+
*/
|
35 |
+
function accessTokenURL() { return 'https://api.twitter.com/oauth/access_token'; }
|
36 |
+
function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; }
|
37 |
+
function authorizeURL() { return 'https://api.twitter.com/oauth/authorize'; }
|
38 |
+
function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; }
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Debug helpers
|
42 |
+
*/
|
43 |
+
function lastStatusCode() { return $this->http_status; }
|
44 |
+
function lastAPICall() { return $this->last_api_call; }
|
45 |
+
|
46 |
+
/**
|
47 |
+
* construct TwitterOAuth object
|
48 |
+
*/
|
49 |
+
function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
|
50 |
+
$this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1();
|
51 |
+
$this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);
|
52 |
+
if (!empty($oauth_token) && !empty($oauth_token_secret)) {
|
53 |
+
$this->token = new OAuthConsumer($oauth_token, $oauth_token_secret);
|
54 |
+
} else {
|
55 |
+
$this->token = NULL;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get a request_token from Twitter
|
62 |
+
*
|
63 |
+
* @returns a key/value array containing oauth_token and oauth_token_secret
|
64 |
+
*/
|
65 |
+
function getRequestToken($oauth_callback = NULL) {
|
66 |
+
$parameters = array();
|
67 |
+
if (!empty($oauth_callback)) {
|
68 |
+
$parameters['oauth_callback'] = $oauth_callback;
|
69 |
+
}
|
70 |
+
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
|
71 |
+
$token = OAuthUtil::parse_parameters($request);
|
72 |
+
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
|
73 |
+
return $token;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Get the authorize URL
|
78 |
+
*
|
79 |
+
* @returns a string
|
80 |
+
*/
|
81 |
+
function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) {
|
82 |
+
if (is_array($token)) {
|
83 |
+
$token = $token['oauth_token'];
|
84 |
+
}
|
85 |
+
if (empty($sign_in_with_twitter)) {
|
86 |
+
return $this->authorizeURL() . "?oauth_token={$token}";
|
87 |
+
} else {
|
88 |
+
return $this->authenticateURL() . "?oauth_token={$token}";
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Exchange request token and secret for an access token and
|
94 |
+
* secret, to sign API calls.
|
95 |
+
*
|
96 |
+
* @returns array("oauth_token" => "the-access-token",
|
97 |
+
* "oauth_token_secret" => "the-access-secret",
|
98 |
+
* "user_id" => "9436992",
|
99 |
+
* "screen_name" => "abraham")
|
100 |
+
*/
|
101 |
+
function getAccessToken($oauth_verifier = FALSE) {
|
102 |
+
$parameters = array();
|
103 |
+
if (!empty($oauth_verifier)) {
|
104 |
+
$parameters['oauth_verifier'] = $oauth_verifier;
|
105 |
+
}
|
106 |
+
$request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters);
|
107 |
+
$token = OAuthUtil::parse_parameters($request);
|
108 |
+
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
|
109 |
+
return $token;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* One time exchange of username and password for access token and secret.
|
114 |
+
*
|
115 |
+
* @returns array("oauth_token" => "the-access-token",
|
116 |
+
* "oauth_token_secret" => "the-access-secret",
|
117 |
+
* "user_id" => "9436992",
|
118 |
+
* "screen_name" => "abraham",
|
119 |
+
* "x_auth_expires" => "0")
|
120 |
+
*/
|
121 |
+
function getXAuthToken($username, $password) {
|
122 |
+
$parameters = array();
|
123 |
+
$parameters['x_auth_username'] = $username;
|
124 |
+
$parameters['x_auth_password'] = $password;
|
125 |
+
$parameters['x_auth_mode'] = 'client_auth';
|
126 |
+
$request = $this->oAuthRequest($this->accessTokenURL(), 'POST', $parameters);
|
127 |
+
$token = OAuthUtil::parse_parameters($request);
|
128 |
+
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
|
129 |
+
return $token;
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* GET wrapper for oAuthRequest.
|
134 |
+
*/
|
135 |
+
function get($url, $parameters = array()) {
|
136 |
+
$response = $this->oAuthRequest($url, 'GET', $parameters);
|
137 |
+
if ($this->format === 'json' && $this->decode_json) {
|
138 |
+
return json_decode($response);
|
139 |
+
}
|
140 |
+
return $response;
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* POST wrapper for oAuthRequest.
|
145 |
+
*/
|
146 |
+
function post($url, $parameters = array()) {
|
147 |
+
$response = $this->oAuthRequest($url, 'POST', $parameters);
|
148 |
+
if ($this->format === 'json' && $this->decode_json) {
|
149 |
+
return json_decode($response);
|
150 |
+
}
|
151 |
+
return $response;
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* DELETE wrapper for oAuthReqeust.
|
156 |
+
*/
|
157 |
+
function delete($url, $parameters = array()) {
|
158 |
+
$response = $this->oAuthRequest($url, 'DELETE', $parameters);
|
159 |
+
if ($this->format === 'json' && $this->decode_json) {
|
160 |
+
return json_decode($response);
|
161 |
+
}
|
162 |
+
return $response;
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Format and sign an OAuth / API request
|
167 |
+
*/
|
168 |
+
function oAuthRequest($url, $method, $parameters) {
|
169 |
+
if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) {
|
170 |
+
$url = "{$this->host}{$url}.{$this->format}";
|
171 |
+
}
|
172 |
+
$request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
|
173 |
+
$request->sign_request($this->sha1_method, $this->consumer, $this->token);
|
174 |
+
switch ($method) {
|
175 |
+
case 'GET':
|
176 |
+
return $this->http($request->to_url(), 'GET');
|
177 |
+
default:
|
178 |
+
return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata());
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Make an HTTP request
|
184 |
+
*
|
185 |
+
* @return API results
|
186 |
+
*/
|
187 |
+
function http($url, $method, $postfields = NULL) {
|
188 |
+
$this->http_info = array();
|
189 |
+
$ci = curl_init();
|
190 |
+
/* Curl settings */
|
191 |
+
curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
|
192 |
+
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
|
193 |
+
curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
|
194 |
+
curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
|
195 |
+
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
|
196 |
+
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
|
197 |
+
curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
|
198 |
+
curl_setopt($ci, CURLOPT_HEADER, FALSE);
|
199 |
+
|
200 |
+
switch ($method) {
|
201 |
+
case 'POST':
|
202 |
+
curl_setopt($ci, CURLOPT_POST, TRUE);
|
203 |
+
if (!empty($postfields)) {
|
204 |
+
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
|
205 |
+
}
|
206 |
+
break;
|
207 |
+
case 'DELETE':
|
208 |
+
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
209 |
+
if (!empty($postfields)) {
|
210 |
+
$url = "{$url}?{$postfields}";
|
211 |
+
}
|
212 |
+
}
|
213 |
+
|
214 |
+
curl_setopt($ci, CURLOPT_URL, $url);
|
215 |
+
$response = curl_exec($ci);
|
216 |
+
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
|
217 |
+
$this->http_info = array_merge($this->http_info, curl_getinfo($ci));
|
218 |
+
$this->url = $url;
|
219 |
+
curl_close ($ci);
|
220 |
+
return $response;
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Get the header info to store.
|
225 |
+
*/
|
226 |
+
function getHeader($ch, $header) {
|
227 |
+
$i = strpos($header, ':');
|
228 |
+
if (!empty($i)) {
|
229 |
+
$key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
|
230 |
+
$value = trim(substr($header, $i + 2));
|
231 |
+
$this->http_header[$key] = $value;
|
232 |
+
}
|
233 |
+
return strlen($header);
|
234 |
+
}
|
235 |
+
}
|