//*************************************************************************************
//	ÆÄÀÏ¸í		: sg_basic.js
//	ÀÛ¼ºÀÚ		: ¾ÈÀçÇü
//	ÃÖÃÊ ÀÛ¼ºÀÏ	: 2003³â 7¿ù 21ÀÏ
//	ÃÖÁ¾ ¼öÁ¤ÀÚ	: ¾ÈÀçÇü
//	ÃÖÁ¾ ¼öÁ¤ÀÏ	: 2005³â 11¿ù 07ÀÏ
//*************************************************************************************

var bUseKMCert;
var strHashAlg;
var bCryptoToolkitInstalled = true;

//*************************************************************************************
//	ÀÌ¸§	: initCryptoApi()
//	±â´É	: SignGATE2 Toolkit Java Script¸¦ »ç¿ëÇÏ±â À§ÇØ¼­ ÇÊ¿äÇÑ ÃÊ±âÈ­ ¼³Á¤À» ÇÑ´Ù.
//		  ÇÊ¿ä¿¡ µû¶ó¼­ ÀûÀýÇÑ ¼³Á¤ °ªÀ» °®µµ·Ï ¼öÁ¤ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ÀÚµ¿À¸·Î È£ÃâµÈ´Ù.
//*************************************************************************************
function initCryptoApi() {
	bUseKMCert = true;
	strHashAlg = "SHA1";
	if ( bCryptoToolkitInstalled )
	{
		SetCertDialogImage( "" );
		SetCAInfo( 0 );
	}
	return;
}

//*************************************************************************************
//	ÀÌ¸§	: cryptoToolkitNotInstalled()
//	±â´É	: Å¬¶óÀÌ¾ðÆ® ÅøÅ¶ÀÌ Á¤»óÀûÀ¸·Î ¼³Ä¡µÇÁö ¾Ê¾ÒÀ» ¶§ È£ÃâµÇ´Â ÇÔ¼ö·Î
//		  ÇÊ¿ä¿¡ µû¶ó¼­ ÅøÅ¶ ¼³Ä¡ ÆäÀÌÁö·Î ÀÌµ¿ÇÏµµ·Ï ÇÏ°Å³ª, 
//		  ÀûÀýÇÑ ¸Þ¼¼Áö¸¦ º¸¿©ÁÖµµ·Ï ¼öÁ¤ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù.
//*************************************************************************************
function cryptoToolkitNotInstalled() {
	bCryptoToolkitInstalled = false;
	if ( confirm( 'º¸¾È ¼ÒÇÁÆ®¿þ¾î°¡ ¼³Ä¡µÇÁö ¾Ê¾Ò½À´Ï´Ù. º¸¾È ÇÁ·Î±×·¥À» ¼öµ¿À¸·Î ¼³Ä¡ÇÏ½Ã°Ú½À´Ï±î?\n\nÈ®ÀÎÀ» ´©¸£½Ã¸é ÆÄÀÏ ´Ù¿î·Îµå Ã¢ÀÌ ¿­¸³´Ï´Ù.\nÀúÀå ¹öÆ°À» ´©¸£½Ã¾î º¸¾È ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡ ÇÁ·Î±×·¥À» ¹ÙÅÁÈ­¸é¿¡ ÀúÀåÇÏ½Å ´ÙÀ½¿¡,\n¿­·ÁÀÖ´Â À¥ ºê¶ó¿ìÀú¸¦ ¸ðµÎ ´ÝÀ¸½Å ÈÄ¿¡ ½ÇÇà½ÃÄÑ ÁÖ½Ê½Ã¿À.' ))
	{
		location.href = "http://download.signgate.com/download/common/ews/release/ewsinstaller_full.exe";
	}
	return;
}

//*************************************************************************************
//	ÀÌÇÏÀÇ ÇÔ¼öµéÀº ¿¹°í ¾øÀÌ º¯°æµÉ ¼ö ÀÖÀ¸¹Ç·Î,
//	ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå¿¡¼­ Àý´ë·Î Á÷Á¢ È£ÃâÇÏ¿© »ç¿ëÇÏ¿©¼­´Â ¾ÈµË´Ï´Ù!!
//*************************************************************************************
//document.write('<object classid="clsid:9FC84F7D-D177-4A75-A7BB-429DA5BD0A3E" style="display: none;" onError="javascript:cryptoToolkitNotInstalled();" onReadyStateChange="javascript:initCryptoApi()" id="SG_ATL"> </object>' );
document.write('<object classid="clsid:9FC84F7D-D177-4A75-A7BB-429DA5BD0A3E" id="SG_ATL" CODEBASE="http://download.signgate.com/download/ews/ewsinstaller.cab#version=3,0,0,1" onError="javascript:notInstalled();" style="display: none;"> </object>' );

