25
25
#import " YKFAPDU.h"
26
26
#import " YKFSCPProcessor.h"
27
27
#import " YKFTLVRecord.h"
28
+ #import " YKFSessionError.h"
29
+ #import " YKFSessionError+Private.h"
28
30
29
31
@interface YKFSCPProcessor ()
30
32
@property (nonatomic , strong ) YKFSCPState *state;
@@ -55,7 +57,6 @@ + (void)processorWithSCPKeyParams:(id<YKFSCPKeyParamsProtocol> _Nonnull)scpKeyPa
55
57
if ([scpKeyParams isKindOfClass: [YKFSCP03KeyParams class ]]) {
56
58
YKFSCP03KeyParams *scp03KeyParams = (YKFSCP03KeyParams *)scpKeyParams;
57
59
NSData *hostChallenge = [NSData ykf_randomDataOfSize: 8 ];
58
- NSLog (@" Send challenge: %@ " , [hostChallenge ykf_hexadecimalString ]);
59
60
60
61
uint8_t insInitializeUpdate = 0x50 ;
61
62
YKFAPDU *apdu = [[YKFAPDU alloc ] initWithCla: 0x80 ins: insInitializeUpdate p1: scp03KeyParams.keyRef.kvn p2: 0x00 data: hostChallenge type: YKFAPDUTypeShort];
@@ -68,7 +69,7 @@ + (void)processorWithSCPKeyParams:(id<YKFSCPKeyParamsProtocol> _Nonnull)scpKeyPa
68
69
69
70
if (result.length < 29 ) { // Ensure sufficient length
70
71
if (completion) {
71
- completion (nil , [NSError errorWithDomain: @" SCPErrorDomain " code: - 2 userInfo: @{ NSLocalizedDescriptionKey : @" Unexpected result " } ]);
72
+ completion (nil , [YKFSessionError errorWithCode: YKFSessionErrorUnexpectedResult ]);
72
73
}
73
74
return ;
74
75
}
@@ -87,7 +88,7 @@ + (void)processorWithSCPKeyParams:(id<YKFSCPKeyParamsProtocol> _Nonnull)scpKeyPa
87
88
88
89
if (![genCardCryptogram ykf_constantTimeCompareWithData: cardCryptogram]) {
89
90
if (completion) {
90
- completion (nil , [NSError errorWithDomain: @" SCPErrorDomain " code: - 3 userInfo: @{ NSLocalizedDescriptionKey : @" Invalid card cryptogram " } ]);
91
+ completion (nil , [YKFSessionError errorWithCode: YKFSessionErrorUnexpectedResult ]);
91
92
}
92
93
return ;
93
94
}
@@ -177,7 +178,8 @@ + (void)processorWithSCPKeyParams:(id<YKFSCPKeyParamsProtocol> _Nonnull)scpKeyPa
177
178
}
178
179
NSArray <YKFTLVRecord *> *tlvs = [YKFTLVRecord sequenceOfRecordsFromData: result];
179
180
if (tlvs.count != 2 || [tlvs[0 ] tag ] != 0x5f49 || [tlvs[1 ] tag ] != 0x86 ) {
180
- @throw [NSException exceptionWithName: NSInternalInconsistencyException reason: @" Invalid response TLVs" userInfo: nil ];
181
+ completion (nil , [YKFSessionError errorWithCode: YKFSessionErrorUnexpectedResult]);
182
+ return ;
181
183
}
182
184
183
185
NSData *epkSdEckaEncodedPoint = tlvs[0 ].value ;
@@ -225,12 +227,8 @@ + (void)processorWithSCPKeyParams:(id<YKFSCPKeyParamsProtocol> _Nonnull)scpKeyPa
225
227
226
228
YKFSCPProcessor *processor = [[YKFSCPProcessor alloc ] initWithState: state];
227
229
completion (processor, nil );
228
-
229
- NSLog (@" ✅ done configuring SCP11" );
230
230
}];
231
231
}
232
-
233
-
234
232
}
235
233
236
234
@@ -241,8 +239,6 @@ - (void)executeCommand:(YKFAPDU *)apdu
241
239
usingSmartCardInterface : (YKFSmartCardInterface *)smartCardInterface
242
240
completion : (YKFSmartCardInterfaceResponseBlock)completion {
243
241
244
- NSLog (@" 👾 process %@ , %@ " , apdu, self.state );
245
-
246
242
NSData *data;
247
243
if (encrypt) {
248
244
NSError *error = nil ;
@@ -271,7 +267,6 @@ - (void)executeCommand:(YKFAPDU *)apdu
271
267
YKFAPDU *processedAPDU = [[YKFAPDU alloc ] initWithCla: cla ins: apdu.ins p1: apdu.p1 p2: apdu.p2 data: dataAndMac type: apdu.type];
272
268
273
269
NSMutableData *resultData = [NSMutableData new ];
274
-
275
270
[smartCardInterface executeRecursiveCommand: processedAPDU sendRemainingIns: sendRemainingIns timeout: 20 data: resultData completion: ^(NSData * _Nullable result, NSError * _Nullable error) {
276
271
if (error) {
277
272
completion (nil , error);
0 commit comments