📄 readsignedmail.java
字号:
package cn.edu.scut.smimeapi;
import java.security.Security;
import javax.mail.Multipart;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import javax.mail.Message;
import javax.mail.internet.MimeMessage;
import org.bouncycastle.mail.smime.SMIMESigned;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import cn.edu.scut.certmgr.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @version 1.0
*/
/**
* a class that reads a basic SMIME signed mail.
*/
public class ReadSignedMail extends ReceiveMail
{
/** the method read a signed mail by the cert carried over the mail
* Return a MimeBodyPart from the Signedmsg.
* @Signedmsg the MimeMessage which has been signed!
* throws Exception
*/
public MimeBodyPart ReadSignedMailByPassedCert(MimeMessage Signedmsg)
throws Exception
{
if (!Signedmsg.isMimeType("multipart/signed")) //not a signed menssage
{
throw new Exception(" It is not a Signed message!");
}
SMIMESigned s = new SMIMESigned((MimeMultipart) Signedmsg.getContent());
// extract the content
MimeBodyPart content = s.getContent();
try
{
System.out.println(verify(s)); //verify the signer
}
catch (Exception ex)
{
throw new IllegalStateException("verify the signer error:"+ex);
}
return content;
}
public MimeBodyPart GetSignedMailContent(MimeMessage Signedmsg)
throws Exception
{
if (!Signedmsg.isMimeType("multipart/signed")) //not a signed menssage
{
throw new Exception(" It is not a Signed message!");
}
MimeBodyPart content=null;
SMIMESigned s = new SMIMESigned((MimeMultipart) Signedmsg.getContent());
// extract the content
content = s.getContent();
return content;
}
public MimeBodyPart GetSignedMailContent(MimeBodyPart Signedmsg)
throws Exception
{
if (!Signedmsg.isMimeType("multipart/signed")) //not a signed menssage
{
throw new Exception(" It is not a Signed message!");
}
MimeBodyPart content=null;
SMIMESigned s = new SMIMESigned((MimeMultipart) Signedmsg.getContent());
// extract the content
content = s.getContent();
return content;
}
public String GetSignedMailValidator(MimeMessage Signedmsg)
throws Exception
{
if (!Signedmsg.isMimeType("multipart/signed")) //not a signed menssage
{
throw new Exception(" It is not a Signed message!");
}
String result=null;
SMIMESigned s = new SMIMESigned((MimeMultipart) Signedmsg.getContent());
result=this.verify(s);
return result;
}
public String GetSignedMailValidator(MimeBodyPart Signedmsg)
throws Exception
{
if (!Signedmsg.isMimeType("multipart/signed")) //not a signed menssage
{
throw new Exception(" It is not a Signed message!");
}
String result=null;
SMIMESigned s = new SMIMESigned((MimeMultipart) Signedmsg.getContent());
result=this.verify(s);
return result;
}
/** the method read a signed mail by the cert carried over the mail
* Return a MimeBodyPart from the MimeBodyPart Signedmsg.
* @Signedmsg the MimeBodyPart which has been signed!
* throws Exception
*/
public MimeBodyPart ReadSignedMailByPassedCert(MimeBodyPart Signedmsg)
throws Exception
{
if (!Signedmsg.isMimeType("multipart/signed")) //not a signed menssage
{
throw new Exception(" It is not a Signed message!");
}
SMIMESigned s = new SMIMESigned((MimeMultipart) Signedmsg.getContent());
// extract the content
MimeBodyPart content = s.getContent();
try
{
this.verify(s); //verify the signer
}
catch (Exception ex)
{
throw new IllegalStateException("verify the signer error:"+ex);
}
return content;
}
/*
public static void main( String[] args)
throws Exception
{
try
{
ReadSignedMail recmail=new ReadSignedMail();
MimeBodyPart res=null;
Message[] msg = recmail.getMail("202.38.212.1", "yhliu", "yhliu");
System.out.println("您好,共收取到"+msg.length+"封邮件");
for (int i = 0; i < msg.length; i++) //msg.length
{
if (msg[i].isMimeType("multipart/signed"))//Signed message
{
System.out.println("您好,这是一封签名邮件");
res=recmail.ReadSignedMailByPassedCert((MimeMessage)msg[i]);
Object cont = res.getContent();
System.out.println("邮件内容如下:");
if (cont instanceof String)
{
System.out.println((String) cont);
}
else if (cont instanceof Multipart)
{
Multipart mp = (Multipart) cont;
System.out.println(recmail.handleMultipart(mp));
}
}
else
{
System.out.println("It is not a Signed message!");
}
System.out.println("---------------------------");
}
recmail.close();
}
catch(Exception ex)
{
System.out.println(ex);
}
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -