|
| 1 | +--TEST-- |
| 2 | +Bug #74720 pkcs7_en/decrypt does not work if \x1a is used in content, variant 0 |
| 3 | +--SKIPIF-- |
| 4 | +<?php |
| 5 | +if (!extension_loaded("openssl")) die("skip"); |
| 6 | +?> |
| 7 | +--FILE-- |
| 8 | +<?php |
| 9 | + |
| 10 | +$cert = "-----BEGIN CERTIFICATE----- |
| 11 | +MIIDXDCCAkSgAwIBAgIKq/f5U3FzthdKUzANBgkqhkiG9w0BAQUFADBcMRIwEAYD |
| 12 | +VQQDEwlzZXRhcGRmLWExCTAHBgNVBAoTADEJMAcGA1UECxMAMSMwIQYJKoZIhvcN |
| 13 | +AQkBFhRzdXBwb3J0QHNldGFzaWduLmNvbTELMAkGA1UEBhMCREUwHhcNMTUwOTA4 |
| 14 | +MDkzNDExWhcNMjAwOTA4MDkzNDExWjBcMRIwEAYDVQQDEwlzZXRhcGRmLWExCTAH |
| 15 | +BgNVBAoTADEJMAcGA1UECxMAMSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QHNldGFz |
| 16 | +aWduLmNvbTELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK |
| 17 | +AoIBAQCkmTLvUIYfqAKC1CHVgABlemrFIVRm4JGeB0jIGofyrm3yVwR4YcK0eUmt |
| 18 | +/0nbFfsFsU0/C9dXKZYD42t5YpLFsj666Z1EoU1CfSIW2bf0HaWVJ+oNT5twS3dv |
| 19 | +RTzAcnPM44GxO4y6GUW6un0/bT/MZbFKbb3NI1L0mwY7EoqUXR68XxuHqWETaslm |
| 20 | +Sbp1XvbLsJjgV9X3ihi7JC7A9kEzrKh+RBsXEXwlSv5JO2TUdwq9P4EbjqvgiaV1 |
| 21 | +vFNAArioX5pIUIm9ahAm8d7jjW6DFfV798rTzaQ3GJs0yC3UD6xhmbTbdC/D9Pot |
| 22 | +8RGu89Fx6E+O5j4LwGH4kiYjgvYZAgMBAAGjIDAeMA8GCSqGSIb3LwEBCgQCBQAw |
| 23 | +CwYDVR0PBAQDAgOYMA0GCSqGSIb3DQEBBQUAA4IBAQBCA8iXz7zxAmCWNZ0faiLm |
| 24 | +aKw8u2PUq+EPKrGKc9Q70Ksw/e/EHvWrghFzmu5MOZRn/QIWq++sbbc8eOiaRDE8 |
| 25 | +lWCW596FLW4habXKw0sjDNcyEBArPgDp17O6NgHqI2U1KL1P2Y40e0YH2BWxNS+f |
| 26 | +pmWZekjiC6jfId2JGsyPZUTX4USwthG4dFX0/BWYg+K7kXvQzMobes2NxW3Iqn8h |
| 27 | +FUNgraCzlQMSfE2gwAMSUXTJubUGorj4LFYSiLIIJvf6KlmuR5uOIi5lSjSeZf5E |
| 28 | +FLEHVhrz3o2icUeyb1K1BTAQRZ/H3GZ0QpgqSK5vmuV9C+rzezQMoy4/8UUnNPMt |
| 29 | +-----END CERTIFICATE----- |
| 30 | +"; |
| 31 | + |
| 32 | +$pkey = "-----BEGIN PRIVATE KEY----- |
| 33 | +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkmTLvUIYfqAKC |
| 34 | +1CHVgABlemrFIVRm4JGeB0jIGofyrm3yVwR4YcK0eUmt/0nbFfsFsU0/C9dXKZYD |
| 35 | +42t5YpLFsj666Z1EoU1CfSIW2bf0HaWVJ+oNT5twS3dvRTzAcnPM44GxO4y6GUW6 |
| 36 | +un0/bT/MZbFKbb3NI1L0mwY7EoqUXR68XxuHqWETaslmSbp1XvbLsJjgV9X3ihi7 |
| 37 | +JC7A9kEzrKh+RBsXEXwlSv5JO2TUdwq9P4EbjqvgiaV1vFNAArioX5pIUIm9ahAm |
| 38 | +8d7jjW6DFfV798rTzaQ3GJs0yC3UD6xhmbTbdC/D9Pot8RGu89Fx6E+O5j4LwGH4 |
| 39 | +kiYjgvYZAgMBAAECggEABO4JOGF4KOvQanB11HYNXPy4BLA5Pc0RU3M6pvKjen1m |
| 40 | +sdzRF5Vu/laJIkbchI0xm+Op8X7Wa+gFFBf8RLIS/QyYBCNh2Fe/74M9sYNDFxLJ |
| 41 | +vjBIOm6VVF1QRhMD7SwoY303adJjpkHCRMPX4z3PjLzJfPYROpsJnaWkf8GwCJ4+ |
| 42 | +kufOhYcE8ekuLX7EzXFU74Uo0OnMEhMJgiAjlHhC21YLkgLoGq45sdktVgvD6sds |
| 43 | +7BcmH6oUCDCJ8wxUVM1+Ks1D3vKHfeAhCFHvj9M/lf5OWylhmQh4CQf+NMDNsAc6 |
| 44 | +mXNIzUvZEgs/PJpd3SymHchf60m6faJtGv43GsdsgQKBgQDUx8t649O/vGRI26t4 |
| 45 | +4XrzVC2w5271UlhFaRiH03BrV+pECVoH4bw+ZIUuGke2xe+LrNkhMNJSGcbB0WDa |
| 46 | +Jes+4Gf++AuSXRvMo+xHenfgUWQqYHJPkh5q6gknZ2YDfikFNLdqApXvp0m+FaVP |
| 47 | ++F/2HMjQfTITQgkAiEn45s4agQKBgQDGCAZkIUcdyXQTplLE0Zx1/uiTBrQGyzsb |
| 48 | +cDgAQIHt19wIRjoGOFatAj6TQ5gUj9Remn12v6d5Wi02i7hlu8V6O1VXLGqqeQ27 |
| 49 | +0MHBXzrFBVljOz96D7VP5Xx0DB1cGMbtg5ivjd91OUVrwC7fbXE9sfOI1FqlTb7p |
| 50 | +6xi9Wl+fmQKBgGdzR/vUfqPOvVcq7gBUaAmb2KcUrj65rU753MJUy2h1EuHHRi1k |
| 51 | +07fl+VZD0rALJf7bp6laajcebyLWYGdPXkNwqT8ua7naaOSiogLSiSvXhoKP56PG |
| 52 | +H+HNLWwp+lAia2Erky0IWstsow62yWvLDyTCM+QhqlHwnh3TJVvNI1GBAoGAUl+y |
| 53 | +MOJ6z5Ql2aqc0UwT1i1Tlxz5s73D93Tlho1Ovp3E5Bg6OK4kt9CwMNe0IhF2GGgQ |
| 54 | ++l1cj6kIF6Fk8cR6r46QwDM0p3a1VMPQZNx0+NFxzkot7FsuY26lJyyG5fFUhiXw |
| 55 | +VE4ifoN1Mg3+MWg3657jG66hihNd77WgU9uM3TkCgYEAypuvVrfFrrtXnbEUcBHq |
| 56 | +mguKumn9miD9DPb6gi8ZaKOddGzw+qFPukiqi7rM3oRMg02evfK/VQC87Gmev663 |
| 57 | +RV9sQOlB9gNlMOOw/0R3ABEWDoSRCcrLhb6Z5Y72WVnZvpTPO0cDw2i1hyaEM6d+ |
| 58 | +2WR7c6FhRCLxG0DObEOfiO0= |
| 59 | +-----END PRIVATE KEY----- |
| 60 | +"; |
| 61 | + |
| 62 | +$originalEnvelopeData = "any string with \x1a is cut at this point."; |
| 63 | + |
| 64 | +$tmpFileIn = tempnam(sys_get_temp_dir(), 'test'); |
| 65 | +$tmpFileOut = tempnam(sys_get_temp_dir(), 'test'); |
| 66 | +file_put_contents($tmpFileIn, $originalEnvelopeData); |
| 67 | + |
| 68 | + |
| 69 | +var_dump(filesize($tmpFileIn) === strlen($originalEnvelopeData)); |
| 70 | + |
| 71 | +openssl_pkcs7_encrypt($tmpFileIn, $tmpFileOut, [$cert], array(), PKCS7_BINARY, OPENSSL_CIPHER_AES_128_CBC); |
| 72 | + |
| 73 | +$tmpFileOut2 = tempnam(sys_get_temp_dir(), 'test'); |
| 74 | +openssl_pkcs7_decrypt($tmpFileOut, $tmpFileOut2, $cert, $pkey); |
| 75 | + |
| 76 | +$envelopeData = file_get_contents($tmpFileOut2); |
| 77 | +var_dump($originalEnvelopeData === $envelopeData); // need to be true |
| 78 | +var_dump(strlen($originalEnvelopeData), strlen($envelopeData), filesize($tmpFileOut2)); |
| 79 | + |
| 80 | +unlink($tmpFileIn); |
| 81 | +unlink($tmpFileOut); |
| 82 | +unlink($tmpFileOut2); |
| 83 | + |
| 84 | +?> |
| 85 | +==DONE== |
| 86 | +--EXPECTF-- |
| 87 | +bool(true) |
| 88 | +bool(true) |
| 89 | +int(39) |
| 90 | +int(39) |
| 91 | +int(39) |
| 92 | +==DONE== |
| 93 | + |
0 commit comments