@vess-id/mdl 0.0.9 → 0.0.10
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.
- package/lib/mdoc/parser.js +41 -19
- package/package.json +1 -1
package/lib/mdoc/parser.js
CHANGED
|
@@ -64,23 +64,40 @@ const parse = (encoded) => {
|
|
|
64
64
|
catch (err) {
|
|
65
65
|
throw new errors_1.MDLParseError(`Unable to decode device response: ${err.message}`);
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
// Handle both Map and Object responses from cbor-x
|
|
68
|
+
const isResponseMap = deviceResponse instanceof Map;
|
|
69
|
+
const responseData = isResponseMap
|
|
70
|
+
? Object.fromEntries(deviceResponse)
|
|
71
|
+
: deviceResponse;
|
|
72
|
+
const { version, documents, status } = responseData;
|
|
68
73
|
const parsedDocuments = documents.map((doc) => {
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
// Helper functions to handle both Map and Object
|
|
75
|
+
const isDocMap = doc instanceof Map;
|
|
76
|
+
const getDocKey = (key) => isDocMap ? doc.get(key) : doc[key];
|
|
77
|
+
const hasDocKey = (key) => isDocMap ? doc.has(key) : key in doc;
|
|
78
|
+
const issuerSignedData = getDocKey('issuerSigned');
|
|
79
|
+
const getIssuerSignedKey = (key) => issuerSignedData instanceof Map ? issuerSignedData.get(key) : issuerSignedData[key];
|
|
80
|
+
const issuerAuth = parseIssuerAuthElement(getIssuerSignedKey('issuerAuth'), getDocKey('docType'));
|
|
81
|
+
const issuerSigned = hasDocKey('issuerSigned') ? {
|
|
82
|
+
...issuerSignedData,
|
|
83
|
+
nameSpaces: mapIssuerNameSpaces(getIssuerSignedKey('nameSpaces')),
|
|
73
84
|
issuerAuth,
|
|
74
85
|
} : undefined;
|
|
75
|
-
const deviceSigned =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
86
|
+
const deviceSigned = hasDocKey('deviceSigned') ? (() => {
|
|
87
|
+
const deviceSignedData = getDocKey('deviceSigned');
|
|
88
|
+
const getDeviceSignedKey = (key) => deviceSignedData instanceof Map ? deviceSignedData.get(key) : deviceSignedData[key];
|
|
89
|
+
const nameSpacesData = getDeviceSignedKey('nameSpaces');
|
|
90
|
+
const nameSpacesDataValue = nameSpacesData instanceof Map ? nameSpacesData.get('data') : nameSpacesData.data;
|
|
91
|
+
return {
|
|
92
|
+
...deviceSignedData,
|
|
93
|
+
nameSpaces: mapDeviceNameSpaces(nameSpacesDataValue),
|
|
94
|
+
deviceAuth: parseDeviceAuthElement(getDeviceSignedKey('deviceAuth')),
|
|
95
|
+
};
|
|
96
|
+
})() : undefined;
|
|
80
97
|
if (deviceSigned) {
|
|
81
|
-
return new DeviceSignedDocument_1.DeviceSignedDocument(
|
|
98
|
+
return new DeviceSignedDocument_1.DeviceSignedDocument(getDocKey('docType'), issuerSigned, deviceSigned);
|
|
82
99
|
}
|
|
83
|
-
return new IssuerSignedDocument_1.IssuerSignedDocument(
|
|
100
|
+
return new IssuerSignedDocument_1.IssuerSignedDocument(getDocKey('docType'), issuerSigned);
|
|
84
101
|
});
|
|
85
102
|
return new MDoc_1.MDoc(parsedDocuments, version, status);
|
|
86
103
|
};
|
|
@@ -112,18 +129,23 @@ const parseIssuerSigned = (issuerSignedCbor, docType) => {
|
|
|
112
129
|
if (!decoded || typeof decoded !== 'object') {
|
|
113
130
|
throw new errors_1.MDLParseError('Invalid IssuerSigned CBOR');
|
|
114
131
|
}
|
|
115
|
-
// Check for Map structure (
|
|
116
|
-
|
|
117
|
-
|
|
132
|
+
// Check for Map or Object structure (cbor-x may decode to either)
|
|
133
|
+
const isMap = decoded instanceof Map;
|
|
134
|
+
const isObject = !isMap && typeof decoded === 'object' && decoded !== null;
|
|
135
|
+
if (!isMap && !isObject) {
|
|
136
|
+
throw new errors_1.MDLParseError('IssuerSigned must be a CBOR Map or Object');
|
|
118
137
|
}
|
|
119
|
-
|
|
138
|
+
// Helper functions to access properties regardless of Map or Object
|
|
139
|
+
const hasKey = (key) => isMap ? decoded.has(key) : key in decoded;
|
|
140
|
+
const getKey = (key) => isMap ? decoded.get(key) : decoded[key];
|
|
141
|
+
if (!hasKey('nameSpaces') || !hasKey('issuerAuth')) {
|
|
120
142
|
throw new errors_1.MDLParseError('Invalid IssuerSigned structure: missing nameSpaces or issuerAuth');
|
|
121
143
|
}
|
|
122
144
|
// Parse issuerAuth
|
|
123
|
-
const rawIssuerAuth =
|
|
145
|
+
const rawIssuerAuth = getKey('issuerAuth');
|
|
124
146
|
const issuerAuth = parseIssuerAuthElement(rawIssuerAuth, docType);
|
|
125
147
|
// Parse nameSpaces
|
|
126
|
-
const rawNameSpaces =
|
|
148
|
+
const rawNameSpaces = getKey('nameSpaces');
|
|
127
149
|
const nameSpaces = mapIssuerNameSpaces(rawNameSpaces);
|
|
128
150
|
// Create IssuerSigned object
|
|
129
151
|
const issuerSigned = {
|
|
@@ -133,4 +155,4 @@ const parseIssuerSigned = (issuerSignedCbor, docType) => {
|
|
|
133
155
|
return new IssuerSignedDocument_1.IssuerSignedDocument(docType, issuerSigned);
|
|
134
156
|
};
|
|
135
157
|
exports.parseIssuerSigned = parseIssuerSigned;
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21kb2MvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVEQUFtRDtBQUNuRCx1Q0FBdUM7QUFDdkMsa0NBQXFDO0FBQ3JDLHVDQUFvQztBQUlwQyxvRUFBNEM7QUFDNUMseURBQXNEO0FBQ3RELHFDQUF5QztBQUN6Qyx1RUFBb0U7QUFDcEUsdUVBQW9FO0FBRXBFLE1BQU0sc0JBQXNCLEdBQUcsQ0FDN0IsYUFBNEIsRUFDNUIsZUFBdUIsRUFDWCxFQUFFO0lBQ2QsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBVSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDcEQsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUN0QyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksc0JBQWEsQ0FBQyxrQ0FBa0MsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFBLGtDQUFlLEVBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxzQkFBYSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxhQUE0QixFQUFjLEVBQUU7SUFDMUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLGdCQUFLLENBQUMsR0FB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
|