WizSign은 모바일 환경에서 전자서명, 인증서 관리등의 PKI 응용프로그램 개발에 필요한 라이브러리를 제공하며, 공개키기반 응용 프로그램에서 사용하는 PKI 기반 기능들을 구현할 수 있다.
아래에서는 HybridApp 환경에서 전자서명, 인증서 관련 기능들을 사용하기 위한 API 명세서와 WizSign 서비스에 대한 설명을 제공한다.
| 구분 | 내용 |
|---|---|
| 테스트 디바이스 | iPhone 4 |
| 테스트 플랫폼 | iOS 5.1 |
NPKI WizSign Library
| 파일명 | 설명 |
|---|---|
| Plugin/WizSignPhoneGap.a, WizSignPhoneGap.h | WizSign 라이브러리 |
| Plugin/cert.db | WizSign DB |
| www/js/egovframework/mbl/hyb/wizsignpg.js | WizSign PhoneGap Plugin JavaScript |
Cordova.plist 설정
<key>Plugins</key> <dict> <!--전자정부 Interface 디바이스 API를 사용하기 위한 Phonegap Plugin 클래스--> <key>WizSignPG</key> <string>WizSignPG</string> </dict>
전자서명을 하기 위한 API 이다.
- 파라메터 : 인증서 번호, 인증서 비밀번호, 서명대상 원문
- 반환값(해시 테이블)
'signedData' : 서명데이터
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = selectCertNum.toString() ;
args[1] = '1';
args[2] = stringToSign;
WizSignPG.doSignature(args, function(result) {
var signedData = result['signedData']; // 서명데이터
}, function(error) {
alert(error['errMsg']); // 에러메시지
});
- 파라메터 : N/A
- 반환값(해시 테이블)
'Certificates' : 인증서 목록
'errMsg' : 에러 발생시 에러메시지
WizSignPG.getCertificates("", function(result) {
var certList = result['Certificates'];
for(var i=0 ; i<certList.length ; i++) {
certList[i]['NUM'];
certList[i]['주체자'];
certList[i]['발급자'];
certList[i]['만료일'];
}
}, function(error) {
alert("error['errMsg']);
});
인증서 정보 해시테이블
| 해시테이블 | 설명 |
|---|---|
| NUM | 인증서 번호 |
| 버전 | 인증서 버전 |
| 일련번호 | 인증서 시리얼번호 |
| 서명알고리즘 | 인증서 서명알고리즘 |
| 발급자 | 인증서의 발급자 정보 |
| 효력발생일 | 인증서의 효력 발생일 |
| 만료일 | 인증서 만료일 |
| 주체자 | 인증서 주체자 정보 |
| 공개키알고리즘 | 인증서 공개키 알고리즘 |
| 발급자시리얼번호 | 발급자시리얼번호 |
| 공개키 | 공개키값 |
| 기관키식별자 | 기관키식별자 |
| 주체자식별자 | 주체자식별자 |
| 정책 | 정책 |
| 주체대체이름 | 주체대체이름 |
| CRL분배지점 | CRL분배지점 |
| 기관정보액세스 | 기관정보액세스(OCSP) |
| 키사용 | 키사용용도 |
| 서명 | 인증서 서명값 |
- 파라메터 : 인증서 번호, 인증서 비밀번호
- 반환값(해시 테이블)
'result' : 인증서 비밀번호 검증결과(성공시 'OK')
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = certNum.toString();
args[1] = certPass;
WizSignPG.verifyCertPassword(args, function(result) {
var runResult = result['result'];
if(runResult == 'OK') {
alert('인증서 비밀번호가 일치합니다.');
}
}, function(error) {
alert(error['errMsg']);
});
- 파라메터 : 인증서 번호, 인증서 비밀번호, 새로운 인증서 비밀번호
- 반환값(해시 테이블)
'result' : 인증서 비밀번호 변경 결과(성공시 'OK')
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = certNum.toString();
args[1] = beforePass;
args[2] = afterPass;
WizSignPG.changeCertPassword(args, function(result) {
var runResult = result['result'];
if(runResult == 'OK') {
alert('인증서 비밀번호를 변경하였습니다.');
}
}, function(error) {
alert(error['errMsg']);
});
- 파라메터 인증서 번호
- 반환값(해시 테이블)
'result' : 인증서 삭제 결과(성공시 'OK')
'Certificate' : 삭제된 인증서 정보
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = certNum.toString();
WizSignPG.removeCert(args, function(result) {
var runResult = result['result'];
if(runResult == 'OK') {
alert('인증서가 삭제되었습니다.')
}
}, function(error) {
alert(error['errMsg']);
});
- 파라메터 인증서 번호
- 반환값(해시 테이블)
'result' : 인증서 CRL 검증결과(성공시 'OK')
'status' : 인증서 상태
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = certNum.toString();
WizSignPG.doValidateCert(args, function(result) {
var runResult = result['result'];
var certStatus = result['status'];
if(runResult == 'OK') {
alert(certStatus);
}
}, function(error) {
alert(error['errMsg']);
});
- 파라메터 CallBack 될 앱스키마, 옵션
- 반환값(해시 테이블)
'result' : 실행겨로가(성공시 'OK')
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = 'PhoneGapTest';
args[1] = '01';
WizSignPG.runShowApp(args, function(result) {
var runResult = result['result'];
// runResult == 'OK' -> 실행성공
}, function(error) {
alert(error['errMsg']);
});
- 파라메터 PKCS#12 데이터(base64 encoded), 인증서 비밀번호, 새로운 인증서 비밀번호
- 반환값(해시 테이블)
'result' : 실행겨로가(성공시 'OK')
'Certificate' : import된 인증서 정보
'errMsg' : 에러 발생시 에러메시지
var args = new Array();
args[0] = strP12;
args[1] = certPass;
args[2] = newPass;
WizSignPG.importPKCS12(args, function(result) {
var runResult = result['result'];
var certInfo = result['Certificate'];
if(runResult == 'OK') {
alert('[' + certInfo['주체자'] + '] 인증서가 생성되었습니다.1')
}
}, function(error) {
alert(error['errMsg']);
});
- 파라메터 URL
- 반환값 PKCS#12 데이터
// PhoneGap 페이지에 기본으로 제공되어지는 URL CallBak Function
function handleOpenURL(url)
{
g_p12cert = callback_kisaShowApp(url);
}