当前位置: 首页>>代码示例>>PHP>>正文


PHP XMLSecurityKey::fromEncryptedKeyElement方法代码示例

本文整理汇总了PHP中XMLSecurityKey::fromEncryptedKeyElement方法的典型用法代码示例。如果您正苦于以下问题:PHP XMLSecurityKey::fromEncryptedKeyElement方法的具体用法?PHP XMLSecurityKey::fromEncryptedKeyElement怎么用?PHP XMLSecurityKey::fromEncryptedKeyElement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XMLSecurityKey的用法示例。


在下文中一共展示了XMLSecurityKey::fromEncryptedKeyElement方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: staticLocateKeyInfo

 static function staticLocateKeyInfo($objBaseKey = NULL, $node = NULL)
 {
     if (empty($node) || !$node instanceof DOMNode) {
         return NULL;
     }
     $doc = $node->ownerDocument;
     if (!$doc) {
         return NULL;
     }
     $xpath = new DOMXPath($doc);
     $xpath->registerNamespace('xmlsecenc', DBSeller_Helper_Xml_Security_XMLSecEnc::XMLENCNS);
     $xpath->registerNamespace('xmlsecdsig', DBSeller_Helper_Xml_Security_XMLSecurityDSig::XMLDSIGNS);
     $query = "./xmlsecdsig:KeyInfo";
     $nodeset = $xpath->query($query, $node);
     $encmeth = $nodeset->item(0);
     if (!$encmeth) {
         /* No KeyInfo in EncryptedData / EncryptedKey. */
         return $objBaseKey;
     }
     foreach ($encmeth->childNodes as $child) {
         switch ($child->localName) {
             case 'KeyName':
                 if (!empty($objBaseKey)) {
                     $objBaseKey->name = $child->nodeValue;
                 }
                 break;
             case 'KeyValue':
                 foreach ($child->childNodes as $keyval) {
                     switch ($keyval->localName) {
                         case 'DSAKeyValue':
                             throw new Exception("DSAKeyValue currently not supported");
                             break;
                         case 'RSAKeyValue':
                             $modulus = NULL;
                             $exponent = NULL;
                             if ($modulusNode = $keyval->getElementsByTagName('Modulus')->item(0)) {
                                 $modulus = base64_decode($modulusNode->nodeValue);
                             }
                             if ($exponentNode = $keyval->getElementsByTagName('Exponent')->item(0)) {
                                 $exponent = base64_decode($exponentNode->nodeValue);
                             }
                             if (empty($modulus) || empty($exponent)) {
                                 throw new Exception("Missing Modulus or Exponent");
                             }
                             $publicKey = XMLSecurityKey::convertRSA($modulus, $exponent);
                             $objBaseKey->loadKey($publicKey);
                             break;
                     }
                 }
                 break;
             case 'RetrievalMethod':
                 $type = $child->getAttribute('Type');
                 if ($type !== 'http://www.w3.org/2001/04/xmlenc#EncryptedKey') {
                     /* Unsupported key type. */
                     break;
                 }
                 $uri = $child->getAttribute('URI');
                 if ($uri[0] !== '#') {
                     /* URI not a reference - unsupported. */
                     break;
                 }
                 $id = substr($uri, 1);
                 $query = "//xmlsecenc:EncryptedKey[@Id='{$id}']";
                 $keyElement = $xpath->query($query)->item(0);
                 if (!$keyElement) {
                     throw new Exception("Unable to locate EncryptedKey with @Id='{$id}'.");
                 }
                 return XMLSecurityKey::fromEncryptedKeyElement($keyElement);
             case 'EncryptedKey':
                 return XMLSecurityKey::fromEncryptedKeyElement($child);
             case 'X509Data':
                 if ($x509certNodes = $child->getElementsByTagName('X509Certificate')) {
                     if ($x509certNodes->length > 0) {
                         $x509cert = $x509certNodes->item(0)->textContent;
                         $x509cert = str_replace(array("\r", "\n"), "", $x509cert);
                         $x509cert = "-----BEGIN CERTIFICATE-----\n" . chunk_split($x509cert, 64, "\n") . "-----END CERTIFICATE-----\n";
                         $objBaseKey->loadKey($x509cert, FALSE, TRUE);
                     }
                 }
                 break;
         }
     }
     return $objBaseKey;
 }
开发者ID:arendasistemasintegrados,项目名称:mateusleme,代码行数:84,代码来源:XMLSecEnc.php


注:本文中的XMLSecurityKey::fromEncryptedKeyElement方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。