Avatar billede elites Nybegynder
17. juni 2004 - 11:06

Lotus går ned når jeg sender en digitalt signeret mail

Hejsa

Jeg 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);
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester