ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- PKM]Fڭ"tests/gnupg_res_init_home_dir.phptnu[--TEST-- init resource with custom home_dir --SKIPIF-- --FILE-- $homedir)); gnupg_seterrormode($gpg, gnupg::ERROR_WARNING); gnupg_import($gpg, $testkey); $imported = false; foreach (glob("$homedir/*") as $filename) { $imported = true; } var_dump($imported); $engine = gnupg_getengineinfo($gpg); var_dump($engine['home_dir'] === $homedir); ?> --EXPECT-- bool(true) bool(true) --CLEAN-- PKM]r*myytests/gnupg_oo_deletekey.phptnu[--TEST-- delete a key from the keyring --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $ret = $gpg->deletekey($fingerprint,true); var_dump($ret); ?> --EXPECT-- bool(true) --CLEAN-- PKM]rcFFtests/gnupg_res_sign_clear.phptnu[--TEST--n sign a text with sigmode SIG_MODE_CLEAR --SKIPIF-- --FILE-- --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(8) "foo bar " --CLEAN-- PKM]A,!tests/gnupg_oo_init_home_dir.phptnu[--TEST-- init object with custom home_dir --SKIPIF-- --FILE-- $homedir)); $gpg->seterrormode(gnupg::ERROR_WARNING); $gpg->import($testkey); $imported = false; foreach (glob("$homedir/*") as $filename) { $imported = true; } var_dump($imported); $engine = $gpg->getengineinfo(); var_dump($engine['home_dir'] === $homedir); ?> --EXPECT-- bool(true) bool(true) --CLEAN-- PKM]qq tests/gnupg_res_sign_normal.phptnu[--TEST--n sign a text with mode SIG_MODE_NORMAL --SKIPIF-- --FILE-- --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKM]TP2tests/gnupg_res_deletekey.phptnu[--TEST--n delete a key from the keyring --SKIPIF-- --FILE-- --EXPECT-- bool(true) --CLEAN-- PKM]d%tests/gnupg_oo_encrypt_empty_str.phptnu[--TEST-- encrypt and decrypt a text --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->addencryptkey($fingerprint); $enc = $gpg->encrypt(""); $gpg = new gnupg(); $gpg->adddecryptkey($fingerprint, $passphrase); $ret = $gpg->decrypt($enc); var_dump($ret); ?> --EXPECTF-- string(0) "" --CLEAN-- PKM]#&tests/gnupg_oo_import.phptnu[--TEST-- import a new key into the keyring --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $ret = $gpg->import($testkey); var_dump($ret); ?> --EXPECT-- array(9) { ["imported"]=> int(1) ["unchanged"]=> int(0) ["newuserids"]=> int(0) ["newsubkeys"]=> int(0) ["secretimported"]=> int(1) ["secretunchanged"]=> int(0) ["newsignatures"]=> int(0) ["skippedkeys"]=> int(0) ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" } --CLEAN-- PKM]?P tests/gnupg_res_import.phptnu[--TEST-- import a new key into the keyring --SKIPIF-- --FILE-- --EXPECT-- array(9) { ["imported"]=> int(1) ["unchanged"]=> int(0) ["newuserids"]=> int(0) ["newsubkeys"]=> int(0) ["secretimported"]=> int(1) ["secretunchanged"]=> int(0) ["newsignatures"]=> int(0) ["skippedkeys"]=> int(0) ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" } --CLEAN-- PKM]>I֥tests/gnupg_res_export.phptnu[--TEST-- export a key --SKIPIF-- --FILE-- --EXPECTF-- string(%d) "-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBF11JawBCAC6bWTtKtAj1dBih/UHR9iH1iADEmZde52aKyd7EXKtjs4Q2aXJ kbn9R+kcJNx+AlnTSePQBkNz5brmEAQgk93rOsHaPUEROkfBR2C6AkjaJNnk0E43 pbUy6bWhmGR4kmpbvRnR/7kxVyplb5zSFAcio1I8RQ3ql0HkF//zLUouYzrMJn6e GvffHw1revlSxo0leCcOsNE7AHGVgMxvUWYO0JT4Fs+JcpsTxG8MFE6I6SLZoY5W XmtOsO0vMNJoTaXdqfJoLTkviPkRUZuF0DtzuT1oQLUTTaKvWxx2+33YF5HYrlNy eepLFLh5mZ1/2HFWoQo2X1gFfb1R9EJPbFtJABEBAAG0GVBIUCBHbnVQRyA8Z251 cGdAcGhwLm5ldD6JATgEEwECACIFAl11JawCGwMGCwkIBwMCBhUIAgkKCwQWAgMB Ah4BAheAAAoJEGaed14KYoSzo2QH/AxR9nAqevgbp2GHw+xw4R8XVHMeL2atROFU ndldeYmtVNGh8ck/YSxMz/FY2qLbN3421xOi/ct7nVl77MLZxgZAnsD5qnm0doJl Su/URzUmyhinKLmB9AdklGJNXrL0/dWF0t46Dmv+4W+Qnx3mNhZBUbSW5Ut2pXq0 d4XPTHfkQWgaTPblw97ncQzwVmDSLRqoJEl3yo3OW8/uE1a/ldivuMux5IEcA03l 5L/5g2QOe9cRxk+x9JCXBPqjJ9OIVMUUReGBVSfscGAhnD0bW/aNf5//eGkU9Gai CCSdnIKCopRJSIZcv3OF+P+vh3gmGXAByyQKRvwpBdvosIsiEXi5AQ0EXXUlrAEI AO43Q3D/VgdGGpHa4P0ppv6gY5jBnPHvpyd3Opu497H0z6Xe8rZfRxSpyOViPjF4 NIe2OX6tEAK/hYkH0o91BwbMGAwiljKomL45G4vPb0ve86d/MGrtdeDRt8WhlDEB VfKpxi1bFtq7KvHvnv51iATndM1wE2v79vssMdmJEPRipo+GHiPoThEoO2bdtwI1 thHpUsdXPGpeMcM3F9FmdYpdsFsoyzZ6if7cbijhO4OArGNUm3oJTu66Vok9GjSa V7HsLHJMNf/6Lc66FQSG8+kUKZ/R7s8NY+fS2oFONba3DT5qzA80rfiAFheeAFUz HE3NLkkdPsnzNBOOtRot3bUAEQEAAYkBHwQYAQIACQUCXXUlrAIbDAAKCRBmnnde CmKEs3t+B/4vUc2oXZXuEzIfL7Atv20VJomQCHrsbnNHErqCDJ+TpH6yjcKGGBNR zlOOUpZWFN1Ii2Wml+XIIzOXiOhhH/A6iTTAVl72RQWwiRjm8kYYWThT4msPd5yX QulbZRMxorIIrzs0tjIc5z5FXhSQhIaRjMSKqwJ/VGS9KEWut1F5akJNv/3klMW6 UTIxnj0IMlnL+GaPBf+f1+3Pxoli37aeISxzvLhtquLXc++ls9ICwF6CN9D+Vtp+ H2JaNPDtdHUzVBv0xQ1E3B1XeCiOIDFwWPWvCCY1FbgKXNrn5fdgsk69dLtTGJ4A WU7na8AWygvMcdtuGjpNE4g24ln7Rrce =sQ2w -----END PGP PUBLIC KEY BLOCK----- " --CLEAN-- PKM]F#tests/gnupg_res_init_file_name.phptnu[--TEST-- init resource with custom file_name --SKIPIF-- --FILE-- '/usr/bin/gpg')); $engine = gnupg_getengineinfo($gpg); var_dump($engine['file_name']); ?> --EXPECT-- string(12) "/usr/bin/gpg"PKM]e""tests/gnupg_res_geterror.phptnu[--TEST-- get error --SKIPIF-- --FILE-- --EXPECT-- bool(false) --CLEAN-- PKM]yNNtests/gnupg_oo_sign_normal.phptnu[--TEST-- sign a text with mode SIG_MODE_NORMAL --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->setsignmode(gnupg::SIG_MODE_NORMAL); $gpg->addsignkey($fingerprint, $passphrase); $ret = $gpg->sign($plaintext); $gpg = NULL; $gpg = new gnupg(); $tmp = false; $plaintext = false; $ret = $gpg->verify($ret, false, $plaintext); var_dump($ret); var_dump($plaintext); ?> --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKM]:@[[%tests/gnupg_oo_decrypt_multi_key.phptnu[--TEST-- encrypt and decrypt a text with multiple keys --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->addencryptkey($fingerprint); $gpg->addencryptkey($fingerprint2); $gpg->addencryptkey($fingerprint3); $enc = $gpg->encrypt($plaintext); $gpg = new gnupg(); $gpg->adddecryptkey($fingerprint2, $passphrase2); $ret = $gpg->decrypt($enc); var_dump($ret); ?> --EXPECTF-- string(7) "foo bar" --CLEAN-- PKN]\11tests/gnupg_oo_sign_clear.phptnu[--TEST--n sign a text with sigmode SIG_MODE_CLEAR --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->setsignmode(gnupg::SIG_MODE_CLEAR); $gpg->addsignkey($fingerprint, $passphrase); $ret = $gpg->sign($plaintext); $gpg = NULL; $gpg = new gnupg(); $tmp = false; $ret = $gpg->verify($ret, false, $tmp); var_dump($ret); var_dump($tmp); ?> --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(8) "foo bar " --CLEAN-- PKN]wVpq"tests/gnupg_oo_listsignatures.phptnu[--TEST-- list signatures --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $ret = $gpg->listsignatures($fingerprint); $k1 = "PHP GnuPG "; $k2 = "669E775E0A6284B3"; gnupgt::check_array('PHP GnuPG ', $ret, $k1, $k2, 'uid'); gnupgt::check_array('PHP GnuPG', $ret, $k1, $k2, 'name'); gnupgt::check_array('gnupg@php.net', $ret, $k1, $k2, 'email'); gnupgt::check_array('', $ret, $k1, $k2, 'comment'); gnupgt::check_array(0, $ret, $k1, $k2, 'expires'); gnupgt::check_array(false, $ret, $k1, $k2, 'revoked'); gnupgt::check_array(false, $ret, $k1, $k2, 'expired'); gnupgt::check_array(false, $ret, $k1, $k2, 'invalid'); gnupgt::check_array(1567958444, $ret, $k1, $k2, 'timestamp'); ?> Done --EXPECT-- Done --CLEAN-- PKN]o*NN'tests/gnupg_oo_decrypt_no_uid_hint.phptnu[--TEST-- decrypt with private key without uid hint --SKIPIF-- --FILE-- adddecryptkey($fingerprint, 'test'); $ret = $gpg->decrypt(file_get_contents(__DIR__ . '/no_uid_hint_msg.gpg')); var_dump($ret); print_r($gpg->geterrorinfo()); ?> --EXPECTF-- bool(false) Array ( [generic_message] => No user ID hint [gpgme_code] => 1 [gpgme_source] => Unspecified source [gpgme_message] => General error ) --CLEAN-- PKN] O!!tests/vars.incnu[ --FILE-- --EXPECTF-- string(7) "foo bar" --CLEAN-- PKN]w\:i"tests/gnupg_res_getengineinfo.phptnu[--TEST-- get engineinfo --SKIPIF-- --FILE-- --EXPECTF-- array(3) { ["protocol"]=> int(0) ["file_name"]=> string(%d) %s ["home_dir"]=> string(0) "" } --CLEAN-- PKN]ʾ)tests/gnupg_res_sign_detach_nonarmor.phptnu[--TEST--n sign a text with mode SIG_MODE_DETACH and without armored output --SKIPIF-- --FILE-- --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]P删$$tests/gnupgt.incnu[&1", $output, $return_var); if ($return_var !== 0 || empty($output)) { return null; } // Extract the version number (typically in the first line like "gpg (GnuPG) 2.3.3") if (preg_match('/\b(\d+\.\d+\.\d+)\b/', $output[0], $matches)) { return $matches[1]; } return null; } /** * Compare the GnuPG version. * * @param string $version The version to compare against. * @param string $operator One of "lt", "le", "eq", "ne", "ge", "gt". * @return bool|null Returns comparison result or null if version cannot be determined. */ static public function gpg_version_compare($version, $operator) { $current_version = self::get_gpg_version(); if ($current_version === null) { return null; // Unable to determine GnuPG version } return version_compare($current_version, $version, $operator); } /** * Create a new gnupg instance. * * @return gnupg */ static public function create_instance() { $file_name = self::get_gpg_binary(); if ($file_name === "gpg") { return new gnupg(); } return new gnupg(['file_name' => $file_name]); } /** * Import a single key */ static public function import_key($privkey = null) { global $testkey; self::reset_key(); $gpg = self::create_instance(); $gpg->import(is_null($privkey) ? $testkey : $privkey); } /** * Import all keys */ static public function import_keys() { global $testkey, $testkey2, $testkey3; self::reset_key(); $gpg = self::create_instance(); $gpg->import($testkey); $gpg->import($testkey2); $gpg->import($testkey3); } /** * Delete all keys. * @param null|string $homeDir */ static public function delete_key($homeDir = null) { if (is_null($homeDir)) { $homeDir = self::get_home_dir(); } if (!is_dir($homeDir)) { return; } $dir = opendir($homeDir); while ($filename = readdir($dir)) { if (!is_dir("$homeDir/$filename")) { unlink("$homeDir/$filename"); } } $privKeyDir = self::get_priv_key_dir($homeDir); if (is_dir($privKeyDir)) { foreach (glob($privKeyDir . '/*') as $key) { unlink($key); } rmdir($privKeyDir); } rmdir($homeDir); } /** * Initialize key directory. */ static public function init_key_dir() { mkdir(self::get_home_dir()); mkdir(self::get_priv_key_dir(), 0700); } /** * Reset all keys. */ static public function reset_key() { self::delete_key(); self::init_key_dir(); } /** * Get home directory. * * @return string */ static private function get_home_dir() { return __DIR__ . '/home'; } /** * Get private key directory (for GPG2). * @param null|string $homeDir * @return string */ static private function get_priv_key_dir($homeDir = null) { if (is_null($homeDir)) { $homeDir = self::get_home_dir(); } return $homeDir . '/private-keys-v1.d'; } /** * Print error message and return false. * * @param string $msg * @return bool */ static private function error($msg) { echo "ERROR: " . $msg; return false; } /** * Check single array value. * * @param mixed $expected * @param array $a * @param string $key1 * @return bool */ static public function check_array($expected, $a, $key1) { $args = func_get_args(); $keys = array_splice($args, 2); $value = $a; foreach ($keys as $key) { if (!isset($value[$key])) { return self::error("key $key not found in the array"); } $value = $value[$key]; } if ($value !== $expected) { return self::error( sprintf( "key %s value %s does not match expected %s\n", $key, var_export($value, true), var_export($expected, true) ) ); } return true; } /** * Check single array value but only for GpgME version higher than supplied. * * @param mixed $expected * @param array $a * @param string $key1 * @return bool */ static public function check_array_from_version($version, $expected, $a, $key1) { if (version_compare(GNUPG_GPGME_VERSION, $version) < 0) { return true; } $args = func_get_args(); return call_user_func_array('gnupgt::check_array', array_splice($args, 1)); } /** * Check keyinfo for var key * * @param $ret * @param $secret_only */ static public function check_keyinfo($ret, $secret_only) { self::check_array(false, $ret, 0, 'disabled'); self::check_array(false, $ret, 0, 'expired'); self::check_array(false, $ret, 0, 'revoked'); self::check_array($secret_only, $ret, 0, 'is_secret'); self::check_array(true, $ret, 0, 'can_sign'); self::check_array(true, $ret, 0, 'can_encrypt'); // uid self::check_array('PHP GnuPG', $ret, 0, 'uids', 0, 'name'); self::check_array('', $ret, 0, 'uids', 0, 'comment'); self::check_array('gnupg@php.net', $ret, 0, 'uids', 0, 'email'); self::check_array('PHP GnuPG ', $ret, 0, 'uids', 0, 'uid'); self::check_array(false, $ret, 0, 'uids', 0, 'revoked'); self::check_array(false, $ret, 0, 'uids', 0, 'invalid'); self::check_array(false, $ret, 0, 'uids', 0, 'invalid'); // subkey 1 self::check_array("2DF0DD02DC9B70B7F64F572E669E775E0A6284B3", $ret, 0, 'subkeys', 0, 'fingerprint'); self::check_array("669E775E0A6284B3", $ret, 0, 'subkeys', 0, 'keyid'); self::check_array(1567958444, $ret, 0, 'subkeys', 0, 'timestamp'); self::check_array(0, $ret, 0, 'subkeys', 0, 'expires'); self::check_array($secret_only, $ret, 0, 'subkeys', 0, 'is_secret'); self::check_array(false, $ret, 0, 'subkeys', 0, 'can_encrypt'); self::check_array(true, $ret, 0, 'subkeys', 0, 'can_sign'); self::check_array(false, $ret, 0, 'subkeys', 0, 'disabled'); self::check_array(false, $ret, 0, 'subkeys', 0, 'expired'); self::check_array(false, $ret, 0, 'subkeys', 0, 'revoked'); self::check_array(true, $ret, 0, 'subkeys', 0, 'can_certify'); self::check_array(false, $ret, 0, 'subkeys', 0, 'can_authenticate'); self::check_array(false, $ret, 0, 'subkeys', 0, 'is_qualified'); // TODO: The is_de_vs seems to differ between gpg2 (true) and gpg1 (false) - differenatiate the test //self::check_array_from_version('1.9.0', true, $ret, 0, 'subkeys', 0, 'is_de_vs'); self::check_array(GNUPG_PK_RSA, $ret, 0, 'subkeys', 0, 'pubkey_algo'); self::check_array(2048, $ret, 0, 'subkeys', 0, 'length'); self::check_array_from_version('1.7.0', false, $ret, 0, 'subkeys', 0, 'is_cardkey'); // subkey 2 self::check_array("9E84AE800874DFF647B6062B46DCA9B3662C7DFC", $ret, 0, 'subkeys', 1, 'fingerprint'); self::check_array("46DCA9B3662C7DFC", $ret, 0, 'subkeys', 1, 'keyid'); self::check_array(1567958444, $ret, 0, 'subkeys', 1, 'timestamp'); self::check_array(0, $ret, 0, 'subkeys', 1, 'expires'); self::check_array($secret_only, $ret, 0, 'subkeys', 1, 'is_secret'); self::check_array(true, $ret, 0, 'subkeys', 1, 'can_encrypt'); self::check_array(false, $ret, 0, 'subkeys', 1, 'can_sign'); self::check_array(false, $ret, 0, 'subkeys', 1, 'disabled'); self::check_array(false, $ret, 0, 'subkeys', 1, 'expired'); self::check_array(false, $ret, 0, 'subkeys', 1, 'revoked'); self::check_array(false, $ret, 0, 'subkeys', 1, 'can_certify'); self::check_array(false, $ret, 0, 'subkeys', 1, 'can_authenticate'); self::check_array(false, $ret, 0, 'subkeys', 1, 'is_qualified'); // TODO: The is_de_vs seems to differ between gpg2 (true) and gpg1 (false) - differenatiate the test // self::check_array_from_version('1.9.0', true, $ret, 0, 'subkeys', 1, 'is_de_vs'); self::check_array(GNUPG_PK_RSA, $ret, 0, 'subkeys', 1, 'pubkey_algo'); self::check_array(2048, $ret, 0, 'subkeys', 1, 'length'); self::check_array_from_version('1.7.0', false, $ret, 0, 'subkeys', 1, 'is_cardkey'); } } PKN]*gQ'tests/gnupg_oo_sign_normal_noarmor.phptnu[--TEST-- sign a text with mode SIG_MODE_NORMAL and without armored output --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->setarmor(0); $gpg->setsignmode(gnupg::SIG_MODE_NORMAL); $gpg->addsignkey($fingerprint, $passphrase); $ret = $gpg->sign($plaintext); $gpg = new gnupg(); //$ret = $gpg->verify($plaintext, $ret); $plaintext = false; $ret = $gpg->verify($ret, false, $plaintext); var_dump($ret); var_dump($plaintext); ?> --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]b -"tests/gnupg_oo_init_file_name.phptnu[--TEST-- init object with custom file_name --SKIPIF-- --FILE-- '/usr/bin/gpg')); $engine = $gpg->getengineinfo(); var_dump($engine['file_name']); ?> --EXPECT-- string(12) "/usr/bin/gpg"PKN]G$ tests/gnupg_res_encryptsign.phptnu[--TEST-- encryptsign and decryptverify a text --SKIPIF-- --FILE-- --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]4JUaa(tests/gnupg_oo_sign_detach_nonarmor.phptnu[--TEST-- sign a text with mode SIG_MODE_DETACH and without armored output --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->setarmor(0); $gpg->setsignmode(gnupg::SIG_MODE_DETACH); $gpg->addsignkey($fingerprint, $passphrase); $ret = $gpg->sign($plaintext); $gpg = NULL; $gpg = new gnupg(); $tmp = false; $ret = $gpg->verify($plaintext, $ret); var_dump($ret); var_dump($plaintext); ?> --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]}#tests/gnupg_res_listsignatures.phptnu[--TEST-- list signatures --SKIPIF-- --FILE-- "; $k2 = "669E775E0A6284B3"; gnupgt::check_array('PHP GnuPG ', $ret, $k1, $k2, 'uid'); gnupgt::check_array('PHP GnuPG', $ret, $k1, $k2, 'name'); gnupgt::check_array('gnupg@php.net', $ret, $k1, $k2, 'email'); gnupgt::check_array('', $ret, $k1, $k2, 'comment'); gnupgt::check_array(0, $ret, $k1, $k2, 'expires'); gnupgt::check_array(false, $ret, $k1, $k2, 'revoked'); gnupgt::check_array(false, $ret, $k1, $k2, 'expired'); gnupgt::check_array(false, $ret, $k1, $k2, 'invalid'); gnupgt::check_array(1567958444, $ret, $k1, $k2, 'timestamp'); ?> Done --EXPECT-- Done --CLEAN-- PKN]E=tests/gnupg_oo_encrypt.phptnu[--TEST-- encrypt and decrypt a text --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->addencryptkey($fingerprint); $enc = $gpg->encrypt($plaintext); $gpg = new gnupg(); $gpg->adddecryptkey($fingerprint, $passphrase); $ret = $gpg->decrypt($enc); var_dump($ret); ?> --EXPECTF-- string(7) "foo bar" --CLEAN-- PKN]"244tests/gnupg_oo_sign_detach.phptnu[--TEST--n sign a text with mode SIG_MODE_DETACH --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->setsignmode(gnupg::SIG_MODE_DETACH); $gpg->addsignkey($fingerprint, $passphrase); $ret = $gpg->sign($plaintext); $gpg = NULL; $gpg = new gnupg(); $tmp = false; $ret = $gpg->verify($plaintext, $ret); var_dump($ret); var_dump($plaintext); ?> --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]k[r_!tests/gnupg_oo_getengineinfo.phptnu[--TEST-- get engineinfo --SKIPIF-- --FILE-- getengineinfo(); var_dump($ret); ?> --EXPECTF-- array(3) { ["protocol"]=> int(0) ["file_name"]=> string(%d) %s ["home_dir"]=> string(0) "" } --CLEAN-- PKN] * tests/gnupg_oo_geterrorinfo.phptnu[--TEST-- get error info --SKIPIF-- --FILE-- geterrorinfo()); ?> --EXPECT-- array(4) { ["generic_message"]=> bool(false) ["gpgme_code"]=> int(0) ["gpgme_source"]=> string(18) "Unspecified source" ["gpgme_message"]=> string(7) "Success" } --CLEAN-- PKN]mFtests/gnupg_oo_geterror.phptnu[--TEST-- get error --SKIPIF-- --FILE-- geterror()); ?> --EXPECTF-- bool(false) --CLEAN-- PKN]_C!tests/gnupg_res_geterrorinfo.phptnu[--TEST-- get error info --SKIPIF-- --FILE-- --EXPECT-- array(4) { ["generic_message"]=> bool(false) ["gpgme_code"]=> int(0) ["gpgme_source"]=> string(18) "Unspecified source" ["gpgme_message"]=> string(7) "Success" } --CLEAN-- PKN]=BŘ(tests/gnupg_res_sign_normal_noarmor.phptnu[--TEST--n sign a text with mode SIG_MODE_NORMAL and without armored output --SKIPIF-- --FILE-- --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]ntests/no_uid_hint_msg.gpgnu[HKuI n6!u*vX_'\afc=K_DB[taSTy5JsXSo^FT}d$>_,irS)$lKYQ.="GCԘBO"$1`,0*viJ0Em;AeGόauJۊA+)O:ۼCsS x~{weŜ 1 ڑG{;tgStW=z(1T.L+(ܾŤ=VRkR[!'Q*9g"h3{@ ` 2`"}-<d;5a j /JrZ6!L6'~;|r';M 1}uC$ Z9ELyٯ 2ťZ=es_:y ht[ 8`!ԍDO;1>m|aD#"il(h>$_Z|u{"ũN痼y!dh-Z[YU"2y{bf4v$|ec" ϰ3ίY-gV#̍#0şpӈeeK~훅۝Ќ2ڭ̌^[ (\ u[kkE>cjjYA-[V]Z?5 t@k 1IgbVwhR((&_U+`o[*Wn}՛ɧJ1]iCA=vc(^%WC>wZ|G!yMaa*g2>b ͐HhV`'l-=QSS% y<j\goU&?VPKN]`Rtests/gnupg_res_keyinfo.phptnu[--TEST--n get keyinfo --SKIPIF-- --FILE-- Done --EXPECT-- Done --CLEAN-- PKN]v}tests/gnupg_oo_keyinfo.phptnu[--TEST-- get keyinfo --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $ret = $gpg->keyinfo($fingerprint, true); gnupgt::check_keyinfo($gpg->keyinfo($fingerprint), false); gnupgt::check_keyinfo($gpg->keyinfo($fingerprint, true), true); ?> Done --EXPECT-- Done --CLEAN-- PKN]cJtHH tests/gnupg_res_sign_detach.phptnu[--TEST--n sign a text with mode SIG_MODE_DETACH --SKIPIF-- --FILE-- --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKN]"4tests/gnupg_oo_export.phptnu[--TEST-- export a key --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $ret = $gpg->export($fingerprint); var_dump($ret); ?> --EXPECTF-- string(%d) "-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBF11JawBCAC6bWTtKtAj1dBih/UHR9iH1iADEmZde52aKyd7EXKtjs4Q2aXJ kbn9R+kcJNx+AlnTSePQBkNz5brmEAQgk93rOsHaPUEROkfBR2C6AkjaJNnk0E43 pbUy6bWhmGR4kmpbvRnR/7kxVyplb5zSFAcio1I8RQ3ql0HkF//zLUouYzrMJn6e GvffHw1revlSxo0leCcOsNE7AHGVgMxvUWYO0JT4Fs+JcpsTxG8MFE6I6SLZoY5W XmtOsO0vMNJoTaXdqfJoLTkviPkRUZuF0DtzuT1oQLUTTaKvWxx2+33YF5HYrlNy eepLFLh5mZ1/2HFWoQo2X1gFfb1R9EJPbFtJABEBAAG0GVBIUCBHbnVQRyA8Z251 cGdAcGhwLm5ldD6JATgEEwECACIFAl11JawCGwMGCwkIBwMCBhUIAgkKCwQWAgMB Ah4BAheAAAoJEGaed14KYoSzo2QH/AxR9nAqevgbp2GHw+xw4R8XVHMeL2atROFU ndldeYmtVNGh8ck/YSxMz/FY2qLbN3421xOi/ct7nVl77MLZxgZAnsD5qnm0doJl Su/URzUmyhinKLmB9AdklGJNXrL0/dWF0t46Dmv+4W+Qnx3mNhZBUbSW5Ut2pXq0 d4XPTHfkQWgaTPblw97ncQzwVmDSLRqoJEl3yo3OW8/uE1a/ldivuMux5IEcA03l 5L/5g2QOe9cRxk+x9JCXBPqjJ9OIVMUUReGBVSfscGAhnD0bW/aNf5//eGkU9Gai CCSdnIKCopRJSIZcv3OF+P+vh3gmGXAByyQKRvwpBdvosIsiEXi5AQ0EXXUlrAEI AO43Q3D/VgdGGpHa4P0ppv6gY5jBnPHvpyd3Opu497H0z6Xe8rZfRxSpyOViPjF4 NIe2OX6tEAK/hYkH0o91BwbMGAwiljKomL45G4vPb0ve86d/MGrtdeDRt8WhlDEB VfKpxi1bFtq7KvHvnv51iATndM1wE2v79vssMdmJEPRipo+GHiPoThEoO2bdtwI1 thHpUsdXPGpeMcM3F9FmdYpdsFsoyzZ6if7cbijhO4OArGNUm3oJTu66Vok9GjSa V7HsLHJMNf/6Lc66FQSG8+kUKZ/R7s8NY+fS2oFONba3DT5qzA80rfiAFheeAFUz HE3NLkkdPsnzNBOOtRot3bUAEQEAAYkBHwQYAQIACQUCXXUlrAIbDAAKCRBmnnde CmKEs3t+B/4vUc2oXZXuEzIfL7Atv20VJomQCHrsbnNHErqCDJ+TpH6yjcKGGBNR zlOOUpZWFN1Ii2Wml+XIIzOXiOhhH/A6iTTAVl72RQWwiRjm8kYYWThT4msPd5yX QulbZRMxorIIrzs0tjIc5z5FXhSQhIaRjMSKqwJ/VGS9KEWut1F5akJNv/3klMW6 UTIxnj0IMlnL+GaPBf+f1+3Pxoli37aeISxzvLhtquLXc++ls9ICwF6CN9D+Vtp+ H2JaNPDtdHUzVBv0xQ1E3B1XeCiOIDFwWPWvCCY1FbgKXNrn5fdgsk69dLtTGJ4A WU7na8AWygvMcdtuGjpNE4g24ln7Rrce =sQ2w -----END PGP PUBLIC KEY BLOCK----- " --CLEAN-- PKN]aatests/gnupg_oo_encryptsign.phptnu[--TEST-- encryptsign and decryptverify a text --SKIPIF-- --FILE-- seterrormode(gnupg::ERROR_WARNING); $gpg->addencryptkey($fingerprint); $gpg->addsignkey($fingerprint, $passphrase); $enc = $gpg->encryptsign($plaintext); $plaintext = false; $gpg = new gnupg(); $gpg->adddecryptkey($fingerprint, $passphrase); $ret = $gpg->decryptverify ($enc, $plaintext); var_dump($ret); var_dump($plaintext); ?> --EXPECTF-- array(1) { [0]=> array(5) { ["fingerprint"]=> string(40) "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3" ["validity"]=> int(0) ["timestamp"]=> int(%d) ["status"]=> int(0) ["summary"]=> int(0) } } string(7) "foo bar" --CLEAN-- PKM]Fڭ"tests/gnupg_res_init_home_dir.phptnu[PKM]r*myytests/gnupg_oo_deletekey.phptnu[PKM]rcFFtests/gnupg_res_sign_clear.phptnu[PKM]A,!Vtests/gnupg_oo_init_home_dir.phptnu[PKM]qq ; tests/gnupg_res_sign_normal.phptnu[PKM]TP2tests/gnupg_res_deletekey.phptnu[PKM]d%tests/gnupg_oo_encrypt_empty_str.phptnu[PKM]#&tests/gnupg_oo_import.phptnu[PKM]?P  tests/gnupg_res_import.phptnu[PKM]>I֥tests/gnupg_res_export.phptnu[PKM]F#V!tests/gnupg_res_init_file_name.phptnu[PKM]e""=#tests/gnupg_res_geterror.phptnu[PKM]yNN$tests/gnupg_oo_sign_normal.phptnu[PKM]:@[[%I(tests/gnupg_oo_decrypt_multi_key.phptnu[PKN]\11*tests/gnupg_oo_sign_clear.phptnu[PKN]wVpq"x.tests/gnupg_oo_listsignatures.phptnu[PKN]o*NN'o2tests/gnupg_oo_decrypt_no_uid_hint.phptnu[PKN] O!!Ftests/vars.incnu[PKN]<//htests/gnupg_res_encrypt.phptnu[PKN]w\:i"jtests/gnupg_res_getengineinfo.phptnu[PKN]ʾ)ultests/gnupg_res_sign_detach_nonarmor.phptnu[PKN]P删$$Yptests/gnupgt.incnu[PKN]*gQ'9tests/gnupg_oo_sign_normal_noarmor.phptnu[PKN]b -"tests/gnupg_oo_init_file_name.phptnu[PKN]G$ tests/gnupg_res_encryptsign.phptnu[PKN]4JUaa(tests/gnupg_oo_sign_detach_nonarmor.phptnu[PKN]}#tests/gnupg_res_listsignatures.phptnu[PKN]E=tests/gnupg_oo_encrypt.phptnu[PKN]"244tests/gnupg_oo_sign_detach.phptnu[PKN]k[r_!ntests/gnupg_oo_getengineinfo.phptnu[PKN] * Ttests/gnupg_oo_geterrorinfo.phptnu[PKN]mFptests/gnupg_oo_geterror.phptnu[PKN]_C!ڱtests/gnupg_res_geterrorinfo.phptnu[PKN]=BŘ(tests/gnupg_res_sign_normal_noarmor.phptnu[PKN]ntests/no_uid_hint_msg.gpgnu[PKN]`Rλtests/gnupg_res_keyinfo.phptnu[PKN]v}tests/gnupg_oo_keyinfo.phptnu[PKN]cJtHH !tests/gnupg_res_sign_detach.phptnu[PKN]"4tests/gnupg_oo_export.phptnu[PKN]aatests/gnupg_oo_encryptsign.phptnu[PK((