You are here

public function XMLSecurityKey::__construct in SAML SP 2.0 Single Sign On (SSO) - SAML Service Provider 7

Parameters

string $type:

null|array $params:

Throws

Exception

File

includes/XMLSecurityKey.php, line 146

Class

XMLSecurityKey

Code

public function __construct($type, $params = null) {
  switch ($type) {
    case self::TRIPLEDES_CBC:
      $this->cryptParams['library'] = 'mcrypt';
      $this->cryptParams['cipher'] = MCRYPT_TRIPLEDES;
      $this->cryptParams['mode'] = MCRYPT_MODE_CBC;
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmlenc#tripledes-cbc';
      $this->cryptParams['keysize'] = 24;
      break;
    case self::AES128_CBC:
      $this->cryptParams['library'] = 'mcrypt';
      $this->cryptParams['cipher'] = MCRYPT_RIJNDAEL_128;
      $this->cryptParams['mode'] = MCRYPT_MODE_CBC;
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmlenc#aes128-cbc';
      $this->cryptParams['keysize'] = 16;
      break;
    case self::AES192_CBC:
      $this->cryptParams['library'] = 'mcrypt';
      $this->cryptParams['cipher'] = MCRYPT_RIJNDAEL_128;
      $this->cryptParams['mode'] = MCRYPT_MODE_CBC;
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmlenc#aes192-cbc';
      $this->cryptParams['keysize'] = 24;
      break;
    case self::AES256_CBC:
      $this->cryptParams['library'] = 'mcrypt';
      $this->cryptParams['cipher'] = MCRYPT_RIJNDAEL_128;
      $this->cryptParams['mode'] = MCRYPT_MODE_CBC;
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmlenc#aes256-cbc';
      $this->cryptParams['keysize'] = 32;
      break;
    case self::RSA_1_5:
      $this->cryptParams['library'] = 'openssl';
      $this->cryptParams['padding'] = OPENSSL_PKCS1_PADDING;
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmlenc#rsa-1_5';
      if (is_array($params) && !empty($params['type'])) {
        if ($params['type'] == 'public' || $params['type'] == 'private') {
          $this->cryptParams['type'] = $params['type'];
          break;
        }
      }
      throw new Exception('Certificate "type" (private/public) must be passed via parameters');
    case self::RSA_OAEP_MGF1P:
      $this->cryptParams['library'] = 'openssl';
      $this->cryptParams['padding'] = OPENSSL_PKCS1_OAEP_PADDING;
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p';
      $this->cryptParams['hash'] = null;
      if (is_array($params) && !empty($params['type'])) {
        if ($params['type'] == 'public' || $params['type'] == 'private') {
          $this->cryptParams['type'] = $params['type'];
          break;
        }
      }
      throw new Exception('Certificate "type" (private/public) must be passed via parameters');
    case self::RSA_SHA1:
      $this->cryptParams['library'] = 'openssl';
      $this->cryptParams['method'] = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1';
      $this->cryptParams['padding'] = OPENSSL_PKCS1_PADDING;
      if (is_array($params) && !empty($params['type'])) {
        if ($params['type'] == 'public' || $params['type'] == 'private') {
          $this->cryptParams['type'] = $params['type'];
          break;
        }
      }
      throw new Exception('Certificate "type" (private/public) must be passed via parameters');
    case self::RSA_SHA256:
      $this->cryptParams['library'] = 'openssl';
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256';
      $this->cryptParams['padding'] = OPENSSL_PKCS1_PADDING;
      $this->cryptParams['digest'] = 'SHA256';
      if (is_array($params) && !empty($params['type'])) {
        if ($params['type'] == 'public' || $params['type'] == 'private') {
          $this->cryptParams['type'] = $params['type'];
          break;
        }
      }
      throw new Exception('Certificate "type" (private/public) must be passed via parameters');
    case self::RSA_SHA384:
      $this->cryptParams['library'] = 'openssl';
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384';
      $this->cryptParams['padding'] = OPENSSL_PKCS1_PADDING;
      $this->cryptParams['digest'] = 'SHA384';
      if (is_array($params) && !empty($params['type'])) {
        if ($params['type'] == 'public' || $params['type'] == 'private') {
          $this->cryptParams['type'] = $params['type'];
          break;
        }
      }
      throw new Exception('Certificate "type" (private/public) must be passed via parameters');
    case self::RSA_SHA512:
      $this->cryptParams['library'] = 'openssl';
      $this->cryptParams['method'] = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512';
      $this->cryptParams['padding'] = OPENSSL_PKCS1_PADDING;
      $this->cryptParams['digest'] = 'SHA512';
      if (is_array($params) && !empty($params['type'])) {
        if ($params['type'] == 'public' || $params['type'] == 'private') {
          $this->cryptParams['type'] = $params['type'];
          break;
        }
      }
      throw new Exception('Certificate "type" (private/public) must be passed via parameters');
    case self::HMAC_SHA1:
      $this->cryptParams['library'] = $type;
      $this->cryptParams['method'] = 'http://www.w3.org/2000/09/xmldsig#hmac-sha1';
      break;
    default:
      throw new Exception('Invalid Key Type');
  }
  $this->type = $type;
}