keycard-sdk 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +2 -2
  2. package/dist/apdu-command.js +15 -15
  3. package/dist/apdu-command.js.map +1 -1
  4. package/dist/apdu-exception.d.ts +1 -1
  5. package/dist/apdu-exception.js +19 -46
  6. package/dist/apdu-exception.js.map +1 -1
  7. package/dist/apdu-response.d.ts +2 -2
  8. package/dist/apdu-response.js +35 -42
  9. package/dist/apdu-response.js.map +1 -1
  10. package/dist/application-info.js +41 -39
  11. package/dist/application-info.js.map +1 -1
  12. package/dist/application-status.js +9 -11
  13. package/dist/application-status.js.map +1 -1
  14. package/dist/ber-tlv.d.ts +1 -0
  15. package/dist/ber-tlv.js +31 -31
  16. package/dist/ber-tlv.js.map +1 -1
  17. package/dist/bip32key.d.ts +1 -1
  18. package/dist/bip32key.js +60 -60
  19. package/dist/bip32key.js.map +1 -1
  20. package/dist/card-channel.d.ts +2 -2
  21. package/dist/card-channel.js +1 -2
  22. package/dist/card-listener.d.ts +1 -1
  23. package/dist/card-listener.js +1 -2
  24. package/dist/cash-application-info.js +16 -18
  25. package/dist/cash-application-info.js.map +1 -1
  26. package/dist/cash-commandset.d.ts +2 -2
  27. package/dist/cash-commandset.js +15 -65
  28. package/dist/cash-commandset.js.map +1 -1
  29. package/dist/certificate.d.ts +13 -0
  30. package/dist/certificate.js +78 -0
  31. package/dist/certificate.js.map +1 -0
  32. package/dist/commandset.d.ts +8 -7
  33. package/dist/commandset.js +245 -435
  34. package/dist/commandset.js.map +1 -1
  35. package/dist/constants.d.ts +9 -0
  36. package/dist/constants.js +11 -5
  37. package/dist/constants.js.map +1 -1
  38. package/dist/crypto-utils.d.ts +3 -6
  39. package/dist/crypto-utils.js +14 -25
  40. package/dist/crypto-utils.js.map +1 -1
  41. package/dist/ethereum.js +4 -11
  42. package/dist/ethereum.js.map +1 -1
  43. package/dist/global-platform-commandset.d.ts +33 -0
  44. package/dist/global-platform-commandset.js +169 -0
  45. package/dist/global-platform-commandset.js.map +1 -0
  46. package/dist/global-platform-constants.d.ts +22 -0
  47. package/dist/global-platform-constants.js +24 -0
  48. package/dist/global-platform-constants.js.map +1 -0
  49. package/dist/global-platform-crypto.d.ts +9 -0
  50. package/dist/global-platform-crypto.js +80 -0
  51. package/dist/global-platform-crypto.js.map +1 -0
  52. package/dist/global-platform.d.ts +19 -0
  53. package/dist/global-platform.js +21 -0
  54. package/dist/global-platform.js.map +1 -0
  55. package/dist/ident-comandset.d.ts +8 -0
  56. package/dist/ident-comandset.js +18 -0
  57. package/dist/ident-comandset.js.map +1 -0
  58. package/dist/identifiers.d.ts +6 -0
  59. package/dist/identifiers.js +9 -0
  60. package/dist/identifiers.js.map +1 -0
  61. package/dist/index.d.ts +24 -16
  62. package/dist/index.js +40 -38
  63. package/dist/index.js.map +1 -1
  64. package/dist/key-path.js +48 -52
  65. package/dist/key-path.js.map +1 -1
  66. package/dist/load.d.ts +11 -0
  67. package/dist/load.js +71 -0
  68. package/dist/load.js.map +1 -0
  69. package/dist/mnemonic-english-dictionary.js +2 -5
  70. package/dist/mnemonic-english-dictionary.js.map +1 -1
  71. package/dist/mnemonic.d.ts +1 -1
  72. package/dist/mnemonic.js +34 -41
  73. package/dist/mnemonic.js.map +1 -1
  74. package/dist/pairing.js +17 -23
  75. package/dist/pairing.js.map +1 -1
  76. package/dist/pcsc-card-channel.d.ts +7 -7
  77. package/dist/pcsc-card-channel.js +27 -79
  78. package/dist/pcsc-card-channel.js.map +1 -1
  79. package/dist/recoverable-signature.d.ts +11 -6
  80. package/dist/recoverable-signature.js +59 -35
  81. package/dist/recoverable-signature.js.map +1 -1
  82. package/dist/scp02-channel.d.ts +14 -0
  83. package/dist/scp02-channel.js +54 -0
  84. package/dist/scp02-channel.js.map +1 -0
  85. package/dist/scp02-keys.d.ts +6 -0
  86. package/dist/scp02-keys.js +11 -0
  87. package/dist/scp02-keys.js.map +1 -0
  88. package/dist/scp02-session.d.ts +8 -0
  89. package/dist/scp02-session.js +14 -0
  90. package/dist/scp02-session.js.map +1 -0
  91. package/dist/scp02-wrapper.d.ts +7 -0
  92. package/dist/scp02-wrapper.js +37 -0
  93. package/dist/scp02-wrapper.js.map +1 -0
  94. package/dist/secure-channel.d.ts +4 -4
  95. package/dist/secure-channel.js +171 -289
  96. package/dist/secure-channel.js.map +1 -1
  97. package/dist/types/recoverable-signature-types.d.ts +9 -0
  98. package/dist/types/recoverable-signature-types.js +2 -0
  99. package/dist/types/recoverable-signature-types.js.map +1 -0
  100. package/example/example.ts +127 -0
  101. package/example/global-platform-example.ts +62 -0
  102. package/jest.config.js +8 -0
  103. package/package.json +24 -16
  104. package/src/apdu-command.ts +36 -0
  105. package/src/apdu-exception.ts +32 -0
  106. package/src/apdu-response.ts +71 -0
  107. package/src/application-info.ts +84 -0
  108. package/src/application-status.ts +18 -0
  109. package/src/ber-tlv.ts +78 -0
  110. package/src/bip32key.ts +138 -0
  111. package/src/card-channel.ts +6 -0
  112. package/src/card-listener.ts +6 -0
  113. package/src/cash-application-info.ts +24 -0
  114. package/src/cash-commandset.ts +24 -0
  115. package/src/certificate.ts +97 -0
  116. package/src/commandset.ts +326 -0
  117. package/src/constants.ts +33 -0
  118. package/src/crypto-utils.ts +50 -0
  119. package/src/ethereum.ts +7 -0
  120. package/src/global-platform-commandset.ts +215 -0
  121. package/src/global-platform-constants.ts +26 -0
  122. package/src/global-platform-crypto.ts +87 -0
  123. package/src/global-platform.ts +22 -0
  124. package/src/ident-comandset.ts +23 -0
  125. package/src/identifiers.ts +9 -0
  126. package/src/index.ts +45 -0
  127. package/src/key-path.ts +107 -0
  128. package/src/load.ts +89 -0
  129. package/src/mnemonic-english-dictionary.ts +2052 -0
  130. package/src/mnemonic.ts +66 -0
  131. package/src/pairing.ts +31 -0
  132. package/src/pcsc-card-channel.ts +44 -0
  133. package/src/recoverable-signature.ts +77 -0
  134. package/src/scp02-channel.ts +73 -0
  135. package/src/scp02-keys.ts +11 -0
  136. package/src/scp02-session.ts +17 -0
  137. package/src/scp02-wrapper.ts +44 -0
  138. package/src/secure-channel.ts +250 -0
  139. package/src/types/recoverable-signature-types.ts +9 -0
  140. package/test/apdu-command.test.ts +11 -0
  141. package/test/apdu-response.test.ts +46 -0
  142. package/test/certificate.test.ts +18 -0
  143. package/test/key-path.test.ts +21 -0
  144. package/test/mnemonic.test.ts +34 -0
  145. package/test/pairing.test.ts +14 -0
  146. package/tsconfig.json +33 -0
