﻿function controlchk() {
	try 
	{
		var xObj = new ActiveXObject("AxCrossCert.AxCrossCert");
		if (xObj)
			Installed = 0;
		else
			Installed = -1;
	} catch(ex) {
		Installed = -1;
	}

	if (Installed == -1) {
		window.open('/cert/activexChk.jsp', 'activexchk', 580, 450, 1, 1);
		return -1;
	} else {
		return 0;
	}
}
function ccInit() {
    if (controlchk() == -1) return false;

    var Ret;
    var policies = "";

    // 법인상호연동용(범용)
    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.3.1.1"    + "|";          // 한국전산원                 기관(국가기관 및 비영리기관)
    policies +="1.2.410.200004.5.3.1.2"    + "|";          // 한국전산원                 법인(국가기관 및 비영리기관을  제외한 공공기관, 법인)
    policies +="1.2.410.200004.5.4.1.2"    + "|";          // 한국전자인증               법인, 단체, 개인사업자
    policies +="1.2.410.200012.1.1.3"      + "|";          // 한국무역정보통신           법인

    policies +="1.2.410.200004.5.4.2.62"   + "|";          // 특정용 OID

    // 한국건설자원협회 특정용 인증서(OID)
    policies +="1.2.410.200005.1.1.2"      + "|";          // 한국전자인증                 한국건설자원협회 특정용 인증서
	policies +="1.2.410.200004.5.4.1.3"      + "|";		// 서버인증서 OID	20100309 임시추가

    Ret =  document.CC_Object_id.SetCommonInfoFromVal("211.192.169.70",4502,
                                                      "211.192.169.180",389,
                                                      "211.192.169.180",389,
                                                      "CN=ROOT-RSA-CRL,OU=ROOTCA,O=KISA,C=KR",
                                                      "no",
                                                      policies);
    if (Ret != 0) {
        alert("인증 초기 설정에 실패하였습니다.\t\r");
        return false;
    } else {
        Ret =  document.CC_Object_id.SetPKCSInform(1, 0, 0, 0, 0, 0, 0, 1, "SEED");
        if (Ret != 0) {
            alert("인증 초기 설정에 실패하였습니다.\t\r");
            return false;
        } else {

		Ret = document.CC_Object_id.SetUBIKeyInfo("1,1,1,0", 
		"KORAS|http://www.koras.org/infovine/download.html", "CROSSCERT|NULL", 
		"http://www.koras.org/infovine/download.html");

            return true;
        }
    }
}
function Repalce_cert(str_cert) {
    var parse_cert = "";
    if (str_cert == "")
        return str;
    else {
        parse_cert = str_cert.replace(/\n/g, "");
        parse_cert = parse_cert.replace(/-----BEGIN CERTIFICATE-----/g, "");
        parse_cert = parse_cert.replace(/-----END CERTIFICATE-----/g, "");
    }
    return parse_cert;
}
function usercertInfo(ssn) {
    if (!ccInit()) return false;

    var ret;
    var signeddata;
    var userdn;
    var getR;
    var returnValue = new Array();

    // 인증서 선택창 초기화 및 선택된 인증서의 DN 추출
    // DN은 인증기관에서 유니크한 것임.
    userdn = document.CC_Object_id.GetUserDN();

    if (userdn == null || userdn == "") {
        alert("사용자 인증서 선택이 취소 되었습니다.\t\r");
        return false;
    } else {
        UserCert = document.CC_Object_id.CC_get_cert_local(userdn);
        if (UserCert == "") {
            alert("인증서 추출 실패\t\r");
            return false;
        } else {
            UserCert = Repalce_cert(UserCert);
        }

        getR = CC_Object_id.GetRFromKey(userdn, "");
        if (getR == "") {
            alert("사업자번호를 확인할 수 없는 인증서입니다.\t\r");
            return false;
        }

        if (ssn != undefined) {
            ret = CC_Object_id.ValidCert_VID(userdn, getR, ssn);
            if (ret != "0") {
                alert("본인확인에 실패했습니다. 선택한 인증서의 사업자번호와 일치하지 않습니다.\n\n해당 인증기관에 문의하시기 바랍니다.\t\r");
                return false;
            } else {
                //alert("본인확인 성공!@@");
            }
        }

        returnValue['usercert'] = UserCert;
        returnValue['getr'] = getR;
        returnValue['dn'] = userdn;

        return returnValue;
    }
}

