Lotus går ned når jeg sender en digitalt signeret mail
HejsaJeg har et digitalt signatur.
Eksporterer jeg dette og bruger det i OutLook kan jeg finde sende mail og se dem i mit lotus mailsystem.
Men hvis jeg bruger den samme eksporterede fil og sender i java med nedenstående program, kan jeg godt sende.
Åbner jeg mailen i Lotus går det ned med en eller anden NSD Fejlmelding???
Mangles der noget i java programmet?
import java.io.*;
import java.security.*;
import java.security.cert.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import org.bouncycastle.mail.smime.*;
/**
* a simple example that creates a single signed mail message.
*/
public class CreateSignedMail {
public static void main(String[] args) throws Exception
{
// Read properties file.
Properties properties = new Properties();
try {
properties.load(new FileInputStream("mail.properties"));
} catch (IOException e) {
}
String password = properties.getProperty("password");
String certfile = properties.getProperty("certfile");
String smtphost = properties.getProperty("smtphost");
String fromUserString = properties.getProperty("fromUser");
String toUserString = properties.getProperty("toUser");
String message = properties.getProperty("message");
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
// 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(certfile);
// laver password på tester.pfx om til char array
char[] key = password.toCharArray();
// loader tester.pfx fra inputstream
keyStore.load( (InputStream) fis, key);
/**
* 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 keyAlias = null;
while (e.hasMoreElements())
{
String alias = (String) e.nextElement();
if (keyStore.isKeyEntry(alias))
{
keyAlias = alias;
}
}
if (keyAlias == null)
{
throw new Exception("Unable to find an alias.");
}
// henter private key ved at angive alias og password
PrivateKey pk = (PrivateKey) keyStore.getKey(keyAlias, key);
// Henter certificatet ud fra alias
X509Certificate pkcs12Cert = (X509Certificate) keyStore.getCertificate(
keyAlias);
// bruges til at signe en message
SMIMESignedGenerator gen = new SMIMESignedGenerator();
// tilføjer cert
gen.addSigner(pk, pkcs12Cert, SMIMESignedGenerator.DIGEST_SHA1);
//
// laver beskeden
//
MimeBodyPart msg = new MimeBodyPart();
// sætter text i beskeden
msg.setText(message);
MimeMultipart mm = gen.generate(msg, "BC");
Properties props = System.getProperties();
props.put("mail.smtp.host", smtphost);
Session session = Session.getDefaultInstance(props, null);
Address fromUser = new InternetAddress(fromUserString);
Address toUser = new InternetAddress(toUserString);
MimeMessage body = new MimeMessage(session);
body.setFrom(fromUser);
body.setRecipient(Message.RecipientType.TO, toUser);
body.setSubject("Example signed message");
body.setContent(mm, mm.getContentType());
body.saveChanges();
Transport.send(body);
}
}
