<%@ page language="java" import="java.io.*,java.util.*,java.text.*,crosscert.*" %> <%@ page contentType = "text/html; charset=utf-8" %> <% /*-------------------------시작----------------------------*/ response.setDateHeader("Expires",0); response.setHeader("Prama","no-cache"); if(request.getProtocol().equals("HTTP/1.1")) { response.setHeader("Cache-Control","no-cache"); } /*------------------------- 끝----------------------------*/ String signeddata = request.getParameter("signedText"); // 서명된 값 int nRet = 0; crosscert.Base64 CBase64 = new crosscert.Base64(); nRet = CBase64.Decode(signeddata.getBytes(), signeddata.getBytes().length); if(nRet==0) { out.println("서명값 Base64 Decode 결과 : 성공
") ; Verifier CVerifier = new Verifier(); nRet=CVerifier.VerSignedData(CBase64.contentbuf, CBase64.contentlen); if(nRet==0) { String sOrgData = new String(CVerifier.contentbuf ); out.println("전자서명 검증 결과 : 성공
") ; out.println("원문 : " + sOrgData + "
"); //인증서 정보 추출 결과 Certificate CCertificate = new Certificate(); nRet=CCertificate.ExtractCertInfo(CVerifier.certbuf, CVerifier.certlen); if(nRet==0) { out.println("인증서 정보 추출 결과: 성공
"); out.println("인증서 DN : " + CCertificate.subject +"
"); out.println("==============================================
"); out.println("subject : " + CCertificate.subject +"
"); out.println("from : " + CCertificate.from +"
"); out.println("to : " + CCertificate.to +"
"); out.println("signatureAlgId : " + CCertificate.signatureAlgId +"
"); out.println("pubkey : " + CCertificate.pubkey +"
"); out.println("signature : " + CCertificate.signature +"
"); out.println("issuerAltName : " + CCertificate.issuerAltName +"
"); out.println("subjectAltName : " + CCertificate.subjectAltName +"
"); out.println("keyusage : " + CCertificate.keyusage +"
"); out.println("policy : " + CCertificate.policy +"
"); out.println("basicConstraint : " + CCertificate.basicConstraint +"
"); out.println("policyConstraint : " + CCertificate.policyConstraint +"
"); out.println("distributionPoint : " + CCertificate.distributionPoint +"
"); out.println("authorityKeyId : " + CCertificate.authorityKeyId +"
"); out.println("subjectKeyId : " + CCertificate.subjectKeyId +"
"); out.println("==============================================
"); // 인증서 검증 String policies = ""; // 개인상호연동용(범용) // policies +="1.2.410.200004.5.2.1.2" + "|"; // 한국정보인증 개인 policies +="1.2.410.200004.5.1.1.5" + "|"; // 한국증권전산 개인 policies +="1.2.410.200005.1.1.1" + "|"; // 금융결제원 개인 policies +="1.2.410.200004.5.4.1.1" + "|"; // 한국전자인증 개인 policies +="1.2.410.200012.1.1.1" + "|"; // 한국무역정보통신 개인 policies +="1.2.410.200004.5.5.1.1" + "|"; // 이니텍 개인 // 법인상호연동용(범용) policies +="1.2.410.200004.5.2.1.1" + "|"; // 한국정보인증 법인 policies +="1.2.410.200004.5.1.1.7" + "|"; // 한국증권전산 법인, 단체, 개인사업자 policies +="1.2.410.200005.1.1.5" + "|"; // 금융결제원 법인, 임의단체, 개인사업자 policies +="1.2.410.200004.5.4.1.2" + "|"; // 한국전자인증 법인, 단체, 개인사업자 policies +="1.2.410.200012.1.1.3" + "|"; // 한국무역정보통신 법인 policies +="1.2.410.200004.5.5.1.2" + "|"; // 이니텍 법인 // 개인 용도제한용 인증서정책(OID) 용도 공인인증기관 policies += "1.2.410.200004.5.4.1.101|"; // 은행거래용/보험용 한국전자인증 policies += "1.2.410.200004.5.4.1.102|"; // 증권거래용 한국전자인증 policies += "1.2.410.200004.5.4.1.103|"; // 신용카드용 한국전자인증 policies += "1.2.410.200004.5.4.1.104|"; // 전자민원용 한국전자인증 policies += "1.2.410.200004.5.2.1.7.1|"; // 은행거래용/보험용 한국정보인증 policies += "1.2.410.200004.5.2.1.7.2|"; // 증권거래용/보험용 한국정보인증 policies += "1.2.410.200004.5.2.1.7.3|"; // 신용카드용 한국정보인증 policies += "1.2.410.200004.5.1.1.9|"; // 증권거래용/보험용 한국증전산 policies += "1.2.410.200004.5.1.1.9.2|"; // 신용카드용 한국증전산 policies += "1.2.410.200005.1.1.4|"; // 은행거래용/보험용 금융결제원 policies += "1.2.410.200005.1.1.6.2|"; // 신용카드용 금융결제원 policies += "1.2.410.200012.1.1.101|"; // 은행거래용/보험용 한국무역정보통신 policies += "1.2.410.200012.1.1.103|"; // 증권거래용/보험용 한국무역정보통신 policies += "1.2.410.200012.1.1.105|"; // 신용카드용 한국무역정보통신 nRet=CCertificate.ValidateCert(CVerifier.certbuf, CVerifier.certlen, policies, 1); if(nRet==0) { out.println("인증서 검증 결과 : 성공
") ; /* 인증서 로직 종료 사용자 DN DB에 저장 : CCertificate.subject 사용자 인증서 주민/사업자번호 : ssn */ } else { out.println("인증서 검증 결과 : 실패
") ; out.println("에러내용 : " + CCertificate.errmessage + "
"); out.println("에러코드 : " + CCertificate.errcode + "
"); } } else { out.println("인증서 추출 실패
"); out.println("에러내용 : " + CCertificate.errmessage + "
"); out.println("에러코드 : " + CCertificate.errcode + "
"); } } else { out.println("전자서명 검증 결과 : 실패
") ; out.println("에러내용 : " + CVerifier.errmessage + "
"); out.println("에러코드 : " + CVerifier.errcode + "
"); return; } } else { out.println("서명값 Base64 Decode 결과 : 실패
") ; out.println("에러내용 : " + CBase64.errmessage + "
"); out.println("에러코드 : " + CBase64.errcode + "
"); } %>