2017-09-20 2 views
-1

Ich muss einen XML-Datentyp mit einem privaten X509-Schlüssel signieren Hier ist der Code, den ich verwendet habe: $ data -> save ("test.xml");XML-Datentyp mit einem privaten X509-Schlüssel signieren

$data = new DOMDocument("1.0", "utf-8"); 
$xml_order = $data->createElement("order"); 
$xml_tag1 = $data->createElement("signature","000"); 
$xml_tag2 = $data->createElement("service","000"); 
$xml_tag3 = $data->createElement("url"); 
$xml_tag_confirm = $data->createElement("confirm","yes"); 

$attr = $data->appendChild($xml_order); 
$attr->appendChild($xml_tag1); 
$attr->appendChild($xml_tag2); 
$url = $attr->appendChild($xml_tag3); 
$url->appendChild($xml_tag_confirm); 
$attr->setAttribute("type","ama"); 
$attr->setAttribute("id", "passwordiguess"); 
$attr->setAttribute("date", date("YmdHis")); 
$signature; 
$pkeyid = openssl_pkey_get_private(file_get_contents('./private.key')); 
$keyData = openssl_pkey_get_details($pkeyid); 
openssl_sign($data, $signature, $pkeyid); 
openssl_free_key($pkeyid); 

der Fehler, der sie zurückkehrt ist:

Warning: openssl_sign() erwartet Parameter 1 in C angegebene Zeichenfolge, Objekt zu sein: \ xampp \ htdocs \ test \ index.php auf der Leitung 32

+0

kann den $ Datenwert anzeigen!? – M0ns1f

+0

Ja ... Aktualisiert die Frage –

Antwort

1

gut das Problem ist, dass Sie eine Datei als Parameter sind vorbei, anstelle einer Zeichenfolge in openssl_sign Funktion

Sie sollten Sie xML-Dokument konvertieren auf str ing, versuche, diese Zeile hinzuzufügen

$data = new DOMDocument("1.0", "utf-8"); 
$xml_order = $data->createElement("order"); 
$xml_tag1 = $data->createElement("signature","000"); 
$xml_tag2 = $data->createElement("service","000"); 
$xml_tag3 = $data->createElement("url"); 
$xml_tag_confirm = $data->createElement("confirm","yes"); 

$attr = $data->appendChild($xml_order); 
$attr->appendChild($xml_tag1); 
$attr->appendChild($xml_tag2); 
$url = $attr->appendChild($xml_tag3); 
$url->appendChild($xml_tag_confirm); 
$attr->setAttribute("type","ama"); 
$attr->setAttribute("id", "passwordiguess"); 
$attr->setAttribute("date", date("YmdHis")); 
/* this would convert the xml document to string */ 
$output = $data->saveXML(); 
$signature; 
$pkeyid = openssl_pkey_get_private(file_get_contents('./private.key')); 
$keyData = openssl_pkey_get_details($pkeyid); 
/* then pass the $output to openssl_sign*/ 
openssl_sign($output, $signature, $pkeyid); 
openssl_free_key($pkeyid); 
+0

Ja ... Das hat wie ein Zauber funktioniert. Vielen Dank –

Verwandte Themen