Added intrim support for PHP8 before the completino of version 1.5

This commit is contained in:
Mark Reilly 2021-01-05 18:36:18 +00:00
parent 9f6a48c4c1
commit fc22309cd9
26 changed files with 327 additions and 169 deletions

94
gnupg.c
View file

@ -178,6 +178,12 @@ PHPC_OBJ_HANDLER_CREATE(gnupg)
PHPC_OBJ_HANDLER_CREATE_RETURN(gnupg);
}
/* {{{ arginfo for gnupg function with no parameter */
ZEND_BEGIN_ARG_INFO(arginfo_gnupg_void_function, 0)
ZEND_ARG_INFO(0, res)
ZEND_END_ARG_INFO()
/* }}} */
/* {{{ arginfo gnupg_verify_method */
ZEND_BEGIN_ARG_INFO_EX(arginfo_gnupg_verify_method, 0, 0, 2)
ZEND_ARG_INFO(0, text)
@ -195,29 +201,29 @@ ZEND_END_ARG_INFO()
/* {{{ methodlist gnupg */
phpc_function_entry gnupg_methods[] = {
PHP_FALIAS(keyinfo, gnupg_keyinfo, NULL)
PHP_FALIAS(keyinfo, gnupg_keyinfo, arginfo_gnupg_void_function)
PHP_FALIAS(verify, gnupg_verify, arginfo_gnupg_verify_method)
PHP_FALIAS(geterror, gnupg_geterror, NULL)
PHP_FALIAS(clearsignkeys, gnupg_clearsignkeys, NULL)
PHP_FALIAS(clearencryptkeys, gnupg_clearencryptkeys, NULL)
PHP_FALIAS(cleardecryptkeys, gnupg_cleardecryptkeys, NULL)
PHP_FALIAS(setarmor, gnupg_setarmor, NULL)
PHP_FALIAS(encrypt, gnupg_encrypt, NULL)
PHP_FALIAS(decrypt, gnupg_decrypt, NULL)
PHP_FALIAS(export, gnupg_export, NULL)
PHP_FALIAS(import, gnupg_import, NULL)
PHP_FALIAS(getprotocol, gnupg_getprotocol, NULL)
PHP_FALIAS(setsignmode, gnupg_setsignmode, NULL)
PHP_FALIAS(sign, gnupg_sign, NULL)
PHP_FALIAS(encryptsign, gnupg_encryptsign, NULL)
PHP_FALIAS(geterror, gnupg_geterror, arginfo_gnupg_void_function)
PHP_FALIAS(clearsignkeys, gnupg_clearsignkeys, arginfo_gnupg_void_function)
PHP_FALIAS(clearencryptkeys, gnupg_clearencryptkeys, arginfo_gnupg_void_function)
PHP_FALIAS(cleardecryptkeys, gnupg_cleardecryptkeys, arginfo_gnupg_void_function)
PHP_FALIAS(setarmor, gnupg_setarmor, arginfo_gnupg_void_function)
PHP_FALIAS(encrypt, gnupg_encrypt, arginfo_gnupg_void_function)
PHP_FALIAS(decrypt, gnupg_decrypt, arginfo_gnupg_void_function)
PHP_FALIAS(export, gnupg_export, arginfo_gnupg_void_function)
PHP_FALIAS(import, gnupg_import, arginfo_gnupg_void_function)
PHP_FALIAS(getprotocol, gnupg_getprotocol, arginfo_gnupg_void_function)
PHP_FALIAS(setsignmode, gnupg_setsignmode, arginfo_gnupg_void_function)
PHP_FALIAS(sign, gnupg_sign, arginfo_gnupg_void_function)
PHP_FALIAS(encryptsign, gnupg_encryptsign, arginfo_gnupg_void_function)
PHP_FALIAS(decryptverify, gnupg_decryptverify, arginfo_gnupg_decryptverify_method)
PHP_FALIAS(addsignkey, gnupg_addsignkey, NULL)
PHP_FALIAS(addencryptkey, gnupg_addencryptkey, NULL)
PHP_FALIAS(adddecryptkey, gnupg_adddecryptkey, NULL)
PHP_FALIAS(deletekey, gnupg_deletekey, NULL)
PHP_FALIAS(gettrustlist, gnupg_gettrustlist, NULL)
PHP_FALIAS(listsignatures, gnupg_listsignatures, NULL)
PHP_FALIAS(seterrormode, gnupg_seterrormode, NULL)
PHP_FALIAS(addsignkey, gnupg_addsignkey, arginfo_gnupg_void_function)
PHP_FALIAS(addencryptkey, gnupg_addencryptkey, arginfo_gnupg_void_function)
PHP_FALIAS(adddecryptkey, gnupg_adddecryptkey, arginfo_gnupg_void_function)
PHP_FALIAS(deletekey, gnupg_deletekey, arginfo_gnupg_void_function)
PHP_FALIAS(gettrustlist, gnupg_gettrustlist, arginfo_gnupg_void_function)
PHP_FALIAS(listsignatures, gnupg_listsignatures, arginfo_gnupg_void_function)
PHP_FALIAS(seterrormode, gnupg_seterrormode, arginfo_gnupg_void_function)
PHPC_FE_END
};
/* }}} */
@ -241,30 +247,30 @@ ZEND_END_ARG_INFO()
/* {{{ functionlist gnupg */
static zend_function_entry gnupg_functions[] = {
PHP_FE(gnupg_init, NULL)
PHP_FE(gnupg_keyinfo, NULL)
PHP_FE(gnupg_sign, NULL)
PHP_FE(gnupg_init, arginfo_gnupg_void_function)
PHP_FE(gnupg_keyinfo, arginfo_gnupg_void_function)
PHP_FE(gnupg_sign, arginfo_gnupg_void_function)
PHP_FE(gnupg_verify, arginfo_gnupg_verify_function)
PHP_FE(gnupg_clearsignkeys, NULL)
PHP_FE(gnupg_clearencryptkeys, NULL)
PHP_FE(gnupg_cleardecryptkeys, NULL)
PHP_FE(gnupg_setarmor, NULL)
PHP_FE(gnupg_encrypt, NULL)
PHP_FE(gnupg_decrypt, NULL)
PHP_FE(gnupg_export, NULL)
PHP_FE(gnupg_import, NULL)
PHP_FE(gnupg_getprotocol, NULL)
PHP_FE(gnupg_setsignmode, NULL)
PHP_FE(gnupg_encryptsign, NULL)
PHP_FE(gnupg_clearsignkeys, arginfo_gnupg_void_function)
PHP_FE(gnupg_clearencryptkeys, arginfo_gnupg_void_function)
PHP_FE(gnupg_cleardecryptkeys, arginfo_gnupg_void_function)
PHP_FE(gnupg_setarmor, arginfo_gnupg_void_function)
PHP_FE(gnupg_encrypt, arginfo_gnupg_void_function)
PHP_FE(gnupg_decrypt, arginfo_gnupg_void_function)
PHP_FE(gnupg_export, arginfo_gnupg_void_function)
PHP_FE(gnupg_import, arginfo_gnupg_void_function)
PHP_FE(gnupg_getprotocol, arginfo_gnupg_void_function)
PHP_FE(gnupg_setsignmode, arginfo_gnupg_void_function)
PHP_FE(gnupg_encryptsign, arginfo_gnupg_void_function)
PHP_FE(gnupg_decryptverify, arginfo_gnupg_decryptverify_function)
PHP_FE(gnupg_geterror, NULL)
PHP_FE(gnupg_addsignkey, NULL)
PHP_FE(gnupg_addencryptkey, NULL)
PHP_FE(gnupg_adddecryptkey, NULL)
PHP_FE(gnupg_deletekey, NULL)
PHP_FE(gnupg_gettrustlist, NULL)
PHP_FE(gnupg_listsignatures, NULL)
PHP_FE(gnupg_seterrormode, NULL)
PHP_FE(gnupg_geterror, arginfo_gnupg_void_function)
PHP_FE(gnupg_addsignkey, arginfo_gnupg_void_function)
PHP_FE(gnupg_addencryptkey, arginfo_gnupg_void_function)
PHP_FE(gnupg_adddecryptkey, arginfo_gnupg_void_function)
PHP_FE(gnupg_deletekey, arginfo_gnupg_void_function)
PHP_FE(gnupg_gettrustlist, arginfo_gnupg_void_function)
PHP_FE(gnupg_listsignatures, arginfo_gnupg_void_function)
PHP_FE(gnupg_seterrormode, arginfo_gnupg_void_function)
{NULL, NULL, NULL}
};
/* }}} */
@ -1435,7 +1441,7 @@ PHP_FUNCTION(gnupg_deletekey)
{
char *key;
phpc_str_size_t key_len;
phpc_long_t allow_secret = 0;
zend_bool allow_secret = 0;
gpgme_key_t gpgme_key;
GNUPG_GETOBJ();

View file

@ -84,14 +84,19 @@ PHPC_OBJ_HANDLER_CREATE(gnupg_keylistiterator)
PHPC_OBJ_HANDLER_CREATE_RETURN(gnupg_keylistiterator);
}
/* {{{ arginfo for gnupg void iterator method */
ZEND_BEGIN_ARG_INFO_EX(arginfo_gnupg_void_iterator_method, 0, 0, 0)
ZEND_END_ARG_INFO()
/* }}} */
/* {{{ method list gnupg_keylistiterator */
static zend_function_entry gnupg_keylistiterator_methods[] = {
PHP_ME(gnupg_keylistiterator, __construct, NULL, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, current, NULL, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, key, NULL, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, next, NULL, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, rewind, NULL, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, valid, NULL, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, __construct, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, current, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, key, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, next, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, rewind, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC)
PHP_ME(gnupg_keylistiterator, valid, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC)
PHPC_FE_END
};
/* }}} */

