CC-2166: Packaging Improvements. Moved the Zend app into airtime_mvc. It is now installed to /var/www/airtime. Storage is now set to /srv/airtime/stor. Utils are now installed to /usr/lib/airtime/utils/. Added install/airtime-dircheck.php as a simple test to see if everything is install/uninstalled correctly.
This commit is contained in:
parent
514777e8d2
commit
b11cbd8159
4546 changed files with 138 additions and 51 deletions
79
airtime_mvc/library/Zend/InfoCard/Adapter/Default.php
Normal file
79
airtime_mvc/library/Zend/InfoCard/Adapter/Default.php
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Adapter
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Default.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Adapter_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Adapter/Interface.php';
|
||||
|
||||
/**
|
||||
* The default InfoCard component Adapter which serves as a pass-thru placeholder
|
||||
* for developers. Initially developed to provide a callback mechanism to store and retrieve
|
||||
* assertions as part of the validation process it can be used anytime callback facilities
|
||||
* are necessary
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Adapter
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Adapter_Default implements Zend_InfoCard_Adapter_Interface
|
||||
{
|
||||
/**
|
||||
* Store the assertion (pass-thru does nothing)
|
||||
*
|
||||
* @param string $assertionURI The assertion type URI
|
||||
* @param string $assertionID The specific assertion ID
|
||||
* @param array $conditions An array of claims to store associated with the assertion
|
||||
* @return bool Always returns true (would return false on store failure)
|
||||
*/
|
||||
public function storeAssertion($assertionURI, $assertionID, $conditions)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve an assertion (pass-thru does nothing)
|
||||
*
|
||||
* @param string $assertionURI The assertion type URI
|
||||
* @param string $assertionID The assertion ID to retrieve
|
||||
* @return mixed False if the assertion ID was not found for that URI, or an array of
|
||||
* conditions associated with that assertion if found (always returns false)
|
||||
*/
|
||||
public function retrieveAssertion($assertionURI, $assertionID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove an assertion (pass-thru does nothing)
|
||||
*
|
||||
* @param string $assertionURI The assertion type URI
|
||||
* @param string $assertionID The assertion ID to remove
|
||||
* @return bool Always returns true (false on removal failure)
|
||||
*/
|
||||
public function removeAssertion($assertionURI, $assertionID)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
37
airtime_mvc/library/Zend/InfoCard/Adapter/Exception.php
Normal file
37
airtime_mvc/library/Zend/InfoCard/Adapter/Exception.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Adapter
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_InfoCard_Exception
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Adapter
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Adapter_Exception extends Zend_InfoCard_Exception
|
||||
{
|
||||
}
|
64
airtime_mvc/library/Zend/InfoCard/Adapter/Interface.php
Normal file
64
airtime_mvc/library/Zend/InfoCard/Adapter/Interface.php
Normal file
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Adapter
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* The interface required by all Zend_InfoCard Adapter classes to implement. It represents
|
||||
* a series of callback methods used by the component during processing of an information card
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Adapter
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Adapter_Interface
|
||||
{
|
||||
/**
|
||||
* Store the assertion's claims in persistent storage
|
||||
*
|
||||
* @param string $assertionURI The assertion type URI
|
||||
* @param string $assertionID The specific assertion ID
|
||||
* @param array $conditions An array of claims to store associated with the assertion
|
||||
* @return bool True on success, false on failure
|
||||
*/
|
||||
public function storeAssertion($assertionURI, $assertionID, $conditions);
|
||||
|
||||
/**
|
||||
* Retrieve the claims of a given assertion from persistent storage
|
||||
*
|
||||
* @param string $assertionURI The assertion type URI
|
||||
* @param string $assertionID The assertion ID to retrieve
|
||||
* @return mixed False if the assertion ID was not found for that URI, or an array of
|
||||
* conditions associated with that assertion if found in the same format
|
||||
* provided
|
||||
*/
|
||||
public function retrieveAssertion($assertionURI, $assertionID);
|
||||
|
||||
/**
|
||||
* Remove the claims of a given assertion from persistent storage
|
||||
*
|
||||
* @param string $asserionURI The assertion type URI
|
||||
* @param string $assertionID The assertion ID to remove
|
||||
* @return bool True on success, false on failure
|
||||
*/
|
||||
public function removeAssertion($asserionURI, $assertionID);
|
||||
}
|
99
airtime_mvc/library/Zend/InfoCard/Cipher.php
Normal file
99
airtime_mvc/library/Zend/InfoCard/Cipher.php
Normal file
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Cipher.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Provides an abstraction for encryption ciphers used in an Information Card
|
||||
* implementation
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Cipher
|
||||
{
|
||||
/**
|
||||
* AES 256 Encryption with CBC
|
||||
*/
|
||||
const ENC_AES256CBC = 'http://www.w3.org/2001/04/xmlenc#aes256-cbc';
|
||||
|
||||
/**
|
||||
* AES 128 Encryption with CBC
|
||||
*/
|
||||
const ENC_AES128CBC = 'http://www.w3.org/2001/04/xmlenc#aes128-cbc';
|
||||
|
||||
/**
|
||||
* RSA Public Key Encryption with OAEP Padding
|
||||
*/
|
||||
const ENC_RSA_OAEP_MGF1P = 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p';
|
||||
|
||||
/**
|
||||
* RSA Public Key Encryption with no padding
|
||||
*/
|
||||
const ENC_RSA = 'http://www.w3.org/2001/04/xmlenc#rsa-1_5';
|
||||
|
||||
/**
|
||||
* Constructor (disabled)
|
||||
*
|
||||
* @return void
|
||||
* @codeCoverageIgnoreStart
|
||||
*/
|
||||
protected function __construct()
|
||||
{
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
/**
|
||||
* Returns an instance of a cipher object supported based on the URI provided
|
||||
*
|
||||
* @throws Zend_InfoCard_Cipher_Exception
|
||||
* @param string $uri The URI of the encryption method wantde
|
||||
* @return mixed an Instance of Zend_InfoCard_Cipher_Symmetric_Interface or Zend_InfoCard_Cipher_Pki_Interface
|
||||
* depending on URI
|
||||
*/
|
||||
static public function getInstanceByURI($uri)
|
||||
{
|
||||
switch($uri) {
|
||||
case self::ENC_AES256CBC:
|
||||
include_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.php';
|
||||
return new Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc();
|
||||
|
||||
case self::ENC_AES128CBC:
|
||||
include_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Aes128cbc.php';
|
||||
return new Zend_InfoCard_Cipher_Symmetric_Adapter_Aes128cbc();
|
||||
|
||||
case self::ENC_RSA_OAEP_MGF1P:
|
||||
include_once 'Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php';
|
||||
return new Zend_InfoCard_Cipher_Pki_Adapter_Rsa(Zend_InfoCard_Cipher_Pki_Adapter_Rsa::OAEP_PADDING);
|
||||
break;
|
||||
|
||||
case self::ENC_RSA:
|
||||
include_once 'Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php';
|
||||
return new Zend_InfoCard_Cipher_Pki_Adapter_Rsa(Zend_InfoCard_Cipher_Pki_Adapter_Rsa::NO_PADDING);
|
||||
break;
|
||||
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Unknown Cipher URI");
|
||||
}
|
||||
}
|
||||
}
|
38
airtime_mvc/library/Zend/InfoCard/Cipher/Exception.php
Normal file
38
airtime_mvc/library/Zend/InfoCard/Cipher/Exception.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Exception
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Cipher_Exception extends Zend_InfoCard_Exception
|
||||
{
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Abstract.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Pki_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Pki/Interface.php';
|
||||
|
||||
/**
|
||||
* An abstract class for public-key ciphers
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_InfoCard_Cipher_Pki_Adapter_Abstract implements Zend_InfoCard_Cipher_Pki_Interface
|
||||
{
|
||||
/**
|
||||
* OAEP Padding public key encryption
|
||||
*/
|
||||
const OAEP_PADDING = 1;
|
||||
|
||||
/**
|
||||
* No padding public key encryption
|
||||
*/
|
||||
const NO_PADDING = 2;
|
||||
|
||||
/**
|
||||
* The type of padding to use
|
||||
*
|
||||
* @var integer one of the padding constants in this class
|
||||
*/
|
||||
protected $_padding;
|
||||
|
||||
/**
|
||||
* Set the padding of the public key encryption
|
||||
*
|
||||
* @throws Zend_InfoCard_Cipher_Exception
|
||||
* @param integer $padding One of the constnats in this class
|
||||
* @return Zend_InfoCard_Pki_Adapter_Abstract
|
||||
*/
|
||||
public function setPadding($padding)
|
||||
{
|
||||
switch($padding) {
|
||||
case self::OAEP_PADDING:
|
||||
case self::NO_PADDING:
|
||||
$this->_padding = $padding;
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Invalid Padding Type Provided");
|
||||
break;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retruns the public-key padding used
|
||||
*
|
||||
* @return integer One of the padding constants in this class
|
||||
*/
|
||||
public function getPadding()
|
||||
{
|
||||
return $this->_padding;
|
||||
}
|
||||
}
|
120
airtime_mvc/library/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php
Normal file
120
airtime_mvc/library/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Rsa.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Pki_Adapter_Abstract
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Pki/Adapter/Abstract.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Pki_Rsa_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Pki/Rsa/Interface.php';
|
||||
|
||||
/**
|
||||
* RSA Public Key Encryption Cipher Object for the InfoCard component. Relies on OpenSSL
|
||||
* to implement the RSA algorithm
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Cipher_Pki_Adapter_Rsa
|
||||
extends Zend_InfoCard_Cipher_Pki_Adapter_Abstract
|
||||
implements Zend_InfoCard_Cipher_Pki_Rsa_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Object Constructor
|
||||
*
|
||||
* @param integer $padding The type of Padding to use
|
||||
*/
|
||||
public function __construct($padding = Zend_InfoCard_Cipher_Pki_Adapter_Abstract::NO_PADDING)
|
||||
{
|
||||
// Can't test this..
|
||||
// @codeCoverageIgnoreStart
|
||||
if(!extension_loaded('openssl')) {
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Use of this PKI RSA Adapter requires the openssl extension loaded");
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
$this->setPadding($padding);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrypts RSA encrypted data using the given private key
|
||||
*
|
||||
* @throws Zend_InfoCard_Cipher_Exception
|
||||
* @param string $encryptedData The encrypted data in binary format
|
||||
* @param string $privateKey The private key in binary format
|
||||
* @param string $password The private key passphrase
|
||||
* @param integer $padding The padding to use during decryption (of not provided object value will be used)
|
||||
* @return string The decrypted data
|
||||
*/
|
||||
public function decrypt($encryptedData, $privateKey, $password = null, $padding = null)
|
||||
{
|
||||
$private_key = openssl_pkey_get_private(array($privateKey, $password));
|
||||
|
||||
if(!$private_key) {
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Failed to load private key");
|
||||
}
|
||||
|
||||
if($padding !== null) {
|
||||
try {
|
||||
$this->setPadding($padding);
|
||||
} catch(Exception $e) {
|
||||
openssl_free_key($private_key);
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
switch($this->getPadding()) {
|
||||
case self::NO_PADDING:
|
||||
$openssl_padding = OPENSSL_NO_PADDING;
|
||||
break;
|
||||
case self::OAEP_PADDING:
|
||||
$openssl_padding = OPENSSL_PKCS1_OAEP_PADDING;
|
||||
break;
|
||||
}
|
||||
|
||||
$result = openssl_private_decrypt($encryptedData, $decryptedData, $private_key, $openssl_padding);
|
||||
|
||||
openssl_free_key($private_key);
|
||||
|
||||
if(!$result) {
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Unable to Decrypt Value using provided private key");
|
||||
}
|
||||
|
||||
if($this->getPadding() == self::NO_PADDING) {
|
||||
$decryptedData = substr($decryptedData, 2);
|
||||
$start = strpos($decryptedData, 0) + 1;
|
||||
$decryptedData = substr($decryptedData, $start);
|
||||
}
|
||||
|
||||
return $decryptedData;
|
||||
}
|
||||
}
|
33
airtime_mvc/library/Zend/InfoCard/Cipher/Pki/Interface.php
Normal file
33
airtime_mvc/library/Zend/InfoCard/Cipher/Pki/Interface.php
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Empty Interface represents a Pki cipher object
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Cipher_Pki_Interface
|
||||
{
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_PKI_Adapter_Abstract
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Pki/Adapter/Abstract.php';
|
||||
|
||||
/**
|
||||
* The interface which defines the RSA Public-key encryption object
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Cipher_Pki_Rsa_Interface
|
||||
{
|
||||
/**
|
||||
* Decrypts RSA encrypted data using the given private key
|
||||
*
|
||||
* @throws Zend_InfoCard_Cipher_Exception
|
||||
* @param string $encryptedData The encrypted data in binary format
|
||||
* @param string $privateKey The private key in binary format
|
||||
* @param string $password The private key passphrase
|
||||
* @param integer $padding The padding to use during decryption (of not provided object value will be used)
|
||||
* @return string The decrypted data
|
||||
*/
|
||||
public function decrypt($encryptedData, $privateKey, $password = null, $padding = Zend_InfoCard_Cipher_Pki_Adapter_Abstract::NO_PADDING);
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Abstract.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Symmetric_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Symmetric/Interface.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_InfoCard_Cipher_Symmetric_Adapter_Abstract
|
||||
implements Zend_InfoCard_Cipher_Symmetric_Interface
|
||||
{
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Aes128cbc.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.php';
|
||||
|
||||
/**
|
||||
* Implements AES128 with CBC encryption implemented using the mCrypt extension
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Cipher_Symmetric_Adapter_Aes128cbc
|
||||
extends Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc
|
||||
{
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Aes256cbc.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Symmetric_Adapter_Abstract
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Abstract.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Symmetric/Aes256cbc/Interface.php';
|
||||
|
||||
/**
|
||||
* Implements AES256 with CBC encryption implemented using the mCrypt extension
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc
|
||||
extends Zend_InfoCard_Cipher_Symmetric_Adapter_Abstract
|
||||
implements Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
|
||||
{
|
||||
/**
|
||||
* The MCRYPT Cipher constant for this encryption
|
||||
*/
|
||||
const MCRYPT_CIPHER = MCRYPT_RIJNDAEL_128;
|
||||
|
||||
/**
|
||||
* The MCRYPT Mode constant for this encryption
|
||||
*/
|
||||
const MCRYPT_MODE = MCRYPT_MODE_CBC;
|
||||
|
||||
/**
|
||||
* The default length of the IV to use
|
||||
*/
|
||||
const IV_LENGTH = 16;
|
||||
|
||||
/**
|
||||
* The object constructor
|
||||
*
|
||||
* @throws Zend_InfoCard_Cipher_Exception
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Can't test for this
|
||||
// @codeCoverageIgnoreStart
|
||||
if(!extension_loaded('mcrypt')) {
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Use of the AES256CBC Cipher requires the mcrypt extension");
|
||||
}
|
||||
// @codeCoveregIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrypts data using the AES Algorithm using the mCrypt extension
|
||||
*
|
||||
* @throws Zend_InfoCard_Cipher_Exception
|
||||
* @param string $encryptedData The encrypted data in binary format
|
||||
* @param string $decryptionKey The decryption key
|
||||
* @param integer $iv_length The IV length to use
|
||||
* @return string the decrypted data with any terminating nulls removed
|
||||
*/
|
||||
public function decrypt($encryptedData, $decryptionKey, $iv_length = null)
|
||||
{
|
||||
|
||||
$iv_length = ($iv_length === null) ? self::IV_LENGTH : $iv_length;
|
||||
|
||||
$mcrypt_iv = null;
|
||||
|
||||
if($iv_length > 0) {
|
||||
$mcrypt_iv = substr($encryptedData, 0, $iv_length);
|
||||
$encryptedData = substr($encryptedData, $iv_length);
|
||||
}
|
||||
|
||||
$decrypted = mcrypt_decrypt(self::MCRYPT_CIPHER, $decryptionKey, $encryptedData, self::MCRYPT_MODE, $mcrypt_iv);
|
||||
|
||||
if(!$decrypted) {
|
||||
require_once 'Zend/InfoCard/Cipher/Exception.php';
|
||||
throw new Zend_InfoCard_Cipher_Exception("Failed to decrypt data using AES256CBC Algorithm");
|
||||
}
|
||||
|
||||
$decryptedLength = strlen($decrypted);
|
||||
$paddingLength = substr($decrypted, $decryptedLength -1, 1);
|
||||
$decrypted = substr($decrypted, 0, $decryptedLength - ord($paddingLength));
|
||||
|
||||
return rtrim($decrypted, "\0");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Cipher/Symmetric/Aes256cbc/Interface.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Cipher_Symmetric_Aes128cbc_Interface
|
||||
extends Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
|
||||
{
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
|
||||
{
|
||||
public function decrypt($encryptedData, $decryptionKey, $iv_length = null);
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Cipher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Cipher_Symmetric_Interface
|
||||
{
|
||||
}
|
307
airtime_mvc/library/Zend/InfoCard/Claims.php
Normal file
307
airtime_mvc/library/Zend/InfoCard/Claims.php
Normal file
|
@ -0,0 +1,307 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Claims.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Result value of the InfoCard component, contains any error messages and claims
|
||||
* from the processing of an information card.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Claims
|
||||
{
|
||||
/**
|
||||
* Successful validation and extraion of claims
|
||||
*/
|
||||
const RESULT_SUCCESS = 1;
|
||||
|
||||
/**
|
||||
* Indicates there was an error processing the XML document
|
||||
*/
|
||||
const RESULT_PROCESSING_FAILURE = 2;
|
||||
|
||||
/**
|
||||
* Indicates that the signature values within the XML document failed verification
|
||||
*/
|
||||
const RESULT_VALIDATION_FAILURE = 3;
|
||||
|
||||
/**
|
||||
* The default namespace to assume in these claims
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_defaultNamespace = null;
|
||||
|
||||
/**
|
||||
* A boolean indicating if the claims should be consider "valid" or not based on processing
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $_isValid = true;
|
||||
|
||||
/**
|
||||
* The error message if any
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_error = "";
|
||||
|
||||
/**
|
||||
* An array of claims taken from the information card
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_claims;
|
||||
|
||||
/**
|
||||
* The result code of processing the information card as defined by the constants of this class
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_code;
|
||||
|
||||
/**
|
||||
* Override for the safeguard which ensures that you don't use claims which failed validation.
|
||||
* Used in situations when there was a validation error you'd like to ignore
|
||||
*
|
||||
* @return Zend_InfoCard_Claims
|
||||
*/
|
||||
public function forceValid()
|
||||
{
|
||||
trigger_error("Forcing Claims to be valid although it is a security risk", E_USER_WARNING);
|
||||
$this->_isValid = true;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the PPI (Private Personal Identifier) associated with the information card
|
||||
*
|
||||
* @return string the private personal identifier
|
||||
*/
|
||||
public function getCardID()
|
||||
{
|
||||
return $this->getClaim('http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the default namespace used in this information card. If a default namespace was not
|
||||
* set, it figures out which one to consider 'default' by taking the first namespace sorted by use-count
|
||||
* in claims
|
||||
*
|
||||
* @throws Zend_InfoCard_Exception
|
||||
* @return string The default namespace
|
||||
*/
|
||||
public function getDefaultNamespace()
|
||||
{
|
||||
if($this->_defaultNamespace === null) {
|
||||
$namespaces = array();
|
||||
$leader = '';
|
||||
foreach($this->_claims as $claim) {
|
||||
if(!isset($namespaces[$claim['namespace']])) {
|
||||
$namespaces[$claim['namespace']] = 1;
|
||||
} else {
|
||||
$namespaces[$claim['namespace']]++;
|
||||
}
|
||||
|
||||
if(empty($leader) || ($namespaces[$claim['namespace']] > $leader)) {
|
||||
$leader = $claim['namespace'];
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($leader)) {
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
throw new Zend_InfoCard_Exception("Failed to determine default namespace");
|
||||
}
|
||||
|
||||
$this->setDefaultNamespace($leader);
|
||||
}
|
||||
|
||||
return $this->_defaultNamespace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default namespace, overriding any existing default
|
||||
*
|
||||
* @throws Zend_InfoCard_Exception
|
||||
* @param string $namespace The default namespace to use
|
||||
* @return Zend_InfoCard_Claims
|
||||
*/
|
||||
public function setDefaultNamespace($namespace)
|
||||
{
|
||||
|
||||
foreach($this->_claims as $claim) {
|
||||
if($namespace == $claim['namespace']) {
|
||||
$this->_defaultNamespace = $namespace;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
throw new Zend_InfoCard_Exception("At least one claim must exist in specified namespace to make it the default namespace");
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if this claim object contains validated claims or not
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isValid()
|
||||
{
|
||||
return $this->_isValid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the error message contained within the claims object
|
||||
*
|
||||
* @param string $error The error message
|
||||
* @return Zend_InfoCard_Claims
|
||||
*/
|
||||
public function setError($error)
|
||||
{
|
||||
$this->_error = $error;
|
||||
$this->_isValid = false;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the error message contained within the claims object
|
||||
*
|
||||
* @return string The error message
|
||||
*/
|
||||
public function getErrorMsg()
|
||||
{
|
||||
return $this->_error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the claims for the claims object. Can only be set once and is done
|
||||
* by the component itself. Internal use only.
|
||||
*
|
||||
* @throws Zend_InfoCard_Exception
|
||||
* @param array $claims
|
||||
* @return Zend_InfoCard_Claims
|
||||
*/
|
||||
public function setClaims(Array $claims)
|
||||
{
|
||||
if($this->_claims !== null) {
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
throw new Zend_InfoCard_Exception("Claim objects are read-only");
|
||||
}
|
||||
|
||||
$this->_claims = $claims;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the result code of the claims object.
|
||||
*
|
||||
* @throws Zend_InfoCard_Exception
|
||||
* @param int $code The result code
|
||||
* @return Zend_InfoCard_Claims
|
||||
*/
|
||||
public function setCode($code)
|
||||
{
|
||||
switch($code) {
|
||||
case self::RESULT_PROCESSING_FAILURE:
|
||||
case self::RESULT_SUCCESS:
|
||||
case self::RESULT_VALIDATION_FAILURE:
|
||||
$this->_code = $code;
|
||||
return $this;
|
||||
}
|
||||
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
throw new Zend_InfoCard_Exception("Attempted to set unknown error code");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the result code of the claims object
|
||||
*
|
||||
* @return integer The result code
|
||||
*/
|
||||
public function getCode()
|
||||
{
|
||||
return $this->_code;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a claim by providing its complete claim URI
|
||||
*
|
||||
* @param string $claimURI The complete claim URI to retrieve
|
||||
* @return mixed The claim matching that specific URI or null if not found
|
||||
*/
|
||||
public function getClaim($claimURI)
|
||||
{
|
||||
if($this->claimExists($claimURI)) {
|
||||
return $this->_claims[$claimURI]['value'];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if a specific claim URI exists or not within the object
|
||||
*
|
||||
* @param string $claimURI The complete claim URI to check
|
||||
* @return bool true if the claim exists, false if not found
|
||||
*/
|
||||
public function claimExists($claimURI)
|
||||
{
|
||||
return isset($this->_claims[$claimURI]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic helper function
|
||||
* @throws Zend_InfoCard_Exception
|
||||
*/
|
||||
public function __unset($k)
|
||||
{
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
throw new Zend_InfoCard_Exception("Claim objects are read-only");
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic helper function
|
||||
*/
|
||||
public function __isset($k)
|
||||
{
|
||||
return $this->claimExists("{$this->getDefaultNamespace()}/$k");
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic helper function
|
||||
*/
|
||||
public function __get($k)
|
||||
{
|
||||
return $this->getClaim("{$this->getDefaultNamespace()}/$k");
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic helper function
|
||||
* @throws Zend_InfoCard_Exception
|
||||
*/
|
||||
public function __set($k, $v)
|
||||
{
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
throw new Zend_InfoCard_Exception("Claim objects are read-only");
|
||||
}
|
||||
}
|
43
airtime_mvc/library/Zend/InfoCard/Exception.php
Normal file
43
airtime_mvc/library/Zend/InfoCard/Exception.php
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
if (class_exists("Zend_Exception")) {
|
||||
abstract class Zend_InfoCard_Exception_Abstract extends Zend_Exception
|
||||
{
|
||||
}
|
||||
} else {
|
||||
abstract class Zend_InfoCard_Exception_Abstract extends Exception
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Base Exception class for the InfoCard component
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Exception extends Zend_InfoCard_Exception_Abstract
|
||||
{
|
||||
}
|
88
airtime_mvc/library/Zend/InfoCard/Xml/Assertion.php
Normal file
88
airtime_mvc/library/Zend/InfoCard/Xml/Assertion.php
Normal file
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Assertion.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Assertion_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Assertion/Interface.php';
|
||||
|
||||
/**
|
||||
* Factory object to retrieve an Assertion object based on the type of XML document provided
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
final class Zend_InfoCard_Xml_Assertion
|
||||
{
|
||||
/**
|
||||
* The namespace for a SAML-formatted Assertion document
|
||||
*/
|
||||
const TYPE_SAML = 'urn:oasis:names:tc:SAML:1.0:assertion';
|
||||
|
||||
/**
|
||||
* Constructor (disabled)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an instance of a InfoCard Assertion object based on the XML data provided
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @param string $xmlData The XML-Formatted Assertion
|
||||
* @return Zend_InfoCard_Xml_Assertion_Interface
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
static public function getInstance($xmlData)
|
||||
{
|
||||
|
||||
if($xmlData instanceof Zend_InfoCard_Xml_Element) {
|
||||
$strXmlData = $xmlData->asXML();
|
||||
} else if (is_string($xmlData)) {
|
||||
$strXmlData = $xmlData;
|
||||
} else {
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
|
||||
}
|
||||
|
||||
$sxe = simplexml_load_string($strXmlData);
|
||||
|
||||
$namespaces = $sxe->getDocNameSpaces();
|
||||
|
||||
foreach($namespaces as $namespace) {
|
||||
switch($namespace) {
|
||||
case self::TYPE_SAML:
|
||||
include_once 'Zend/InfoCard/Xml/Assertion/Saml.php';
|
||||
return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_Assertion_Saml', null);
|
||||
}
|
||||
}
|
||||
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to determine Assertion type by Namespace");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* The Interface required by any InfoCard Assertion Object implemented within the component
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Xml_Assertion_Interface
|
||||
{
|
||||
/**
|
||||
* Get the Assertion ID of the assertion
|
||||
*
|
||||
* @return string The Assertion ID
|
||||
*/
|
||||
public function getAssertionID();
|
||||
|
||||
/**
|
||||
* Return an array of attributes (claims) contained within the assertion
|
||||
*
|
||||
* @return array An array of attributes / claims within the assertion
|
||||
*/
|
||||
public function getAttributes();
|
||||
|
||||
/**
|
||||
* Get the Assertion URI for this type of Assertion
|
||||
*
|
||||
* @return string the Assertion URI
|
||||
*/
|
||||
public function getAssertionURI();
|
||||
|
||||
/**
|
||||
* Return an array of conditions which the assertions are predicated on
|
||||
*
|
||||
* @return array an array of conditions
|
||||
*/
|
||||
public function getConditions();
|
||||
|
||||
/**
|
||||
* Validate the conditions array returned from the getConditions() call
|
||||
*
|
||||
* @param array $conditions An array of condtions for the assertion taken from getConditions()
|
||||
* @return mixed Boolean true on success, an array of condition, error message on failure
|
||||
*/
|
||||
public function validateConditions(Array $conditions);
|
||||
}
|
284
airtime_mvc/library/Zend/InfoCard/Xml/Assertion/Saml.php
Normal file
284
airtime_mvc/library/Zend/InfoCard/Xml/Assertion/Saml.php
Normal file
|
@ -0,0 +1,284 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Saml.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Assertion_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Assertion/Interface.php';
|
||||
|
||||
/**
|
||||
* A Xml Assertion Document in SAML Token format
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Assertion_Saml
|
||||
extends Zend_InfoCard_Xml_Element
|
||||
implements Zend_InfoCard_Xml_Assertion_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Audience Restriction Condition
|
||||
*/
|
||||
const CONDITION_AUDIENCE = 'AudienceRestrictionCondition';
|
||||
|
||||
/**
|
||||
* The URI for a 'bearer' confirmation
|
||||
*/
|
||||
const CONFIRMATION_BEARER = 'urn:oasis:names:tc:SAML:1.0:cm:bearer';
|
||||
|
||||
/**
|
||||
* The amount of time in seconds to buffer when checking conditions to ensure
|
||||
* that differences between client/server clocks don't interfer too much
|
||||
*/
|
||||
const CONDITION_TIME_ADJ = 3600; // +- 5 minutes
|
||||
|
||||
protected function _getServerName() {
|
||||
return $_SERVER['SERVER_NAME'];
|
||||
}
|
||||
|
||||
protected function _getServerPort() {
|
||||
return $_SERVER['SERVER_PORT'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the conditions array returned from the getConditions() call
|
||||
*
|
||||
* @param array $conditions An array of condtions for the assertion taken from getConditions()
|
||||
* @return mixed Boolean true on success, an array of condition, error message on failure
|
||||
*/
|
||||
public function validateConditions(Array $conditions)
|
||||
{
|
||||
|
||||
$currentTime = time();
|
||||
|
||||
if(!empty($conditions)) {
|
||||
|
||||
foreach($conditions as $condition => $conditionValue) {
|
||||
switch(strtolower($condition)) {
|
||||
case 'audiencerestrictioncondition':
|
||||
|
||||
$serverName = $this->_getServerName();
|
||||
$serverPort = $this->_getServerPort();
|
||||
|
||||
$self_aliases[] = $serverName;
|
||||
$self_aliases[] = "{{$serverName}:{$serverPort}";
|
||||
|
||||
$found = false;
|
||||
if(is_array($conditionValue)) {
|
||||
foreach($conditionValue as $audience) {
|
||||
|
||||
list(,,$audience) = explode('/', $audience);
|
||||
if(in_array($audience, $self_aliases)) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$found) {
|
||||
return array($condition, 'Could not find self in allowed audience list');
|
||||
}
|
||||
|
||||
break;
|
||||
case 'notbefore':
|
||||
$notbeforetime = strtotime($conditionValue);
|
||||
|
||||
if($currentTime < $notbeforetime) {
|
||||
if($currentTime + self::CONDITION_TIME_ADJ < $notbeforetime) {
|
||||
return array($condition, 'Current time is before specified window');
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 'notonorafter':
|
||||
$notonoraftertime = strtotime($conditionValue);
|
||||
|
||||
if($currentTime >= $notonoraftertime) {
|
||||
if($currentTime - self::CONDITION_TIME_ADJ >= $notonoraftertime) {
|
||||
return array($condition, 'Current time is after specified window');
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Assertion URI for this type of Assertion
|
||||
*
|
||||
* @return string the Assertion URI
|
||||
*/
|
||||
public function getAssertionURI()
|
||||
{
|
||||
return Zend_InfoCard_Xml_Assertion::TYPE_SAML;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Major Version of the SAML Assertion
|
||||
*
|
||||
* @return integer The major version number
|
||||
*/
|
||||
public function getMajorVersion()
|
||||
{
|
||||
return (int)(string)$this['MajorVersion'];
|
||||
}
|
||||
|
||||
/**
|
||||
* The Minor Version of the SAML Assertion
|
||||
*
|
||||
* @return integer The minor version number
|
||||
*/
|
||||
public function getMinorVersion()
|
||||
{
|
||||
return (int)(string)$this['MinorVersion'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Assertion ID of the assertion
|
||||
*
|
||||
* @return string The Assertion ID
|
||||
*/
|
||||
public function getAssertionID()
|
||||
{
|
||||
return (string)$this['AssertionID'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Issuer URI of the assertion
|
||||
*
|
||||
* @return string the URI of the assertion Issuer
|
||||
*/
|
||||
public function getIssuer()
|
||||
{
|
||||
return (string)$this['Issuer'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Timestamp of when the assertion was issued
|
||||
*
|
||||
* @return integer a UNIX timestamp representing when the assertion was issued
|
||||
*/
|
||||
public function getIssuedTimestamp()
|
||||
{
|
||||
return strtotime((string)$this['IssueInstant']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of conditions which the assertions are predicated on
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return array an array of conditions
|
||||
*/
|
||||
public function getConditions()
|
||||
{
|
||||
|
||||
list($conditions) = $this->xpath("//saml:Conditions");
|
||||
|
||||
if(!($conditions instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the saml:Conditions block");
|
||||
}
|
||||
|
||||
$retval = array();
|
||||
|
||||
foreach($conditions->children('urn:oasis:names:tc:SAML:1.0:assertion') as $key => $value) {
|
||||
switch($key) {
|
||||
case self::CONDITION_AUDIENCE:
|
||||
foreach($value->children('urn:oasis:names:tc:SAML:1.0:assertion') as $audience_key => $audience_value) {
|
||||
if($audience_key == 'Audience') {
|
||||
$retval[$key][] = (string)$audience_value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$retval['NotBefore'] = (string)$conditions['NotBefore'];
|
||||
$retval['NotOnOrAfter'] = (string)$conditions['NotOnOrAfter'];
|
||||
|
||||
return $retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get they KeyInfo element for the Subject KeyInfo block
|
||||
*
|
||||
* @todo Not Yet Implemented
|
||||
* @ignore
|
||||
*/
|
||||
public function getSubjectKeyInfo()
|
||||
{
|
||||
/**
|
||||
* @todo Not sure if this is part of the scope for now..
|
||||
*/
|
||||
|
||||
if($this->getConfirmationMethod() == self::CONFIRMATION_BEARER) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Cannot get Subject Key Info when Confirmation Method was Bearer");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the Confirmation Method URI used in the Assertion
|
||||
*
|
||||
* @return string The confirmation method URI
|
||||
*/
|
||||
public function getConfirmationMethod()
|
||||
{
|
||||
list($confirmation) = $this->xPath("//saml:ConfirmationMethod");
|
||||
return (string)$confirmation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of attributes (claims) contained within the assertion
|
||||
*
|
||||
* @return array An array of attributes / claims within the assertion
|
||||
*/
|
||||
public function getAttributes()
|
||||
{
|
||||
$attributes = $this->xPath('//saml:Attribute');
|
||||
|
||||
$retval = array();
|
||||
foreach($attributes as $key => $value) {
|
||||
|
||||
$retkey = (string)$value['AttributeNamespace'].'/'.(string)$value['AttributeName'];
|
||||
|
||||
$retval[$retkey]['name'] = (string)$value['AttributeName'];
|
||||
$retval[$retkey]['namespace'] = (string)$value['AttributeNamespace'];
|
||||
|
||||
list($aValue) = $value->children('urn:oasis:names:tc:SAML:1.0:assertion');
|
||||
$retval[$retkey]['value'] = (string)$aValue;
|
||||
}
|
||||
|
||||
return $retval;
|
||||
}
|
||||
}
|
107
airtime_mvc/library/Zend/InfoCard/Xml/Element.php
Normal file
107
airtime_mvc/library/Zend/InfoCard/Xml/Element.php
Normal file
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Element.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element/Interface.php';
|
||||
|
||||
/**
|
||||
* An abstract class representing a an XML data block
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_InfoCard_Xml_Element
|
||||
extends SimpleXMLElement
|
||||
implements Zend_InfoCard_Xml_Element_Interface
|
||||
{
|
||||
/**
|
||||
* Convert the object to a string by displaying its XML content
|
||||
*
|
||||
* @return string an XML representation of the object
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->asXML();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an XML Element object into a DOM object
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @param Zend_InfoCard_Xml_Element $e The object to convert
|
||||
* @return DOMElement A DOMElement representation of the same object
|
||||
*/
|
||||
static public function convertToDOM(Zend_InfoCard_Xml_Element $e)
|
||||
{
|
||||
$dom = dom_import_simplexml($e);
|
||||
|
||||
if(!($dom instanceof DOMElement)) {
|
||||
// Zend_InfoCard_Xml_Element exntes SimpleXMLElement, so this should *never* fail
|
||||
// @codeCoverageIgnoreStart
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("Failed to convert between SimpleXML and DOM");
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
return $dom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a DOMElement object into the specific class
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @param DOMElement $e The DOMElement object to convert
|
||||
* @param string $classname The name of the class to convert it to (must inhert from Zend_InfoCard_Xml_Element)
|
||||
* @return Zend_InfoCard_Xml_Element a Xml Element object from the DOM element
|
||||
*/
|
||||
static public function convertToObject(DOMElement $e, $classname)
|
||||
{
|
||||
if (!class_exists($classname)) {
|
||||
require_once 'Zend/Loader.php';
|
||||
Zend_Loader::loadClass($classname);
|
||||
}
|
||||
|
||||
$reflection = new ReflectionClass($classname);
|
||||
|
||||
if(!$reflection->isSubclassOf('Zend_InfoCard_Xml_Element')) {
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("DOM element must be converted to an instance of Zend_InfoCard_Xml_Element");
|
||||
}
|
||||
|
||||
$sxe = simplexml_import_dom($e, $classname);
|
||||
|
||||
if(!($sxe instanceof Zend_InfoCard_Xml_Element)) {
|
||||
// Since we just checked to see if this was a subclass of Zend_infoCard_Xml_Element this shoudl never fail
|
||||
// @codeCoverageIgnoreStart
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("Failed to convert between DOM and SimpleXML");
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
return $sxe;
|
||||
}
|
||||
}
|
44
airtime_mvc/library/Zend/InfoCard/Xml/Element/Interface.php
Normal file
44
airtime_mvc/library/Zend/InfoCard/Xml/Element/Interface.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* The Interface used to represent an XML Data Type
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Xml_Element_Interface
|
||||
{
|
||||
/**
|
||||
* Return the data within the object as an XML document
|
||||
*/
|
||||
public function asXML();
|
||||
|
||||
/**
|
||||
* Magic function which allows us to treat the object as a string to return XML
|
||||
* (same as the asXML() method)
|
||||
*/
|
||||
public function __toString();
|
||||
}
|
75
airtime_mvc/library/Zend/InfoCard/Xml/EncryptedData.php
Normal file
75
airtime_mvc/library/Zend/InfoCard/Xml/EncryptedData.php
Normal file
|
@ -0,0 +1,75 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: EncryptedData.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* A factory class for producing Zend_InfoCard_Xml_EncryptedData objects based on
|
||||
* the type of XML document provided
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
final class Zend_InfoCard_Xml_EncryptedData
|
||||
{
|
||||
/**
|
||||
* Constructor (disabled)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an instance of the class
|
||||
*
|
||||
* @param string $xmlData The XML EncryptedData String
|
||||
* @return Zend_InfoCard_Xml_EncryptedData_Abstract
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
static public function getInstance($xmlData)
|
||||
{
|
||||
|
||||
if($xmlData instanceof Zend_InfoCard_Xml_Element) {
|
||||
$strXmlData = $xmlData->asXML();
|
||||
} else if (is_string($xmlData)) {
|
||||
$strXmlData = $xmlData;
|
||||
} else {
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
|
||||
}
|
||||
|
||||
$sxe = simplexml_load_string($strXmlData);
|
||||
|
||||
switch($sxe['Type']) {
|
||||
case 'http://www.w3.org/2001/04/xmlenc#Element':
|
||||
include_once 'Zend/InfoCard/Xml/EncryptedData/XmlEnc.php';
|
||||
return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_EncryptedData_XmlEnc');
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Exception("Unknown EncryptedData type found");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Abstract.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_KeyInfo
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/KeyInfo.php';
|
||||
|
||||
/**
|
||||
* An abstract class representing a generic EncryptedData XML block. This class is extended
|
||||
* into a specific type of EncryptedData XML block (i.e. XmlEnc) as necessary
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_InfoCard_Xml_EncryptedData_Abstract extends Zend_InfoCard_Xml_Element
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns the KeyInfo Block
|
||||
*
|
||||
* @return Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
*/
|
||||
public function getKeyInfo()
|
||||
{
|
||||
return Zend_InfoCard_Xml_KeyInfo::getInstance($this->KeyInfo[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the Encryption method used to encrypt the assertion document
|
||||
* (the symmetric cipher)
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return string The URI of the Symmetric Encryption Method used
|
||||
*/
|
||||
public function getEncryptionMethod()
|
||||
{
|
||||
|
||||
/**
|
||||
* @todo This is pretty hacky unless we can always be confident that the first
|
||||
* EncryptionMethod block is the correct one (the AES or compariable symetric algorithm)..
|
||||
* the second is the PK method if provided.
|
||||
*/
|
||||
list($encryption_method) = $this->xpath("//enc:EncryptionMethod");
|
||||
|
||||
if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the enc:EncryptionMethod symmetric encryption block");
|
||||
}
|
||||
|
||||
$dom = self::convertToDOM($encryption_method);
|
||||
|
||||
if(!$dom->hasAttribute('Algorithm')) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to determine the encryption algorithm in the Symmetric enc:EncryptionMethod XML block");
|
||||
}
|
||||
|
||||
return $dom->getAttribute('Algorithm');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the encrypted block
|
||||
*
|
||||
* @return string the value of the encrypted CipherValue block
|
||||
*/
|
||||
abstract function getCipherValue();
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: XmlEnc.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_EncryptedData/Abstract.php
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/EncryptedData/Abstract.php';
|
||||
|
||||
/**
|
||||
* An XmlEnc formatted EncryptedData XML block
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_EncryptedData_XmlEnc extends Zend_InfoCard_Xml_EncryptedData_Abstract
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns the Encrypted CipherValue block from the EncryptedData XML document
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return string The value of the CipherValue block base64 encoded
|
||||
*/
|
||||
public function getCipherValue()
|
||||
{
|
||||
$this->registerXPathNamespace('enc', 'http://www.w3.org/2001/04/xmlenc#');
|
||||
|
||||
list(,$cipherdata) = $this->xpath("//enc:CipherData");
|
||||
|
||||
if(!($cipherdata instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the enc:CipherData block");
|
||||
}
|
||||
|
||||
list(,$ciphervalue) = $cipherdata->xpath("//enc:CipherValue");
|
||||
|
||||
if(!($ciphervalue instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to fidn the enc:CipherValue block");
|
||||
}
|
||||
|
||||
return (string)$ciphervalue;
|
||||
}
|
||||
}
|
174
airtime_mvc/library/Zend/InfoCard/Xml/EncryptedKey.php
Normal file
174
airtime_mvc/library/Zend/InfoCard/Xml/EncryptedKey.php
Normal file
|
@ -0,0 +1,174 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: EncryptedKey.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_EncryptedKey
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/EncryptedKey.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_KeyInfo_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/KeyInfo/Interface.php';
|
||||
|
||||
/**
|
||||
* An object representing an Xml EncryptedKEy block
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_EncryptedKey
|
||||
extends Zend_InfoCard_Xml_Element
|
||||
implements Zend_InfoCard_Xml_KeyInfo_Interface
|
||||
{
|
||||
/**
|
||||
* Return an instance of the object based on input XML Data
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @param string $xmlData The EncryptedKey XML Block
|
||||
* @return Zend_InfoCard_Xml_EncryptedKey
|
||||
*/
|
||||
static public function getInstance($xmlData)
|
||||
{
|
||||
if($xmlData instanceof Zend_InfoCard_Xml_Element) {
|
||||
$strXmlData = $xmlData->asXML();
|
||||
} else if (is_string($xmlData)) {
|
||||
$strXmlData = $xmlData;
|
||||
} else {
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
|
||||
}
|
||||
|
||||
$sxe = simplexml_load_string($strXmlData);
|
||||
|
||||
if($sxe->getName() != "EncryptedKey") {
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid XML Block provided for EncryptedKey");
|
||||
}
|
||||
|
||||
return simplexml_load_string($strXmlData, "Zend_InfoCard_Xml_EncryptedKey");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Encyption Method Algorithm URI of the block
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return string the Encryption method algorithm URI
|
||||
*/
|
||||
public function getEncryptionMethod()
|
||||
{
|
||||
|
||||
$this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
|
||||
list($encryption_method) = $this->xpath("//e:EncryptionMethod");
|
||||
|
||||
if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the e:EncryptionMethod KeyInfo encryption block");
|
||||
}
|
||||
|
||||
$dom = self::convertToDOM($encryption_method);
|
||||
|
||||
if(!$dom->hasAttribute('Algorithm')) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to determine the encryption algorithm in the Symmetric enc:EncryptionMethod XML block");
|
||||
}
|
||||
|
||||
return $dom->getAttribute('Algorithm');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Digest Method Algorithm URI used
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return string the Digest Method Algorithm URI
|
||||
*/
|
||||
public function getDigestMethod()
|
||||
{
|
||||
$this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
|
||||
list($encryption_method) = $this->xpath("//e:EncryptionMethod");
|
||||
|
||||
if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the e:EncryptionMethod KeyInfo encryption block");
|
||||
}
|
||||
|
||||
if(!($encryption_method->DigestMethod instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the DigestMethod block");
|
||||
}
|
||||
|
||||
$dom = self::convertToDOM($encryption_method->DigestMethod);
|
||||
|
||||
if(!$dom->hasAttribute('Algorithm')) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to determine the digest algorithm for the symmetric Keyinfo");
|
||||
}
|
||||
|
||||
return $dom->getAttribute('Algorithm');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the KeyInfo block object
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
*/
|
||||
public function getKeyInfo()
|
||||
{
|
||||
|
||||
if(isset($this->KeyInfo)) {
|
||||
return Zend_InfoCard_Xml_KeyInfo::getInstance($this->KeyInfo);
|
||||
}
|
||||
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to locate a KeyInfo block");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the encrypted value of the block in base64 format
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return string The Value of the CipherValue block in base64 format
|
||||
*/
|
||||
public function getCipherValue()
|
||||
{
|
||||
|
||||
$this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
|
||||
|
||||
list($cipherdata) = $this->xpath("//e:CipherData");
|
||||
|
||||
if(!($cipherdata instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to find the e:CipherData block");
|
||||
}
|
||||
|
||||
$cipherdata->registerXPathNameSpace('enc', 'http://www.w3.org/2001/04/xmlenc#');
|
||||
list($ciphervalue) = $cipherdata->xpath("//enc:CipherValue");
|
||||
|
||||
if(!($ciphervalue instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to fidn the enc:CipherValue block");
|
||||
}
|
||||
|
||||
return (string)$ciphervalue;
|
||||
}
|
||||
}
|
37
airtime_mvc/library/Zend/InfoCard/Xml/Exception.php
Normal file
37
airtime_mvc/library/Zend/InfoCard/Xml/Exception.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Exception
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Exception.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Exception extends Zend_InfoCard_Exception
|
||||
{
|
||||
}
|
90
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo.php
Normal file
90
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo.php
Normal file
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: KeyInfo.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element.php';
|
||||
|
||||
/**
|
||||
* Factory class to return a XML KeyInfo block based on input XML
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_KeyInfo
|
||||
{
|
||||
/**
|
||||
* Constructor (disabled)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an instance of KeyInfo object based on the input KeyInfo XML block
|
||||
*
|
||||
* @param string $xmlData The KeyInfo XML Block
|
||||
* @return Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
static public function getInstance($xmlData)
|
||||
{
|
||||
|
||||
if($xmlData instanceof Zend_InfoCard_Xml_Element) {
|
||||
$strXmlData = $xmlData->asXML();
|
||||
} else if (is_string($xmlData)) {
|
||||
$strXmlData = $xmlData;
|
||||
} else {
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
|
||||
}
|
||||
|
||||
$sxe = simplexml_load_string($strXmlData);
|
||||
|
||||
$namespaces = $sxe->getDocNameSpaces();
|
||||
|
||||
if(!empty($namespaces)) {
|
||||
foreach($sxe->getDocNameSpaces() as $namespace) {
|
||||
switch($namespace) {
|
||||
case 'http://www.w3.org/2000/09/xmldsig#':
|
||||
include_once 'Zend/InfoCard/Xml/KeyInfo/XmlDSig.php';
|
||||
return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_KeyInfo_XmlDSig');
|
||||
default:
|
||||
|
||||
throw new Zend_InfoCard_Xml_Exception("Unknown KeyInfo Namespace provided");
|
||||
// We are ignoring these lines, as XDebug reports each as a "non executed" line
|
||||
// which breaks my coverage %
|
||||
// @codeCoverageIgnoreStart
|
||||
}
|
||||
}
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
include_once 'Zend/InfoCard/Xml/KeyInfo/Default.php';
|
||||
return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_KeyInfo_Default');
|
||||
}
|
||||
}
|
37
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/Abstract.php
Normal file
37
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/Abstract.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Abstract.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_InfoCard_Xml_KeyInfo_Abstract extends Zend_InfoCard_Xml_Element
|
||||
{
|
||||
}
|
64
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/Default.php
Normal file
64
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/Default.php
Normal file
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Default.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/KeyInfo/Abstract.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_SecurityTokenReference
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/SecurityTokenReference.php';
|
||||
|
||||
/**
|
||||
* An object representation of a XML <KeyInfo> block which doesn't provide a namespace
|
||||
* In this context, it is assumed to mean that it is the type of KeyInfo block which
|
||||
* contains the SecurityTokenReference
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_KeyInfo_Default extends Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
{
|
||||
/**
|
||||
* Returns the object representation of the SecurityTokenReference block
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return Zend_InfoCard_Xml_SecurityTokenReference
|
||||
*/
|
||||
public function getSecurityTokenReference()
|
||||
{
|
||||
$this->registerXPathNamespace('o', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd');
|
||||
|
||||
list($sectokenref) = $this->xpath('//o:SecurityTokenReference');
|
||||
|
||||
if(!($sectokenref instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception('Could not locate the Security Token Reference');
|
||||
}
|
||||
|
||||
return Zend_InfoCard_Xml_SecurityTokenReference::getInstance($sectokenref);
|
||||
}
|
||||
}
|
38
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/Interface.php
Normal file
38
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/Interface.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Xml_KeyInfo_Interface
|
||||
{
|
||||
/**
|
||||
* Return an object representing a KeyInfo data type
|
||||
*
|
||||
* @return Zend_InfoCard_Xml_KeyInfo
|
||||
*/
|
||||
public function getKeyInfo();
|
||||
}
|
76
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/XmlDSig.php
Normal file
76
airtime_mvc/library/Zend/InfoCard/Xml/KeyInfo/XmlDSig.php
Normal file
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: XmlDSig.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/KeyInfo/Abstract.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_EncryptedKey
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/EncryptedKey.php';
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_KeyInfo_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/KeyInfo/Interface.php';
|
||||
|
||||
/**
|
||||
* Represents a Xml Digital Signature XML Data Block
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_KeyInfo_XmlDSig
|
||||
extends Zend_InfoCard_Xml_KeyInfo_Abstract
|
||||
implements Zend_InfoCard_Xml_KeyInfo_Interface
|
||||
{
|
||||
/**
|
||||
* Returns an instance of the EncryptedKey Data Block
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
* @return Zend_InfoCard_Xml_EncryptedKey
|
||||
*/
|
||||
public function getEncryptedKey()
|
||||
{
|
||||
$this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
|
||||
list($encryptedkey) = $this->xpath('//e:EncryptedKey');
|
||||
|
||||
if(!($encryptedkey instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Failed to retrieve encrypted key");
|
||||
}
|
||||
|
||||
return Zend_InfoCard_Xml_EncryptedKey::getInstance($encryptedkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the KeyInfo Block within the encrypted key
|
||||
*
|
||||
* @return Zend_InfoCard_Xml_KeyInfo_Default
|
||||
*/
|
||||
public function getKeyInfo()
|
||||
{
|
||||
return $this->getEncryptedKey()->getKeyInfo();
|
||||
}
|
||||
}
|
305
airtime_mvc/library/Zend/InfoCard/Xml/Security.php
Normal file
305
airtime_mvc/library/Zend/InfoCard/Xml/Security.php
Normal file
|
@ -0,0 +1,305 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Security.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Security_Transform
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Security/Transform.php';
|
||||
|
||||
/**
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Security
|
||||
{
|
||||
/**
|
||||
* ASN.1 type INTEGER class
|
||||
*/
|
||||
const ASN_TYPE_INTEGER = 0x02;
|
||||
|
||||
/**
|
||||
* ASN.1 type BIT STRING class
|
||||
*/
|
||||
const ASN_TYPE_BITSTRING = 0x03;
|
||||
|
||||
/**
|
||||
* ASN.1 type SEQUENCE class
|
||||
*/
|
||||
const ASN_TYPE_SEQUENCE = 0x30;
|
||||
|
||||
/**
|
||||
* The URI for Canonical Method C14N Exclusive
|
||||
*/
|
||||
const CANONICAL_METHOD_C14N_EXC = 'http://www.w3.org/2001/10/xml-exc-c14n#';
|
||||
|
||||
/**
|
||||
* The URI for Signature Method SHA1
|
||||
*/
|
||||
const SIGNATURE_METHOD_SHA1 = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1';
|
||||
|
||||
/**
|
||||
* The URI for Digest Method SHA1
|
||||
*/
|
||||
const DIGEST_METHOD_SHA1 = 'http://www.w3.org/2000/09/xmldsig#sha1';
|
||||
|
||||
/**
|
||||
* The Identifier for RSA Keys
|
||||
*/
|
||||
const RSA_KEY_IDENTIFIER = '300D06092A864886F70D0101010500';
|
||||
|
||||
/**
|
||||
* Constructor (disabled)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the signature of a provided XML block
|
||||
*
|
||||
* @param string $strXMLInput An XML block containing a Signature
|
||||
* @return bool True if the signature validated, false otherwise
|
||||
* @throws Zend_InfoCard_Xml_Security_Exception
|
||||
*/
|
||||
static public function validateXMLSignature($strXMLInput)
|
||||
{
|
||||
if(!extension_loaded('openssl')) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("You must have the openssl extension installed to use this class");
|
||||
}
|
||||
|
||||
$sxe = simplexml_load_string($strXMLInput);
|
||||
|
||||
if(!isset($sxe->Signature)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Could not identify XML Signature element");
|
||||
}
|
||||
|
||||
if(!isset($sxe->Signature->SignedInfo)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a SignedInfo block");
|
||||
}
|
||||
|
||||
if(!isset($sxe->Signature->SignatureValue)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a SignatureValue block");
|
||||
}
|
||||
|
||||
if(!isset($sxe->Signature->KeyInfo)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a KeyInfo block");
|
||||
}
|
||||
|
||||
if(!isset($sxe->Signature->KeyInfo->KeyValue)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a KeyValue block");
|
||||
}
|
||||
|
||||
switch((string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']) {
|
||||
case self::CANONICAL_METHOD_C14N_EXC:
|
||||
$cMethod = (string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm'];
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported CanonicalizationMethod Requested");
|
||||
break;
|
||||
}
|
||||
|
||||
switch((string)$sxe->Signature->SignedInfo->SignatureMethod['Algorithm']) {
|
||||
case self::SIGNATURE_METHOD_SHA1:
|
||||
$sMethod = (string)$sxe->Signature->SignedInfo->SignatureMethod['Algorithm'];
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported SignatureMethod Requested");
|
||||
break;
|
||||
}
|
||||
|
||||
switch((string)$sxe->Signature->SignedInfo->Reference->DigestMethod['Algorithm']) {
|
||||
case self::DIGEST_METHOD_SHA1:
|
||||
$dMethod = (string)$sxe->Signature->SignedInfo->Reference->DigestMethod['Algorithm'];
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported DigestMethod Requested");
|
||||
break;
|
||||
}
|
||||
|
||||
$base64DecodeSupportsStrictParam = version_compare(PHP_VERSION, '5.2.0', '>=');
|
||||
|
||||
if ($base64DecodeSupportsStrictParam) {
|
||||
$dValue = base64_decode((string)$sxe->Signature->SignedInfo->Reference->DigestValue, true);
|
||||
} else {
|
||||
$dValue = base64_decode((string)$sxe->Signature->SignedInfo->Reference->DigestValue);
|
||||
}
|
||||
|
||||
if ($base64DecodeSupportsStrictParam) {
|
||||
$signatureValue = base64_decode((string)$sxe->Signature->SignatureValue, true);
|
||||
} else {
|
||||
$signatureValue = base64_decode((string)$sxe->Signature->SignatureValue);
|
||||
}
|
||||
|
||||
$transformer = new Zend_InfoCard_Xml_Security_Transform();
|
||||
|
||||
foreach($sxe->Signature->SignedInfo->Reference->Transforms->children() as $transform) {
|
||||
$transformer->addTransform((string)$transform['Algorithm']);
|
||||
}
|
||||
|
||||
$transformed_xml = $transformer->applyTransforms($strXMLInput);
|
||||
|
||||
$transformed_xml_binhash = pack("H*", sha1($transformed_xml));
|
||||
|
||||
if($transformed_xml_binhash != $dValue) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Locally Transformed XML does not match XML Document. Cannot Verify Signature");
|
||||
}
|
||||
|
||||
$public_key = null;
|
||||
|
||||
switch(true) {
|
||||
case isset($sxe->Signature->KeyInfo->KeyValue->X509Certificate):
|
||||
|
||||
$certificate = (string)$sxe->Signature->KeyInfo->KeyValue->X509Certificate;
|
||||
|
||||
|
||||
$pem = "-----BEGIN CERTIFICATE-----\n" .
|
||||
wordwrap($certificate, 64, "\n", true) .
|
||||
"\n-----END CERTIFICATE-----";
|
||||
|
||||
$public_key = openssl_pkey_get_public($pem);
|
||||
|
||||
if(!$public_key) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Unable to extract and prcoess X509 Certificate from KeyValue");
|
||||
}
|
||||
|
||||
break;
|
||||
case isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue):
|
||||
|
||||
if(!isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Modulus) ||
|
||||
!isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Exponent)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("RSA Key Value not in Modulus/Exponent form");
|
||||
}
|
||||
|
||||
$modulus = base64_decode((string)$sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Modulus);
|
||||
$exponent = base64_decode((string)$sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Exponent);
|
||||
|
||||
$pem_public_key = self::_getPublicKeyFromModExp($modulus, $exponent);
|
||||
|
||||
$public_key = openssl_pkey_get_public ($pem_public_key);
|
||||
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Unable to determine or unsupported representation of the KeyValue block");
|
||||
}
|
||||
|
||||
$transformer = new Zend_InfoCard_Xml_Security_Transform();
|
||||
$transformer->addTransform((string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']);
|
||||
|
||||
// The way we are doing our XML processing requires that we specifically add this
|
||||
// (even though it's in the <Signature> parent-block).. otherwise, our canonical form
|
||||
// fails signature verification
|
||||
$sxe->Signature->SignedInfo->addAttribute('xmlns', 'http://www.w3.org/2000/09/xmldsig#');
|
||||
|
||||
$canonical_signedinfo = $transformer->applyTransforms($sxe->Signature->SignedInfo->asXML());
|
||||
|
||||
if(@openssl_verify($canonical_signedinfo, $signatureValue, $public_key)) {
|
||||
return (string)$sxe->Signature->SignedInfo->Reference['URI'];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform an RSA Key in Modulus/Exponent format into a PEM encoding and
|
||||
* return an openssl resource for it
|
||||
*
|
||||
* @param string $modulus The RSA Modulus in binary format
|
||||
* @param string $exponent The RSA exponent in binary format
|
||||
* @return string The PEM encoded version of the key
|
||||
*/
|
||||
static protected function _getPublicKeyFromModExp($modulus, $exponent)
|
||||
{
|
||||
$modulusInteger = self::_encodeValue($modulus, self::ASN_TYPE_INTEGER);
|
||||
$exponentInteger = self::_encodeValue($exponent, self::ASN_TYPE_INTEGER);
|
||||
$modExpSequence = self::_encodeValue($modulusInteger . $exponentInteger, self::ASN_TYPE_SEQUENCE);
|
||||
$modExpBitString = self::_encodeValue($modExpSequence, self::ASN_TYPE_BITSTRING);
|
||||
|
||||
$binRsaKeyIdentifier = pack( "H*", self::RSA_KEY_IDENTIFIER );
|
||||
|
||||
$publicKeySequence = self::_encodeValue($binRsaKeyIdentifier . $modExpBitString, self::ASN_TYPE_SEQUENCE);
|
||||
|
||||
$publicKeyInfoBase64 = base64_encode( $publicKeySequence );
|
||||
|
||||
$publicKeyString = "-----BEGIN PUBLIC KEY-----\n";
|
||||
$publicKeyString .= wordwrap($publicKeyInfoBase64, 64, "\n", true);
|
||||
$publicKeyString .= "\n-----END PUBLIC KEY-----\n";
|
||||
|
||||
return $publicKeyString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a limited set of data types into ASN.1 encoding format
|
||||
* which is used in X.509 certificates
|
||||
*
|
||||
* @param string $data The data to encode
|
||||
* @param const $type The encoding format constant
|
||||
* @return string The encoded value
|
||||
* @throws Zend_InfoCard_Xml_Security_Exception
|
||||
*/
|
||||
static protected function _encodeValue($data, $type)
|
||||
{
|
||||
// Null pad some data when we get it (integer values > 128 and bitstrings)
|
||||
if( (($type == self::ASN_TYPE_INTEGER) && (ord($data) > 0x7f)) ||
|
||||
($type == self::ASN_TYPE_BITSTRING)) {
|
||||
$data = "\0$data";
|
||||
}
|
||||
|
||||
$len = strlen($data);
|
||||
|
||||
// encode the value based on length of the string
|
||||
// I'm fairly confident that this is by no means a complete implementation
|
||||
// but it is enough for our purposes
|
||||
switch(true) {
|
||||
case ($len < 128):
|
||||
return sprintf("%c%c%s", $type, $len, $data);
|
||||
case ($len < 0x0100):
|
||||
return sprintf("%c%c%c%s", $type, 0x81, $len, $data);
|
||||
case ($len < 0x010000):
|
||||
return sprintf("%c%c%c%c%s", $type, 0x82, $len / 0x0100, $len % 0x0100, $data);
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Could not encode value");
|
||||
}
|
||||
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Invalid code path");
|
||||
}
|
||||
}
|
37
airtime_mvc/library/Zend/InfoCard/Xml/Security/Exception.php
Normal file
37
airtime_mvc/library/Zend/InfoCard/Xml/Security/Exception.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Exception.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Security_Exception extends Zend_InfoCard_Xml_Exception
|
||||
{
|
||||
}
|
116
airtime_mvc/library/Zend/InfoCard/Xml/Security/Transform.php
Normal file
116
airtime_mvc/library/Zend/InfoCard/Xml/Security/Transform.php
Normal file
|
@ -0,0 +1,116 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Transform.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* A class to create a transform rule set based on XML URIs and then apply those rules
|
||||
* in the correct order to a given XML input
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Security_Transform
|
||||
{
|
||||
/**
|
||||
* A list of transforms to apply
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_transformList = array();
|
||||
|
||||
/**
|
||||
* Returns the name of the transform class based on a given URI
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Security_Exception
|
||||
* @param string $uri The transform URI
|
||||
* @return string The transform implementation class name
|
||||
*/
|
||||
protected function _findClassbyURI($uri)
|
||||
{
|
||||
switch($uri) {
|
||||
case 'http://www.w3.org/2000/09/xmldsig#enveloped-signature':
|
||||
return 'Zend_InfoCard_Xml_Security_Transform_EnvelopedSignature';
|
||||
case 'http://www.w3.org/2001/10/xml-exc-c14n#':
|
||||
return 'Zend_InfoCard_Xml_Security_Transform_XmlExcC14N';
|
||||
default:
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Unknown or Unsupported Transformation Requested");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a Transform URI to the list of transforms to perform
|
||||
*
|
||||
* @param string $uri The Transform URI
|
||||
* @return Zend_InfoCard_Xml_Security_Transform
|
||||
*/
|
||||
public function addTransform($uri)
|
||||
{
|
||||
$class = $this->_findClassbyURI($uri);
|
||||
|
||||
$this->_transformList[] = array('uri' => $uri,
|
||||
'class' => $class);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the list of transforms to perform
|
||||
*
|
||||
* @return array The list of transforms
|
||||
*/
|
||||
public function getTransformList()
|
||||
{
|
||||
return $this->_transformList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the transforms in the transform list to the input XML document
|
||||
*
|
||||
* @param string $strXmlDocument The input XML
|
||||
* @return string The XML after the transformations have been applied
|
||||
*/
|
||||
public function applyTransforms($strXmlDocument)
|
||||
{
|
||||
foreach($this->_transformList as $transform) {
|
||||
if (!class_exists($transform['class'])) {
|
||||
require_once 'Zend/Loader.php';
|
||||
Zend_Loader::loadClass($transform['class']);
|
||||
}
|
||||
|
||||
$transformer = new $transform['class'];
|
||||
|
||||
// We can't really test this check because it would require logic changes in the component itself
|
||||
// @codeCoverageIgnoreStart
|
||||
if(!($transformer instanceof Zend_InfoCard_Xml_Security_Transform_Interface)) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Exception("Transforms must implement the Transform Interface");
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
$strXmlDocument = $transformer->transform($strXmlDocument);
|
||||
}
|
||||
|
||||
return $strXmlDocument;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: EnvelopedSignature.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Security_Transform_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Security/Transform/Interface.php';
|
||||
|
||||
/**
|
||||
* A object implementing the EnvelopedSignature XML Transform
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Security_Transform_EnvelopedSignature
|
||||
implements Zend_InfoCard_Xml_Security_Transform_Interface
|
||||
{
|
||||
/**
|
||||
* Transforms the XML Document according to the EnvelopedSignature Transform
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Security_Transform_Exception
|
||||
* @param string $strXMLData The input XML data
|
||||
* @return string the transformed XML data
|
||||
*/
|
||||
public function transform($strXMLData)
|
||||
{
|
||||
$sxe = simplexml_load_string($strXMLData);
|
||||
|
||||
if(!$sxe->Signature) {
|
||||
require_once 'Zend/InfoCard/Xml/Security/Transform/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Transform_Exception("Unable to locate Signature Block for EnvelopedSignature Transform");
|
||||
}
|
||||
|
||||
unset($sxe->Signature);
|
||||
|
||||
return $sxe->asXML();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Security_Exception
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Security/Exception.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Security_Transform_Exception extends Zend_InfoCard_Xml_Security_Exception
|
||||
{
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Interface for XML Security Transforms
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_InfoCard_Xml_Security_Transform_Interface
|
||||
{
|
||||
/**
|
||||
* Transform the given XML string according to the transform rules
|
||||
* implemented by the object using this interface
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Security_Transform_Exception
|
||||
* @param string $strXmlData the input XML
|
||||
* @return string the output XML
|
||||
*/
|
||||
public function transform($strXmlData);
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: XmlExcC14N.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Security_Transform_Interface
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Security/Transform/Interface.php';
|
||||
|
||||
/**
|
||||
* A Transform to perform C14n XML Exclusive Canonicalization
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml_Security
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_Security_Transform_XmlExcC14N
|
||||
implements Zend_InfoCard_Xml_Security_Transform_Interface
|
||||
{
|
||||
/**
|
||||
* Transform the input XML based on C14n XML Exclusive Canonicalization rules
|
||||
*
|
||||
* @throws Zend_InfoCard_Xml_Security_Transform_Exception
|
||||
* @param string $strXMLData The input XML
|
||||
* @return string The output XML
|
||||
*/
|
||||
public function transform($strXMLData)
|
||||
{
|
||||
$dom = new DOMDocument();
|
||||
$dom->loadXML($strXMLData);
|
||||
|
||||
if(method_exists($dom, 'C14N')) {
|
||||
return $dom->C14N(true, false);
|
||||
}
|
||||
|
||||
require_once 'Zend/InfoCard/Xml/Security/Transform/Exception.php';
|
||||
throw new Zend_InfoCard_Xml_Security_Transform_Exception("This transform requires the C14N() method to exist in the DOM extension");
|
||||
}
|
||||
}
|
173
airtime_mvc/library/Zend/InfoCard/Xml/SecurityTokenReference.php
Normal file
173
airtime_mvc/library/Zend/InfoCard/Xml/SecurityTokenReference.php
Normal file
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: SecurityTokenReference.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_InfoCard_Xml_Element
|
||||
*/
|
||||
require_once 'Zend/InfoCard/Xml/Element.php';
|
||||
|
||||
/**
|
||||
* Represents a SecurityTokenReference XML block
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_InfoCard
|
||||
* @subpackage Zend_InfoCard_Xml
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_InfoCard_Xml_SecurityTokenReference extends Zend_InfoCard_Xml_Element
|
||||
{
|
||||
/**
|
||||
* Base64 Binary Encoding URI
|
||||
*/
|
||||
const ENCODING_BASE64BIN = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary';
|
||||
|
||||
/**
|
||||
* Return an instance of the object based on the input XML
|
||||
*
|
||||
* @param string $xmlData The SecurityTokenReference XML Block
|
||||
* @return Zend_InfoCard_Xml_SecurityTokenReference
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
static public function getInstance($xmlData)
|
||||
{
|
||||
if($xmlData instanceof Zend_InfoCard_Xml_Element) {
|
||||
$strXmlData = $xmlData->asXML();
|
||||
} else if (is_string($xmlData)) {
|
||||
$strXmlData = $xmlData;
|
||||
} else {
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
|
||||
}
|
||||
|
||||
$sxe = simplexml_load_string($strXmlData);
|
||||
|
||||
if($sxe->getName() != "SecurityTokenReference") {
|
||||
throw new Zend_InfoCard_Xml_Exception("Invalid XML Block provided for SecurityTokenReference");
|
||||
}
|
||||
|
||||
return simplexml_load_string($strXmlData, "Zend_InfoCard_Xml_SecurityTokenReference");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the Key Identifier XML Object
|
||||
*
|
||||
* @return Zend_InfoCard_Xml_Element
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
protected function _getKeyIdentifier()
|
||||
{
|
||||
$this->registerXPathNamespace('o', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd');
|
||||
list($keyident) = $this->xpath('//o:KeyIdentifier');
|
||||
|
||||
if(!($keyident instanceof Zend_InfoCard_Xml_Element)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Failed to retrieve Key Identifier");
|
||||
}
|
||||
|
||||
return $keyident;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the Key URI identifying the thumbprint type used
|
||||
*
|
||||
* @return string The thumbprint type URI
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
public function getKeyThumbprintType()
|
||||
{
|
||||
|
||||
$keyident = $this->_getKeyIdentifier();
|
||||
|
||||
$dom = self::convertToDOM($keyident);
|
||||
|
||||
if(!$dom->hasAttribute('ValueType')) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Key Identifier did not provide a type for the value");
|
||||
}
|
||||
|
||||
return $dom->getAttribute('ValueType');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the thumbprint encoding type used as a URI
|
||||
*
|
||||
* @return string the URI of the thumbprint encoding used
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
public function getKeyThumbprintEncodingType()
|
||||
{
|
||||
|
||||
$keyident = $this->_getKeyIdentifier();
|
||||
|
||||
$dom = self::convertToDOM($keyident);
|
||||
|
||||
if(!$dom->hasAttribute('EncodingType')) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Unable to determine the encoding type for the key identifier");
|
||||
}
|
||||
|
||||
return $dom->getAttribute('EncodingType');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the key reference data used to identify the public key
|
||||
*
|
||||
* @param bool $decode if true, will return a decoded version of the key
|
||||
* @return string the key reference thumbprint, either in binary or encoded form
|
||||
* @throws Zend_InfoCard_Xml_Exception
|
||||
*/
|
||||
public function getKeyReference($decode = true)
|
||||
{
|
||||
$keyIdentifier = $this->_getKeyIdentifier();
|
||||
|
||||
$dom = self::convertToDOM($keyIdentifier);
|
||||
$encoded = $dom->nodeValue;
|
||||
|
||||
if(empty($encoded)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Could not find the Key Reference Encoded Value");
|
||||
}
|
||||
|
||||
if($decode) {
|
||||
|
||||
$decoded = "";
|
||||
switch($this->getKeyThumbprintEncodingType()) {
|
||||
case self::ENCODING_BASE64BIN:
|
||||
|
||||
if(version_compare(PHP_VERSION, "5.2.0", ">=")) {
|
||||
$decoded = base64_decode($encoded, true);
|
||||
} else {
|
||||
$decoded = base64_decode($encoded);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
throw new Zend_InfoCard_Xml_Exception("Unknown Key Reference Encoding Type: {$this->getKeyThumbprintEncodingType()}");
|
||||
}
|
||||
|
||||
if(!$decoded || empty($decoded)) {
|
||||
throw new Zend_InfoCard_Xml_Exception("Failed to decode key reference");
|
||||
}
|
||||
|
||||
return $decoded;
|
||||
}
|
||||
|
||||
return $encoded;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue