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); } } } }