OSX CryptoTokenKit SmartCard返回错误6d00

时间:2015-07-04 12:46:26

标签: macos smartcard pcsc

我尝试使用CryptoTokenKit在OSX上读取智能卡的主文件,但我总是将状态字6d00作为响应。我还试图运行trivial example进行一些修改但得到相同的错误。我的读者是金雅拓PC Twin Reader。

如果您有任何修改建议,请与我们联系。

我使用以下代码:

    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);
             }
         }];
    }];

2 个答案:

答案 0 :(得分:1)

这很愚蠢,但在没有成功代码90 00的情况下预计没有响应数据的apdu中,le应为nil

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

答案 1 :(得分:0)

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

并非所有卡都允许选择主文件(0x3F00)。