[PHP] Mail PGP encrypten *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een grote applicatie draaien die met verschillenden protocollen naar buiten toe samenwerkt. Nu is het het geval dat er moet worden samengewerkt met een partij die mail ontvangt en terugstuurd. Hierbij moeten de mails met PGP worden versleuteld. Nu is het zo dat ik een Debian 3.0 distro draai met PHP 4.3.3 met PGP 2.6.3.

Het is de bedoeling dat er op grote schaal mails worden verstuurd en..... natuurlijk encrypted. Dit gebeurt via een PHP script. Maar wat ik nu niet aan de praat krijg is om vanuit dat script mijn string te encrypten (dit kan blijkbaar alleen maar via het tijdelijk wegschrijven van een bestand en deze dan encrypten). Stap hierna is dat je je passphrase in moet typen (is er een mogelijkheid dat dit automatisch kan?? Het was niet de bedoeling dat er handmatig tig per keer dag de passphrase wordt ingevoerd). En tot slot na dat je je passphrase hebt ingevoerd wordt er een bestand weggeschreven dat dezelfde naam heeft als het bestand dat je encrypt alleen dan met een extra extensie .asc

Weet iemand hoe ik dit aan zou kunnen pakken? En zo ja, hoe??

Alvast bedankt.

Thijs

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
I had all kinds of trouble encrypting a message with PGP, but I finanlly got it to work. The trick was to 'chmod o+r pubring.pkr' so that the apache server could read the public keys!!! Then, this function worked fine:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?PHP
function pgp_encrypt($keyring_location, $public_key_id, $plain_text) {
       $key_id = EscapeShellArg($public_key_id);
       putenv("PGPPATH=$keyring_location");
       // encrypt the message
       $pipe = popen("pgpe -r $key_id -af", "r");               
       fwrite($pipe, $plain_text);
       $encrypted_text = '';
       while($s = fgets($pipe, 1024)) {
               // read from the pipe
               $encrypted_text .= $s;
       }
       pclose($pipe);
       return $encrypted_text;
}
$message = pgp_encrypt("/home/username/.pgp", "to@domain.com", "dummy text to be encrypted");
print nl2br($message);
?>
De php manual

Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 18-09 18:19
Bedankt voor je script!

We zitten hier nog even naar te kijken, maar waar je je passphrase in zou moeten voeren is ons onbekend. Zou je je licht nog even kunnen laten schijnen?

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 22-06 16:52

MaxxRide

Surf's up

Je moet voor dit script ook de public key van degene weten waar je het naartoe wilt sturen (bedoel je dat met passphrase). Dat lijkt me ook nog een opgave (hoe wil je dat gaan doen, bijhouden in de DB ofzo?)

If you are not wiping out you are nog pushing enough...


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 18-09 18:19
Voor alleen signen heb je de public key van de andere partij niet nodig.
We zijn een klein stapje verder met pgp-integration. Die gaat met buffers aan de slag, maar da's vrij heftig (C).

Wellicht zijn we het wiel opnieuw aan het uitvinden. Someone?

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 18-09 18:19
DiedX schreef op 08 december 2003 @ 15:46:
Voor alleen signen heb je de public key van de andere partij niet nodig.
We zijn een klein stapje verder met pgp-integration. Die gaat met buffers aan de slag, maar da's vrij heftig (C).

Wellicht zijn we het wiel opnieuw aan het uitvinden. Someone?
edit:


Voor je idee. PGP-Integrate:

/*Signs a buffer. The output is placed in buf.*/
void sign_buffer(char *buf, char *passphrase)
{
FILE *pgpin, *pgpout;
char tmpbuf[1024] = " ";

setenv("PGPPASSFD", "0", 1);
run_pgp("pgps -at -f +batchmode=1", &pgpin, &pgpout);
if(pgpin && pgpout)
{
fprintf(pgpin, "%s\n", passphrase); /*Send the passphrase in, first*/
memset(passphrase, '\0', strlen(passphrase)); /*Burn the passphrase*/
fwrite(buf, sizeof(char), strlen(buf), pgpin);
fclose(pgpin);

*buf = '\0';
fgets(tmpbuf, sizeof(tmpbuf), pgpout);
while(!feof(pgpout))
{
strcat(buf, tmpbuf);
fgets(tmpbuf, sizeof(tmpbuf), pgpout);
}

wait(NULL);

fclose(pgpout);
}
unsetenv("PGPPASSFD");
}

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Verwijderd schreef op 02 december 2003 @ 15:49:
[...] Het is de bedoeling dat er op grote schaal mails worden verstuurd en..... natuurlijk encrypted. [...]
DiedX schreef op 08 december 2003 @ 15:46:
Voor alleen signen heb je de public key van de andere partij niet nodig. [...]
Wil je nu versleutelen of ondertekenen? Of allebei?

Pas de replâtrage, la structure est pourrie.


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 18-09 18:19
Alleen signen.

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Zie https://www.braverock.com/gpg/ voor een plugin die gpg toevoegd aan SquirrelMail.
Pagina: 1