Professional Documents
Culture Documents
For Mifare and SAM card,we have provided the NeptuneLiteAPI to operate the PICC/ICC
moudle.
/* _______________________________
log_message += ",ACQ="+appInfo.getAcquirerID();
log_message += ",Loc="+appInfo.getLocationID();
log_message += ",AppVer="+appInfo.getSoftwareVersion();
log_message += ",SPID="+appInfo.getSPID();
log_message += ",TermID="+appInfo.getTerminalID();
log_message += ",SAM Slot="+SAM_SLOT;
// Pax Context
try {
paxContext = new PaxContext();
paxContext.setSAM_SLOT(SAM_SLOT);
paxContext.setIdal(idal);
paxContext.setIcc(ICC.getInstance(this.paxContext.getIdal()));
paxContext.setPiccType(EPiccType.INTERNAL);
paxContext.setPicc(Picc.getInstance(paxContext.getPiccType(),
paxContext.getIdal()));
paxContext.setSet(true);
if (paxContext.getIcc().detect(paxContext.getSAM_SLOT())) {
byte[] res = paxContext.getIcc().init(paxContext.getSAM_SLOT());
if (res == null) {
Log.e(TAG, "ICC Init Call No Response");
}
paxContext.getIcc().autoResp(paxContext.getSAM_SLOT(), true);
} else {
// SAM not detect
Log.d(TAG, "No SAM Detect");
// Set Error Callback (No SAM Detect)
responseInitialize.setRespCode(ErrorCode.NoSAMpresent);
responseInitialize.setRespMsg("No SAM Detect");
this.initializeCallback.call(responseInitialize);
return ErrorCode.NoSAMpresent;
}
} catch (Exception e) {
Log.d(TAG, "Exception : " + e.getMessage());
// Set Error Callback (SAM Paring Fail)
responseInitialize.setRespCode(ErrorCode.SAMpairingfailure);
responseInitialize.setRespMsg("Exception : " + e.getMessage());
this.initializeCallback.call(responseInitialize);
return ErrorCode.SAMpairingfailure;
}
// App Info
this.appInfo = appInfo;
// Perform Init
/* ----------------------
SAM Authentication */
/*APDU Object*/
IApdu apdu = Packer.getInstance().getApdu();
IApdu.IApduReq apduReq;
IApdu.IApduResp apduResp;
/*Error Code*/
int resp_code = 0;
/*Request Object*/
Request request = new Request();
request.setIs_first_packet(true);
while (!is_finished) {
if (response.getResponse_code() == ERROR_NOERROR) {
if (lc != 0) {
/*Check Selector*/
if (response.getHw_selector() == SELECTOR_ICC) {
isoRes = paxContext.getIcc().isoCommand(paxContext.getSAM_SLOT(),
req);
} else {
// for init session is allowance for SAM (ICC) only.
// PICC not yet initialise at this state.
// Up-on programming condition for each devices.
Log.e(TAG, "SAM Authentication Failed !");
resp_code = ErrorCode.SAMpairingfailure;
break;
}
if (isoRes != null) {
apduResp = apdu.unpack(isoRes);
String isoStr = null;
/* try {
isoStr = "iso command response:" + " Data:" +
Hex.encode(apduResp.getData())
+ " Status:" + apduResp.getStatusString();
} catch (Exception e) {
e.printStackTrace();
}
Log.e(TAG, isoStr);*/
request.setIs_first_packet(false);
request.setSession_id(response.getSession_id());
request.setFunction_id(response.getFunction_id());
request.setHw_selector(response.getHw_selector());
request.setApdu_response_code(Hex.deocde(apduResp.getStatusString()));
request.setDatas(apduResp.getData());
request.setData_len(apduResp.getData().length);
} catch (Exception e) {
e.printStackTrace();
}
response = bss.Init(request);
if (response.isIs_last_packet()) {
is_finished = true;
if (response.getResponse_code() == ERROR_NOERROR) {
Log.e(TAG, "SAM OK");
resp_code = ERROR_NOERROR;
// Set Config
bss.SetConfig(conFinfo);
} else {
Log.e(TAG, "SAM Failed");
Log.e(TAG, "Response Code :: " +
response.getResponse_code());
is_finished = true;
resp_code = ErrorCode.SAMpairingfailure;
}
} else {
//Log.e(TAG, "Session Next Response Code :: " +
response.getResponse_code());
//Log.e(TAG, "Session Next Response :: " +
Hex.encode(response.getDatas()));
}
} else {
// Invalid
is_finished = true;
Log.e(TAG, "SAM Authentication Failed !");
resp_code = ErrorCode.SAMpairingfailure;
}
} else {
// Invalid
is_finished = true;
Log.e(TAG, "SAM Authentication Failed !");
resp_code = ErrorCode.SAMpairingfailure;
log_message += ",Resp="+resp_code;
Util.createLogFile(bss,log_message,true);
this.initializeCallback.call(responseInitialize);
return resp_code;
}
BR
Danny Duan Replied At 2020-06-24 14:47:06