function SetCAInfo( CACode )
{
	SG_ATL.SetCAInfo( CACode );
	return;
}

function SetSessionID( SessionID )
{
	SG_ATL.SetSessionID( SessionID );
	return;
}

function LoadUserKeyCertDlg( UseKMCert )
{
	return SG_ATL.LoadUserKeyCertDlg( UseKMCert );
}

function UnloadUserKeyCert()
{
	SG_ATL.UnloadUserKeyCert();
	return;
}

function GetUserSignCert()
{
	return SG_ATL.GetUserSignCert();
}

function GetUserKMCert()
{
	return SG_ATL.GetUserKMCert();
}

function GetUserKMKey()
{
	return SG_ATL.GetUserKMKey( "" );
}

function GetUserKMKeyWithNewPassword( strNewPassword )	//	Added 2005.08.03
{
	return SG_ATL.GetUserKMKey( strNewPassword );
}

function GetUserSignKeyWithNewPassword( strNewPassword )	//	Added 2005.11.07
{
	return SG_ATL.GetUserSignKey( strNewPassword );
}

function GetUserSignKey()	//	Added 2005.11.07
{
	return SG_ATL.GetUserSignKey( "" );
}

function GetCertPath()
{
	return SG_ATL.GetCertPath();
}

function GetUserPassword()
{
	return SG_ATL.GetUserPassword();
}

function GetSubjectDNFromCert( Cert )
{
	return SG_ATL.GetSubjectDNFromCert( Cert );
}

function GetSerialNumberFromCert( Cert )
{
	return SG_ATL.GetSerialNumberFromCert( Cert );
}

function GetCertInfoFromCert( Cert, index )
{
	return SG_ATL.GetCertInfoFromCert( Cert, index );
}

function SetCertPolicy( Policies )
{
	SG_ATL.SetCertPolicy( Policies );
	return;
}

function ValidateCert( Cert )
{
	return SG_ATL.ValidateCert( Cert );
}

function GetUserKeyRNumber()
{
	return SG_ATL.GetUserKeyRNumber();
}

function CheckCertOwner( Cert, SSN, RNumber )
{
	return SG_ATL.CheckCertOwner( Cert, SSN, RNumber );
}

function GenPKCS7SignedMsg( InData )
{
	return SG_ATL.GenPKCS7SignedMsg( InData );
}

function GenPKCS7SignedMsgFile( InFile, OutFile )
{
	return SG_ATL.GenPKCS7SignedMsgFile( InFile, OutFile );
}

function AddPKCS7Signature( InData )
{
	return SG_ATL.AddPKCS7Signature( InData );
}

function AddPKCS7SignatureFile( InFile, OutFile )
{
	return SG_ATL.AddPKCS7SignatureFile( InFile, OutFile );
}

function GenPKCS7EnvelopedMsg( InData, MyCert, RcvCert )
{
	return SG_ATL.GenPKCS7EnvelopedMsg( InData, MyCert, RcvCert );
}

function GenPKCS7EnvelopedMsgFile( InFile, MyCert, RcvCert, OutFile )
{
	return SG_ATL.GenPKCS7EnvelopedMsgFile( InFile, MyCert, RcvCert, OutFile );
}

function GenPKCS7SignedEnvelopedMsg( InData, MyCert, RcvCert )
{
	return SG_ATL.GenPKCS7SignedEnvelopedMsg( InData, MyCert, RcvCert );
}

function GenPKCS7SignedEnvelopedMsgFile( InFile, MyCert, RcvCert, OutFile )
{
	return SG_ATL.GenPKCS7SignedEnvelopedMsgFile( InFile, MyCert, RcvCert, OutFile );
}

function VrfPKCS7Msg( InData )
{
	return SG_ATL.VrfPKCS7Msg( InData );
}

function VrfPKCS7MsgFile( InFile, OutFile )
{
	return SG_ATL.VrfPKCS7MsgFile( InFile, OutFile );
}

function GetPKCS7SignInfo( InData )
{
	return SG_ATL.GetPKCS7SignInfo( InData );
}

function GetPKCS7SignInfoFile( InFile )
{
	return SG_ATL.GetPKCS7SignInfoFile( InFile );
}

