See source code below to reproduce this issue. Step 1 encrypts the message using gnupg while step 2 decrypts the message from step 1 using openpgp-php. To execute code ensure you have PHP gnupg and openpgp-php installed. (see singpolyma
/
openpgp-php ) for openpgp-php documentation.
What I am trying to achieve
I have a backend server and a mobile app which can only communicate through email. For simplicity assume that step 1 is the backend server and step 2 is the mobile client. Messages flow back and forth between server and client. The backend server should be able to encrypt a message meant for the mobile app which in return decrypts the message and sends an encrypted reply to the backend.
<?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';
/**
* Note: Step 1 and step 2 represents a client-server setup
* I know it's wrong to share private keys but this was generated specifically for this test
*/
/**
* step #1 (Encryption)
* encrypt message meant for hamfri-2#example.com at step #2
*/
// public key for hamfri-2#example.com
$public_key1 = "-----BEGIN PGP PUBLIC KEY BLOCK-----
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
pko=
=vTCt
-----END PGP PUBLIC KEY BLOCK-----
";
// private key for hamfri#example.com
$private_key1 = "-----BEGIN PGP PRIVATE KEY BLOCK-----
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
hVub9BQ=
=+jZf
-----END PGP PRIVATE KEY BLOCK-----
";
$message = "Testing again and again";
$gpg = new gnupg();
$publicKey = $gpg->import($public_key1);
$fingerprint = $publicKey['fingerprint'];
// catch errors
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
// enable armored output
$gpg->setarmor(1);
$gpg -> setsignmode(gnupg::SIG_MODE_DETACH);
// encrypt plain text
try{
$gpg->addencryptKey($fingerprint);
$cipher_text = $gpg->encrypt($plain_text);
echo "\n". $cipher_text ."\n";
}
catch(Exception $e){
die('Error '.$e->getMessage());
}
/**
* step #2 (Decryption)
* decrypt message from hamfri#example.com in step 1
*/
//public key for hamfri#example.com
$publickey2 = "-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=9rM9
-----END PGP PUBLIC KEY BLOCK-----
";
//private key for hamfri-2#example.com
$privateKey2 = "-----BEGIN PGP PRIVATE KEY BLOCK-----
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
ZJIPOs18pko=
=1CCf
-----END PGP PRIVATE KEY BLOCK-----
";
$encryptedPrivateKey=OpenPGP_Message::parse(OpenPGP::unarmor($privateKey2,'PGP PRIVATE KEY BLOCK'));
// Try each secret key packet
foreach($encryptedPrivateKey as $p) {
if(!($p instanceof OpenPGP_SecretKeyPacket)) continue;
$key2 = new OpenPGP_SecretKeyPacket($p->key);
$msg = OpenPGP_Message::parse(OpenPGP::unarmor($cipher_text, 'PGP MESSAGE'));
$decryptor = new OpenPGP_Crypt_RSA($key2);
$decrypted = $decryptor->decrypt($msg);
var_dump($decrypted);
}
Related
I am trying to create a JWT token. The other server is storing the public key in a single line and using that for validation.
Also, the public key being used for validation is in single line.
So, to generate the correct JWT token, what I think is I should also use the private key in a single line (may be with \n or may be without).
I am using openssl_sign to generate the token, which uses openssl_reource as key. I get that paramter from openssl_pkey_get_private.
But problem which happens in this case is, it either accepts the pem file path, or the key in PEM string format. So, if I pass the private_key as a single line, it doesn't give me the required output.
So, how can I resolve this. As I see other language libraries able to generate signature by passing private key in a single line.
In PHP the key can be formatted with line breaks or as a one-liner (with \n). Both works. In the following example I use a 512-bit encrypted RSA-key for simplicity (although in practice a larger key (>= 2048 bit) must be used for security reasons):
<?php
// Private key: 512 bit for simplicity
// Passphrase: MyPassphrase
// openssl genrsa -aes256 -out private.pem 512
$privKeyEnc = "-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,8F2D6F9594B3D379BF9D9748BD174458
RP2fyz1VNBKHiCadC5B9fjxV7z7AMAqbsN2vykFfPhdUFsxlJaecEeTMT7s6IbZN
Pr80+ljLjJ0SxJiK+j8DAc/Wrf+qyYUFcWbsvOhUIPyB5ww9+mEeIERJCigsyZJ7
k/Apau/BypdC9vCXKB3wM9FcmvP1g/ZwVoXfN3TIPEfWTktvuf74yFNoIaVbZAK/
+tzAGduu9wLkr6WTq4Isqy/IPjVCp9VwH1wNnz+hjkO7oELcCpFieIvAidUMKBR9
EdexLQCimbOl2wlfRNLincK8+FDOVWx6ElFFQlhzyWQCt8ed1fdiAggKxOco4Ww2
tFjIzaO4KXlbc9JFGd9PzigpftN/aHbk3c+x0E+3q5u8eySai4vgk38s1KaE7rn/
rarCgtGxOlbbTkI3opkjIrGlrsEyexKtS23mI/Dgcco=
-----END RSA PRIVATE KEY-----";
// One-liner using \n
$privKeyEnc_1Line = "-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-256-CBC,8F2D6F9594B3D379BF9D9748BD174458\n\nRP2fyz1VNBKHiCadC5B9fjxV7z7AMAqbsN2vykFfPhdUFsxlJaecEeTMT7s6IbZN\nPr80+ljLjJ0SxJiK+j8DAc/Wrf+qyYUFcWbsvOhUIPyB5ww9+mEeIERJCigsyZJ7\nk/Apau/BypdC9vCXKB3wM9FcmvP1g/ZwVoXfN3TIPEfWTktvuf74yFNoIaVbZAK/\n+tzAGduu9wLkr6WTq4Isqy/IPjVCp9VwH1wNnz+hjkO7oELcCpFieIvAidUMKBR9\nEdexLQCimbOl2wlfRNLincK8+FDOVWx6ElFFQlhzyWQCt8ed1fdiAggKxOco4Ww2\ntFjIzaO4KXlbc9JFGd9PzigpftN/aHbk3c+x0E+3q5u8eySai4vgk38s1KaE7rn/\nrarCgtGxOlbbTkI3opkjIrGlrsEyexKtS23mI/Dgcco=\n-----END RSA PRIVATE KEY-----";
// Public key:
// Passphrase: MyPassphrase
// openssl rsa -in private.pem -outform PEM -pubout -out public.pem
$pubKey = "-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMjYQLbdIVgKX1mSyKijOIpmlB9YWui1
KoCniRNHUPEsxth+o9fZXZMo1gzh9ZlFs6VLiyU7kv2+5QElOnhNzwcCAwEAAQ==
-----END PUBLIC KEY-----";
// One-liner using \n
$pubKey_1Line = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMjYQLbdIVgKX1mSyKijOIpmlB9YWui1\nKoCniRNHUPEsxth+o9fZXZMo1gzh9ZlFs6VLiyU7kv2+5QElOnhNzwcCAwEAAQ==\n-----END PUBLIC KEY-----";
$dataToSign = 'The quick brown fox jumps over the lazy dog.';
// Signing
//$privateKey = openssl_pkey_get_private("$privKeyEnc", "MyPassphrase"); // also works
$privateKey = openssl_pkey_get_private("$privKeyEnc_1Line", "MyPassphrase");
openssl_sign($dataToSign, $signature, $privateKey, 'sha256');
$signatureBase64 = base64_encode($signature);
print("Signature (Base64): ".$signatureBase64."<br>");
// Verifying
$publicKey = openssl_pkey_get_public("$pubKey");
//$publicKey = openssl_pkey_get_public("$pubKey_1Line"); // also works
$verified = openssl_verify($dataToSign, $signature, $publicKey,'sha256');
print("Verification: ".$verified."<br>");
/*
Output:
Signature (Base64): KVuUd+xy6at0emmhF20rbiD9lWzIN9euwKbeEm7aMvxqEkJ68HrjAoDJ37R3QGPI24woXY3TON9pahAhx+YNhQ==
Verification: 1
*/
?>
I want to create the pgp key with php.
I'm using the Crypt_GPG library to do this. I have no problem coding and decoding with an external key.
If I want to produce a key here, he gives me the fingerprint.
https://github.com/pear/Crypt_GPG/blob/master/tests/KeyGeneratorTest.php
$generator = new \Crypt_GPG_KeyGenerator(array('binary' => '/usr/bin/gpg2', 'homedir' => 'pgphome/', 'debug' => false));
$key = $generator->setExpirationDate(2000000000)->generateKey(
new Crypt_GPG_UserId(
'Test Keypair <generate-test#example.com>'
)
);
I hope to have private and public keys instead of fingerprints. Like this;
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: BCPG C# v1.6.1.0
lQOsBFzmomwBCACKQjZRXY2TSIEUr+S5V3jK6hA+U/7W2y7X9KJojcNSQY9rDh7E
7OtNQaXEpYeJAd4b9S1ZPMAZJ+wVFl0apOGzcjRT1a/s0GrIyq+SeI32CcHXA8Kh
......
Lji4mK7gT8LbOdeZehPgIp1LH3s9cG/tpyNUzHBZwgTtS6bEvgFSMxBVKRHWJH0k
Yfmc85ah7fZZkmbek9x5W5KKhzPgujCrZT/d0xiBIRp7cr8DAcJ2
=ehq/
-----END PGP PRIVATE KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: BCPG C# v1.6.1.0
mQENBFzmomwBCACKQjZRXY2TSIEUr+S5V3jK6hA+U/7W2y7X9KJojcNSQY9rDh7E
7OtNQaXEpYeJAd4b9S1ZPMAZJ+wVFl0apOGzcjRT1a/s0GrIyq+SeI32CcHXA8Kh
.....
vy44uJiu4E/C2znXmXoT4CKdSx97PXBv7acjVMxwWcIE7UumxL4BUjMQVSkR1iR9
JGH5nPOWoe32WZJm3pPceVuSiocz4Lowq2U/3dMYgSEae3K/AwHCdg==
=jEjZ
-----END PGP PUBLIC KEY BLOCK-----
To authenticate a google oauth2 token, I'm generating a public key for kid "b863b534069bfc0207197bcf831320d1cdc2cee2" from the modulus (n) and exponent (e) from:
https://www.googleapis.com/oauth2/v3/certs
{
"alg": "RS256",
"n": "8h6tCwOYDPtzyFivNaIguQVc_yBO5eOA2kUu_MAN8s4VWn8tIfCbVvcAz3yNwQuGpkdNg8gTk9QmReXl4SE8m7aCa0iRcBBWLyPUt6TM1RkYE51rOGYhjWxo9V8ogMXSBclE6x0t8qFY00l5O34gjYzXtyvyBX7Sw5mGuNLVAzq2nsCTnIsHrIaBy70IKU3FLsJ_PRYyViXP1nfo9872q3mtn7bJ7_hqss0vDgUiNAqPztVIsrZinFbaTgXjLhBlUjFWgJx_g4p76CJkjQ3-puZRU5A0D04KvqQ_0AWcN1Q8pvwQ9V4uGHm6Bop9nUhIcZJYjjlTM9Pkx_JnVOfekw",
"use": "sig",
"kid": "b863b534069bfc0207197bcf831320d1cdc2cee2",
"e": "AQAB",
"kty": "RSA"
}
I then create the RSA 256 public key in php with:
$rsa = new Crypt_RSA();
$modulus = new Math_BigInteger(base64url_decode($cert["n"]), 256);
$exponent = new Math_BigInteger(base64url_decode($cert["e"]), 256);
$rsa->loadKey(array('n' => $modulus, 'e' => $exponent));
$rsa->setPublicKey();
$public_key = $rsa->getPublicKey();
This generates public key:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuopEuQyOKMsQq90I/5on
1nNBPc7stMvsN1HC+Pgyu8nJ1qWwaAAqIv4edo2oG/Bo3eg6p+OjG3nbFL62S6hE
aJLUVfxhW5GQuxQlsvaA2MsZuZCRyKTv8bm641wM+biGVZLiDsLRylVdpxf4aGa9
9zZw+QZMVKL4f9B4SunyTugTaCIu8LBOQesCQp/QJaUjqMDhfEvoFQXiCn6zo3rW
EWBiKxiFBizH9jSfWimJecFhn0Vlv/Vs7pRb0X2y66VS3gTvR6/A3ooNz3tYAJPM
GoE8fAiEghYXXHjmWmgdRx9Qt9sa/ACwv7yx0Th27fw+rrsMSrUyaqRpn/fjIMTu
sQIDAQAB
-----END PUBLIC KEY-----
This same method worked with dozens of other RS256 kid's from google, but the public key does not work with this particular kid.
I am verifying the signature with:
openssl_verify($payload_to_verify, $safe_signature, $public_key, OPENSSL_ALGO_SHA256);
Which responds with '0' for failure.
Edit #2: Found google's version of the public key at:
https://www.googleapis.com/oauth2/v1/certs
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8h6tCwOYDPtzyFivNaIg
uQVc/yBO5eOA2kUu/MAN8s4VWn8tIfCbVvcAz3yNwQuGpkdNg8gTk9QmReXl4SE8
m7aCa0iRcBBWLyPUt6TM1RkYE51rOGYhjWxo9V8ogMXSBclE6x0t8qFY00l5O34g
jYzXtyvyBX7Sw5mGuNLVAzq2nsCTnIsHrIaBy70IKU3FLsJ/PRYyViXP1nfo9872
q3mtn7bJ7/hqss0vDgUiNAqPztVIsrZinFbaTgXjLhBlUjFWgJx/g4p76CJkjQ3+
puZRU5A0D04KvqQ/0AWcN1Q8pvwQ9V4uGHm6Bop9nUhIcZJYjjlTM9Pkx/JnVOfe
kwIDAQAB
-----END PUBLIC KEY-----
My generated public key is different. Why my generated public key is wrong?
I confirm that the key is not correctly converted by the RSA Crypt package.
Wrong key
Good key
I tried to convert that key with another application (web-token/jwt-app) and I got the same result as the one provided by Google.
curl -OL https://github.com/web-token/jwt-app/raw/gh-pages/jose.phar
curl -OL https://github.com/web-token/jwt-app/raw/gh-pages/jose.phar.pubkey
chmod +x jose.phar
./jose.phar key:convert:pkcs1 '{"alg": "RS256","n": "8h6tCwOYDPtzyFivNaIguQVc_yBO5eOA2kUu_MAN8s4VWn8tIfCbVvcAz3yNwQuGpkdNg8gTk9QmReXl4SE8m7aCa0iRcBBWLyPUt6TM1RkYE51rOGYhjWxo9V8ogMXSBclE6x0t8qFY00l5O34gjYzXtyvyBX7Sw5mGuNLVAzq2nsCTnIsHrIaBy70IKU3FLsJ_PRYyViXP1nfo9872q3mtn7bJ7_hqss0vDgUiNAqPztVIsrZinFbaTgXjLhBlUjFWgJx_g4p76CJkjQ3-puZRU5A0D04KvqQ_0AWcN1Q8pvwQ9V4uGHm6Bop9nUhIcZJYjjlTM9Pkx_JnVOfekw","use": "sig","kid": "b863b534069bfc0207197bcf831320d1cdc2cee2","e": "AQAB","kty": "RSA"}'
Best would be to warn phpseclib/phpseclib about that issue.
I am trying to verify signature via openssl_verify() function:
PHP code:
$signature = pack("H*", $ecdsa);
$verified = openssl_verify($data, $signature, $public_key, "sha256");
Error message:
error: error:0606C06E:digital envelope routines:EVP_VerifyFinal:wrong
public key type
What means error message "wrong public key type"?
Parameters
Data param:
41.50978123OK1140720161227221826993f133b2b22d61a6e5bcc5323c00438b489ffac9301b20811d696eb03d7
ECDSA param:
304502201dc866a213bdcf42fad84ab8d00dc3ef4d0e10450fd6110070a866dbdeccc831022100f8062057f3022db78f7df3bff40547ef76be58eb55cb9f72a4b1ecc9f34ed54b
Public key:
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEozvFM1FJP4igUQ6kP8ofnY7ydIWksMDk1IKXyr/T
RDoX4sTMmmdiIrpmCZD4CLDtP0j2LfD7saSIc8kZUwfILg==
-----END PUBLIC KEY-----
I manage to generate private / public keys using the following script :
$res = openssl_pkey_new(array('private_key_bits' => 2048,'private_key_type' => OPENSSL_KEYTYPE_RSA));
openssl_pkey_export($res, $privkey);
file_put_contents('test.private.key', $privkey);
$pubkey = openssl_pkey_get_details($res);
$pubkey = $pubkey["key"];
file_put_contents('test.public.key', $pubkey);
The generated files :
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwQ5L0JQ2G5zGhC4uDISo6krN/mKrBuULYhrVL9Zdve+C9DuH
6uDTRCC07PvIKcHVj13vKB4YvRlwCCAxHg5p34P3W9vjmrI91rdVJ31noRvJ/i5Z
jNBfy7c8NrIOA6m4gicfPbozuQU741jLSncdQuyZRrADbFWppIz/mLm5WDZk6+NU
yAM2o0jvDsKE7i3sT+IKJpjUC8mE+RONIooNtHB3GJarsCKg5L6e0EaGXlVp9Mez
lSSn/Z5p1Wu3GJq02lNGLT5BVgCfE7ajBDZWRDG+Mbp4/YCt/zXz5XWm2/BxD78c
2wH3qMs/bIjvq5MTta4E2VQTSCxI5fMjRUf5QQIDAQABAoIBAQCvZuXLJF3kyJQ1
FCASj5VJCZ4POmZZZVDqWabIR+Pz5eD9NflPleVdSLoZdslt5wa5s4bO1El1xd7c
AyOdQ0s+IRBlDWvF6Zv1saxUrMOyxSTJJCOIpOnklR7IMw44lcNlvVXNJ5hGylKX
RN2vUnnrjDvW1aTGkS4Iq3KuuE+FrJIOm9Lb7z4Nj7BwmgwUtbB5NQKFDVohPp+w
pFGPHrN6dCy+qoSlY/IP89u6f7g9HBEM+n91uO6dQwSb/YxBROLMffXNJKA+UKex
UIIZlrPUcFN+yDVbQBmMFA3PYbBvwqZfpwzslIoUS+CGE/MorbW77/Qy2P4BC3/D
h8dmRDiBAoGBAOIDLHoMwT3FP+jlgZiAktQjShGRQJ+Li66L1nNIAJSeE8Nna5Sk
E3R1TBIZBmAGUZJ00POUWUMooAQIGF597hnFuENZIYpvulkKDCCUVx24kZDbyady
TcWdnEZfRmun5H7JfTlJl1HjqgGxKOc3ek/xDxoqiNf2WqScIom+dWndAoGBANqr
tQZyvpwv8FZVgkmteCCJb5NZzs04NzrT/i792/mL9Y45VxneLJVbXrAmQw/ClfVi
Z04NamqeOvVwUByoxWvZwLtyNt2dhpmtYlWuMRdo505BW1I75UIZYbWgZTtVq+PR
mf0SxNYXTsJQsqTTkqHQOMOHj8JyoAG1Z04J4qC1AoGAEkDpXa4cCU4d/ERU9Ckm
MqXq/II7sucFUAKRPlxJV7dwpy56HNYnkBdNHoUQ475+5hIzMgkAMJFeYxT4SuFm
0oQKfr37HIArj7dlBViVtJvMfeOSZMixiU1SasiVGmrD5I2HZJIR+5Yki+BwCkSL
x1sTuixHQxHtfi/yBifwua0CgYBPaGFRmSOc5k+5mk244bSo5B/Pe6J8pbhwtYEt
oWRbh7bBUhNOQn8gMdD92Lcrpvb76CMplfeaBiHU9VcyQRuIIcg6iaxg6A50CiGW
ia4sGR0+Lr+x6ixDx6HS6g8479B+56Oq4kD2mfow2Es3TdmGx22Fm9nZu/RdCnoc
Pby9rQKBgAak6zdKdMHzmHd+r2rbCTqT/NOIoip1zYpEGpiginkZcpy7Mz4iBL1Y
H7a2sa5k9Pykm2sQYoFPM8vn7halDcuAV7mjiV4XyiM5wRRWHTqSoUgjElexE0W5
HoQvWv10NBFqySMSfCm+YFXZGY17usxAJPSIySHzoTVRJEIjAw0G
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQ5L0JQ2G5zGhC4uDISo
6krN/mKrBuULYhrVL9Zdve+C9DuH6uDTRCC07PvIKcHVj13vKB4YvRlwCCAxHg5p
34P3W9vjmrI91rdVJ31noRvJ/i5ZjNBfy7c8NrIOA6m4gicfPbozuQU741jLSncd
QuyZRrADbFWppIz/mLm5WDZk6+NUyAM2o0jvDsKE7i3sT+IKJpjUC8mE+RONIooN
tHB3GJarsCKg5L6e0EaGXlVp9MezlSSn/Z5p1Wu3GJq02lNGLT5BVgCfE7ajBDZW
RDG+Mbp4/YCt/zXz5XWm2/BxD78c2wH3qMs/bIjvq5MTta4E2VQTSCxI5fMjRUf5
QQIDAQAB
-----END PUBLIC KEY-----
Could someone tell me how to retrieve my keys, in order to encrypt / decrypt files. I'm trying the following :
$privkey = openssl_pkey_get_private('file://test.private.key')
$pubkey = openssl_pkey_get_public('file://test.public.key')
But these functions return false...
Thanks
Ok sorry forget about this post, I just tried to make it hard where it's very simple : A file_get_contents('test.public.key') is enough to retrieve the keys ;)