Domanda

Sto cercando di scrivere un applet che avrebbe firmato e-mail con S / MIME.

Ovviamente voglio fare un piccolo vaso con solo ciò necessaria. Ovviamente il modo di fare di Java che implica avere un enorme sacra firmato vaso Bouncy Castle JCE intorno.

La domanda è: Qual è il modo più semplice di ottenere S / MIME senza toccare JCE e averlo lamentano "Autenticazione dei" "fornitori"? Forse c'è un'implementazione S / MIME che non dipende da JCE? Forse è possibile utilizzare Bouncy Castle S / MIME utilizzando le loro API leggero senza toccare JCE? Forse c'è qualche altro modo?

E 'ovvio per me che nulla può impedire un algoritmi di puro-java open source di crittografia di lavorare indipendentemente dal fatto che Sun approva, quindi non è una questione di possibilità teorica, piuttosto: da che parte è il meno doloroso

?

Certo, posso sempre andare brutto inizio afferrando Bouncy Castle implementazione JCE puro-java, rinominando i suoi pacchetti a java.security1, e di apportare modifiche che voglio -. Ma in questo modo sembra troppo doloroso momento

UPDATE Il mio problema attuale con l'utilizzo di Castello gonfiabile direttamente:. Provo a caricare le chiavi di chiavi, che comporta l'uso di SecretKeyFactory, che a sua volta respinge la mia Bouncy Castle costruire

È stato utile?

Soluzione 2

E 'abbastanza semplice per firmare i messaggi senza utilizzare JCE. Il vero problema stava leggendo PKCS # 12 tasti.

ho fatto questo:  * Copiato classe JDKPKCS12KeyStore sopra.  * Ovunque in essa, sostituito Security.getInstance () con bcProvider.getService (). NewInstance () (che restituisce Spi-s)  * In quelli Spi-s (in fonti aC) ha reso i metodi pubblici, invece di proteggere richieste.

Si presenta come un hack, ma sembra funzionare davvero.

Altri suggerimenti

BC S / MIME è scritto sopra il pacchetto CMS, quindi la domanda devolve realmente a modificare il pacchetto CMS in modo che tutti la crittografia viene fatto usando le classi leggeri.

Qualcosa di simile è già stato fatto, più o meno con successo, per la versione .NET di Castello gonfiabile. Stiamo cercando (certamente si tratta di un processo lento) di refactoring la versione Java in modo dalla roba CMS può lavorare sia con JCE o leggero. Lo stesso problema riguarda altre parti della API BC troppo esempio PKCS # 12 chiavi è costruito nel provider JCE, il pacchetto OpenPGP viene scritto JCE, etc. Le porte NET di questi li riscritto alla API leggero anche.

Il tuo problema è probabilmente più semplice rispetto al caso generale, comunque. Presumibilmente è necessario solo il CMSSignedDataGenerator e classi di supporto. Probabilmente non bisogno di tutte le miriadi di varianti di addSigner o di generare. Se hai appena decide sul vostro digest / firma algoritmi in attacco, poi tutte le cose fornitore sarà facile da sostituire con le chiamate fissi per specifiche implementazioni leggeri.

Al posto di un archivio di chiavi, forse si potrebbe uscire solo con la memorizzazione di una singola chiave privata in un # 8 file PKCS (PEM codificato forse). Allo stesso modo per il certificato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top