@bitpoolos/edge-bacnet 1.6.8 → 1.6.9

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 (44) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/bacnet_client.js +32 -4
  3. package/bacnet_device.js +16 -15
  4. package/package.json +1 -1
  5. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -41
  6. package/resources/node-bacstack-ts/dist/index.js +0 -3
  7. package/resources/node-bacstack-ts/dist/lib/apdu.js +0 -193
  8. package/resources/node-bacstack-ts/dist/lib/asn1.js +0 -1671
  9. package/resources/node-bacstack-ts/dist/lib/bvlc.js +0 -47
  10. package/resources/node-bacstack-ts/dist/lib/client.js +0 -1679
  11. package/resources/node-bacstack-ts/dist/lib/enum.js +0 -2114
  12. package/resources/node-bacstack-ts/dist/lib/npdu.js +0 -112
  13. package/resources/node-bacstack-ts/dist/lib/services/add-list-element.js +0 -58
  14. package/resources/node-bacstack-ts/dist/lib/services/alarm-acknowledge.js +0 -93
  15. package/resources/node-bacstack-ts/dist/lib/services/alarm-summary.js +0 -42
  16. package/resources/node-bacstack-ts/dist/lib/services/atomic-read-file.js +0 -157
  17. package/resources/node-bacstack-ts/dist/lib/services/atomic-write-file.js +0 -136
  18. package/resources/node-bacstack-ts/dist/lib/services/cov-notify.js +0 -119
  19. package/resources/node-bacstack-ts/dist/lib/services/create-object.js +0 -104
  20. package/resources/node-bacstack-ts/dist/lib/services/delete-object.js +0 -21
  21. package/resources/node-bacstack-ts/dist/lib/services/device-communication-control.js +0 -46
  22. package/resources/node-bacstack-ts/dist/lib/services/error.js +0 -27
  23. package/resources/node-bacstack-ts/dist/lib/services/event-information.js +0 -100
  24. package/resources/node-bacstack-ts/dist/lib/services/event-notify-data.js +0 -219
  25. package/resources/node-bacstack-ts/dist/lib/services/get-enrollment-summary.js +0 -172
  26. package/resources/node-bacstack-ts/dist/lib/services/get-event-information.js +0 -135
  27. package/resources/node-bacstack-ts/dist/lib/services/i-am-broadcast.js +0 -59
  28. package/resources/node-bacstack-ts/dist/lib/services/i-have-broadcast.js +0 -34
  29. package/resources/node-bacstack-ts/dist/lib/services/index.js +0 -32
  30. package/resources/node-bacstack-ts/dist/lib/services/life-safety-operation.js +0 -40
  31. package/resources/node-bacstack-ts/dist/lib/services/private-transfer.js +0 -43
  32. package/resources/node-bacstack-ts/dist/lib/services/read-property-multiple.js +0 -44
  33. package/resources/node-bacstack-ts/dist/lib/services/read-property.js +0 -122
  34. package/resources/node-bacstack-ts/dist/lib/services/read-range.js +0 -201
  35. package/resources/node-bacstack-ts/dist/lib/services/reinitialize-device.js +0 -35
  36. package/resources/node-bacstack-ts/dist/lib/services/subscribe-cov.js +0 -55
  37. package/resources/node-bacstack-ts/dist/lib/services/subscribe-property.js +0 -93
  38. package/resources/node-bacstack-ts/dist/lib/services/time-sync.js +0 -31
  39. package/resources/node-bacstack-ts/dist/lib/services/who-has.js +0 -56
  40. package/resources/node-bacstack-ts/dist/lib/services/who-is.js +0 -45
  41. package/resources/node-bacstack-ts/dist/lib/services/write-property-multiple.js +0 -105
  42. package/resources/node-bacstack-ts/dist/lib/services/write-property.js +0 -90
  43. package/resources/node-bacstack-ts/dist/lib/transport.js +0 -86
  44. package/resources/node-bacstack-ts/dist/lib/types.js +0 -2
