@icure/api 4.0.83 → 4.0.88

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 (156) hide show
  1. package/icc-api/model/models.d.ts +1 -0
  2. package/icc-api/model/models.js +1 -0
  3. package/icc-api/model/models.js.map +1 -1
  4. package/icc-x-api/crypto/utils.d.ts +3 -3
  5. package/icc-x-api/crypto/utils.js +78 -111
  6. package/icc-x-api/crypto/utils.js.map +1 -1
  7. package/icc-x-api/filters/AllCodesFilter.d.ts +2 -1
  8. package/icc-x-api/filters/AllCodesFilter.js +5 -3
  9. package/icc-x-api/filters/AllCodesFilter.js.map +1 -1
  10. package/icc-x-api/filters/AllDevicesFilter.d.ts +2 -1
  11. package/icc-x-api/filters/AllDevicesFilter.js +5 -3
  12. package/icc-x-api/filters/AllDevicesFilter.js.map +1 -1
  13. package/icc-x-api/filters/AllHealthcarePartiesFilter.d.ts +2 -1
  14. package/icc-x-api/filters/AllHealthcarePartiesFilter.js +5 -3
  15. package/icc-x-api/filters/AllHealthcarePartiesFilter.js.map +1 -1
  16. package/icc-x-api/filters/AllUsersFilter.d.ts +2 -1
  17. package/icc-x-api/filters/AllUsersFilter.js +5 -3
  18. package/icc-x-api/filters/AllUsersFilter.js.map +1 -1
  19. package/icc-x-api/filters/CodeByIdsFilter.d.ts +2 -1
  20. package/icc-x-api/filters/CodeByIdsFilter.js +3 -1
  21. package/icc-x-api/filters/CodeByIdsFilter.js.map +1 -1
  22. package/icc-x-api/filters/CodeByRegionTypeLabelLanguageFilter.d.ts +2 -1
  23. package/icc-x-api/filters/CodeByRegionTypeLabelLanguageFilter.js +3 -1
  24. package/icc-x-api/filters/CodeByRegionTypeLabelLanguageFilter.js.map +1 -1
  25. package/icc-x-api/filters/ComplementFilter.d.ts +1 -0
  26. package/icc-x-api/filters/ComplementFilter.js.map +1 -1
  27. package/icc-x-api/filters/ConstantFilter.d.ts +1 -0
  28. package/icc-x-api/filters/ConstantFilter.js.map +1 -1
  29. package/icc-x-api/filters/ContactByHcPartyFilter.d.ts +2 -1
  30. package/icc-x-api/filters/ContactByHcPartyFilter.js +3 -1
  31. package/icc-x-api/filters/ContactByHcPartyFilter.js.map +1 -1
  32. package/icc-x-api/filters/ContactByHcPartyPatientTagCodeDateFilter.d.ts +2 -1
  33. package/icc-x-api/filters/ContactByHcPartyPatientTagCodeDateFilter.js +5 -3
  34. package/icc-x-api/filters/ContactByHcPartyPatientTagCodeDateFilter.js.map +1 -1
  35. package/icc-x-api/filters/ContactByHcPartyTagCodeDateFilter.d.ts +2 -12
  36. package/icc-x-api/filters/ContactByHcPartyTagCodeDateFilter.js +3 -12
  37. package/icc-x-api/filters/ContactByHcPartyTagCodeDateFilter.js.map +1 -1
  38. package/icc-x-api/filters/ContactByServiceIdsFilter.d.ts +2 -1
  39. package/icc-x-api/filters/ContactByServiceIdsFilter.js +5 -3
  40. package/icc-x-api/filters/ContactByServiceIdsFilter.js.map +1 -1
  41. package/icc-x-api/filters/DeviceByHcPartyFilter.d.ts +2 -12
  42. package/icc-x-api/filters/DeviceByHcPartyFilter.js +3 -12
  43. package/icc-x-api/filters/DeviceByHcPartyFilter.js.map +1 -1
  44. package/icc-x-api/filters/DeviceByIdsFilter.d.ts +2 -12
  45. package/icc-x-api/filters/DeviceByIdsFilter.js +3 -12
  46. package/icc-x-api/filters/DeviceByIdsFilter.js.map +1 -1
  47. package/icc-x-api/filters/HealthElementByHcPartyFilter.d.ts +2 -1
  48. package/icc-x-api/filters/HealthElementByHcPartyFilter.js +5 -3
  49. package/icc-x-api/filters/HealthElementByHcPartyFilter.js.map +1 -1
  50. package/icc-x-api/filters/HealthElementByHcPartyIdentifiersFilter.d.ts +2 -1
  51. package/icc-x-api/filters/HealthElementByHcPartyIdentifiersFilter.js +3 -1
  52. package/icc-x-api/filters/HealthElementByHcPartyIdentifiersFilter.js.map +1 -1
  53. package/icc-x-api/filters/HealthElementByHcPartySecretForeignKeysFilter.d.ts +2 -12
  54. package/icc-x-api/filters/HealthElementByHcPartySecretForeignKeysFilter.js +3 -12
  55. package/icc-x-api/filters/HealthElementByHcPartySecretForeignKeysFilter.js.map +1 -1
  56. package/icc-x-api/filters/HealthElementByHcPartyTagCodeFilter.d.ts +2 -1
  57. package/icc-x-api/filters/HealthElementByHcPartyTagCodeFilter.js +5 -3
  58. package/icc-x-api/filters/HealthElementByHcPartyTagCodeFilter.js.map +1 -1
  59. package/icc-x-api/filters/HealthElementByIdsFilter.d.ts +2 -1
  60. package/icc-x-api/filters/HealthElementByIdsFilter.js +5 -3
  61. package/icc-x-api/filters/HealthElementByIdsFilter.js.map +1 -1
  62. package/icc-x-api/filters/HealthcarePartyByIdsFilter.d.ts +2 -1
  63. package/icc-x-api/filters/HealthcarePartyByIdsFilter.js +5 -3
  64. package/icc-x-api/filters/HealthcarePartyByIdsFilter.js.map +1 -1
  65. package/icc-x-api/filters/IntersectionFilter.d.ts +1 -0
  66. package/icc-x-api/filters/IntersectionFilter.js.map +1 -1
  67. package/icc-x-api/filters/InvoiceByHcPartyCodeDateFilter.d.ts +2 -1
  68. package/icc-x-api/filters/InvoiceByHcPartyCodeDateFilter.js +5 -3
  69. package/icc-x-api/filters/InvoiceByHcPartyCodeDateFilter.js.map +1 -1
  70. package/icc-x-api/filters/PatientByHcPartyAndActiveFilter.d.ts +2 -1
  71. package/icc-x-api/filters/PatientByHcPartyAndActiveFilter.js +5 -3
  72. package/icc-x-api/filters/PatientByHcPartyAndActiveFilter.js.map +1 -1
  73. package/icc-x-api/filters/PatientByHcPartyAndExternalIdFilter.d.ts +2 -1
  74. package/icc-x-api/filters/PatientByHcPartyAndExternalIdFilter.js +5 -3
  75. package/icc-x-api/filters/PatientByHcPartyAndExternalIdFilter.js.map +1 -1
  76. package/icc-x-api/filters/PatientByHcPartyAndIdentifiersFilter.d.ts +2 -1
  77. package/icc-x-api/filters/PatientByHcPartyAndIdentifiersFilter.js +3 -1
  78. package/icc-x-api/filters/PatientByHcPartyAndIdentifiersFilter.js.map +1 -1
  79. package/icc-x-api/filters/PatientByHcPartyAndSsinFilter.d.ts +2 -1
  80. package/icc-x-api/filters/PatientByHcPartyAndSsinFilter.js +5 -3
  81. package/icc-x-api/filters/PatientByHcPartyAndSsinFilter.js.map +1 -1
  82. package/icc-x-api/filters/PatientByHcPartyAndSsinsFilter.d.ts +2 -1
  83. package/icc-x-api/filters/PatientByHcPartyAndSsinsFilter.js +5 -3
  84. package/icc-x-api/filters/PatientByHcPartyAndSsinsFilter.js.map +1 -1
  85. package/icc-x-api/filters/PatientByHcPartyDateOfBirthBetweenFilter.d.ts +2 -1
  86. package/icc-x-api/filters/PatientByHcPartyDateOfBirthBetweenFilter.js +5 -3
  87. package/icc-x-api/filters/PatientByHcPartyDateOfBirthBetweenFilter.js.map +1 -1
  88. package/icc-x-api/filters/PatientByHcPartyDateOfBirthFilter.d.ts +2 -1
  89. package/icc-x-api/filters/PatientByHcPartyDateOfBirthFilter.js +5 -3
  90. package/icc-x-api/filters/PatientByHcPartyDateOfBirthFilter.js.map +1 -1
  91. package/icc-x-api/filters/PatientByHcPartyFilter.d.ts +2 -1
  92. package/icc-x-api/filters/PatientByHcPartyFilter.js +5 -3
  93. package/icc-x-api/filters/PatientByHcPartyFilter.js.map +1 -1
  94. package/icc-x-api/filters/PatientByHcPartyGenderEducationProfession.js +1 -0
  95. package/icc-x-api/filters/PatientByHcPartyGenderEducationProfession.js.map +1 -1
  96. package/icc-x-api/filters/PatientByHcPartyNameContainsFuzzyFilter.d.ts +2 -1
  97. package/icc-x-api/filters/PatientByHcPartyNameContainsFuzzyFilter.js +5 -3
  98. package/icc-x-api/filters/PatientByHcPartyNameContainsFuzzyFilter.js.map +1 -1
  99. package/icc-x-api/filters/PatientByHcPartyNameFilter.d.ts +2 -1
  100. package/icc-x-api/filters/PatientByHcPartyNameFilter.js +5 -3
  101. package/icc-x-api/filters/PatientByHcPartyNameFilter.js.map +1 -1
  102. package/icc-x-api/filters/PatientByIdsFilter.d.ts +2 -1
  103. package/icc-x-api/filters/PatientByIdsFilter.js +5 -3
  104. package/icc-x-api/filters/PatientByIdsFilter.js.map +1 -1
  105. package/icc-x-api/filters/ServiceByContactsAndSubcontactsFilter.d.ts +2 -1
  106. package/icc-x-api/filters/ServiceByContactsAndSubcontactsFilter.js +5 -3
  107. package/icc-x-api/filters/ServiceByContactsAndSubcontactsFilter.js.map +1 -1
  108. package/icc-x-api/filters/ServiceByHcPartyFilter.d.ts +2 -1
  109. package/icc-x-api/filters/ServiceByHcPartyFilter.js +5 -3
  110. package/icc-x-api/filters/ServiceByHcPartyFilter.js.map +1 -1
  111. package/icc-x-api/filters/ServiceByHcPartyIdentifiersFilter.d.ts +2 -1
  112. package/icc-x-api/filters/ServiceByHcPartyIdentifiersFilter.js +3 -1
  113. package/icc-x-api/filters/ServiceByHcPartyIdentifiersFilter.js.map +1 -1
  114. package/icc-x-api/filters/ServiceByHcPartyTagCodeDateFilter.d.ts +2 -1
  115. package/icc-x-api/filters/ServiceByHcPartyTagCodeDateFilter.js +5 -3
  116. package/icc-x-api/filters/ServiceByHcPartyTagCodeDateFilter.js.map +1 -1
  117. package/icc-x-api/filters/ServiceByIdsFilter.d.ts +2 -1
  118. package/icc-x-api/filters/ServiceByIdsFilter.js +5 -3
  119. package/icc-x-api/filters/ServiceByIdsFilter.js.map +1 -1
  120. package/{icc-api/model → icc-x-api/filters}/ServiceBySecretForeignKeys.d.ts +2 -1
  121. package/{icc-api/model → icc-x-api/filters}/ServiceBySecretForeignKeys.js +5 -3
  122. package/icc-x-api/filters/ServiceBySecretForeignKeys.js.map +1 -0
  123. package/icc-x-api/filters/UserByIdsFilter.d.ts +2 -1
  124. package/icc-x-api/filters/UserByIdsFilter.js +5 -3
  125. package/icc-x-api/filters/UserByIdsFilter.js.map +1 -1
  126. package/icc-x-api/filters/filters.d.ts +35 -34
  127. package/icc-x-api/filters/filters.js +36 -33
  128. package/icc-x-api/filters/filters.js.map +1 -1
  129. package/icc-x-api/icc-contact-x-api.d.ts +3 -1
  130. package/icc-x-api/icc-contact-x-api.js +8 -0
  131. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  132. package/icc-x-api/icc-crypto-x-api.d.ts +4 -2
  133. package/icc-x-api/icc-crypto-x-api.js +24 -26
  134. package/icc-x-api/icc-crypto-x-api.js.map +1 -1
  135. package/icc-x-api/index.js +2 -1
  136. package/icc-x-api/index.js.map +1 -1
  137. package/icc-x-api/utils/asn1-packer.d.ts +3 -0
  138. package/icc-x-api/utils/asn1-packer.js +83 -0
  139. package/icc-x-api/utils/asn1-packer.js.map +1 -0
  140. package/icc-x-api/utils/asn1-parser.d.ts +8 -0
  141. package/icc-x-api/utils/asn1-parser.js +139 -0
  142. package/icc-x-api/utils/asn1-parser.js.map +1 -0
  143. package/icc-x-api/utils/functional-util.d.ts +1 -0
  144. package/icc-x-api/utils/functional-util.js +9 -0
  145. package/icc-x-api/utils/functional-util.js.map +1 -0
  146. package/icc-x-api/utils/index.d.ts +1 -0
  147. package/icc-x-api/utils/index.js +1 -0
  148. package/icc-x-api/utils/index.js.map +1 -1
  149. package/index.d.ts +0 -1
  150. package/index.js +0 -1
  151. package/index.js.map +1 -1
  152. package/package.json +1 -1
  153. package/icc-api/model/ServiceBySecretForeignKeys.js.map +0 -1
  154. package/icc-x-api/utils/asn1.d.ts +0 -53
  155. package/icc-x-api/utils/asn1.js +0 -510
  156. package/icc-x-api/utils/asn1.js.map +0 -1
