Frage

Ich versuche, ein Applet zu schreiben, die E-Mail mit S / MIME signieren würde.

Natürlich will ich nur mit dem erforderlichen Material ein kleines Glas machen. Offensichtlich ist die Java Art und Weise, dies zu tun beinhaltet um ein riesiges sakrales unterzeichnet Hüpfburg JCE jar mit.

Die Frage ist: Was ist der einfachste Weg, S / MIME zu bekommen, ohne JCE zu berühren und sie beschweren sich über „Authentifizieren“ „Provider“ zu haben? Vielleicht gibt es eine S / MIME-Implementierung, die nicht auf JCE abhängt? Vielleicht ist es möglich, Hüpfburg S / MIME mit ihrer leichten API ohne Berührung JCE zu benutzen? Vielleicht gibt es eine andere Möglichkeit?

Es ist mir klar, dass nichts offen eine reine Java-Source-Algorithmen Krypto verhindern kann, arbeitet unabhängig davon, ob Sun genehmigt, so dass es nicht eine Frage der theoretischen Möglichkeit ist, besser gesagt: die Art und Weise der am wenigsten schmerzhaft ist

?

Natürlich kann ich immer hässlich früh gehen von Hüpfburg pure-java JCE Implementierung greifen, die Umbenennung seiner Pakete java.security1, und dass Änderungen ich will -. Aber auf diese Weise zu schmerzhaft sieht jetzt

UPDATE Mein aktuelles Problem mit Hüpfburg mit direkt. Ich versuche Schlüssel von Schlüsselspeichern zu laden, die SecretKeyFactory beinhaltet die Verwendung, die wiederum lehnt mein Hüpfburg bauen

War es hilfreich?

Lösung 2

Es ist ziemlich einfach, Nachrichten zu signieren, ohne JCE zu verwenden. Das eigentliche Problem war PKCS # 12-Tasten zu lesen.

Ich tat dies:  * Kopiert JDKPKCS12KeyStore Klasse über.  * Überall darin, ersetzt Security.getInstance () mit bcProvider.getService (). NewInstance () (die zurück Spi-s)  statt geschützt * In jenem Spi-s (in BC Quellen) öffentlich erforderliche Methoden hergestellt.

Es sieht aus wie ein Hack, aber scheint tatsächlich zu funktionieren.

Andere Tipps

BC S / MIME über das CMS-Paket geschrieben wird, so dass die Frage zufällt wirklich das CMS-Paket zu modifizieren, so dass alle die Krypto getan wird, um die leichten Klassen.

Etwas Ähnliches wurde bereits getan, mehr oder weniger erfolgreich, für die .NET-Version von Bouncy Castle. Wir versuchen, (zugegebenermaßen ist es ein langsamen Prozess), um die Java-Version, Refactoring, so dass das CMS-Material mit entweder JCE oder leichten arbeiten kann. Das gleiche Problem betrifft andere Teile der BC-API zu z.B. die PKCS # 12-Schlüsselspeicher in den JCE Provider aufgebaut wird, wird das OpenPGP-Paket JCE geschrieben usw. Die .NET-Ports von diesen auch sie auf die leichte API neu geschrieben.

Ihr Problem ist wahrscheinlich einfacher als der allgemeine Fall though. Vermutlich müssen Sie nur den CMSSignedDataGenerator und unterstützenden Klassen. Sie wahrscheinlich nicht brauchen all die unzähligen Variationen von addSigner oder erzeugen. Wenn Sie gerade auf Ihrem Digest entscheiden / Unterschrift Front-Algorithmen, dann alle Anbieter Sachen werden einfach mit hartkodierte Anrufe auf bestimmte leichte Implementierungen zu ersetzen.

Statt eines Schlüsselspeicher, vielleicht könnten Sie weg mit nur einer einzigen privaten Schlüssel in einer PKCS # 8-Datei zu speichern (PEM codiert vielleicht). Ähnliches gilt für das Zertifikat ein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top