package/README.md CHANGED
@@ -6,10 +6,10 @@ Keycard SDK is a Typescript implementation of the Keycard API.
6
6
 
7
7
  You can install Keycard SDK using npm.
8
8
 
9
- `npm install https://github.com/choppu/keycard-sdk`
9
+ `npm install keycard-sdk`
10
10
 
11
11
  ## Usage
12
12
 
13
- For usage examples please check `example/example.ts` which shows most of the SDK functionality. You can also check [Keycard Desktop](https://github.com/choppu/keycard-desktop) application which can be used to manage Keycard.
13
+ For usage examples please check `example/example.ts` and `example/global-platform-example.ts` which shows most of the SDK functionality. You can also check [Keycard Desktop](https://github.com/choppu/keycard-desktop) application which can be used to manage Keycard.
14
14
 
15
15
  For full documentation please check [Keycard Docs](https://keycard.tech/docs/) page. Since this SDK follows the same structure of the official Java SDK you can use it as a reference.
@@ -1,10 +1,12 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.APDUCommand = void 0;
4
- var APDU_FIXED_PARAMS_SIZE = 5;
5
- var APDUCommand = /** @class */ (function () {
6
- function APDUCommand(cla, ins, p1, p2, data, needsLE) {
7
- if (needsLE === void 0) { needsLE = false; }
1
+ const APDU_FIXED_PARAMS_SIZE = 5;
2
+ export class APDUCommand {
3
+ cla;
4
+ ins;
5
+ p1;
6
+ p2;
7
+ data;
8
+ needsLE;
9
+ constructor(cla, ins, p1, p2, data, needsLE = false) {
8
10
  this.cla = cla;
9
11
  this.ins = ins;
10
12
  this.p1 = p1;
@@ -12,12 +14,12 @@ var APDUCommand = /** @class */ (function () {
12
14
  this.data = new Uint8Array(data);
13
15
  this.needsLE = needsLE;
14
16
  }
15
- APDUCommand.prototype.serialize = function () {
16
- var apduBufLength = APDU_FIXED_PARAMS_SIZE + this.data.byteLength;
17
+ serialize() {
18
+ let apduBufLength = APDU_FIXED_PARAMS_SIZE + this.data.byteLength;
17
19
  if (this.needsLE)
18
20
  apduBufLength++;
19
- var outputArr = new Uint8Array(apduBufLength);
20
- var i = 0;
21
+ let outputArr = new Uint8Array(apduBufLength);
22
+ let i = 0;
21
23
  outputArr[i++] = this.cla;
22
24
  outputArr[i++] = this.ins;
23
25
  outputArr[i++] = this.p1;
@@ -25,8 +27,6 @@ var APDUCommand = /** @class */ (function () {
25
27
  outputArr[i++] = this.data.byteLength;
26
28
  outputArr.set(this.data, i);
27
29
  return outputArr;
28
- };
29
- return APDUCommand;
30
- }());
31
- exports.APDUCommand = APDUCommand;
30
+ }
31
+ }
32
32
  //# sourceMappingURL=apdu-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apdu-command.js","sourceRoot":"","sources":["../src/apdu-command.ts"],"names":[],"mappings":";;;AAAA,IAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;IAQE,qBAAY,GAAW,EAAE,GAAW,EAAE,EAAU,EAAE,EAAU,EAAE,IAAgB,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QAC7F,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,+BAAS,GAAT;QACE,IAAI,aAAa,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO;YAAE,aAAa,EAAE,CAAC;QAElC,IAAI,SAAS,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACH,kBAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,kCAAW"}
1
+ {"version":3,"file":"apdu-command.js","sourceRoot":"","sources":["../src/apdu-command.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,OAAO,WAAW;IACtB,GAAG,CAAS;IACZ,GAAG,CAAS;IACZ,EAAE,CAAS;IACX,EAAE,CAAS;IACX,IAAI,CAAa;IACjB,OAAO,CAAU;IAEjB,YAAY,GAAW,EAAE,GAAW,EAAE,EAAU,EAAE,EAAU,EAAE,IAAgB,EAAE,OAAO,GAAG,KAAK;QAC7F,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,SAAS;QACP,IAAI,aAAa,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO;YAAE,aAAa,EAAE,CAAC;QAElC,IAAI,SAAS,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5B,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -8,5 +8,5 @@ export declare class WrongPINException extends APDUException {
8
8
  getRetryAttempts(): number;
9
9
  }
10
10
  export declare class CardIOError extends Error {
11
- constructor(err: any);
11
+ constructor(err: Error);
12
12
  }
@@ -1,55 +1,28 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- exports.__esModule = true;
16
- exports.CardIOError = exports.WrongPINException = exports.APDUException = void 0;
17
- var APDUException = /** @class */ (function (_super) {
18
- __extends(APDUException, _super);
19
- function APDUException(message, sw) {
20
- if (sw === void 0) { sw = 0; }
21
- var _this = this;
1
+ export class APDUException extends Error {
2
+ sw;
3
+ constructor(message, sw = 0) {
22
4
  if (sw) {
23
- _this = _super.call(this, message + ", 0x" + sw.toString(16)) || this;
5
+ super(message + ", 0x" + sw.toString(16));
24
6
  }
25
7
  else {
26
- _this = _super.call(this, message) || this;
8
+ super(message);
27
9
  }
28
- _this.sw = sw;
29
- return _this;
10
+ this.sw = sw;
30
11
  }
31
- return APDUException;
32
- }(Error));
33
- exports.APDUException = APDUException;
34
- var WrongPINException = /** @class */ (function (_super) {
35
- __extends(WrongPINException, _super);
36
- function WrongPINException(retryAttempts) {
37
- var _this = _super.call(this, "Error: Wrong PIN") || this;
38
- _this.retryAttempts = retryAttempts;
39
- return _this;
12
+ }
13
+ export class WrongPINException extends APDUException {
14
+ retryAttempts;
15
+ constructor(retryAttempts) {
16
+ super("Error: Wrong PIN");
17
+ this.retryAttempts = retryAttempts;
40
18
  }
41
- WrongPINException.prototype.getRetryAttempts = function () {
19
+ getRetryAttempts() {
42
20
  return this.retryAttempts;
43
- };
44
- return WrongPINException;
45
- }(APDUException));
46
- exports.WrongPINException = WrongPINException;
47
- var CardIOError = /** @class */ (function (_super) {
48
- __extends(CardIOError, _super);
49
- function CardIOError(err) {
50
- return _super.call(this, "CardIO Error: " + err) || this;
51
21
  }
52
- return CardIOError;
53
- }(Error));
54
- exports.CardIOError = CardIOError;
22
+ }
23
+ export class CardIOError extends Error {
24
+ constructor(err) {
25
+ super("CardIO Error: " + err);
26
+ }
27
+ }
55
28
  //# sourceMappingURL=apdu-exception.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apdu-exception.js","sourceRoot":"","sources":["../src/apdu-exception.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;IAAmC,iCAAK;IAGtC,uBAAY,OAAe,EAAE,EAAM;QAAN,mBAAA,EAAA,MAAM;QAAnC,iBAQC;QAPC,IAAG,EAAE,EAAE;YACL,QAAA,kBAAM,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAC;SAC3C;aAAM;YACL,QAAA,kBAAM,OAAO,CAAC,SAAC;SAChB;QAED,KAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;IACf,CAAC;IACH,oBAAC;AAAD,CAAC,AAZD,CAAmC,KAAK,GAYvC;AAZY,sCAAa;AAc1B;IAAuC,qCAAa;IAGlD,2BAAY,aAAqB;QAAjC,YACE,kBAAM,kBAAkB,CAAC,SAE1B;QADC,KAAI,CAAC,aAAa,GAAG,aAAa,CAAC;;IACrC,CAAC;IAED,4CAAgB,GAAhB;QACE,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACH,wBAAC;AAAD,CAAC,AAXD,CAAuC,aAAa,GAWnD;AAXY,8CAAiB;AAa9B;IAAiC,+BAAK;IACpC,qBAAY,GAAQ;eAClB,kBAAM,gBAAgB,GAAG,GAAG,CAAC;IAC/B,CAAC;IACH,kBAAC;AAAD,CAAC,AAJD,CAAiC,KAAK,GAIrC;AAJY,kCAAW"}
1
+ {"version":3,"file":"apdu-exception.js","sourceRoot":"","sources":["../src/apdu-exception.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,EAAE,CAAS;IAEX,YAAY,OAAe,EAAE,EAAE,GAAG,CAAC;QACjC,IAAG,EAAE,EAAE,CAAC;YACN,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,OAAO,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClD,aAAa,CAAS;IAEtB,YAAY,aAAqB;QAC/B,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,GAAU;QACpB,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -7,7 +7,7 @@ export declare class APDUResponse {
7
7
  private parse;
8
8
  constructor(apdu: Uint8Array);
9
9
  isOK(): boolean;
10
- checkSW(codes: number | number[], message?: any): APDUResponse;
11
- checkOK(message?: any): APDUResponse;
10
+ checkSW(codes: number | number[], message?: string | null): APDUResponse;
11
+ checkOK(message?: string | null): APDUResponse;
12
12
  checkAuthOK(): APDUResponse;
13
13
  }
@@ -1,34 +1,30 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.APDUResponse = void 0;
4
- var apdu_exception_1 = require("./apdu-exception");
5
- var SW_OK = 0x9000;
6
- var SW_SECURITY_CONDITION_NOT_SATISFIED = 0x6982;
7
- var SW_AUTHENTICATION_METHOD_BLOCKED = 0x6983;
8
- var SW_CARD_LOCKED = 0x6283;
9
- var SW_REFERENCED_DATA_NOT_FOUND = 0x6A88;
10
- var SW_CONDITIONS_OF_USE_NOT_SATISFIED = 0x6985; // applet may be already installed
11
- var SW_WRONG_PIN_MASK = 0x63C0;
12
- var APDUResponse = /** @class */ (function () {
13
- function APDUResponse(apdu) {
1
+ import { APDUException, WrongPINException } from "./apdu-exception.js";
2
+ import { Constants } from "./constants.js";
3
+ const SW_WRONG_PIN_MASK = 0x63C0;
4
+ export class APDUResponse {
5
+ apdu;
6
+ data;
7
+ sw;
8
+ sw1;
9
+ sw2;
10
+ parse(apdu) {
11
+ let length = apdu.byteLength;
12
+ this.sw1 = apdu[length - 2] & 0xff;
13
+ this.sw2 = apdu[length - 1] & 0xff;
14
+ this.sw = (this.sw1 << 8) | this.sw2;
15
+ this.data = new Uint8Array(apdu.slice(0, (length - 2)));
16
+ }
17
+ constructor(apdu) {
14
18
  if (apdu.byteLength < 2) {
15
19
  throw new Error("APDU response must be at least 2 bytes");
16
20
  }
17
21
  this.apdu = apdu;
18
22
  this.parse(this.apdu);
19
23
  }
20
- APDUResponse.prototype.parse = function (apdu) {
21
- var length = apdu.byteLength;
22
- this.sw1 = apdu[length - 2] & 0xff;
23
- this.sw2 = apdu[length - 1] & 0xff;
24
- this.sw = (this.sw1 << 8) | this.sw2;
25
- this.data = new Uint8Array(apdu.slice(0, (length - 2)));
26
- };
27
- APDUResponse.prototype.isOK = function () {
28
- return this.sw == SW_OK;
29
- };
30
- APDUResponse.prototype.checkSW = function (codes, message) {
31
- if (message === void 0) { message = null; }
24
+ isOK() {
25
+ return this.sw == Constants.SW_OK;
26
+ }
27
+ checkSW(codes, message) {
32
28
  if (Array.isArray(codes)) {
33
29
  if (codes.includes(this.sw)) {
34
30
  return this;
@@ -40,32 +36,29 @@ var APDUResponse = /** @class */ (function () {
40
36
  }
41
37
  }
42
38
  if (message) {
43
- throw new apdu_exception_1.APDUException(message, this.sw);
39
+ throw new APDUException(message, this.sw);
44
40
  }
45
41
  else {
46
42
  switch (this.sw) {
47
- case SW_SECURITY_CONDITION_NOT_SATISFIED:
48
- throw new apdu_exception_1.APDUException("Security condition not satisfied", this.sw);
49
- case SW_AUTHENTICATION_METHOD_BLOCKED:
50
- throw new apdu_exception_1.APDUException("Authentication method blocked", this.sw);
43
+ case Constants.SW_SECURITY_CONDITION_NOT_SATISFIED:
44
+ throw new APDUException("Security condition not satisfied", this.sw);
45
+ case Constants.SW_AUTHENTICATION_METHOD_BLOCKED:
46
+ throw new APDUException("Authentication method blocked", this.sw);
51
47
  default:
52
- throw new apdu_exception_1.APDUException("Unexpected error SW", this.sw);
48
+ throw new APDUException("Unexpected error SW", this.sw);
53
49
  }
54
50
  }
55
- };
56
- APDUResponse.prototype.checkOK = function (message) {
57
- if (message === void 0) { message = null; }
58
- return this.checkSW(SW_OK, message);
59
- };
60
- APDUResponse.prototype.checkAuthOK = function () {
51
+ }
52
+ checkOK(message = null) {
53
+ return this.checkSW(Constants.SW_OK, message);
54
+ }
55
+ checkAuthOK() {
61
56
  if ((this.sw & SW_WRONG_PIN_MASK) == SW_WRONG_PIN_MASK) {
62
- throw new apdu_exception_1.WrongPINException(this.sw2 & 0x0F);
57
+ throw new WrongPINException(this.sw2 & 0x0F);
63
58
  }
64
59
  else {
65
60
  return this.checkOK();
66
61
  }
67
- };
68
- return APDUResponse;
69
- }());
70
- exports.APDUResponse = APDUResponse;
62
+ }
63
+ }
71
64
  //# sourceMappingURL=apdu-response.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apdu-response.js","sourceRoot":"","sources":["../src/apdu-response.ts"],"names":[],"mappings":";;;AAAA,mDAAiE;AAEjE,IAAM,KAAK,GAAG,MAAM,CAAC;AACrB,IAAM,mCAAmC,GAAG,MAAM,CAAC;AACnD,IAAM,gCAAgC,GAAG,MAAM,CAAC;AAChD,IAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,IAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,IAAM,kCAAkC,GAAG,MAAM,CAAC,CAAC,kCAAkC;AACrF,IAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC;IAgBE,sBAAY,IAAgB;QAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAhBM,4BAAK,GAAb,UAAc,IAAgB;QAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAE7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAWD,2BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC;IAC1B,CAAC;IAED,8BAAO,GAAP,UAAQ,KAAsB,EAAE,OAAc;QAAd,wBAAA,EAAA,cAAc;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAC;aACb;SACF;aAAM;YACL,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;SACF;QAED,IAAG,OAAO,EAAE;YACV,MAAM,IAAI,8BAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3C;aAAM;YACL,QAAQ,IAAI,CAAC,EAAE,EAAE;gBACf,KAAK,mCAAmC;oBACtC,MAAM,IAAI,8BAAa,CAAC,kCAAkC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvE,KAAK,gCAAgC;oBACnC,MAAM,IAAI,8BAAa,CAAC,+BAA+B,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpE;oBACE,MAAM,IAAI,8BAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;aAC3D;SACF;IACH,CAAC;IAED,8BAAO,GAAP,UAAQ,OAAc;QAAd,wBAAA,EAAA,cAAc;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,kCAAW,GAAX;QACE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,iBAAiB,EAAE;YACtD,MAAM,IAAI,kCAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;SAC9C;aAAM;YACL,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;IACH,CAAC;IACH,mBAAC;AAAD,CAAC,AAjED,IAiEC;AAjEY,oCAAY"}
1
+ {"version":3,"file":"apdu-response.js","sourceRoot":"","sources":["../src/apdu-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,MAAM,OAAO,YAAY;IACvB,IAAI,CAAa;IACjB,IAAI,CAAc;IAClB,EAAE,CAAU;IACZ,GAAG,CAAU;IACb,GAAG,CAAU;IAEN,KAAK,CAAC,IAAgB;QAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAE7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,IAAgB;QAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,KAAsB,EAAE,OAAuB;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAG,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChB,KAAK,SAAS,CAAC,mCAAmC;oBAChD,MAAM,IAAI,aAAa,CAAC,kCAAkC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvE,KAAK,SAAS,CAAC,gCAAgC;oBAC7C,MAAM,IAAI,aAAa,CAAC,+BAA+B,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpE;oBACE,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,UAAyB,IAAI;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,iBAAiB,EAAE,CAAC;YACvD,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -1,24 +1,28 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.ApplicationInfo = void 0;
4
- var ber_tlv_1 = require("./ber-tlv");
5
- var crypto_utils_1 = require("./crypto-utils");
6
- var constants_1 = require("./constants");
7
- var TLV_UID = 0x8f;
8
- var TLV_KEY_UID = 0x8e;
9
- var TLV_CAPABILITIES = 0x8d;
10
- var CAPABILITY_SECURE_CHANNEL = 0x01;
11
- var CAPABILITY_KEY_MANAGEMENT = 0x02;
12
- var CAPABILITY_CREDENTIALS_MANAGEMENT = 0x04;
13
- var CAPABILITY_NDEF = 0x08;
14
- var CAPABILITIES_ALL = CAPABILITY_SECURE_CHANNEL | CAPABILITY_KEY_MANAGEMENT | CAPABILITY_CREDENTIALS_MANAGEMENT | CAPABILITY_NDEF;
15
- var ApplicationInfo = /** @class */ (function () {
16
- function ApplicationInfo(tlvData) {
17
- var tlv = new ber_tlv_1.BERTLV(tlvData);
18
- var topTag = tlv.readTag();
1
+ import { BERTLV } from "./ber-tlv.js";
2
+ import { CryptoUtils } from "./crypto-utils.js";
3
+ import { Constants } from "./constants.js";
4
+ const TLV_UID = 0x8f;
5
+ const TLV_KEY_UID = 0x8e;
6
+ const TLV_CAPABILITIES = 0x8d;
7
+ const CAPABILITY_SECURE_CHANNEL = 0x01;
8
+ const CAPABILITY_KEY_MANAGEMENT = 0x02;
9
+ const CAPABILITY_CREDENTIALS_MANAGEMENT = 0x04;
10
+ const CAPABILITY_NDEF = 0x08;
11
+ const CAPABILITIES_ALL = CAPABILITY_SECURE_CHANNEL | CAPABILITY_KEY_MANAGEMENT | CAPABILITY_CREDENTIALS_MANAGEMENT | CAPABILITY_NDEF;
12
+ export class ApplicationInfo {
13
+ initializedCard;
14
+ instanceUID;
15
+ secureChannelPubKey;
16
+ appVersion;
17
+ freePairingSlots;
18
+ keyUID;
19
+ capabilities;
20
+ constructor(tlvData) {
21
+ let tlv = new BERTLV(tlvData);
22
+ let topTag = tlv.readTag();
19
23
  tlv.unreadLastTag();
20
- if (topTag == constants_1.Constants.TLV_PUB_KEY) {
21
- this.secureChannelPubKey = tlv.readPrimitive(constants_1.Constants.TLV_PUB_KEY);
24
+ if (topTag == Constants.TLV_PUB_KEY) {
25
+ this.secureChannelPubKey = tlv.readPrimitive(Constants.TLV_PUB_KEY);
22
26
  this.initializedCard = false;
23
27
  this.capabilities = CAPABILITY_CREDENTIALS_MANAGEMENT;
24
28
  if (this.secureChannelPubKey.length > 0) {
@@ -26,13 +30,13 @@ var ApplicationInfo = /** @class */ (function () {
26
30
  }
27
31
  return;
28
32
  }
29
- tlv.enterConstructed(constants_1.Constants.TLV_APPLICATION_INFO_TEMPLATE);
33
+ tlv.enterConstructed(Constants.TLV_APPLICATION_INFO_TEMPLATE);
30
34
  this.instanceUID = tlv.readPrimitive(TLV_UID);
31
- this.secureChannelPubKey = tlv.readPrimitive(constants_1.Constants.TLV_PUB_KEY);
35
+ this.secureChannelPubKey = tlv.readPrimitive(Constants.TLV_PUB_KEY);
32
36
  this.appVersion = tlv.readInt();
33
37
  this.freePairingSlots = tlv.readInt();
34
38
  this.keyUID = tlv.readPrimitive(TLV_KEY_UID);
35
- if (tlv.readTag() != constants_1.Constants.END_OF_TLV) {
39
+ if (tlv.readTag() != Constants.END_OF_TLV) {
36
40
  tlv.unreadLastTag();
37
41
  this.capabilities = tlv.readPrimitive(TLV_CAPABILITIES)[0];
38
42
  }
@@ -41,25 +45,23 @@ var ApplicationInfo = /** @class */ (function () {
41
45
  }
42
46
  this.initializedCard = true;
43
47
  }
44
- ApplicationInfo.prototype.hasMasterKey = function () {
48
+ hasMasterKey() {
45
49
  return this.keyUID.length != 0;
46
- };
47
- ApplicationInfo.prototype.getAppVersionString = function () {
48
- return crypto_utils_1.CryptoUtils.getAppVersionString(this.appVersion);
49
- };
50
- ApplicationInfo.prototype.hasSecureChannelCapability = function () {
50
+ }
51
+ getAppVersionString() {
52
+ return CryptoUtils.getAppVersionString(this.appVersion);
53
+ }
54
+ hasSecureChannelCapability() {
51
55
  return (this.capabilities & CAPABILITY_SECURE_CHANNEL) == CAPABILITY_SECURE_CHANNEL;
52
- };
53
- ApplicationInfo.prototype.hasKeyManagementCapability = function () {
56
+ }
57
+ hasKeyManagementCapability() {
54
58
  return (this.capabilities & CAPABILITY_KEY_MANAGEMENT) == CAPABILITY_KEY_MANAGEMENT;
55
- };
56
- ApplicationInfo.prototype.hasCredentialsManagementCapability = function () {
59
+ }
60
+ hasCredentialsManagementCapability() {
57
61
  return (this.capabilities & CAPABILITY_CREDENTIALS_MANAGEMENT) == CAPABILITY_CREDENTIALS_MANAGEMENT;
58
- };
59
- ApplicationInfo.prototype.hasNDEFCapability = function () {
62
+ }
63
+ hasNDEFCapability() {
60
64
  return (this.capabilities & CAPABILITY_NDEF) == CAPABILITY_NDEF;
61
- };
62
- return ApplicationInfo;
63
- }());
64
- exports.ApplicationInfo = ApplicationInfo;
65
+ }
66
+ }
65
67
  //# sourceMappingURL=application-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application-info.js","sourceRoot":"","sources":["../src/application-info.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,+CAA4C;AAC5C,yCAAuC;AAGvC,IAAM,OAAO,GAAG,IAAI,CAAC;AACrB,IAAM,WAAW,GAAG,IAAI,CAAC;AACzB,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,IAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,IAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,IAAM,iCAAiC,GAAG,IAAI,CAAC;AAC/C,IAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,IAAM,gBAAgB,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,iCAAiC,GAAG,eAAe,CAAC;AAErI;IASE,yBAAY,OAAmB;QAC7B,IAAI,GAAG,GAAG,IAAI,gBAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,GAAG,CAAC,aAAa,EAAE,CAAC;QAEpB,IAAI,MAAM,IAAI,qBAAS,CAAC,WAAW,EAAE;YACnC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,aAAa,CAAC,qBAAS,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,iCAAiC,CAAC;YAEtD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,YAAY,IAAI,yBAAyB,CAAC;aAChD;YAED,OAAO;SACR;QAED,GAAG,CAAC,gBAAgB,CAAC,qBAAS,CAAC,6BAA6B,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,aAAa,CAAC,qBAAS,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,qBAAS,CAAC,UAAU,EAAE;YACzC,GAAG,CAAC,aAAa,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5D;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;SACtC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,sCAAY,GAAZ;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6CAAmB,GAAnB;QACE,OAAO,0BAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,oDAA0B,GAA1B;QACE,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,IAAI,yBAAyB,CAAC;IACtF,CAAC;IAED,oDAA0B,GAA1B;QACE,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,IAAI,yBAAyB,CAAC;IACtF,CAAC;IAED,4DAAkC,GAAlC;QACE,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,iCAAiC,CAAC,IAAI,iCAAiC,CAAC;IACtG,CAAC;IAED,2CAAiB,GAAjB;QACE,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,eAAe,CAAC;IAClE,CAAC;IACH,sBAAC;AAAD,CAAC,AAnED,IAmEC;AAnEY,0CAAe"}
1
+ {"version":3,"file":"application-info.js","sourceRoot":"","sources":["../src/application-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAC/C,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,iCAAiC,GAAG,eAAe,CAAC;AAErI,MAAM,OAAO,eAAe;IAC1B,eAAe,CAAU;IACzB,WAAW,CAAc;IACzB,mBAAmB,CAAa;IAChC,UAAU,CAAU;IACpB,gBAAgB,CAAU;IAC1B,MAAM,CAAc;IACpB,YAAY,CAAS;IAErB,YAAY,OAAmB;QAC7B,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,GAAG,CAAC,aAAa,EAAE,CAAC;QAEpB,IAAI,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,iCAAiC,CAAC;YAEtD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,YAAY,IAAI,yBAAyB,CAAC;YACjD,CAAC;YAED,OAAO;QACT,CAAC;QAED,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1C,GAAG,CAAC,aAAa,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;QACjB,OAAO,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,0BAA0B;QACxB,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,IAAI,yBAAyB,CAAC;IACtF,CAAC;IAED,0BAA0B;QACxB,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,IAAI,yBAAyB,CAAC;IACtF,CAAC;IAED,kCAAkC;QAChC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,iCAAiC,CAAC,IAAI,iCAAiC,CAAC;IACtG,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,eAAe,CAAC;IAClE,CAAC;CACF"}
@@ -1,17 +1,15 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.ApplicationStatus = void 0;
4
- var ber_tlv_1 = require("./ber-tlv");
5
- var TLV_APPLICATION_STATUS_TEMPLATE = 0xa3;
6
- var ApplicationStatus = /** @class */ (function () {
7
- function ApplicationStatus(tlvData) {
8
- var tlv = new ber_tlv_1.BERTLV(tlvData);
1
+ import { BERTLV } from "./ber-tlv.js";
2
+ const TLV_APPLICATION_STATUS_TEMPLATE = 0xa3;
3
+ export class ApplicationStatus {
4
+ pinRetryCount;
5
+ pukRetryCount;
6
+ hasMasterKey;
7
+ constructor(tlvData) {
8
+ let tlv = new BERTLV(tlvData);
9
9
  tlv.enterConstructed(TLV_APPLICATION_STATUS_TEMPLATE);
10
10
  this.pinRetryCount = tlv.readInt();
11
11
  this.pukRetryCount = tlv.readInt();
12
12
  this.hasMasterKey = tlv.readBoolean();
13
13
  }
14
- return ApplicationStatus;
15
- }());
16
- exports.ApplicationStatus = ApplicationStatus;
14
+ }
17
15
  //# sourceMappingURL=application-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application-status.js","sourceRoot":"","sources":["../src/application-status.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,IAAM,+BAA+B,GAAG,IAAI,CAAC;AAE7C;IAKE,2BAAY,OAAmB;QAC7B,IAAI,GAAG,GAAG,IAAI,gBAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,GAAG,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAEtD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IACH,wBAAC;AAAD,CAAC,AAbD,IAaC;AAbY,8CAAiB"}
1
+ {"version":3,"file":"application-status.js","sourceRoot":"","sources":["../src/application-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAE7C,MAAM,OAAO,iBAAiB;IAC5B,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,YAAY,CAAU;IAEtB,YAAY,OAAmB;QAC7B,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,GAAG,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAEtD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;CACF"}
package/dist/ber-tlv.d.ts CHANGED
@@ -10,4 +10,5 @@ export declare class BERTLV {
10
10
  readLength(): number;
11
11
  unreadLastTag(): void;
12
12
  checkTag(expected: number, actual: number): void;
13
+ peekUnread(): Uint8Array;
13
14
  }
package/dist/ber-tlv.js CHANGED
@@ -1,29 +1,28 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.BERTLV = void 0;
4
- var constants_1 = require("./constants");
5
- var TLV_BOOL = 0x01;
6
- var BERTLV = /** @class */ (function () {
7
- function BERTLV(buffer) {
1
+ import { Constants } from "./constants.js";
2
+ const TLV_BOOL = 0x01;
3
+ export class BERTLV {
4
+ buffer;
5
+ position;
6
+ constructor(buffer) {
8
7
  this.buffer = buffer;
9
8
  this.position = 0;
10
9
  }
11
- BERTLV.prototype.enterConstructed = function (tag) {
10
+ enterConstructed(tag) {
12
11
  this.checkTag(tag, this.readTag());
13
12
  return this.readLength();
14
- };
15
- BERTLV.prototype.readPrimitive = function (tag) {
13
+ }
14
+ readPrimitive(tag) {
16
15
  this.checkTag(tag, this.readTag());
17
- var len = this.readLength();
16
+ let len = this.readLength();
18
17
  this.position += len;
19
18
  return this.buffer.subarray((this.position - len), this.position);
20
- };
21
- BERTLV.prototype.readBoolean = function () {
22
- var val = this.readPrimitive(TLV_BOOL);
19
+ }
20
+ readBoolean() {
21
+ let val = this.readPrimitive(TLV_BOOL);
23
22
  return val[0] == 0xff;
24
- };
25
- BERTLV.prototype.readInt = function () {
26
- var val = this.readPrimitive(constants_1.Constants.TLV_INT);
23
+ }
24
+ readInt() {
25
+ let val = this.readPrimitive(Constants.TLV_INT);
27
26
  switch (val.byteLength) {
28
27
  case 1:
29
28
  return val[0];
@@ -36,29 +35,30 @@ var BERTLV = /** @class */ (function () {
36
35
  default:
37
36
  throw new Error("Integers of length " + val.byteLength + " are unsupported");
38
37
  }
39
- };
40
- BERTLV.prototype.readTag = function () {
41
- return (this.position < this.buffer.byteLength) ? this.buffer[this.position++] : constants_1.Constants.END_OF_TLV;
42
- };
43
- BERTLV.prototype.readLength = function () {
44
- var len = this.buffer[this.position++];
38
+ }
39
+ readTag() {
40
+ return (this.position < this.buffer.byteLength) ? this.buffer[this.position++] : Constants.END_OF_TLV;
41
+ }
42
+ readLength() {
43
+ let len = this.buffer[this.position++];
45
44
  if (len == 0x81) {
46
45
  len = this.buffer[this.position++];
47
46
  }
48
47
  return len;
49
- };
50
- BERTLV.prototype.unreadLastTag = function () {
48
+ }
49
+ unreadLastTag() {
51
50
  if (this.position < this.buffer.byteLength) {
52
51
  this.position--;
53
52
  }
54
- };
55
- BERTLV.prototype.checkTag = function (expected, actual) {
53
+ }
54
+ checkTag(expected, actual) {
56
55
  if (expected != actual) {
57
56
  this.unreadLastTag();
58
57
  throw new Error("Expected tag: 0x" + expected.toString(16) + ", received: 0x" + actual.toString(16));
59
58
  }
60
- };
61
- return BERTLV;
62
- }());
63
- exports.BERTLV = BERTLV;
59
+ }
60
+ peekUnread() {
61
+ return this.buffer.subarray(this.position);
62
+ }
63
+ }
64
64
  //# sourceMappingURL=ber-tlv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ber-tlv.js","sourceRoot":"","sources":["../src/ber-tlv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ber-tlv.js","sourceRoot":"","sources":["../src/ber-tlv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB,MAAM,OAAO,MAAM;IACjB,MAAM,CAAa;IACnB,QAAQ,CAAS;IAEjB,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,gBAAgB,CAAC,GAAW;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,WAAW;QACT,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,OAAO;QACL,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEhD,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;YACvB,KAAK,CAAC;gBACJ,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,KAAK,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,KAAK,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClE;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;IACxG,CAAC;IAED,UAAU;QACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,QAAgB,EAAE,MAAc;QACvC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -3,7 +3,7 @@ export declare class BIP32KeyPair {
3
3
  publicKey: Uint8Array;
4
4
  chainCode: Uint8Array;
5
5
  calculatePublicKey(): void;
6
- constructor(privateKey: Uint8Array, chainCode: Uint8Array, publicKey: Uint8Array);
6
+ constructor(privateKey: Uint8Array, chainCode: Uint8Array, publicKey: Uint8Array | null);
7
7
  isExtended(): boolean;
8
8
  static fromBinarySeed(binarySeed: Uint8Array): BIP32KeyPair;
9
9
  static fromTLV(tlvData: Uint8Array): BIP32KeyPair;