////////////////////////////////////////////////////////////////////////////////////
//
// KSignCASE-Web v2.0 javascript function definition.
//
////////////////////////////////////////////////////////////////////////////////////

function CheckAX()
{
	var Installed = false;
	// AxKSignCASE ÇÁ·ÎÁ§Æ® ÀÏ¶§
	var KSIGNActiveXProgID = "AxKSignNTCA.AxKSignNTCA.1"
	
	try
	{
		var xObj = new ActiveXObject(KSIGNActiveXProgID);
	
		if(xObj){
			Installed = true;
		}
		else
		{
			Installed = false;
		}
	}
	catch(ex)
	{
		Installed = false;
	}
	
	return Installed;
} 

function InitConfig()
{
	var ret;

	//////////////////////////////////////////////////////////////////////////////////
	// È¯°æ¼³Á¤½Ã º¯°æÇÏÁö ¾Ê´Â È¯°æ º¯¼öÀÇ °æ¿ì BSTR ÇüÀº ""À» intÇüÀº -1À» ÀÔ·ÂÇÑ´Ù.
	//////////////////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////////////////
	// SetAppCommon(BSTR PkiType, int nNtCa, int nActiveDs, int *retval)
	// [APP_COMMON]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. BSTR PkiType : CAÀÇ Á¾·ù¸¦ 	
	//	#define AXKCASE_COMMON_PKITYPE_NPKI		("NPKI")
	//	#define AXKCASE_COMMON_PKITYPE_GPKI		("GPKI")
	//	#define AXKCASE_COMMON_PKITYPE_PPKI		("PPKI")
	// 2. int nNtCa : CAÀÇ Á¾·ù°¡ NtÀÎÁö ¾Æ´ÑÁö (1/0)				
	// 3. int nActiveDs : DS°¡ Active µð·ºÅä¸®ÀÎÁö ¾Æ´ÑÁö (1/0)	
	//////////////////////////////////////////////////////////////////////////////////

	ret = document.AxKCASE.SetAppCommon("GPKI", 0, 0);
	if( ret != 0 ) {
		errmsg = document.AxKCASE.GetErrorContent();
		alert("SetAppCommon error: "+errmsg );
		return;
	}
                   
	//////////////////////////////////////////////////////////////////////////////////
	// SetCMPInform(BSTR CaIp, int nCmpPort, BSTR CmpKmCertDn, BSTR CmpDsIp,
	//					int nDsPort, int nWtlsCert, int nCmpCaVer, int *retval)
	// [CMP_INFORM]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. BSTR CaIp : CA ¼­¹öÀÇ IP ÁÖ¼Ò 
	// 2. int nCmpPort : CA ¼­¹öÀÇ cmp Æ÷Æ®
	// 3. BSTR CmpKmCertDn : VID¸¦ À§ÇÑ ¾ÏÈ£Å°ºÐ¹è ÀÎÁõ¼­ DN
	// 4. BSTR CmpDsIp : DS ¼­¹ö IP ÁÖ¼Ò 
	// 5. int nDsPort : DS ¼­¹ö Æ÷Æ® 
	// 6. int nWtlsCert : ÀÎÁõ¼­°¡ Wtls¿ëÀÎÁö ¾Æ´ÑÁö (1/0)
	// 7. int nCmpCaVer : CA ¼­¹ö ¹öÀü 
	//////////////////////////////////////////////////////////////////////////////////

	ret = document.AxKCASE.SetCMPInform("211.180.234.205", 4502, "", "10.10.10.106", 389, 0, 2);
	if( ret != 0 ) {
		errmsg = document.AxKCASE.GetErrorContent();
		alert("SetCMPInform error: "+errmsg );
		return;
	}

	//////////////////////////////////////////////////////////////////////////////////
	// SetPKCSInform(int nSign_ContentInc,	int nSign_CertPathInc, int nSign_CvOp,
	//				 int nSign_EncOaep, int nSign_SaveCert,	int nEnc_SignCertOp,
	//               int nEnc_LocalKmCert,  int nEnc_SaveCert, char *pszEncAlgo) 
	// [PKCS_INFORM]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. int nSign_ContentInc : ÀüÀÚ¼­¸í½Ã ¿ø¹® Æ÷ÇÔ/¹ÌÆ÷ÇÔ (1/0)
	// 2. int nSign_CertPathInc : ÀüÀÚ¼­¸í½Ã ÀÎÁõ¼­ Chain Æ÷ÇÔ/¹ÌÆ÷ÇÔ (1/0)
	// 3. int nSign_CvOp : ÀüÀÚ¼­¸í½Ã ¼­¸í¿ë ÀÎÁõ¼­ °ËÁõ ¿É¼Ç (1/0)
	// 4. int nSign_EncOaep : RSA OAEP »ç¿ë ¼±ÅÃ ¿É¼Ç (1/0)	
	// 5. int nSign_SaveCert : ÀüÀÚ¼­¸í °ËÁõ½Ã ÀÎÁõ¼­ ÀúÀå ¿É¼Ç (1/0)	
	// 6. int nEnc_SignCertOp : ¾ÏÈ£È­½Ã ¼­¸í¿ë ÀÎÁõ¼­ »ç¿ë ¿É¼Ç (1/0)
	// 7. int nEnc_LocalKmCert : ¾ÏÈ£È­½Ã ÀÎÁõ¼­ ÂüÁ¶ ·ÎÄÃ ¿ì¼±¼øÀ§ (1/0)
	// 8. int nEnc_SaveCert : ¾ÏÈ£È­½Ã ÀÎÁõ¼­ ÀúÀå ¿É¼Ç (1/0)	
	// 9. char* pszEncAlgo : ¾ÏÈ£È­½Ã »ç¿ëÇÒ ±âº» ¾Ë°í¸®Áò  (SEED, DES, 3DES, RC2)
	//////////////////////////////////////////////////////////////////////////////////

	ret = document.AxKCASE.SetPKCSInform(1, 0, 0, 0, 0, 1, 1, 1, "SEED");
	if( ret != 0 ) {
		errmsg = document.AxKCASE.GetErrorContent();
		alert("SetPKCSInform error: "+errmsg );
		return;
	}

	//////////////////////////////////////////////////////////////////////////////////
	// SetCVInform(int nAnyPolicy, BSTR ArlDn, BSTR Policies, int nPathValOp,
	// BSTR ValMethod, BSTR Crl_ChkOp, int nCrl_SaveOp, int *retval)
	// [CV_INFORM]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. int nAnyPolicy : ¸ðµçÁ¤Ã¥ Çã¿ë ¿É¼Ç (1/0)	
	// 2. BSTR ArlDn : CA ÀÎÁõ¼­ÀÇ ARL ºÐ±âÁ¡ÀÌ ¾øÀ» °æ¿ì ARLDN °ª ¼³Á¤
	// 3. BSTR Policies : ÃÊ±â Á¤Ã¥ ÁýÇÕ
	// 4. int nPathValOp : ÀÎÁõ °æ·Î °ËÁõ ¿É¼Ç (1/0)	
	// 5. BSTR ValMethod : CRL/OCSP °ËÁõ ¿É¼Ç (CRLCHECK_OCSP, CRLCHECK_CRL)	
	// 6. BSTR Crl_ChkOp : CRL °ËÁõ ¿É¼Ç 
	//                          (CRL_CHECK_FULL, CRL_CHECK_USERONLY, CRL_CHECK_NONE)
	// 7. int nCrl_SaveOp : CRL ÀúÀå ¿É¼Ç (1/0)
	//////////////////////////////////////////////////////////////////////////////////

	ret = document.AxKCASE.SetCVInform(1, "", "1.2.3.4.5|2.5.29.32.0|1.2.392.200132|1.2.392.200132.1|1.2.392.200132.1.1|1.2.392.200132.1.1.1|1.2.410.200004.2.1|1.2.410.200004.5.1.1.5|1.2.410.200004.5.1.1.7|1.2.410.200004.5.2.1.1|1.2.410.200004.5.2.1.2|1.2.410.200004.5.3.1.1|1.2.410.200004.5.3.1.2|1.2.410.200004.5.3.1.4|1.2.410.200004.5.4.1.1|1.2.410.200004.5.4.1.2|1.2.410.200004.5.4.1.3|1.2.410.200004.5.4.1.4|1.2.410.200004.5.4.1.5|1.2.410.200004.5.4.1.7|1.2.410.200005.1.1.1|1.2.410.200005.1.1.5|1.2.410.200012.1.1.1|1.2.410.200012.1.1.3|1.2.410.100001.2.2.1",
	1, "CRLCHECK_CRL", "CRL_CHECK_FULL", 0);
	if( ret != 0 ) {
		errmsg = document.AxKCASE.GetErrorContent();
		alert("SetCVInform error: "+errmsg );
		return;
	}

	//////////////////////////////////////////////////////////////////////////////////
	// SetOPPInform(BSTR RaAdmin_Path, int AdminPort, int *retval)	
	// [OPP_INFORM]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. BSTR RaAdmin_Path : RA ÀÎÁõ¼­ ÀúÀå À§Ä¡
	//        "%ProgramFiles%\\NPKI\pki\\RA" "%FloppyDrive%\\NPKI\\pki\\RA" 
	// 2. int AdminPort : CAÀÇ Admin Æ÷Æ®
	//////////////////////////////////////////////////////////////////////////////////

	ret = document.AxKCASE.SetOPPInform("", 8502);
	if( ret != 0 ) {
		errmsg = document.AxKCASE.GetErrorContent();
		alert("SetOPPInform error: "+errmsg );
		return;
	}

	//////////////////////////////////////////////////////////////////////////////////
	// SetCMInform(BSTR PriKey_EncAlg, int *retval)	
	// [CM_INFORM]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. BSTR PriKey_EncAlg : °³ÀÎÅ° ¾ÏÈ£È­ ¾Ë°í¸®Áò	
	//	  "KCP_PBEWithMD2DES_CBC" "PBE_ENCALGO_MD5DES" 	
	//	  "PBE_ENCALGO_SHA1SEED" "PBE2_ENCALGO_SHA1SEED"
	//	  "PBE2_ENCALGO_SHA1DESEDE" 
	//////////////////////////////////////////////////////////////////////////////////

	ret = document.AxKCASE.SetCMInform("PBE2_ENCALGO_SHA1SEED");
	if( ret != 0 ) {
		errmsg = document.AxKCASE.GetErrorContent();
		alert("SetCMInform error: "+errmsg );
		return;
	}  
	
	//////////////////////////////////////////////////////////////////////////////////
	// SetSubjectInform(  BSTR szSubjectDefaultMedia, 
	//                    int nSubjectPwdPolicyOp, 
	//                    int nSubjectPwdMinLen, 
	//                    int nSubjectPwdRandomLevel, 
	//                    int nSubjectPwdValidTime, 
	//                    int *retval)	
	// [SUBJECT_INFORM]ÀÇ Á¤º¸¸¦ Setting ÇÏ´Â ÇÔ¼ö 
	// 1. BSTR szSubjectDefaultMedia : µðÆúÆ® ÀúÀå ¸ÅÃ¼	
	//	  "HARDDISK", "FLOPPYDISK", "SMARTCARD", "USB" Áß ¼±ÅÃ 	
	// 2. int nSubjectPwdPolicyOp	 : ÆÐ½º¿öµå Á¤Ã¥ ¿É¼Ç (1/0)	
	// 3. int nSubjectPwdMinLen 	 : ÆÐ½º¿öµå ÃÖ¼Ò ±æÀÌ  (8~16)
	// 4. int nSubjectPwdRandomLevel : ÆÐ½º¿öµå ±¸¼º ·¹º§ (0/1/2)	
	// 5. int nSubjectPwdValidDays 	 : ÆÐ½º¿öµå À¯È¿ ±â°£ 
	// 6. int nSubjectPwdAlarmDays 	 : ÆÐ½º¿öµå º¯°æÀÏ ¾Ë¸² °æ°í ¸Þ½ÃÁö Ãâ·ÂÀÏ 
	//////////////////////////////////////////////////////////////////////////////////
	ret = document.AxKCASE.SetSubjectInform("HARDDISK", 0, 8, 1, 30,10);
	if( ret != 0 ) {
		errmsg = document.AxNCASign.GetErrorContent();
		alert("SetSubjectInform error: "+errmsg );
		return;
	}


}

