@coderoftime/fints 0.0.0-stage → 0.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 (254) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +28 -0
  3. package/README.md +156 -2
  4. package/dist/core/account.d.ts +140 -0
  5. package/dist/core/account.d.ts.map +1 -0
  6. package/dist/core/account.js +174 -0
  7. package/dist/core/account.js.map +1 -0
  8. package/dist/core/amount.d.ts +62 -0
  9. package/dist/core/amount.d.ts.map +1 -0
  10. package/dist/core/amount.js +189 -0
  11. package/dist/core/amount.js.map +1 -0
  12. package/dist/core/balance.d.ts +54 -0
  13. package/dist/core/balance.d.ts.map +1 -0
  14. package/dist/core/balance.js +53 -0
  15. package/dist/core/balance.js.map +1 -0
  16. package/dist/core/bank-info.d.ts +49 -0
  17. package/dist/core/bank-info.d.ts.map +1 -0
  18. package/dist/core/bank-info.js +52 -0
  19. package/dist/core/bank-info.js.map +1 -0
  20. package/dist/core/client.d.ts +126 -0
  21. package/dist/core/client.d.ts.map +1 -0
  22. package/dist/core/client.js +2 -0
  23. package/dist/core/client.js.map +1 -0
  24. package/dist/core/config.d.ts +68 -0
  25. package/dist/core/config.d.ts.map +1 -0
  26. package/dist/core/config.js +113 -0
  27. package/dist/core/config.js.map +1 -0
  28. package/dist/core/errors.d.ts +91 -0
  29. package/dist/core/errors.d.ts.map +1 -0
  30. package/dist/core/errors.js +182 -0
  31. package/dist/core/errors.js.map +1 -0
  32. package/dist/core/feedback.d.ts +69 -0
  33. package/dist/core/feedback.d.ts.map +1 -0
  34. package/dist/core/feedback.js +124 -0
  35. package/dist/core/feedback.js.map +1 -0
  36. package/dist/core/transaction.d.ts +98 -0
  37. package/dist/core/transaction.d.ts.map +1 -0
  38. package/dist/core/transaction.js +91 -0
  39. package/dist/core/transaction.js.map +1 -0
  40. package/dist/core/transport.d.ts +37 -0
  41. package/dist/core/transport.d.ts.map +1 -0
  42. package/dist/core/transport.js +92 -0
  43. package/dist/core/transport.js.map +1 -0
  44. package/dist/formats/camt.d.ts +12 -0
  45. package/dist/formats/camt.d.ts.map +1 -0
  46. package/dist/formats/camt.js +159 -0
  47. package/dist/formats/camt.js.map +1 -0
  48. package/dist/formats/mt940.d.ts +42 -0
  49. package/dist/formats/mt940.d.ts.map +1 -0
  50. package/dist/formats/mt940.js +297 -0
  51. package/dist/formats/mt940.js.map +1 -0
  52. package/dist/formats/readers.d.ts +11 -0
  53. package/dist/formats/readers.d.ts.map +1 -0
  54. package/dist/formats/readers.js +47 -0
  55. package/dist/formats/readers.js.map +1 -0
  56. package/dist/formats/sepa-purpose.d.ts +22 -0
  57. package/dist/formats/sepa-purpose.d.ts.map +1 -0
  58. package/dist/formats/sepa-purpose.js +68 -0
  59. package/dist/formats/sepa-purpose.js.map +1 -0
  60. package/dist/index.d.ts +28 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +27 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/session/app-approval.d.ts +60 -0
  65. package/dist/session/app-approval.d.ts.map +1 -0
  66. package/dist/session/app-approval.js +215 -0
  67. package/dist/session/app-approval.js.map +1 -0
  68. package/dist/session/bank-connection.d.ts +28 -0
  69. package/dist/session/bank-connection.d.ts.map +1 -0
  70. package/dist/session/bank-connection.js +48 -0
  71. package/dist/session/bank-connection.js.map +1 -0
  72. package/dist/session/dialog-runner.d.ts +34 -0
  73. package/dist/session/dialog-runner.d.ts.map +1 -0
  74. package/dist/session/dialog-runner.js +112 -0
  75. package/dist/session/dialog-runner.js.map +1 -0
  76. package/dist/session/login-guard.d.ts +73 -0
  77. package/dist/session/login-guard.d.ts.map +1 -0
  78. package/dist/session/login-guard.js +109 -0
  79. package/dist/session/login-guard.js.map +1 -0
  80. package/dist/session/parameter-data.d.ts +83 -0
  81. package/dist/session/parameter-data.d.ts.map +1 -0
  82. package/dist/session/parameter-data.js +68 -0
  83. package/dist/session/parameter-data.js.map +1 -0
  84. package/dist/session/pin-tan-client.d.ts +54 -0
  85. package/dist/session/pin-tan-client.d.ts.map +1 -0
  86. package/dist/session/pin-tan-client.js +153 -0
  87. package/dist/session/pin-tan-client.js.map +1 -0
  88. package/dist/session/pin-tan-dialog.d.ts +71 -0
  89. package/dist/session/pin-tan-dialog.d.ts.map +1 -0
  90. package/dist/session/pin-tan-dialog.js +124 -0
  91. package/dist/session/pin-tan-dialog.js.map +1 -0
  92. package/dist/session/protocol.d.ts +209 -0
  93. package/dist/session/protocol.d.ts.map +1 -0
  94. package/dist/session/protocol.js +75 -0
  95. package/dist/session/protocol.js.map +1 -0
  96. package/dist/session/response-handler.d.ts +48 -0
  97. package/dist/session/response-handler.d.ts.map +1 -0
  98. package/dist/session/response-handler.js +121 -0
  99. package/dist/session/response-handler.js.map +1 -0
  100. package/dist/session/sepa-accounts.d.ts +34 -0
  101. package/dist/session/sepa-accounts.d.ts.map +1 -0
  102. package/dist/session/sepa-accounts.js +96 -0
  103. package/dist/session/sepa-accounts.js.map +1 -0
  104. package/dist/session/session-setup.d.ts +72 -0
  105. package/dist/session/session-setup.d.ts.map +1 -0
  106. package/dist/session/session-setup.js +160 -0
  107. package/dist/session/session-setup.js.map +1 -0
  108. package/dist/session/session-state.d.ts +47 -0
  109. package/dist/session/session-state.d.ts.map +1 -0
  110. package/dist/session/session-state.js +147 -0
  111. package/dist/session/session-state.js.map +1 -0
  112. package/dist/session/tan-selection.d.ts +88 -0
  113. package/dist/session/tan-selection.d.ts.map +1 -0
  114. package/dist/session/tan-selection.js +178 -0
  115. package/dist/session/tan-selection.js.map +1 -0
  116. package/dist/session/user-prompts.d.ts +61 -0
  117. package/dist/session/user-prompts.d.ts.map +1 -0
  118. package/dist/session/user-prompts.js +164 -0
  119. package/dist/session/user-prompts.js.map +1 -0
  120. package/dist/tan/challenge.d.ts +114 -0
  121. package/dist/tan/challenge.d.ts.map +1 -0
  122. package/dist/tan/challenge.js +185 -0
  123. package/dist/tan/challenge.js.map +1 -0
  124. package/dist/tan/flicker.d.ts +36 -0
  125. package/dist/tan/flicker.d.ts.map +1 -0
  126. package/dist/tan/flicker.js +262 -0
  127. package/dist/tan/flicker.js.map +1 -0
  128. package/dist/tan/tan-image.d.ts +21 -0
  129. package/dist/tan/tan-image.d.ts.map +1 -0
  130. package/dist/tan/tan-image.js +41 -0
  131. package/dist/tan/tan-image.js.map +1 -0
  132. package/dist/tan/tan-models.d.ts +145 -0
  133. package/dist/tan/tan-models.d.ts.map +1 -0
  134. package/dist/tan/tan-models.js +148 -0
  135. package/dist/tan/tan-models.js.map +1 -0
  136. package/dist/util/async.d.ts +24 -0
  137. package/dist/util/async.d.ts.map +1 -0
  138. package/dist/util/async.js +49 -0
  139. package/dist/util/async.js.map +1 -0
  140. package/dist/util/bytes.d.ts +23 -0
  141. package/dist/util/bytes.d.ts.map +1 -0
  142. package/dist/util/bytes.js +136 -0
  143. package/dist/util/bytes.js.map +1 -0
  144. package/dist/util/call-context.d.ts +12 -0
  145. package/dist/util/call-context.d.ts.map +1 -0
  146. package/dist/util/call-context.js +29 -0
  147. package/dist/util/call-context.js.map +1 -0
  148. package/dist/util/dates.d.ts +62 -0
  149. package/dist/util/dates.d.ts.map +1 -0
  150. package/dist/util/dates.js +169 -0
  151. package/dist/util/dates.js.map +1 -0
  152. package/dist/util/errors.d.ts +9 -0
  153. package/dist/util/errors.d.ts.map +1 -0
  154. package/dist/util/errors.js +15 -0
  155. package/dist/util/errors.js.map +1 -0
  156. package/dist/util/immutable-map.d.ts +16 -0
  157. package/dist/util/immutable-map.d.ts.map +1 -0
  158. package/dist/util/immutable-map.js +38 -0
  159. package/dist/util/immutable-map.js.map +1 -0
  160. package/dist/util/json.d.ts +13 -0
  161. package/dist/util/json.d.ts.map +1 -0
  162. package/dist/util/json.js +44 -0
  163. package/dist/util/json.js.map +1 -0
  164. package/dist/util/text.d.ts +20 -0
  165. package/dist/util/text.d.ts.map +1 -0
  166. package/dist/util/text.js +78 -0
  167. package/dist/util/text.js.map +1 -0
  168. package/dist/util/xml.d.ts +35 -0
  169. package/dist/util/xml.d.ts.map +1 -0
  170. package/dist/util/xml.js +183 -0
  171. package/dist/util/xml.js.map +1 -0
  172. package/dist/v3/account-extension.d.ts +25 -0
  173. package/dist/v3/account-extension.d.ts.map +1 -0
  174. package/dist/v3/account-extension.js +176 -0
  175. package/dist/v3/account-extension.js.map +1 -0
  176. package/dist/v3/client.d.ts +24 -0
  177. package/dist/v3/client.d.ts.map +1 -0
  178. package/dist/v3/client.js +16 -0
  179. package/dist/v3/client.js.map +1 -0
  180. package/dist/v3/dialog.d.ts +78 -0
  181. package/dist/v3/dialog.d.ts.map +1 -0
  182. package/dist/v3/dialog.js +138 -0
  183. package/dist/v3/dialog.js.map +1 -0
  184. package/dist/v3/message.d.ts +72 -0
  185. package/dist/v3/message.d.ts.map +1 -0
  186. package/dist/v3/message.js +259 -0
  187. package/dist/v3/message.js.map +1 -0
  188. package/dist/v3/parameters.d.ts +79 -0
  189. package/dist/v3/parameters.d.ts.map +1 -0
  190. package/dist/v3/parameters.js +396 -0
  191. package/dist/v3/parameters.js.map +1 -0
  192. package/dist/v3/protocol.d.ts +68 -0
  193. package/dist/v3/protocol.d.ts.map +1 -0
  194. package/dist/v3/protocol.js +263 -0
  195. package/dist/v3/protocol.js.map +1 -0
  196. package/dist/v3/segments.d.ts +89 -0
  197. package/dist/v3/segments.d.ts.map +1 -0
  198. package/dist/v3/segments.js +283 -0
  199. package/dist/v3/segments.js.map +1 -0
  200. package/dist/v3/syntax.d.ts +76 -0
  201. package/dist/v3/syntax.d.ts.map +1 -0
  202. package/dist/v3/syntax.js +301 -0
  203. package/dist/v3/syntax.js.map +1 -0
  204. package/package.json +63 -4
  205. package/src/core/account.ts +250 -0
  206. package/src/core/amount.ts +209 -0
  207. package/src/core/balance.ts +84 -0
  208. package/src/core/bank-info.ts +66 -0
  209. package/src/core/client.ts +149 -0
  210. package/src/core/config.ts +141 -0
  211. package/src/core/errors.ts +203 -0
  212. package/src/core/feedback.ts +137 -0
  213. package/src/core/transaction.ts +156 -0
  214. package/src/core/transport.ts +114 -0
  215. package/src/formats/camt.ts +169 -0
  216. package/src/formats/mt940.ts +333 -0
  217. package/src/formats/readers.ts +56 -0
  218. package/src/formats/sepa-purpose.ts +75 -0
  219. package/src/index.ts +68 -0
  220. package/src/session/app-approval.ts +265 -0
  221. package/src/session/bank-connection.ts +51 -0
  222. package/src/session/dialog-runner.ts +119 -0
  223. package/src/session/login-guard.ts +135 -0
  224. package/src/session/parameter-data.ts +137 -0
  225. package/src/session/pin-tan-client.ts +186 -0
  226. package/src/session/pin-tan-dialog.ts +160 -0
  227. package/src/session/protocol.ts +311 -0
  228. package/src/session/response-handler.ts +130 -0
  229. package/src/session/sepa-accounts.ts +97 -0
  230. package/src/session/session-setup.ts +165 -0
  231. package/src/session/session-state.ts +170 -0
  232. package/src/session/tan-selection.ts +192 -0
  233. package/src/session/user-prompts.ts +174 -0
  234. package/src/tan/challenge.ts +252 -0
  235. package/src/tan/flicker.ts +270 -0
  236. package/src/tan/tan-image.ts +36 -0
  237. package/src/tan/tan-models.ts +247 -0
  238. package/src/util/async.ts +53 -0
  239. package/src/util/bytes.ts +135 -0
  240. package/src/util/call-context.ts +40 -0
  241. package/src/util/dates.ts +193 -0
  242. package/src/util/errors.ts +16 -0
  243. package/src/util/immutable-map.ts +47 -0
  244. package/src/util/json.ts +51 -0
  245. package/src/util/text.ts +82 -0
  246. package/src/util/xml.ts +172 -0
  247. package/src/v3/account-extension.ts +190 -0
  248. package/src/v3/client.ts +29 -0
  249. package/src/v3/dialog.ts +199 -0
  250. package/src/v3/message.ts +321 -0
  251. package/src/v3/parameters.ts +451 -0
  252. package/src/v3/protocol.ts +331 -0
  253. package/src/v3/segments.ts +331 -0
  254. package/src/v3/syntax.ts +307 -0
