You need to sign in or sign up before continuing.

@hyperledger/anoncreds-nodejs 0.1.0-dev.2

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 (43) hide show
  1. package/LICENSE +192 -0
  2. package/README.md +38 -0
  3. package/build/NodeJSAnoncreds.d.ts +185 -0
  4. package/build/NodeJSAnoncreds.js +318 -0
  5. package/build/NodeJSAnoncreds.js.map +1 -0
  6. package/build/error.d.ts +1 -0
  7. package/build/error.js +16 -0
  8. package/build/error.js.map +1 -0
  9. package/build/ffi/alloc.d.ts +5 -0
  10. package/build/ffi/alloc.js +18 -0
  11. package/build/ffi/alloc.js.map +1 -0
  12. package/build/ffi/conversion.d.ts +8 -0
  13. package/build/ffi/conversion.js +8 -0
  14. package/build/ffi/conversion.js.map +1 -0
  15. package/build/ffi/index.d.ts +5 -0
  16. package/build/ffi/index.js +18 -0
  17. package/build/ffi/index.js.map +1 -0
  18. package/build/ffi/primitives.d.ts +13 -0
  19. package/build/ffi/primitives.js +20 -0
  20. package/build/ffi/primitives.js.map +1 -0
  21. package/build/ffi/serialize.d.ts +16 -0
  22. package/build/ffi/serialize.js +55 -0
  23. package/build/ffi/serialize.js.map +1 -0
  24. package/build/ffi/structures.d.ts +101 -0
  25. package/build/ffi/structures.js +102 -0
  26. package/build/ffi/structures.js.map +1 -0
  27. package/build/index.d.ts +3 -0
  28. package/build/index.js +19 -0
  29. package/build/index.js.map +1 -0
  30. package/build/library/NativeBindingInterface.d.ts +27 -0
  31. package/build/library/NativeBindingInterface.js +4 -0
  32. package/build/library/NativeBindingInterface.js.map +1 -0
  33. package/build/library/bindings.d.ts +177 -0
  34. package/build/library/bindings.js +170 -0
  35. package/build/library/bindings.js.map +1 -0
  36. package/build/library/index.d.ts +3 -0
  37. package/build/library/index.js +16 -0
  38. package/build/library/index.js.map +1 -0
  39. package/build/library/register.d.ts +43 -0
  40. package/build/library/register.js +56 -0
  41. package/build/library/register.js.map +1 -0
  42. package/package.json +53 -0
  43. package/scripts/arch.js +22 -0
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeJSAnoncreds = void 0;
4
+ const anoncreds_shared_1 = require("@hyperledger/anoncreds-shared");
5
+ const util_1 = require("util");
6
+ const error_1 = require("./error");
7
+ const ffi_1 = require("./ffi");
8
+ const library_1 = require("./library");
9
+ class NodeJSAnoncreds {
10
+ generateNonce() {
11
+ const ret = (0, ffi_1.allocateStringBuffer)();
12
+ library_1.nativeAnoncreds.anoncreds_generate_nonce(ret);
13
+ (0, error_1.handleError)();
14
+ return ret.deref();
15
+ }
16
+ createSchema(options) {
17
+ const { name, version, issuerId, attributeNames } = (0, ffi_1.serializeArguments)(options);
18
+ const ret = (0, ffi_1.allocatePointer)();
19
+ library_1.nativeAnoncreds.anoncreds_create_schema(name, version, issuerId, attributeNames, ret);
20
+ (0, error_1.handleError)();
21
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
22
+ }
23
+ revocationRegistryDefinitionGetAttribute(options) {
24
+ const { objectHandle, name } = (0, ffi_1.serializeArguments)(options);
25
+ const ret = (0, ffi_1.allocateStringBuffer)();
26
+ library_1.nativeAnoncreds.anoncreds_revocation_registry_definition_get_attribute(objectHandle, name, ret);
27
+ (0, error_1.handleError)();
28
+ return ret.deref();
29
+ }
30
+ credentialGetAttribute(options) {
31
+ const { objectHandle, name } = (0, ffi_1.serializeArguments)(options);
32
+ const ret = (0, ffi_1.allocateStringBuffer)();
33
+ library_1.nativeAnoncreds.anoncreds_credential_get_attribute(objectHandle, name, ret);
34
+ (0, error_1.handleError)();
35
+ return ret.deref();
36
+ }
37
+ createCredentialDefinition(options) {
38
+ const { schemaId, issuerId, schema, tag, signatureType, supportRevocation } = (0, ffi_1.serializeArguments)(options);
39
+ const credentialDefinitionPtr = (0, ffi_1.allocatePointer)();
40
+ const credentialDefinitionPrivatePtr = (0, ffi_1.allocatePointer)();
41
+ const keyProofPtr = (0, ffi_1.allocatePointer)();
42
+ library_1.nativeAnoncreds.anoncreds_create_credential_definition(schemaId, schema, tag, issuerId, signatureType, supportRevocation, credentialDefinitionPtr, credentialDefinitionPrivatePtr, keyProofPtr);
43
+ (0, error_1.handleError)();
44
+ return {
45
+ credentialDefinition: new anoncreds_shared_1.ObjectHandle(credentialDefinitionPtr.deref()),
46
+ credentialDefinitionPrivate: new anoncreds_shared_1.ObjectHandle(credentialDefinitionPrivatePtr.deref()),
47
+ keyProof: new anoncreds_shared_1.ObjectHandle(keyProofPtr.deref()),
48
+ };
49
+ }
50
+ createCredential(options) {
51
+ const { credentialDefinition, credentialDefinitionPrivate, credentialOffer, credentialRequest, revocationRegistryId, revocationStatusList, } = (0, ffi_1.serializeArguments)(options);
52
+ const attributeNames = (0, ffi_1.StringListStruct)({
53
+ count: Object.keys(options.attributeRawValues).length,
54
+ // @ts-ignore
55
+ data: Object.keys(options.attributeRawValues),
56
+ });
57
+ const attributeRawValues = (0, ffi_1.StringListStruct)({
58
+ count: Object.keys(options.attributeRawValues).length,
59
+ // @ts-ignore
60
+ data: Object.values(options.attributeRawValues),
61
+ });
62
+ const attributeEncodedValues = options.attributeEncodedValues
63
+ ? (0, ffi_1.StringListStruct)({
64
+ count: Object.keys(options.attributeEncodedValues).length,
65
+ // @ts-ignore
66
+ data: Object.values(options.attributeEncodedValues),
67
+ })
68
+ : undefined;
69
+ let revocationConfiguration = (0, ffi_1.CredRevInfoStruct)();
70
+ if (options.revocationConfiguration) {
71
+ const { revocationRegistryDefinition: registryDefinition, revocationRegistryDefinitionPrivate: registryDefinitionPrivate, registryIndex, tailsPath, } = (0, ffi_1.serializeArguments)(options.revocationConfiguration);
72
+ revocationConfiguration = (0, ffi_1.CredRevInfoStruct)({
73
+ reg_def: registryDefinition,
74
+ reg_def_private: registryDefinitionPrivate,
75
+ reg_idx: registryIndex,
76
+ tails_path: tailsPath,
77
+ });
78
+ }
79
+ const credentialPtr = (0, ffi_1.allocatePointer)();
80
+ library_1.nativeAnoncreds.anoncreds_create_credential(credentialDefinition, credentialDefinitionPrivate, credentialOffer, credentialRequest, attributeNames, attributeRawValues, attributeEncodedValues, revocationRegistryId, revocationStatusList, revocationConfiguration.ref(), credentialPtr);
81
+ (0, error_1.handleError)();
82
+ return new anoncreds_shared_1.ObjectHandle(credentialPtr.deref());
83
+ }
84
+ encodeCredentialAttributes(options) {
85
+ const { attributeRawValues } = (0, ffi_1.serializeArguments)(options);
86
+ const ret = (0, ffi_1.allocateStringBuffer)();
87
+ library_1.nativeAnoncreds.anoncreds_encode_credential_attributes(attributeRawValues, ret);
88
+ (0, error_1.handleError)();
89
+ const result = ret.deref();
90
+ return result.split(',');
91
+ }
92
+ processCredential(options) {
93
+ const { credential, credentialRequestMetadata, masterSecret, credentialDefinition, revocationRegistryDefinition } = (0, ffi_1.serializeArguments)(options);
94
+ const ret = (0, ffi_1.allocatePointer)();
95
+ library_1.nativeAnoncreds.anoncreds_process_credential(credential, credentialRequestMetadata, masterSecret, credentialDefinition, revocationRegistryDefinition, ret);
96
+ (0, error_1.handleError)();
97
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
98
+ }
99
+ createCredentialOffer(options) {
100
+ const { schemaId, credentialDefinitionId, keyProof } = (0, ffi_1.serializeArguments)(options);
101
+ const ret = (0, ffi_1.allocatePointer)();
102
+ library_1.nativeAnoncreds.anoncreds_create_credential_offer(schemaId, credentialDefinitionId, keyProof, ret);
103
+ (0, error_1.handleError)();
104
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
105
+ }
106
+ createCredentialRequest(options) {
107
+ const { proverDid, credentialDefinition, masterSecret, masterSecretId, credentialOffer } = (0, ffi_1.serializeArguments)(options);
108
+ const credentialRequestPtr = (0, ffi_1.allocatePointer)();
109
+ const credentialRequestMetadataPtr = (0, ffi_1.allocatePointer)();
110
+ library_1.nativeAnoncreds.anoncreds_create_credential_request(proverDid, credentialDefinition, masterSecret, masterSecretId, credentialOffer, credentialRequestPtr, credentialRequestMetadataPtr);
111
+ (0, error_1.handleError)();
112
+ return {
113
+ credentialRequest: new anoncreds_shared_1.ObjectHandle(credentialRequestPtr.deref()),
114
+ credentialRequestMetadata: new anoncreds_shared_1.ObjectHandle(credentialRequestMetadataPtr.deref()),
115
+ };
116
+ }
117
+ createMasterSecret() {
118
+ const ret = (0, ffi_1.allocatePointer)();
119
+ library_1.nativeAnoncreds.anoncreds_create_master_secret(ret);
120
+ (0, error_1.handleError)();
121
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
122
+ }
123
+ createPresentation(options) {
124
+ const { presentationRequest, masterSecret } = (0, ffi_1.serializeArguments)(options);
125
+ const credentialEntries = options.credentials.map((value) => {
126
+ const { credential, timestamp, revocationState: rev_state } = (0, ffi_1.serializeArguments)(value);
127
+ return (0, ffi_1.CredentialEntryStruct)({ credential, timestamp, rev_state });
128
+ });
129
+ const credentialEntryList = (0, ffi_1.CredentialEntryListStruct)({
130
+ count: credentialEntries.length,
131
+ // @ts-ignore
132
+ data: credentialEntries,
133
+ });
134
+ const credentialProves = options.credentialsProve.map((value) => {
135
+ const { entryIndex: entry_idx, isPredicate: is_predictable, reveal, referent } = (0, ffi_1.serializeArguments)(value);
136
+ return (0, ffi_1.CredentialProveStruct)({ entry_idx, referent, is_predictable, reveal });
137
+ });
138
+ const credentialProveList = (0, ffi_1.CredentialProveListStruct)({
139
+ count: credentialProves.length,
140
+ // @ts-ignore
141
+ data: credentialProves,
142
+ });
143
+ const selfAttestNames = (0, ffi_1.StringListStruct)({
144
+ count: Object.keys(options.selfAttest).length,
145
+ // @ts-ignore
146
+ data: Object.keys(options.selfAttest),
147
+ });
148
+ const selfAttestValues = (0, ffi_1.StringListStruct)({
149
+ count: Object.values(options.selfAttest).length,
150
+ // @ts-ignore
151
+ data: Object.values(options.selfAttest),
152
+ });
153
+ const schemaKeys = Object.keys(options.schemas);
154
+ const schemaIds = (0, ffi_1.StringListStruct)({
155
+ count: schemaKeys.length,
156
+ // @ts-ignore
157
+ data: schemaKeys,
158
+ });
159
+ const schemaValues = Object.values(options.schemas);
160
+ const schemas = (0, ffi_1.ObjectHandleListStruct)({
161
+ count: schemaValues.length,
162
+ // @ts-ignore
163
+ data: (0, ffi_1.ObjectHandleArray)(schemaValues.map((o) => o.handle)),
164
+ });
165
+ const credentialDefinitionKeys = Object.keys(options.credentialDefinitions);
166
+ const credentialDefinitionIds = (0, ffi_1.StringListStruct)({
167
+ count: credentialDefinitionKeys.length,
168
+ // @ts-ignore
169
+ data: credentialDefinitionKeys,
170
+ });
171
+ const credentialDefinitionValues = Object.values(options.credentialDefinitions);
172
+ const credentialDefinitions = (0, ffi_1.ObjectHandleListStruct)({
173
+ count: credentialDefinitionValues.length,
174
+ // @ts-ignore
175
+ data: (0, ffi_1.ObjectHandleArray)(credentialDefinitionValues.map((o) => o.handle)),
176
+ });
177
+ const ret = (0, ffi_1.allocatePointer)();
178
+ library_1.nativeAnoncreds.anoncreds_create_presentation(presentationRequest, credentialEntryList, credentialProveList, selfAttestNames, selfAttestValues, masterSecret, schemas, schemaIds, credentialDefinitions, credentialDefinitionIds, ret);
179
+ (0, error_1.handleError)();
180
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
181
+ }
182
+ verifyPresentation(options) {
183
+ const { presentation, presentationRequest, schemas, credentialDefinitions, revocationRegistryDefinitions, revocationStatusLists, revocationRegistryDefinitionIds, schemaIds, credentialDefinitionIds, } = (0, ffi_1.serializeArguments)(options);
184
+ const ret = (0, ffi_1.allocateInt8Buffer)();
185
+ library_1.nativeAnoncreds.anoncreds_verify_presentation(presentation, presentationRequest, schemas, schemaIds, credentialDefinitions, credentialDefinitionIds, revocationRegistryDefinitions, revocationRegistryDefinitionIds, revocationStatusLists, ret);
186
+ (0, error_1.handleError)();
187
+ return Boolean(ret.deref());
188
+ }
189
+ createRevocationStatusList(options) {
190
+ const { timestamp, issuanceByDefault, revocationRegistryDefinition, revocationRegistryDefinitionId } = (0, ffi_1.serializeArguments)(options);
191
+ const ret = (0, ffi_1.allocatePointer)();
192
+ library_1.nativeAnoncreds.anoncreds_create_revocation_status_list(revocationRegistryDefinitionId, revocationRegistryDefinition, timestamp, issuanceByDefault, ret);
193
+ (0, error_1.handleError)();
194
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
195
+ }
196
+ updateRevocationStatusListTimestampOnly(options) {
197
+ const { currentList, timestamp } = (0, ffi_1.serializeArguments)(options);
198
+ const ret = (0, ffi_1.allocatePointer)();
199
+ library_1.nativeAnoncreds.anoncreds_update_revocation_status_list_timestamp_only(timestamp, currentList, ret);
200
+ (0, error_1.handleError)();
201
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
202
+ }
203
+ updateRevocationStatusList(options) {
204
+ const { currentList, timestamp, revocationRegistryDefinition, revoked, issued } = (0, ffi_1.serializeArguments)(options);
205
+ const ret = (0, ffi_1.allocatePointer)();
206
+ library_1.nativeAnoncreds.anoncreds_update_revocation_status_list(timestamp, issued, revoked, revocationRegistryDefinition, currentList, ret);
207
+ (0, error_1.handleError)();
208
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
209
+ }
210
+ createRevocationRegistryDef(options) {
211
+ const { credentialDefinition, credentialDefinitionId, tag, revocationRegistryType, issuerId, maximumCredentialNumber, tailsDirectoryPath, } = (0, ffi_1.serializeArguments)(options);
212
+ const revocationRegistryDefinitionPtr = (0, ffi_1.allocatePointer)();
213
+ const revocationRegistryDefinitionPrivate = (0, ffi_1.allocatePointer)();
214
+ library_1.nativeAnoncreds.anoncreds_create_revocation_registry_def(credentialDefinition, credentialDefinitionId, issuerId, tag, revocationRegistryType, maximumCredentialNumber, tailsDirectoryPath, revocationRegistryDefinitionPtr, revocationRegistryDefinitionPrivate);
215
+ (0, error_1.handleError)();
216
+ return {
217
+ revocationRegistryDefinition: new anoncreds_shared_1.ObjectHandle(revocationRegistryDefinitionPtr.deref()),
218
+ revocationRegistryDefinitionPrivate: new anoncreds_shared_1.ObjectHandle(revocationRegistryDefinitionPrivate.deref()),
219
+ };
220
+ }
221
+ createOrUpdateRevocationState(options) {
222
+ var _a, _b;
223
+ const { revocationRegistryDefinition, revocationStatusList, revocationRegistryIndex, tailsPath } = (0, ffi_1.serializeArguments)(options);
224
+ const previousRevocationState = (_a = options.previousRevocationState) !== null && _a !== void 0 ? _a : new anoncreds_shared_1.ObjectHandle(0);
225
+ const previousRevocationStatusList = (_b = options.previousRevocationStatusList) !== null && _b !== void 0 ? _b : new anoncreds_shared_1.ObjectHandle(0);
226
+ const ret = (0, ffi_1.allocatePointer)();
227
+ library_1.nativeAnoncreds.anoncreds_create_or_update_revocation_state(revocationRegistryDefinition, revocationStatusList, revocationRegistryIndex, tailsPath, previousRevocationStatusList.handle, previousRevocationState.handle, ret);
228
+ (0, error_1.handleError)();
229
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
230
+ }
231
+ version() {
232
+ return library_1.nativeAnoncreds.anoncreds_version();
233
+ }
234
+ // This should be called when a function returns a non-zero code
235
+ getCurrentError() {
236
+ const ret = (0, ffi_1.allocateStringBuffer)();
237
+ library_1.nativeAnoncreds.anoncreds_get_current_error(ret);
238
+ (0, error_1.handleError)();
239
+ return ret.deref();
240
+ }
241
+ objectFromJson(method, options) {
242
+ const ret = (0, ffi_1.allocatePointer)();
243
+ const byteBuffer = anoncreds_shared_1.ByteBuffer.fromUint8Array(new util_1.TextEncoder().encode(options.json));
244
+ (0, error_1.handleError)();
245
+ // @ts-ignore
246
+ method(byteBuffer, ret);
247
+ return new anoncreds_shared_1.ObjectHandle(ret.deref());
248
+ }
249
+ presentationRequestFromJson(options) {
250
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_presentation_request_from_json, options);
251
+ }
252
+ masterSecretFromJson(options) {
253
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_master_secret_from_json, options);
254
+ }
255
+ credentialRequestFromJson(options) {
256
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_credential_request_from_json, options);
257
+ }
258
+ credentialRequestMetadataFromJson(options) {
259
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_credential_request_metadata_from_json, options);
260
+ }
261
+ revocationRegistryDefinitionFromJson(options) {
262
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_revocation_registry_definition_from_json, options);
263
+ }
264
+ revocationRegistryFromJson(options) {
265
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_revocation_registry_from_json, options);
266
+ }
267
+ revocationStateFromJson(options) {
268
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_revocation_state_from_json, options);
269
+ }
270
+ presentationFromJson(options) {
271
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_presentation_from_json, options);
272
+ }
273
+ credentialOfferFromJson(options) {
274
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_credential_offer_from_json, options);
275
+ }
276
+ schemaFromJson(options) {
277
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_schema_from_json, options);
278
+ }
279
+ credentialFromJson(options) {
280
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_credential_from_json, options);
281
+ }
282
+ revocationRegistryDefinitionPrivateFromJson(options) {
283
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_revocation_registry_definition_private_from_json, options);
284
+ }
285
+ revocationRegistryDeltaFromJson(options) {
286
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_revocation_registry_delta_from_json, options);
287
+ }
288
+ credentialDefinitionFromJson(options) {
289
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_credential_definition_from_json, options);
290
+ }
291
+ credentialDefinitionPrivateFromJson(options) {
292
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_credential_definition_private_from_json, options);
293
+ }
294
+ keyCorrectnessProofFromJson(options) {
295
+ return this.objectFromJson(library_1.nativeAnoncreds.anoncreds_key_correctness_proof_from_json, options);
296
+ }
297
+ getJson(options) {
298
+ const ret = (0, ffi_1.allocateByteBuffer)();
299
+ const { objectHandle } = (0, ffi_1.serializeArguments)(options);
300
+ library_1.nativeAnoncreds.anoncreds_object_get_json(objectHandle, ret);
301
+ (0, error_1.handleError)();
302
+ const output = new Uint8Array((0, ffi_1.byteBufferToBuffer)(ret.deref()));
303
+ return new util_1.TextDecoder().decode(output);
304
+ }
305
+ getTypeName(options) {
306
+ const { objectHandle } = (0, ffi_1.serializeArguments)(options);
307
+ const ret = (0, ffi_1.allocateStringBuffer)();
308
+ library_1.nativeAnoncreds.anoncreds_object_get_type_name(objectHandle, ret);
309
+ (0, error_1.handleError)();
310
+ return ret.deref();
311
+ }
312
+ objectFree(options) {
313
+ library_1.nativeAnoncreds.anoncreds_object_free(options.objectHandle.handle);
314
+ (0, error_1.handleError)();
315
+ }
316
+ }
317
+ exports.NodeJSAnoncreds = NodeJSAnoncreds;
318
+ //# sourceMappingURL=NodeJSAnoncreds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeJSAnoncreds.js","sourceRoot":"","sources":["../src/NodeJSAnoncreds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const handleError: () => void;
package/build/error.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleError = void 0;
4
+ const anoncreds_shared_1 = require("@hyperledger/anoncreds-shared");
5
+ const ffi_1 = require("./ffi");
6
+ const library_1 = require("./library");
7
+ const handleError = () => {
8
+ const nativeError = (0, ffi_1.allocateStringBuffer)();
9
+ library_1.nativeAnoncreds.anoncreds_get_current_error(nativeError);
10
+ const anoncredsErrorObject = JSON.parse(nativeError.deref());
11
+ if (anoncredsErrorObject.code === 0)
12
+ return;
13
+ throw new anoncreds_shared_1.AnoncredsError(anoncredsErrorObject);
14
+ };
15
+ exports.handleError = handleError;
16
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAEA,oEAA8D;AAE9D,+BAA4C;AAC5C,uCAA2C;AAEpC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,WAAW,GAAG,IAAA,0BAAoB,GAAE,CAAA;IAC1C,yBAAe,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAA;IACxD,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAY,CAAyB,CAAA;IAE9F,IAAI,oBAAoB,CAAC,IAAI,KAAK,CAAC;QAAE,OAAM;IAE3C,MAAM,IAAI,iCAAc,CAAC,oBAAoB,CAAC,CAAA;AAChD,CAAC,CAAA;AARY,QAAA,WAAW,eAQvB"}
@@ -0,0 +1,5 @@
1
+ export declare const allocateStringBuffer: () => Buffer;
2
+ export declare const allocatePointer: () => Buffer;
3
+ export declare const allocateInt8Buffer: () => Buffer;
4
+ export declare const allocateCredRevInfoStructPointer: () => Buffer;
5
+ export declare const allocateByteBuffer: () => Buffer;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allocateByteBuffer = exports.allocateCredRevInfoStructPointer = exports.allocateInt8Buffer = exports.allocatePointer = exports.allocateStringBuffer = void 0;
4
+ const ref_napi_1 = require("ref-napi");
5
+ const primitives_1 = require("../ffi/primitives");
6
+ const structures_1 = require("./structures");
7
+ // TODO: more allocations here
8
+ const allocateStringBuffer = () => (0, ref_napi_1.alloc)(primitives_1.FFI_STRING);
9
+ exports.allocateStringBuffer = allocateStringBuffer;
10
+ const allocatePointer = () => (0, ref_napi_1.alloc)(primitives_1.FFI_OBJECT_HANDLE);
11
+ exports.allocatePointer = allocatePointer;
12
+ const allocateInt8Buffer = () => (0, ref_napi_1.alloc)(primitives_1.FFI_INT8);
13
+ exports.allocateInt8Buffer = allocateInt8Buffer;
14
+ const allocateCredRevInfoStructPointer = () => (0, ref_napi_1.alloc)(structures_1.CredRevInfoStruct);
15
+ exports.allocateCredRevInfoStructPointer = allocateCredRevInfoStructPointer;
16
+ const allocateByteBuffer = () => (0, ref_napi_1.alloc)(structures_1.ByteBufferStruct);
17
+ exports.allocateByteBuffer = allocateByteBuffer;
18
+ //# sourceMappingURL=alloc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alloc.js","sourceRoot":"","sources":["../../src/ffi/alloc.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAEhC,kDAA2E;AAE3E,6CAAkE;AAElE,8BAA8B;AAEvB,MAAM,oBAAoB,GAAG,GAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,uBAAU,CAAC,CAAA;AAAtD,QAAA,oBAAoB,wBAAkC;AAE5D,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,8BAAiB,CAAC,CAAA;AAAxD,QAAA,eAAe,mBAAyC;AAE9D,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,qBAAQ,CAAC,CAAA;AAAlD,QAAA,kBAAkB,sBAAgC;AAExD,MAAM,gCAAgC,GAAG,GAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,8BAAiB,CAAC,CAAA;AAAzE,QAAA,gCAAgC,oCAAyC;AAE/E,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,6BAAgB,CAAC,CAAA;AAA1D,QAAA,kBAAkB,sBAAwC"}
@@ -0,0 +1,8 @@
1
+ export declare const byteBufferToBuffer: (buffer: {
2
+ data: Buffer;
3
+ len: number;
4
+ }) => Buffer;
5
+ export declare const secretBufferToBuffer: (buffer: {
6
+ data: Buffer;
7
+ len: number;
8
+ }) => Buffer;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.secretBufferToBuffer = exports.byteBufferToBuffer = void 0;
4
+ const ref_napi_1 = require("ref-napi");
5
+ const byteBufferToBuffer = (buffer) => (0, ref_napi_1.reinterpret)(buffer.data, buffer.len);
6
+ exports.byteBufferToBuffer = byteBufferToBuffer;
7
+ exports.secretBufferToBuffer = exports.byteBufferToBuffer;
8
+ //# sourceMappingURL=conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/ffi/conversion.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAE/B,MAAM,kBAAkB,GAAG,CAAC,MAAqC,EAAE,EAAE,CAAC,IAAA,sBAAW,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;AAApG,QAAA,kBAAkB,sBAAkF;AAEpG,QAAA,oBAAoB,GAAG,0BAAkB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './alloc';
2
+ export * from './conversion';
3
+ export * from './structures';
4
+ export * from './primitives';
5
+ export * from './serialize';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./alloc"), exports);
14
+ __exportStar(require("./conversion"), exports);
15
+ __exportStar(require("./structures"), exports);
16
+ __exportStar(require("./primitives"), exports);
17
+ __exportStar(require("./serialize"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAuB;AACvB,+CAA4B;AAC5B,+CAA4B;AAC5B,+CAA4B;AAC5B,8CAA2B"}
@@ -0,0 +1,13 @@
1
+ export declare const FFI_ISIZE = "size_t";
2
+ export declare const FFI_INT8 = "int8";
3
+ export declare const FFI_INT64 = "int64";
4
+ export declare const FFI_UINT = "uint";
5
+ export declare const FFI_UINT8 = "uint8";
6
+ export declare const FFI_ERRORCODE = "uint";
7
+ export declare const FFI_OBJECT_HANDLE = "size_t";
8
+ export declare const FFI_VOID: import("ref-napi").Type<void>;
9
+ export declare const FFI_STRING = "string";
10
+ export declare const FFI_ISIZE_PTR: import("ref-napi").Type<import("ref-napi").Pointer<string | number>>;
11
+ export declare const FFI_INT8_PTR: import("ref-napi").Type<import("ref-napi").Pointer<number>>;
12
+ export declare const FFI_OBJECT_HANDLE_PTR: import("ref-napi").Type<import("ref-napi").Pointer<string | number>>;
13
+ export declare const FFI_STRING_PTR: import("ref-napi").Type<import("ref-napi").Pointer<string | null>>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FFI_STRING_PTR = exports.FFI_OBJECT_HANDLE_PTR = exports.FFI_INT8_PTR = exports.FFI_ISIZE_PTR = exports.FFI_STRING = exports.FFI_VOID = exports.FFI_OBJECT_HANDLE = exports.FFI_ERRORCODE = exports.FFI_UINT8 = exports.FFI_UINT = exports.FFI_INT64 = exports.FFI_INT8 = exports.FFI_ISIZE = void 0;
4
+ const ref_napi_1 = require("ref-napi");
5
+ // Primitives
6
+ exports.FFI_ISIZE = 'size_t';
7
+ exports.FFI_INT8 = 'int8';
8
+ exports.FFI_INT64 = 'int64';
9
+ exports.FFI_UINT = 'uint';
10
+ exports.FFI_UINT8 = 'uint8';
11
+ exports.FFI_ERRORCODE = exports.FFI_UINT;
12
+ exports.FFI_OBJECT_HANDLE = exports.FFI_ISIZE;
13
+ exports.FFI_VOID = ref_napi_1.types.void;
14
+ exports.FFI_STRING = 'string';
15
+ // Pointers
16
+ exports.FFI_ISIZE_PTR = (0, ref_napi_1.refType)(exports.FFI_ISIZE);
17
+ exports.FFI_INT8_PTR = (0, ref_napi_1.refType)(exports.FFI_INT8);
18
+ exports.FFI_OBJECT_HANDLE_PTR = (0, ref_napi_1.refType)(exports.FFI_OBJECT_HANDLE);
19
+ exports.FFI_STRING_PTR = (0, ref_napi_1.refType)(exports.FFI_STRING);
20
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/ffi/primitives.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAEzC,aAAa;AAEA,QAAA,SAAS,GAAG,QAAQ,CAAA;AACpB,QAAA,QAAQ,GAAG,MAAM,CAAA;AACjB,QAAA,SAAS,GAAG,OAAO,CAAA;AACnB,QAAA,QAAQ,GAAG,MAAM,CAAA;AACjB,QAAA,SAAS,GAAG,OAAO,CAAA;AACnB,QAAA,aAAa,GAAG,gBAAQ,CAAA;AACxB,QAAA,iBAAiB,GAAG,iBAAS,CAAA;AAC7B,QAAA,QAAQ,GAAG,gBAAK,CAAC,IAAI,CAAA;AACrB,QAAA,UAAU,GAAG,QAAQ,CAAA;AAElC,WAAW;AAEE,QAAA,aAAa,GAAG,IAAA,kBAAO,EAAC,iBAAS,CAAC,CAAA;AAClC,QAAA,YAAY,GAAG,IAAA,kBAAO,EAAC,gBAAQ,CAAC,CAAA;AAChC,QAAA,qBAAqB,GAAG,IAAA,kBAAO,EAAC,yBAAiB,CAAC,CAAA;AAClD,QAAA,cAAc,GAAG,IAAA,kBAAO,EAAC,kBAAU,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { ByteBufferStruct } from './structures';
2
+ import { ObjectHandle } from '@hyperledger/anoncreds-shared';
3
+ import { ObjectHandleListStruct, StringListStruct } from './structures';
4
+ declare type Argument = Record<string, unknown> | Array<unknown> | Date | Uint8Array | SerializedArgument | boolean | ObjectHandle;
5
+ declare type SerializedArgument = string | number | ArrayBuffer | Buffer | typeof StringListStruct | typeof ObjectHandleListStruct;
6
+ export declare type SerializedOptions<Type> = Required<{
7
+ [Property in keyof Type]: Type[Property] extends string ? string : Type[Property] extends number ? number : Type[Property] extends boolean ? number : Type[Property] extends boolean | undefined ? number : Type[Property] extends Record<string, unknown> ? string : Type[Property] extends Array<string> ? Buffer : Type[Property] extends Array<string> | undefined ? Buffer : Type[Property] extends Array<number> ? Buffer : Type[Property] extends Array<number> | undefined ? Buffer : Type[Property] extends Date ? number : Type[Property] extends Date | undefined ? number : Type[Property] extends string | undefined ? string : Type[Property] extends number | undefined ? number : Type[Property] extends Buffer ? Buffer : Type[Property] extends ObjectHandle ? number : Type[Property] extends Array<ObjectHandle> ? Buffer : Type[Property] extends Array<ObjectHandle> | undefined ? Buffer : Type[Property] extends ObjectHandle | undefined ? number : Type[Property] extends Uint8Array ? typeof ByteBufferStruct : Type[Property] extends Uint8Array | undefined ? typeof ByteBufferStruct : Type[Property] extends Array<unknown> | undefined ? string : Type[Property] extends Record<string, unknown> | undefined ? string : unknown;
8
+ }>;
9
+ declare const serializeArguments: <T extends Record<string, Argument> = Record<string, Argument>>(args: T) => Required<{ [Property in keyof T]: T[Property] extends string ? string : T[Property] extends number ? number : T[Property] extends boolean ? number : T[Property] extends boolean | undefined ? number : T[Property] extends Record<string, unknown> ? string : T[Property] extends string[] ? Buffer : T[Property] extends string[] | undefined ? Buffer : T[Property] extends number[] ? Buffer : T[Property] extends number[] | undefined ? Buffer : T[Property] extends Date ? number : T[Property] extends Date | undefined ? number : T[Property] extends string | undefined ? string : T[Property] extends number | undefined ? number : T[Property] extends Buffer ? Buffer : T[Property] extends ObjectHandle ? number : T[Property] extends ObjectHandle[] ? Buffer : T[Property] extends ObjectHandle[] | undefined ? Buffer : T[Property] extends ObjectHandle | undefined ? number : T[Property] extends Uint8Array ? import("ref-struct-di").StructType<{
10
+ len: import("ref-napi").Type<string | number>;
11
+ data: import("ref-napi").Type<import("ref-napi").Pointer<string | null>>;
12
+ }> : T[Property] extends Uint8Array | undefined ? import("ref-struct-di").StructType<{
13
+ len: import("ref-napi").Type<string | number>;
14
+ data: import("ref-napi").Type<import("ref-napi").Pointer<string | null>>;
15
+ }> : T[Property] extends unknown[] | undefined ? string : T[Property] extends Record<string, unknown> | undefined ? string : unknown; }>;
16
+ export { serializeArguments };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeArguments = void 0;
4
+ const anoncreds_shared_1 = require("@hyperledger/anoncreds-shared");
5
+ const ref_napi_1 = require("ref-napi");
6
+ const structures_1 = require("./structures");
7
+ // TODO: this method needs to be reworked.
8
+ // It is very messy
9
+ // cannot handle complex data structures well
10
+ const serialize = (arg) => {
11
+ switch (typeof arg) {
12
+ case 'undefined':
13
+ return ref_napi_1.NULL;
14
+ case 'boolean':
15
+ return Number(arg);
16
+ case 'string':
17
+ return arg;
18
+ case 'number':
19
+ return arg;
20
+ case 'function':
21
+ return arg;
22
+ case 'object':
23
+ if (arg instanceof anoncreds_shared_1.ObjectHandle) {
24
+ return arg.handle;
25
+ }
26
+ else if (Array.isArray(arg)) {
27
+ if (arg.every((it) => typeof it === 'string')) {
28
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
29
+ // @ts-ignore
30
+ return (0, structures_1.StringListStruct)({ count: arg.length, data: arg });
31
+ }
32
+ else if (arg.every((it) => it instanceof anoncreds_shared_1.ObjectHandle)) {
33
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
34
+ // @ts-ignore
35
+ return (0, structures_1.ObjectHandleListStruct)({ count: arg.length, data: arg.map((item) => item.handle) });
36
+ }
37
+ else if (arg.every((it) => typeof it === 'number')) {
38
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
39
+ // @ts-ignore
40
+ return (0, structures_1.I32ListStruct)({ count: arg.length, data: (0, structures_1.Int32Array)(arg) });
41
+ }
42
+ }
43
+ // TODO: add more serialization here for classes and uint8arrays
44
+ return JSON.stringify(arg);
45
+ default:
46
+ throw new Error('could not serialize value');
47
+ }
48
+ };
49
+ const serializeArguments = (args) => {
50
+ const retVal = {};
51
+ Object.entries(args).forEach(([key, val]) => (retVal[key] = serialize(val)));
52
+ return retVal;
53
+ };
54
+ exports.serializeArguments = serializeArguments;
55
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/ffi/serialize.ts"],"names":[],"mappings":";;;AAEA,oEAA4D;AAC5D,uCAA+B;AAE/B,6CAAkG;AAqElG,0CAA0C;AAC1C,mBAAmB;AACnB,6CAA6C;AAC7C,MAAM,SAAS,GAAG,CAAC,GAAa,EAAsB,EAAE;IACtD,QAAQ,OAAO,GAAG,EAAE;QAClB,KAAK,WAAW;YACd,OAAO,eAAI,CAAA;QACb,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAA;QACZ,KAAK,QAAQ;YACX,OAAO,GAAG,CAAA;QACZ,KAAK,UAAU;YACb,OAAO,GAAG,CAAA;QACZ,KAAK,QAAQ;YACX,IAAI,GAAG,YAAY,+BAAY,EAAE;gBAC/B,OAAO,GAAG,CAAC,MAAM,CAAA;aAClB;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE;oBAC7C,6DAA6D;oBAC7D,aAAa;oBACb,OAAO,IAAA,6BAAgB,EAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;iBAC1D;qBAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,+BAAY,CAAC,EAAE;oBACxD,6DAA6D;oBAC7D,aAAa;oBACb,OAAO,IAAA,mCAAsB,EAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;iBACzG;qBAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE;oBACpD,6DAA6D;oBAC7D,aAAa;oBACb,OAAO,IAAA,0BAAa,EAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAA,uBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBACnE;aACF;YACD,gEAAgE;YAChE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC5B;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;KAC/C;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,IAAO,EACe,EAAE;IACxB,MAAM,MAAM,GAAwB,EAAE,CAAA;IACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5E,OAAO,MAA8B,CAAA;AACvC,CAAC,CAAA;AAEQ,gDAAkB"}