verifySignData.jsp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <%@ page language="java" import="java.io.*,java.util.*,java.text.*,crosscert.*" %>
  2. <%@ page contentType = "text/html; charset=utf-8" %>
  3. <%
  4. /*-------------------------시작----------------------------*/
  5. response.setDateHeader("Expires",0);
  6. response.setHeader("Prama","no-cache");
  7. if(request.getProtocol().equals("HTTP/1.1"))
  8. {
  9. response.setHeader("Cache-Control","no-cache");
  10. }
  11. /*------------------------- 끝----------------------------*/
  12. String signeddata = request.getParameter("signedText"); // 서명된 값
  13. int nRet = 0;
  14. crosscert.Base64 CBase64 = new crosscert.Base64();
  15. nRet = CBase64.Decode(signeddata.getBytes(), signeddata.getBytes().length);
  16. if(nRet==0)
  17. {
  18. out.println("서명값 Base64 Decode 결과 : 성공<br>") ;
  19. Verifier CVerifier = new Verifier();
  20. nRet=CVerifier.VerSignedData(CBase64.contentbuf, CBase64.contentlen);
  21. if(nRet==0)
  22. {
  23. String sOrgData = new String(CVerifier.contentbuf );
  24. out.println("전자서명 검증 결과 : 성공<br>") ;
  25. out.println("원문 : " + sOrgData + "<br>");
  26. //인증서 정보 추출 결과
  27. Certificate CCertificate = new Certificate();
  28. nRet=CCertificate.ExtractCertInfo(CVerifier.certbuf, CVerifier.certlen);
  29. if(nRet==0)
  30. {
  31. out.println("인증서 정보 추출 결과: 성공 <br>");
  32. out.println("인증서 DN : " + CCertificate.subject +"<br>");
  33. out.println("==============================================<br>");
  34. out.println("subject : " + CCertificate.subject +"<br>");
  35. out.println("from : " + CCertificate.from +"<br>");
  36. out.println("to : " + CCertificate.to +"<br>");
  37. out.println("signatureAlgId : " + CCertificate.signatureAlgId +"<br>");
  38. out.println("pubkey : " + CCertificate.pubkey +"<br>");
  39. out.println("signature : " + CCertificate.signature +"<br>");
  40. out.println("issuerAltName : " + CCertificate.issuerAltName +"<br>");
  41. out.println("subjectAltName : " + CCertificate.subjectAltName +"<br>");
  42. out.println("keyusage : " + CCertificate.keyusage +"<br>");
  43. out.println("policy : " + CCertificate.policy +"<br>");
  44. out.println("basicConstraint : " + CCertificate.basicConstraint +"<br>");
  45. out.println("policyConstraint : " + CCertificate.policyConstraint +"<br>");
  46. out.println("distributionPoint : " + CCertificate.distributionPoint +"<br>");
  47. out.println("authorityKeyId : " + CCertificate.authorityKeyId +"<br>");
  48. out.println("subjectKeyId : " + CCertificate.subjectKeyId +"<br>");
  49. out.println("==============================================<br>");
  50. // 인증서 검증
  51. String policies = "";
  52. // 개인상호연동용(범용) //
  53. policies +="1.2.410.200004.5.2.1.2" + "|"; // 한국정보인증 개인
  54. policies +="1.2.410.200004.5.1.1.5" + "|"; // 한국증권전산 개인
  55. policies +="1.2.410.200005.1.1.1" + "|"; // 금융결제원 개인
  56. policies +="1.2.410.200004.5.4.1.1" + "|"; // 한국전자인증 개인
  57. policies +="1.2.410.200012.1.1.1" + "|"; // 한국무역정보통신 개인
  58. policies +="1.2.410.200004.5.5.1.1" + "|"; // 이니텍 개인
  59. // 법인상호연동용(범용)
  60. policies +="1.2.410.200004.5.2.1.1" + "|"; // 한국정보인증 법인
  61. policies +="1.2.410.200004.5.1.1.7" + "|"; // 한국증권전산 법인, 단체, 개인사업자
  62. policies +="1.2.410.200005.1.1.5" + "|"; // 금융결제원 법인, 임의단체, 개인사업자
  63. policies +="1.2.410.200004.5.4.1.2" + "|"; // 한국전자인증 법인, 단체, 개인사업자
  64. policies +="1.2.410.200012.1.1.3" + "|"; // 한국무역정보통신 법인
  65. policies +="1.2.410.200004.5.5.1.2" + "|"; // 이니텍 법인
  66. // 개인 용도제한용 인증서정책(OID) 용도 공인인증기관
  67. policies += "1.2.410.200004.5.4.1.101|"; // 은행거래용/보험용 한국전자인증
  68. policies += "1.2.410.200004.5.4.1.102|"; // 증권거래용 한국전자인증
  69. policies += "1.2.410.200004.5.4.1.103|"; // 신용카드용 한국전자인증
  70. policies += "1.2.410.200004.5.4.1.104|"; // 전자민원용 한국전자인증
  71. policies += "1.2.410.200004.5.2.1.7.1|"; // 은행거래용/보험용 한국정보인증
  72. policies += "1.2.410.200004.5.2.1.7.2|"; // 증권거래용/보험용 한국정보인증
  73. policies += "1.2.410.200004.5.2.1.7.3|"; // 신용카드용 한국정보인증
  74. policies += "1.2.410.200004.5.1.1.9|"; // 증권거래용/보험용 한국증전산
  75. policies += "1.2.410.200004.5.1.1.9.2|"; // 신용카드용 한국증전산
  76. policies += "1.2.410.200005.1.1.4|"; // 은행거래용/보험용 금융결제원
  77. policies += "1.2.410.200005.1.1.6.2|"; // 신용카드용 금융결제원
  78. policies += "1.2.410.200012.1.1.101|"; // 은행거래용/보험용 한국무역정보통신
  79. policies += "1.2.410.200012.1.1.103|"; // 증권거래용/보험용 한국무역정보통신
  80. policies += "1.2.410.200012.1.1.105|"; // 신용카드용 한국무역정보통신
  81. nRet=CCertificate.ValidateCert(CVerifier.certbuf, CVerifier.certlen, policies, 1);
  82. if(nRet==0)
  83. {
  84. out.println("인증서 검증 결과 : 성공<br>") ;
  85. /*
  86. 인증서 로직 종료
  87. 사용자 DN DB에 저장 : CCertificate.subject
  88. 사용자 인증서 주민/사업자번호 : ssn
  89. */
  90. }
  91. else
  92. {
  93. out.println("인증서 검증 결과 : 실패<br>") ;
  94. out.println("에러내용 : " + CCertificate.errmessage + "<br>");
  95. out.println("에러코드 : " + CCertificate.errcode + "<br>");
  96. }
  97. }
  98. else
  99. {
  100. out.println("인증서 추출 실패<br>");
  101. out.println("에러내용 : " + CCertificate.errmessage + "<br>");
  102. out.println("에러코드 : " + CCertificate.errcode + "<br>");
  103. }
  104. }
  105. else
  106. {
  107. out.println("전자서명 검증 결과 : 실패<br>") ;
  108. out.println("에러내용 : " + CVerifier.errmessage + "<br>");
  109. out.println("에러코드 : " + CVerifier.errcode + "<br>");
  110. return;
  111. }
  112. }
  113. else
  114. {
  115. out.println("서명값 Base64 Decode 결과 : 실패<br>") ;
  116. out.println("에러내용 : " + CBase64.errmessage + "<br>");
  117. out.println("에러코드 : " + CBase64.errcode + "<br>");
  118. }
  119. %>