@cheqd/did-provider-cheqd 4.5.4 → 4.6.0-develop.1

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 (30) hide show
  1. package/build/esm/agent/ICheqd.d.ts +305 -89
  2. package/build/esm/agent/ICheqd.d.ts.map +1 -1
  3. package/build/esm/agent/ICheqd.js +1567 -87
  4. package/build/esm/agent/ICheqd.js.map +1 -1
  5. package/build/esm/did-manager/cheqd-did-provider.d.ts +16 -5
  6. package/build/esm/did-manager/cheqd-did-provider.d.ts.map +1 -1
  7. package/build/esm/did-manager/cheqd-did-provider.js +11 -3
  8. package/build/esm/did-manager/cheqd-did-provider.js.map +1 -1
  9. package/build/esm/dkg-threshold/lit-protocol/v6.d.ts.map +1 -1
  10. package/build/esm/dkg-threshold/lit-protocol/v6.js +63 -33
  11. package/build/esm/dkg-threshold/lit-protocol/v6.js.map +1 -1
  12. package/build/esm/utils/helpers.d.ts +28 -7
  13. package/build/esm/utils/helpers.d.ts.map +1 -1
  14. package/build/esm/utils/helpers.js +120 -29
  15. package/build/esm/utils/helpers.js.map +1 -1
  16. package/build/tsconfig.esm.tsbuildinfo +1 -1
  17. package/build/tsconfig.types.tsbuildinfo +1 -1
  18. package/build/types/agent/ICheqd.d.ts +305 -89
  19. package/build/types/agent/ICheqd.d.ts.map +1 -1
  20. package/build/types/did-manager/cheqd-did-provider.d.ts +16 -5
  21. package/build/types/did-manager/cheqd-did-provider.d.ts.map +1 -1
  22. package/build/types/dkg-threshold/lit-protocol/v6.d.ts.map +1 -1
  23. package/build/types/utils/helpers.d.ts +28 -7
  24. package/build/types/utils/helpers.d.ts.map +1 -1
  25. package/package.json +6 -4
  26. package/src/agent/ICheqd.ts +2440 -379
  27. package/src/did-manager/cheqd-did-provider.ts +25 -10
  28. package/src/dkg-threshold/lit-protocol/v6.ts +65 -34
  29. package/src/utils/helpers.ts +172 -34
  30. package/tsconfig.json +2 -0
@@ -1,5 +1,6 @@
1
- import { generate as generateSecret } from 'generate-password';
2
- import { toString } from 'uint8arrays/to-string';
1
+ import { fromString, toString } from 'uint8arrays';
2
+ import { randomBytes as cryptoRandomBytes } from 'crypto';
3
+ import { Cheqd } from '../agent/index.js';
3
4
  export function isEncodedList(list) {
4
5
  return typeof list === 'string' && list.split('-').every((item) => typeof item === 'string' && item && item.length);
5
6
  }
@@ -40,32 +41,9 @@ export async function randomFromRange(min, max, notIn) {
40
41
  }
41
42
  return random;
42
43
  }
43
- export async function randomUniqueSubsetInRange(min, max, count) {
44
- const subset = [];
45
- for (let i = 0; i < count; i++) {
46
- subset.push(await randomFromRange(min, max, subset));
47
- }
48
- return subset;
49
- }
50
44
  export async function randomBytes(length) {
51
45
  return Buffer.from(Array.from({ length }, () => Math.floor(Math.random() * 256)));
52
46
  }
53
- export async function randomUniqueSecret(options) {
54
- return generateSecret({
55
- length: 64,
56
- numbers: true,
57
- symbols: true,
58
- uppercase: true,
59
- ...options,
60
- });
61
- }
62
- export async function initialiseIndexArray(length) {
63
- return Array(length).fill(true);
64
- }
65
- export async function shuffleArray(array) {
66
- const shuffled = array.sort(() => Math.random() - 0.5);
67
- return shuffled;
68
- }
69
47
  export async function toBlob(data) {
70
48
  return new Blob([data]);
71
49
  }
@@ -76,10 +54,9 @@ export async function blobToHexString(blob) {
76
54
  const uint8Array = new Uint8Array(buffer);
77
55
  return toString(uint8Array, 'hex');
78
56
  }
