def transferChannel(self, mode, did, channelId, apduList, apdu, timeout=2000): response = TransferChannelResponse() ret = self.dll.TransferChannel_rq(self.fd, mode, did, channelId, apduList, apdu.decode("hex"), timeout) self.__printReturn(ret, "transer channel request") self.checkReturn(ret, "transferChannel") DID = c_int(-1) c_channel_id = c_int(-1) APDUList = c_int(-1) Data = create_string_buffer(128) ReturnStatus = c_int(-1) ret = self.dll.TransferChannel_rs(self.fd, byref(DID), byref(c_channel_id), byref(APDUList), byref(Data), byref(ReturnStatus), timeout) self.__printReturn(ret, "transfer channel response") self.checkReturn(ret, "transferChannel") response.ret = ret response.did = DID.value response.channelId = c_channel_id.value response.apduList = APDUList.value response.data = Data.raw.encode("hex") response.returnStatus = ReturnStatus.value DataParser.checkChannelResponse(response) return response
def psamChannel(self, slot, apduList, apdu, timeout=2000): res = PsamChannelResponse() ret = self.dll.PSAM_CHANNEL_rq(self.fd, slot, apduList, apdu.decode("hex"), timeout) self.__printReturn(ret, "psam channel request") self.checkReturn(ret, "psamChannel") apduNum = c_int(-1) data = create_string_buffer(256) ret = self.dll.PSAM_CHANNEL_rs(self.fd, slot, byref(apduNum), byref(data), timeout) self.__printReturn(ret, "psam channel response") self.checkReturn(ret, "psamChannel") res.ret = ret res.apduList = apduNum.value res.data = data.raw.encode("hex") DataParser.checkChannelResponse(res) return res