View file

@ -28,10 +28,10 @@
<email>sean@siobud.com</email>
<active>yes</active>
</lead>
<date>2016-08-29</date>
<date>2020-01-05</date>
<version>
<release>1.4.0</release>
<api>1.4.0</api>
<release>1.4.1</release>
<api>1.4.1</api>
</version>
<stability>
<release>stable</release>
@ -39,7 +39,7 @@
</stability>
<license>BSD, revised</license>
<notes><![CDATA[
* No changes since 1.4.0RC2
* Interim support for PHP 8 from 1.4.0-stable before 1.5.0
]]></notes>
<contents>
<dir name="/">
@ -98,6 +98,21 @@
<providesextension>gnupg</providesextension>
<extsrcrelease />
<changelog>
<release>
<version>
<release>1.4.0</release>
<api>1.4.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2016-08-29</date>
<license>BSD, revised</license>
<notes><![CDATA[
* No changes since 1.4.0RC2
]]></notes>
</release>
<release>
<version>
<release>1.4.0RC2</release>

View file

@ -18,7 +18,7 @@
extern zend_module_entry gnupg_module_entry;
#define phpext_gnupg_ptr &gnupg_module_entry
#define PHP_GNUPG_VERSION "1.4.0"
#define PHP_GNUPG_VERSION "1.4.1"
#ifdef PHP_WIN32
#define PHP_GNUPG_API __declspec(dllexport)

