Ahoj,
snazim se podepsat a odeslat mail s prilohou. Kdyz odeslu mail bez prilohy, tak je vsechno v pohode, ale kdyz odeslu mail s prilohou tak mi Thunderbird rve, ze mail sice byl podepsany, ale signatura nesedi na obsah mailu. K podepisovani pouzivam javamail-crypto.

public void test() throws MessagingException {
       Properties props = new Properties();
       Session session = Session.getInstance(props);
       MimeMessage msg = new MimeMessage(session);
       msg.setFrom(new InternetAddress("t...@seznam.cz"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("tom.vojt...@seznam.cz"));
       msg.setSubject("Testovaci podepsany mail");

       // create and fill the first message part
       MimeBodyPart mbp1 = new MimeBodyPart();
       mbp1.setText("Text testovaciho podepsaneho mailu");
       msg.setContent("Testovaci podepsany mail", "text/plain");

       // create the second message part
       MimeBodyPart mbp2 = new MimeBodyPart();

       // attach the file to the message
FileDataSource fds = new FileDataSource(new File("oracle_prereq.sh"));
       mbp2.setDataHandler(new DataHandler(fds));
       mbp2.setFileName(fds.getName());

       // create the Multipart and add its parts to it
       Multipart mp = new MimeMultipart();
       mp.addBodyPart(mbp1);
       mp.addBodyPart(mbp2);

       // add the Multipart to the message
       msg.setContent(mp);

       // set the Date: header
       msg.setSentDate(new Date());
       msg.saveChanges();

       msg = signMessage(msg, session);

       Transport transport = session.getTransport("smtp");
       transport.connect("smtp.server", null, null);

       transport.sendMessage(msg, msg.getAllRecipients());
   }

protected MimeMessage signMessage(MimeMessage mimeMessage, Session session) throws MailException {
       try {
           // Getting of the S/MIME EncryptionUtilities.
EncryptionUtils encUtils = EncryptionManager.getEncryptionUtils(EncryptionManager.SMIME);

// Loading of the S/MIME keystore from the file (stored as resource).
           char[] keystorePass = getCertificatePassword().toCharArray();
EncryptionKeyManager encKeyManager = encUtils.createKeyManager(); encKeyManager.loadPrivateKeystore(getClass().getResourceAsStream("aaa.p12"), keystorePass);

           // Getting of the S/MIME private key for signing.
Key privateKey = encKeyManager.getPrivateKey(getPrivateKeyAlias(), keystorePass);

           // Signing the message.
           return encUtils.signMessage(session, mimeMessage, privateKey);
       } catch (Exception e) {
           throw new MailPreparationException(e);
       }
   }

   private String getPrivateKeyAlias() {
       return "alias";
   }

   private String getCertificatePassword() {
       return "password";
   }

Nevite v cem je problem?

Diky
TV

Odpovedet emailem