function SetConfig()
{
	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	document.AxKCASE.SetCommonInfo();
	return;
}
function ManageCert()
{
	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	document.AxKCASE.ManagementCert();
	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 IssueCert()
{
	var ret;

	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	ret = document.AxKCASE.IssueCertificate("", "");
	if(ret != 0){
		if(ret != -1)
			alert(document.AxKCASE.GetErrorContent());
		return;
	}

	alert("ÀÎÁõ¼­ ¹ß±ÞÀ» ¿Ï·áÇß½À´Ï´Ù.");
	return;
}

function IssueCertIDN(jumin)
{
	var ret;

	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	ret = document.AxKCASE.COMIssueCertkait(jumin);
	if(ret != 0){
		if(ret != -1)
			alert(document.AxKCASE.GetErrorContent());
		return false;
	}

	alert("ÀÎÁõ¼­ ¹ß±ÞÀ» ¿Ï·áÇß½À´Ï´Ù.");
	return;
}
function UpdateCert()
{
	var ret;

	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	ret = document.AxKCASE.UpdateCertificate();
	if(ret != 0){
		if(ret != -1)
			alert(document.AxKCASE.GetErrorContent());
		return;
	}

	alert("ÀÎÁõ¼­ °»½ÅÀ» ¿Ï·áÇß½À´Ï´Ù.");
	return;
}
function KeyUpdateCert()
{
	var ret;

	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	ret = document.AxKCASE.KeyUpdateCertificate();
	if(ret != 0){
		if(ret != -1)
			alert(document.AxKCASE.GetErrorContent());
		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 false;
	}

	ret = document.AxKCASE.RevokeCertificate();
	if(ret != 0){
		if(ret != -1)
			alert(document.AxKCASE.GetErrorContent());
		return false;
	}

	alert("ÀÎÁõ¼­ ÆóÁö¸¦ ¿Ï·áÇß½À´Ï´Ù.");
	return true;
}
function RevokeCertkait()
{
	var ret;

	if(!CheckAX()) {
		alert("Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê¾Æ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù.");
		return;
	}

	ret = document.AxKCASE.RevokeCertkait();
	if(ret != 0){
		if(ret != -1)
			alert(document.AxKCASE.GetErrorContent());
		return;
	}

	alert("ÀÎÁõ¼­ ÆóÁö¸¦ ¿Ï·áÇß½À´Ï´Ù.");
	return true;
}
