@coderoftime/fints 0.2.0 → 0.3.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.
- package/CHANGELOG.md +377 -0
- package/README.md +31 -23
- package/dist/client.d.ts +3 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +52 -9
- package/dist/client.js.map +1 -1
- package/dist/core/account.d.ts +15 -4
- package/dist/core/account.d.ts.map +1 -1
- package/dist/core/account.js +84 -36
- package/dist/core/account.js.map +1 -1
- package/dist/core/amount.d.ts +13 -3
- package/dist/core/amount.d.ts.map +1 -1
- package/dist/core/amount.js +42 -8
- package/dist/core/amount.js.map +1 -1
- package/dist/core/balance.d.ts +3 -0
- package/dist/core/balance.d.ts.map +1 -1
- package/dist/core/balance.js +5 -0
- package/dist/core/balance.js.map +1 -1
- package/dist/core/bank-info.d.ts +20 -3
- package/dist/core/bank-info.d.ts.map +1 -1
- package/dist/core/bank-info.js +25 -4
- package/dist/core/bank-info.js.map +1 -1
- package/dist/core/client.d.ts +42 -15
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/config.d.ts +15 -7
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +29 -14
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.d.ts +17 -5
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +25 -7
- package/dist/core/errors.js.map +1 -1
- package/dist/core/feedback.d.ts +7 -0
- package/dist/core/feedback.d.ts.map +1 -1
- package/dist/core/feedback.js +10 -1
- package/dist/core/feedback.js.map +1 -1
- package/dist/core/transaction.d.ts +5 -0
- package/dist/core/transaction.d.ts.map +1 -1
- package/dist/core/transaction.js +12 -0
- package/dist/core/transaction.js.map +1 -1
- package/dist/core/transport.d.ts +22 -7
- package/dist/core/transport.d.ts.map +1 -1
- package/dist/core/transport.js +51 -11
- package/dist/core/transport.js.map +1 -1
- package/dist/formats/camt.d.ts +7 -4
- package/dist/formats/camt.d.ts.map +1 -1
- package/dist/formats/camt.js +53 -54
- package/dist/formats/camt.js.map +1 -1
- package/dist/formats/mt940.d.ts +18 -6
- package/dist/formats/mt940.d.ts.map +1 -1
- package/dist/formats/mt940.js +83 -66
- package/dist/formats/mt940.js.map +1 -1
- package/dist/formats/readers.d.ts.map +1 -1
- package/dist/formats/readers.js +6 -2
- package/dist/formats/readers.js.map +1 -1
- package/dist/formats/sepa-purpose.d.ts +7 -4
- package/dist/formats/sepa-purpose.d.ts.map +1 -1
- package/dist/formats/sepa-purpose.js +18 -9
- package/dist/formats/sepa-purpose.js.map +1 -1
- package/dist/session/dialog-runner.d.ts +5 -2
- package/dist/session/dialog-runner.d.ts.map +1 -1
- package/dist/session/dialog-runner.js +23 -7
- package/dist/session/dialog-runner.js.map +1 -1
- package/dist/session/login-guard.d.ts +4 -4
- package/dist/session/login-guard.d.ts.map +1 -1
- package/dist/session/login-guard.js +29 -14
- package/dist/session/login-guard.js.map +1 -1
- package/dist/session/session-setup.d.ts +14 -5
- package/dist/session/session-setup.d.ts.map +1 -1
- package/dist/session/session-setup.js +30 -9
- package/dist/session/session-setup.js.map +1 -1
- package/dist/session/session-state.d.ts +4 -3
- package/dist/session/session-state.d.ts.map +1 -1
- package/dist/session/session-state.js +28 -9
- package/dist/session/session-state.js.map +1 -1
- package/dist/session/signed-dialog.d.ts +19 -13
- package/dist/session/signed-dialog.d.ts.map +1 -1
- package/dist/session/signed-dialog.js +45 -30
- package/dist/session/signed-dialog.js.map +1 -1
- package/dist/session/user-prompts.d.ts +6 -1
- package/dist/session/user-prompts.d.ts.map +1 -1
- package/dist/session/user-prompts.js +19 -4
- package/dist/session/user-prompts.js.map +1 -1
- package/dist/tan/challenge.d.ts +15 -13
- package/dist/tan/challenge.d.ts.map +1 -1
- package/dist/tan/challenge.js +32 -26
- package/dist/tan/challenge.js.map +1 -1
- package/dist/tan/flicker.d.ts +5 -1
- package/dist/tan/flicker.d.ts.map +1 -1
- package/dist/tan/flicker.js +42 -30
- package/dist/tan/flicker.js.map +1 -1
- package/dist/tan/tan-image.d.ts +4 -1
- package/dist/tan/tan-image.d.ts.map +1 -1
- package/dist/tan/tan-image.js +8 -2
- package/dist/tan/tan-image.js.map +1 -1
- package/dist/tan/tan-models.d.ts +9 -1
- package/dist/tan/tan-models.d.ts.map +1 -1
- package/dist/tan/tan-models.js +14 -2
- package/dist/tan/tan-models.js.map +1 -1
- package/dist/util/arguments.d.ts +13 -0
- package/dist/util/arguments.d.ts.map +1 -0
- package/dist/util/arguments.js +40 -0
- package/dist/util/arguments.js.map +1 -0
- package/dist/util/async.d.ts +4 -1
- package/dist/util/async.d.ts.map +1 -1
- package/dist/util/async.js +6 -3
- package/dist/util/async.js.map +1 -1
- package/dist/util/bytes.d.ts +1 -1
- package/dist/util/bytes.d.ts.map +1 -1
- package/dist/util/bytes.js +3 -3
- package/dist/util/bytes.js.map +1 -1
- package/dist/util/dates.d.ts +3 -10
- package/dist/util/dates.d.ts.map +1 -1
- package/dist/util/dates.js +49 -39
- package/dist/util/dates.js.map +1 -1
- package/dist/util/errors.d.ts +5 -3
- package/dist/util/errors.d.ts.map +1 -1
- package/dist/util/errors.js +8 -4
- package/dist/util/errors.js.map +1 -1
- package/dist/util/immutable-map.d.ts +5 -2
- package/dist/util/immutable-map.d.ts.map +1 -1
- package/dist/util/immutable-map.js +15 -12
- package/dist/util/immutable-map.js.map +1 -1
- package/dist/util/inspect.d.ts +11 -0
- package/dist/util/inspect.d.ts.map +1 -0
- package/dist/util/inspect.js +14 -0
- package/dist/util/inspect.js.map +1 -0
- package/dist/util/text.d.ts +18 -2
- package/dist/util/text.d.ts.map +1 -1
- package/dist/util/text.js +50 -5
- package/dist/util/text.js.map +1 -1
- package/dist/util/xml.d.ts +6 -4
- package/dist/util/xml.d.ts.map +1 -1
- package/dist/util/xml.js +106 -44
- package/dist/util/xml.js.map +1 -1
- package/dist/v3/bank-connection.d.ts +23 -3
- package/dist/v3/bank-connection.d.ts.map +1 -1
- package/dist/v3/bank-connection.js +66 -6
- package/dist/v3/bank-connection.js.map +1 -1
- package/dist/v3/dialog.d.ts +6 -2
- package/dist/v3/dialog.d.ts.map +1 -1
- package/dist/v3/dialog.js +20 -9
- package/dist/v3/dialog.js.map +1 -1
- package/dist/v3/message.d.ts +18 -10
- package/dist/v3/message.d.ts.map +1 -1
- package/dist/v3/message.js +92 -75
- package/dist/v3/message.js.map +1 -1
- package/dist/v3/parameter-store.d.ts +43 -7
- package/dist/v3/parameter-store.d.ts.map +1 -1
- package/dist/v3/parameter-store.js +69 -15
- package/dist/v3/parameter-store.js.map +1 -1
- package/dist/v3/parameters.d.ts +12 -11
- package/dist/v3/parameters.d.ts.map +1 -1
- package/dist/v3/parameters.js +57 -35
- package/dist/v3/parameters.js.map +1 -1
- package/dist/v3/protocol.d.ts +16 -9
- package/dist/v3/protocol.d.ts.map +1 -1
- package/dist/v3/protocol.js +57 -26
- package/dist/v3/protocol.js.map +1 -1
- package/dist/v3/queries.d.ts +2 -2
- package/dist/v3/queries.d.ts.map +1 -1
- package/dist/v3/queries.js +24 -16
- package/dist/v3/queries.js.map +1 -1
- package/dist/v3/segments.d.ts +18 -11
- package/dist/v3/segments.d.ts.map +1 -1
- package/dist/v3/segments.js +30 -21
- package/dist/v3/segments.js.map +1 -1
- package/dist/v3/syntax.d.ts +15 -11
- package/dist/v3/syntax.d.ts.map +1 -1
- package/dist/v3/syntax.js +30 -15
- package/dist/v3/syntax.js.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +58 -17
- package/src/core/account.ts +91 -35
- package/src/core/amount.ts +42 -9
- package/src/core/balance.ts +6 -0
- package/src/core/bank-info.ts +28 -4
- package/src/core/client.ts +42 -15
- package/src/core/config.ts +37 -18
- package/src/core/errors.ts +27 -7
- package/src/core/feedback.ts +12 -1
- package/src/core/transaction.ts +13 -0
- package/src/core/transport.ts +62 -16
- package/src/formats/camt.ts +62 -51
- package/src/formats/mt940.ts +114 -78
- package/src/formats/readers.ts +6 -2
- package/src/formats/sepa-purpose.ts +17 -9
- package/src/session/dialog-runner.ts +34 -7
- package/src/session/login-guard.ts +29 -13
- package/src/session/session-setup.ts +27 -9
- package/src/session/session-state.ts +25 -8
- package/src/session/signed-dialog.ts +60 -30
- package/src/session/user-prompts.ts +28 -3
- package/src/tan/challenge.ts +50 -36
- package/src/tan/flicker.ts +40 -29
- package/src/tan/tan-image.ts +9 -2
- package/src/tan/tan-models.ts +16 -2
- package/src/util/arguments.ts +40 -0
- package/src/util/async.ts +10 -4
- package/src/util/bytes.ts +3 -3
- package/src/util/dates.ts +52 -38
- package/src/util/errors.ts +9 -4
- package/src/util/immutable-map.ts +15 -12
- package/src/util/inspect.ts +14 -0
- package/src/util/text.ts +47 -5
- package/src/util/xml.ts +105 -38
- package/src/v3/bank-connection.ts +65 -6
- package/src/v3/dialog.ts +18 -8
- package/src/v3/message.ts +81 -72
- package/src/v3/parameter-store.ts +82 -16
- package/src/v3/parameters.ts +68 -41
- package/src/v3/protocol.ts +61 -28
- package/src/v3/queries.ts +26 -18
- package/src/v3/segments.ts +32 -20
- package/src/v3/syntax.ts +31 -14
package/dist/v3/dialog.d.ts
CHANGED
|
@@ -99,10 +99,14 @@ export declare class FinTs3Dialog {
|
|
|
99
99
|
* The bank assigns the dialog ID in its answer to the first message, so the answer to another user's first message
|
|
100
100
|
* passes for it (`ParameterStore.reportedUpdVersion`). Any other answer to another message fails with
|
|
101
101
|
* `FinTsProtocolError` before anything of it is kept: a relay or proxy that mixes up answers would hand the client
|
|
102
|
-
* another user's data, or a page of another query.
|
|
102
|
+
* another user's data, or a page of another query. Only the bank's dialog abort message may name the dialog or the
|
|
103
|
+
* message as unknown instead (`IncomingMessage3.aborts`), so that its text reaches the user.
|
|
103
104
|
*
|
|
104
105
|
* The dialog ends on the client's side, without a dialog end, where it is over for the bank: after a return code that
|
|
105
|
-
* ends it, such as 9800,
|
|
106
|
+
* ends it, such as 9800, a dialog abort message, a rejected opening message (Formals C.1.2), or a broken connection
|
|
107
|
+
* (C.6). A request that fails while the client is closing, as one it aborts (`FinTs3Protocol.beginClose`), leaves the
|
|
108
|
+
* dialog active instead, since the bank may have received it: its end follows under the next number. Not so where
|
|
109
|
+
* the request opened the dialog, whose ID only the answer tells.
|
|
106
110
|
*
|
|
107
111
|
* Only an answer that does not reject the whole message starts the idle time anew (`hasEnded`): a rejection may come
|
|
108
112
|
* from a bank that has ended the dialog without saying so.
|
package/dist/v3/dialog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/v3/dialog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB/C,wGAAwG;AACxG,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhD,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,+GAA+G;IAC/G,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9D;AAED;;;GAGG;AACH,qBAAa,YAAY;IAUrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAb5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAS;IAEtB,8GAA8G;IAC9G,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO;IAUP,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IAI5F,2EAA2E;IAC3E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY;IAIxD,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;OAKG;IACH,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,WAAW,GAMtB;IAED,0GAA0G;IAC1G,OAAO,KAAK,SAAS,GAEpB;IAED,sGAAsG;IACtG,OAAO,KAAK,UAAU,GAErB;IAED,uFAAuF;IACvF,KAAK,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASrD;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACjD;IAWD;;;;;OAKG;IACH,qBAAqB,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOrE,2FAA2F;IAC3F,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAMnD;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAWlD,mGAAmG;IACnG,OAAO,IAAI,IAAI;IAIf;;;;;;;;OAQG;IACH,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/v3/dialog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB/C,wGAAwG;AACxG,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhD,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,+GAA+G;IAC/G,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9D;AAED;;;GAGG;AACH,qBAAa,YAAY;IAUrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAb5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAS;IAEtB,8GAA8G;IAC9G,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO;IAUP,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IAI5F,2EAA2E;IAC3E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY;IAIxD,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;OAKG;IACH,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,WAAW,GAMtB;IAED,0GAA0G;IAC1G,OAAO,KAAK,SAAS,GAEpB;IAED,sGAAsG;IACtG,OAAO,KAAK,UAAU,GAErB;IAED,uFAAuF;IACvF,KAAK,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASrD;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACjD;IAWD;;;;;OAKG;IACH,qBAAqB,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOrE,2FAA2F;IAC3F,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAMnD;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAWlD,mGAAmG;IACnG,OAAO,IAAI,IAAI;IAIf;;;;;;;;OAQG;IACH,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,SAAS;IAgCnF,OAAO,CAAC,UAAU;IASlB;;;;;;;;;;;;;;;;;;OAkBG;YACW,YAAY;CAgC3B"}
|
package/dist/v3/dialog.js
CHANGED
|
@@ -5,7 +5,7 @@ import { challengeText, TanChallenge } from '../tan/challenge.js';
|
|
|
5
5
|
import { TanMethod } from '../tan/tan-models.js';
|
|
6
6
|
import { IncomingMessage3 } from './message.js';
|
|
7
7
|
import { requireBankParameters } from './parameters.js';
|
|
8
|
-
import { Segments, TanResponse } from './segments.js';
|
|
8
|
+
import { noReference, Segments, TanResponse } from './segments.js';
|
|
9
9
|
/** Dialog ID of a dialog the bank has not answered yet, and customer system ID before synchronization. */
|
|
10
10
|
const unassigned = '0';
|
|
11
11
|
/** The first version of HKTAN that supports strong customer authentication. */
|
|
@@ -161,6 +161,8 @@ export class FinTs3Dialog {
|
|
|
161
161
|
throw new FinTsProtocolError('The bank asks for an app approval, which needs HKTAN version 7');
|
|
162
162
|
}
|
|
163
163
|
const reference = tan.reference;
|
|
164
|
+
// The placeholder the dialog that looks up the TAN media sends, and the bank may echo, is no medium.
|
|
165
|
+
const medium = tan.mediumName ?? this.tanMedium;
|
|
164
166
|
return {
|
|
165
167
|
challenge: TanChallenge.create({
|
|
166
168
|
method: this.method,
|
|
@@ -169,7 +171,7 @@ export class FinTs3Dialog {
|
|
|
169
171
|
hhdUc: tan.hhdUc,
|
|
170
172
|
isDecoupled: decoupled || this.method.decoupled,
|
|
171
173
|
validUntil: tan.validUntil,
|
|
172
|
-
tanMediumName:
|
|
174
|
+
tanMediumName: medium === noReference ? undefined : medium,
|
|
173
175
|
}),
|
|
174
176
|
submitTan: (value) => this.sendSegments([Segments.tanProcess2(this.tanVersion, reference)], value),
|
|
175
177
|
checkStatus: () => this.sendSegments([Segments.tanProcessStatus(this.tanVersion, reference)]),
|
|
@@ -180,7 +182,7 @@ export class FinTs3Dialog {
|
|
|
180
182
|
}
|
|
181
183
|
tanRequest(segmentType) {
|
|
182
184
|
const medium = this.method.mediumRequirement === 'notAllowed' ? undefined : this.tanMedium;
|
|
183
|
-
return Segments.tanProcess4(this.tanVersion, segmentType, medium === undefined ? undefined : this.protocol.parameters.
|
|
185
|
+
return Segments.tanProcess4(this.tanVersion, segmentType, medium === undefined ? undefined : this.protocol.parameters.tanMediumToSend(medium));
|
|
184
186
|
}
|
|
185
187
|
/**
|
|
186
188
|
* Sends `segments`, with `tan` where they complete an approval, as the next message, and reads the bank's answer. The
|
|
@@ -189,10 +191,14 @@ export class FinTs3Dialog {
|
|
|
189
191
|
* The bank assigns the dialog ID in its answer to the first message, so the answer to another user's first message
|
|
190
192
|
* passes for it (`ParameterStore.reportedUpdVersion`). Any other answer to another message fails with
|
|
191
193
|
* `FinTsProtocolError` before anything of it is kept: a relay or proxy that mixes up answers would hand the client
|
|
192
|
-
* another user's data, or a page of another query.
|
|
194
|
+
* another user's data, or a page of another query. Only the bank's dialog abort message may name the dialog or the
|
|
195
|
+
* message as unknown instead (`IncomingMessage3.aborts`), so that its text reaches the user.
|
|
193
196
|
*
|
|
194
197
|
* The dialog ends on the client's side, without a dialog end, where it is over for the bank: after a return code that
|
|
195
|
-
* ends it, such as 9800,
|
|
198
|
+
* ends it, such as 9800, a dialog abort message, a rejected opening message (Formals C.1.2), or a broken connection
|
|
199
|
+
* (C.6). A request that fails while the client is closing, as one it aborts (`FinTs3Protocol.beginClose`), leaves the
|
|
200
|
+
* dialog active instead, since the bank may have received it: its end follows under the next number. Not so where
|
|
201
|
+
* the request opened the dialog, whose ID only the answer tells.
|
|
196
202
|
*
|
|
197
203
|
* Only an answer that does not reject the whole message starts the idle time anew (`hasEnded`): a rejection may come
|
|
198
204
|
* from a bank that has ended the dialog without saying so.
|
|
@@ -212,21 +218,26 @@ export class FinTs3Dialog {
|
|
|
212
218
|
});
|
|
213
219
|
}
|
|
214
220
|
catch (error) {
|
|
215
|
-
if (error instanceof FinTsTransportError)
|
|
216
|
-
this.
|
|
221
|
+
if (error instanceof FinTsTransportError) {
|
|
222
|
+
if (this.protocol.isClosing && this.id !== unassigned)
|
|
223
|
+
this.messageNumber++;
|
|
224
|
+
else
|
|
225
|
+
this.discard();
|
|
226
|
+
}
|
|
217
227
|
throw error;
|
|
218
228
|
}
|
|
219
229
|
this.messageNumber++;
|
|
220
230
|
const response = parseBankData(() => IncomingMessage3.parse(answer));
|
|
221
231
|
const assigned = this.id === unassigned ? undefined : this.id;
|
|
222
|
-
|
|
232
|
+
const aborted = response.aborts(number, assigned);
|
|
233
|
+
if (!aborted && !response.answers(number, assigned)) {
|
|
223
234
|
throw new FinTsProtocolError('The answer belongs to another message than the one sent');
|
|
224
235
|
}
|
|
225
236
|
if (assigned === undefined)
|
|
226
237
|
this.id = response.dialogId ?? unassigned;
|
|
227
238
|
if (!response.messageRejected)
|
|
228
239
|
this.lastAnswer = Date.now();
|
|
229
|
-
if (endsDialog(response.feedback) || (number === 1 && response.messageRejected))
|
|
240
|
+
if (aborted || endsDialog(response.feedback) || (number === 1 && response.messageRejected))
|
|
230
241
|
this.discard();
|
|
231
242
|
return response;
|
|
232
243
|
}
|
package/dist/v3/dialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/v3/dialog.ts"],"names":[],"mappings":"AAAA,uHAAuH;AAEvH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/v3/dialog.ts"],"names":[],"mappings":"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"}
|
package/dist/v3/message.d.ts
CHANGED
|
@@ -13,12 +13,12 @@ export interface PinTanCredentials {
|
|
|
13
13
|
/** A message to send, and the same message with PIN and TAN masked for logging. */
|
|
14
14
|
export declare class OutgoingMessage {
|
|
15
15
|
readonly bytes: Uint8Array;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
private readonly buildMasked;
|
|
17
|
+
constructor(bytes: Uint8Array, buildMasked: () => Uint8Array);
|
|
18
|
+
/**
|
|
19
|
+
* The message with PIN and TAN masked; built only when a logger asks for it. It is decoded as a whole, as the bank's
|
|
20
|
+
* text is, so a message that mixes ISO 8859-1 text with UTF-8 text (`encodeText`) shows all of it as ISO 8859-1.
|
|
21
|
+
*/
|
|
22
22
|
get masked(): string;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
@@ -27,7 +27,8 @@ export declare class OutgoingMessage {
|
|
|
27
27
|
* With `security` the segments are signed with PIN and optional `tan` (HNSHK … HNSHA) and wrapped in the encryption
|
|
28
28
|
* envelope (HNVSK, HNVSD) that PIN/TAN uses without actual encryption.
|
|
29
29
|
*
|
|
30
|
-
* The masked message
|
|
30
|
+
* The masked message is built as the message is, from the same time stamp and security control reference, with `***`
|
|
31
|
+
* for PIN and TAN, so that the log does not tell how long they are.
|
|
31
32
|
*/
|
|
32
33
|
export declare function buildMessage(parts: {
|
|
33
34
|
dialogId: string;
|
|
@@ -55,10 +56,11 @@ export declare class IncomingMessage3 {
|
|
|
55
56
|
/**
|
|
56
57
|
* Parses a message; throws `FormatError` if `data` is not one complete FinTS message, such as the HTML page of a
|
|
57
58
|
* proxy, a maintenance notice, a message cut short, which lacks the message trailer (HNHBS) at its end, or two
|
|
58
|
-
* messages run together, whose second would pass for part of the first.
|
|
59
|
+
* messages run together, whose second would pass for part of the first. It does as well for more than one encrypted
|
|
60
|
+
* part (HNVSD), each of which `parseSegments` would allow as many data elements as the whole message.
|
|
59
61
|
*
|
|
60
|
-
* Its `size` counts the memory of
|
|
61
|
-
* takes far more memory than bytes.
|
|
62
|
+
* Its `size` counts the memory of the data elements it keeps along with its bytes, since a message of many short
|
|
63
|
+
* elements takes far more memory than bytes.
|
|
62
64
|
*/
|
|
63
65
|
static parse(data: Uint8Array): IncomingMessage3;
|
|
64
66
|
static combine(first: IncomingMessage3, second: IncomingMessage3): IncomingMessage3;
|
|
@@ -72,6 +74,12 @@ export declare class IncomingMessage3 {
|
|
|
72
74
|
* the bank has assigned one; before, `dialogId` is `undefined`, since every first message goes out under the same.
|
|
73
75
|
*/
|
|
74
76
|
answers(number: number, dialogId: string | undefined): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Whether the message is the bank's dialog abort message (Formals B.7.6) for message `number` of the dialog
|
|
79
|
+
* `dialogId`: unencrypted, with nothing but the header, an error for the whole message (HIRMG) and the trailer. Its
|
|
80
|
+
* header names the dialog ID and the message number where the bank knows them, and `unbekannt` and 9999 where not.
|
|
81
|
+
*/
|
|
82
|
+
aborts(number: number, dialogId: string | undefined): boolean;
|
|
75
83
|
find(type: string): Segment | undefined;
|
|
76
84
|
findAll(type: string): Segment[];
|
|
77
85
|
}
|
package/dist/v3/message.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/v3/message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/v3/message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAIL,KAAK,OAAO,EACZ,WAAW,EAGZ,MAAM,aAAa,CAAC;AAErB,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAmED,mFAAmF;AACnF,qBAAa,eAAe;IAExB,QAAQ,CAAC,KAAK,EAAE,UAAU;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADnB,KAAK,EAAE,UAAU,EACT,WAAW,EAAE,MAAM,UAAU;IAGhD;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF;AAQD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,eAAe,CAWlB;AAgED,iFAAiF;AACjF,qBAAa,gBAAgB;IAazB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM;IAdvB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAE5C,6GAA6G;IAC7G,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,OAAO;IAcP;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB;IAgChD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IAInF,yDAAyD;IACzD,IAAI,YAAY,IAAI,WAAW,EAAE,CAEhC;IAED,mGAAmG;IACnG,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAe9D;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAY7D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;CAGjC;AAmBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAS5D;AAaD,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAE/D"}
|
package/dist/v3/message.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { BankMessage } from '../core/bank-info.js';
|
|
3
3
|
import { FinTsFeedback } from '../core/feedback.js';
|
|
4
4
|
import { TanMethod } from '../tan/tan-models.js';
|
|
5
|
-
import { base64Encode,
|
|
5
|
+
import { base64Encode, concatBytes, latin1Encode, utf8Decode } from '../util/bytes.js';
|
|
6
6
|
import { formatFintsDate, formatFintsTime } from '../util/dates.js';
|
|
7
7
|
import { FormatError } from '../util/errors.js';
|
|
8
8
|
import { decodeBankText, decodeBase64Lines } from '../util/text.js';
|
|
9
|
-
import { Binary,
|
|
9
|
+
import { Binary, parsedElementBytes, parseSegments, SegmentSpec, Verbatim, } from './syntax.js';
|
|
10
10
|
function isTwoStep(c) {
|
|
11
11
|
return c.securityFunction !== TanMethod.oneStep.securityFunction;
|
|
12
12
|
}
|
|
@@ -43,10 +43,14 @@ const noCompression = 0;
|
|
|
43
43
|
function keyName(c, keyType) {
|
|
44
44
|
return [c.countryCode, c.bankCode, c.userId, keyType, 0, 0];
|
|
45
45
|
}
|
|
46
|
-
/** A random integer from 0 below `bound`, from a cryptographically secure source. */
|
|
46
|
+
/** A random integer from 0 below `bound`, each equally likely, from a cryptographically secure source. */
|
|
47
47
|
function secureRandom(bound) {
|
|
48
|
+
// Values from the last multiple of `bound` on cover only the low remainders, which they would make more likely.
|
|
49
|
+
const limit = 2 ** 32 - (2 ** 32 % bound);
|
|
48
50
|
const values = new Uint32Array(1);
|
|
49
|
-
|
|
51
|
+
do {
|
|
52
|
+
crypto.getRandomValues(values);
|
|
53
|
+
} while (values[0] >= limit);
|
|
50
54
|
return values[0] % bound;
|
|
51
55
|
}
|
|
52
56
|
/** A random 14-digit reference that ties the signature head (HNSHK) to the signature end (HNSHA). */
|
|
@@ -56,16 +60,17 @@ function securityControlReference() {
|
|
|
56
60
|
/** A message to send, and the same message with PIN and TAN masked for logging. */
|
|
57
61
|
export class OutgoingMessage {
|
|
58
62
|
bytes;
|
|
59
|
-
|
|
60
|
-
constructor(bytes,
|
|
61
|
-
/** The parts of the masked message, each decoded on its own as the bank's text is. */
|
|
62
|
-
maskedParts) {
|
|
63
|
+
buildMasked;
|
|
64
|
+
constructor(bytes, buildMasked) {
|
|
63
65
|
this.bytes = bytes;
|
|
64
|
-
this.
|
|
66
|
+
this.buildMasked = buildMasked;
|
|
65
67
|
}
|
|
66
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* The message with PIN and TAN masked; built only when a logger asks for it. It is decoded as a whole, as the bank's
|
|
70
|
+
* text is, so a message that mixes ISO 8859-1 text with UTF-8 text (`encodeText`) shows all of it as ISO 8859-1.
|
|
71
|
+
*/
|
|
67
72
|
get masked() {
|
|
68
|
-
return this.
|
|
73
|
+
return decodeBankText(this.buildMasked());
|
|
69
74
|
}
|
|
70
75
|
}
|
|
71
76
|
/**
|
|
@@ -74,69 +79,59 @@ export class OutgoingMessage {
|
|
|
74
79
|
* With `security` the segments are signed with PIN and optional `tan` (HNSHK … HNSHA) and wrapped in the encryption
|
|
75
80
|
* envelope (HNVSK, HNVSD) that PIN/TAN uses without actual encryption.
|
|
76
81
|
*
|
|
77
|
-
* The masked message
|
|
82
|
+
* The masked message is built as the message is, from the same time stamp and security control reference, with `***`
|
|
83
|
+
* for PIN and TAN, so that the log does not tell how long they are.
|
|
78
84
|
*/
|
|
79
85
|
export function buildMessage(parts) {
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
const { security, tan } = parts;
|
|
87
|
+
if (security === undefined) {
|
|
88
|
+
const bytes = withHeaderAndTrailer(parts, plainBody(parts.segments));
|
|
89
|
+
return new OutgoingMessage(bytes, () => bytes);
|
|
90
|
+
}
|
|
91
|
+
const time = parts.now ?? new Date();
|
|
92
|
+
const controlReference = securityControlReference();
|
|
93
|
+
const build = (pin, tanValue) => withHeaderAndTrailer(parts, signedBody(parts.segments, security, pin, tanValue, time, controlReference));
|
|
94
|
+
return new OutgoingMessage(build(security.pin, tan), () => build('***', tan === undefined ? undefined : '***'));
|
|
95
|
+
}
|
|
96
|
+
/** `body` between the header and the trailer of message `messageNumber` of the dialog `dialogId`. */
|
|
97
|
+
function withHeaderAndTrailer(parts, body) {
|
|
83
98
|
const trailer = new SegmentSpec('HNHBS', 1, [parts.messageNumber]).build(body.nextNumber);
|
|
84
|
-
// The header states the size of the whole message, itself included; its own size does not depend on it.
|
|
85
99
|
const header = (size) => new SegmentSpec('HNHBK', 3, [
|
|
86
100
|
size.toString().padStart(12, '0'),
|
|
87
101
|
300,
|
|
88
102
|
new Verbatim(parts.dialogId),
|
|
89
103
|
parts.messageNumber,
|
|
90
104
|
]).build(1);
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
result.add(body.bytes);
|
|
95
|
-
result.add(trailer);
|
|
96
|
-
return new OutgoingMessage(result.takeBytes(), [header(sizeOf(body.masked)), ...body.masked, trailer]);
|
|
97
|
-
}
|
|
98
|
-
/** The number of bytes in `parts` together. */
|
|
99
|
-
function lengthOf(parts) {
|
|
100
|
-
return parts.reduce((sum, part) => sum + part.length, 0);
|
|
105
|
+
// The header states the size of the whole message, itself included; its own size does not depend on it.
|
|
106
|
+
const size = header(0).length + body.segments.reduce((sum, s) => sum + s.length, 0) + trailer.length;
|
|
107
|
+
return concatBytes([header(size), ...body.segments, trailer]);
|
|
101
108
|
}
|
|
102
109
|
/** The segments of a message without security, as the anonymous dialog sends them. */
|
|
103
110
|
function plainBody(segments) {
|
|
104
|
-
|
|
105
|
-
const bytes = new BytesBuilder();
|
|
106
|
-
built.forEach((b) => {
|
|
107
|
-
bytes.add(b);
|
|
108
|
-
});
|
|
109
|
-
return { bytes: bytes.takeBytes(), masked: built, nextNumber: built.length + 2 };
|
|
111
|
+
return { segments: segments.map((segment, i) => segment.build(i + 2)), nextNumber: segments.length + 2 };
|
|
110
112
|
}
|
|
111
|
-
/** The segments signed with
|
|
112
|
-
function signedBody(segments, security, tan, time) {
|
|
113
|
+
/** The segments signed with `pin` and optional `tan`, inside the encryption envelope. */
|
|
114
|
+
function signedBody(segments, security, pin, tan, time, controlReference) {
|
|
113
115
|
const profile = ['PIN', isTwoStep(security) ? 2 : 1];
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
timestamp(time),
|
|
130
|
-
hashAlgorithm,
|
|
131
|
-
signatureAlgorithm,
|
|
132
|
-
keyName(security, 'S'),
|
|
133
|
-
]).build(2));
|
|
116
|
+
const inner = [
|
|
117
|
+
new SegmentSpec('HNSHK', 4, [
|
|
118
|
+
profile,
|
|
119
|
+
security.securityFunction,
|
|
120
|
+
controlReference,
|
|
121
|
+
signedArea,
|
|
122
|
+
issuer,
|
|
123
|
+
sender(security.systemId),
|
|
124
|
+
securityReference,
|
|
125
|
+
timestamp(time),
|
|
126
|
+
hashAlgorithm,
|
|
127
|
+
signatureAlgorithm,
|
|
128
|
+
keyName(security, 'S'),
|
|
129
|
+
]).build(2),
|
|
130
|
+
];
|
|
134
131
|
let number = 3;
|
|
135
132
|
for (const segment of segments)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
addInner(signatureEnd(security.pin, tan).build(number), signatureEnd('***', tan === undefined ? undefined : '***').build(number));
|
|
139
|
-
const innerBytes = inner.takeBytes();
|
|
133
|
+
inner.push(segment.build(number++));
|
|
134
|
+
inner.push(new SegmentSpec('HNSHA', 2, [controlReference, null, [pin, tan]]).build(number));
|
|
140
135
|
const encryptionHead = new SegmentSpec('HNVSK', 3, [
|
|
141
136
|
profile,
|
|
142
137
|
plainText,
|
|
@@ -147,16 +142,8 @@ function signedBody(segments, security, tan, time) {
|
|
|
147
142
|
keyName(security, 'V'),
|
|
148
143
|
noCompression,
|
|
149
144
|
]).build(998);
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
bytes.add(new SegmentSpec('HNVSD', 1, [new Binary(innerBytes)]).build(999));
|
|
153
|
-
const masked = [
|
|
154
|
-
encryptionHead,
|
|
155
|
-
latin1Encode(`HNVSD:999:1+@${lengthOf(maskedInner)}@`),
|
|
156
|
-
...maskedInner,
|
|
157
|
-
latin1Encode("'"),
|
|
158
|
-
];
|
|
159
|
-
return { bytes: bytes.takeBytes(), masked, nextNumber: number + 1 };
|
|
145
|
+
const encryptedData = new SegmentSpec('HNVSD', 1, [new Binary(concatBytes(inner))]).build(999);
|
|
146
|
+
return { segments: [encryptionHead, encryptedData], nextNumber: number + 1 };
|
|
160
147
|
}
|
|
161
148
|
/** A received message, with the segments of the encryption envelope unpacked. */
|
|
162
149
|
export class IncomingMessage3 {
|
|
@@ -185,14 +172,23 @@ export class IncomingMessage3 {
|
|
|
185
172
|
/**
|
|
186
173
|
* Parses a message; throws `FormatError` if `data` is not one complete FinTS message, such as the HTML page of a
|
|
187
174
|
* proxy, a maintenance notice, a message cut short, which lacks the message trailer (HNHBS) at its end, or two
|
|
188
|
-
* messages run together, whose second would pass for part of the first.
|
|
175
|
+
* messages run together, whose second would pass for part of the first. It does as well for more than one encrypted
|
|
176
|
+
* part (HNVSD), each of which `parseSegments` would allow as many data elements as the whole message.
|
|
189
177
|
*
|
|
190
|
-
* Its `size` counts the memory of
|
|
191
|
-
* takes far more memory than bytes.
|
|
178
|
+
* Its `size` counts the memory of the data elements it keeps along with its bytes, since a message of many short
|
|
179
|
+
* elements takes far more memory than bytes.
|
|
192
180
|
*/
|
|
193
181
|
static parse(data) {
|
|
194
|
-
|
|
195
|
-
|
|
182
|
+
let outer = [];
|
|
183
|
+
try {
|
|
184
|
+
outer = parseSegments(data);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
// Text that is no FinTS message, such as a web page, seldom ends with a segment terminator; that it has no
|
|
188
|
+
// message header says more than what the parser trips over first.
|
|
189
|
+
if (!(error instanceof FormatError) || startsWithMessageHeader(data))
|
|
190
|
+
throw error;
|
|
191
|
+
}
|
|
196
192
|
if (outer[0]?.type !== 'HNHBK')
|
|
197
193
|
throw new FormatError('Not a FinTS message: no message header');
|
|
198
194
|
if (outer.at(-1)?.type !== 'HNHBS')
|
|
@@ -200,6 +196,9 @@ export class IncomingMessage3 {
|
|
|
200
196
|
if (outer.filter((s) => s.type === 'HNHBK' || s.type === 'HNHBS').length > 2) {
|
|
201
197
|
throw new FormatError('More than one FinTS message');
|
|
202
198
|
}
|
|
199
|
+
if (outer.filter((s) => s.type === 'HNVSD').length > 1) {
|
|
200
|
+
throw new FormatError('More than one encrypted part (HNVSD)');
|
|
201
|
+
}
|
|
203
202
|
const segments = [];
|
|
204
203
|
for (const s of outer) {
|
|
205
204
|
if (s.type !== 'HNVSD') {
|
|
@@ -209,10 +208,14 @@ export class IncomingMessage3 {
|
|
|
209
208
|
const payload = s.binary(1);
|
|
210
209
|
if (payload === undefined)
|
|
211
210
|
throw new FormatError('Encrypted data (HNVSD) without binary data');
|
|
212
|
-
for (const inner of parseSegments(payload
|
|
211
|
+
for (const inner of parseSegments(payload))
|
|
213
212
|
segments.push(inner);
|
|
214
213
|
}
|
|
215
|
-
|
|
214
|
+
let elements = 0;
|
|
215
|
+
for (const s of segments)
|
|
216
|
+
for (const group of s.elements)
|
|
217
|
+
elements += group.length;
|
|
218
|
+
return new IncomingMessage3(segments, data.length + elements * parsedElementBytes);
|
|
216
219
|
}
|
|
217
220
|
static combine(first, second) {
|
|
218
221
|
return new IncomingMessage3([...first.segments, ...second.segments], first.size + second.size);
|
|
@@ -243,6 +246,20 @@ export class IncomingMessage3 {
|
|
|
243
246
|
inDialog(header.verbatim(3)) &&
|
|
244
247
|
(!namesReference || (header.integer(5, 1) === number && inDialog(header.verbatim(5, 0)))));
|
|
245
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Whether the message is the bank's dialog abort message (Formals B.7.6) for message `number` of the dialog
|
|
251
|
+
* `dialogId`: unencrypted, with nothing but the header, an error for the whole message (HIRMG) and the trailer. Its
|
|
252
|
+
* header names the dialog ID and the message number where the bank knows them, and `unbekannt` and 9999 where not.
|
|
253
|
+
*/
|
|
254
|
+
aborts(number, dialogId) {
|
|
255
|
+
const header = this.segments[0];
|
|
256
|
+
const id = header.verbatim(3);
|
|
257
|
+
const messageNumber = header.integer(4);
|
|
258
|
+
return (this.segments.length === 3 &&
|
|
259
|
+
this.messageRejected &&
|
|
260
|
+
(id === 'unbekannt' || id === dialogId) &&
|
|
261
|
+
(messageNumber === 9999 || messageNumber === number));
|
|
262
|
+
}
|
|
246
263
|
find(type) {
|
|
247
264
|
return this.segments.find((s) => s.type === type);
|
|
248
265
|
}
|
package/dist/v3/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/v3/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/v3/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,17 @@ import type { FinTsConfig } from '../core/config.js';
|
|
|
2
2
|
import { type JsonObject } from '../util/json.js';
|
|
3
3
|
import type { IncomingMessage3 } from './message.js';
|
|
4
4
|
import { Bpd3, Upd3 } from './parameters.js';
|
|
5
|
+
import { Verbatim } from './syntax.js';
|
|
6
|
+
/** The limits the bank parameter data set on the messages the client sends (`ParameterStore.limits`). */
|
|
7
|
+
export interface MessageLimits {
|
|
8
|
+
/** The shortest and longest PIN a login may carry. */
|
|
9
|
+
readonly pinLength: {
|
|
10
|
+
readonly min: number | undefined;
|
|
11
|
+
readonly max: number | undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
/** The size of the largest message, in kilobytes. */
|
|
14
|
+
readonly maxMessageSize: number | undefined;
|
|
15
|
+
}
|
|
5
16
|
/**
|
|
6
17
|
* The parameter data and IDs the bank sends the user `config` names, which the messages and business transactions
|
|
7
18
|
* take, and which the saved state keeps: the bank and user parameter data, the customer system ID, and the names of
|
|
@@ -18,10 +29,13 @@ export declare class ParameterStore {
|
|
|
18
29
|
* the bank send its parameter data anew.
|
|
19
30
|
*/
|
|
20
31
|
private bpdAnonymous;
|
|
32
|
+
/** The limits a refresh took from the anonymous dialog's parameter data (`keepRefreshedLimits`). */
|
|
33
|
+
private refreshedLimits;
|
|
21
34
|
private upd;
|
|
22
35
|
/**
|
|
23
|
-
* The names of the TAN media in the bank's last list whose text
|
|
24
|
-
* `parseTanMedia` notes them. Saved with the state, as the
|
|
36
|
+
* The names of the TAN media in the bank's last list whose text would not go back as the bank sent them, by their
|
|
37
|
+
* text, as `parseTanMedia` notes them (`readTanMediumNames` for a state of 0.2.0). Saved with the state, as the
|
|
38
|
+
* medium in use is.
|
|
25
39
|
*/
|
|
26
40
|
private tanMediumNames;
|
|
27
41
|
constructor(config: FinTsConfig);
|
|
@@ -34,7 +48,15 @@ export declare class ParameterStore {
|
|
|
34
48
|
* before. No dialog signed with the PIN starts without it.
|
|
35
49
|
*/
|
|
36
50
|
get systemId(): string | undefined;
|
|
37
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The limits on the messages the client sends: those of the bank parameter data, unless a refresh took others
|
|
53
|
+
* (`keepRefreshedLimits`).
|
|
54
|
+
*/
|
|
55
|
+
get limits(): MessageLimits;
|
|
56
|
+
/**
|
|
57
|
+
* The version of the bank parameter data a dialog reports: 0 where there are none, only the anonymous dialog's, or
|
|
58
|
+
* where limits a refresh took stand in for theirs (`keepRefreshedLimits`).
|
|
59
|
+
*/
|
|
38
60
|
get reportedBpdVersion(): number;
|
|
39
61
|
/**
|
|
40
62
|
* The version of the user parameter data a signed dialog reports: 0 where there are none, or where they name another
|
|
@@ -62,14 +84,28 @@ export declare class ParameterStore {
|
|
|
62
84
|
* since it may send a user other ones (PIN/TAN B.4.3.1). Keeps nothing that belongs to a user.
|
|
63
85
|
*/
|
|
64
86
|
keepAnonymous(response: IncomingMessage3): void;
|
|
87
|
+
/**
|
|
88
|
+
* Keeps the limits of the bank parameter data in `response`, the answer of an anonymous dialog the client asked for
|
|
89
|
+
* after the limits kept ruled out a login: those may be outdated, as saved ones are. Parameter data of the version
|
|
90
|
+
* kept tell nothing new, and the bank may send a user other ones than the anonymous dialog (PIN/TAN B.4.3.1), so of
|
|
91
|
+
* those of another version it keeps the limits only, and the PIN lengths only where they state them (HIPINS). They
|
|
92
|
+
* stand in for those kept until a dialog signed with the PIN brings parameter data.
|
|
93
|
+
*/
|
|
94
|
+
keepRefreshedLimits(response: IncomingMessage3): void;
|
|
65
95
|
private keepBankParameters;
|
|
66
96
|
/** Keeps `names`, the names of the bank's latest list of TAN media as `parseTanMedia` notes them. */
|
|
67
97
|
keepTanMediumNames(names: Map<string, string>): void;
|
|
68
|
-
/**
|
|
69
|
-
|
|
98
|
+
/**
|
|
99
|
+
* The TAN medium `name` to send: as the bank sent it, where its last list of TAN media noted that (`parseTanMedia`);
|
|
100
|
+
* otherwise as text, which goes out without the blanks at either end a name the app passes may have.
|
|
101
|
+
*/
|
|
102
|
+
tanMediumToSend(name: string): string | Verbatim;
|
|
70
103
|
/** The parameter data and IDs as JSON data, for the client's saved state. */
|
|
71
104
|
saveState(): JsonObject;
|
|
72
|
-
/**
|
|
73
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Restores what `saveState` saved, with `tanMedium`, the medium in use the state holds; throws if `saved` is damaged,
|
|
107
|
+
* leaving the store unchanged.
|
|
108
|
+
*/
|
|
109
|
+
restoreState(saved: JsonObject, tanMedium?: string): void;
|
|
74
110
|
}
|
|
75
111
|
//# sourceMappingURL=parameter-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-store.d.ts","sourceRoot":"","sources":["../../src/v3/parameter-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAA+D,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"parameter-store.d.ts","sourceRoot":"","sources":["../../src/v3/parameter-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAA+D,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,IAAI,EAAkB,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,yGAAyG;AACzG,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IAEvG,qDAAqD;IACrD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAuBb,QAAQ,CAAC,MAAM,EAAE,WAAW;IAtBxC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAmB;IAE9B;;;;;OAKG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B,oGAAoG;IACpG,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,GAAG,CAAmB;IAE9B;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAA6B;gBAE9B,MAAM,EAAE,WAAW;IAExC,uDAAuD;IACvD,IAAI,cAAc,IAAI,IAAI,GAAG,SAAS,CAErC;IAED,uDAAuD;IACvD,IAAI,cAAc,IAAI,IAAI,GAAG,SAAS,CAErC;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,aAAa,CAG1B;IAED;;;OAGG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;;;;OAMG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAG/B;IAED;;;;OAIG;IACH,cAAc,IAAI,OAAO;IAOzB;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAMtC;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI/C;;;;;;OAMG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IASrD,OAAO,CAAC,kBAAkB;IAQ1B,qGAAqG;IACrG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAIpD;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ;IAKhD,6EAA6E;IAC7E,SAAS,IAAI,UAAU;IAWvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;CAmB1D"}
|