﻿//*************************************************************************************
//	파일명		: sg_cert.js
//	최종 수정일	: 2010년 06월 29일
//	내용		: 인증서 선택창 및 인증서 정보 관련 함수 모음
//*************************************************************************************
function selectCertificate( strCertID )
{
	if ( strCertID == null || strCertID == "" )
	{
		setErrorCode( "NO_USER_ID" );
		setErrorMessage( "" );
		setErrorFunctionName( "selectCertificate()" );
		return false;
	}
	SetSessionID( strCertID );
	
	var bReturn = LoadUserKeyCertDlg( bUseKMCert );
	if ( !bReturn )
	{
		setErrorCode( GetLastErrMsg() );
		setErrorMessage( "" );
		setErrorFunctionName( "selectCertificate()" );
		return false;
	}

	return bReturn;
}

function clearCertificateInfo( strCertID )
{
	if ( strCertID == null || strCertID == "" )
	{
		setErrorCode( "NO_USER_ID" );
		setErrorMessage( "" );
		setErrorFunctionName( "clearCertificateInfo()" );
		return false;
	}
	SetSessionID( strCertID );
	UnloadUserKeyCert();

	return true;
}

function reselectCertificate( strCertID )
{
	clearCertificateInfo( strCertID );
	return selectCertificate( strCertID );
}

function getUserSignCert( strCertID )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getUserSignCert()" );
		return "";
	}
	
	var strCert = GetUserSignCert();
	if ( strCert == "" )
	{
		setErrorFunctionName( "getUserSignCert()" );
		return "";
	}

	return strCert;
}

function getUserKMCert( strCertID )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getUserKMCert()" );
		return "";
	}
	
	var strCert = GetUserKMCert();
	if ( strCert == "" )
	{
		setErrorFunctionName( "getUserKMCert()" );
		return "";
	}

	return strCert;	
}

function getUserKMKey( strCertID )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getUserKMKey()" );
		return "";
	}
	
	var strKey = GetUserKMKey();
	if ( strKey == "" )
	{
		setErrorFunctionName( "getUserKMKey()" );
		return "";
	}

	return strKey;
}

function getUserKMKeyWithNewPassword( strCertID, strNewPassword )	//	Added 2005.08.03
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getUserKMKeyWithNewPassword()" );
		return "";
	}
	
	var strKey = GetUserKMKeyWithNewPassword( strNewPassword );
	if ( strKey == "" )
	{
		setErrorFunctionName( "getUserKMKeyWithNewPassword()" );
		return "";
	}

	return strKey;
}

function isLoadedCertificate(strCertID)//ver 3.1.10.6
{
	if ( strCertID == null || strCertID == "" )
	{
		setErrorCode( "NO_USER_ID" );
		setErrorMessage( "" );
		setErrorFunctionName( "isLoadedCertificate()" );
		return false;
	}
	if(IsLoadedCert(strCertID))
	{
		SetSessionID(strCertID);
		return true;
	}
	else
	{
		return false;
	}
}

function getUserCertKey(type, certString)//ver 3.1.10.7
{
	if(type == null || type == "" || certString == null || certString == "")
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getUserCertKey()" );
		return "";
	}

	var keyString = GetUserCertKey(type, certString);
	if(keyString == "")
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("getUserCertKey()");
		return "";
	}

	return keyString;
}

function getUserPassword( strCertID )	//	Modified 2005.11.04
{
	return "지원되지 않는 기능입니다.";
}

function getCertPath( strCertID )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getCertPath()" );
		return "";
	}
	
	var strCertPath = GetCertPath();
	if ( strCertPath == "" )
	{
		setErrorFunctionName( "getCertPath()" );
		return "";
	}

	return strCertPath;	
}

function getCertSerialNumber( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertSerialNumber()" );
		return "";
	}

	var nSerial = GetCertInfoFromCert( strCert, 2 );
	if ( nSerial == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertSerialNumber()" );
		return "";
	}

	return nSerial;
}

function getCertSubjectDN( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertSubjectDN()" );
		return "";
	}

	var buf = GetSubjectDNFromCert( strCert );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertSubjectDN()" );
		return "";
	}
	
	return buf;
}

function getCertIssuerDN( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertIssuerDN()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 4 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertIssuerDN()" );
		return "";
	}
	
	return buf;
}

function getCertNotBefore( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertNotBefore()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 5 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertNotBefore()" );
		return "";
	}
	
	return buf;
}

