import java.io.*;
import java.math.BigInteger;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import java.io.File;
import java.io.FileInputStream;
public class ServletVerifierCertificat extends HttpServlet {
String certName;
String path;
String work;
boolean revok;
boolean valable;
boolean authentic;
boolean valid;
InputStream ips;
File saveTo;
byte[] signdata;
File file_to_sign,f;
private String issuer;
private BigInteger serial;
private Integer version;
private Date date;
private String subject;
private String sigAlgo;
private String mess;
private String authenticite;
private String estRevok;
private boolean s1;
VerifieSignature vs;
byte[] buffer;
DataInputStream in ;
private boolean s;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html;charset=UTF-8");
PrintWriter out = res.getWriter();
path = this.getServletContext().getRealPath(File.separator) + "\\certificats\\";
if (ServletFileUpload.isMultipartContent(req)) {
try{
// Parse the HTTP request...
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
List fileItemsList = servletFileUpload.parseRequest(req);
Iterator it = fileItemsList.iterator();
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
ips = fileItem.getInputStream();
certName = fileItem.getName();
work = path + certName;
if (work.endsWith(".pk7")) {
//récupération du fichier .pk7
f = new File("c:/test.txt.pk7");
buffer = new byte[(int)f.length()];
in = new DataInputStream(new FileInputStream(f));
in.readFully(buffer);
in.close();
vs = new VerifieSignature();
vs.verifieSignature(buffer); {
out.println("");
out.println("
");
out.println("");
out.println("Request Information Example");
out.println("");
out.println("");
out.println("Request Information Example
");
out.println("Method: " + req.getMethod());
out.println("Request URI: " + req.getRequestURI());
out.println("Protocol: " + req.getProtocol());
out.println("PathInfo: " + req.getPathInfo());
out.println("Remote Address: " + req.getRemoteAddr());
out.println("Remote Address: " + req.getRemoteAddr()+ "buffer"+ buffer.toString());
out.println("");
out.println("");
}
version = vs.getVersion();
serial = vs.getSerialN();
issuer = vs.getIssuer().toString();
subject = vs.getSubject().toString();
date = vs.getDate();
sigAlgo = vs.getSignAlgo();
boolean auth = vs.getAuth();
if (auth) {
authenticite = "Authentique";
} else {
authenticite = "Non authentique";
}
revok = vs.getRevok();
if (revok) {
estRevok = "Révoqué";
} else {
estRevok = "Non révoqué";
}
if (s1) {
req.setAttribute("validSign", "La signature est valide");
} else {
req.setAttribute("validSign", "La signature n'est pas valide");
}
if (!revok && auth) {
req.setAttribute("validCert", "Le certificat est valide");
} else {
req.setAttribute("validCert", "Le certificat n'est pas valide");
}
req.setAttribute("document", work);
req.setAttribute("auth", authenticite);
req.setAttribute("revok", estRevok);
req.setAttribute("vers", version);
req.setAttribute("serNum", serial);
req.setAttribute("issDN", issuer);
req.setAttribute("subjDN", subject);
req.setAttribute("dt", date);
req.setAttribute("sigAlg", sigAlgo);
req.setAttribute("mess", mess);
getServletContext().getRequestDispatcher("/ResultatVerifierSignature.jsp").forward(req, res);
} else {
req.setAttribute("resul", "donnez un fichier pk7");
getServletContext().getRequestDispatcher("/ResultatVerifierSignature.jsp").forward(req, res);
}
//// if (work.equals(sig)) {
//// getServletContext().getRequestDispatcher("/verifierSign.jsp").forward(req, res);
//// } else {
// getServletContext().getRequestDispatcher("/verifierSignClient.jsp").forward(req, res);
//
//
}
}
catch (Exception ex) {
Logger.getLogger(ServletVerifierCertificat.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}