JCaosLib
V1.4.4.0

Package com.dreamsecurity.jcaos.ivs

Çà¾ÈºÎ ÀÎÁõü°è(GPKI)¿¡¼­ Á¦°øÇÏ´Â ÅëÇÕ°ËÁõ¼­¹ö¸¦ ÅëÇÏ¿© ÀÎÁõ¼­ °ËÁõ, º»ÀÎÈ®ÀÎ ¼­ºñ½º¸¦ ÀÌ¿ëÇϱâ À§ÇÑ Å¬·¡½º¸¦ Á¦°øÇÑ´Ù.

See:
          Description

Class Summary
IVSReqMsgGenerator Çà¾ÈºÎ ÀÎÁõü°è(GPKI)¿¡¼­ Á¦°øÇÏ´Â ÅëÇÕ°ËÁõ¼­¹ö¿¡ ÀÎÁõ¼­ °ËÁõ ¶Ç´Â º»ÀÎ È®ÀÎÀ» À§ÇÑ ¿äû ¸Þ½ÃÁö »ý¼ºÇϱâÀ§ÇÑ Å¬·¡½ºÀÌ´Ù.
IVSResMsg ÅëÇÕ °ËÁõ ¼­¹ö¿¡¼­ º¸³»¿Â ÀÀ´ä ¸Þ½ÃÁö¸¦ ó¸®ÇÏ°í ¿äû °á°ú¸¦ È®ÀÎÇϱâ À§ÇÑ Å¬·¡½ºÀÌ´Ù.
 

Package com.dreamsecurity.jcaos.ivs Description

Çà¾ÈºÎ ÀÎÁõü°è(GPKI)¿¡¼­ Á¦°øÇÏ´Â ÅëÇÕ°ËÁõ¼­¹ö¸¦ ÅëÇÏ¿© ÀÎÁõ¼­ °ËÁõ, º»ÀÎÈ®ÀÎ ¼­ºñ½º¸¦ ÀÌ¿ëÇϱâ À§ÇÑ Å¬·¡½º¸¦ Á¦°øÇÑ´Ù.

* »ç¿ë ¿¹Á¦ *

// 1) ÅëÇÕ °ËÁõ ¼­¹ö¸¦ ÀÌ¿ëÇÑ ÀÎÁõ¼­ °ËÁõ
static public void verifyCert() {
		
	try {
		// ¿äûÀÚ ÀÎÁõ¼­ Àбâ
		X509Certificate myCert = X509Certificate.getInstance(
			FileUtil.read("./Data/Cert/VerifyByIVS/MyCert.der"));
			
		// °ËÁõÇÒ ÀÎÁõ¼­ Àбâ
		X509Certificate targetCert = X509Certificate.getInstance(
			FileUtil.read("./Data/Cert/VerifyByIVS/GPKI_UserCert.der"));
				
		// ¿äû ¸Þ½ÃÁö »ý¼º
		IVSReqMsgGenerator ivsReqMsg = new IVSReqMsgGenerator(myCert);
		byte[] reqMsg = ivsReqMsg.generate(targetCert);
				
		// ¿äû ¸Þ½ÃÁö Àü¼Û ¹× ÀÀ´ä ¸Þ½ÃÁö ¼ö½Å
		IVSP ivsp = new IVSP();
		ivsp.connect("ivs.gpki.go.kr", 8080);
				
		IVSResMsg ivsResMsg = ivsp.sendAndRecv(reqMsg);
		
		// ÅëÇÕ°ËÁõ¼­¹öÀÇ ¼­¸í¿ë ÀÎÁõ¼­ ȹµæ
		X509Certificate svrSignCert = downloadCert(
			"ldap://cen.dir.go.kr:389/cn=IVS1310386001,ou=GPKI,o=Government of Korea,c=KR", 
			"signcertificate");
				
		// ÀÀ´ä ¸Þ½ÃÁö °ËÁõ
		int code = ivsResMsg.process(ivsReqMsg.getNonce(), svrSignCert);
		if (code != 0) {
			System.out.println("verifyFailed[" + code + "] = " + ivsResMsg.getDescreption());
			return;
		}
	}        
	catch (Exception e) {
		e.printStackTrace();
	
	}
}
	
// 2) ÅëÇÕ °ËÁõ ¼­¹ö¸¦ ÀÌ¿ëÇÑ º»ÀÎ È®ÀÎ
static public void identifyUser() {
	
	try {
		// ¿äûÀÚ ÀÎÁõ¼­ Àбâ
		X509Certificate myCert = X509Certificate.getInstance(
			FileUtil.read("./Data/Cert/IdentifyByIVS/MyCert.der"));
	
		// º»ÀÎÈ®ÀÎÇÒ ÀÎÁõ¼­ Àбâ
		X509Certificate targetCert = X509Certificate.getInstance(
				FileUtil.read("./Data/Cert/IdentifyByIVS/cert.der"));
		
		// ÅëÇÕ °ËÁõ¼­¹öÀÇ Å°ºÐ¹è¿ë ÀÎÁõ¼­ ȹµæ
		X509Certificate svrKmCert = downloadCert(
				"ldap://cen.dir.go.kr:389/cn=IVS1310386001,ou=GPKI,o=Government of Korea,c=KR", 
				"usercertificate");
		
		// ¿äû ¸Þ½ÃÁö »ý¼º
		IVSReqMsgGenerator ivsReqMsg = new IVSReqMsgGenerator(myCert);
		ivsReqMsg.setSvrCert(svrKmCert);
		byte[] reqMsg = ivsReqMsg.generate("7777770000002", targetCert);
		
		// ÅëÇÕ°ËÁõ¼­¹ö¿¡ ¿äû ¸Þ½ÃÁö Àü¼Û ¹× ÀÀ´ä ¸Þ½ÃÁö ¼ö½Å
		IVSP ivsp = new IVSP();
		ivsp.connect("ivs.gpki.go.kr", 8080);
		
		IVSResMsg ivsResMsg = ivsp.sendAndRecv(reqMsg);
		
		// ÅëÇÕ°ËÁõ¼­¹öÀÇ ¼­¸í¿ë ÀÎÁõ¼­ ȹµæ
		X509Certificate svrSignCert = downloadCert(
				"ldap://cen.dir.go.kr:389/cn=IVS1310386001,ou=GPKI,o=Government of Korea,c=KR", 
				"signcertificate");
		
		// ÀÀ´ä ¸Þ½ÃÁö °ËÁõ
		int code = ivsResMsg.verify(ivsReqMsg.getNonce(), svrSignCert);
		if (code != 0) {
			System.out.println("verifyFailed[" + code + "] = " + ivsResMsg.getDescreption());
			return;
		}
	} 
	catch (Exception e) {
		e.printStackTrace();
	}
}

// ÀÎÁõ¼­ ´Ù¿î·Îµå
static X509Certificate downloadCert(String url, String attribute) 
throws 	NamingException,
		IOException {
	
	URLParser urlParser = new URLParser(url);
	 
	LDAP ldap = new LDAP();
	ldap.connect(urlParser.getIP(), urlParser.getPort());
	ldap.search(urlParser.getURI(), attribute);
	ArrayList objs = ldap.getObject();
	ldap.close();
	
	return X509Certificate.getInstance((byte[])objs.get(0));
}


JCaosLib
V1.4.4.0


Copyright ¨Ï2007-2011 DreamSecurity Co.,Ltd . All rights reserved