function getCertNotAfter( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertNotAfter()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 6 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertNotAfter()" );
		return "";
	}
	
	return buf;
}

function getCertPublicKey( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertPublicKey()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 8 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertPublicKey()" );
		return "";
	}
	
	return buf;
}

function getCertSignatureAlgorithm( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertSignatureAlgorithm()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 3 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertSignatureAlgorithm()" );
		return "";
	}
	
	return buf;
}

function getCertKeyUsage( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertKeyUsage()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 9 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertKeyUsage()" );
		return "";
	}
	
	return buf;
}

function getCertPolicy( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertPolicy()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 10 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertPolicy()" );
		return "";
	}
	
	return buf;
}

function getCertInfo( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertInfo()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 0 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertInfo()" );
		return "";
	}
	
	return buf;
}

function checkCertValidity( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "checkCertValidity()" );
		return false;
	}

	SetCertPolicy( "ANY" );
	var bReturn = ValidateCert( strCert );
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "checkCertValidity()" );
		return false;
	}

	return bReturn;
}

function getRandomNumber( strCertID )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getRandomNumber()" );
		return "";
	}

	var strRandomNumber = GetUserKeyRNumber();
	if ( strRandomNumber == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getRandomNumber()" );
		return "";
	}

	return removeCRLF( strRandomNumber );
}

function getEncryptedRandomNumber( strCertID )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getEncryptedRandomNumber()" );
		return "";
	}

	var strRandomNumber = GetUserKeyRNumber();
	if ( strRandomNumber == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getEncryptedRandomNumber()" );
		return "";
	}

	var strEncryptedRandomNumber = encryptDataString( strCertID, strRandomNumber );
	if ( strEncryptedRandomNumber == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getEncryptedRandomNumber()" );
		return "";
	}

	return removeCRLF( strEncryptedRandomNumber );
}

function checkCertOwner( strCert, strSSN, strRandomNumber )	//	Added 2005.11.04
{
	if ( strCert == null || strCert == "" || strSSN == null || strSSN == "" || strRandomNumber == null || strRandomNumber == ""  )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "checkCertOwner()" );
		return false;
	}

	var bReturn = CheckCertOwner( strCert, strSSN, strRandomNumber )
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "checkCertOwner()" );
		return false;
	}

	return true;
}

function getCertPublicKeyAlgo( strCert )
{
	if ( strCert == null || strCert == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "getCertPolicy()" );
		return "";
	}

	var buf = GetCertInfoFromCert( strCert, 11 );
	if ( buf == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getCertPolicy()" );
		return "";
	}
	
	return buf;
}

function getUserSignCertEX( strCertID, encode )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getUserSignCert()" );
		return "";
	}
	
	var strCert = GetUserSignCertEX( encode );
	if ( strCert == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getUserSignCert()" );
		return "";
	}

	return strCert;
}

function getUserKMCertEX( strCertID, encode )
{
	var bReturn = selectCertificate( strCertID );
	if ( !bReturn )
	{
		setErrorFunctionName( "getUserKMCert()" );
		return "";
	}
	
	var strCert = GetUserKMCertEX( encode );
	if ( strCert == "" )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "getUserKMCert()" );
		return "";
	}

	return strCert;	
}

function setSitePolicyForCertDlgPolicy( strSiteName, strPolicy )
{
	if ( strSiteName == null || strSiteName == "" 
		|| strPolicy == null || strPolicy == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "setSitePolicyForCertDlgPolicy()" );
		return false;
	}

	var bReturn = SetSiteIniPolicy( strSiteName, strPolicy );
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "setSitePolicyForCertDlgPolicy()" );
		return false;
	}

	return true;
}

function setSiteNameForCertDlgPolicy( strSiteName )
{
	if ( strSiteName == null || strSiteName == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "setSiteNameForCertDlgPolicy()" );
		return false;
	}

	var bReturn = SetSiteName( strSiteName );
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "setSiteNameForCertDlgPolicy()" );
		return false;
	}

	return true;
}

function setDefaultCertDlgModeMedia( ModeFlag, MediaFlag )
{
	var bReturn = SetDefaultDlgParam( ModeFlag, MediaFlag );
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "setDefaultCertDlgModeMedia()" );
		return false;
	}

	return true;
}

function setCertDialogImage(imageURL)
{
	var bReturn = SetCertDialogImage(imageURL);
	if ( !bReturn )
	{
		setErrorCode( "Failed to download Image:" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "setCertDialogImage()" );
		return false;
	}

	return true;
}

