Bug #74798 [NEW]: pkcs7_en/decrypt does not work if \x0a is used in content
| From: | jan dot slabon at setasign dot com | Date: | Thu, 22 Jun 2017 15:26:45 +0000 |
| Subject: | Bug #74798 [NEW]: pkcs7_en/decrypt does not work if \x0a is used in content | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-209629@lists.php.net to get a copy of this message | ||
From: jan dot slabon at setasign dot com
Operating system: Windows 10 Pro
PHP version: 7.2.0alpha2
Package: OpenSSL related
Bug Type: Bug
Bug description:pkcs7_en/decrypt does not work if \x0a is used in content
Description:
------------
When using openssl_pkcs7_en/decrypt() with content "\x0a" the decrypted
content is not the same as the original content.
Test script:
---------------
<?php
$cert = "-----BEGIN CERTIFICATE-----
MIIDXDCCAkSgAwIBAgIKq/f5U3FzthdKUzANBgkqhkiG9w0BAQUFADBcMRIwEAYD
VQQDEwlzZXRhcGRmLWExCTAHBgNVBAoTADEJMAcGA1UECxMAMSMwIQYJKoZIhvcN
AQkBFhRzdXBwb3J0QHNldGFzaWduLmNvbTELMAkGA1UEBhMCREUwHhcNMTUwOTA4
MDkzNDExWhcNMjAwOTA4MDkzNDExWjBcMRIwEAYDVQQDEwlzZXRhcGRmLWExCTAH
BgNVBAoTADEJMAcGA1UECxMAMSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QHNldGFz
aWduLmNvbTELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCkmTLvUIYfqAKC1CHVgABlemrFIVRm4JGeB0jIGofyrm3yVwR4YcK0eUmt
/0nbFfsFsU0/C9dXKZYD42t5YpLFsj666Z1EoU1CfSIW2bf0HaWVJ+oNT5twS3dv
RTzAcnPM44GxO4y6GUW6un0/bT/MZbFKbb3NI1L0mwY7EoqUXR68XxuHqWETaslm
Sbp1XvbLsJjgV9X3ihi7JC7A9kEzrKh+RBsXEXwlSv5JO2TUdwq9P4EbjqvgiaV1
vFNAArioX5pIUIm9ahAm8d7jjW6DFfV798rTzaQ3GJs0yC3UD6xhmbTbdC/D9Pot
8RGu89Fx6E+O5j4LwGH4kiYjgvYZAgMBAAGjIDAeMA8GCSqGSIb3LwEBCgQCBQAw
CwYDVR0PBAQDAgOYMA0GCSqGSIb3DQEBBQUAA4IBAQBCA8iXz7zxAmCWNZ0faiLm
aKw8u2PUq+EPKrGKc9Q70Ksw/e/EHvWrghFzmu5MOZRn/QIWq++sbbc8eOiaRDE8
lWCW596FLW4habXKw0sjDNcyEBArPgDp17O6NgHqI2U1KL1P2Y40e0YH2BWxNS+f
pmWZekjiC6jfId2JGsyPZUTX4USwthG4dFX0/BWYg+K7kXvQzMobes2NxW3Iqn8h
FUNgraCzlQMSfE2gwAMSUXTJubUGorj4LFYSiLIIJvf6KlmuR5uOIi5lSjSeZf5E
FLEHVhrz3o2icUeyb1K1BTAQRZ/H3GZ0QpgqSK5vmuV9C+rzezQMoy4/8UUnNPMt
-----END CERTIFICATE-----
";
$pkey = "-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkmTLvUIYfqAKC
1CHVgABlemrFIVRm4JGeB0jIGofyrm3yVwR4YcK0eUmt/0nbFfsFsU0/C9dXKZYD
42t5YpLFsj666Z1EoU1CfSIW2bf0HaWVJ+oNT5twS3dvRTzAcnPM44GxO4y6GUW6
un0/bT/MZbFKbb3NI1L0mwY7EoqUXR68XxuHqWETaslmSbp1XvbLsJjgV9X3ihi7
JC7A9kEzrKh+RBsXEXwlSv5JO2TUdwq9P4EbjqvgiaV1vFNAArioX5pIUIm9ahAm
8d7jjW6DFfV798rTzaQ3GJs0yC3UD6xhmbTbdC/D9Pot8RGu89Fx6E+O5j4LwGH4
kiYjgvYZAgMBAAECggEABO4JOGF4KOvQanB11HYNXPy4BLA5Pc0RU3M6pvKjen1m
sdzRF5Vu/laJIkbchI0xm+Op8X7Wa+gFFBf8RLIS/QyYBCNh2Fe/74M9sYNDFxLJ
vjBIOm6VVF1QRhMD7SwoY303adJjpkHCRMPX4z3PjLzJfPYROpsJnaWkf8GwCJ4+
kufOhYcE8ekuLX7EzXFU74Uo0OnMEhMJgiAjlHhC21YLkgLoGq45sdktVgvD6sds
7BcmH6oUCDCJ8wxUVM1+Ks1D3vKHfeAhCFHvj9M/lf5OWylhmQh4CQf+NMDNsAc6
mXNIzUvZEgs/PJpd3SymHchf60m6faJtGv43GsdsgQKBgQDUx8t649O/vGRI26t4
4XrzVC2w5271UlhFaRiH03BrV+pECVoH4bw+ZIUuGke2xe+LrNkhMNJSGcbB0WDa
Jes+4Gf++AuSXRvMo+xHenfgUWQqYHJPkh5q6gknZ2YDfikFNLdqApXvp0m+FaVP
+F/2HMjQfTITQgkAiEn45s4agQKBgQDGCAZkIUcdyXQTplLE0Zx1/uiTBrQGyzsb
cDgAQIHt19wIRjoGOFatAj6TQ5gUj9Remn12v6d5Wi02i7hlu8V6O1VXLGqqeQ27
0MHBXzrFBVljOz96D7VP5Xx0DB1cGMbtg5ivjd91OUVrwC7fbXE9sfOI1FqlTb7p
6xi9Wl+fmQKBgGdzR/vUfqPOvVcq7gBUaAmb2KcUrj65rU753MJUy2h1EuHHRi1k
07fl+VZD0rALJf7bp6laajcebyLWYGdPXkNwqT8ua7naaOSiogLSiSvXhoKP56PG
H+HNLWwp+lAia2Erky0IWstsow62yWvLDyTCM+QhqlHwnh3TJVvNI1GBAoGAUl+y
MOJ6z5Ql2aqc0UwT1i1Tlxz5s73D93Tlho1Ovp3E5Bg6OK4kt9CwMNe0IhF2GGgQ
+l1cj6kIF6Fk8cR6r46QwDM0p3a1VMPQZNx0+NFxzkot7FsuY26lJyyG5fFUhiXw
VE4ifoN1Mg3+MWg3657jG66hihNd77WgU9uM3TkCgYEAypuvVrfFrrtXnbEUcBHq
mguKumn9miD9DPb6gi8ZaKOddGzw+qFPukiqi7rM3oRMg02evfK/VQC87Gmev663
RV9sQOlB9gNlMOOw/0R3ABEWDoSRCcrLhb6Z5Y72WVnZvpTPO0cDw2i1hyaEM6d+
2WR7c6FhRCLxG0DObEOfiO0=
-----END PRIVATE KEY-----
";
$originalEnvelopeData = "String with \x0a will end in one byte more.";
$tmpFileIn = tempnam(sys_get_temp_dir(), 'test');
$tmpFileOut = tempnam(sys_get_temp_dir(), 'test');
file_put_contents($tmpFileIn, $originalEnvelopeData);
var_dump(filesize($tmpFileIn) === strlen($originalEnvelopeData));
openssl_pkcs7_encrypt($tmpFileIn, $tmpFileOut, [$cert], array(),
PKCS7_BINARY, OPENSSL_CIPHER_AES_128_CBC);
$tmpFileOut2 = tempnam(sys_get_temp_dir(), 'test');
openssl_pkcs7_decrypt($tmpFileOut, $tmpFileOut2, $cert, $pkey);
$envelopeData = file_get_contents($tmpFileOut2);
var_dump($originalEnvelopeData === $envelopeData); // need to be true
var_dump(strlen($originalEnvelopeData), strlen($envelopeData),
filesize($tmpFileOut2));
var_dump(unpack('H*', $originalEnvelopeData)[1], unpack('H*',
$envelopeData)[1]);
Expected result:
----------------
bool(true)
bool(true)
int(40)
int(40)
int(40)
string(80)
"537472696e672077697468200a2077696c6c20656e6420696e206f6e652062797465206d6f72652e"
string(80)
"537472696e672077697468200a2077696c6c20656e6420696e206f6e652062797465206d6f72652e"
Actual result:
--------------
bool(true)
bool(false)
int(40)
int(41)
int(41)
string(80)
"537472696e672077697468200a2077696c6c20656e6420696e206f6e652062797465206d6f72652e"
string(82)
"537472696e672077697468200d0a2077696c6c20656e6420696e206f6e652062797465206d6f72652e"
--
Edit bug report at https://bugs.php.net/bug.php?id=74798&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=74798&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=74798&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=74798&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=74798&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=74798&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=74798&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=74798&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=74798&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=74798&r=support
Expected behavior: https://bugs.php.net/fix.php?id=74798&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=74798&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=74798&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=74798&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=74798&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=74798&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=74798&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=74798&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=74798&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=74798&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=74798&r=mysqlcfg