openssl_pkcs7_(sign|verify)

3 views
Skip to first unread message

Stefan Froehlich

unread,
Mar 20, 2021, 9:41:46 AM3/20/21
to
Ich will Binärdaten signieren und die Signatur später dann prüfen.
Mit Textdaten klappt das soweit (test.key und test.crt enthalten
ein selbsterstelltes Zertifikat und den passwortlosen Schlüssel):

#v+
$result = openssl_pkcs7_sign('testfile.txt', 'testfile.txt.signed', 'file://test.crt', array('file://test.key', NULL), array(), PKCS7_DETACHED);
var_dump($result);
$result = openssl_pkcs7_verify('testfile.txt.signed', PKCS7_NOVERIFY);
var_dump($result);
#v-

Das Ergebnis ist wie erhofft 2x "true".

Sobald ich das gleiche mit (ca. 120 kB) Binärdaten versuche, scheitere ich
jedoch krachend:

#v+
$result = openssl_pkcs7_sign('testfile.bin', 'testfile.bin.signed', 'file://test.crt', array('file://test.key', NULL), array(), PKCS7_DETACHED | PKCS7_BINARY);
var_dump($result);
$result = openssl_pkcs7_verify('testfile.bin.signed', PKCS7_BINARY | PKCS7_NOVERIFY);
var_dump($result);
#v-

#v+
bool(true)
int(-1)
#v-

testfile.bin.signed sieht - soweit man das für Binärdatei sagen kann - ganz ok
aus:

#v+
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----8B0F758783E1829932E8987B19451D44"

This is an S/MIME signed message

------8B0F758783E1829932E8987B19451D44
[Binärdaten]
------8B0F758783E1829932E8987B19451D44
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

MIIF[...]

------8B0F758783E1829932E8987B19451D44--
#v-

Allerdings sagt mir auch der direkte Aufruf von OpenSSL, dass es da ein Problem
gibt, das von PHP offenbar nur weitergereicht wird:

#v+
sfroehli:~$ openssl smime -verify -in testfile.bin.signed -noverify -binary
Error reading S/MIME message
140512008456960:error:0D0D40D2:asn1 encoding routines:SMIME_read_ASN1:no multipart body failure:asn_mime.c:457:
#v-

Aber was für ein Problem könnte das sein?

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan, so wütend wie die Sehnsucht.
(Sloganizer)
Reply all
Reply to author
Forward
0 new messages