function setDefaultDlgPassword(passwd)
{
	return SetDefaultDlgPassword(passwd);
}

function setDefaultDlgDN(dn)
{
	return SetDefaultDlgDN(dn);
}

function setBioHSMInfo(bioInfo)
{
	if (null == bioInfo || "" == bioInfo)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("setBioHSMInfo()");
		return false;
	}

	return SetBioHSMInfo(bioInfo);
}

function getMediaType(userID)
{
	if (null == userID || "" == userID)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("getMediaType()");
		return 0;
	}

	return GetMediaType(userID);
}


function getDevManufature(userID)//ver 3.1.10.2
{
	if (null == userID || "" == userID)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("getDevManufature()");
		return "";
	}

	var manufacture = GetDevManufature(userID);
	if("" == manufacture)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("getDevManufature()");
		return "";
	}

	return manufacture;
}
function getDevCSN(userID)//ver 3.1.10.2
{
	if (null == userID || "" == userID)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("getDevCSN()");
		return "";
	}

	var csn = GetDevCSN(userID);
	if("" == csn)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("getDevCSN()");
		return "";
	}

	return csn;
}
function getDevAuth(userID)//ver 3.1.10.2
{
	if (null == userID || "" == userID)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("getDevAuth()");
		return "";
	}

	var authValue = GetDevAuth(userID);
	if ("" == authValue)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("getDevAuth()");
		return "";
	}

	return authValue;
}
function setDevAuthParam(keyID, randValue)
{
	if (null == keyID || "" == keyID || null == randValue || "" == randValue)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("setDevAuthParam()");
		return false;
	}

	var res = SetDevAuthParam(keyID, randValue);//[id(145)]
	if(false == res)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("setDevAuthParam()");
		return false;
	}
	
	return true;
}

function genDevAuth(userID, keyID, randValue)	//ver 3.1.10.8
{
	if (null == userID || "" == userID || null == keyID || "" == keyID || null == randValue || "" == randValue)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("genDevAuth()");
		return "";
	}

	var authValue = GenDevAuth(userID, keyID, randValue);//ver 3.1.10.8
	if(null == authValue || "" == authValue)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("GenDevAuth()");
		return "";
	}
	
	return authValue;
}

function getDevPID(userID)//ver 3.1.10.3
{
	if (null == userID || "" == userID)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("getDevPID()");
		return "";
	}

	var pid = GetDevPID(userID);
	if("" == pid)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("getDevPID()");
		return "";
	}

	return pid;
}

function getDevCID(userID)//ver 3.1.10.5
{
	if (null == userID || "" == userID)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage("");
		setErrorFunctionName("getDevCID()");
		return "";
	}

	var cid = GetDevCID(userID);
	if("" == cid)
	{
		setErrorCode("");
		setErrorMessage(GetLastErrMsg());
		setErrorFunctionName("getDevCID()");
		return "";
	}

	return cid;
}

function setCertPolicy( oid )
{
	if ( oid == null || oid == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "setCertPolicy()" );
		return "";
	}
	
	SetCertPolicy(oid);
	
	return buf;
}

function setDynamicMessage(encode, msg)
{
	if ( encode == null || encode == "" || encode < 0 || encode > 3 ||  msg == null || msg == "" )
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "setDynamicMessage()" );
		return "";
	}
	
	var bReturn = SetDynamicMessage(encode, msg);	
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "setDynamicMessage()" );
		return false;
	}

	return bReturn;
}


function mobileKeySetSettingInt(eSettingType, nSettingValue)
{
	if(0 != eSettingType || 0 > nSettingValue || 1 < nSettingValue)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( "" );
		setErrorFunctionName( "setDynamicMessage()" );
		return "";
	}

	var bReturn = MobileKeySetSettingInt(eSettingType, nSettingValue);	
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "mobileKeySetSettingInt" );
		return false;
	}

	return bReturn;

	
}

function mobileKeySetSettingString(SettingValue)
{

	if("" == SettingValue)
	{
		setErrorCode("NO_DATA_VALUE");
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "mobileKeySetSettingString" );
		return "";
	}

	var bReturn =  MobileKeySetSettingString(SettingValue);	
	if ( !bReturn )
	{
		setErrorCode( "" );
		setErrorMessage( GetLastErrMsg() );
		setErrorFunctionName( "mobileKeySetSettingString" );
		return false;
	}

	return bReturn;
}


