forked from pool/php-gnupg
- Update to 1.5.0RC1
* Added support for PHP 8 * Added support for GnuPG 2.1+ * Added argument info for all functions and methods (reflection support) * Added new function `gnupg_getengineinfo` * Added new function `gnupg_geterrorinfo` * Added init array argument for setting home dir and gpg binary file name * Added additional fields to `gnupg_keyinfo` returned array * Added parameter to `gnupg_keyinfo` to use `secret_only` * Fixed `gnupg_deletekey` to use boolean for `allow_secret` parameter - Update to 1.4.0 * No changes since 1.4.0RC2 - Update to 1.4.0RC2 * Fixed ZTS issue with invalid context for a password callback - Update to 1.4.0RC1 * Added support for PHP 7 * Fixed various compilation issues - Use _multibuild to build for php7 and php8 - Use php_cfgdir and php_extdir macros to determine location of files - Run unit tests - Add files missing from the PECL tarball + gnupgt.inc + vars.inc OBS-URL: https://build.opensuse.org/package/show/server:php:extensions/php-gnupg?expand=0&rev=2
This commit is contained in:
4
_multibuild
Normal file
4
_multibuild
Normal file
@@ -0,0 +1,4 @@
|
||||
<multibuild>
|
||||
<package>php7</package>
|
||||
<!--<package>php8</package>-->
|
||||
</multibuild>
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:50065cb81f1ac3ec5fcd796e58c8433071ff24cc14900e6077682717f5239307
|
||||
size 19273
|
3
gnupg-1.5.0RC1.tgz
Normal file
3
gnupg-1.5.0RC1.tgz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c1576812d80d44caca25b6a84690f2aebfabb6eb0c5c640140bec06c1505910e
|
||||
size 32109
|
211
gnupgt.inc
Normal file
211
gnupgt.inc
Normal file
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . "/vars.inc";
|
||||
|
||||
class gnupgt {
|
||||
/**
|
||||
* Import all keys
|
||||
*/
|
||||
static public function import_key()
|
||||
{
|
||||
global $testkey;
|
||||
|
||||
self::reset_key();
|
||||
|
||||
$gpg = new gnupg();
|
||||
$gpg->import($testkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
foreach (glob($homeDir . '/*') as $filename) {
|
||||
if (!is_dir($filename)) {
|
||||
unlink($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 <gnupg@php.net>', $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');
|
||||
}
|
||||
}
|
1
php-gnupg-rpmlintrc
Normal file
1
php-gnupg-rpmlintrc
Normal file
@@ -0,0 +1 @@
|
||||
addFilter("invalid-spec-name")
|
51
php-gnupg.changes
Normal file
51
php-gnupg.changes
Normal file
@@ -0,0 +1,51 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Feb 21 11:27:19 UTC 2021 - Arjen de Korte <suse+build@de-korte.org>
|
||||
|
||||
- Update to 1.5.0RC1
|
||||
* Added support for PHP 8
|
||||
* Added support for GnuPG 2.1+
|
||||
* Added argument info for all functions and methods (reflection support)
|
||||
* Added new function `gnupg_getengineinfo`
|
||||
* Added new function `gnupg_geterrorinfo`
|
||||
* Added init array argument for setting home dir and gpg binary file name
|
||||
* Added additional fields to `gnupg_keyinfo` returned array
|
||||
* Added parameter to `gnupg_keyinfo` to use `secret_only`
|
||||
* Fixed `gnupg_deletekey` to use boolean for `allow_secret` parameter
|
||||
|
||||
- Update to 1.4.0
|
||||
* No changes since 1.4.0RC2
|
||||
|
||||
- Update to 1.4.0RC2
|
||||
* Fixed ZTS issue with invalid context for a password callback
|
||||
|
||||
- Update to 1.4.0RC1
|
||||
* Added support for PHP 7
|
||||
* Fixed various compilation issues
|
||||
|
||||
- Use _multibuild to build for php7 and php8
|
||||
- Use php_cfgdir and php_extdir macros to determine location of files
|
||||
- Run unit tests
|
||||
- Add files missing from the PECL tarball
|
||||
+ gnupgt.inc
|
||||
+ vars.inc
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 29 09:25:25 UTC 2016 - pgajdos@suse.com
|
||||
|
||||
- provides php-gnupg symbol
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 12 13:38:02 UTC 2016 - pgajdos@suse.com
|
||||
|
||||
- updated to 1.3.6
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 17 04:11:52 CEST 2009 - crrodriguez@novell.com
|
||||
|
||||
- use versioning macros
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 4 22:18:39 UTC 2007 - judas_iscariote@shorewall.net
|
||||
|
||||
- update to version 1.3.1 fixing a double-free with recent gpgme-lib
|
||||
|
84
php-gnupg.spec
Normal file
84
php-gnupg.spec
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
# spec file for package php5-gnupg
|
||||
#
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define pkg_name gnupg
|
||||
|
||||
%define flavor @BUILD_FLAVOR@%{nil}
|
||||
%if "%{flavor}" == ""
|
||||
%define php_name php
|
||||
ExclusiveArch: do-not-build
|
||||
%else
|
||||
%define php_name %{flavor}
|
||||
%endif
|
||||
%if 0%{?suse_version} <= 1500
|
||||
%define php_extdir %(%{__php_config} --extension-dir)
|
||||
%define php_cfgdir %{_sysconfdir}/%{php_name}/conf.d
|
||||
%endif
|
||||
|
||||
Name: %{php_name}-%{pkg_name}
|
||||
Version: 1.5.0RC1
|
||||
Release: 0
|
||||
Summary: PHP wrapper around the gpgme library
|
||||
License: BSD-2-Clause
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Url: https://pecl.php.net/gnupg
|
||||
Source0: https://pecl.php.net/get/%{pkg_name}-%{version}.tgz
|
||||
Source1: php-%{pkg_name}-rpmlintrc
|
||||
# https://github.com/php-gnupg/php-gnupg/issues/28
|
||||
Source2: gnupgt.inc
|
||||
Source3: vars.inc
|
||||
BuildRequires: %{php_name}-devel
|
||||
BuildRequires: gpgme-devel
|
||||
Requires: php(api) = %{php_core_api}
|
||||
Requires: php(zend-abi) = %{php_zend_api}
|
||||
Provides: php-gnupg = %{version}
|
||||
Obsoletes: php-gnupg < %{version}
|
||||
|
||||
%description
|
||||
This extension provides methods to interact with gnupg.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{pkg_name}-%{version}
|
||||
cp %{SOURCE2} %{SOURCE3} tests/
|
||||
|
||||
%build
|
||||
export CFLAGS="%{optflags} -fno-strict-aliasing"
|
||||
export CXXFLAGS="%{optflags} -fno-strict-aliasing"
|
||||
%{__phpize}
|
||||
%configure --disable-rpath --with-gnupg=%{_usr} --with-libdir=%{_lib}
|
||||
%make_build
|
||||
|
||||
%check
|
||||
%make_build PHP_EXECUTABLE=%{__php} NO_INTERACTION=1 test
|
||||
|
||||
%install
|
||||
%make_install INSTALL_ROOT=%{buildroot}
|
||||
mkdir -p %{buildroot}%{php_cfgdir}
|
||||
cat >> %{buildroot}%{php_cfgdir}/%{pkg_name}.ini << EOF
|
||||
; comment out next line to disable %{pkg_name} extension in php
|
||||
extension=%{pkg_name}.so"
|
||||
EOF
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README
|
||||
%config(noreplace) %{php_cfgdir}/%{pkg_name}.ini
|
||||
%{php_extdir}/%{pkg_name}.so
|
||||
|
||||
%changelog
|
||||
|
@@ -1,20 +0,0 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 29 09:25:25 UTC 2016 - pgajdos@suse.com
|
||||
|
||||
- provides php-gnupg symbol
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 12 13:38:02 UTC 2016 - pgajdos@suse.com
|
||||
|
||||
- updated to 1.3.6
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 17 04:11:52 CEST 2009 - crrodriguez@novell.com
|
||||
|
||||
- use versioning macros
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 4 22:18:39 UTC 2007 - judas_iscariote@shorewall.net
|
||||
|
||||
- update to version 1.3.1 fixing a double-free with recent gpgme-lib
|
||||
|
@@ -1,85 +0,0 @@
|
||||
#
|
||||
# spec file for package php5-gnupg
|
||||
#
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define pkg_name gnupg
|
||||
#
|
||||
Name: php5-gnupg
|
||||
Version: 1.3.6
|
||||
Release: 0
|
||||
Summary: PHP wrapper around the gpgme library
|
||||
#
|
||||
License: BSD-2-Clause
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
#
|
||||
Url: http://pecl.php.net/gnupg
|
||||
Source: https://pecl.php.net/get/%{pkg_name}-%{version}.tgz
|
||||
BuildRequires: php5-devel
|
||||
Provides: php-gnupg = %{version}
|
||||
Obsoletes: php-gnupg < %{version}
|
||||
#
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
%if 0%{?suse_version} < 1010
|
||||
BuildRequires: gpgme
|
||||
BuildRequires: libgpg-error-devel
|
||||
%else
|
||||
BuildRequires: gpgme-devel
|
||||
%endif
|
||||
%if %{?php_zend_api}0
|
||||
Requires: php(api) = %{php_core_api}
|
||||
Requires: php(zend-abi) = %{php_zend_api}
|
||||
%else
|
||||
%requires_eq php5
|
||||
%endif
|
||||
|
||||
%description
|
||||
This extension provides methods to interact with gnupg.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{pkg_name}-%{version}
|
||||
mkdir %{name}
|
||||
|
||||
%build
|
||||
%{_bindir}/phpize
|
||||
pushd %{name}
|
||||
CFLAGS="%{optflags} -fno-strict-aliasing"
|
||||
CXXFLAGS="%{optflags} -fno-strict-aliasing"
|
||||
export CFLAGS
|
||||
export CXXFLAGS
|
||||
export PHP_RPATH='no'
|
||||
../configure --disable-rpath --with-gnupg=%{_usr} --with-libdir=%{_lib}
|
||||
make %{?_smp_mflags}
|
||||
popd
|
||||
|
||||
%install
|
||||
make DESTDIR=%{buildroot} install %{?_smp_mflags} -C %{name} INSTALL_ROOT=%{buildroot}
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/php5/conf.d
|
||||
echo "; comment out next line to disable gnupg extension in php" > %{buildroot}%{_sysconfdir}/php5/conf.d/gnupg.ini
|
||||
echo 'extension = gnupg.so' >> %{buildroot}%{_sysconfdir}/php5/conf.d/gnupg.ini
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/php5/extensions/gnupg.so
|
||||
%config(noreplace) %{_sysconfdir}/php5/conf.d/gnupg.ini
|
||||
%doc LICENSE README
|
||||
|
||||
%changelog -n php5-gnupg
|
||||
* Sat Dec 30 2006 - judas_iscariote@shorewall.net
|
||||
- lib64 fixes
|
||||
* Thu Nov 16 2006 - soporte@onfocus.cl
|
||||
- very first build
|
||||
|
69
vars.inc
Normal file
69
vars.inc
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
putenv("GNUPGHOME=".dirname(__FILE__) . '/home');
|
||||
error_reporting (E_ALL);
|
||||
$fingerprint = "2DF0DD02DC9B70B7F64F572E669E775E0A6284B3";
|
||||
$passphrase = "blabla";
|
||||
|
||||
$plaintext = "foo bar";
|
||||
|
||||
$testkey =<<<EOF
|
||||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
|
||||
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
|
||||
ngBZTudrwBbKC8xx224aOk0TiDbiWftGtx4=
|
||||
=py/2
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
||||
EOF;
|
||||
?>
|
Reference in New Issue
Block a user