2016-09-16 6 views
0

私はタイトルで言ったように、私はSignatureValueを生成する方法が必要です。 基本的に、私がしたSignedInfoのこの平和がありますPHP:署名付きのSOAPメッセージでSignatureValueを計算するにはどうすればよいですか?

<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soap"/> 
</ds:CanonicalizationMethod> 
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#id-A72D6FD4C41B1F545F14700558816389"><ds:Transforms> 
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList=""/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> 
<ds:DigestValue>iiyihYsFMjO7QxIVCauydehAhjSm5LZlRGm3lT0VFY0=</ds:DigestValue></ds:Reference></ds:SignedInfo> 

を、私はこれを生成するためにPHPでの方法が必要です:

-----BEGIN PRIVATE KEY----- 
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDLdHlvZ/kQdD0m 
sCkiW7QIN4+3tSOaez/TrxI9J/a2hDCOPembsO7OFWhPCRF+IqMI1oZTyDj5Yw4g 
F1+h4Gcx+Dw6bNKxZt/PCmcY+xJP2S8soeY0aL3NGHHH4Jt4tobgXqZO2bYn2Vzm 
cwxA09AmbMUacqWSafTyukjnY9szyHNdRfqa8LBkAgwGbEbWpmuf1uap9mFFo45P 
uHOWbt03JJwu23KdXYO0SfcjLTYmD2OyzVd7lkIQF2VRaZjqW32ME9RfB9/1K1g0 
iec6x7ISAj63jMmdLJFPUlADUPEEChOpUpYErOfWGnhJgshrabbVYzfokfy/TPRU 
bat2YWc9AgMBAAECggEAF3nHEU3D9VwUOkSVWnuOWGxgzue9xfN2t+w5hIj59LFo 
EOGf9PEDfRAHSydWt2Ezwq9OLJirykrdtGI+DKWiAqgL+wnXfdTK+k7O+pjt0fzT 
bqj3sRBs5h9t8Yw/JDybb4Q8WFjSpeJ0z7pyrYBDQkvGqniUFkLXmrJX+ysQffbs 
eFA1raBdjwta+HFH/Mb6yygupZxvFc39I4EACzGbXvW0o4y1UAFQEFf7dEj5PyBM 
vE7UssWmipUEpTBdmjsJuGkTFrYzuhXps0etkxsZEZGAumwGjtHa4d6mHRBmuxET 
V1uZsczwJSEJM0Cr1Iz/Y1e7zXRvU2V6WBLxJLV+wQKBgQDq8zxcWAYaPwGrSWs3 
5XN/5Ks8SnPsNIzUIQFrniLA52rQJBvRrsCvHG7o5NID7UfkTktIlTA4exmio6W8 
vjg2IhaEteNaf75a8iGCSFYkQRKhBXc3Ve6LKz2/ENkqhmbABo/a0TfNdjgbBJUX 
LPM9Xo0KluxY/li31y7pvmBOOQKBgQDdrt9ejgB7wkD4Rfd/RBtw5/WkWqpy0who 
v4kSy+Sz9LDw5lgkqmkZmSP7nXhTdmhxFfuO4Sxf1TE+cKjAHx3L3hR74W5f8HYj 
ETS0eecFBopiUbY08xGM9G419W32/KmtZomNC45+tsetOK2Jhr7sSJ9dAxlTDYDf 
VvJ6O2bhJQKBgFl3njib3FcKPxx2rLlwSncdIIeo4lPD/wyYNO5CHYHPncD8vwst 
vHnyHdnZqI+OP54Uol5VUTNwzOY94tLorIcQm/qVOKoxks8W/OOboBHWJb3jUu5j 
bp7YLH8hb1DeNSpSVV1B5jn7FopTSGK23zkzVAoARqfs0uPOsTKZKBshAoGAYSko 
FZU/eP6m4yonU8xSCqZf720dj74WzXJFbcuXrZfthWgv8cIO1n1cXAekmVAobogn 
/XOLs2UJdEiEbdA1iwkHCVTAv6Pw42XDJ+bV7knzlSwjJAn1A0aOl2++hqYu6CUs 
3HjYN4l88tsIlGJOg9lAn8+f5drhRQIivJgUe1ECgYAFKrgG54xt6nxZ1/v2/eBn 
u/2vY97yPqEw3C/jaD3Oj0DHhl+SUT+6r/PIkFmwPc2EvGHuUjpHgPnH6wNaJsr5 
+B+55yD6EuPRaoIIe3nxnOYt7elK4+SQ7WpNzOEtQsJpW49dtbrI3IC4hWwpvQAB 
PPTfRKCbv12rwQ/y4jJpEw== 
-----END PRIVATE KEY----- 

PS:ここ

<ds:SignatureValue> 
cGbhgNKCwrmUPXg2AKgqs1mceNcywK8BvrmmrOH627/3vadzKVnPiTn6ZaLBAcV1pYgTpNvh7RvAa8uZYXmS77YCQcYIOErbWKSTDVwBWv63d8fLm9Ljpx/1/PZrI7zSeIafXTLwPB2Lzt239ylZWPdhfg9XMhS43k4p7u1DZerVeRNSi76Q8u6jIWadDIQkn9mVEbhL5RIRGPoGJBof9QQVk42NHChdESW2RFXG7SSs2VYmdZ+IQUdEC7uPFoT/vxK2My1hGhYhvl6HNbMd5VIz/xMlDPrOCzbLWkA7oqyqSboTCObwkTwD2V20sxn6rb8mtak55zYaGXJldno66g== 
</ds:SignatureValue> 

が秘密鍵です。既に試しました

openssl_sign($doc->C14N(true), $signature, $pkey, OPENSSL_ALGO_SHA256) 

そして、私はbase64で$署名をエンコードしましたが、残念ながら同じ署名が生成されません。

答えて

0

私は署名情報

<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
にDSとSOAPの名前空間の両方を追加することであることを解明
関連する問題