@@ -1,510 +0,0 @@
1
- "use strict";
2
- // ASN.1 JavaScript decoder
3
- // Copyright (c) 2008-2014 Lapo Luchini <lapo@lapo.it>
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.ASN1 = exports.Stream = exports.Int10 = void 0;
6
- // Permission to use, copy, modify, and/or distribute this software for any
7
- // purpose with or without fee is hereby granted, provided that the above
8
- // copyright notice and this permission notice appear in all copies.
9
- //
10
- // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
- // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
- // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
- // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
- // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
- // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
- // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
- class Int10 {
18
- constructor(value = 0) {
19
- this.buf = [+value || 0];
20
- }
21
- mulAdd(m, c) {
22
- // assert(m <= 256)
23
- let b = this.buf, l = b.length, i, t;
24
- for (i = 0; i < l; ++i) {
25
- t = b[i] * m + c;
26
- if (t < Int10.max)
27
- c = 0;
28
- else {
29
- c = 0 | (t / Int10.max);
30
- t -= c * Int10.max;
31
- }
32
- b[i] = t;
33
- }
34
- if (c > 0)
35
- b[i] = c;
36
- }
37
- toString(base = 10) {
38
- if ((base || 10) != 10)
39
- throw 'only base 10 is supported';
40
- let b = this.buf, s = b[b.length - 1].toString();
41
- for (let i = b.length - 2; i >= 0; --i)
42
- s += (Int10.max + b[i]).toString().substring(1);
43
- return s;
44
- }
45
- valueOf() {
46
- let b = this.buf, v = 0;
47
- for (let i = b.length - 1; i >= 0; --i)
48
- v = v * Int10.max + b[i];
49
- return v;
50
- }
51
- simplify() {
52
- const b = this.buf;
53
- return b.length == 1 ? b[0] : this;
54
- }
55
- }
56
- exports.Int10 = Int10;
57
- Int10.max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256
58
- const ellipsis = '\u2026';
59
- const reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
60
- const reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
61
- const hexDigits = '0123456789abcdef';
62
- function stringCut(str, len) {
63
- if (str.length > len) {
64
- str = str.substring(0, len) + ellipsis;
65
- }
66
- return str;
67
- }
68
- class Stream {
69
- constructor(enc, pos) {
70
- this.enc = enc;
71
- this.pos = pos;
72
- }
73
- get(pos) {
74
- if (pos === undefined)
75
- pos = this.pos++;
76
- if (pos >= this.enc.byteLength)
77
- throw 'Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length;
78
- return this.enc[pos];
79
- }
80
- hexByte(b) {
81
- return hexDigits.charAt((b >> 4) & 0xf) + hexDigits.charAt(b & 0xf);
82
- }
83
- hexDump(start, end, raw = false) {
84
- let s = '';
85
- for (let i = start; i < end; ++i) {
86
- s += this.hexByte(this.get(i));
87
- if (!raw)
88
- switch (i & 0xf) {
89
- case 0x7:
90
- s += ' ';
91
- break;
92
- case 0xf:
93
- s += '\n';
94
- break;
95
- default:
96
- s += ' ';
97
- }
98
- }
99
- return s;
100
- }
101
- isASCII(start, end) {
102
- for (let i = start; i < end; ++i) {
103
- const c = this.get(i);
104
- if (c < 32 || c > 176)
105
- return false;
106
- }
107
- return true;
108
- }
109
- parseStringISO(start, end) {
110
- let s = '';
111
- for (let i = start; i < end; ++i)
112
- s += String.fromCharCode(this.get(i));
113
- return s;
114
- }
115
- parseStringUTF(start, end) {
116
- let s = '';
117
- for (let i = start; i < end;) {
118
- const c = this.get(i++);
119
- if (c < 128)
120
- s += String.fromCharCode(c);
121
- else if (c > 191 && c < 224)
122
- s += String.fromCharCode(((c & 0x1f) << 6) | (this.get(i++) & 0x3f));
123
- else
124
- s += String.fromCharCode(((c & 0x0f) << 12) | ((this.get(i++) & 0x3f) << 6) | (this.get(i++) & 0x3f));
125
- }
126
- return s;
127
- }
128
- parseStringBMP(start, end) {
129
- let str = '', hi, lo;
130
- for (let i = start; i < end;) {
131
- hi = this.get(i++);
132
- lo = this.get(i++);
133
- str += String.fromCharCode((hi << 8) | lo);
134
- }
135
- return str;
136
- }
137
- parseTime(start, end, shortYear) {
138
- let s = this.parseStringISO(start, end);
139
- const m = (shortYear ? reTimeS : reTimeL).exec(s);
140
- if (!m)
141
- return 'Unrecognized time: ' + s;
142
- if (shortYear) {
143
- // to avoid querying the timer, use the fixed range [1970, 2069]
144
- // it will conform with ITU X.400 [-10, +40] sliding window until 2030
145
- const year = +m[1];
146
- m[1] = '' + (year < 70 ? 2000 : 1900);
147
- }
148
- s = m[1] + '-' + m[2] + '-' + m[3] + ' ' + m[4];
149
- if (m[5]) {
150
- s += ':' + m[5];
151
- if (m[6]) {
152
- s += ':' + m[6];
153
- if (m[7])
154
- s += '.' + m[7];
155
- }
156
- }
157
- if (m[8]) {
158
- s += ' UTC';
159
- if (m[8] != 'Z') {
160
- s += m[8];
161
- if (m[9])
162
- s += ':' + m[9];
163
- }
164
- }
165
- return s;
166
- }
167
- parseInteger(start, end) {
168
- let v = this.get(start), neg = v > 127, pad = neg ? 255 : 0, len, s = '';
169
- // skip unuseful bits (not allowed in DER)
170
- while (v == pad && ++start < end)
171
- v = this.get(start);
172
- len = end - start;
173
- if (len === 0)
174
- return neg ? -1 : 0;
175
- // show bit length of huge integers
176
- if (len > 4) {
177
- let vv = v;
178
- len <<= 3;
179
- while (((vv ^ pad) & 0x80) == 0) {
180
- vv <<= 1;
181
- --len;
182
- }
183
- s = '(' + len + ' bit)\n';
184
- }
185
- // decode the integer
186
- if (neg)
187
- v = v - 256;
188
- const n = new Int10(v);
189
- for (let i = start + 1; i < end; ++i)
190
- n.mulAdd(256, this.get(i));
191
- return s + n.toString();
192
- }
193
- parseBitString(start, end, maxLength) {
194
- let unusedBit = this.get(start), lenBit = ((end - start - 1) << 3) - unusedBit, intro = '(' + lenBit + ' bit)\n', s = '';
195
- for (let i = start + 1; i < end; ++i) {
196
- const b = this.get(i), skip = i == end - 1 ? unusedBit : 0;
197
- for (let j = 7; j >= skip; --j)
198
- s += (b >> j) & 1 ? '1' : '0';
199
- if (s.length > maxLength)
200
- return intro + stringCut(s, maxLength);
201
- }
202
- return intro + s;
203
- }
204
- parseOctetString(start, end, maxLength) {
205
- if (this.isASCII(start, end))
206
- return stringCut(this.parseStringISO(start, end), maxLength);
207
- let len = end - start, s = '(' + len + ' byte)\n';
208
- maxLength /= 2; // we work in bytes
209
- if (len > maxLength)
210
- end = start + maxLength;
211
- for (let i = start; i < end; ++i)
212
- s += this.hexByte(this.get(i));
213
- if (len > maxLength)
214
- s += ellipsis;
215
- return s;
216
- }
217
- parseOID(start, end, maxLength) {
218
- let s = '', n = new Int10(), bits = 0;
219
- for (let i = start; i < end; ++i) {
220
- const v = this.get(i);
221
- n.mulAdd(128, v & 0x7f);
222
- bits += 7;
223
- if (!(v & 0x80)) {
224
- // finished
225
- if (s === '') {
226
- const num = n.simplify();
227
- const m = num < 80 ? (num < 40 ? 0 : 1) : 2;
228
- s = m + '.' + (num - m * 40);
229
- }
230
- else
231
- s += '.' + n.toString();
232
- if (s.length > maxLength)
233
- return stringCut(s, maxLength);
234
- n = new Int10();
235
- bits = 0;
236
- }
237
- }
238
- if (bits > 0)
239
- s += '.incomplete';
240
- return s;
241
- }
242
- }
243
- exports.Stream = Stream;
244
- class ASN1Tag {
245
- constructor(stream) {
246
- let buf = stream.get();
247
- this.tagClass = buf >> 6;
248
- this.tagConstructed = (buf & 0x20) !== 0;
249
- this.tagNumber = buf & 0x1f;
250
- if (this.tagNumber == 0x1f) {
251
- // long tag
252
- const n = new Int10();
253
- do {
254
- buf = stream.get();
255
- n.mulAdd(128, buf & 0x7f);
256
- } while (buf & 0x80);
257
- this.tagNumber = n.simplify();
258
- }
259
- }
260
- isUniversal() {
261
- return this.tagClass === 0x00;
262
- }
263
- isEOC() {
264
- return this.tagClass === 0x00 && this.tagNumber === 0x00;
265
- }
266
- }
267
- class ASN1 {
268
- constructor(stream, header, length, tag, sub = []) {
269
- this.stream = stream;
270
- this.header = header;
271
- this.length = length;
272
- this.tag = tag;
273
- this.sub = sub;
274
- }
275
- typeName() {
276
- switch (this.tag.tagClass) {
277
- case 0: // universal
278
- switch (this.tag.tagNumber) {
279
- case 0x00:
280
- return 'EOC';
281
- case 0x01:
282
- return 'BOOLEAN';
283
- case 0x02:
284
- return 'INTEGER';
285
- case 0x03:
286
- return 'BIT_STRING';
287
- case 0x04:
288
- return 'OCTET_STRING';
289
- case 0x05:
290
- return 'NULL';
291
- case 0x06:
292
- return 'OBJECT_IDENTIFIER';
293
- case 0x07:
294
- return 'ObjectDescriptor';
295
- case 0x08:
296
- return 'EXTERNAL';
297
- case 0x09:
298
- return 'REAL';
299
- case 0x0a:
300
- return 'ENUMERATED';
301
- case 0x0b:
302
- return 'EMBEDDED_PDV';
303
- case 0x0c:
304
- return 'UTF8String';
305
- case 0x10:
306
- return 'SEQUENCE';
307
- case 0x11:
308
- return 'SET';
309
- case 0x12:
310
- return 'NumericString';
311
- case 0x13:
312
- return 'PrintableString'; // ASCII subset
313
- case 0x14:
314
- return 'TeletexString'; // aka T61String
315
- case 0x15:
316
- return 'VideotexString';
317
- case 0x16:
318
- return 'IA5String'; // ASCII
319
- case 0x17:
320
- return 'UTCTime';
321
- case 0x18:
322
- return 'GeneralizedTime';
323
- case 0x19:
324
- return 'GraphicString';
325
- case 0x1a:
326
- return 'VisibleString'; // ASCII subset
327
- case 0x1b:
328
- return 'GeneralString';
329
- case 0x1c:
330
- return 'UniversalString';
331
- case 0x1e:
332
- return 'BMPString';
333
- }
334
- return 'Universal_' + this.tag.tagNumber.toString();
335
- case 1:
336
- return 'Application_' + this.tag.tagNumber.toString();
337
- case 2:
338
- return '[' + this.tag.tagNumber.toString() + ']'; // Context
339
- case 3:
340
- return 'Private_' + this.tag.tagNumber.toString();
341
- }
342
- }
343
- content(maxLength) {
344
- // a preview of the content (intended for humans)
345
- if (this.tag === undefined)
346
- return null;
347
- if (maxLength === undefined)
348
- maxLength = Infinity;
349
- const content = this.posContent(), len = Math.abs(this.length);
350
- if (!this.tag.isUniversal()) {
351
- if (this.sub !== null)
352
- return '(' + this.sub.length + ' elem)';
353
- return this.stream.parseOctetString(content, content + len, maxLength);
354
- }
355
- switch (this.tag.tagNumber) {
356
- case 0x01: // BOOLEAN
357
- return this.stream.get(content) === 0 ? 'false' : 'true';
358
- case 0x02: // INTEGER
359
- return this.stream.parseInteger(content, content + len);
360
- case 0x03: // BIT_STRING
361
- return this.sub ? '(' + this.sub.length + ' elem)' : this.stream.parseBitString(content, content + len, maxLength);
362
- case 0x04: // OCTET_STRING
363
- return this.sub ? '(' + this.sub.length + ' elem)' : this.stream.parseOctetString(content, content + len, maxLength);
364
- //case 0x05: // NULL
365
- case 0x06: // OBJECT_IDENTIFIER
366
- return this.stream.parseOID(content, content + len, maxLength);
367
- //case 0x07: // ObjectDescriptor
368
- //case 0x08: // EXTERNAL
369
- //case 0x09: // REAL
370
- //case 0x0A: // ENUMERATED
371
- //case 0x0B: // EMBEDDED_PDV
372
- case 0x10: // SEQUENCE
373
- case 0x11: // SET
374
- return '(' + this.sub.length + ' elem)';
375
- case 0x0c: // UTF8String
376
- return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);
377
- case 0x12: // NumericString
378
- case 0x13: // PrintableString
379
- case 0x14: // TeletexString
380
- case 0x15: // VideotexString
381
- case 0x16: // IA5String
382
- //case 0x19: // GraphicString
383
- case 0x1a: // VisibleString
384
- //case 0x1B: // GeneralString
385
- //case 0x1C: // UniversalString
386
- return stringCut(this.stream.parseStringISO(content, content + len), maxLength);
387
- case 0x1e: // BMPString
388
- return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);
389
- case 0x17: // UTCTime
390
- case 0x18: // GeneralizedTime
391
- return this.stream.parseTime(content, content + len, this.tag.tagNumber == 0x17);
392
- }
393
- return null;
394
- }
395
- toString() {
396
- return (this.typeName() +
397
- '@' +
398
- this.stream.pos +
399
- '[header:' +
400
- this.header +
401
- ',length:' +
402
- this.length +
403
- ',sub:' +
404
- (this.sub === null ? 'null' : this.sub.length) +
405
- ']');
406
- }
407
- toPrettyString(indent = '') {
408
- let s = indent + this.typeName() + ' @' + this.stream.pos;
409
- if (this.length >= 0)
410
- s += '+';
411
- s += this.length;
412
- if (this.tag.tagConstructed)
413
- s += ' (constructed)';
414
- else if (this.tag.isUniversal() && (this.tag.tagNumber == 0x03 || this.tag.tagNumber == 0x04) && this.sub !== null)
415
- s += ' (encapsulates)';
416
- s += '\n';
417
- if (this.sub !== null) {
418
- indent += ' ';
419
- for (let i = 0, max = this.sub.length; i < max; ++i)
420
- s += this.sub[i].toPrettyString(indent);
421
- }
422
- return s;
423
- }
424
- posStart() {
425
- return this.stream.pos;
426
- }
427
- posContent() {
428
- return this.stream.pos + this.header;
429
- }
430
- posEnd() {
431
- return this.stream.pos + this.header + Math.abs(this.length);
432
- }
433
- toHexString() {
434
- return this.stream.hexDump(this.posStart(), this.posEnd(), true);
435
- }
436
- static decodeLength(stream) {
437
- let buf = stream.get(), len = buf & 0x7f;
438
- if (len == buf)
439
- return len;
440
- if (len > 6)
441
- // no reason to use Int10, as it would be a huge buffer anyways
442
- throw 'Length over 48 bits not supported at position ' + (stream.pos - 1);
443
- if (len === 0)
444
- return null; // undefined
445
- buf = 0;
446
- for (let i = 0; i < len; ++i)
447
- buf = buf * 256 + stream.get();
448
- return buf;
449
- }
450
- static decode(stream) {
451
- let streamStart = new Stream(stream.enc, stream.pos), tag = new ASN1Tag(stream), len = ASN1.decodeLength(stream), start = stream.pos, header = start - streamStart.pos;
452
- let sub = null;
453
- const getSub = function () {
454
- sub = [];
455
- if (len !== null) {
456
- // definite length
457
- const end = start + len;
458
- while (stream.pos < end)
459
- sub[sub.length] = ASN1.decode(stream);
460
- if (stream.pos != end)
461
- throw 'Content size is not correct for container starting at offset ' + start;
462
- }
463
- else {
464
- // undefined length
465
- try {
466
- for (;;) {
467
- const s = ASN1.decode(stream);
468
- if (s.tag.isEOC())
469
- break;
470
- sub[sub.length] = s;
471
- }
472
- len = start - stream.pos; // undefined lengths are represented as negative values
473
- }
474
- catch (e) {
475
- throw 'Exception while decoding undefined length content: ' + e;
476
- }
477
- }
478
- };
479
- if (tag.tagConstructed) {
480
- // must have valid content
481
- getSub();
482
- }
483
- else if (tag.isUniversal() && (tag.tagNumber == 0x03 || tag.tagNumber == 0x04)) {
484
- // sometimes BitString and OctetString are used to encapsulate ASN.1
485
- try {
486
- if (tag.tagNumber == 0x03)
487
- if (stream.get() != 0)
488
- throw 'BIT STRINGs with unused bits cannot encapsulate.';
489
- getSub();
490
- if (sub) {
491
- for (let i = 0; i < sub.length; ++i)
492
- if (sub[i].tag.isEOC())
493
- throw 'EOC is not supposed to be actual content.';
494
- }
495
- }
496
- catch (e) {
497
- // but silently ignore when they don't
498
- sub = null;
499
- }
500
- }
501
- if (sub === null) {
502
- if (len === null)
503
- throw "We can't skip over an invalid tag with undefined length at offset " + start;
504
- stream.pos = start + Math.abs(len);
505
- }
506
- return new ASN1(streamStart, header, len, tag, sub ? sub : undefined);
507
- }
508
- }
509
- exports.ASN1 = ASN1;
510
- //# sourceMappingURL=asn1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asn1.js","sourceRoot":"","sources":["../../../icc-x-api/utils/asn1.ts"],"names":[],"mappings":"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"}