Пример #1
0
 /**
  * Sign the document.
  *
  * @param DOMElement $signature                 Signature element to sign
  * @param Key        $keyForSignature           Key used to sign data
  * @param string     $canonicalizationAlgorithm Canonicalization algorithm
  *
  * @return DOMElement
  */
 public static function signDocument(DOMElement $signature, Key $keyForSignature, $canonicalizationAlgorithm)
 {
     $doc = $signature->ownerDocument;
     $signedInfo = $signature->getElementsByTagNameNS(self::NS_XMLDSIG, 'SignedInfo')->item(0);
     if (!is_null($signedInfo)) {
         $canonicalizedData = self::canonicalizeData($signedInfo, $canonicalizationAlgorithm);
         $signatureValueString = base64_encode($keyForSignature->signData($canonicalizedData));
         $signatureValue = $doc->createElementNS(self::NS_XMLDSIG, self::PFX_XMLDSIG . ':SignatureValue', $signatureValueString);
         $keyInfo = $signature->getElementsByTagNameNS(self::NS_XMLDSIG, 'KeyInfo')->item(0);
         $signature->insertBefore($signatureValue, $keyInfo);
     }
     return $signatureValue;
 }