function GetPKCS7SignCert( index )
{
	return SG_ATL.GetPKCS7SignCert( index );
}

function GetPKCS7SignTime( index )
{
	return SG_ATL.GetPKCS7SignTime( index );
}

function ClearPKCS7SignInfo()
{
	SG_ATL.ClearPKCS7SignInfo();
	return;
}

function GetPKCS7MessageType( InData )
{
	return SG_ATL.GetPKCS7MessageType( InData );
}

function GetPKCS7MessageTypeFile( InFile )
{
	return SG_ATL.GetPKCS7MessageTypeFile( InFile );
}

function GenSignInit()
{
	return SG_ATL.GenSignInit();
}

function GenSignUpdate( InData )
{
	return SG_ATL.GenSignUpdate( InData );
}

function GenSignUpdateFile( InFile )
{
	return SG_ATL.GenSignUpdateFile( InFile );
}

function GenSignFinal()
{
	return SG_ATL.GenSignFinal();
}

function VrfSignInit()
{
	return SG_ATL.VrfSignInit();
}

function VrfSignUpdate( InData )
{
	return SG_ATL.VrfSignUpdate( InData );
}

function VrfSignUpdateFile( InFile )
{
	return SG_ATL.VrfSignUpdateFile( InFile );
}

function VrfSignFinal( Sign, Cert )
{
	return SG_ATL.VrfSignFinal( Sign, Cert );
}

function CheckSymmetricKey()
{
	return SG_ATL.CheckSymmetricKey();
}

function ClearSymmetricKey()
{
	SG_ATL.ClearSymmetricKey();
	return;
}

function GetSymmetricKey( UserID )
{
	return SG_ATL.GetSymmetricKey( UserID );
}

function SetSymmetricKey( UserID )
{
	return SG_ATL.SetSymmetricKey( UserID );
}

function GenSymmetricKey()
{
	return SG_ATL.GenSymmetricKey();
}

function GenCipherSymKey( Cert )
{
	return SG_ATL.GenCipherSymKey( Cert );
}

function EncryptSymKey( Cert )
{
	return SG_ATL.EncryptSymKey( Cert );
}

function DecryptSymKey( CipherSymKey )
{
	return SG_ATL.DecryptSymKey( CipherSymKey );
}

function EncryptData( InData )
{
	return SG_ATL.EncryptData( InData );
}

function EncryptFile( InFile, OutFile )
{
	return SG_ATL.EncryptFile( InFile, OutFile );
}

function DecryptData( InData )
{
	return SG_ATL.DecryptData( InData );
}

function DecryptFile( InFile, OutFile )
{
	return SG_ATL.DecryptFile( InFile, OutFile );
}

function Base64Encode( InData )
{
	return SG_ATL.Base64Encode( InData );
}

function Base64EncodeFile( InFile, OutFile )
{
	return SG_ATL.Base64EncodeFile( InFile, OutFile );
}

function Base64Decode( InData )
{
	return SG_ATL.Base64Decode( InData );
}

function Base64DecodeFile( InFile, OutFile )
{
	return SG_ATL.Base64DecodeFile( InFile, OutFile );
}

function GenHashValue( HashAlg, InData )
{
	return SG_ATL.GenHashValue( HashAlg, InData );
}

function GenHashValueFile( HashAlg, InFile )
{
	return SG_ATL.GenHashValueFile( HashAlg, InFile );
}

function GetLastErrMsg()
{
	return SG_ATL.GetLastErrMsg();
}

function SetCertDialogImage( strImageUrl )
{
	SG_ATL.SetCertDlgImage( strImageUrl );
	return;
}

function FileRead(inFile, TypeFlag)
{
	return SG_ATL.FileUtil(0, inFile, "", TypeFlag );
}

function FileCopy(inFile, outFile)
{
	return SG_ATL.FileUtil(2, inFile, outFile, 0);
}

function FileRename(inFile, outFile)
{
	return SG_ATL.FileUtil(4, inFile, outFile, 0 );
}

function FileChange(inFile, outFile)
{
	return SG_ATL.FileUtil(5, inFile, outFile, 0 );
}

function MakeDir(inFile)
{
	return SG_ATL.FileUtil(6, inFile, "", 0 );
}

function FileUtil(Flag, inFile, outFile, TypeFlag )
{
	return SG_ATL.FileUtil(Flag, inFile, outFile, TypeFlag );
}