79
- export function unescapeUnicode(str) {
80
- return str.replace(/\\u([a-fA-F0-9]{4})/g, (m, cc) => {
81
- return String.fromCharCode(parseInt(cc, 16));
82
- });
57
+ export async function blobToUint8Array(blob) {
58
+ const arrayBuffer = await blob.arrayBuffer();
59
+ return new Uint8Array(arrayBuffer);
83
60
  }
84
61
  export function getControllers(didDocument) {
85
62
  const controllers = [];
@@ -93,4 +70,118 @@ export function getControllers(didDocument) {
93
70
  }
94
71
  return controllers;
95
72
  }
73
+ /**
74
+ * Check if encoded bitstring is valid base64url format
75
+ */
76
+ export function isValidEncodedBitstring(encodedList) {
77
+ try {
78
+ // Should be valid base64url
79
+ fromString(encodedList, 'base64url');
80
+ return true;
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ }
86
+ // Enhanced encoding function that returns metadata
87
+ export async function encodeWithMetadata(symmetricEncryptionCiphertext, thresholdEncryptionCiphertext) {
88
+ const symmetricBytes = await blobToUint8Array(symmetricEncryptionCiphertext);
89
+ // Concatenate both byte arrays
90
+ const combinedBytes = new Uint8Array(symmetricBytes.length + thresholdEncryptionCiphertext.length);
91
+ combinedBytes.set(symmetricBytes, 0);
92
+ combinedBytes.set(thresholdEncryptionCiphertext, symmetricBytes.length);
93
+ // Encode as base64url
94
+ const encodedList = toString(combinedBytes, 'base64url');
95
+ return { encodedList, symmetricLength: symmetricBytes.length };
96
+ }
97
+ export function decodeWithMetadata(encodedList, symmetricLength) {
98
+ // Decode from base64url to bytes
99
+ const combinedBytes = fromString(encodedList, 'base64url');
100
+ // Split based on the symmetric length
101
+ const symmetricBytes = combinedBytes.slice(0, symmetricLength);
102
+ const thresholdBytes = combinedBytes.slice(symmetricLength);
103
+ // Return as desired types
104
+ return {
105
+ symmetricEncryptionCiphertext: new Blob([symmetricBytes]),
106
+ thresholdEncryptionCiphertext: thresholdBytes,
107
+ };
108
+ }
109
+ /**
110
+ * Generates a random statusListIndex based on external system constraints
111
+ *
112
+ * @param statusOptions - Constraints from external StatusListIndexManager
113
+ * @param config - Bitstring configuration (statusSize, length, etc.)
114
+ * @returns Random statusListIndex that satisfies all constraints
115
+ */
116
+ export function generateRandomStatusListIndex(statusOptions, config = {}) {
117
+ const { statusSize = Cheqd.DefaultBitstringStatusSize, length = Cheqd.DefaultBitstringLength, maxRetries = 1000, } = config;
118
+ // If external system already provided a specific index, validate and return it
119
+ if (statusOptions.statusListIndex !== undefined) {
120
+ validateStatusListIndex(statusOptions.statusListIndex, statusOptions, config);
121
+ return statusOptions.statusListIndex;
122
+ }
123
+ // Calculate valid range bounds
124
+ const bounds = calculateValidRange(statusOptions, config);
125
+ const excludedIndices = new Set(statusOptions.indexNotIn || []);
126
+ // Check if generation is possible
127
+ const totalPossibleIndices = bounds.end - bounds.start + 1;
128
+ if (excludedIndices.size >= totalPossibleIndices) {
129
+ throw new Error(`Cannot generate index: all indices in range [${bounds.start}, ${bounds.end}] are excluded`);
130
+ }
131
+ let attempts = 0;
132
+ while (attempts < maxRetries) {
133
+ // Generate cryptographically secure random index within range
134
+ const randBytes = cryptoRandomBytes(4);
135
+ const randomValue = randBytes.readUInt32BE(0);
136
+ // Map to valid range [bounds.start, bounds.end]
137
+ const rangeSize = bounds.end - bounds.start + 1;
138
+ const statusListIndex = bounds.start + (randomValue % rangeSize);
139
+ // Check if this index is excluded
140
+ if (!excludedIndices.has(statusListIndex)) {
141
+ return statusListIndex;
142
+ }
143
+ attempts++;
144
+ }
145
+ throw new Error(`Failed to generate unique statusListIndex after ${maxRetries} attempts. ` +
146
+ `Range: [${bounds.start}, ${bounds.end}], Excluded: ${excludedIndices.size} indices`);
147
+ }
148
+ /**
149
+ * Validates a specific statusListIndex against constraints
150
+ */
151
+ function validateStatusListIndex(index, statusOptions, config) {
152
+ const bounds = calculateValidRange(statusOptions, config);
153
+ const excludedIndices = statusOptions.indexNotIn || [];
154
+ if (index < bounds.start || index > bounds.end) {
155
+ throw new Error(`StatusListIndex ${index} is outside valid range [${bounds.start}, ${bounds.end}]`);
156
+ }
157
+ if (excludedIndices.includes(index)) {
158
+ throw new Error(`StatusListIndex ${index} is in the excluded list: [${excludedIndices.join(', ')}]`);
159
+ }
160
+ }
161
+ /**
162
+ * Calculates the valid range for statusListIndex generation
163
+ */
164
+ function calculateValidRange(statusOptions, config) {
165
+ const { statusSize = Cheqd.DefaultBitstringStatusSize, length = Cheqd.DefaultBitstringLength } = config;
166
+ // Calculate maximum possible index based on bitstring configuration
167
+ const totalBits = length * statusSize;
168
+ const alignedLength = Math.ceil(totalBits / 8) * 8;
169
+ const maxPossibleIndex = Math.floor(alignedLength / statusSize) - 1;
170
+ // Start with external system's range constraints
171
+ let start = statusOptions.statusListRangeStart ?? 0;
172
+ let end = statusOptions.statusListRangeEnd ?? maxPossibleIndex;
173
+ // Ensure range is within bitstring bounds
174
+ start = Math.max(0, start);
175
+ end = Math.min(maxPossibleIndex, end);
176
+ // Validate range
177
+ if (start > end) {
178
+ throw new Error(`Invalid range: start (${start}) is greater than end (${end}). ` +
179
+ `Maximum possible index for this configuration: ${maxPossibleIndex}`);
180
+ }
181
+ if (start < 0 || end > maxPossibleIndex) {
182
+ throw new Error(`Range [${start}, ${end}] exceeds valid bounds [0, ${maxPossibleIndex}] ` +
183
+ `for statusSize=${statusSize} and length=${length}`);
184
+ }
185
+ return { start, end };
186
+ }
96
187
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"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"}