[PHP] PGP/GPG Mailen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Ik ben op zoek naar een manier om uitgaande mailtjes vanaf mijn webserver te encrypten met een public key die de gebruikers van mijn webapplicatie zelf kunnen uploaden.

Nu staan er op internet en GoT talloze voorbeelden van hoe dit in zijn werk gaat, ik loop echter telkens tegen het zelfde probleem aan. Er kan pas ge-encrypt worden *nadat* de public key van de gebruiker geimporteerd is in de GPG of PGP key database.

De meeste voorbeelden die ik ben tegengekomen reppen hier met geen woord over of gaan er vanuit dat je deze key wel even met de hand wil importeren. En daar zit ik helaas niet echt op te wachten.

Ik heb geexperimenteerd met het geautomatiseerd importeren en managen van de pgp public key database maar dit blijkt nogal lastig te zijn. Het importeren van de keys lukt wel, maar bijvoorbeeld het verwijderen van een key uit de database wil niet echt. Er wordt om een bevestiging gevraagd, en de --yes switch welke deze zou overriden werkt domweg niet.

KORTOM
Ik ben op zoek naar een simpele linux binary waarmee bijvoorbeeld op de onderstaande manier een text ge-encrypt kan worden:
code:
1
/gpg_encrypt --pubkey "/fubar/pubkey" --src "/fubar/text" --dst "/fubar/text.enc"

Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

GPG zelf?
Het is gewoon een command line utility die je via exec oid kan aanspreken.
Je kunt denk ik wel wat met de --import functie en daarna --sign / --encrypt
Ik denk dat je daar even wat mee moet spelen. Evt kun je --import-ownertrust nog proberen om de key te trusen.

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21-09 14:53

MueR

Admin Tweakers Discord

is niet lief

Dit lijkt mij meer een softwarematig probleem, tenzij ik het verkeerd begrijp. Dit hoort dus thuis in software algemeen. Verder lijkt het ook nogal een beetje op een verkapte scriptrequest (in dit geval dus een binary), wat ook niet echt de bedoeling is. Het lijkt me echter dat je dit wel op internet kunt vinden?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
in php returned de exec() function de resultaten van een "/usr/bin/pgp --import" commando niet, dit maakt het nog lastiger de userid van de geimporteerde public key te achterhalen welke later als recipient opgegeven kan worden bij de encrypt actie.

Ik zit vast :(

ps.
"pgp --import keyfile > output.txt" print ook gewoon weg naar het scherm ipv output.txt

[ Voor 26% gewijzigd door JasperE op 22-10-2005 23:28 ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
passthru() returned wel de resultaten.

Overigens al naar de popen()-functie gekeken?
Daar staat onder andere deze functie in de comments;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function pgp_encrypt($keyring_location, $public_key_id, $plain_text) {
  $encrypted_text='';
  $key_id = EscapeShellArg($public_key_id);
  putenv("PGPPATH=$keyring_location");

  // encrypt the message
  $descriptorspec = array(
   0 => array("pipe", "r"),  // stdin
   1 => array("pipe", "w"),  // stdout
   2 => array("pipe", "w")  // stderr ?? instead of a file
  );
  $process = proc_open("pgpe -r $key_id -af", $descriptorspec, $pipes);
  if (is_resource($process)) {
   fwrite($pipes[0], $plain_text);
   fclose($pipes[0]);
   while($s= fgets($pipes[1], 1024)) {
         // read from the pipe
         $encrypted_text .= $s;
   }
   fclose($pipes[1]);
   // optional:
   while($s= fgets($pipes[2], 1024)) {
     $encrypted_text.= "\n<p>Error: $s</p>\n";
   }
   fclose($pipes[2]);
  }
  return $encrypted_text;
}

Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
ook passthru returned niet de resultaten van het "gpg --import" commando

[ Voor 29% gewijzigd door JasperE op 22-10-2005 23:41 ]


Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Het is misschien handig om eerst het proces handmatig te doen via de command line en alle stappen op te schrijven en die vervolgens te automatiseren.
Dat scheelt je een hoop geklooi.

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
heb ik allang gedaan natuurlijk :P
Ik heb het inmiddels op een enigszins slordige manier opgelost, maar ach het werkt :)

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

OD-Frozen schreef op zaterdag 22 oktober 2005 @ 23:26:
"pgp --import keyfile > output.txt" print ook gewoon weg naar het scherm ipv output.txt
gpg geeft dit soort uitvoer naar stderr, en niet naar stdout.

code:
1
gpg --import keyfile 2>output.txt


zou dus moeten werken.
Pagina: 1