1--TEST-- 2openssl_cms_sign() and verify with attached signatures 3--EXTENSIONS-- 4openssl 5--FILE-- 6<?php 7$infile = __DIR__ . "/plain.txt"; 8$outfile = tempnam(sys_get_temp_dir(), "ssl"); 9$vout= $outfile . ".vout"; 10 11if ($outfile === false) { 12 die("failed to get a temporary filename!"); 13} 14 15$privkey = "file://" . __DIR__ . "/private_rsa_1024.key"; 16$single_cert = "file://" . __DIR__ . "/cert.crt"; 17$assoc_headers = array("To" => "test@test", "Subject" => "testing openssl_cms_sign()"); 18$headers = array("test@test", "testing openssl_cms_sign()"); 19$empty_headers = array(); 20$wrong = "wrong"; 21$empty = ""; 22print("S/MIME attached\nPlain text:\n"); 23readfile($infile); 24var_dump(openssl_cms_sign($infile, $outfile, openssl_x509_read($single_cert), $privkey, $headers)); 25var_dump(openssl_cms_verify($outfile,OPENSSL_CMS_NOVERIFY, NULL, array(), NULL, $vout)); 26print("\nValidated content:\n"); 27readfile($vout); 28 29if (file_exists($outfile)) { 30 echo "true\n"; 31 unlink($outfile); 32} 33 34if (file_exists($vout)) { 35 echo "true\n"; 36 unlink($vout); 37} 38print("\nPEM Attached:\n"); 39var_dump(openssl_cms_sign($infile, $outfile, openssl_x509_read($single_cert), $privkey, $headers, 40 OPENSSL_CMS_BINARY,OPENSSL_ENCODING_PEM)); 41var_dump(openssl_cms_verify($outfile,OPENSSL_CMS_NOVERIFY|OPENSSL_CMS_BINARY, 42 NULL, array(), NULL, $vout, NULL, NULL, OPENSSL_ENCODING_PEM)); 43print("\nValidated content:\n"); 44readfile($vout); 45if (file_exists($outfile)) { 46 echo "true\n"; 47 unlink($outfile); 48} 49 50if (file_exists($vout)) { 51 echo "true\n"; 52 unlink($vout); 53} 54 55// DER next 56 57print("\nDER Attached:\n"); 58var_dump(openssl_cms_sign($infile, $outfile, openssl_x509_read($single_cert), $privkey, $headers, 59 OPENSSL_CMS_BINARY,OPENSSL_ENCODING_DER)); 60var_dump(openssl_cms_verify($outfile,OPENSSL_CMS_NOVERIFY|OPENSSL_CMS_BINARY, 61 NULL, array(), NULL, $vout, NULL, NULL, OPENSSL_ENCODING_DER)); 62print("\nValidated content:\n"); 63readfile($vout); 64// extreme measures to avoid stupid temporary errors for failure to unlink a file. 65if (file_exists($outfile)) { 66 echo "true\n"; 67 unlink($outfile); 68} 69if (file_exists($vout)) { 70 echo "true\n"; 71 unlink($vout); 72} 73 74?> 75--EXPECT-- 76S/MIME attached 77Plain text: 78Now is the winter of our discontent. 79bool(true) 80bool(true) 81 82Validated content: 83Now is the winter of our discontent. 84true 85true 86 87PEM Attached: 88bool(true) 89bool(true) 90 91Validated content: 92Now is the winter of our discontent. 93true 94true 95 96DER Attached: 97bool(true) 98bool(true) 99 100Validated content: 101Now is the winter of our discontent. 102true 103true 104