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