@@ -1,112 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encode = exports.decode = exports.decodeFunction = void 0;
4
- const baEnum = require("./enum");
5
- const BACNET_PROTOCOL_VERSION = 1;
6
- const BacnetAddressTypes = {
7
- NONE: 0,
8
- IP: 1
9
- };
10
- const decodeTarget = (buffer, offset) => {
11
- let len = 0;
12
- const target = { type: BacnetAddressTypes.NONE, net: (buffer[offset + len++] << 8) | (buffer[offset + len++] << 0) };
13
- const adrLen = buffer[offset + len++];
14
- if (adrLen > 0) {
15
- target.adr = [];
16
- for (let i = 0; i < adrLen; i++) {
17
- target.adr.push(buffer[offset + len++]);
18
- }
19
- }
20
- return {
21
- target: target,
22
- len: len
23
- };
24
- };
25
- const encodeTarget = (buffer, target) => {
26
- buffer.buffer[buffer.offset++] = (target.net & 0xFF00) >> 8;
27
- buffer.buffer[buffer.offset++] = (target.net & 0x00FF) >> 0;
28
- if (target.net === 0xFFFF || !target.adr || target.adr.length === 0) {
29
- buffer.buffer[buffer.offset++] = 0;
30
- }
31
- else {
32
- buffer.buffer[buffer.offset++] = target.adr.length;
33
- if (target.adr.length > 0) {
34
- for (let i = 0; i < target.adr.length; i++) {
35
- buffer.buffer[buffer.offset++] = target.adr[i];
36
- }
37
- }
38
- }
39
- };
40
- const decodeFunction = (buffer, offset) => {
41
- if (buffer[offset + 0] !== BACNET_PROTOCOL_VERSION)
42
- return;
43
- return buffer[offset + 1];
44
- };
45
- exports.decodeFunction = decodeFunction;
46
- const decode = (buffer, offset) => {
47
- const orgOffset = offset;
48
- offset++;
49
- const funct = buffer[offset++];
50
- let destination;
51
- if (funct & baEnum.NpduControlBits.DESTINATION_SPECIFIED) {
52
- const tmpDestination = decodeTarget(buffer, offset);
53
- offset += tmpDestination.len;
54
- destination = tmpDestination.target;
55
- }
56
- let source;
57
- if (funct & baEnum.NpduControlBits.SOURCE_SPECIFIED) {
58
- const tmpSource = decodeTarget(buffer, offset);
59
- offset += tmpSource.len;
60
- source = tmpSource.target;
61
- }
62
- let hopCount = 0;
63
- if (funct & baEnum.NpduControlBits.DESTINATION_SPECIFIED) {
64
- hopCount = buffer[offset++];
65
- }
66
- let networkMsgType = baEnum.NetworkLayerMessageType.WHO_IS_ROUTER_TO_NETWORK;
67
- let vendorId = 0;
68
- if (funct & baEnum.NpduControlBits.NETWORK_LAYER_MESSAGE) {
69
- networkMsgType = buffer[offset++];
70
- if (networkMsgType >= 0x80) {
71
- vendorId = (buffer[offset++] << 8) | (buffer[offset++] << 0);
72
- }
73
- else if (networkMsgType === baEnum.NetworkLayerMessageType.WHO_IS_ROUTER_TO_NETWORK) {
74
- offset += 2;
75
- }
76
- }
77
- if (buffer[orgOffset + 0] !== BACNET_PROTOCOL_VERSION)
78
- return;
79
- return {
80
- len: offset - orgOffset,
81
- funct: funct,
82
- destination: destination,
83
- source: source,
84
- hopCount: hopCount,
85
- networkMsgType: networkMsgType,
86
- vendorId: vendorId
87
- };
88
- };
89
- exports.decode = decode;
90
- const encode = (buffer, funct, destination, source, hopCount, networkMsgType, vendorId) => {
91
- const hasDestination = destination && destination.net > 0;
92
- const hasSource = source && source.net > 0 && source.net !== 0xFFFF;
93
- buffer.buffer[buffer.offset++] = BACNET_PROTOCOL_VERSION;
94
- buffer.buffer[buffer.offset++] = funct | (hasDestination ? baEnum.NpduControlBits.DESTINATION_SPECIFIED : 0) | (hasSource ? baEnum.NpduControlBits.SOURCE_SPECIFIED : 0);
95
- if (hasDestination) {
96
- encodeTarget(buffer, destination);
97
- }
98
- if (hasSource) {
99
- encodeTarget(buffer, source);
100
- }
101
- if (hasDestination) {
102
- buffer.buffer[buffer.offset++] = hopCount;
103
- }
104
- if ((funct & baEnum.NpduControlBits.NETWORK_LAYER_MESSAGE) > 0) {
105
- buffer.buffer[buffer.offset++] = networkMsgType;
106
- if (networkMsgType >= 0x80) {
107
- buffer.buffer[buffer.offset++] = (vendorId & 0xFF00) >> 8;
108
- buffer.buffer[buffer.offset++] = (vendorId & 0x00FF) >> 0;
109
- }
110
- }
111
- };
112
- exports.encode = encode;
@@ -1,58 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const baEnum = require("../enum");
6
- const encode = (buffer, objectId, propertyId, arrayIndex, values) => {
7
- baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
8
- baAsn1.encodeContextEnumerated(buffer, 1, propertyId);
9
- if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) {
10
- baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex);
11
- }
12
- baAsn1.encodeOpeningTag(buffer, 3);
13
- values.forEach((value) => baAsn1.bacappEncodeApplicationData(buffer, value));
14
- baAsn1.encodeClosingTag(buffer, 3);
15
- };
16
- exports.encode = encode;
17
- const decode = (buffer, offset, apduLen) => {
18
- let len = 0;
19
- let result;
20
- let decodedValue;
21
- const value = {};
22
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
23
- len += result.len;
24
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
25
- len += decodedValue.len;
26
- value.objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
27
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
28
- len += result.len;
29
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
30
- len += decodedValue.len;
31
- value.property = { id: decodedValue.value, index: baEnum.ASN1_ARRAY_ALL };
32
- if (len < apduLen && baAsn1.decodeIsContextTag(buffer, offset + len, 2)) {
33
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
34
- len += result.len;
35
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
36
- len += decodedValue.len;
37
- value.property.index = decodedValue.value;
38
- }
39
- const values = [];
40
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 3))
41
- return;
42
- len++;
43
- while ((apduLen - len) > 1) {
44
- result = baAsn1.bacappDecodeApplicationData(buffer, offset + len, apduLen + offset, value.objectId.type, value.property.id);
45
- if (!result)
46
- return;
47
- len += result.len;
48
- delete result.len;
49
- values.push(result);
50
- }
51
- value.values = values;
52
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 3))
53
- return;
54
- len++;
55
- value.len = len;
56
- return value;
57
- };
58
- exports.decode = decode;
@@ -1,93 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const baEnum = require("../enum");
6
- const encode = (buffer, ackProcessId, eventObjectId, eventStateAcknowledged, ackSource, eventTimeStamp, ackTimeStamp) => {
7
- baAsn1.encodeContextUnsigned(buffer, 0, ackProcessId);
8
- baAsn1.encodeContextObjectId(buffer, 1, eventObjectId.type, eventObjectId.instance);
9
- baAsn1.encodeContextEnumerated(buffer, 2, eventStateAcknowledged);
10
- baAsn1.bacappEncodeContextTimestamp(buffer, 3, eventTimeStamp);
11
- baAsn1.encodeContextCharacterString(buffer, 4, ackSource);
12
- baAsn1.bacappEncodeContextTimestamp(buffer, 5, ackTimeStamp);
13
- };
14
- exports.encode = encode;
15
- const decode = (buffer, offset, apduLen) => {
16
- let len = 0;
17
- const value = {};
18
- let result;
19
- let decodedValue;
20
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
21
- len += result.len;
22
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
23
- len += decodedValue.len;
24
- value.acknowledgedProcessId = decodedValue.value;
25
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
26
- len += result.len;
27
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
28
- len += decodedValue.len;
29
- value.eventObjectId = { type: decodedValue.objectType, instance: decodedValue.instance };
30
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
31
- len += result.len;
32
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
33
- len += decodedValue.len;
34
- value.eventStateAcknowledged = decodedValue.value;
35
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
36
- len += result.len;
37
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
38
- len += result.len;
39
- if (result.tagNumber === baEnum.TimeStamp.TIME) {
40
- decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len);
41
- len += decodedValue.len;
42
- value.eventTimeStamp = decodedValue.value;
43
- }
44
- else if (result.tagNumber === baEnum.TimeStamp.SEQUENCE_NUMBER) {
45
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
46
- len += decodedValue.len;
47
- value.eventTimeStamp = decodedValue.value;
48
- }
49
- else if (result.tagNumber === baEnum.TimeStamp.DATETIME) {
50
- const dateRaw = baAsn1.decodeApplicationDate(buffer, offset + len);
51
- len += dateRaw.len;
52
- const date = dateRaw.value;
53
- const timeRaw = baAsn1.decodeApplicationTime(buffer, offset + len);
54
- len += timeRaw.len;
55
- const time = timeRaw.value;
56
- value.eventTimeStamp = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());
57
- len++;
58
- }
59
- len++;
60
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
61
- len += result.len;
62
- decodedValue = baAsn1.decodeCharacterString(buffer, offset + len, apduLen - (offset + len), result.value);
63
- value.acknowledgeSource = decodedValue.value;
64
- len += decodedValue.len;
65
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
66
- len += result.len;
67
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
68
- len += result.len;
69
- if (result.tagNumber === baEnum.TimeStamp.TIME) {
70
- decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len);
71
- len += decodedValue.len;
72
- value.acknowledgeTimeStamp = decodedValue.value;
73
- }
74
- else if (result.tagNumber === baEnum.TimeStamp.SEQUENCE_NUMBER) {
75
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
76
- len += decodedValue.len;
77
- value.acknowledgeTimeStamp = decodedValue.value;
78
- }
79
- else if (result.tagNumber === baEnum.TimeStamp.DATETIME) {
80
- const dateRaw = baAsn1.decodeApplicationDate(buffer, offset + len);
81
- len += dateRaw.len;
82
- const date = dateRaw.value;
83
- const timeRaw = baAsn1.decodeApplicationTime(buffer, offset + len);
84
- len += timeRaw.len;
85
- const time = timeRaw.value;
86
- value.acknowledgeTimeStamp = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());
87
- len++;
88
- }
89
- len++;
90
- value.len = len;
91
- return value;
92
- };
93
- exports.decode = decode;
@@ -1,42 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const encode = (buffer, alarms) => {
6
- alarms.forEach((alarm) => {
7
- baAsn1.encodeContextObjectId(buffer, 12, alarm.objectId.type, alarm.objectId.instance);
8
- baAsn1.encodeContextEnumerated(buffer, 9, alarm.alarmState);
9
- baAsn1.encodeContextBitstring(buffer, 8, alarm.acknowledgedTransitions);
10
- });
11
- };
12
- exports.encode = encode;
13
- const decode = (buffer, offset, apduLen) => {
14
- let len = 0;
15
- let result;
16
- let decodedValue;
17
- const alarms = [];
18
- while ((apduLen - 3 - len) > 0) {
19
- const value = {};
20
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
21
- len += result.len;
22
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
23
- len += decodedValue.len;
24
- value.objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
25
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
26
- len += result.len;
27
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
28
- len += decodedValue.len;
29
- value.alarmState = decodedValue.value;
30
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
31
- len += result.len;
32
- decodedValue = baAsn1.decodeBitstring(buffer, offset + len, result.value);
33
- len += decodedValue.len;
34
- value.acknowledgedTransitions = decodedValue.value;
35
- alarms.push(value);
36
- }
37
- return {
38
- len: len,
39
- alarms: alarms
40
- };
41
- };
42
- exports.decode = decode;
@@ -1,157 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeAcknowledge = exports.encodeAcknowledge = exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const baEnum = require("../enum");
6
- const encode = (buffer, isStream, objectId, position, count) => {
7
- baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
8
- if (isStream) {
9
- baAsn1.encodeOpeningTag(buffer, 0);
10
- baAsn1.encodeApplicationSigned(buffer, position);
11
- baAsn1.encodeApplicationUnsigned(buffer, count);
12
- baAsn1.encodeClosingTag(buffer, 0);
13
- }
14
- else {
15
- baAsn1.encodeOpeningTag(buffer, 1);
16
- baAsn1.encodeApplicationSigned(buffer, position);
17
- baAsn1.encodeApplicationUnsigned(buffer, count);
18
- baAsn1.encodeClosingTag(buffer, 1);
19
- }
20
- };
21
- exports.encode = encode;
22
- const decode = (buffer, offset) => {
23
- let len = 0;
24
- let result;
25
- let decodedValue;
26
- let isStream = true;
27
- let objectId = {};
28
- let position = -1;
29
- let count = 0;
30
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
31
- len += result.len;
32
- if (result.tagNumber !== baEnum.ApplicationTags.OBJECTIDENTIFIER)
33
- return;
34
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
35
- len += decodedValue.len;
36
- objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
37
- if (baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
38
- isStream = true;
39
- len++;
40
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
41
- len += result.len;
42
- if (result.tagNumber !== baEnum.ApplicationTags.SIGNED_INTEGER)
43
- return;
44
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
45
- len += decodedValue.len;
46
- position = decodedValue.value;
47
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
48
- len += result.len;
49
- if (result.tagNumber !== baEnum.ApplicationTags.UNSIGNED_INTEGER)
50
- return;
51
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
52
- len += decodedValue.len;
53
- count = decodedValue.value;
54
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 0))
55
- return;
56
- len++;
57
- }
58
- else if (baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
59
- isStream = false;
60
- len++;
61
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
62
- len += result.len;
63
- if (result.tagNumber !== baEnum.ApplicationTags.SIGNED_INTEGER)
64
- return;
65
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
66
- len += decodedValue.len;
67
- position = decodedValue.value;
68
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
69
- len += result.len;
70
- if (result.tagNumber !== baEnum.ApplicationTags.UNSIGNED_INTEGER)
71
- return;
72
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
73
- len += decodedValue.len;
74
- count = decodedValue.value;
75
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 1))
76
- return;
77
- len++;
78
- }
79
- else {
80
- return;
81
- }
82
- return {
83
- len: len,
84
- isStream: isStream,
85
- objectId: objectId,
86
- position: position,
87
- count: count
88
- };
89
- };
90
- exports.decode = decode;
91
- const encodeAcknowledge = (buffer, isStream, endOfFile, position, blockCount, blocks, counts) => {
92
- baAsn1.encodeApplicationBoolean(buffer, endOfFile);
93
- if (isStream) {
94
- baAsn1.encodeOpeningTag(buffer, 0);
95
- baAsn1.encodeApplicationSigned(buffer, position);
96
- baAsn1.encodeApplicationOctetString(buffer, blocks[0], 0, counts[0]);
97
- baAsn1.encodeClosingTag(buffer, 0);
98
- }
99
- else {
100
- baAsn1.encodeOpeningTag(buffer, 1);
101
- baAsn1.encodeApplicationSigned(buffer, position);
102
- baAsn1.encodeApplicationUnsigned(buffer, blockCount);
103
- for (let i = 0; i < blockCount; i++) {
104
- baAsn1.encodeApplicationOctetString(buffer, blocks[i], 0, counts[i]);
105
- }
106
- baAsn1.encodeClosingTag(buffer, 1);
107
- }
108
- };
109
- exports.encodeAcknowledge = encodeAcknowledge;
110
- const decodeAcknowledge = (buffer, offset) => {
111
- let len = 0;
112
- let result;
113
- let decodedValue;
114
- let isStream;
115
- let position;
116
- let targetBuffer;
117
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
118
- len += result.len;
119
- if (result.tagNumber !== baEnum.ApplicationTags.BOOLEAN)
120
- return;
121
- const endOfFile = result.value > 0;
122
- if (baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
123
- isStream = true;
124
- len++;
125
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
126
- len += result.len;
127
- if (result.tagNumber !== baEnum.ApplicationTags.SIGNED_INTEGER)
128
- return;
129
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
130
- len += decodedValue.len;
131
- position = decodedValue.value;
132
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
133
- len += result.len;
134
- if (result.tagNumber !== baEnum.ApplicationTags.OCTET_STRING)
135
- return;
136
- targetBuffer = buffer.slice(offset + len, offset + len + result.value);
137
- len += result.value;
138
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 0))
139
- return;
140
- len++;
141
- }
142
- else if (baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
143
- isStream = false;
144
- throw new Error('NotImplemented');
145
- }
146
- else {
147
- return;
148
- }
149
- return {
150
- len: len,
151
- endOfFile: endOfFile,
152
- isStream: isStream,
153
- position: position,
154
- buffer: targetBuffer
155
- };
156
- };
157
- exports.decodeAcknowledge = decodeAcknowledge;
@@ -1,136 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeAcknowledge = exports.encodeAcknowledge = exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const baEnum = require("../enum");
6
- const encode = (buffer, isStream, objectId, position, blocks) => {
7
- baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
8
- if (isStream) {
9
- baAsn1.encodeOpeningTag(buffer, 0);
10
- baAsn1.encodeApplicationSigned(buffer, position);
11
- baAsn1.encodeApplicationOctetString(buffer, blocks[0], 0, blocks[0].length);
12
- baAsn1.encodeClosingTag(buffer, 0);
13
- }
14
- else {
15
- baAsn1.encodeOpeningTag(buffer, 1);
16
- baAsn1.encodeApplicationSigned(buffer, position);
17
- baAsn1.encodeApplicationUnsigned(buffer, blocks.length);
18
- for (let i = 0; i < blocks.length; i++) {
19
- baAsn1.encodeApplicationOctetString(buffer, blocks[i], 0, blocks[i].length);
20
- }
21
- baAsn1.encodeClosingTag(buffer, 1);
22
- }
23
- };
24
- exports.encode = encode;
25
- const decode = (buffer, offset, apduLen) => {
26
- let len = 0;
27
- let result;
28
- let decodedValue;
29
- let isStream;
30
- let position;
31
- const blocks = [];
32
- let blockCount;
33
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
34
- len += result.len;
35
- if (result.tagNumber !== baEnum.ApplicationTags.OBJECTIDENTIFIER)
36
- return;
37
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
38
- len += decodedValue.len;
39
- const objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
40
- if (baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
41
- isStream = true;
42
- len++;
43
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
44
- len += result.len;
45
- if (result.tagNumber !== baEnum.ApplicationTags.SIGNED_INTEGER)
46
- return;
47
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
48
- len += decodedValue.len;
49
- position = decodedValue.value;
50
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
51
- len += result.len;
52
- if (result.tagNumber !== baEnum.ApplicationTags.OCTET_STRING)
53
- return;
54
- decodedValue = baAsn1.decodeOctetString(buffer, offset + len, apduLen, 0, result.value);
55
- len += decodedValue.len;
56
- blocks.push(decodedValue.value);
57
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 0))
58
- return;
59
- len++;
60
- }
61
- else if (baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
62
- isStream = false;
63
- len++;
64
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
65
- len += result.len;
66
- if (result.tagNumber !== baEnum.ApplicationTags.SIGNED_INTEGER)
67
- return;
68
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
69
- len += decodedValue.len;
70
- position = decodedValue.value;
71
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
72
- len += result.len;
73
- if (result.tagNumber !== baEnum.ApplicationTags.UNSIGNED_INTEGER)
74
- return;
75
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
76
- len += decodedValue.len;
77
- blockCount = decodedValue.value;
78
- for (let i = 0; i < blockCount; i++) {
79
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
80
- len += result.len;
81
- if (result.tagNumber !== baEnum.ApplicationTags.OCTET_STRING)
82
- return;
83
- decodedValue = baAsn1.decodeOctetString(buffer, offset + len, apduLen, 0, result.value);
84
- len += decodedValue.len;
85
- blocks.push(decodedValue.value);
86
- }
87
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 1))
88
- return;
89
- len++;
90
- }
91
- else {
92
- return;
93
- }
94
- return {
95
- len: len,
96
- isStream: isStream,
97
- objectId: objectId,
98
- position: position,
99
- blocks: blocks
100
- };
101
- };
102
- exports.decode = decode;
103
- const encodeAcknowledge = (buffer, isStream, position) => {
104
- if (isStream) {
105
- baAsn1.encodeContextSigned(buffer, 0, position);
106
- }
107
- else {
108
- baAsn1.encodeContextSigned(buffer, 1, position);
109
- }
110
- };
111
- exports.encodeAcknowledge = encodeAcknowledge;
112
- const decodeAcknowledge = (buffer, offset) => {
113
- let len = 0;
114
- let isStream = false;
115
- let position = 0;
116
- const result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
117
- len += result.len;
118
- if (result.tagNumber === 0) {
119
- isStream = true;
120
- }
121
- else if (result.tagNumber === 1) {
122
- isStream = false;
123
- }
124
- else {
125
- return;
126
- }
127
- const decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
128
- len += decodedValue.len;
129
- position = decodedValue.value;
130
- return {
131
- len: len,
132
- isStream: isStream,
133
- position: position
134
- };
135
- };
136
- exports.decodeAcknowledge = decodeAcknowledge;