1 |
- var TAG="JLObuWechat33UnPack",dataTool=require("./dataTool"),errorCode=require("./errorCode"),JLWechatProtocol=require("./JLWechatProtocol");export function unpack33Protocol(o,r){var e=JLWechatProtocol.unpackWechatProtocol(o),s={code:"",msg:"",data:""},t={ST:"",SN:"",CTL:"",LEN:"",DATA:"",BCC:""};t.ST=e.substring(0,2),t.SN=e.substring(2,4),t.CTL=e.substring(4,6),t.LEN=e.substring(6,8),t.DATA=e.substring(8,e.length-2),t.BCC=e.substring(e.length-2);var a=dataTool.tenToHex(dataTool.bccCheck(t.SN+t.CTL+t.LEN+t.DATA),2);return t.BCC===a?s=unCmd(t.DATA,r):(s.code=errorCode.errorCode(),s.msg="BCC校验失败",s.data=""),s}function unCmd(o,r){var e={code:0,msg:"",data:""},s=o.substring(2,4);if("00"===s)if(e.code=errorCode.successCode(),e.msg="执行成功",0==r){var t=o.substr(10,o.length);e.data=unApduData(t)[0]}else e.data=o;else"CF"===s?(e.code=errorCode.cardNoExists(),e.msg="执行失败,请插入卡片",e.data=""):(e.code=errorCode.errorCode(),e.msg="执行失败,状态是"+s,e.data="");return e}export function unApduData(o){var r=o.substring(0,2),e=[],s=0;if("81"===r){s=dataTool.hexToTen(o.substring(2,4));var t=o.substring(4),a=0;do{var n=dataTool.hexToTen(t.substring(2,4))+2;e.push(t.substring(4,2*n)),(a+=n)<s&&(t=t.substring(2*n))}while(a<s)}else if("82"===r){s=dataTool.hexToTen(apduStr.substring(2,18));t=o.substring(18),a=0;do{n=dataTool.hexToTen(t.substring(2,4))+2;e.push(t.substring(4,2*n)),(a+=n)<s&&(t=t.substring(2*n))}while(a<s)}else{s=dataTool.hexToTen(r);t=o.substring(2),a=0;do{n=dataTool.hexToTen(t.substring(2,4))+2;e.push(t.substring(4,2*n)),(a+=n)<s&&(t=t.substring(2*n))}while(a<s)}return console.log("apdus:"+e[0]),e}
|