View file

@ -31,5 +31,5 @@ array(9) {
["skippedkeys"]=>
int(0)
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
}

View file

@ -13,6 +13,7 @@ $gpg = NULL;
$gpg = new gnupg();
$gpg -> adddecryptkey($fingerprint, $passphrase);
$gpg -> seterrormode(gnupg::ERROR_WARNING);
$ret = $gpg -> decrypt ($enc);
var_dump($ret);

View file

@ -26,7 +26,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -12,27 +12,54 @@ var_dump($ret);
?>
--EXPECTF--
string(%d) "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.%d.%d (GNU/Linux)
Version: GnuPG v%d.%d.%d (GNU/Linux)
mQGiBENQAKwRBADpy828KU+0SuoetJTrJ5dR86PiO3CsH8K6QRP7wY82Eh/9NTJ3
afRj0FNPaVSP0NciPeM4G4uFoQ3lsIf+FBEPXH1D97/XigWObU8K6ha2/s8wU98z
/samjTHLR+VKZ031B5/8p5Y49yvkkEyBkF1G85yeIXK0WZorKBPncRKuUwCgxOi/
IEa+ZuqHlmlDF2LTRIBOfrkEAK+WLRMWUD0bqj1TYwnxwPWiuns32/ZXLWuPfb5o
crNt7x5LSe7wJhjyIiFhiU0qR33X/FrT2umzOxlRYfINXT9DUHDocxxbED6fxAHw
X2IDd5tWXgCkSBHn2yAneNY6ycPdS3RvqJGlYFg7cOc0kz4urjqRt9fIagzpZQtL
fXHfBACl3EWgvLhVBo5ExZbrtlOA2q0x9UGhhNaSkeBWBr2qDeZErQjMTO0+viaN
/SX0zxeWtM3z06rkUHd1DKORDRM5R7shBTv9/Quojn0gbYbOem+e1mlCe27TRxcP
yeIKk00PqbVuff9QlK9GqKEWGzsEXCmxZ160Dul3CGlf/vQZHbQkdGVzdGtleSAo
dGVzdGtleSkgPHRlc3RAZXhhbXBsZS5uZXQ+iF4EExECAB4FAkNQAKwCGwMGCwkI
BwMCAxUCAwMWAgECHgECF4AACgkQLpbxQbPdKy58pwCcDz9qEBEVt1gcKCwNay0f
m4vLqCkAn1P0KV1giECUVXBuZ5YUndDB1QqtuQENBENQAK0QBACNXzJQG4NHUJqL
PImezbl+ii+93MjMo8LpSlv9Np5ruWIKtxuqmVEe4k+r1DDmSl8hppifpRtx2hef
bDTl8Tdf5MNGvf5JE3AHYUehZ+ldjgYCOZ53fJDgKV65ZidQSGGXsRcyE7SHgMQ6
rTL92PA2IQmkcf9xkg6xM2h55UusMwADBQP9EGQ0BAdWRUtA21/cR6F+t97KZnVS
et225UYv8azv8p8cK4R1lrZXChFadK9Kt+/My4HAx7J7zd1IPuKQ0QniuvuLT3Mw
z19B7FGXaJenwTw0P1ihtmSPq9GAOkOA4ZPhHLl9OFwIeAZzjfshRfvm0haO3vwl
xdjhwxyJ/a/JEF2ISQQYEQIACQUCQ1AArQIbDAAKCRAulvFBs90rLrBkAJ9tScp6
drhhPQJw1AY6GEpSbK0JtACeJuewK8C1wO1l5OYkGzFpb4VgquI=
=twR+
mQINBF/0p2oBEADJrIjmuVsty/u6GxtN8AAHNbBv7pDAbxLMzPDTHZgnczDoZa+d
RyRVz5+Hbxzb9U+id9ND6mJ2uDZNWoBW3didW9kD6/9lPssHeGRZxVJ47jsG01i4
odgzH038voDFgVQk+rgJ6wmbWPIII1OfoIDHZ98T7/7n+xJivXwZ3yRPjTpescjs
rTaUSXSz51bfAgPDwcgQK1TUPAxTgGWndfv8cckwYagHDGxKQwp2p0JIiFbt0czB
FEvm8ec5ekLUmj6MZKi+Kwkk7ZO/+CpYRBDXtQKAZ2EfR/ZIhk4gzui+IRN3MRIy
quHRJTMYfImevfgw2OgJ9z8zPalUGzDk88v41BFLLB3sAeItZ6BaEb/odGNjXANZ
x/tO4D96Uk1WlUySzolR9fPfjVdUpFBtOvTQoU5gg1Qqz+DvrpCutoCUZ9kjCmH0
LX/3qMMaJ/pORo1TIz/K7gBRicQ8vWHGj5GTg5W01JJmJOc8af39dj55Gxd6wlKN
gmKOnyWkQpIfIw3zPdnWiEjiWKqlWF0jT/+GY+EWbwLaZ4CGL1X58pCm/5ur98eG
CdM8V6KvR0/kv9+jiVY4ScZvmrVljD47UX6VP4pOassuoSOZbe+B+t/6puO1MVAo
9BBHu1p4o5/YLURTvGjQrBjub1bcZ8VD8fH3aVtnf+jVXDSjYupokeFGIQARAQAB
tBlQSFAgR251UEcgPGdudXBnQHBocC5uZXQ+iQI4BBMBAgAiBQJf9KdqAhsDBgsJ
CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCXarejB2GBWBsKD/4k0zGo8CHIXD1D
jOKAup+RPnRRLcOOHCO/90OgYOAo+wov1JdtgntzExg/QhrlTIFgq0fHtK0uGKcs
VLMX4V0fFuaeFcrMdZiE23alPvbyprSVblRYa1U6Kwumz+QJ8lG6YVuOyQGEPAXT
2yakk9qqs7OmseEniNbNpMyzNwnGHs5ictXrQdjifqncWtst2mLa5wyijOr3f2Qe
lGZAYIc3aaLr9hbIz6e2cLiTwWFd4U4Y6qZeOwbn9j0l91BQzFMgX8cDJYK6XgVS
CqXXc8y59Z0+Q+K7DoYBGwFpxe5/W2xbIZzcVFYHUCM799jOonE/ryte/3Cu3C9B
pSWznlT4IjwvX9WlOSOHiEJaOJzDtKcJdVJ8yMZLOaJPS/z3r6q0Y0PsSsZvrRBm
N0uhENz/GLhH6rpFRxNNENMrb+LePgllK8VnoUNEZAvPIjhvkb8JmflXwuci0r3Z
7b+dldZ9MLEbx69LFhtaW0XC2FjNrh+DSgRYlYw1UKyh/+Zyk+tySQkjoXF3RbBr
VYx9joZXvi86ItX5Nw9FKvjoQpClveMgXbHPec5kMP/nyBe1TKvNLoeh1F3nFsv+
iDE5Yl9dmsOqBZMZ4JBdN4aRf+7QhcC+D2PiJnEnF82z3trZCnUSVupZMZhKwQb+
fITIMHiolm48b7zCIw3kcb9bfbNqz7kCDQRf9KdqARAAz6+kFoX8Zodto/dhkpOc
LnoBG9wUfT2qpJFC40S4DsIWCm+ZVE0823CXjmnkgVimoasB21jZMrBWpT5/YLmy
6tDKn+4+qGuDaaE6F3gnenst9PG10hDsdV3jzhmtyRJq7DIv9lKoeUQ0lxPHmn/U
ErVa7N1hvg6YrHzfZ1oW/9x8gVHIeBhkUKOlqd/1hdRoiJszfy15qCfahw5wCZnL
C/4clm0gc6tzS3pFOhgOJ2tUyM/+LipfjrqAVtK4QoGVhYOWXPERGjjdADhV7VMM
2AQGC1mrg1b1ZgM9/NICW+EJgzzp5JFgD4AdzaZC+LqGaHkl481J7pIRlgB2iXBj
bjZq5qHBzyKEjfXjbywMFN1D29PF/O7tEogS+NiK8FLhUpRWLA6uRh3hYpig27f9
tDRRJ9xJmqsXvhWqB6i1oht0xMc6osZUiEacWtoKcvcqC8h/KuFA/hXeL3R0L9oF
oAupeG1m4CiC07UGceozJW+U7RgjR6eyuU3P/pmFdQa9tXSPQddcvx0tlZTW/QQh
jvpYllpWzHt2ih6ji+dYqBU1gLHaD3jrDO7y5ZkVMIcjZ4c/yuc3GtQPoSlH7dCX
3XqIpdsDUywCFg1gVGNY2UVQ5oGGgL3eXJwWK0AxVQ+4VcItNCFUr4QdL+7VPusg
4oRnCrhAFM9fDAbtNveKJh8AEQEAAYkCHwQYAQIACQUCX/SnagIbDAAKCRCXarej
B2GBWN+xD/9sI/aY4Z7FVa7PC41QJ4k/fQwxesaQgilxh5KFDOLD1ww0SxhaGyMh
nQL1qwwc0e8LWcAHTU+4dAJ+IRa5+dLdzXJwYqP4XeIUr3uDyIhJXeNxFTae5cUy
gShda/I3nmUoB/VQrGT3LjGc2V+PLialr91MBJiIzY16GBWalK9QsAlPmK+9+LVX
Kti3nNMuZ270HokIRnMXnYeLqYasjame4UYGJmgVM1RirQMTGdzPucK/fh+O1TPQ
l0C1Ydh1dUBV/7VoUCAo2o71LURUUxxKgAGnSrc4maDiXXSO3sLwWIACiMq+gOld
tbWkdRIgQk2HrjfT3oiiy61ntimX5J29514UizinwdNhDzmnst3dUr8TpoxmkgZG
NCskMzpEN3+kWe7zVCm5yuxjtdIx5hjy4ISIYzNQRtsPlt2A8c4LJg62anDBEcR9
srEESGH753xfTYX3478bkQhctGuY1vJ0rSWJT32wSe75uGdKLhoMaTsm4F/ItFZi
X6EU4+WUBYVl6BCwqi/pfoSWlLLjef5BviYETpSvRFb5Xx8cdXsfRSZcEBMQeywj
50nt3JVQqgPkUG3S2JLlfUC4pOJgr4K9LzxKOz0d8rbu1xzGcPy4f/AKLOfHVIeU
z67HXiRsxEC6IZsNRfW5x9NlA7bTH25xbw25WRP9pFfZhwN6qHatEw==
=2PXh
-----END PGP PUBLIC KEY BLOCK-----
"

