Currently I generate the security headers for a request as follows:
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = false;
$doc->loadXML($request);
$objWSSE = new WSSESoap($doc, false);
/* Sign all headers to include signing the WS-Addressing headers /
$objWSSE->signAllHeaders = true;
$objWSSE->signBody = true;
$objWSSE->addTimestamp();
$objWSSE->addUserToken($this->_username, $this->_password, false);
/ create new XMLSec Key using RSA SHA-1 and type is private key /
$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
/ load the private key from file - last arg is bool if key in file (true) or is string (FALSE) /
$objKey->loadKey(PRIVATE_KEY, true);
/ Sign the message - also signs appropraite WS-Security items /
$objWSSE->signSoapDoc($objKey);
/ Add certificate (BinarySecurityToken) to the message and attach pointer to Signature */
$token = $objWSSE->addBinaryToken(file_get_contents(CERT_FILE));
$objWSSE->attachTokentoSig($token);
$request = $objWSSE->saveXML();
When I make the request to the service I get the error message Hash values do not match
Currently I generate the security headers for a request as follows:
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = false;
$doc->loadXML($request);
$objWSSE = new WSSESoap($doc, false);
/* Sign all headers to include signing the WS-Addressing headers /
$objWSSE->signAllHeaders = true;
$objWSSE->signBody = true;
$objWSSE->addTimestamp();
$objWSSE->addUserToken($this->_username, $this->_password, false);
/ create new XMLSec Key using RSA SHA-1 and type is private key /
$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
/ load the private key from file - last arg is bool if key in file (true) or is string (FALSE) /
$objKey->loadKey(PRIVATE_KEY, true);
/ Sign the message - also signs appropraite WS-Security items /
$objWSSE->signSoapDoc($objKey);
/ Add certificate (BinarySecurityToken) to the message and attach pointer to Signature */
$token = $objWSSE->addBinaryToken(file_get_contents(CERT_FILE));
$objWSSE->attachTokentoSig($token);
$request = $objWSSE->saveXML();
When I make the request to the service I get the error message Hash values do not match