OSX CryptoTokenKit智能卡返回的错误6d00(OSX CryptoTokenKit

2019-10-23 15:33发布

我试图用CryptoTokenKit阅读OSX上的智能卡的主文件,但我总是状态字6d00作为响应。 我也试图运行简单的例子,有一些修改,但得到了同样的错误。 我的读者是金雅拓PC双读卡器。

请让我知道,如果您有任何建议,以解决它。

我使用下面的代码:

    TKSmartCardSlot *slot = [self.smartCardManager slotWithName:slotName];
    TKSmartCard *card = [slot makeSmartCard];
    card.sensitive = YES;
    [card beginSessionWithReply:^(BOOL success, NSError *error)  {
        NSLog(@"%@", error);
        NSLog(@"Proto: %ld", card.currentProtocol);
        NSData *data = [CommonUtil dataFromHexString:@"3F00"]; //<3f00>
        NSLog(@"%@", data);
        [card sendIns:0xA4 p1:0x00 p2:0x00 data:data le:@0
                reply:^(NSData *replyData, UInt16 sw, NSError *error)
         {
             NSLog(@"Response: %@", replyData);
             if (error) {
                 if (error.code == TKErrorCodeCommunicationError) {
                     // set response error code.
                 }
                 NSLog(@"%@", error);
             }
         }];
    }];

Answer 1:

这是愚蠢的,但在没有响应数据没有成功代码预期APDU 90 00le应该是nil

[card sendIns:0xA4 p1:0x00 p2:0x00 data:nil le:nil
                reply:^(NSData *replyData, UInt16 sw, NSError *error)
         {
         }


Answer 2:

状态字6D00是“指令代码不支持或无效” http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx

不是所有的卡允许选择主文件(0x3F00)。



文章来源: OSX CryptoTokenKit SmartCard returned error 6d00