View file

@ -31,13 +31,13 @@ array(1) {
[0]=>
array(6) {
["name"]=>
string(7) "testkey"
string(9) "PHP GnuPG"
["comment"]=>
string(7) "testkey"
string(0) ""
["email"]=>
string(16) "test@example.net"
string(13) "gnupg@php.net"
["uid"]=>
string(36) "testkey (testkey) <test@example.net>"
string(25) "PHP GnuPG <gnupg@php.net>"
["revoked"]=>
bool(false)
["invalid"]=>
@ -49,11 +49,11 @@ array(1) {
[0]=>
array(11) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["keyid"]=>
string(16) "2E96F141B3DD2B2E"
string(16) "976AB7A307618158"
["timestamp"]=>
int(1129316524)
int(1609869162)
["expires"]=>
int(0)
["is_secret"]=>
@ -74,11 +74,11 @@ array(1) {
[1]=>
array(11) {
["fingerprint"]=>
string(40) "A3437D3651E27CF9864198F0BFE8D07DDACDEAC8"
string(40) "E9E3A5171BDC5B621420E2A99A9BF4CB9BF4BF97"
["keyid"]=>
string(16) "BFE8D07DDACDEAC8"
string(16) "9A9BF4CB9BF4BF97"
["timestamp"]=>
int(1129316525)
int(1609869162)
["expires"]=>
int(0)
["is_secret"]=>

View file

@ -12,18 +12,18 @@ var_dump($ret);
?>
--EXPECT--
array(1) {
["testkey (testkey) <test@example.net>"]=>
["PHP GnuPG <gnupg@php.net>"]=>
array(1) {
["2E96F141B3DD2B2E"]=>
["976AB7A307618158"]=>
array(8) {
["uid"]=>
string(36) "testkey (testkey) <test@example.net>"
string(25) "PHP GnuPG <gnupg@php.net>"
["name"]=>
string(7) "testkey"
string(9) "PHP GnuPG"
["email"]=>
string(16) "test@example.net"
string(13) "gnupg@php.net"
["comment"]=>
string(7) "testkey"
string(0) ""
["expires"]=>
int(0)
["revoked"]=>

View file

@ -25,7 +25,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -25,7 +25,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -26,7 +26,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -26,7 +26,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -27,7 +27,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -29,5 +29,5 @@ array(9) {
["skippedkeys"]=>
int(0)
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
}

View file

@ -24,7 +24,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -10,27 +10,54 @@ var_dump($ret);
?>
--EXPECTF--
string(%d) "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.%d.%d (GNU/Linux)
Version: GnuPG v%d.%d.%d (GNU/Linux)
mQGiBENQAKwRBADpy828KU+0SuoetJTrJ5dR86PiO3CsH8K6QRP7wY82Eh/9NTJ3
afRj0FNPaVSP0NciPeM4G4uFoQ3lsIf+FBEPXH1D97/XigWObU8K6ha2/s8wU98z
/samjTHLR+VKZ031B5/8p5Y49yvkkEyBkF1G85yeIXK0WZorKBPncRKuUwCgxOi/
IEa+ZuqHlmlDF2LTRIBOfrkEAK+WLRMWUD0bqj1TYwnxwPWiuns32/ZXLWuPfb5o
crNt7x5LSe7wJhjyIiFhiU0qR33X/FrT2umzOxlRYfINXT9DUHDocxxbED6fxAHw
X2IDd5tWXgCkSBHn2yAneNY6ycPdS3RvqJGlYFg7cOc0kz4urjqRt9fIagzpZQtL
fXHfBACl3EWgvLhVBo5ExZbrtlOA2q0x9UGhhNaSkeBWBr2qDeZErQjMTO0+viaN
/SX0zxeWtM3z06rkUHd1DKORDRM5R7shBTv9/Quojn0gbYbOem+e1mlCe27TRxcP
yeIKk00PqbVuff9QlK9GqKEWGzsEXCmxZ160Dul3CGlf/vQZHbQkdGVzdGtleSAo
dGVzdGtleSkgPHRlc3RAZXhhbXBsZS5uZXQ+iF4EExECAB4FAkNQAKwCGwMGCwkI
BwMCAxUCAwMWAgECHgECF4AACgkQLpbxQbPdKy58pwCcDz9qEBEVt1gcKCwNay0f
m4vLqCkAn1P0KV1giECUVXBuZ5YUndDB1QqtuQENBENQAK0QBACNXzJQG4NHUJqL
PImezbl+ii+93MjMo8LpSlv9Np5ruWIKtxuqmVEe4k+r1DDmSl8hppifpRtx2hef
bDTl8Tdf5MNGvf5JE3AHYUehZ+ldjgYCOZ53fJDgKV65ZidQSGGXsRcyE7SHgMQ6
rTL92PA2IQmkcf9xkg6xM2h55UusMwADBQP9EGQ0BAdWRUtA21/cR6F+t97KZnVS
et225UYv8azv8p8cK4R1lrZXChFadK9Kt+/My4HAx7J7zd1IPuKQ0QniuvuLT3Mw
z19B7FGXaJenwTw0P1ihtmSPq9GAOkOA4ZPhHLl9OFwIeAZzjfshRfvm0haO3vwl
xdjhwxyJ/a/JEF2ISQQYEQIACQUCQ1AArQIbDAAKCRAulvFBs90rLrBkAJ9tScp6
drhhPQJw1AY6GEpSbK0JtACeJuewK8C1wO1l5OYkGzFpb4VgquI=
=twR+
mQINBF/0p2oBEADJrIjmuVsty/u6GxtN8AAHNbBv7pDAbxLMzPDTHZgnczDoZa+d
RyRVz5+Hbxzb9U+id9ND6mJ2uDZNWoBW3didW9kD6/9lPssHeGRZxVJ47jsG01i4
odgzH038voDFgVQk+rgJ6wmbWPIII1OfoIDHZ98T7/7n+xJivXwZ3yRPjTpescjs
rTaUSXSz51bfAgPDwcgQK1TUPAxTgGWndfv8cckwYagHDGxKQwp2p0JIiFbt0czB
FEvm8ec5ekLUmj6MZKi+Kwkk7ZO/+CpYRBDXtQKAZ2EfR/ZIhk4gzui+IRN3MRIy
quHRJTMYfImevfgw2OgJ9z8zPalUGzDk88v41BFLLB3sAeItZ6BaEb/odGNjXANZ
x/tO4D96Uk1WlUySzolR9fPfjVdUpFBtOvTQoU5gg1Qqz+DvrpCutoCUZ9kjCmH0
LX/3qMMaJ/pORo1TIz/K7gBRicQ8vWHGj5GTg5W01JJmJOc8af39dj55Gxd6wlKN
gmKOnyWkQpIfIw3zPdnWiEjiWKqlWF0jT/+GY+EWbwLaZ4CGL1X58pCm/5ur98eG
CdM8V6KvR0/kv9+jiVY4ScZvmrVljD47UX6VP4pOassuoSOZbe+B+t/6puO1MVAo
9BBHu1p4o5/YLURTvGjQrBjub1bcZ8VD8fH3aVtnf+jVXDSjYupokeFGIQARAQAB
tBlQSFAgR251UEcgPGdudXBnQHBocC5uZXQ+iQI4BBMBAgAiBQJf9KdqAhsDBgsJ
CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCXarejB2GBWBsKD/4k0zGo8CHIXD1D
jOKAup+RPnRRLcOOHCO/90OgYOAo+wov1JdtgntzExg/QhrlTIFgq0fHtK0uGKcs
VLMX4V0fFuaeFcrMdZiE23alPvbyprSVblRYa1U6Kwumz+QJ8lG6YVuOyQGEPAXT
2yakk9qqs7OmseEniNbNpMyzNwnGHs5ictXrQdjifqncWtst2mLa5wyijOr3f2Qe
lGZAYIc3aaLr9hbIz6e2cLiTwWFd4U4Y6qZeOwbn9j0l91BQzFMgX8cDJYK6XgVS
CqXXc8y59Z0+Q+K7DoYBGwFpxe5/W2xbIZzcVFYHUCM799jOonE/ryte/3Cu3C9B
pSWznlT4IjwvX9WlOSOHiEJaOJzDtKcJdVJ8yMZLOaJPS/z3r6q0Y0PsSsZvrRBm
N0uhENz/GLhH6rpFRxNNENMrb+LePgllK8VnoUNEZAvPIjhvkb8JmflXwuci0r3Z
7b+dldZ9MLEbx69LFhtaW0XC2FjNrh+DSgRYlYw1UKyh/+Zyk+tySQkjoXF3RbBr
VYx9joZXvi86ItX5Nw9FKvjoQpClveMgXbHPec5kMP/nyBe1TKvNLoeh1F3nFsv+
iDE5Yl9dmsOqBZMZ4JBdN4aRf+7QhcC+D2PiJnEnF82z3trZCnUSVupZMZhKwQb+
fITIMHiolm48b7zCIw3kcb9bfbNqz7kCDQRf9KdqARAAz6+kFoX8Zodto/dhkpOc
LnoBG9wUfT2qpJFC40S4DsIWCm+ZVE0823CXjmnkgVimoasB21jZMrBWpT5/YLmy
6tDKn+4+qGuDaaE6F3gnenst9PG10hDsdV3jzhmtyRJq7DIv9lKoeUQ0lxPHmn/U
ErVa7N1hvg6YrHzfZ1oW/9x8gVHIeBhkUKOlqd/1hdRoiJszfy15qCfahw5wCZnL
C/4clm0gc6tzS3pFOhgOJ2tUyM/+LipfjrqAVtK4QoGVhYOWXPERGjjdADhV7VMM
2AQGC1mrg1b1ZgM9/NICW+EJgzzp5JFgD4AdzaZC+LqGaHkl481J7pIRlgB2iXBj
bjZq5qHBzyKEjfXjbywMFN1D29PF/O7tEogS+NiK8FLhUpRWLA6uRh3hYpig27f9
tDRRJ9xJmqsXvhWqB6i1oht0xMc6osZUiEacWtoKcvcqC8h/KuFA/hXeL3R0L9oF
oAupeG1m4CiC07UGceozJW+U7RgjR6eyuU3P/pmFdQa9tXSPQddcvx0tlZTW/QQh
jvpYllpWzHt2ih6ji+dYqBU1gLHaD3jrDO7y5ZkVMIcjZ4c/yuc3GtQPoSlH7dCX
3XqIpdsDUywCFg1gVGNY2UVQ5oGGgL3eXJwWK0AxVQ+4VcItNCFUr4QdL+7VPusg
4oRnCrhAFM9fDAbtNveKJh8AEQEAAYkCHwQYAQIACQUCX/SnagIbDAAKCRCXarej
B2GBWN+xD/9sI/aY4Z7FVa7PC41QJ4k/fQwxesaQgilxh5KFDOLD1ww0SxhaGyMh
nQL1qwwc0e8LWcAHTU+4dAJ+IRa5+dLdzXJwYqP4XeIUr3uDyIhJXeNxFTae5cUy
gShda/I3nmUoB/VQrGT3LjGc2V+PLialr91MBJiIzY16GBWalK9QsAlPmK+9+LVX
Kti3nNMuZ270HokIRnMXnYeLqYasjame4UYGJmgVM1RirQMTGdzPucK/fh+O1TPQ
l0C1Ydh1dUBV/7VoUCAo2o71LURUUxxKgAGnSrc4maDiXXSO3sLwWIACiMq+gOld
tbWkdRIgQk2HrjfT3oiiy61ntimX5J29514UizinwdNhDzmnst3dUr8TpoxmkgZG
NCskMzpEN3+kWe7zVCm5yuxjtdIx5hjy4ISIYzNQRtsPlt2A8c4LJg62anDBEcR9
srEESGH753xfTYX3478bkQhctGuY1vJ0rSWJT32wSe75uGdKLhoMaTsm4F/ItFZi
X6EU4+WUBYVl6BCwqi/pfoSWlLLjef5BviYETpSvRFb5Xx8cdXsfRSZcEBMQeywj
50nt3JVQqgPkUG3S2JLlfUC4pOJgr4K9LzxKOz0d8rbu1xzGcPy4f/AKLOfHVIeU
z67HXiRsxEC6IZsNRfW5x9NlA7bTH25xbw25WRP9pFfZhwN6qHatEw==
=2PXh
-----END PGP PUBLIC KEY BLOCK-----
"

View file

@ -29,13 +29,13 @@ array(1) {
[0]=>
array(6) {
["name"]=>
string(7) "testkey"
string(9) "PHP GnuPG"
["comment"]=>
string(7) "testkey"
string(0) ""
["email"]=>
string(16) "test@example.net"
string(13) "gnupg@php.net"
["uid"]=>
string(36) "testkey (testkey) <test@example.net>"
string(25) "PHP GnuPG <gnupg@php.net>"
["revoked"]=>
bool(false)
["invalid"]=>
@ -47,11 +47,11 @@ array(1) {
[0]=>
array(11) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["keyid"]=>
string(16) "2E96F141B3DD2B2E"
string(16) "976AB7A307618158"
["timestamp"]=>
int(1129316524)
int(1609869162)
["expires"]=>
int(0)
["is_secret"]=>
@ -72,11 +72,11 @@ array(1) {
[1]=>
array(11) {
["fingerprint"]=>
string(40) "A3437D3651E27CF9864198F0BFE8D07DDACDEAC8"
string(40) "E9E3A5171BDC5B621420E2A99A9BF4CB9BF4BF97"
["keyid"]=>
string(16) "BFE8D07DDACDEAC8"
string(16) "9A9BF4CB9BF4BF97"
["timestamp"]=>
int(1129316525)
int(1609869162)
["expires"]=>
int(0)
["is_secret"]=>

View file

@ -10,18 +10,18 @@ var_dump($ret);
?>
--EXPECT--
array(1) {
["testkey (testkey) <test@example.net>"]=>
["PHP GnuPG <gnupg@php.net>"]=>
array(1) {
["2E96F141B3DD2B2E"]=>
["976AB7A307618158"]=>
array(8) {
["uid"]=>
string(36) "testkey (testkey) <test@example.net>"
string(25) "PHP GnuPG <gnupg@php.net>"
["name"]=>
string(7) "testkey"
string(9) "PHP GnuPG"
["email"]=>
string(16) "test@example.net"
string(13) "gnupg@php.net"
["comment"]=>
string(7) "testkey"
string(0) ""
["expires"]=>
int(0)
["revoked"]=>

View file

@ -23,7 +23,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -23,7 +23,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -24,7 +24,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -24,7 +24,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -24,7 +24,7 @@ array(1) {
[0]=>
array(5) {
["fingerprint"]=>
string(40) "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E"
string(40) "BA5808CEAC2F4DEB25599472976AB7A307618158"
["validity"]=>
int(0)
["timestamp"]=>

View file

@ -1,38 +1,115 @@
<?php
putenv("GNUPGHOME=".dirname(__FILE__));
error_reporting (E_ALL);
$fingerprint = "64DF06E42FCF2094590CDEEE2E96F141B3DD2B2E";
$passphrase = "blabla";
$fingerprint = "BA5808CEAC2F4DEB25599472976AB7A307618158";
$passphrase = '';
$plaintext = "foo bar";
$testkey =<<<EOF
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.3 (GNU/Linux)
lQHhBENQAKwRBADpy828KU+0SuoetJTrJ5dR86PiO3CsH8K6QRP7wY82Eh/9NTJ3
afRj0FNPaVSP0NciPeM4G4uFoQ3lsIf+FBEPXH1D97/XigWObU8K6ha2/s8wU98z
/samjTHLR+VKZ031B5/8p5Y49yvkkEyBkF1G85yeIXK0WZorKBPncRKuUwCgxOi/
IEa+ZuqHlmlDF2LTRIBOfrkEAK+WLRMWUD0bqj1TYwnxwPWiuns32/ZXLWuPfb5o
crNt7x5LSe7wJhjyIiFhiU0qR33X/FrT2umzOxlRYfINXT9DUHDocxxbED6fxAHw
X2IDd5tWXgCkSBHn2yAneNY6ycPdS3RvqJGlYFg7cOc0kz4urjqRt9fIagzpZQtL
fXHfBACl3EWgvLhVBo5ExZbrtlOA2q0x9UGhhNaSkeBWBr2qDeZErQjMTO0+viaN
/SX0zxeWtM3z06rkUHd1DKORDRM5R7shBTv9/Quojn0gbYbOem+e1mlCe27TRxcP
yeIKk00PqbVuff9QlK9GqKEWGzsEXCmxZ160Dul3CGlf/vQZHf4DAwJAwtVOoL7t
cGBlDCPs4m+HNqT+hD5LGtrx8IC/dnPGNrjFsVybcptYgdn4i6nkSnu+g6a7rcjN
qTUyYrQkdGVzdGtleSAodGVzdGtleSkgPHRlc3RAZXhhbXBsZS5uZXQ+iF4EExEC
AB4FAkNQAKwCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQLpbxQbPdKy58pwCc
Dz9qEBEVt1gcKCwNay0fm4vLqCkAn1P0KV1giECUVXBuZ5YUndDB1QqtnQFXBENQ
AK0QBACNXzJQG4NHUJqLPImezbl+ii+93MjMo8LpSlv9Np5ruWIKtxuqmVEe4k+r
1DDmSl8hppifpRtx2hefbDTl8Tdf5MNGvf5JE3AHYUehZ+ldjgYCOZ53fJDgKV65
ZidQSGGXsRcyE7SHgMQ6rTL92PA2IQmkcf9xkg6xM2h55UusMwADBQP9EGQ0BAdW
RUtA21/cR6F+t97KZnVSet225UYv8azv8p8cK4R1lrZXChFadK9Kt+/My4HAx7J7
zd1IPuKQ0QniuvuLT3Mwz19B7FGXaJenwTw0P1ihtmSPq9GAOkOA4ZPhHLl9OFwI
eAZzjfshRfvm0haO3vwlxdjhwxyJ/a/JEF3+AwMCQMLVTqC+7XBgepY5Qw0vGNYN
K5jkMtn1Pjj/tzYKJIvneoEXb9lEzV4fpju1q8p+FmKHokwjq6FrEF2edKtuYygj
qNKIrYhJBBgRAgAJBQJDUACtAhsMAAoJEC6W8UGz3SsusGQAn21Jynp2uGE9AnDU
BjoYSlJsrQm0AJ4m57ArwLXA7WXk5iQbMWlvhWCq4g==
=awlp
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
=YH2s
-----END PGP PRIVATE KEY BLOCK-----
EOF;
?>