Jeg har et problem mht. bouncy castle til java! Jeg får en nullpointer exception at org.bouncycastle.cms.CMSSIgnedDataGenerator$$SignerInf.toSignerInfo(CSSignedDataGenerator.java:249);
Vil ikke lige skrive mere da bouncy castle ikke er noget standard java kode... Men hvis der er nogen som helst der har arbejdet med dette i forbindelse med digital signatur eller lign. så må i meget gerne henvende jer.. for jeg er kørt mega fast...
Hvordan har du defineret at du vil bruge bountycastle som provider. Er det i din kode eller er det i din java.security fil ($javahome/lib/security/java.security)?
Jeg sidder ikke lige ved min egen maskine, men jeg mener den bare hedder sunjce.
/** * a simple example that creates a single signed mail message. */ public class CreateSignedMail {
public static void main(String[] args) throws Exception { //Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); Security.addProvider(new com.sun.crypto.provider.SunJCE()); //com.sun.crypto.provider.SunJCE // Genererer et keystore objekt af typen PKCS12 som tester.pfx er KeyStore keyStore = KeyStore.getInstance("PKCS12"); // læser tester.pfx ind FileInputStream fis = new FileInputStream("test.pkcs12"); // laver password på tester.pfx om til char array char[] key = "2115Henrik".toCharArray(); // loader tester.pfx fra inputstream keyStore.load( (InputStream) fis, null); /** * Der er sikkert en smartere måde men jeg har ikke rigtigt forstået det med alias * Så jeg finder bare det første alias..vist også det eneste og bruger det til at finde cert,privatekey */ Enumeration e = keyStore.aliases(); String alias = (String) e.nextElement(); // henter private key ved at angive alias og password PrivateKey pk = (PrivateKey) keyStore.getKey(alias, key); // Henter certificatet ud fra alias X509Certificate pkcs12Cert = (X509Certificate) keyStore.getCertificate(alias); // bruges til at signe en message SMIMESignedGenerator gen = new SMIMESignedGenerator(); // tilføjer cert gen.addSigner(pk, pkcs12Cert, SMIMESignedGenerator.DIGEST_SHA1); System.out.println(gen+"1"); // // laver beskeden //
MimeBodyPart msg = new MimeBodyPart(); System.out.println(msg+"1"); // sætter text i beskeden msg.setText("Hello world! ..."); System.out.println(gen); java.security.Provider[] per = Security.getProviders(); System.out.println(per[3].getName());
Hvis jeg skifter SunJCE ud med BS.. smider den exceptionen... men den loader godt provideren godt nok.... Hvis jeg anvender SunJCE som nu i gen.generate(msg, "SunJCE") så skriver den at den at provideren ikke har den rigtige RSA et eller andet...
jeg tilføjede den selv til C:\JBuilderX\jdk1.4\jre\lib\security\java.security det skal selvfølgelig også gøres i den java.security fil som programmet bliver afviklet under.
Snakker pr mail med elites, nullpointer problemet er væk, men nu er der et nyt. --------> Jeg er kommet af med min nullpointer,,, og kan for så vidt også sende digitalt signerede mails. Meeeen... Hvis jeg sender til min Lotus Notes, så kan jeg ikke åbne filen... programmet styrter! <-------- Jeg har sammenlignet den signature jeg får ved at sende igennem java og den fra outlook og foreskellen er at java ikke har Encryption certificate Encryption Key preference SMIME Capabilities
// bruges til at signe en message SMIMESignedGenerator gen = new SMIMESignedGenerator(); // tilføjer cert gen.addSigner(pk, pkcs12Cert, SMIMESignedGenerator.DIGEST_SHA1,new AttributeTable(signedAttrs), null);
men det andet har jeg ikke lige fået fat på endnu.
Hvis der er nogen der kan forklare hvad de 3 dele der mangler gør godt for vil det hjælpe på min forståelse ;)
Jeg har ingen problemer med at kryptere mail modtaget fra en mail hvor SMIME Capabilities er sat.. begynder jeg at rode med Encryption Key preference brokker den sig.. jeg skal ikke kunne sige om de 2 andre er krævet for at være en valid signature men outlook har ihvertfald ikke noget imod det. Encryption certificate kan jeg slet ikke finde ud af.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.