next up previous
Nächste Seite: Verschlüsselung Aufwärts: gnupg+mua_de Vorherige Seite: Vorraussetzungen für einen MUA

Entschlüsselung

Die Entschlüsselung ist durchzufühen, sobald ein OpenPGP verschlüsseltes Objekt zur Verarbeitung ansteht. Es ist also zu prüfen, ob der Content-Type multipart/encrypted vorliegt und ein Parameter protocol="application/pgp-encrypted" vorhanden ist. Es sollte hierfür ein entsrpechender Handler implementiert werden.

Es sollte nun geprüft werden, ob der erste Teil den richtigen Content-Type besitzt und eine Zeile mit der richtigen Versionsnummer vorhanden ist. Danach wird der zweite Teil via GPGME entschlüsselt und das daraus entstehende MIME Objekt ersetzt dann das ursprüngliche Objekt.

Hier ein Beispiel ohne jegliche Fehlerbehandlung:

   GpgmeCtx ctx;
   GpgmeData ciphertext, plaintext;

   gpgme_new (&ctx);
   gpgme_data_new_from_mem (&ciphertext, mime_part_2,
                            mime_part_2_len, TRUE );
   gpgme_data_new (&plaintext);

   gpgme_op_decrypt (ctx, ciphertext, plaintext);
   gpgme_data_release(ciphertext);

   gpgme_data_rewind (plaintext);
   while ( !gpgme_data_read (dh, buf, sizeof buf, &nread ) ) {
        fwrite (buf, nread, 1, stdout );
   }
    
   gpgme_release (ctx);
   gpgme_data_release(plaintext);
ciphertext und plaintext enhalten jeweils die vollständigen MIME Objekte. Beispiele hierzu finden sich im RFC2015[2].



Werner Koch 2001-02-14