You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

wjUtils.js 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. "use strict";
  2. var PROTOCOL_TYPE = 0,
  3. PAGLENMAX = 255,
  4. TRANSFER_TYPE = 0,
  5. DATA_TYPE = 0,
  6. CMD_TYPE = 0;
  7. function showLog() {
  8. if (!(arguments.length < 1)) {
  9. for (var r = arguments[0], t = 1; t < arguments.length; t++) r += " " + arguments[t];
  10. console.log(r)
  11. }
  12. }
  13. function showError() {
  14. if (!(arguments.length < 1)) {
  15. for (var r = arguments[0], t = 1; t < arguments.length; t++) r += " " + arguments[t];
  16. console.error(r)
  17. }
  18. }
  19. function byteArray2hexStr(r) {
  20. return Array.prototype.map.call(new Uint8Array(r), function(r) {
  21. return ("00" + r.toString(16)).slice(-2)
  22. }).join("")
  23. }
  24. function hexStr2byteArray(r) {
  25. return new Uint8Array(r.match(/[\da-f]{2}/gi).map(function(r) {
  26. return parseInt(r, 16)
  27. }))
  28. }
  29. function byte2hexStr(r) {
  30. var t = "0123456789abcdef",
  31. e = "";
  32. return e += t.charAt(r >> 4), e += t.charAt(15 & r)
  33. }
  34. function getProtocolType() {
  35. return PROTOCOL_TYPE
  36. }
  37. function getPagLenMax() {
  38. return PAGLENMAX
  39. }
  40. function getTRANSFER_TYPE() {
  41. return TRANSFER_TYPE
  42. }
  43. function getDATA_TYPE() {
  44. return DATA_TYPE
  45. }
  46. function getCMD_TYPE() {
  47. return CMD_TYPE
  48. }
  49. function APDU2TPDU(r) {
  50. var t = hexStr2byteArray(r),
  51. e = "";
  52. if ("01" == r.substring(0, 2)) e = r;
  53. else {
  54. for (var n = new Array, o = 0, A = 0; A < t[0]; A++) {
  55. var a = o + 2,
  56. P = o + 2 + t[o + 1];
  57. o += 1 + t[o + 1], n[A] = r.substring(2 * a, 2 * P)
  58. }
  59. for (A = 0; A < t[0]; A++) {
  60. var T = n[A].length / 2;
  61. e += byte2hexStr(A + 1 & 255) + byte2hexStr(255 & T) + n[A]
  62. }
  63. }
  64. return e
  65. }
  66. function TPDU2APDU(r) {
  67. for (var t = hexStr2byteArray(r), e = "", n = new Array, o = 0, A = t.byteLength; o < A;) {
  68. var a = t[o++],
  69. P = t[o++];
  70. n[a - 1] = r.substring(2 * o, 2 * (o + P)), o += P
  71. }
  72. e = byte2hexStr(255 & n.length);
  73. for (var T = 0; T < n.length; T++) e += byte2hexStr(n[T].length / 2 & 255) + n[T];
  74. return e
  75. }
  76. module.exports = {
  77. showLog: showLog,
  78. byteArray2hexStr: byteArray2hexStr,
  79. hexStr2byteArray: hexStr2byteArray,
  80. showError: showError,
  81. byte2hexStr: byte2hexStr,
  82. getProtocolType: getProtocolType,
  83. getPagLenMax: getPagLenMax,
  84. getTRANSFER_TYPE: getTRANSFER_TYPE,
  85. getDATA_TYPE: getDATA_TYPE,
  86. getCMD_TYPE: getCMD_TYPE,
  87. APDU2TPDU: APDU2TPDU,
  88. TPDU2APDU: TPDU2APDU
  89. };