Hướng dẫn dùng gpg.import_keys trong PHP

(PECL gnupg >= 0.3)

gnupg_importImports a key

Description

gnupg_import(resource $identifier, string $keydata): array

Parameters

identifier

The gnupg identifier, from a call to gnupg_init() or gnupg.

keydata

The data key that is being imported.

Return Values

On success, this function returns and info-array about the importprocess. On failure, this function returns false.

Examples

Example #1 Procedural gnupg_import() example

<?php
$res 
gnupg_init();
$info gnupg_import($res,$keydata);
print_r($info);
?>

Example #2 OO gnupg_import() example

<?php
$gpg 
= new gnupg();
$info $gpg->import($keydata);
print_r($info);
?>

php at cdauth dot de

14 years ago

The return array consists of the following values:
(
  [imported] => (int),
  [unchanged] => (int),
  [newuserids] => (int),
  [newsubkeys] => (int),
  [secretimported] => (int),
  [secretunchanged] => (int),
  [newsignatures] => (int),
  [skippedkeys] => (int),
  [fingerprint] => (string)
)

When invalid content is passed, all values, even skippedkeys, is 0. The fingerprint value does not exist then.

gst

1 year ago

In case anybody tries to import keys from file and ends up with return value "false", and absolutely no errors or warnings whatsoever.

gpg module still operates the same way as command line / bash invoked gpg.

If you are runnig a script from under apache, gpg is trying to acces it's ~/.gnupg that likely does not exist for apache user www-data or equivalent:

# su www-data -s /bin/bash -c "gpg"
gpg: Fatal: can't create directory '/var/www/.gnupg': Permission denied

You simply need to created that folder and chown it to apache user www-data or equivalent.

# mkdir /var/www/.gnupg
# chown www-data:www-data /var/www/.gnupg

dimitri at digirati dot com dot br

13 years ago

I recommend that the key may be generated in shell command line, then you export the keys using this group of commands.

gpg --export -a "User Name" > public.key
gpg --export-secret-key -a "User Name" > private.key

to use it, at the import and use it for encryption and decryption.

<?php

$GnuPG

= new gnupg();$PublicData = file_get_contents('public.key');
$PrivateData = file_get_contents('public.key');$PublicKey = $GnuPG->import($PublicData);
$PrivateKey = $GnuPG->import($PrivateData);

echo

'Public Key : ',$PublicKey['fingerprint'],' & Private Key : ',$PrivateKey['fingerprint'];?>

(PECL gnupg >= 0.3)

gnupg_importImporte une clé

Description

gnupg_import(resource $identifier, string $keydata): array

Liste de paramètres

identifier

L'identifiant gnupg, généré par un appel à la fonction gnupg_init() ou à la fonction gnupg.

keydata

La clé à importer.

Valeurs de retour

En cas de succès, cette fonction retourne un tableau d'information à propos du processus d'importation. En cas d'échec, cette fonction retourne false.

Exemples

Exemple #1 Exemple avec gnupg_import() (Style procédural)

<?php
$res 
gnupg_init();
$info gnupg_import($res,$keydata);
print_r($info);
?>

Exemple #2 Exemple avec gnupg_import() (Style orienté objet)

<?php
$gpg 
= new gnupg();
$info $gpg->import($keydata);
print_r($info);
?>

php at cdauth dot de

14 years ago

The return array consists of the following values:
(
  [imported] => (int),
  [unchanged] => (int),
  [newuserids] => (int),
  [newsubkeys] => (int),
  [secretimported] => (int),
  [secretunchanged] => (int),
  [newsignatures] => (int),
  [skippedkeys] => (int),
  [fingerprint] => (string)
)

When invalid content is passed, all values, even skippedkeys, is 0. The fingerprint value does not exist then.

gst

1 year ago

In case anybody tries to import keys from file and ends up with return value "false", and absolutely no errors or warnings whatsoever.

gpg module still operates the same way as command line / bash invoked gpg.

If you are runnig a script from under apache, gpg is trying to acces it's ~/.gnupg that likely does not exist for apache user www-data or equivalent:

# su www-data -s /bin/bash -c "gpg"
gpg: Fatal: can't create directory '/var/www/.gnupg': Permission denied

You simply need to created that folder and chown it to apache user www-data or equivalent.

# mkdir /var/www/.gnupg
# chown www-data:www-data /var/www/.gnupg

dimitri at digirati dot com dot br

13 years ago

I recommend that the key may be generated in shell command line, then you export the keys using this group of commands.

gpg --export -a "User Name" > public.key
gpg --export-secret-key -a "User Name" > private.key

to use it, at the import and use it for encryption and decryption.

<?php

$GnuPG

= new gnupg();$PublicData = file_get_contents('public.key');
$PrivateData = file_get_contents('public.key');$PublicKey = $GnuPG->import($PublicData);
$PrivateKey = $GnuPG->import($PrivateData);

echo

'Public Key : ',$PublicKey['fingerprint'],' & Private Key : ',$PrivateKey['fingerprint'];?>