iOS¶
1. 개요¶
헤카테 DID 서비스를 적용하기 위한 사용자용 Client 라이브러리 API입니다.
2. HDMSConfig API¶
setLogLevel ( 라이브러리 로그 설정 )¶
-
HDMSConfig.setLogLevel(level: logLevel)
로그 표시 정도를 설정합니다.
Example: Swift
HDMSConfig.setLogLevel(level: .DETAIL)
Example: Objective-c
[HDMSConfig setLogLevelWithLevel:logLevelDETAIL];
setJweAlgorithmType ( JWE 알고리즘 설정 )¶
-
HDMSConfig.setJweAlgorithmType(jweAlgorithm: jweAlgorithm)
JWE 암호화 알고리즘 설정한다.
Example: Swift
HDMSConfig.setJweAlgorithmType(jweAlgorithm: .A128CBCHS256)
Example: Objective-c
[HDMSConfig setJweAlgorithmTypeWithJweAlgorithm:jweAlgorithmA256CBCHS512];
setUseHexEncode ( HexEncode 설정 )¶
-
HDMSConfig.setUseHexEncode(use: boolean)
SecretKey 의 HexEncode 여부를 설정한다.
Example: Swift
HDMSConfig.setUseHexEncode(use: false)
Example: Objective-c
[HDMSConfig setUseHexEncodeWithUse:NO];
setUseJWEEncrypt ( JWE 암호화 설정 )¶
-
HDMSConfig.setUseJWEEncrypt(use: boolean)
전문 통신시 JWE암호화 사용 여부를 설정한다.
Example: Swift
HDMSConfig.setUseJWEEncrypt(use: false)
Example: Objective-c
[HDMSConfig setUseJWEEncryptWithUse:NO];
3. DID API¶
setDIDServerDomain ( 서버 설정 )¶
-
DiDManager.sharedInstance.setDIDServerDomain(url)
DID 서버 도메인을 설정합니다.
- Parameters
url (String) – DID 서버 주소
Example: Swift
DiDManager.sharedInstance.setDIDServerDomain("http://192.168.0.1:9999")
Example: Objective-c
[[DiDManager sharedInstance] setDIDServerDomainWithStrURL:@"http://192.168.0.1:9999"];
existDID ( DID 유무 확인 )¶
-
DiDManager.sharedInstance.existDID()
DID 발급 유무를 확인합니다.
- Returns
true: 있음, false: 없음
- Return type
Boolean
Example: Swift
if !DiDManager.sharedInstance.existDID() { // 발급받은 DID 무 }else{ // 발급받은 DID 유 }
Example: Objective-c
if(![[DiDManager sharedInstance] existDID]){ // 발급받은 DID 무 }else{ // 발급받은 DID 유 }
registerDID ( DID 발급 )¶
-
DiDManager.sharedInstance.registDID(userHash: String!, jsonOther: String!, authType: String?, secretHash: String?, didName: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
DID 발급 요청을 수행한다
- Parameters
userHash (String) – 사용자 식별 정보
jsonOther (String) – 사용자 기타 정보 (없을경우 Dummy 설)
authType (String) – “01”: Pin, “02”: 지문
secretHash (String) – 비밀번호 Hash값
didName (String) – DID 별명으로 설정되는 값
successBlock (BlockHandler) – 발급 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급 실패시 호출 (결과코드, 메시지)
jsonOther 구성
Key
Type
Description
name
String
이름
email
String
이메일
birthday
String
생년월일
mobile
String
휴대폰번호
Example: Swift
DiDManager.sharedInstance.registDID( userHash: userHash, jsonOther: jsonOther, authType: authType , secretHash: secretHash, didName: didName, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[DiDManager sharedInstance] registDIDWithUserHash:userHash jsonOther:jsonOther authType:authType secretHash:secretHash didName:didName successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];
getDIDInfo ( DID 정보 조회 )¶
-
DiDManager.sharedInstance.getDIDInfo()
DID 정보를 조회 한다.
- Returns
DID 정보 값
- Return type
String
Example: Swift
let result = DiDManager.sharedInstance.getDIDInfo() print("result : \(result)")
Example: Objective-c
NSString *result = [[DiDManager sharedInstance] getDIDInfo]; NSLog(@"result : %@", result);
getDIDName ( DID 별명 조회 )¶
-
DiDManager.sharedInstance.getDIDName()
DID 발급시 설정했던 별명값을 조회 한다.
- Returns
DID 별명 값
- Return type
String
Example: Swift
let result = DiDManager.sharedInstance.getDIDName() print("result : \(result)")
Example: Objective-c
NSString *result = [[DiDManager sharedInstance] getDIDName]; NSLog(@"result : %@", result);
getDIDList ( DID 리스트 조회 )¶
-
DiDManager.sharedInstance.getDIDList()
발급받은 DID 리스트를 조회 한다.
- Returns
발급받은 DID 리스트
- Return type
Array
Example: Swift
let result = DiDManager.sharedInstance.getDIDList() print("result : \(result)")
Example: Objective-c
NSArray *result = [[DiDManager sharedInstance] getDIDList]; NSLog(@"result : %@", result);
unRegisterDID ( DID 폐기 )¶
-
DiDManager.sharedInstance.unRegistDID(_ unRegType: String?, authType: String?, secretHash: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
DID를 폐기한다.
- Parameters
unRegType (String) – 폐기 주체
authType (String) – “01”: Pin, “02”: 지문
secretHash (String) – 비밀번호 Hash값
successBlock (BlockHandler) – 발급 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급 실패시 호출 (결과코드, 메시지)
unRegType
Value
Description
0
사용자 폐기
1
발급기관 폐기
2
검증기관 폐기
3
검증자 폐기
Example: Swift
DiDManager.sharedInstance.unRegistDID( unRegType, authType: authType , secretHash: secretHash, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[DiDManager sharedInstance] unRegistDID:unRegType authType:authType secretHash:secretHash successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];
deleteDID ( DID 로컬 삭제 )¶
-
DiDManager.sharedInstance.deleteDID()
로컬에 발급 받은 DID를 삭제한다.
사용자가 PIN번호를 분실했을 경우 DID를 삭제하는 용도로 사용
Example: Swift
DiDManager.sharedInstance.deleteDID()
Example: Objective-c
[[DiDManager sharedInstance] deleteDID];
changePin ( 핀번호 변경 )¶
-
DiDManager.sharedInstance.changePin(oldPinHash: String?, newPinHash: String?)
개인키를 암호화한 PIN번호를 변경한다.
- Parameters
oldPinHash (String) – 이전 PIN번호
newPinHash (String) – 신규 PIN번호
- Returns
true: 변경 성공, false: 변경 실패
- Return type
Boolean
Example: Swift
if DiDManager.sharedInstance.changePin(oldPinHash: oldPinHash, newPinHash: newPinHash) { // PIN번호 변경 성공 }else{ // PIN번호 변경 실패 }
Example: Objective-c
if([[DiDManager sharedInstance] changePinWithOldPinHash: oldPinHash newPinHash: newPinHash]){ // PIN번호 변경 성공 }else{ // PIN번호 변경 실패 }
4. VC API¶
sharedInstance ( 객체 생성 )¶
-
VCManager.sharedInstance
VC 객체를 생성하여 사용합니다.
객체는 싱글톤으로 사용되며 DIDManager에서 설정된 서버 도메인을 기준으로 동작합니다.
Example: Swift
let vcManager = VCManager.sharedInstance
Example: Objective-c
VCManager *vcManager = [VCManager sharedInstance];
getIssuer ( 발급 가능 기관 조회 )¶
-
VCManager.sharedInstance.getIssuer(successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
증명서(VC) 발급 가능한 발급기관 목록을 요청한다.
조회 성공시 메시지에 발급기관 목록이 전달된다.
발급기관 목록
Key
Type
Description
did
String
발급기관 DID
name
String
발급기관 이름
- Parameters
successBlock (BlockHandler) – 발급기관 목록 조회 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급기관 목록 조회 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.getIssuer( successBlock: { code, msg in print("getIssuer success : \(code) : \(msg)") if let data:Data = msg.data(using: .utf8) as Data? { if let ret:Array = try? JSONSerialization.jsonObject( with: data, options: .allowFragments) as? Array<Any> { print("Issuer Array : \(ret)") } else{ print("Json failed : \(msg)") } } else{ print("msg Error : \(msg)") } }, failBlock: { code, msg in //실패 print("getIssuer fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] getIssuerWithSuccessBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"getIssuer success : %@ : %@", code, msg); NSDate *data = [msg dataUsingEncoding:NSUTF8StringEncoding]; NSArray *ret = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; NSLog("Issuer Array : %@", ret); } failBlock:^(NSString * _Nonnull code, NSString * _Nonnull msg) { //실패 NSLog(@"getIssuer fail : %@ : %@", code, msg); }];
getIssuerVCType ( 발급 가능한 VC 타입 조회 )¶
-
VCManager.sharedInstance.getIssuerVCType(issuerDID: String, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
발급기관에서 발급 가능한 증명서(VC) 타입을 조회한다.
조회 성공시 메시지에 발급 가능한 증명서 타입 목록이 전달된다.
증명서타입 목록
Key
Type
Description
issueType
String
발급기관 DID
craimFormat
String
발급기관 이름
name
String
발급 가능 증명서 이름
type
String
발급 가능 증명서 타입
- Parameters
issuerDID (String) – 발급기관 DID, getIssuer에서 조회한 발급기관 정보 사용
successBlock (BlockHandler) – 발급기관 목록 조회 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급기관 목록 조회 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.getIssuerVCType( issuerDID: issuerDID , successBlock: { code, msg in print("getIssuerVCType success : \(code) : \(msg)") if let data:Data = msg.data(using: .utf8) as Data? { if let ret:Array = try? JSONSerialization.jsonObject( with: data, options: .allowFragments) as? Array<Any> { print("vcType Array : \(ret)") } else{ print("Json failed : \(msg)") } } else{ print("msg Error : \(msg)") } }, failBlock: { code, msg in //실패 print("getIssuerVCType fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] getIssuerVCTypeWithIssuerDID:issuerDID successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"getIssuerVCType success : %@ : %@", code, msg); NSDate *data = [msg dataUsingEncoding:NSUTF8StringEncoding]; NSArray *ret = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; NSLog("vcType Array : %@", ret); } failBlock:^(NSString * _Nonnull code, NSString * _Nonnull msg) { //실패 NSLog(@"getIssuerVCType fail : %@ : %@", code, msg); }];
existVC ( VC 유무 확인 )¶
-
VCManager.sharedInstance.existVC()
증명서(VC) 발급 유무를 확인합니다.
- Returns
true: 있음, false: 없음
- Return type
Boolean
Example: Swift
if !VCManager.sharedInstance.existVC() { // 발급받은 VC 무 }else{ // 발급받은 VC 유 }
Example: Objective-c
if(![[VCManager sharedInstance] existVC]){ // 발급받은 VC 무 }else{ // 발급받은 VC 유 }
registVC ( VC 발급 )¶
-
VCManager.sharedInstance.registVC(issuerDID: String?, vcType: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
증명서(VC) 발급 요청을 수행한다
- Parameters
issuerDID (String) – 기관 DID
vcType (String) – 증명서 타입
successBlock (BlockHandler) – 발급 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.registVC( issuerDID: issuerDID, vcType: vcType, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] registVCWithIssuerDID:issuerDID vcType:vcType successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];
getVCStatus ( VC 상태 조회 )¶
-
VCManager.sharedInstance.getVCStatus(vcId: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
증명서(VC) 상태를 조회한다.
- Parameters
vcId (String) – 증명서 아이디
successBlock (BlockHandler) – 조회 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 조회 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.getVCStatus( vcId: vcId, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] getVCStatusWithVcId:vcId successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];
getALLVCList ( VC 리스트 조회 )¶
-
VCManager.sharedInstance.getALLVCList()
발급받은 증명서(VC) 리스트를 조회 한다.
- Returns
발급받은 증명서 리스트
- Return type
VCredential Array
Example: Swift
let result = VCManager.sharedInstance.getALLVCList() print("result : \(result)")
Example: Objective-c
NSString *result = [[VCManager sharedInstance] getALLVCList]; NSLog(@"result : %@", result);
getVCDetailInfo ( VC 상세 조회 )¶
-
VCManager.sharedInstance.getVCDetailInfo(vcId: String!)
증명서(VC) 상세정보를 조회 한다.
- Returns
발급받은 증명서 상세내역
- Return type
VCredential
Example: Swift
let vc:VCredential result = VCManager.sharedInstance.getVCDetailInfo(vcId: vcId) print("vc Detail : \(vc)")
Example: Objective-c
VCredential *vc = [[VCManager sharedInstance] getVCDetailInfoWithVcID:vcId]; NSLog(@"vc Detail : %@", result);
showVC ( VC 전시 )¶
-
VCManager.sharedInstance.showVC(vcId: String?, submitPurpose: String?, crtfcTy: String?, verifyTy: String?, authType: String?, secretHash: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
증명서(VC) 전시에 필요한 정보를 요청한다.
QR데이터 요청
호출전 증명서(VC) 상태조회 체크
- Parameters
vcId (String) – 증명서 아이디
submitPurpose (String) – 요청 정보 메시지 (“사용자 VP 검증 요청”)
crtfcTy (String) – 비밀번호 타입 ( 0 = PIN, 1 = 생체인증 )
verifyTy (String) – “ATA”
authType (String) – “01”: Pin, “02”: 지문
secretHash (String) – 비밀번호 Hash값
successBlock (BlockHandler) – 발급 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.showVC( vcId: vcId, submitPurpose: submitPurpose, crtfcTy: crtfcTy, verifyTy: verifyTy, authType: authType , secretHash: secretHash, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] showVCWithVcId: vcId submitPurpose: submitPurpose, crtfcTy: crtfcTy, verifyTy: verifyTy, authType: authType , secretHash: secretHash, successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];
unRegistVC ( VC 폐기 )¶
-
VCManager.sharedInstance.unRegistVC(vcId: String?, authType: String?, secretHash: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
증명서(VC) 를 폐기한다.
- Parameters
vcId (String) – 증명서 아이디
authType (String) – “01”: Pin, “02”: 지문
secretHash (String) – 비밀번호 Hash값
successBlock (BlockHandler) – 발급 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.unRegistVC( vcId: vcId, authType: authType , secretHash: secretHash, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] unRegistVCWithVcId: vcId authType: authType , secretHash: secretHash, successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];
getVCRegistHistory ( VC 발급 이력 조회 )¶
-
VCManager.sharedInstance.getVCRegistHistory(successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
증명서(VC) 발급 이력을 조회한다.
조회 성공시 메시지에 발급 이력 목록이 전달된다.
발급이력 Object
Key
Type
Description
issuerDID
String
발급기관 DID
autoConfirm
String
자동 승인 여부
name
String
증명서 이름
holderDID
String
사용자 DID
id
String
증명서 아이디
type
String
증명서 타입
status
String
증명서 상태
registDate
String
등록일
- Parameters
successBlock (BlockHandler) – 발급이력 목록 조회 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급이력 목록 조회 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.getVCRegistHistory( successBlock: { code, msg in print("success : \(code) : \(msg)") if let data:Data = msg.data(using: .utf8) as Data? { if let ret:Array = try? JSONSerialization.jsonObject( with: data, options: .allowFragments) as? Array<Any> { print("History Array : \(ret)") } else{ print("Json failed : \(msg)") } } else{ print("msg Error : \(msg)") } }, failBlock: { code, msg in //실패 print("getIssuer fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] getVCRegistHistoryWithSuccessBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"getIssuer success : %@ : %@", code, msg); NSDate *data = [msg dataUsingEncoding:NSUTF8StringEncoding]; NSArray *ret = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; NSLog("History Array : %@", ret); } failBlock:^(NSString * _Nonnull code, NSString * _Nonnull msg) { //실패 NSLog(@"getIssuer fail : %@ : %@", code, msg); }];
getVCType ( VC 타입 확인 )¶
-
VCManager.sharedInstance.getVCType(vcID: String!)
증명서(VC) ID로 증명서 타입을 조회한다.
- Parameters
vcId (String) – 증명서 아이디
- Returns
증명서 타입
- Return type
String
Example: Swift
let vcType = VCManager.sharedInstance.getVCType(vcID: vcID) print("증명서 타입 : \(vcType)")
Example: Objective-c
NSString *vcType = [VCManager sharedInstance] getVCTypeWithvcID: vcID]; NSLog(@"증명서 타입 : %@", vcType);
getVCID ( VC 아이디 조회 )¶
-
VCManager.sharedInstance.getVCID(issuerDID: String!, vcType: String!)
기관 DID와 증명서 타입으로 증명서(VC) 아이디를 조회한다.
- Parameters
issuerDID (String) – 기관 DID
vcType (String) – 증명서 타입
- Returns
증명서 아이디
- Return type
String
Example: Swift
let vcID = VCManager.sharedInstance.getVCID(issuerDID: issuerDID, vcType: vcType) print("증명서 아이디 : \(vcID)")
Example: Objective-c
NSString *vcID = [VCManager sharedInstance] getVCIDWithIssuerDID: vcID]; NSLog(@"증명서 아이디 : %@", vcID);
getSavedVCTypeList ( VC 타입 조회 )¶
-
VCManager.sharedInstance.getSavedVCTypeList()
단말에 저장된 증명서(VC)들의 타입을 조회한다.
- Returns
증명서 타입
- Return type
Array
Example: Swift
let result4 = VCManager.sharedInstance.getSavedVCTypeList() let typeArray = VCManager.sharedInstance.getSavedVCTypeList() print("증명서 타입 : \(typeArray)")
Example: Objective-c
NSArray *typeArray = [VCManager sharedInstance] getSavedVCTypeList]; NSLog(@"증명서 타입 : %@", typeArray);
authMulti ( 멀티 인증 요청 )¶
-
VCManager.sharedInstance.authMulti(certType: String?, certNumber: String?, vcId: String?, authType: String?, secretHash: String?, successBlock: (String, String) -> Void, failBlock: (String, String) -> Void)
멀티 인증 요청을 수행한다.
- Parameters
certType (String) – 인증타입 (“qr”)
certNumber (String) – 인증번호 (6자리)
vcId (String) – 증명서 아이디
authType (String) – “01”: Pin, “02”: 지문
secretHash (String) – 비밀번호 Hash값
successBlock (BlockHandler) – 발급 성공시 호출 (결과코드, 메시지)
failBlock (BlockHandler) – 발급 실패시 호출 (결과코드, 메시지)
Example: Swift
VCManager.sharedInstance.authMulti( certType: certType, certNumber: certNumber, vcId: vcId, authType: authType , secretHash: secretHash, successBlock: { code, msg in //성공 print("success : \(code) : \(msg)") }, failBlock: { code, msg in //실패 print("fail : \(code) : \(msg)") } )
Example: Objective-c
[[VCManager sharedInstance] authMultiWithCertType: certType certNumber: certNumber, vcId: vcId, authType: authType , secretHash: secretHash, successBlock:^(NSString *code, NSString *msg) { //성공 NSLog(@"success : %@ : %@", code, msg);} failBlock:^(NSString *code, NSString *msg) { //실패 NSLog(@"fail : %@ : %@", code, msg);} ];