@@ -0,0 +1,396 @@
1
+ // Internal to the package, and named after the FinTS specification. Documentation is where the meaning is not evident.
2
+ import { Account } from '../core/account.js';
3
+ import { BankInfo } from '../core/bank-info.js';
4
+ import { highestCommonVersion } from '../session/parameter-data.js';
5
+ import { TanMethod, tanMediumRequirementOf } from '../tan/tan-models.js';
6
+ import { base64Decode, base64Encode, BytesBuilder } from '../util/bytes.js';
7
+ import { tryParseInt } from '../util/text.js';
8
+ import { AccountExtension } from './account-extension.js';
9
+ import { parseSegments } from './syntax.js';
10
+ /** Positions of the data elements in the header of the bank parameter data (HIBPA), after the segment header. */
11
+ const Hibpa = {
12
+ version: 1,
13
+ /** Country code, then bank code. */
14
+ bankId: 2,
15
+ bankName: 3,
16
+ languages: 5,
17
+ fintsVersions: 6,
18
+ maxMessageSize: 7,
19
+ minTimeout: 8,
20
+ maxTimeout: 9,
21
+ };
22
+ /**
23
+ * The data element of every parameter segment (`HI…S`) that holds its specific parameters, after the maximum number of
24
+ * orders, the minimum number of signatures and the security class.
25
+ */
26
+ const parameterGroup = 4;
27
+ /** The standard language in the communication access (HIKOM). */
28
+ const hikomStandardLanguage = 2;
29
+ function defined(values) {
30
+ return values.filter((v) => v !== undefined);
31
+ }
32
+ /** FinTS 3.0 bank parameter data (BPD): HIBPA and the parameter segments (`HI…S`), parsed once. */
33
+ export class Bpd3 {
34
+ segments;
35
+ bankInfo;
36
+ /** The two-step TAN methods of HITANS versions 6 and 7, by security function. */
37
+ offeredMethods;
38
+ tanMethods;
39
+ unsupportedTanMethods;
40
+ pinTan;
41
+ /** camt formats the bank offers for HKCAZ. */
42
+ camtFormats;
43
+ /** Versions of each parameter segment, by segment type. */
44
+ versions;
45
+ /**
46
+ * The dialog language HKVVB names: the bank's standard language (HIKOM), else the first it supports (HIBPA). Only
47
+ * these may be sent once the parameter data are known; `0`, the default, only before (Formals C.3.1.3).
48
+ */
49
+ dialogLanguage;
50
+ constructor(segments, hibpa, fallbackBankCode) {
51
+ this.segments = segments;
52
+ this.bankInfo = new BankInfo({
53
+ bankCode: hibpa.text(Hibpa.bankId, 1) ?? fallbackBankCode,
54
+ name: hibpa.text(Hibpa.bankName),
55
+ bpdVersion: hibpa.integer(Hibpa.version) ?? 0,
56
+ languages: defined(hibpa.texts(Hibpa.languages)),
57
+ supportedVersions: defined(hibpa.texts(Hibpa.fintsVersions)),
58
+ maxMessageSize: hibpa.integer(Hibpa.maxMessageSize),
59
+ minTimeout: hibpa.integer(Hibpa.minTimeout),
60
+ maxTimeout: hibpa.integer(Hibpa.maxTimeout),
61
+ });
62
+ this.offeredMethods = parseTanMethods(segments);
63
+ const offered = [...this.offeredMethods.values()];
64
+ this.tanMethods = Object.freeze(offered.filter((o) => o.runnable).map((o) => o.method));
65
+ this.unsupportedTanMethods = Object.freeze(offered.filter((o) => !o.runnable).map((o) => o.method.securityFunction));
66
+ this.pinTan = PinTanParameters.parse(segments);
67
+ this.camtFormats = segments
68
+ .filter((s) => s.type === 'HICAZS')
69
+ .flatMap((s) => defined(s.texts(parameterGroup)))
70
+ .filter((format) => format.includes('camt'));
71
+ this.versions = versionsByType(segments);
72
+ this.dialogLanguage = dialogLanguageOf(segments, this.bankInfo);
73
+ }
74
+ get version() {
75
+ return this.bankInfo.bpdVersion;
76
+ }
77
+ get pinLength() {
78
+ return this.pinTan.pinLength;
79
+ }
80
+ allowsWithPinTan(transaction) {
81
+ return this.pinTan.allowsWithPinTan(transaction);
82
+ }
83
+ /** The BPD in `all`, or `undefined` if they contain no HIBPA segment. */
84
+ static fromSegments(all, fallbackBankCode) {
85
+ const segments = all.filter(isParameterSegment);
86
+ const hibpa = segments.find((s) => s.type === 'HIBPA');
87
+ return hibpa === undefined ? undefined : new Bpd3(segments, hibpa, fallbackBankCode);
88
+ }
89
+ /** The parameter segment type of a business transaction: `HKSAL` → `HISALS`. */
90
+ static parameterName(transaction) {
91
+ return `HI${transaction.substring(2)}S`;
92
+ }
93
+ bestVersion(transaction, implemented) {
94
+ return highestCommonVersion(this.versions.get(Bpd3.parameterName(transaction)), implemented);
95
+ }
96
+ /** The version of the HKTAN segments that go with `method`; `undefined` for a method the bank does not offer. */
97
+ tanVersion(method) {
98
+ return this.offeredMethods.get(method.securityFunction)?.version;
99
+ }
100
+ }
101
+ function dialogLanguageOf(segments, bankInfo) {
102
+ const languages = new Set([1, 2, 3]);
103
+ const standard = segments.find((s) => s.type === 'HIKOM')?.integer(hikomStandardLanguage);
104
+ if (standard !== undefined && languages.has(standard))
105
+ return standard;
106
+ return bankInfo.languages.map((l) => tryParseInt(l)).find((l) => l !== undefined && languages.has(l)) ?? 0;
107
+ }
108
+ function isParameterSegment(s) {
109
+ const type = s.type;
110
+ if (['HIBPA', 'HIKOM', 'HISHV', 'HIKPV'].includes(type))
111
+ return true;
112
+ if (type === 'HIRMS' || type === 'HIRMG')
113
+ return false;
114
+ return type.length >= 5 && (type.startsWith('HI') || type.startsWith('DI')) && type.endsWith('S');
115
+ }
116
+ function versionsByType(segments) {
117
+ const versions = new Map();
118
+ for (const s of segments) {
119
+ let set = versions.get(s.type);
120
+ if (set === undefined)
121
+ versions.set(s.type, (set = new Set()));
122
+ set.add(s.version);
123
+ }
124
+ return versions;
125
+ }
126
+ /** Parses the two-step TAN methods from HITANS versions 6 and 7; for a method offered in several, the highest wins. */
127
+ function parseTanMethods(segments) {
128
+ const byCode = new Map();
129
+ for (const s of segments.filter((s) => s.type === 'HITANS')) {
130
+ for (const offered of parseHitans(s)) {
131
+ const existing = byCode.get(offered.method.securityFunction);
132
+ if (existing === undefined || offered.version > existing.version) {
133
+ byCode.set(offered.method.securityFunction, offered);
134
+ }
135
+ }
136
+ }
137
+ return byCode;
138
+ }
139
+ /** The fields describing one TAN method in HITANS, in order; version 6 ends with `activeMediaCount`. */
140
+ const HitansField = {
141
+ securityFunction: 0,
142
+ processVariant: 1,
143
+ technicalId: 2,
144
+ dkMethod: 3,
145
+ dkVersion: 4,
146
+ name: 5,
147
+ maxTanLength: 6,
148
+ tanFormat: 7,
149
+ returnValueText: 8,
150
+ /** "Maximale Länge des Rückgabewertes": the return value is the challenge. */
151
+ maxChallengeLength: 9,
152
+ multipleTans: 10,
153
+ tanTimeAndDialogRelation: 11,
154
+ orderCancellation: 12,
155
+ smsChargeAccountRequired: 13,
156
+ orderingAccountRequired: 14,
157
+ challengeClassRequired: 15,
158
+ structuredChallenge: 16,
159
+ initializationMode: 17,
160
+ mediumNameRequired: 18,
161
+ hhdUcRequired: 19,
162
+ activeMediaCount: 20,
163
+ maxStatusPolls: 21,
164
+ firstPollDelay: 22,
165
+ pollInterval: 23,
166
+ manualConfirmation: 24,
167
+ automaticPolling: 25,
168
+ };
169
+ function parseHitans(s) {
170
+ const version = s.version;
171
+ if (version !== 6 && version !== 7)
172
+ return [];
173
+ // Version 7 adds the fields for decoupled approval.
174
+ const fieldsPerMethod = version === 6 ? HitansField.activeMediaCount + 1 : HitansField.automaticPolling + 1;
175
+ const all = s.texts(parameterGroup);
176
+ const methods = [];
177
+ // The group starts with three general fields, then lists the methods.
178
+ for (let start = 3; start < all.length; start += fieldsPerMethod) {
179
+ const fields = all.slice(start, start + fieldsPerMethod);
180
+ const field = (f) => fields[f];
181
+ const number = (f) => tryParseInt(field(f));
182
+ const code = field(HitansField.securityFunction);
183
+ if (code === undefined)
184
+ continue;
185
+ // Process variant 1 needs the order hash and another message flow; the client runs variant 2, the one of PSD2
186
+ // strong customer authentication. An SMS charge account or an HHD_UC answer, where required, it cannot send.
187
+ const runnable = number(HitansField.processVariant) !== 1 &&
188
+ field(HitansField.smsChargeAccountRequired) !== '2' &&
189
+ field(HitansField.hhdUcRequired) !== 'J';
190
+ const dkMethod = field(HitansField.dkMethod);
191
+ const decoupledFields = version === 7;
192
+ const method = new TanMethod({
193
+ securityFunction: code,
194
+ technicalId: field(HitansField.technicalId),
195
+ dkMethod,
196
+ dkVersion: field(HitansField.dkVersion),
197
+ name: field(HitansField.name) ?? code,
198
+ maxTanLength: number(HitansField.maxTanLength),
199
+ numericTan: field(HitansField.tanFormat) !== '2',
200
+ returnValueText: field(HitansField.returnValueText),
201
+ maxChallengeLength: number(HitansField.maxChallengeLength),
202
+ structuredChallenge: field(HitansField.structuredChallenge) === 'J',
203
+ mediumRequirement: tanMediumRequirementOf(field(HitansField.mediumNameRequired)),
204
+ activeMediaCount: number(HitansField.activeMediaCount),
205
+ decoupled: decoupledFields && dkMethod !== undefined && dkMethod.toLowerCase().startsWith('decoupled'),
206
+ decoupledMaxPolls: decoupledFields ? number(HitansField.maxStatusPolls) : undefined,
207
+ decoupledFirstPollDelaySeconds: decoupledFields ? number(HitansField.firstPollDelay) : undefined,
208
+ decoupledPollIntervalSeconds: decoupledFields ? number(HitansField.pollInterval) : undefined,
209
+ decoupledManualConfirmation: !decoupledFields || field(HitansField.manualConfirmation) !== 'N',
210
+ decoupledAutomaticPolling: !decoupledFields || field(HitansField.automaticPolling) !== 'N',
211
+ });
212
+ methods.push({ method, runnable, version });
213
+ }
214
+ return methods;
215
+ }
216
+ /**
217
+ * PIN/TAN parameters (HIPINS): the PIN length, which business transactions PIN/TAN allows, and which of them need a
218
+ * TAN.
219
+ */
220
+ export class PinTanParameters {
221
+ tanRequired;
222
+ pinLength;
223
+ constructor(tanRequired,
224
+ /** The shortest and longest PIN the bank takes. */
225
+ pinLength) {
226
+ this.tanRequired = tanRequired;
227
+ this.pinLength = pinLength;
228
+ }
229
+ /** Reads the HIPINS segment of the highest version. */
230
+ static parse(segments) {
231
+ let hipins;
232
+ for (const s of segments.filter((s) => s.type === 'HIPINS')) {
233
+ if (hipins === undefined || s.version > hipins.version)
234
+ hipins = s;
235
+ }
236
+ if (hipins === undefined)
237
+ return new PinTanParameters(new Map(), { min: undefined, max: undefined });
238
+ const fields = hipins.texts(parameterGroup);
239
+ const tanRequired = new Map();
240
+ // Five general fields, the PIN lengths first; then pairs of segment type and TAN flag.
241
+ for (let i = 5; i + 1 < fields.length; i += 2) {
242
+ const type = fields[i];
243
+ if (type !== undefined)
244
+ tanRequired.set(type, fields[i + 1] === 'J');
245
+ }
246
+ return new PinTanParameters(tanRequired, { min: tryParseInt(fields[0]), max: tryParseInt(fields[1]) });
247
+ }
248
+ /** Whether the bank wants a TAN for the business transaction of `segmentType`, such as `HKKAZ`. */
249
+ requiresTan(segmentType) {
250
+ return this.tanRequired.get(segmentType) ?? false;
251
+ }
252
+ /** Whether PIN/TAN allows `segmentType` at all: HIPINS lists it, or lists no business transactions (PIN/TAN B.8.1). */
253
+ allowsWithPinTan(segmentType) {
254
+ return this.tanRequired.size === 0 || this.tanRequired.has(segmentType);
255
+ }
256
+ }
257
+ /** The version and the usage ("UPD-Verwendung") of the user parameter data in HIUPA. */
258
+ const hiupaVersion = 2;
259
+ const hiupaUsage = 3;
260
+ /** Business transaction codes such as `HKSAL` or `DKPAE`. */
261
+ const transactionCode = /^[A-Z]{4,6}$/;
262
+ /** FinTS 3.0 user parameter data (UPD): HIUPA and the accounts (HIUPD), parsed once. */
263
+ export class Upd3 {
264
+ segments;
265
+ version;
266
+ listsAllTransactions;
267
+ listedTransactions;
268
+ /** The accounts with the extension each carries, where it does. */
269
+ entries;
270
+ accounts;
271
+ /** `listsAll` tells whether HIUPA declares the lists of permitted transactions complete ("UPD-Verwendung" 0). */
272
+ constructor(segments, hiupa, listsAll, defaultBankCode, defaultCountry) {
273
+ this.segments = segments;
274
+ const hiupds = segments.filter((s) => s.type === 'HIUPD');
275
+ this.version = hiupa.integer(hiupaVersion) ?? 0;
276
+ this.listsAllTransactions = listsAll;
277
+ this.listedTransactions = new Set(hiupds.flatMap(transactionsOf));
278
+ this.entries = Object.freeze(hiupds.map((s) => entryOf(s, defaultBankCode, defaultCountry, listsAll)).filter((e) => e !== undefined));
279
+ this.accounts = Object.freeze(this.entries.map((e) => e.account));
280
+ }
281
+ /** FinTS 3.0 UPD do not list the allowed TAN methods; the bank reports them with return code 3920. */
282
+ get allowedTanMethods() {
283
+ return [];
284
+ }
285
+ completeBalance(account) {
286
+ return this.entries.find((e) => e.account.matches(account))?.extension?.completeBalance(account);
287
+ }
288
+ /** The UPD in `all`, or `undefined` if they contain no HIUPA segment. */
289
+ static fromSegments(all, defaultBankCode, defaultCountry) {
290
+ const segments = all.filter((s) => s.type === 'HIUPA' || s.type === 'HIUPD');
291
+ const hiupa = segments.find((s) => s.type === 'HIUPA');
292
+ if (hiupa === undefined)
293
+ return undefined;
294
+ return new Upd3(segments, hiupa, hiupa.text(hiupaUsage) === '0', defaultBankCode, defaultCountry);
295
+ }
296
+ }
297
+ /**
298
+ * The data element where the permitted transactions start, by HIUPD version: version 6 inserts the IBAN, version 5 the
299
+ * account type.
300
+ */
301
+ function allowedFrom(version) {
302
+ return version >= 6 ? 10 : version === 5 ? 9 : 8;
303
+ }
304
+ /** The permitted transactions of the HIUPD `s`. */
305
+ function transactionsOf(s) {
306
+ const codes = [];
307
+ for (let i = allowedFrom(s.version); i < s.length; i++) {
308
+ const code = s.text(i, 0);
309
+ if (code !== undefined && transactionCode.test(code))
310
+ codes.push(code);
311
+ }
312
+ return codes;
313
+ }
314
+ /**
315
+ * The account extension of `s` (version 6, "Erweiterung, kontobezogen"): the JSON object behind the permitted
316
+ * transactions, whose count varies. A bank that leaves its colons unescaped splits it into group elements, which are
317
+ * joined again.
318
+ */
319
+ function extensionOf(s) {
320
+ if (s.version < 6)
321
+ return undefined;
322
+ for (let i = allowedFrom(s.version); i < s.length; i++) {
323
+ const text = s
324
+ .group(i)
325
+ .map((e) => e.text)
326
+ .join(':');
327
+ if (text.trimStart().startsWith('{'))
328
+ return AccountExtension.tryParse(text);
329
+ }
330
+ return undefined;
331
+ }
332
+ function entryOf(s, defaultBankCode, defaultCountry, listsAll) {
333
+ const account = accountOf(s, defaultBankCode, defaultCountry, listsAll);
334
+ if (account === undefined)
335
+ return undefined;
336
+ const extension = extensionOf(s);
337
+ return {
338
+ account: extension === undefined ? account : account.copyWith({ bic: extension.bic, dataStatus: extension.status }),
339
+ extension,
340
+ };
341
+ }
342
+ function accountOf(s, defaultBankCode, defaultCountry, listsAll) {
343
+ const version = s.version;
344
+ const nationalAccount = s.texts(1);
345
+ let number;
346
+ let subAccount;
347
+ let country;
348
+ let bank;
349
+ if (nationalAccount.length >= 4) {
350
+ [number, subAccount, country, bank] = nationalAccount;
351
+ }
352
+ else if (nationalAccount.length === 3) {
353
+ // Older banks leave out the sub-account.
354
+ [number, country, bank] = nationalAccount;
355
+ }
356
+ else if (nationalAccount.length > 0) {
357
+ number = nationalAccount[0];
358
+ }
359
+ const iban = version >= 6 ? s.text(2) : undefined;
360
+ if (number === undefined && iban === undefined)
361
+ return undefined;
362
+ // Field positions by HIUPD version: version 6 inserts the IBAN, version 5 the account type.
363
+ const fields = version >= 6
364
+ ? { customer: 3, type: 4, currency: 5, name1: 6, name2: 7, product: 8 }
365
+ : version === 5
366
+ ? { customer: 2, type: 3, currency: 4, name1: 5, name2: 6, product: 7 }
367
+ : { customer: 2, type: undefined, currency: 3, name1: 4, name2: 5, product: 6 };
368
+ const owner = defined([s.text(fields.name1), s.text(fields.name2)])
369
+ .join(' ')
370
+ .trim();
371
+ return new Account({
372
+ accountNumber: number,
373
+ subAccount,
374
+ countryCode: country ?? defaultCountry,
375
+ bankCode: bank ?? defaultBankCode,
376
+ iban,
377
+ customerId: s.text(fields.customer),
378
+ typeCode: fields.type === undefined ? undefined : s.integer(fields.type),
379
+ currency: s.text(fields.currency),
380
+ ownerName: owner === '' ? undefined : owner,
381
+ productName: s.text(fields.product),
382
+ allowedTransactions: transactionsOf(s),
383
+ allowedTransactionsComplete: listsAll,
384
+ });
385
+ }
386
+ /** Serializes parameter segments for the saved state. */
387
+ export function encodeSegments(segments) {
388
+ const out = new BytesBuilder();
389
+ for (const s of segments)
390
+ out.add(s.encode());
391
+ return base64Encode(out.takeBytes());
392
+ }
393
+ export function decodeSegments(data) {
394
+ return parseSegments(base64Decode(data));
395
+ }
396
+ //# sourceMappingURL=parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/v3/parameters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { Account } from '../core/account.js';
2
+ import type { Balance } from '../core/balance.js';
3
+ import type { MessageLogger } from '../core/client.js';
4
+ import { type FinTsConfig } from '../core/config.js';
5
+ import type { Transaction, TransactionFormat } from '../core/transaction.js';
6
+ import type { FinTsTransport } from '../core/transport.js';
7
+ import { LoginGuard } from '../session/login-guard.js';
8
+ import { type PinTanProtocol, type Query, type Synchronization } from '../session/protocol.js';
9
+ import type { TanMedium, TanMethod } from '../tan/tan-models.js';
10
+ import { type JsonObject } from '../util/json.js';
11
+ import { FinTs3Dialog, type FinTs3DialogHost, type Signing3 } from './dialog.js';
12
+ import { IncomingMessage3 } from './message.js';
13
+ import { Bpd3, Upd3 } from './parameters.js';
14
+ import { type SegmentSpec } from './syntax.js';
15
+ /** A business transaction in FinTS 3.0. */
16
+ export type FinTs3Query<T> = Query<IncomingMessage3, SegmentSpec, T>;
17
+ /** FinTS 3.0 messages and business transactions (HBCI segment syntax, PIN/TAN security). */
18
+ export declare class FinTs3Protocol implements PinTanProtocol<IncomingMessage3, SegmentSpec>, FinTs3DialogHost {
19
+ readonly config: FinTsConfig;
20
+ private readonly pin;
21
+ private readonly connection;
22
+ readonly loginGuard: LoginGuard;
23
+ /** Customer system ID the bank assigned in the synchronization. */
24
+ systemId: string | undefined;
25
+ private bpd;
26
+ private upd;
27
+ /**
28
+ * Throws `TypeError` if the PIN is empty, if the PIN or login data contain characters FinTS 3.0 cannot send (ISO
29
+ * 8859-1 only), or the product ID or version is longer than its field in HKVVB.
30
+ */
31
+ constructor(config: FinTsConfig, pin: string, transport?: FinTsTransport, logger?: MessageLogger);
32
+ get bankParameters(): Bpd3 | undefined;
33
+ get userParameters(): Upd3 | undefined;
34
+ /** Dialogs cannot start without the customer system ID. */
35
+ get synchronization(): Synchronization;
36
+ forgetSystemId(): boolean;
37
+ initSegments(systemId: string, anonymous?: boolean): SegmentSpec[];
38
+ post(message: {
39
+ dialogId: string;
40
+ number: number;
41
+ segments: readonly SegmentSpec[];
42
+ signing: Signing3 | undefined;
43
+ tan: string | undefined;
44
+ }): Promise<Uint8Array>;
45
+ keepParameterData(response: IncomingMessage3): void;
46
+ private keepBankParameters;
47
+ /** Keeps the bank parameter data of an anonymous dialog, and nothing that belongs to a user. */
48
+ fetchBankParametersAnonymously(): Promise<IncomingMessage3>;
49
+ /**
50
+ * Asks for the bank parameter data in an anonymous dialog that announces strong customer authentication; a bank that
51
+ * rejects the announcement, with a return code or by failing on it, is asked again without it.
52
+ *
53
+ * A timeout or a broken connection is not a reason to ask again: it would only double the wait.
54
+ */
55
+ private requestBankParametersAnonymously;
56
+ private anonymousDialog;
57
+ newDialog(method: TanMethod, tanMedium?: string): FinTs3Dialog;
58
+ combine(first: IncomingMessage3, second: IncomingMessage3): IncomingMessage3;
59
+ private version;
60
+ tanMedia(): FinTs3Query<TanMedium[]> | undefined;
61
+ sepaAccounts(): FinTs3Query<Account[]> | undefined;
62
+ balance(account: Account): FinTs3Query<Balance>;
63
+ transactions(account: Account, format: TransactionFormat, from: Date | undefined, to: Date | undefined): FinTs3Query<Transaction[]>;
64
+ saveState(): JsonObject;
65
+ restoreState(saved: JsonObject): void;
66
+ close(): void;
67
+ }
68
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/v3/protocol.ts"],"names":[],"mappings":"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"}