====== MagicXSign NPKI API ======
===== 개요 =====
MagicXSign은 PhoneGap Plugin을 사용하여 Android, iPhone 에서 드림시큐리티 MagicXsign 과 MagicMRS를 사용하기 위한 라이브러리 입니다.
==== 특징 ====
{{:egovframework:hyb:guide:add:npki_드림시큐리티:magicxsign전체흐름도.png|}}
* 공인인증서(NPKI)를 이용한 서명 및 인증서 검증 방법제공
* 인증서 이동서버를 통해 PC의 인증서를 스마트폰으로 이동
* 상기 모듈들은 Native로 구성이 되어 있지만 PhoneGap Plugin 을 통해 WebView를 통해 사용
* iOS 의 경우 APP 의 Keychain 에 인증서 저장
* Android 의 경우 SDCard/NPKI 에 인증서 저장
==== 전제조건 ====
^구분^내용^
|테스트 디바이스 |iPhone 4|
|테스트 플랫폼 |iOS 5.1|
NPKI MagicXSign Library
^파일명^설명^
|Plugins/libMagicXSignPhoneGap.a| MagicXSign 라이브러리 |
|Plugins/libMRSPC_LIB.a| MagicXSign 라이브러리 |
|Plugins/libWDSTKI30_LIB.a| MagicXSign 라이브러리 |
|Plugins/libKT_SCM_Client.a| MagicXSign 라이브러리 |
|www/js/egovframework/mbl/hyb/MagicXSign.js| MagicXSign PhoneGap Plugin JavaScript|
Cordova.plist 설정
Plugins
MagicXSignPlugin
MagicXSignPlugin
===== API Doc =====
==== MagicXSign(PKI) 함수 ====
== 인증서 서명 / 서명 검증 프로세스 ==
{{:egovframework:hyb:guide:add:npki_드림시큐리티:magicxsign인증서서명검증시퀀스.png?740|}}
^인증서검증방법^제품명^
|CRL(Certificate Revocation List)|일종의 블랙리스트 방식 \\ CA가 인증서 폐기 목록을 특정 시간에 생성하게 되므로 실제 인증서의 상태와 폐기 목록상의 상태가 틀린 경우가 발생 \\ 무료 서비스 |
|OCSP(Online Cerificate Status Protocol)|실시간으로 상태를 확인 가능 \\ 유료 서비스 \\ 특정 CA와 사용 계약을 맺어서 사용 \\ 특정 CA에서 OCSP 용 인증서를 발급, 1년마다 갱신 |
== window.plugins.magicxsign.init ==
* MagicXSign 을 사용하기 위해 초기화를 한다. \\
window.plugins.magicxsign.init(var Flag)
^Option^설명^비고^
|Flag|MagicXSign Debug 출력 여부|true:디버그 출력, false:디버그 출력 안함|
window.plugins.magicxsign.init("false");
window.plugins.magicxsign.init("true");
== window.plugins.magicxsign.getcertlist ==
* 단말의 인증서를 jsonString 형식으로 맞추어서 읽어온다.
window.plugins.magicxsign.getcertlist( success return , fail return, jsonString);
^Option^설명^비고^
|success return|성공시 리턴되는 함수| |
|fail return|실패시 리턴되는 함수| |
|jsonString|인증서의 정보 요청| |
== jsonString ==
* 조회 할 인증서의 정보
^속성^내용^속성^내용^
|issuer|인증서 발급 기관|name|사용자이름|
|ver|버전|sn|일련번호|
|issuedn|발급자|start|만료일(시작)|
|end|만료일(끝)|subjdn|주체자|
|pubkeyalgo|공개키 알고리즘|pubkey|공개키|
|aia|기관 정보 접근|aki|발급자 키식별자|
|ski|주체자 키식별자|keyuse|키사용|
|policy|정책|policyid|정책 ID|
|subaltname|주체 대채이름|crl|CRL 위치|
var setDefine = ["oidname","issuer","name","subjdn","start","end"];
window.plugins.magicxsign.getcertlist(getcertlistSuccess, getcertlistFail, JSON.stringify(setDefine));
== window.plugins.magicxsign.certdel ==
* 인증서를 삭제 한다.
window.plugins.magicxsign.certdel(success return, fail return, Cert Index);
^Option^설명^비고^
|success return|성공시 리턴되는 함수| |
|fail return|실패시 리턴되는 함수| |
|Cert Index|인증서 Index(0 부터 시작)|window.plugins.magicxsign.getcertlist 호출에 대한 결과 index 값|
window.plugins.magicxsign.certdel(certdelSuccess, certdelFail, 0);
== window.plugins.magicxsign.certchagepassword ==
* 인증서의 비밀번호를 변경한다.
window.plugins.magicxsing.certchagepassword(success return, fail return, jsonString);
^Option^설명^비고^
|success return|성공시 리턴되는 함수| |
|fail return|실패시 리턴되는 함수| |
|jsonString|인증서 Index, 구/신 비밀번호를 jsonString 전달| |
var setDefine = {};
setDefine["certindex"] = iCertIndex; //선택된 인증서 index
setDefine["oldpassword"] = oldpassword; //선택된 인증서 Password
setDefine["newpassword"] = newpassword; //신규 인증서 Password
window.plugins.magicxsing.certchagepassword(certchagepasswordSuccess, certchagepasswordFail, JSON.stringify(setDefine));
== window.plugins.magicxsign.makesign ==
* 서명 데이터를 생성한다.
window.plugins.magicxsing.makesign(success return, fail return, jsonString);
^Option^설명^비고^
|success return|성공시 리턴되는 함수| |
|fail return|실패시 리턴되는 함수| |
|jsonString|인증서 Index, 구/신 비밀번호를 jsonString 전달| |
var setDefine = {};
setDefine["plaintext"] = encodeURIComplnent(MagicXSign_makeQueryString(form)));
setDefine["uri"] = sURI;
setDefine["certindex"] = document.getElementById("xsigncertindex").value;
setDefine["certpassword"] = document.getElementById("xsigncertpassword").value;
window.plugins.magicxsign.makesign(makesign_ok, makesign_fail, JSON.stringify(setDefine));
==== MagicMRS(인증서이동) API ====
PC의 인증서를 스마트폰으로 옮기는 서비스
== 인증서 이동 흐름도==
{{:egovframework:hyb:guide:add:npki_드림시큐리티:magicxsign인증서이동흐름도.png?740|}}
== window.plugins.magicxsign.mrs_makecode ==
* 인증서버에 접속 하여 인증번호를 얻어온다.
window.plugins.magicxsign.mrs_makecode(success return, fail return, jsonString);
^Option^설명^비고^
|success return|성공시 리턴되는 함수| |
|fail return|실패시 리턴되는 함수| |
|jsonString|phoneno, serverip, serverport, serviceid 형태의 Json String| |
var setDefine = {};
setDefine["phoneno"] = "123456789";
setDefine["serverip"] = "125.141.204.173";
setDefine["serverport"] = "10001";
setDefine["serviceid"] = "dreamAPP";
window.plugins.magicxsign.makesign(makesign_ok, makesign_fail, JSON.stringify(setDefine));
== window.plugins.magicxsign.mrs_waitcert ==
* 인증서를 전송 받아 저장하고 인증서 정보를 리턴한다.
window.plugins.magicxsign.mrs_makecode(success return, fail return, jsonString);
^Option^설명^비고^
|success return|성공시 리턴되는 함수| |
|fail return|실패시 리턴되는 함수| |
|jsonString|얻어온 인증서의 정보 보기용|certlist 함수 참조|
var setDefine = ["oidname","issuer","name","subjdn","start","end"]
window.plugins.magicxsign.mrs_waitcert(getcertlistSuccess, getcertlistFail, JSON.stringify(setDefine));
== window.plugins.magicxsign.mrs_stopcertmove ==
* 인증서 이동을 중지한다.
window.plugins.magicxsign.mrs_stopcertmove();
== window.plugins.magicxsign.ollecert_check ==
* 올레인증서가 인스톨 되어있는지 확인한다.
window.plugins.magicxsign.ollecert_check(ollecert_Check_Success, ollecert_Check_Fail);
== window.plugins.magicxsign.ollecert_install ==
* 올레인증서 인스톨을 위해 AppStore의 올레인증서 인스톨 화면을 호출한다.
window.plugins.magicxsign.ollecert_install();
== window.plugins.magicxsign.ollecert_getcert ==
* 올레인증서에서 인증서를 요청하여 선택된 인증서를 저장한다.
var setDefine = ["oidname","issuer","name","subjdn","start","end"];
window.plugins.magicxsign.ollecert_getcert(certGetFromOlleCert_Success, certGetFrom OlleCert_Fail, JSON.stringify(setDefine));