//////////////////////////////////////////////////////////////////////////////////// // // KSignCASE-Web v2.0 javascript function definition. // //////////////////////////////////////////////////////////////////////////////////// function CheckAX() { var Installed; Installed = false; try { var KSIGNActiveXProgID = "AxEPKI.AxEPKI.1" var xObj = new ActiveXObject(KSIGNActiveXProgID); if(xObj){ Installed = true; } else { Installed = false; } } catch(ex) { Installed = false; } return Installed; } function Elevation() { ret = document.AxKCASE.ElevationAdmin(); return; } /* function InitConfig() { if(!CheckAX()) { ; }else{ location.href = "./test_vista.html"; } return; } */ function SetConfig() { if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } document.AxKCASE.SetCommonInfo(); return; } function CheckFirewall() { if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } document.AxKCASE.CheckFirewall(); return; } function SelectCert(form) { var dn; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } dn = document.AxKCASE.SelectCert(); if ((dn == null) || (dn == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return false; } form.user_dn.value = dn; return true; } function ManageCert() { if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } document.AxKCASE.ActiveManageCert(); return; } function IssueCert() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveIssueCert("", ""); if(ret != 0){ return; } alert("인증서 발급을 완료했습니다."); return; } function ReIssueCert() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveIssueCert("", ""); if(ret != 0){ return; } alert("인증서 재발급을 완료했습니다."); return; } function UpdateCert() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveUpdateCert(); if(ret != 0){ return; } alert("인증서 갱신을 완료했습니다."); return; } // // 작성자 : AB NA // 설명 : 갱신시 dn 값을 가져오기 위해 // function UpdateCert2() { var ret; var dn; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveUpdateCertDn(); //ret = "0$cn=858나일락001,ou=people,ou=경기도교육청,o=Government of Korea,c=KR$" // 갱신과정없이 테스트 할때 //ret = "0$cn=858나일락001,ou=people,ou=경기도교육청,o=Government of Korea,c=K$" // 에러 테스트 위해 var retLength = ret.length; var idx; for(var i=0; i UTF 변환 문제 //alert( ret2 ); dn = ret.substring(idx+1, retLength-1); //alert( dn ); if( errcode != 0){ return; } if ((dn == null) || (dn == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } else { var result = confirm("사용자정보를 수정하시겠습니까?"); if( result == true) { var sinist = 800; var toppo = 600; popWindow = window.open('', 'info', 'menubar=no, scrollbars=no,toolbar=no,resizable=no, left='+sinist+',top='+toppo+', width=500,height=395'); document.form1.dn.value = dn; document.form1.action = "https://www.epki.go.kr/pop.user.info.do"; document.form1.target = "info"; document.form1.submit(); return; } else { return; } } } // //작성자 : AB NA //정보수정에 대한 전자서명 테스트 // function SignData2(form) { var dn; var dept; var phone; var cellphone; var email; var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } dn = document.AxKCASE.SelectCert(); // dn 값 가져오기 //alert( dn ); if ((dn == null) || (dn == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return false; } dept = document.update.dept.value; phone = document.update.phone.value; cellphone = document.update.cellphone.value; email = document.update.email.value; srcdata = dept + "$" + phone + "$" + cellphone + "$" + email + "$"; //소스데이터 만들기 //alert(srcdata); signeddata = document.AxKCASE.SignedData(dn, "", srcdata); // (원래dn, 비밀번호[공백시 인증서 창 암호], 전자서명할 값) : 사인데이터 생성 document.update.signedData.value = signeddata; //return true; return dn; } function KeyUpdateCert() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveKeyUpdateCert(); if(ret != 0){ return; } alert("인증서 키갱신을 완료했습니다."); return; } function HoldCert() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.HoldCertificate(); if(ret != 0){ if(ret != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert("인증서 효력정지를 완료했습니다."); return; } function RevokeCert() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveRevokeCert(); if(ret != 0){ return; } alert("인증서 폐지를 완료했습니다."); return; } function SignedData(form) { var signeddata,dn; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } dn = document.AxKCASE.SelectCert(); if ((dn == null) || (dn == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return false; } /*if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; }*/ signeddata = document.AxKCASE.SignedData(dn, "", dn); //signeddata = document.AxKCASE.SignedData(dn, "", dn); if((signeddata == null) || (signeddata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = signeddata; form.dn.value=dn; return; } function VerifySignedData(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } // srcdata = document.AxKCASE.VerifySignedData(form.signed_data.value, "", 1); srcdata = document.AxKCASE.VerifySignedData(form.signed_data.value, "", 0); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function EnvelopedData(form) { var envdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } // envdata = document.AxKCASE.EnvelopedData(form.rec_dn.value, form.src.value, 1); envdata = document.AxKCASE.EnvelopedData(form.rec_dn.value, form.src.value, 0); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = envdata; return; } function DecryptEnvelopedData(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")) { alert("result data 입력이 없습니다."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } srcdata = document.AxKCASE.DecryptEnvelopedData(form.user_dn.value, "", form.signed_data.value); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function SignedAndEnvelopedData(form) { var signandenvdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("recipient dn 을 입력하십시오."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } signandenvdata = document.AxKCASE.SignedAndEnvelopedData(form.user_dn.value, "", form.rec_dn.value, form.src.value, 1); if((signandenvdata == null) || (signandenvdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = signandenvdata; return; } function VerifySignedAndEnvelopedData(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } srcdata = document.AxKCASE.VerifySignedAndEnvelopedData(form.rec_dn.value, "", form.signed_data.value, 1); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function EncryptedDigest(form) { var encdigetdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } alert(form.user_dn.value); encdigetdata = document.AxKCASE.EncryptedDigest(form.user_dn.value, "", form.src.value); if((encdigetdata == null) || (encdigetdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = encdigetdata; return; } function VerifyEncryptedDigest(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } ret = document.AxKCASE.VerifyEncryptedDigest(form.user_dn.value, form.src.value, form.signed_data.value, 0); if(ret != 0){ if(ret != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert("단순 메세지 전자서명 검증에 성공했습니다."); return; } function GenSymmKey(form) { var key; key = document.AxKCASE.GenSymmetricKey("SEED"); if((key == null) || (key == "")){ if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } // 대칭키는 비대칭 암호화 enckey = document.AxKCASE.AsymmEncryptEncoded(form.rec_dn.value, key); if((enckey == null) || (enckey == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.symm_enckey.value = enckey; } function SymmEncrypt(form) { var key, enckey, envdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("recipient dn 을 입력하십시오."); return; } key = document.AxKCASE.GenSymmetricKey("SEED"); if((key == null) || (key == "")){ if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(key); // 대칭키는 비대칭 암호화 enckey = document.AxKCASE.AsymmEncrypt(form.rec_dn.value, key); if((enckey == null) || (enckey == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.symm_enckey.value = enckey; alert(enckey); // 메세지 대칭키 암호화 envdata = document.AxKCASE.SymmEncrypt("SEED", "", form.src.value); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = envdata; return; } function SymmDecrypt(form) { var deckey, orgdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("dn 을 입력하십시오."); return; } // 대칭키를 비대칭 복호화 deckey = document.AxKCASE.AsymmDecrypt(form.rec_dn.value, "8888888888888888", form.symm_enckey.value); if((deckey == null) || (deckey == "")){ if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } // 암호문은 대칭키 복호화 orgdata = document.AxKCASE.SymmDecrypt("SEED", deckey, form.signed_data.value); if((orgdata == null) || (orgdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(orgdata); return; } function TestSymmEncrypt(form) { var iv, key, enckey, envdata; var aa; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.Select_SymmAlg.value == null) || (form.Select_SymmAlg.value == "")){ alert("대칭키 알고리즘을 먼저 선택하세요."); return; } // 키 생성 iv = "0123456789012345"; key = document.AxKCASE.BASE64Encode("0123456789012345"+iv); alert("Password : " + key); form.symm_enckey.value = key; // 메세지 대칭키 암호화 //envdata = document.AxKCASE.SymmEncrypt("SEED", key, form.src.value); envdata = document.AxKCASE.SymmEncryptEncoded(form.Select_SymmAlg.value, key, form.src.value); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = envdata; return; } function TestSymmDecrypt(form) { var iv, key, deckey, orgdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } if((form.Select_SymmAlg.value == null) || (form.Select_SymmAlg.value == "")){ alert("대칭키 알고리즘을 먼저 선택하세요."); return; } // iv = "0123456789012345"; // key = document.AxKCASE.BASE64Encode("0123456789012345"+iv); //alert("Password : " +key); // 암호문은 대칭키 복호화 //orgdata = document.AxKCASE.SymmDecrypt("NEAT", form.symm_enckey.value, form.signed_data.value); //orgdata = document.AxKCASE.SymmDecrypt("SEED", form.symm_enckey.value, form.signed_data.value); orgdata = document.AxKCASE.SymmDecryptEncoded(form.Select_SymmAlg.value, form.enc_passwd.value, form.signed_data.value); if((orgdata == null) || (orgdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(orgdata); return; } function AsymmEncrypt(form) { var envdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } //if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ // alert("recipient dn 을 입력하십시오."); // return; //} dn = document.AxKCASE.SelectCert(); if ((dn == null) || (dn == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return false; } envdata = document.AxKCASE.AsymmEncrypt(dn, form.src.value); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.rec_dn.value = dn; form.signed_data.value = envdata; return; } function TestAsymmEncrypt(form) { var envdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("recipient dn 을 입력하십시오."); return; } envdata = document.AxKCASE.AsymmEncrpytEncoded(form.rec_dn.value, form.src.value); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = envdata; return; } function AsymmDecrypt(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } srcdata = document.AxKCASE.AsymmDecrypt(form.rec_dn.value, "", form.signed_data.value); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function TestAsymmDecrypt(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } srcdata = document.AxKCASE.AsymmDecryptEncoded("", "", form.signed_data.value); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function MsgDigest(form) { var digestdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("recipient dn 을 입력하십시오."); return; } digestdata = document.AxKCASE.MsgDigest("SHA1", form.src.value); if((digestdata == null) || (digestdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = digestdata; return; } function VerifyMsgDigest(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } ret = document.AxKCASE.VerifyMsgDigest("SHA1", form.signed_data.value, form.src.value); if( ret != 0 ) { errmsg = document.AxKCASE.GetErrorContent(); alert("VerifyMsgDigest error: "+errmsg ); return; } alert("해쉬값 검증에 성공하였습니다."); return; } function GetRFromKey() { var RandomData; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } RandomData = document.AxKCASE.GetRFromKey("", ""); if( RandomData == null || RandomData == "" ) { errmsg = document.AxKCASE.GetErrorContent(); alert("GetRFromKey error: "+errmsg ); return; } alert("GetRFromKey : "+RandomData); document.test.user_rvalue.value = RandomData; return; } function Make_hVID() { var hVID; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } hVID = document.AxKCASE.Make_hVID("", "", ""); if( hVID == null || hVID == "" ) { errmsg = document.AxKCASE.GetErrorContent(); alert("Make_hVID error: "+errmsg ); return; } alert("Make_hVID : "+hVID); document.AxKCASE.value = hVID; document.test.Make_hVID_TEXT.value = hVID; return; } function ValidCert_VID() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } /* if (document.test.user_rvalue.value == null || document.test.user_rvalue.value == "") { alert("사용자 R 값이 없습니다.\n먼저 GetRFromKey 을 실행하세요"); return; } */ //ret = document.AxKCASE.ValidCert_VID("", document.test.user_rvalue.value, ""); ret = document.AxKCASE.ValidCert_VID("", "", ""); if( ret != 0 ) { errmsg = document.AxKCASE.GetErrorContent(); alert("ValidCert_VID error: "+errmsg ); return; } alert("ValidCert_VID : 인증서의 신원확인 검증에 성공하였습니다."); return; } function ValidCert_hVID() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if (!document.test.Make_hVID_TEXT.value) { alert("ValidCert_hVID : Make_hVID를 먼저 실행하십시요"); return; } ret = document.AxKCASE.ValidCert_hVID("", document.test.Make_hVID_TEXT.value); if( ret != 0 ) { errmsg = document.AxKCASE.GetErrorContent(); alert("ValidCert_hVID error: "+errmsg ); return; } alert("ValidCert_hVID : 인증서의 신원확인 검증에 성공하였습니다."); return; } function GetCertInfo() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.GetCertInfo(""); if((ret == null) || (ret == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(ret); return; } function GenHMACsha1(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } ////////////////////////////////////////////////////////////////////////////////// // GenHMACsha1(BSTR SrcData, BSTR *retval) // HMAC-sha1 생성 // 입력인자 : // 1. BSTR SrcData : HMAC값을 생성할 원본 문자열 // 2. BSTR SrcKey : HMAC값을 생성할 Key // 출력인자 : // BSTR *retval : Base64로 인코딩된 HMAC값 ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.GenHMACsha1(form.src.value, "KSIGNHMAC"); if((ret == null) || (ret == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = ret; return; } function VerifyHMACsha1(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } ////////////////////////////////////////////////////////////////////////////////// // VerifyHMACsha1(BSTR SrcData, BSTR HMACData, int *retval) // HMAC-sha1 검증 // 입력인자 : // 1. BSTR SrcData : HMAC값을 검증할 원본 문자열 // 2. BSTR SrcKey : HMAC값을 검증할 Key // 3. BSTR HMACData : 검증할 HMAC값 // 출력인자 : // int *retval : 검증 결과 ( ret == 0 : 검증성공 ) ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.VerifyHMACsha1(form.src.value, "KSIGNHMAC", form.signed_data.value); if( ret != 0 ) { errmsg = document.AxKCASE.GetErrorContent(); alert("HMAC 검증 에러: "+errmsg ); return; } alert("HMAC 검증에 성공하였습니다."); return; } function SignedDataFile(form) { var signeddata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } ////////////////////////////////////////////////////////////////////////////////////////////////////// // SignedDataFile(BSTR strUserDN, BSTR strPasswd, BSTR strSrcFile, BSTR strSaveFile, BSTR *retval) // Filed의 내용을 읽어 SignedData 생성 // 입력인자 : // 1. BSTR strUserDN : 서명할 사용자 인증서의 DN // 2. BSTR strPasswd : 선택한 인증서의 패스워드 // 3. BSTR strSrcFile : 서명할 파일명 // 4. BSTR strSaveFile : 서명결과를 저장할 파일명("" 로 지정시 리턴값만을 출력) // 출력인자 : // BSTR *retval : 서명결과 ///////////////////////////////////////////////////////////////////////////////////////////////////// signeddata = document.AxKCASE.SignedDataFile(form.user_dn.value, "", "d:\INSTALL.LOG","d:\SignedData.dat"); if((signeddata == null) || (signeddata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = signeddata; return; } function VerifySignedDataFile(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } ////////////////////////////////////////////////////////////////////////////////////////////////////// // VerifySignedDataFile(BSTR strSignedFile, BSTR strSrcSaveFile, int nVflag, BSTR *retval) // Filed의 내용을 읽어 SignedData 생성 // 입력인자 : // 1. BSTR strSignedFile : 검증할 파일명 // 2. BSTR strSrcSaveFile : 검증결과를 저장할 파일명 // 3. int nVflag : 인증서 검증 옵션(1: 검증, 0: 검증하지 않음) // 출력인자 : // BSTR *retval : 서명검증결과 ( 원문 ) ///////////////////////////////////////////////////////////////////////////////////////////////////// srcdata = document.AxKCASE.VerifySignedDataFile("d:\SignedData.dat", "", 0); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function BASE64Encode(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } ////////////////////////////////////////////////////////////////////////////////// // BASE64Encode(BSTR SrcData, BSTR *retval) // HMAC-sha1 생성 // 입력인자 : // 1. BSTR SrcData : BASE64 Encode 처리할 원본 문자열 // 출력인자 : // BSTR *retval : Base64로 인코딩된값 ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.BASE64Encode(form.src.value); if((ret == null) || (ret == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = ret; return; } function BASE64Decode(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } ////////////////////////////////////////////////////////////////////////////////// // BASE64Encode(BSTR SrcData, BSTR *retval) // HMAC-sha1 생성 // 입력인자 : // 1. BSTR SrcData : BASE64 Encode 처리할 원본 문자열 // 출력인자 : // BSTR *retval : Base64로 인코딩된값 ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.BASE64Decode(form.signed_data.value); if((ret == null) || (ret == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(ret); return; } function ReadDataFile(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } // if((form.src.value == null) || (form.src.value == "")){ // alert("파일의 경로 입력이 없습니다."); // return; // } ////////////////////////////////////////////////////////////////////////////////// // ReadDataFile(BSTR FilePath, BSTR *retval) // HMAC-sha1 생성 // 입력인자 : // 1. BSTR FilePath : 읽을 파일의 경로 // 출력인자 : // BSTR *retval : 파일의 내용 ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.ReadDataFile("c:\\pki\\temp\\dn.txt"); if((ret == null) || (ret == "")) { alert("파일을 읽는데 실패하였습니다"); } form.signed_data.value=ret; return; } function WriteDataFile() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } // if((form.src.value == null) || (form.src.value == "")){ // alert("데이터 입력이 없습니다."); // return; // } // if((form.signed_data.value == null) || (form.signed_data.value == "")){ // alert("입력할 내용이 없습니다."); // return; // } sessionkey = "1234"; //test ////////////////////////////////////////////////////////////////////////////////// // WriteDataFile(BSTR FilePath, BSTR Data, int *retval) // HMAC-sha1 생성 // 입력인자 : // 1. BSTR FilePath : 쓸 파일의 경로 // 2. BSTR Data : 쓸 내용 // 출력인자 : // int *retval : 결과 ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.WriteDataFile("c:\\pki\\session_id.txt", sessionkey); if( ret != 0 ) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert("파일 쓰기를 성공 하였습니다"); return; } function DeleteDataFile() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.DeleteDataFile("c:\\pki\\temp\\dn.txt"); if( ret != 0 ) { alert("파일 삭제 에러"); return; } alert("파일을 삭제 하였습니다"); return; } function GetUserPassword(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret=document.AxKCASE.GetUserPassword(); if((ret == null) || (ret == "")) { alert("에러"); return; } alert(ret); return; } function AsymmEncryptforServer(form) { var envdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("recipient cert 을 입력하십시오."); return; } envdata = document.AxKCASE.AsymmEncryptforServer(form.src.value, form.signed_data.value); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } document.AxKCASE.WriteDataFile("C:\\test\\encdata.txt",envdata); return; } function FileEncryption(form) { var evlData; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value =="")) { alert("!!!!"); } evlData = document.AxKCASE.EnvelopedDataForFile(form.rec_dn.value,form.input_File.value,form.output_File.value,0); if((evlData == null) || (evlData == "")) { if(document.AxKCASE.GetErrorCode() !=-1) alert(document.AxKCASE.GetErrorContent()); return; } //alert(form.output_File.value+".enc 로 암호화 되었습니다."); alert(evlData+"로 암호화 되었습니다."); return; } function FileDecryption(form) { var decData; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.user_dn.value == null) || (form.user_dn.value =="")) { if(!SelectCert(form)) return; } decData = document.AxKCASE.DecryptEnvelopedDataForFile(form.user_dn.value,"",form.input_File.value,form.output_File.value); if((decData == null) || (decData == "")) { if(document.AxKCASE.GetErrorCode() !=-1) alert(document.AxKCASE.GetErrorContent()); return; } // 암호화 파일 삭제 (OPTION) document.AxKCASE.DeleteDataFile(form.input_File.value); alert(decData+"파일로 복호화 되었습니다."); return; } function SignedDataFile(form) { var signeddata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } ////////////////////////////////////////////////////////////////////////////////////////////////////// // SignedDataFile(BSTR strUserDN, BSTR strPasswd, BSTR strSrcFile, BSTR strSaveFile, BSTR *retval) // Filed의 내용을 읽어 SignedData 생성 // 입력인자 : // 1. BSTR strUserDN : 서명할 사용자 인증서의 DN // 2. BSTR strPasswd : 선택한 인증서의 패스워드 // 3. BSTR strSrcFile : 서명할 파일명 // 4. BSTR strSaveFile : 서명결과를 저장할 파일명("" 로 지정시 리턴값만을 출력) // 출력인자 : // BSTR *retval : 서명결과 ///////////////////////////////////////////////////////////////////////////////////////////////////// // signeddata = document.AxKCASE.SignedDataForFile(form.user_dn.value, "", "c:\\INSTALL.LOG","c:\\SignedData.dat"); signeddata = document.AxKCASE.SignedDataForFile(form.user_dn.value, "", form.input_File.value,form.output_File.value); if((signeddata == null) || (signeddata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = signeddata; alert(form.output_File.value+"로 전자서명 되었습니다."); return; } function VerifySignedDataFile(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } ////////////////////////////////////////////////////////////////////////////////////////////////////// // VerifySignedDataFile(BSTR strSignedFile, BSTR strSrcSaveFile, int nVflag, BSTR *retval) // Filed의 내용을 읽어 SignedData 생성 // 입력인자 : // 1. BSTR strSignedFile : 검증할 파일명 // 2. BSTR strSrcSaveFile : 검증결과를 저장할 파일명 // 3. int nVflag : 인증서 검증 옵션(1: 검증, 0: 검증하지 않음) // 출력인자 : // BSTR *retval : 서명검증결과 ( 원문 ) ///////////////////////////////////////////////////////////////////////////////////////////////////// // srcdata = document.AxKCASE.VerifySignedDataForFile("d:\SignedData.dat", "", 0); /* dykim 20060601 VerifySignedDataFile 시 전자서명될 지정된 파일 선택 */ srcdata = document.AxKCASE.VerifySignedDataForFile(form.signed_data.value,form.output_File.value, 0); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function SignAndEnvelopedDataForFile(form) { var signandenvdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("recipient dn 을 입력하십시오."); return; } if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } signandenvdata = document.AxKCASE.SignedAndEnvelopedDataForFile(form.user_dn.value, "", form.rec_dn.value, form.SignAndEnveloForFile_input.value,form.VerifySignAndEnvelopFile_output.value, 1); if((signandenvdata == null) || (signandenvdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = signandenvdata; alert(form.VerifySignAndEnvelopFile_output.value+"로 저장되었습니다."); return; } function VerifySignAndEnvelopedDataForFile(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } /* if((form.VerifySignAndEnvelopFile_output.value == null) || (form.VerifySignAndEnvelopFile_output.value == "")){ alert("검증할 파일명을 입력하세요."); return; } */ if ((form.user_dn.value == null) || (form.user_dn.value == "")) { if(!SelectCert(form)) return; } srcdata = document.AxKCASE.VerifySignAndEnvelopedDataForFile(form.user_dn.value, "", form.SignAndEnveloForFile_input.value,form.VerifySignAndEnvelopFile_output.value, 1); if((srcdata == null) || (srcdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(srcdata); return; } function EnvelopedData_GSymmKey(form) { var key, enckey, envdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } if((form.rec_dn.value == null) || (form.rec_dn.value == "")){ alert("recipient dn 을 입력하십시오."); return; } // 키 생성 key = document.AxKCASE.GenSymmetricKey("SEED"); if((key == null) || (key == "")){ if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } //document.AxKCASE.WriteDataFile("C:\\pki\\temp\\sess_id.txt",key); alert("생성된 키 : " + key); // 대칭키는 비대칭 암호화 enckey = document.AxKCASE.AsymmEncrypt(form.rec_dn.value, key); if((enckey == null) || (enckey == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(enckey); // 메세지 암호화 envdata = document.AxKCASE.EnvelopedData(form.rec_dn.value, form.src.value, 0); if((envdata == null) || (envdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.symm_enckey.value = enckey; form.out_data.value = envdata; alert(form.out_data.value); form.submit(); } function SymmDecrypt_ReadKey(form) { var iv, key, deckey, orgdata, rc; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.signed_data.value == null) || (form.signed_data.value == "")){ alert("result data 입력이 없습니다."); return; } deckey= document.AxKCASE.ReadDataFile("C:\\pki\\temp\\sess_id.txt"); iv = document.AxKCASE.BASE64Encode("0123456789012345"); //Base64key =document.AxKCASE.GetContextKey(); key = document.AxKCASE.MergeTwoBASE64Value(deckey,iv); /*암호문 대칭키 복호화 */ orgdata = document.AxKCASE.SymmDecrypt("SEED", key, form.signed_data.value); if((orgdata == null) || (orgdata == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert(orgdata); rc=document.AxKCASE.DeleteDataFile("C:\\pki\\temp\\sess_id.txt"); if(rc!=0){ alert("파일 쓰기 에러"); } return; } function Readfile(form) { var srcdata; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("Input file name 입력이 없습니다."); return; } document.AxKCASE.ReFile(form.src.value, form.signed_data.value); return; } function Request_WebAdmin(form) { var ret, errmsg; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ////////////////////////////////////////////////////////////////////////////////// // Request_WebAdmin(/*[in]*/BSTR bServerIP, /*[in]*/int nServerPort, // // /*[in]*/BSTR bOPCode, /*[in]*/BSTR bSendData, // // /*[out, retval]*/int *retval // // Web Admin Socket 통신 // // 입력인자 : // // 1. BSTR bServerIP : 서버의 IP // // 2. int nServerPort : 접속할 서버의 port // // 3. BSTR bOPCode : 명령어 코드 // // 4. BSTR bSendData : 보낼 데이터 // // 출력인자 : // // int *retval : 처리 결과 ( ret == 0 : 검증성공 ) // ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.Request_WebAdmin("192.168.10.17", 9502, "0xde", " "); if( ret != 0 ) { alert("Web Admin Socket 통신 에러: "+ document.AxKCASE.GetAdminNOKMessage()); return; } alert("Web Admin Socket 통신을 성공하였습니다."); return; } function CGITransmitData(form) { var ret, errmsg; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ////////////////////////////////////////////////////////////////////////////////// // Request_WebAdmin(/*[in]*/BSTR bServerIP, /*[in]*/int nServerPort, // // /*[in]*/BSTR bOPCode, /*[in]*/BSTR bSendData, // // /*[out, retval]*/int *retval // // Web Admin Socket 통신 // // 입력인자 : // // 1. BSTR bServerIP : 서버의 IP // // 2. int nServerPort : 접속할 서버의 port // // 3. BSTR bOPCode : 명령어 코드 // // 4. BSTR bSendData : 보낼 데이터 // // 출력인자 : // // int *retval : 처리 결과 ( ret == 0 : 검증성공 ) // ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.ActiveCGITransmitData("", "", "", ""); if(ret != 0){ return; } alert("인증서 발급을 완료했습니다."); return; } function SetOCSPValid(form) { var flag, ret; ret = document.AxKCASE.OCSPVaildCert(0); if((ret !=0)) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } alert("인증서 검증에 성공 하였습니다"); return; } function ChangeSSLToPFX() { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.ActiveChangeSSLToPFX(); if(ret != 0){ return; } alert("인증서 변환을 완료했습니다."); return; } function BASE64EncodeForFile(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } if((form.src.value == null) || (form.src.value == "")){ alert("source data 를 입력하십시오."); return; } ////////////////////////////////////////////////////////////////////////////////// // BASE64Encode(BSTR SrcData, BSTR *retval) // HMAC-sha1 생성 // 입력인자 : // 1. BSTR SrcData : BASE64 Encode 처리할 원본 문자열 // 출력인자 : // BSTR *retval : Base64로 인코딩된값 ////////////////////////////////////////////////////////////////////////////////// ret = document.AxKCASE.BASE64EncodeForFile(form.path.value); if((ret == null) || (ret == "")) { if(document.AxKCASE.GetErrorCode() != -1) alert(document.AxKCASE.GetErrorContent()); return; } form.signed_data.value = ret; return; } function GetFilePath(form) { var ret; if(!CheckAX()) { alert("클라이언트 프로그램이 설치되지 않아 수행할 수 없습니다."); return; } ret = document.AxKCASE.GetFilePath(); if((ret == null) || (ret == "")) { return; } form.path.value = ret; return; }