mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-09 09:58:49 +00:00
[securemail] Upgrade Composer dependencies to fix PHP8 issue
- Upgrading phpseclib/phpseclib (2.0.4 => 2.0.34) - Upgrading singpolyma/openpgp-php (0.3.0 => 0.5.0)
This commit is contained in:
parent
fb77e3c5ea
commit
0c7fd9a34d
65 changed files with 5407 additions and 3230 deletions
3
securemail/vendor/singpolyma/openpgp-php/.github/FUNDING.yml
vendored
Normal file
3
securemail/vendor/singpolyma/openpgp-php/.github/FUNDING.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
github: singpolyma
|
||||
liberapay: singpolyma
|
||||
patreon: singpolyma
|
30
securemail/vendor/singpolyma/openpgp-php/.travis.dhall
vendored
Normal file
30
securemail/vendor/singpolyma/openpgp-php/.travis.dhall
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
let Prelude = https://prelude.dhall-lang.org/v17.0.0/package.dhall
|
||||
let phpseclib = \(max: Natural) -> \(filter: (Natural -> Bool)) ->
|
||||
Prelude.List.map Natural Text
|
||||
(\(m: Natural) -> "PHPSECLIB='2.0.${Prelude.Natural.show m}'")
|
||||
(Prelude.List.filter Natural filter (Prelude.Natural.enumerate max))
|
||||
let Exclusion = { php: Text, env: Text }
|
||||
in
|
||||
{
|
||||
language = "php",
|
||||
php = [
|
||||
"7.3",
|
||||
"7.4",
|
||||
"8.0"
|
||||
],
|
||||
dist = "xenial",
|
||||
env = [
|
||||
"PHPSECLIB='^2.0 !=2.0.8'"
|
||||
] # (phpseclib 28 (\(m: Natural) -> Prelude.Bool.not (Prelude.Natural.equal m 8))
|
||||
),
|
||||
matrix = {
|
||||
exclude = Prelude.List.concatMap Text Exclusion (\(php: Text) ->
|
||||
Prelude.List.map Text Exclusion (\(env: Text) ->
|
||||
{ php = php, env = env }
|
||||
) (phpseclib 7 (\(_: Natural) -> True))
|
||||
) ["7.3", "7.4", "8.0"],
|
||||
fast_finish = True
|
||||
},
|
||||
before_script = ''
|
||||
sed -i "s/\"phpseclib\/phpseclib\": \"[^\"]*/\"phpseclib\/phpseclib\": \"$PHPSECLIB/" composer.json && composer install --prefer-source''
|
||||
}
|
|
@ -1,18 +1,82 @@
|
|||
language: php
|
||||
php:
|
||||
- 5.3
|
||||
- 5.4
|
||||
- 5.5
|
||||
- 5.6
|
||||
- 7.0
|
||||
- hhvm
|
||||
# - nightly
|
||||
|
||||
# Code generated by dhall-to-yaml. DO NOT EDIT.
|
||||
before_script: "sed -i \"s/\\\"phpseclib\\/phpseclib\\\": \\\"[^\\\"]*/\\\"phpseclib\\/phpseclib\\\": \\\"$PHPSECLIB/\" composer.json && composer install --prefer-source"
|
||||
dist: xenial
|
||||
env:
|
||||
- PHPSECLIB="2.0.0"
|
||||
- PHPSECLIB="2.0.1"
|
||||
- PHPSECLIB="2.0.2"
|
||||
- PHPSECLIB="2.0.3"
|
||||
- PHPSECLIB="2.0.4"
|
||||
|
||||
before_script: 'sed -i "s/\"phpseclib\/phpseclib\": \"[^\"]*/\"phpseclib\/phpseclib\": \"$PHPSECLIB/" composer.json && composer install --prefer-source --dev'
|
||||
- "PHPSECLIB='^2.0 !=2.0.8'"
|
||||
- "PHPSECLIB='2.0.0'"
|
||||
- "PHPSECLIB='2.0.1'"
|
||||
- "PHPSECLIB='2.0.2'"
|
||||
- "PHPSECLIB='2.0.3'"
|
||||
- "PHPSECLIB='2.0.4'"
|
||||
- "PHPSECLIB='2.0.5'"
|
||||
- "PHPSECLIB='2.0.6'"
|
||||
- "PHPSECLIB='2.0.7'"
|
||||
- "PHPSECLIB='2.0.9'"
|
||||
- "PHPSECLIB='2.0.10'"
|
||||
- "PHPSECLIB='2.0.11'"
|
||||
- "PHPSECLIB='2.0.12'"
|
||||
- "PHPSECLIB='2.0.13'"
|
||||
- "PHPSECLIB='2.0.14'"
|
||||
- "PHPSECLIB='2.0.15'"
|
||||
- "PHPSECLIB='2.0.16'"
|
||||
- "PHPSECLIB='2.0.17'"
|
||||
- "PHPSECLIB='2.0.18'"
|
||||
- "PHPSECLIB='2.0.19'"
|
||||
- "PHPSECLIB='2.0.20'"
|
||||
- "PHPSECLIB='2.0.21'"
|
||||
- "PHPSECLIB='2.0.22'"
|
||||
- "PHPSECLIB='2.0.23'"
|
||||
- "PHPSECLIB='2.0.24'"
|
||||
- "PHPSECLIB='2.0.25'"
|
||||
- "PHPSECLIB='2.0.26'"
|
||||
- "PHPSECLIB='2.0.27'"
|
||||
language: php
|
||||
matrix:
|
||||
exclude:
|
||||
- env: "PHPSECLIB='2.0.0'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.1'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.2'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.3'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.4'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.5'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.6'"
|
||||
php: '7.3'
|
||||
- env: "PHPSECLIB='2.0.0'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.1'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.2'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.3'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.4'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.5'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.6'"
|
||||
php: '7.4'
|
||||
- env: "PHPSECLIB='2.0.0'"
|
||||
php: '8.0'
|
||||
- env: "PHPSECLIB='2.0.1'"
|
||||
php: '8.0'
|
||||
- env: "PHPSECLIB='2.0.2'"
|
||||
php: '8.0'
|
||||
- env: "PHPSECLIB='2.0.3'"
|
||||
php: '8.0'
|
||||
- env: "PHPSECLIB='2.0.4'"
|
||||
php: '8.0'
|
||||
- env: "PHPSECLIB='2.0.5'"
|
||||
php: '8.0'
|
||||
- env: "PHPSECLIB='2.0.6'"
|
||||
php: '8.0'
|
||||
fast_finish: true
|
||||
php:
|
||||
- '7.3'
|
||||
- '7.4'
|
||||
- '8.0'
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
[](https://travis-ci.org/singpolyma/openpgp-php)
|
||||
|
||||
OpenPGP.php: OpenPGP for PHP
|
||||
============================
|
||||
|
||||
This is a pure-PHP implementation of the OpenPGP Message Format (RFC 4880).
|
||||
|
||||
* <http://github.com/bendiken/openpgp-php>
|
||||
* <https://github.com/singpolyma/openpgp-php>
|
||||
|
||||
### About OpenPGP
|
||||
About OpenPGP
|
||||
-------------
|
||||
|
||||
OpenPGP is the most widely-used e-mail encryption standard in the world. It
|
||||
is defined by the OpenPGP Working Group of the Internet Engineering Task
|
||||
|
@ -13,8 +16,8 @@ Force (IETF) Proposed Standard RFC 4880. The OpenPGP standard was originally
|
|||
derived from PGP (Pretty Good Privacy), first created by Phil Zimmermann in
|
||||
1991.
|
||||
|
||||
* <http://tools.ietf.org/html/rfc4880>
|
||||
* <http://www.openpgp.org/>
|
||||
* <https://tools.ietf.org/html/rfc4880>
|
||||
* <https://www.openpgp.org/>
|
||||
|
||||
Features
|
||||
--------
|
||||
|
@ -22,15 +25,26 @@ Features
|
|||
* Encodes and decodes ASCII-armored OpenPGP messages.
|
||||
* Parses OpenPGP messages into their constituent packets.
|
||||
* Supports both old-format (PGP 2.6.x) and new-format (RFC 4880) packets.
|
||||
* Helper class for verifying, signing, encrypting, and decrypting messages using Crypt_RSA from <http://phpseclib.sourceforge.net>
|
||||
* Helper class for encrypting and decrypting messages and keys using Crypt_AES and Crypt_TripleDES from <http://phpseclib.sourceforge.net>
|
||||
* Helper class for verifying, signing, encrypting, and decrypting messages <http://phpseclib.sourceforge.net>
|
||||
* Helper class for encrypting and decrypting messages and keys using <http://phpseclib.sourceforge.net>
|
||||
* openssl or mcrypt required for CAST5 encryption and decryption
|
||||
|
||||
Bugs, Feature Requests, Patches
|
||||
-------------------------------
|
||||
|
||||
This project is primarily maintained by a single volunteer with many other
|
||||
things vying for their attention, please be patient.
|
||||
|
||||
Bugs, feature request, pull requests, patches, and general discussion may
|
||||
be submitted publicly via email to: dev@singpolyma.net
|
||||
|
||||
Github users may alternately submit on the web there.
|
||||
|
||||
Users
|
||||
-----
|
||||
|
||||
OpenPGP.php is currently being used in the following projects:
|
||||
|
||||
* <https://drupal.org/project/openpgp>
|
||||
* <https://wordpress.org/plugins/wp-pgp-encrypted-emails/>
|
||||
|
||||
Download
|
||||
|
@ -38,21 +52,21 @@ Download
|
|||
|
||||
To get a local working copy of the development repository, do:
|
||||
|
||||
% git clone git://github.com/bendiken/openpgp-php.git
|
||||
git clone https://github.com/singpolyma/openpgp-php.git
|
||||
|
||||
Alternatively, you can download the latest development version as a tarball
|
||||
as follows:
|
||||
|
||||
% wget http://github.com/bendiken/openpgp-php/tarball/master
|
||||
wget https://github.com/singpolyma/openpgp-php/tarball/master
|
||||
|
||||
Authors
|
||||
-------
|
||||
|
||||
* [Arto Bendiken](mailto:arto.bendiken@gmail.com) - <http://ar.to/>
|
||||
* [Stephen Paul Weber](mailto:singpolyma@singpolyma.net) - <http://singpolyma.net/>
|
||||
* [Arto Bendiken](mailto:arto.bendiken@gmail.com) (Original author) - <http://ar.to/>
|
||||
* [Stephen Paul Weber](mailto:singpolyma@singpolyma.net) (Maintainer) - <https://singpolyma.net/>
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
OpenPGP.php is free and unencumbered public domain software. For more
|
||||
information, see <http://unlicense.org/> or the accompanying UNLICENSE file.
|
||||
information, see <https://unlicense.org/> or the accompanying UNLICENSE file.
|
||||
|
|
|
@ -13,10 +13,14 @@
|
|||
}
|
||||
],
|
||||
"require": {
|
||||
"phpseclib/phpseclib": ">=2.0.0 <=2.0.4"
|
||||
"php": "^5.6 || ^7.0 || ^8.0",
|
||||
"phpseclib/phpseclib": "^2.0 !=2.0.8"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.0"
|
||||
"phpunit/phpunit": "^9.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mcrypt": "required if you use encryption cast5"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": ["lib/"]
|
||||
|
|
22
securemail/vendor/singpolyma/openpgp-php/examples/README.md
vendored
Normal file
22
securemail/vendor/singpolyma/openpgp-php/examples/README.md
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
OpenPGP.php Examples
|
||||
====================
|
||||
|
||||
The scripts in this folder show how to use this library to perform various tasks
|
||||
such as [generating a new key](keygen.php), [signing a message](sign.php), and
|
||||
[verifying a message](verify.php) that has been signed.
|
||||
|
||||
To use these examples, make sure [`phpseclib`](http://phpseclib.sourceforge.net/) is available. You can install it
|
||||
using [Composer](https://getcomposer.org/):
|
||||
|
||||
```sh
|
||||
git clone https://github.com/singpolyma/openpgp-php.git # Clone the repository.
|
||||
cd openpgp-php
|
||||
composer install # Use Composer to install the requirements.
|
||||
```
|
||||
|
||||
Once Composer has installed the requirements, run the examples using PHP:
|
||||
|
||||
```sh
|
||||
# Generate a new OpenPGP key; see the `keygen.php` file for parameters.
|
||||
php ./examples/keygen.php > mykey.gpg
|
||||
```
|
21
securemail/vendor/singpolyma/openpgp-php/examples/armorEncryptSignCompress.php
vendored
Normal file
21
securemail/vendor/singpolyma/openpgp-php/examples/armorEncryptSignCompress.php
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
|
||||
$recipientPublicKey = OpenPGP_Message::parse(OpenPGP::unarmor(file_get_contents('public.asc'), 'PGP PUBLIC KEY BLOCK'));
|
||||
|
||||
$encryptedPrivateKey = OpenPGP_Message::parse(OpenPGP::unarmor(file_get_contents('sekret.asc'), 'PGP PRIVATE KEY BLOCK'));
|
||||
$privateKeyPassphrase = 'test';
|
||||
$key = OpenPGP_Crypt_Symmetric::decryptSecretKey($privateKeyPassphrase, $encryptedPrivateKey[0]);
|
||||
|
||||
$signer = new OpenPGP_Crypt_RSA($key);
|
||||
$data = new OpenPGP_LiteralDataPacket("some text\n", ['format' => 'u']);
|
||||
$signed = $signer->sign($data);
|
||||
|
||||
$compressed = new OpenPGP_CompressedDataPacket($signed);
|
||||
$encrypted = OpenPGP_Crypt_Symmetric::encrypt([$recipientPublicKey, $key], new OpenPGP_Message([$compressed]));
|
||||
|
||||
echo OpenPGP::enarmor($encrypted->to_bytes(), 'PGP MESSAGE');
|
||||
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
|
||||
|
@ -27,5 +28,3 @@ echo "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\n";
|
|||
// trailing whitespace to lines.
|
||||
echo preg_replace("/^-/", "- -", $packets[0]->data)."\n";
|
||||
echo OpenPGP::enarmor($packets[1][0]->to_bytes(), "PGP SIGNATURE");
|
||||
|
||||
?>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
// USAGE: php examples/deASCIIdeCrypt.php secretkey.asc password message.asc
|
||||
// This will fail if the algo on key or message is not 3DES or AES
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_symmetric.php';
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_symmetric.php';
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
|
||||
|
|
28
securemail/vendor/singpolyma/openpgp-php/examples/keygenEncrypted.php
vendored
Normal file
28
securemail/vendor/singpolyma/openpgp-php/examples/keygenEncrypted.php
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_symmetric.php';
|
||||
|
||||
$rsa = new \phpseclib\Crypt\RSA();
|
||||
$k = $rsa->createKey(512);
|
||||
$rsa->loadKey($k['privatekey']);
|
||||
|
||||
$nkey = new OpenPGP_SecretKeyPacket(array(
|
||||
'n' => $rsa->modulus->toBytes(),
|
||||
'e' => $rsa->publicExponent->toBytes(),
|
||||
'd' => $rsa->exponent->toBytes(),
|
||||
'p' => $rsa->primes[2]->toBytes(),
|
||||
'q' => $rsa->primes[1]->toBytes(),
|
||||
'u' => $rsa->coefficients[2]->toBytes()
|
||||
));
|
||||
|
||||
$uid = new OpenPGP_UserIDPacket('Test <test@example.com>');
|
||||
|
||||
$wkey = new OpenPGP_Crypt_RSA($nkey);
|
||||
$m = $wkey->sign_key_userid(array($nkey, $uid));
|
||||
$m[0] = OpenPGP_Crypt_Symmetric::encryptSecretKey("password", $nkey);
|
||||
|
||||
// Serialize encrypted private key
|
||||
print $m->to_bytes();
|
116
securemail/vendor/singpolyma/openpgp-php/examples/keygenSubkeys.php
vendored
Normal file
116
securemail/vendor/singpolyma/openpgp-php/examples/keygenSubkeys.php
vendored
Normal file
|
@ -0,0 +1,116 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
|
||||
// Key length: 512, 1024, 2048, 3072, 4096
|
||||
$key_length = 512;
|
||||
|
||||
// Generate a master signing key
|
||||
|
||||
$rsa = new \phpseclib\Crypt\RSA();
|
||||
$k = $rsa->createKey($key_length);
|
||||
$rsa->loadKey($k['privatekey']);
|
||||
|
||||
$nkey = new OpenPGP_SecretKeyPacket(array(
|
||||
'n' => $rsa->modulus->toBytes(),
|
||||
'e' => $rsa->publicExponent->toBytes(),
|
||||
'd' => $rsa->exponent->toBytes(),
|
||||
'p' => $rsa->primes[2]->toBytes(),
|
||||
'q' => $rsa->primes[1]->toBytes(),
|
||||
'u' => $rsa->coefficients[2]->toBytes()
|
||||
));
|
||||
|
||||
// Start assembling packets for our eventual OpenPGP_Message
|
||||
$packets = array($nkey);
|
||||
|
||||
$wkey = new OpenPGP_Crypt_RSA($nkey);
|
||||
$fingerprint = $wkey->key()->fingerprint;
|
||||
$key = $wkey->private_key();
|
||||
$key->setHash('sha256');
|
||||
$keyid = substr($fingerprint, -16);
|
||||
|
||||
// Add multiple UID packets and signatures
|
||||
|
||||
$uids = array(
|
||||
new OpenPGP_UserIDPacket('Support', '', 'support@example.com'),
|
||||
new OpenPGP_UserIDPacket('Security', '', 'security@example.com'),
|
||||
);
|
||||
|
||||
foreach($uids as $uid) {
|
||||
// Append the UID packet
|
||||
$packets[] = $uid;
|
||||
|
||||
$sig = new OpenPGP_SignaturePacket(new OpenPGP_Message(array($nkey, $uid)), 'RSA', 'SHA256');
|
||||
$sig->signature_type = 0x13;
|
||||
$sig->hashed_subpackets[] = new OpenPGP_SignaturePacket_KeyFlagsPacket(array(0x01 | 0x02)); // Certify + sign bits
|
||||
$sig->hashed_subpackets[] = new OpenPGP_SignaturePacket_IssuerPacket($keyid);
|
||||
$m = $wkey->sign_key_userid(array($nkey, $uid, $sig));
|
||||
|
||||
// Append the UID signature from the master key
|
||||
$packets[] = $m->packets[2];
|
||||
}
|
||||
|
||||
// Generate an encryption subkey
|
||||
|
||||
$rsa_subkey = new \phpseclib\Crypt\RSA();
|
||||
$sub_k = $rsa_subkey->createKey($key_length);
|
||||
$rsa_subkey->loadKey($sub_k['privatekey']);
|
||||
|
||||
$subkey = new OpenPGP_SecretSubkeyPacket(array(
|
||||
'n' => $rsa_subkey->modulus->toBytes(),
|
||||
'e' => $rsa_subkey->publicExponent->toBytes(),
|
||||
'd' => $rsa_subkey->exponent->toBytes(),
|
||||
'p' => $rsa_subkey->primes[2]->toBytes(),
|
||||
'q' => $rsa_subkey->primes[1]->toBytes(),
|
||||
'u' => $rsa_subkey->coefficients[2]->toBytes()
|
||||
));
|
||||
|
||||
// Append the encryption subkey
|
||||
$packets[] = $subkey;
|
||||
|
||||
$sub_wkey = new OpenPGP_Crypt_RSA($subkey);
|
||||
|
||||
/*
|
||||
* Sign the encryption subkey with the master key
|
||||
*
|
||||
* OpenPGP_SignaturePacket assumes any message starting with an
|
||||
* OpenPGP_PublicKeyPacket is followed by a OpenPGP_UserIDPacket. We need
|
||||
* to pass `null` in the constructor and generate the `->data` ourselves.
|
||||
*/
|
||||
$sub_sig = new OpenPGP_SignaturePacket(null, 'RSA', 'SHA256');
|
||||
$sub_sig->signature_type = 0x18;
|
||||
$sub_sig->hashed_subpackets[] = new OpenPGP_SignaturePacket_SignatureCreationTimePacket(time());
|
||||
$sub_sig->hashed_subpackets[] = new OpenPGP_SignaturePacket_KeyFlagsPacket(array(0x0C)); // Encrypt bits
|
||||
$sub_sig->hashed_subpackets[] = new OpenPGP_SignaturePacket_IssuerPacket($keyid);
|
||||
$sub_sig->data = implode('', $nkey->fingerprint_material()) . implode('', $subkey->fingerprint_material());
|
||||
$sub_sig->sign_data(array('RSA' => array('SHA256' => function($data) use($key) {return array($key->sign($data));})));
|
||||
|
||||
// Append the subkey signature
|
||||
$packets[] = $sub_sig;
|
||||
|
||||
// Build the OpenPGP_Message for the secret key from our packets
|
||||
$m = new OpenPGP_Message($packets);
|
||||
|
||||
// Serialize the private key
|
||||
print $m->to_bytes();
|
||||
|
||||
// Clone a public key message from the secret key
|
||||
$pubm = clone($m);
|
||||
|
||||
// Convert the private key packets to public so we only export public data
|
||||
// (n+e in RSA)
|
||||
foreach($pubm as $idx => $p) {
|
||||
if($p instanceof OpenPGP_SecretSubkeyPacket) {
|
||||
$pubm[$idx] = new OpenPGP_PublicSubkeyPacket($p);
|
||||
} else if($p instanceof OpenPGP_SecretKeyPacket) {
|
||||
$pubm[$idx] = new OpenPGP_PublicKeyPacket($p);
|
||||
}
|
||||
}
|
||||
|
||||
// Serialize the public key
|
||||
$public_bytes = $pubm->to_bytes();
|
||||
|
||||
// Note: If using PHP 7.4 CLI, disable deprecated warnings:
|
||||
// php -d error_reporting="E_ALL & ~E_DEPRECATED" examples/keygenSubkeys.php > mykey.gpg
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
|
||||
|
@ -18,5 +19,3 @@ $m = $sign->sign($data);
|
|||
|
||||
/* Output the raw message bytes to STDOUT */
|
||||
echo $m->to_bytes();
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
@include_once dirname(__FILE__).'/../vendor/autoload.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
|
||||
|
@ -14,5 +15,3 @@ $verify = new OpenPGP_Crypt_RSA($wkey);
|
|||
|
||||
/* Dump verification information to STDOUT */
|
||||
var_dump($verify->verify($m));
|
||||
|
||||
?>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* (RFC 4880).
|
||||
*
|
||||
* @package OpenPGP
|
||||
* @version 0.3.0
|
||||
* @version 0.5.0
|
||||
* @author Arto Bendiken <arto.bendiken@gmail.com>
|
||||
* @author Stephen Paul Weber <singpolyma@singpolyma.net>
|
||||
* @see http://github.com/bendiken/openpgp-php
|
||||
|
@ -18,6 +18,8 @@
|
|||
* @see http://tools.ietf.org/html/rfc4880
|
||||
*/
|
||||
class OpenPGP {
|
||||
const VERSION = array(0, 5, 0);
|
||||
|
||||
/**
|
||||
* @see http://tools.ietf.org/html/rfc4880#section-6
|
||||
* @see http://tools.ietf.org/html/rfc4880#section-6.2
|
||||
|
@ -28,7 +30,7 @@ class OpenPGP {
|
|||
foreach ($headers as $key => $value) {
|
||||
$text .= $key . ': ' . (string)$value . "\n";
|
||||
}
|
||||
$text .= "\n" . base64_encode($data);
|
||||
$text .= "\n" . wordwrap(base64_encode($data), 76, "\n", true);
|
||||
$text .= "\n".'=' . base64_encode(substr(pack('N', self::crc24($data)), 1)) . "\n";
|
||||
$text .= self::footer($marker) . "\n";
|
||||
return $text;
|
||||
|
@ -42,8 +44,13 @@ class OpenPGP {
|
|||
$header = self::header($header);
|
||||
$text = str_replace(array("\r\n", "\r"), array("\n", ''), $text);
|
||||
if (($pos1 = strpos($text, $header)) !== FALSE &&
|
||||
($pos1 = strpos($text, "\n\n", $pos1 += strlen($header))) !== FALSE &&
|
||||
($pos2 = strpos($text, "\n=", $pos1 += 2)) !== FALSE) {
|
||||
($pos1 = strpos($text, "\n\n", $pos1 += strlen($header))) !== FALSE) {
|
||||
$pos2 = strpos($text, "\n=", $pos1 += 2);
|
||||
if ($pos2 === FALSE) {
|
||||
trigger_error("Invalid ASCII armor, missing CRC");
|
||||
$pos2 = strpos($text, "-----END");
|
||||
if ($pos2 === FALSE) return NULL;
|
||||
}
|
||||
return base64_decode($text = substr($text, $pos1, $pos2 - $pos1));
|
||||
}
|
||||
}
|
||||
|
@ -122,20 +129,20 @@ class OpenPGP_S2K {
|
|||
|
||||
static function parse(&$input) {
|
||||
$s2k = new OpenPGP_S2k();
|
||||
switch($s2k->type = ord($input{0})) {
|
||||
switch($s2k->type = ord($input[0])) {
|
||||
case 0:
|
||||
$s2k->hash_algorithm = ord($input{1});
|
||||
$s2k->hash_algorithm = ord($input[1]);
|
||||
$input = substr($input, 2);
|
||||
break;
|
||||
case 1:
|
||||
$s2k->hash_algorithm = ord($input{1});
|
||||
$s2k->hash_algorithm = ord($input[1]);
|
||||
$s2k->salt = substr($input, 2, 8);
|
||||
$input = substr($input, 10);
|
||||
break;
|
||||
case 3:
|
||||
$s2k->hash_algorithm = ord($input{1});
|
||||
$s2k->hash_algorithm = ord($input[1]);
|
||||
$s2k->salt = substr($input, 2, 8);
|
||||
$s2k->count = OpenPGP::decode_s2k_count(ord($input{10}));
|
||||
$s2k->count = OpenPGP::decode_s2k_count(ord($input[10]));
|
||||
$input = substr($input, 11);
|
||||
break;
|
||||
}
|
||||
|
@ -150,10 +157,12 @@ class OpenPGP_S2K {
|
|||
$bytes .= chr($this->hash_algorithm);
|
||||
break;
|
||||
case 1:
|
||||
if(strlen($this->salt) != 8) throw new Exception("Invalid salt length");
|
||||
$bytes .= chr($this->hash_algorithm);
|
||||
$bytes .= $this->salt;
|
||||
break;
|
||||
case 3:
|
||||
if(strlen($this->salt) != 8) throw new Exception("Invalid salt length");
|
||||
$bytes .= chr($this->hash_algorithm);
|
||||
$bytes .= $this->salt;
|
||||
$bytes .= chr(OpenPGP::encode_s2k_count($this->count));
|
||||
|
@ -553,7 +562,7 @@ class OpenPGP_Packet {
|
|||
}
|
||||
|
||||
function read_byte() {
|
||||
return ($bytes = $this->read_bytes()) ? $bytes[0] : NULL;
|
||||
return !is_null($bytes = $this->read_bytes()) ? $bytes[0] : NULL;
|
||||
}
|
||||
|
||||
function read_bytes($count = 1) {
|
||||
|
@ -609,7 +618,7 @@ class OpenPGP_AsymmetricSessionKeyPacket extends OpenPGP_Packet {
|
|||
$rawkeyid = $this->read_bytes(8);
|
||||
$this->keyid = '';
|
||||
for($i = 0; $i < strlen($rawkeyid); $i++) { // Store KeyID in Hex
|
||||
$this->keyid .= sprintf('%02X',ord($rawkeyid{$i}));
|
||||
$this->keyid .= sprintf('%02X',ord($rawkeyid[$i]));
|
||||
}
|
||||
|
||||
$this->key_algorithm = ord($this->read_byte());
|
||||
|
@ -625,7 +634,7 @@ class OpenPGP_AsymmetricSessionKeyPacket extends OpenPGP_Packet {
|
|||
$bytes = chr($this->version);
|
||||
|
||||
for($i = 0; $i < strlen($this->keyid); $i += 2) {
|
||||
$bytes .= chr(hexdec($this->keyid{$i}.$this->keyid{$i+1}));
|
||||
$bytes .= chr(hexdec($this->keyid[$i].$this->keyid[$i+1]));
|
||||
}
|
||||
|
||||
$bytes .= chr($this->key_algorithm);
|
||||
|
@ -685,13 +694,15 @@ class OpenPGP_SignaturePacket extends OpenPGP_Packet {
|
|||
switch($this->version = ord($this->read_byte())) {
|
||||
case 2:
|
||||
case 3:
|
||||
assert(ord($this->read_byte()) == 5);
|
||||
if(ord($this->read_byte()) != 5) {
|
||||
throw new Exception("Invalid version 2 or 3 SignaturePacket");
|
||||
}
|
||||
$this->signature_type = ord($this->read_byte());
|
||||
$creation_time = $this->read_timestamp();
|
||||
$keyid = $this->read_bytes(8);
|
||||
$keyidHex = '';
|
||||
for($i = 0; $i < strlen($keyid); $i++) { // Store KeyID in Hex
|
||||
$keyidHex .= sprintf('%02X',ord($keyid{$i}));
|
||||
$keyidHex .= sprintf('%02X',ord($keyid[$i]));
|
||||
}
|
||||
|
||||
$this->hashed_subpackets = array();
|
||||
|
@ -768,7 +779,7 @@ class OpenPGP_SignaturePacket extends OpenPGP_Packet {
|
|||
foreach((array)$this->unhashed_subpackets as $p) {
|
||||
if($p instanceof OpenPGP_SignaturePacket_IssuerPacket) {
|
||||
for($i = 0; $i < strlen($p->data); $i += 2) {
|
||||
$body .= chr(hexdec($p->data{$i}.$p->data{$i+1}));
|
||||
$body .= chr(hexdec($p->data[$i].$p->data[$i+1]));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -975,8 +986,8 @@ class OpenPGP_SignaturePacket_ExportableCertificationPacket extends OpenPGP_Sign
|
|||
|
||||
class OpenPGP_SignaturePacket_TrustSignaturePacket extends OpenPGP_SignaturePacket_Subpacket {
|
||||
function read() {
|
||||
$this->depth = ord($this->input{0});
|
||||
$this->trust = ord($this->input{1});
|
||||
$this->depth = ord($this->input[0]);
|
||||
$this->trust = ord($this->input[1]);
|
||||
}
|
||||
|
||||
function body() {
|
||||
|
@ -1052,7 +1063,7 @@ class OpenPGP_SignaturePacket_RevocationKeyPacket extends OpenPGP_SignaturePacke
|
|||
$bytes .= chr($this->key_algorithm);
|
||||
|
||||
for($i = 0; $i < strlen($this->fingerprint); $i += 2) {
|
||||
$bytes .= chr(hexdec($this->fingerprint{$i}.$this->fingerprint{$i+1}));
|
||||
$bytes .= chr(hexdec($this->fingerprint[$i].$this->fingerprint[$i+1]));
|
||||
}
|
||||
|
||||
return $bytes;
|
||||
|
@ -1072,7 +1083,7 @@ class OpenPGP_SignaturePacket_IssuerPacket extends OpenPGP_SignaturePacket_Subpa
|
|||
function body() {
|
||||
$bytes = '';
|
||||
for($i = 0; $i < strlen($this->data); $i += 2) {
|
||||
$bytes .= chr(hexdec($this->data{$i}.$this->data{$i+1}));
|
||||
$bytes .= chr(hexdec($this->data[$i].$this->data[$i+1]));
|
||||
}
|
||||
return $bytes;
|
||||
}
|
||||
|
@ -1305,7 +1316,7 @@ class OpenPGP_OnePassSignaturePacket extends OpenPGP_Packet {
|
|||
function body() {
|
||||
$body = chr($this->version).chr($this->signature_type).chr($this->hash_algorithm).chr($this->key_algorithm);
|
||||
for($i = 0; $i < strlen($this->key_id); $i += 2) {
|
||||
$body .= chr(hexdec($this->key_id{$i}.$this->key_id{$i+1}));
|
||||
$body .= chr(hexdec($this->key_id[$i].$this->key_id[$i+1]));
|
||||
}
|
||||
$body .= chr((int)$this->nested);
|
||||
return $body;
|
||||
|
@ -1594,6 +1605,13 @@ class OpenPGP_CompressedDataPacket extends OpenPGP_Packet implements IteratorAgg
|
|||
public $algorithm;
|
||||
/* see http://tools.ietf.org/html/rfc4880#section-9.3 */
|
||||
static $algorithms = array(0 => 'Uncompressed', 1 => 'ZIP', 2 => 'ZLIB', 3 => 'BZip2');
|
||||
|
||||
function __construct($m=NULL, $algorithm=1) {
|
||||
parent::__construct();
|
||||
$this->algorithm = $algorithm;
|
||||
$this->data = $m ? $m : new OpenPGP_Message();
|
||||
}
|
||||
|
||||
function read() {
|
||||
$this->algorithm = ord($this->read_byte());
|
||||
$this->data = $this->read_bytes($this->length);
|
||||
|
|
|
@ -182,8 +182,10 @@ class OpenPGP_Crypt_RSA {
|
|||
$keys = new self($keys);
|
||||
}
|
||||
|
||||
$session_key = NULL;
|
||||
foreach($message as $p) {
|
||||
if($p instanceof OpenPGP_AsymmetricSessionKeyPacket) {
|
||||
$session_key = $p;
|
||||
if($keys instanceof Crypt_RSA) {
|
||||
$sk = self::try_decrypt_session($keys, substr($p->encrypted_data, 2));
|
||||
} else if(strlen(str_replace('0', '', $p->keyid)) < 1) {
|
||||
|
@ -203,23 +205,26 @@ class OpenPGP_Crypt_RSA {
|
|||
}
|
||||
}
|
||||
|
||||
if (!$session_key) throw new Exception("Not an asymmetrically encrypted message");
|
||||
|
||||
return NULL; /* Failed */
|
||||
}
|
||||
|
||||
static function try_decrypt_session($key, $edata) {
|
||||
$key->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
|
||||
$data = $key->decrypt($edata);
|
||||
$data = @$key->decrypt($edata);
|
||||
if(!$data) return NULL;
|
||||
$sk = substr($data, 1, strlen($data)-3);
|
||||
$chk = unpack('n', substr($data, -2));
|
||||
$chk = reset($chk);
|
||||
|
||||
$sk_chk = 0;
|
||||
for($i = 0; $i < strlen($sk); $i++) {
|
||||
$sk_chk = ($sk_chk + ord($sk{$i})) % 65536;
|
||||
$sk_chk = ($sk_chk + ord($sk[$i])) % 65536;
|
||||
}
|
||||
|
||||
if($sk_chk != $chk) return NULL;
|
||||
return array(ord($data{0}), $sk);
|
||||
return array(ord($data[0]), $sk);
|
||||
}
|
||||
|
||||
static function crypt_rsa_key($mod, $exp, $hash='SHA256') {
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<?php
|
||||
|
||||
use phpseclib\Crypt\TripleDES as Crypt_TripleDES;
|
||||
use phpseclib\Crypt\AES as Crypt_AES;
|
||||
use phpseclib\Crypt\Blowfish as Crypt_Blowfish;
|
||||
use phpseclib\Crypt\TripleDES as Crypt_TripleDES;
|
||||
use phpseclib\Crypt\Twofish as Crypt_Twofish;
|
||||
use phpseclib\Crypt\Random;
|
||||
|
||||
define('CRYPT_DES_MODE_CFB', Crypt_TripleDES::MODE_CFB);
|
||||
define('CRYPT_AES_MODE_CFB', Crypt_AES::MODE_CFB);
|
||||
|
||||
require_once dirname(__FILE__).'/openpgp.php';
|
||||
@include_once dirname(__FILE__).'/openpgp_crypt_rsa.php';
|
||||
@include_once dirname(__FILE__).'/openpgp_mcrypt_wrapper.php';
|
||||
@include_once dirname(__FILE__).'/openpgp_openssl_wrapper.php';
|
||||
|
||||
class OpenPGP_Crypt_Symmetric {
|
||||
public static function encrypt($passphrases_and_keys, $message, $symmetric_algorithm=9) {
|
||||
|
@ -40,7 +40,7 @@ class OpenPGP_Crypt_Symmetric {
|
|||
$esk = pack('n', OpenPGP::bitlength($esk)) . $esk;
|
||||
array_unshift($encrypted, new OpenPGP_AsymmetricSessionKeyPacket($pass->algorithm, $pass->fingerprint(), $esk));
|
||||
} else if(is_string($pass)) {
|
||||
$s2k = new OpenPGP_S2K(Random::string(10));
|
||||
$s2k = new OpenPGP_S2K(Random::string(8));
|
||||
$cipher->setKey($s2k->make_key($pass, $key_bytes));
|
||||
$esk = $cipher->encrypt(chr($symmetric_algorithm) . $key);
|
||||
array_unshift($encrypted, new OpenPGP_SymmetricSessionKeyPacket($s2k, $esk, $symmetric_algorithm));
|
||||
|
@ -62,7 +62,7 @@ class OpenPGP_Crypt_Symmetric {
|
|||
|
||||
$padAmount = $key_block_bytes - (strlen($p->encrypted_data) % $key_block_bytes);
|
||||
$data = substr($cipher->decrypt($p->encrypted_data . str_repeat("\0", $padAmount)), 0, strlen($p->encrypted_data));
|
||||
$decrypted = self::decryptPacket($epacket, ord($data{0}), substr($data, 1));
|
||||
$decrypted = self::decryptPacket($epacket, ord($data[0]), substr($data, 1));
|
||||
} else {
|
||||
list($cipher, $key_bytes, $key_block_bytes) = self::getCipher($p->symmetric_algorithm);
|
||||
$decrypted = self::decryptPacket($epacket, $p->symmetric_algorithm, $p->s2k->make_key($pass, $key_bytes));
|
||||
|
@ -75,6 +75,31 @@ class OpenPGP_Crypt_Symmetric {
|
|||
return NULL; /* If we get here, we failed */
|
||||
}
|
||||
|
||||
public static function encryptSecretKey($pass, $packet, $symmetric_algorithm=9) {
|
||||
$packet = clone $packet; // Do not mutate original
|
||||
$packet->s2k_useage = 254;
|
||||
$packet->symmetric_algorithm = $symmetric_algorithm;
|
||||
|
||||
list($cipher, $key_bytes, $key_block_bytes) = self::getCipher($packet->symmetric_algorithm);
|
||||
if(!$cipher) throw new Exception("Unsupported cipher");
|
||||
|
||||
$material = '';
|
||||
foreach(OpenPGP_SecretKeyPacket::$secret_key_fields[$packet->algorithm] as $field) {
|
||||
$f = $packet->key[$field];
|
||||
$material .= pack('n', OpenPGP::bitlength($f)) . $f;
|
||||
unset($packet->key[$field]);
|
||||
}
|
||||
$material .= hash('sha1', $material, true);
|
||||
|
||||
$iv = Random::string($key_block_bytes);
|
||||
if(!$packet->s2k) $packet->s2k = new OpenPGP_S2K(Random::string(8));
|
||||
$cipher->setKey($packet->s2k->make_key($pass, $key_bytes));
|
||||
$cipher->setIV($iv);
|
||||
$packet->encrypted_data = $iv . $cipher->encrypt($material);
|
||||
|
||||
return $packet;
|
||||
}
|
||||
|
||||
public static function decryptSecretKey($pass, $packet) {
|
||||
$packet = clone $packet; // Do not mutate orinigal
|
||||
|
||||
|
@ -97,6 +122,7 @@ class OpenPGP_Crypt_Symmetric {
|
|||
if($chk != $mkChk) return NULL;
|
||||
}
|
||||
|
||||
$packet->s2k = NULL;
|
||||
$packet->s2k_useage = 0;
|
||||
$packet->symmetric_algorithm = 0;
|
||||
$packet->encrypted_data = NULL;
|
||||
|
@ -146,29 +172,45 @@ class OpenPGP_Crypt_Symmetric {
|
|||
public static function getCipher($algo) {
|
||||
$cipher = NULL;
|
||||
switch($algo) {
|
||||
case NULL:
|
||||
case 0:
|
||||
throw new Exception("Data is already unencrypted");
|
||||
case 2:
|
||||
$cipher = new Crypt_TripleDES(CRYPT_DES_MODE_CFB);
|
||||
$key_bytes = 24;
|
||||
$key_block_bytes = 8;
|
||||
$cipher = new Crypt_TripleDES(Crypt_TripleDES::MODE_CFB);
|
||||
$key_bytes = 24;
|
||||
$key_block_bytes = 8;
|
||||
break;
|
||||
case 3:
|
||||
if(defined('MCRYPT_CAST_128')) {
|
||||
if(class_exists('OpenSSLWrapper')) {
|
||||
$cipher = new OpenSSLWrapper("CAST5-CFB");
|
||||
} else if(defined('MCRYPT_CAST_128')) {
|
||||
$cipher = new MCryptWrapper(MCRYPT_CAST_128);
|
||||
} else {
|
||||
throw new Exception("Unsupported cipher: you must have mcrypt installed to use CAST5");
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
$cipher = new Crypt_Blowfish(Crypt_Blowfish::MODE_CFB);
|
||||
$key_bytes = 16;
|
||||
$key_block_bytes = 8;
|
||||
break;
|
||||
case 7:
|
||||
$cipher = new Crypt_AES(CRYPT_AES_MODE_CFB);
|
||||
$cipher->setKeyLength(128);
|
||||
$cipher = new Crypt_AES(Crypt_AES::MODE_CFB);
|
||||
$cipher->setKeyLength(128);
|
||||
break;
|
||||
case 8:
|
||||
$cipher = new Crypt_AES(CRYPT_AES_MODE_CFB);
|
||||
$cipher->setKeyLength(192);
|
||||
$cipher = new Crypt_AES(Crypt_AES::MODE_CFB);
|
||||
$cipher->setKeyLength(192);
|
||||
break;
|
||||
case 9:
|
||||
$cipher = new Crypt_AES(CRYPT_AES_MODE_CFB);
|
||||
$cipher = new Crypt_AES(Crypt_AES::MODE_CFB);
|
||||
$cipher->setKeyLength(256);
|
||||
break;
|
||||
case 10:
|
||||
$cipher = new Crypt_Twofish(Crypt_Twofish::MODE_CFB);
|
||||
if(method_exists($cipher, 'setKeyLength')) {
|
||||
$cipher->setKeyLength(256);
|
||||
} else {
|
||||
$cipher = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(!$cipher) return array(NULL, NULL, NULL); // Unsupported cipher
|
||||
|
@ -187,7 +229,7 @@ class OpenPGP_Crypt_Symmetric {
|
|||
public static function checksum($s) {
|
||||
$mkChk = 0;
|
||||
for($i = 0; $i < strlen($s); $i++) {
|
||||
$mkChk = ($mkChk + ord($s{$i})) % 65536;
|
||||
$mkChk = ($mkChk + ord($s[$i])) % 65536;
|
||||
}
|
||||
return $mkChk;
|
||||
}
|
||||
|
|
33
securemail/vendor/singpolyma/openpgp-php/lib/openpgp_openssl_wrapper.php
vendored
Normal file
33
securemail/vendor/singpolyma/openpgp-php/lib/openpgp_openssl_wrapper.php
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
if(function_exists('openssl_encrypt')) {
|
||||
class OpenSSLWrapper {
|
||||
public $cipher, $key, $iv, $key_size, $block_size;
|
||||
|
||||
|
||||
function __construct($cipher) {
|
||||
if($cipher != "CAST5-CFB") throw Exception("OpenSSLWrapper is only used for CAST5 right now");
|
||||
|
||||
$this->cipher = $cipher;
|
||||
$this->key_size = 16;
|
||||
$this->block_size = 8;
|
||||
$this->iv = str_repeat("\0", 8);
|
||||
}
|
||||
|
||||
function setKey($key) {
|
||||
$this->key = $key;
|
||||
}
|
||||
|
||||
function setIV($iv) {
|
||||
$this->iv = $iv;
|
||||
}
|
||||
|
||||
function encrypt($data) {
|
||||
return openssl_encrypt($data, $this->cipher, $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $this->iv);
|
||||
}
|
||||
|
||||
function decrypt($data) {
|
||||
return openssl_decrypt($data, $this->cipher, $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $this->iv);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,6 +8,10 @@
|
|||
<file>tests/suite.php</file>
|
||||
</testsuite>
|
||||
|
||||
<testsuite name="Signature">
|
||||
<file>tests/suite.php</file>
|
||||
</testsuite>
|
||||
|
||||
<testsuite name="MessageVerification">
|
||||
<file>tests/phpseclib_suite.php</file>
|
||||
</testsuite>
|
||||
|
|
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000079-002.sig
vendored
Normal file
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000079-002.sig
vendored
Normal file
Binary file not shown.
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000080-006.public_key
vendored
Normal file
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000080-006.public_key
vendored
Normal file
Binary file not shown.
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000081-002.sig
vendored
Normal file
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000081-002.sig
vendored
Normal file
Binary file not shown.
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000082-006.public_key
vendored
Normal file
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000082-006.public_key
vendored
Normal file
Binary file not shown.
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000083-002.sig
vendored
Normal file
BIN
securemail/vendor/singpolyma/openpgp-php/tests/data/000083-002.sig
vendored
Normal file
Binary file not shown.
1
securemail/vendor/singpolyma/openpgp-php/tests/data/symmetric-blowfish.gpg
vendored
Normal file
1
securemail/vendor/singpolyma/openpgp-php/tests/data/symmetric-blowfish.gpg
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
<EFBFBD>
σθΆh<CE86>±Ο³ΦΙfuάhθ‚ύ’sΕώ®Ωψ°Όώ_VF•4Σ
|
3
securemail/vendor/singpolyma/openpgp-php/tests/data/symmetric-twofish.gpg
vendored
Normal file
3
securemail/vendor/singpolyma/openpgp-php/tests/data/symmetric-twofish.gpg
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
Œ
|
||||
cýІèÑÔÖÒ9=õÇâ]¼TföA¼c«vìåeøkº€Èʲõ¡©n}%.<16>lòëuÛ?\êåI
|
||||
ð[øõblÊ
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/* The tests which require phpseclib */
|
||||
|
||||
|
@ -6,7 +7,7 @@ require_once dirname(__FILE__).'/../lib/openpgp.php';
|
|||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||
require_once dirname(__FILE__).'/../lib/openpgp_crypt_symmetric.php';
|
||||
|
||||
class MessageVerification extends PHPUnit_Framework_TestCase {
|
||||
class MessageVerification extends TestCase {
|
||||
public function oneMessageRSA($pkey, $path) {
|
||||
$pkeyM = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $pkey));
|
||||
$m = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||
|
@ -51,7 +52,7 @@ class MessageVerification extends PHPUnit_Framework_TestCase {
|
|||
}
|
||||
|
||||
|
||||
class KeyVerification extends PHPUnit_Framework_TestCase {
|
||||
class KeyVerification extends TestCase {
|
||||
public function oneKeyRSA($path) {
|
||||
$m = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||
$verify = new OpenPGP_Crypt_RSA($m);
|
||||
|
@ -64,7 +65,7 @@ class KeyVerification extends PHPUnit_Framework_TestCase {
|
|||
}
|
||||
|
||||
|
||||
class Decryption extends PHPUnit_Framework_TestCase {
|
||||
class Decryption extends TestCase {
|
||||
public function oneSymmetric($pass, $cnt, $path) {
|
||||
$m = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||
$m2 = OpenPGP_Crypt_Symmetric::decryptSymmetric($pass, $m);
|
||||
|
@ -76,18 +77,28 @@ class Decryption extends PHPUnit_Framework_TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
public function testDecryptAES() {
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-aes.gpg");
|
||||
}
|
||||
|
||||
public function testDecrypt3DES() {
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-3des.gpg");
|
||||
}
|
||||
|
||||
public function testDecryptCAST5() { // Requires mcrypt
|
||||
public function testDecryptCAST5() { // Requires mcrypt or openssl
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-cast5.gpg");
|
||||
}
|
||||
|
||||
public function testDecryptBlowfish() {
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-blowfish.gpg");
|
||||
}
|
||||
|
||||
public function testDecryptAES() {
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-aes.gpg");
|
||||
}
|
||||
|
||||
public function testDecryptTwofish() {
|
||||
if(OpenPGP_Crypt_Symmetric::getCipher(10)[0]) {
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-twofish.gpg");
|
||||
}
|
||||
}
|
||||
|
||||
public function testDecryptSessionKey() {
|
||||
$this->oneSymmetric("hello", "PGP\n", "symmetric-with-session-key.gpg");
|
||||
}
|
||||
|
@ -109,25 +120,89 @@ class Decryption extends PHPUnit_Framework_TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
public function testDecryptRoundtrip() {
|
||||
$m = new OpenPGP_Message(array(new OpenPGP_LiteralDataPacket("hello\n")));
|
||||
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/helloKey.gpg'));
|
||||
$em = OpenPGP_Crypt_Symmetric::encrypt($key, $m);
|
||||
|
||||
foreach($key as $packet) {
|
||||
if(!($packet instanceof OpenPGP_SecretKeyPacket)) continue;
|
||||
$decryptor = new OpenPGP_Crypt_RSA($packet);
|
||||
$m2 = $decryptor->decrypt($em);
|
||||
|
||||
foreach($m2 as $p) {
|
||||
if($p instanceof OpenPGP_LiteralDataPacket) {
|
||||
$this->assertEquals($p->data, "hello\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testDecryptSecretKey() {
|
||||
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/encryptedSecretKey.gpg'));
|
||||
$skey = OpenPGP_Crypt_Symmetric::decryptSecretKey("hello", $key[0]);
|
||||
$this->assertSame(!!$skey, true);
|
||||
}
|
||||
|
||||
public function testEncryptSecretKeyRoundtrip() {
|
||||
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/helloKey.gpg'));
|
||||
$enkey = OpenPGP_Crypt_Symmetric::encryptSecretKey("password", $key[0]);
|
||||
$skey = OpenPGP_Crypt_Symmetric::decryptSecretKey("password", $enkey);
|
||||
$this->assertEquals($key[0], $skey);
|
||||
}
|
||||
|
||||
public function testAlreadyDecryptedSecretKey() {
|
||||
$this->expectException(Exception::class);
|
||||
$this->expectExceptionMessage("Data is already unencrypted");
|
||||
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/helloKey.gpg'));
|
||||
OpenPGP_Crypt_Symmetric::decryptSecretKey("hello", $key[0]);
|
||||
}
|
||||
}
|
||||
|
||||
class Encryption extends PHPUnit_Framework_TestCase {
|
||||
public function testEncryptSymmetric() {
|
||||
class Encryption extends TestCase {
|
||||
public function oneSymmetric($algorithm) {
|
||||
$data = new OpenPGP_LiteralDataPacket('This is text.', array('format' => 'u', 'filename' => 'stuff.txt'));
|
||||
$encrypted = OpenPGP_Crypt_Symmetric::encrypt('secret', new OpenPGP_Message(array($data)));
|
||||
$encrypted = OpenPGP_Crypt_Symmetric::encrypt('secret', new OpenPGP_Message(array($data)), $algorithm);
|
||||
$encrypted = OpenPGP_Message::parse($encrypted->to_bytes());
|
||||
$decrypted = OpenPGP_Crypt_Symmetric::decryptSymmetric('secret', $encrypted);
|
||||
$this->assertEquals($decrypted[0]->data, 'This is text.');
|
||||
}
|
||||
|
||||
public function testEncryptSymmetric3DES() {
|
||||
$this->oneSymmetric(2);
|
||||
}
|
||||
|
||||
public function testEncryptSymmetricCAST5() {
|
||||
$this->oneSymmetric(3);
|
||||
}
|
||||
|
||||
public function testEncryptSymmetricBlowfish() {
|
||||
$this->oneSymmetric(4);
|
||||
}
|
||||
|
||||
public function testEncryptSymmetricAES128() {
|
||||
$this->oneSymmetric(7);
|
||||
}
|
||||
|
||||
public function testEncryptSymmetricAES192() {
|
||||
$this->oneSymmetric(8);
|
||||
}
|
||||
|
||||
public function testEncryptSymmetricAES256() {
|
||||
$this->oneSymmetric(9);
|
||||
}
|
||||
|
||||
public function testEncryptSymmetricTwofish() {
|
||||
if(OpenPGP_Crypt_Symmetric::getCipher(10)[0]) {
|
||||
$this->oneSymmetric(10);
|
||||
}
|
||||
}
|
||||
|
||||
public function testEncryptAsymmetric() {
|
||||
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/helloKey.gpg'));
|
||||
$data = new OpenPGP_LiteralDataPacket('This is text.', array('format' => 'u', 'filename' => 'stuff.txt'));
|
||||
$encrypted = OpenPGP_Crypt_Symmetric::encrypt($key, new OpenPGP_Message(array($data)));
|
||||
$encrypted = OpenPGP_Message::parse($encrypted->to_bytes());
|
||||
$decryptor = new OpenPGP_Crypt_RSA($key);
|
||||
$decrypted = $decryptor->decrypt($encrypted);
|
||||
$this->assertEquals($decrypted[0]->data, 'This is text.');
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<?php
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||
|
||||
class Serialization extends PHPUnit_Framework_TestCase {
|
||||
class Serialization extends TestCase {
|
||||
public function oneSerialization($path) {
|
||||
$in = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||
$mid = $in->to_bytes();
|
||||
|
@ -14,355 +15,354 @@ class Serialization extends PHPUnit_Framework_TestCase {
|
|||
$this->oneSerialization("000001-006.public_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000002013user_id() {
|
||||
$this->oneSerialization("000002-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000003002sig() {
|
||||
$this->oneSerialization("000003-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000004012ring_trust() {
|
||||
$this->oneSerialization("000004-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000005002sig() {
|
||||
$this->oneSerialization("000005-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000006012ring_trust() {
|
||||
$this->oneSerialization("000006-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000007002sig() {
|
||||
$this->oneSerialization("000007-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000008012ring_trust() {
|
||||
$this->oneSerialization("000008-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000009002sig() {
|
||||
$this->oneSerialization("000009-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000010012ring_trust() {
|
||||
$this->oneSerialization("000010-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000011002sig() {
|
||||
$this->oneSerialization("000011-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000012012ring_trust() {
|
||||
$this->oneSerialization("000012-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000013014public_subkey() {
|
||||
$this->oneSerialization("000013-014.public_subkey");
|
||||
}
|
||||
|
||||
|
||||
public function test000014002sig() {
|
||||
$this->oneSerialization("000014-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000015012ring_trust() {
|
||||
$this->oneSerialization("000015-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000016006public_key() {
|
||||
$this->oneSerialization("000016-006.public_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000017002sig() {
|
||||
$this->oneSerialization("000017-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000018012ring_trust() {
|
||||
$this->oneSerialization("000018-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000019013user_id() {
|
||||
$this->oneSerialization("000019-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000020002sig() {
|
||||
$this->oneSerialization("000020-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000021012ring_trust() {
|
||||
$this->oneSerialization("000021-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000022002sig() {
|
||||
$this->oneSerialization("000022-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000023012ring_trust() {
|
||||
$this->oneSerialization("000023-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000024014public_subkey() {
|
||||
$this->oneSerialization("000024-014.public_subkey");
|
||||
}
|
||||
|
||||
|
||||
public function test000025002sig() {
|
||||
$this->oneSerialization("000025-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000026012ring_trust() {
|
||||
$this->oneSerialization("000026-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000027006public_key() {
|
||||
$this->oneSerialization("000027-006.public_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000028002sig() {
|
||||
$this->oneSerialization("000028-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000029012ring_trust() {
|
||||
$this->oneSerialization("000029-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000030013user_id() {
|
||||
$this->oneSerialization("000030-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000031002sig() {
|
||||
$this->oneSerialization("000031-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000032012ring_trust() {
|
||||
$this->oneSerialization("000032-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000033002sig() {
|
||||
$this->oneSerialization("000033-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000034012ring_trust() {
|
||||
$this->oneSerialization("000034-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000035006public_key() {
|
||||
$this->oneSerialization("000035-006.public_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000036013user_id() {
|
||||
$this->oneSerialization("000036-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000037002sig() {
|
||||
$this->oneSerialization("000037-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000038012ring_trust() {
|
||||
$this->oneSerialization("000038-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000039002sig() {
|
||||
$this->oneSerialization("000039-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000040012ring_trust() {
|
||||
$this->oneSerialization("000040-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000041017attribute() {
|
||||
$this->oneSerialization("000041-017.attribute");
|
||||
}
|
||||
|
||||
|
||||
public function test000042002sig() {
|
||||
$this->oneSerialization("000042-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000043012ring_trust() {
|
||||
$this->oneSerialization("000043-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000044014public_subkey() {
|
||||
$this->oneSerialization("000044-014.public_subkey");
|
||||
}
|
||||
|
||||
|
||||
public function test000045002sig() {
|
||||
$this->oneSerialization("000045-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000046012ring_trust() {
|
||||
$this->oneSerialization("000046-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000047005secret_key() {
|
||||
$this->oneSerialization("000047-005.secret_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000048013user_id() {
|
||||
$this->oneSerialization("000048-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000049002sig() {
|
||||
$this->oneSerialization("000049-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000050012ring_trust() {
|
||||
$this->oneSerialization("000050-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000051007secret_subkey() {
|
||||
$this->oneSerialization("000051-007.secret_subkey");
|
||||
}
|
||||
|
||||
|
||||
public function test000052002sig() {
|
||||
$this->oneSerialization("000052-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000053012ring_trust() {
|
||||
$this->oneSerialization("000053-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000054005secret_key() {
|
||||
$this->oneSerialization("000054-005.secret_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000055002sig() {
|
||||
$this->oneSerialization("000055-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000056012ring_trust() {
|
||||
$this->oneSerialization("000056-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000057013user_id() {
|
||||
$this->oneSerialization("000057-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000058002sig() {
|
||||
$this->oneSerialization("000058-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000059012ring_trust() {
|
||||
$this->oneSerialization("000059-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000060007secret_subkey() {
|
||||
$this->oneSerialization("000060-007.secret_subkey");
|
||||
}
|
||||
|
||||
|
||||
public function test000061002sig() {
|
||||
$this->oneSerialization("000061-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000062012ring_trust() {
|
||||
$this->oneSerialization("000062-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000063005secret_key() {
|
||||
$this->oneSerialization("000063-005.secret_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000064002sig() {
|
||||
$this->oneSerialization("000064-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000065012ring_trust() {
|
||||
$this->oneSerialization("000065-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000066013user_id() {
|
||||
$this->oneSerialization("000066-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000067002sig() {
|
||||
$this->oneSerialization("000067-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000068012ring_trust() {
|
||||
$this->oneSerialization("000068-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000069005secret_key() {
|
||||
$this->oneSerialization("000069-005.secret_key");
|
||||
}
|
||||
|
||||
|
||||
public function test000070013user_id() {
|
||||
$this->oneSerialization("000070-013.user_id");
|
||||
}
|
||||
|
||||
|
||||
public function test000071002sig() {
|
||||
$this->oneSerialization("000071-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000072012ring_trust() {
|
||||
$this->oneSerialization("000072-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000073017attribute() {
|
||||
$this->oneSerialization("000073-017.attribute");
|
||||
}
|
||||
|
||||
|
||||
public function test000074002sig() {
|
||||
$this->oneSerialization("000074-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000075012ring_trust() {
|
||||
$this->oneSerialization("000075-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test000076007secret_subkey() {
|
||||
$this->oneSerialization("000076-007.secret_subkey");
|
||||
}
|
||||
|
||||
|
||||
public function test000077002sig() {
|
||||
$this->oneSerialization("000077-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function test000078012ring_trust() {
|
||||
$this->oneSerialization("000078-012.ring_trust");
|
||||
}
|
||||
|
||||
|
||||
public function test002182002sig() {
|
||||
$this->oneSerialization("002182-002.sig");
|
||||
}
|
||||
|
||||
|
||||
public function testpubringgpg() {
|
||||
$this->oneSerialization("pubring.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testsecringgpg() {
|
||||
$this->oneSerialization("secring.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testcompressedsiggpg() {
|
||||
$this->oneSerialization("compressedsig.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testcompressedsigzlibgpg() {
|
||||
$this->oneSerialization("compressedsig-zlib.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testcompressedsigbzip2gpg() {
|
||||
$this->oneSerialization("compressedsig-bzip2.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testonepass_sig() {
|
||||
$this->oneSerialization("onepass_sig");
|
||||
}
|
||||
|
||||
|
||||
public function testsymmetrically_encrypted() {
|
||||
$this->oneSerialization("symmetrically_encrypted");
|
||||
}
|
||||
|
||||
|
||||
public function testuncompressedopsdsagpg() {
|
||||
$this->oneSerialization("uncompressed-ops-dsa.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testuncompressedopsdsasha384txtgpg() {
|
||||
$this->oneSerialization("uncompressed-ops-dsa-sha384.txt.gpg");
|
||||
}
|
||||
|
||||
|
||||
public function testuncompressedopsrsagpg() {
|
||||
$this->oneSerialization("uncompressed-ops-rsa.gpg");
|
||||
}
|
||||
|
@ -376,7 +376,7 @@ class Serialization extends PHPUnit_Framework_TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
class Fingerprint extends PHPUnit_Framework_TestCase {
|
||||
class Fingerprint extends TestCase {
|
||||
public function oneFingerprint($path, $kf) {
|
||||
$m = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||
$this->assertEquals($m[0]->fingerprint(), $kf);
|
||||
|
@ -397,4 +397,31 @@ class Fingerprint extends PHPUnit_Framework_TestCase {
|
|||
public function test000035006public_key() {
|
||||
$this->oneFingerprint("000035-006.public_key", "CB7933459F59C70DF1C3FBEEDEDC3ECF689AF56D");
|
||||
}
|
||||
|
||||
public function test000080006public_key() {
|
||||
$this->oneFingerprint("000080-006.public_key", "AEDA0C4468AE265E8B7CCA1C3047D4A7B15467AB");
|
||||
}
|
||||
|
||||
public function test000082006public_key() {
|
||||
$this->oneFingerprint("000082-006.public_key", "589D7E6884A9235BBE821D35BD7BA7BC5547FD09");
|
||||
}
|
||||
}
|
||||
|
||||
class Signature extends TestCase {
|
||||
public function oneIssuer($path, $kf) {
|
||||
$m = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||
$this->assertEquals($m[0]->issuer(), $kf);
|
||||
}
|
||||
|
||||
public function test000079002sig() {
|
||||
$this->oneIssuer("000079-002.sig", "C25059FA8730BC38");
|
||||
}
|
||||
|
||||
public function test000081002sig() {
|
||||
$this->oneIssuer("000081-002.sig", "6B799484725130FE");
|
||||
}
|
||||
|
||||
public function test000083002sig() {
|
||||
$this->oneIssuer("000083-002.sig", "BD7BA7BC5547FD09");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue