@sphereon/ssi-sdk-ext.kms-musap-rn 0.27.1-fix.6 → 0.27.1-fix.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MusapKeyManagerSystem.d.ts","sourceRoot":"","sources":["../src/MusapKeyManagerSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EACL,oBAAoB,EAepB,QAAQ,EACT,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"MusapKeyManagerSystem.d.ts","sourceRoot":"","sources":["../src/MusapKeyManagerSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EACL,oBAAoB,EAepB,QAAQ,EACT,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAWrC,eAAO,MAAM,MAAM,sDAA+C,CAAA;AAElE,qBAAa,wBAAyB,SAAQ,2BAA2B;IACvE,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAoC;IACzE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoC;gBAE9D,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACvD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC/C;IAmBK,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKrC,SAAS,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAuCtF,OAAO,CAAC,yBAAyB,CAWhC;IAED,OAAO,CAAC,yBAAyB,CAchC;IAEK,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3D,OAAO,CAAC,kBAAkB;IAapB,IAAI,CAAC,IAAI,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU,CAAC;QACjB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KACjB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBb,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAI9G,OAAO,CAAC,oBAAoB,CAqD3B;IAGD,OAAO,CAAC,cAAc;IAqBtB,YAAY,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAInH,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,2BAA2B;CASpC"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -27,6 +50,7 @@ const key_manager_1 = require("@veramo/key-manager");
|
|
|
27
50
|
const text_encoding_1 = require("text-encoding");
|
|
28
51
|
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
29
52
|
const ssi_sdk_ext_key_utils_1 = require("@sphereon/ssi-sdk-ext.key-utils");
|
|
53
|
+
const u8a = __importStar(require("uint8arrays"));
|
|
30
54
|
exports.logger = ssi_types_1.Loggers.DEFAULT.get('sphereon:musap-rn-kms');
|
|
31
55
|
class MusapKeyManagementSystem extends key_manager_1.AbstractKeyManagementSystem {
|
|
32
56
|
constructor(sscdType, sscdId, opts) {
|
|
@@ -60,51 +84,47 @@ class MusapKeyManagementSystem extends key_manager_1.AbstractKeyManagementSystem
|
|
|
60
84
|
};
|
|
61
85
|
this.decodeMusapPublicKey = (args) => {
|
|
62
86
|
const { publicKey, keyType } = args;
|
|
63
|
-
try
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
// Ensure we have full 65 bytes for uncompressed keys
|
|
84
|
-
while (publicKeyHex.startsWith('04') && publicKeyHex.length < 130) {
|
|
85
|
-
publicKeyHex = publicKeyHex + '0';
|
|
86
|
-
}
|
|
87
|
-
// Now convert to compressed format if needed
|
|
88
|
-
if (publicKeyHex.startsWith('04') && publicKeyHex.length === 130) {
|
|
89
|
-
const xCoord = Buffer.from(publicKeyHex.slice(2, 66), 'hex');
|
|
90
|
-
const yCoord = Buffer.from(publicKeyHex.slice(66, 130), 'hex');
|
|
91
|
-
const prefix = Buffer.from([yCoord[31] % 2 === 0 ? 0x02 : 0x03]);
|
|
92
|
-
const compressedKey = Buffer.concat([prefix, xCoord]);
|
|
93
|
-
return compressedKey.toString('hex');
|
|
94
|
-
}
|
|
95
|
-
return publicKeyHex;
|
|
87
|
+
// First try the normal PEM decoding path
|
|
88
|
+
const pemBinary = (0, ssi_sdk_ext_x509_utils_1.PEMToBinary)(publicKey.pem);
|
|
89
|
+
// Check if we got a string that looks like base64 (might be double encoded)
|
|
90
|
+
// Convert Uint8Array to string safely
|
|
91
|
+
const pemString = u8a.toString(pemBinary, 'utf8');
|
|
92
|
+
const isDoubleEncoded = pemBinary.length > 0 &&
|
|
93
|
+
typeof pemString === 'string' &&
|
|
94
|
+
pemString.startsWith('MF');
|
|
95
|
+
if (isDoubleEncoded) {
|
|
96
|
+
// Handle double-encoded case
|
|
97
|
+
const actualDerBytes = u8a.fromString(pemString, 'base64');
|
|
98
|
+
// For double-encoded case, we know the key data starts after the header
|
|
99
|
+
const keyDataStart = 24;
|
|
100
|
+
const keyData = actualDerBytes.slice(keyDataStart);
|
|
101
|
+
// Convert to public key hex
|
|
102
|
+
let publicKeyHex = u8a.toString(keyData, 'hex');
|
|
103
|
+
// If it's not compressed yet and doesn't start with 0x04 (uncompressed point marker), add it
|
|
104
|
+
if (publicKeyHex.length <= 128 && !publicKeyHex.startsWith('04')) {
|
|
105
|
+
publicKeyHex = '04' + publicKeyHex;
|
|
96
106
|
}
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
+
// Ensure we have full 65 bytes for uncompressed keys
|
|
108
|
+
while (publicKeyHex.startsWith('04') && publicKeyHex.length < 130) {
|
|
109
|
+
publicKeyHex = publicKeyHex + '0';
|
|
110
|
+
}
|
|
111
|
+
// Now convert to compressed format if needed
|
|
112
|
+
if (publicKeyHex.startsWith('04') && publicKeyHex.length === 130) {
|
|
113
|
+
const xCoord = u8a.fromString(publicKeyHex.slice(2, 66), 'hex');
|
|
114
|
+
const yCoord = u8a.fromString(publicKeyHex.slice(66, 130), 'hex');
|
|
115
|
+
const prefix = new Uint8Array([yCoord[31] % 2 === 0 ? 0x02 : 0x03]);
|
|
116
|
+
const compressedKey = new Uint8Array(33); // 1 byte prefix + 32 bytes x coordinate
|
|
117
|
+
compressedKey.set(prefix, 0);
|
|
118
|
+
compressedKey.set(xCoord, 1);
|
|
119
|
+
return u8a.toString(compressedKey, 'hex');
|
|
120
|
+
}
|
|
121
|
+
return publicKeyHex;
|
|
107
122
|
}
|
|
123
|
+
// Not double encoded, proceed with normal path
|
|
124
|
+
const publicKeyBinary = (0, ssi_sdk_ext_key_utils_1.isAsn1Der)(pemBinary) ? (0, ssi_sdk_ext_key_utils_1.asn1DerToRawPublicKey)(pemBinary, keyType) : pemBinary;
|
|
125
|
+
return (0, ssi_sdk_ext_key_utils_1.isRawCompressedPublicKey)(publicKeyBinary)
|
|
126
|
+
? (0, ssi_sdk_ext_key_utils_1.hexStringFromUint8Array)(publicKeyBinary)
|
|
127
|
+
: (0, ssi_sdk_ext_key_utils_1.toRawCompressedHexPublicKey)(publicKeyBinary, keyType);
|
|
108
128
|
};
|
|
109
129
|
try {
|
|
110
130
|
this.musapClient = musap_react_native_1.MusapClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MusapKeyManagerSystem.js","sourceRoot":"","sources":["../src/MusapKeyManagerSystem.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MusapKeyManagerSystem.js","sourceRoot":"","sources":["../src/MusapKeyManagerSystem.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAA8D;AAE9D,qEAiBqC;AACrC,qDAAiE;AACjE,iDAA2C;AAC3C,mDAA6C;AAE7C,2EAOwC;AACxC,iDAAkC;AAErB,QAAA,MAAM,GAAG,mBAAO,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAElE,MAAa,wBAAyB,SAAQ,yCAA2B;IAOvE,YAAY,QAAmB,EAAE,MAAe,EAAE,IAIjD;QACC,KAAK,EAAE,CAAA;QA8DD,8BAAyB,GAAG,CAAC,IAAc,EAAoB,EAAE;YACvE,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,WAAW;oBACd,OAAO,WAAW,CAAA;gBACpB,KAAK,WAAW;oBACd,OAAO,WAAW,CAAA;gBACpB,KAAK,KAAK;oBACR,OAAO,OAAO,CAAA;gBAChB;oBACE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,4BAA4B,CAAC,CAAA;YACjE,CAAC;QACH,CAAC,CAAA;QAEO,8BAAyB,GAAG,CAAC,IAAkB,EAAY,EAAE;YACnE,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,WAAW;oBACd,OAAO,WAAW,CAAA;gBACpB,KAAK,WAAW;oBACd,OAAO,WAAW,CAAA;gBACpB,KAAK,aAAa;oBAChB,OAAO,SAAS,CAAA;gBAClB,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO;oBACV,OAAO,KAAK,CAAA;gBACd;oBACE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,oBAAoB,CAAC,CAAA;YACzD,CAAC;QACH,CAAC,CAAA;QA6DO,yBAAoB,GAAG,CAAC,IAAuD,EAAU,EAAE;YACjG,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;YAEnC,yCAAyC;YACzC,MAAM,SAAS,GAAG,IAAA,oCAAW,EAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAE5C,4EAA4E;YAC5E,sCAAsC;YACtC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACjD,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC1C,OAAO,SAAS,KAAK,QAAQ;gBAC7B,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAE5B,IAAI,eAAe,EAAE,CAAC;gBACpB,6BAA6B;gBAC7B,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAE1D,wEAAwE;gBACxE,MAAM,YAAY,GAAG,EAAE,CAAA;gBACvB,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBAElD,4BAA4B;gBAC5B,IAAI,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAE/C,6FAA6F;gBAC7F,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjE,YAAY,GAAG,IAAI,GAAG,YAAY,CAAA;gBACpC,CAAC;gBAED,qDAAqD;gBACrD,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAClE,YAAY,GAAG,YAAY,GAAG,GAAG,CAAA;gBACnC,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACjE,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;oBAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;oBACjE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;oBACnE,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA,CAAC,wCAAwC;oBACjF,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;oBAC5B,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;oBAC5B,OAAO,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;gBAC3C,CAAC;gBAED,OAAO,YAAY,CAAA;YACrB,CAAC;YAED,+CAA+C;YAC/C,MAAM,eAAe,GAAG,IAAA,iCAAS,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,6CAAqB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACpG,OAAO,IAAA,gDAAwB,EAAC,eAAe,CAAC;gBAC9C,CAAC,CAAC,IAAA,+CAAuB,EAAC,eAAe,CAAC;gBAC1C,CAAC,CAAC,IAAA,mDAA2B,EAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QAC3D,CAAC,CAAA;QA1MC,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,gCAAW,CAAA;YAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;YAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC,QAAQ,CAAA;YACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,oBAAoB,CAAA;YACtD,IAAI,CAAC,qBAAqB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,qBAAqB,CAAA;YAExD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAA;YACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,oBAAoB,CAAC,CAAA;YACrF,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;YAC9B,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAEK,QAAQ;;YACZ,MAAM,QAAQ,GAAe,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAe,CAAA;YACxE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;KAAA;IAEK,SAAS,CAAC,IAA4C;;YAC1D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;YAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;gBAChD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAA;YAC/E,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAe,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAe,CAAA;gBAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAkB,KAAK,oBAAoB,CAAC,CAAA,CAAC,+CAA+C;gBAClJ,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,SAAS,GAAG,WAAW,CAAA,CAAC,2DAA2D;oBAC1F,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;gBACpC,CAAC;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACvF,CAAC;YAED,MAAM,SAAS,GAAG;gBAChB,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;gBAClD,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,QAAmB,CAAC,CAAC,CAAC,MAAM;gBACjE,QAAQ,EAAE,IAAI,CAAC,QAAkB;gBACjC,UAAU,EAAE,IAAI,CAAC,qBAAqB,iCAAM,IAAI,CAAC,oBAAoB,GAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG;gBAC1H,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,IAAe,CAAC,CAAC,CAAC,eAAe;aAC3C,CAAA;YAErB,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;gBACpF,IAAI,eAAe,EAAE,CAAC;oBACpB,cAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAA;oBAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;oBACzD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;gBACjC,CAAC;qBAAM,CAAC;oBACN,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;gBACxE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,cAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;gBACzC,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;KAAA;IA+BK,SAAS;6DAAC,EAAE,GAAG,EAAmB;YACpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAa,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAa,CAAA;gBAClE,IAAI,GAAG,CAAC,QAAkB,KAAK,oBAAoB,EAAE,CAAC;oBACpD,OAAO,IAAI,CAAA,CAAC,oFAAoF;gBAClG,CAAC;gBACD,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;gBAC5C,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;KAAA;IAEO,kBAAkB,CAAC,iBAAqC,EAAE,YAA0B;QAC1F,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,IAAA,uDAAkC,EAAC,YAAY,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,IAAA,6CAAwB,EAAC,iBAAiB,CAAC,EAAE,CAAC;YAChD,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QAED,6CAA6C;QAC7C,OAAO,IAAA,uDAAkC,EAAC,iBAAiC,CAAC,CAAA;IAC9E,CAAC;IAEK,IAAI,CAAC,IAKV;;;YACC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,2BAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAkB,CAAC,CAAA;YAE9D,MAAM,GAAG,GAAa,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAa,CAAA;YAC9E,IAAI,GAAG,CAAC,QAAkB,KAAK,oBAAoB,EAAE,CAAC;gBACpD,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA,CAAC,2DAA2D;YACzF,CAAC;YACD,MAAM,YAAY,GAAiB;gBACjC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI;gBACJ,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC;gBACjE,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,MAAC,IAAI,CAAC,MAA0B,mCAAI,KAAK;gBACjD,UAAU,EAAE,IAAI,CAAC,2BAA2B,iCAAM,IAAI,CAAC,qBAAqB,GAAK,IAAI,CAAC,UAAU,EAAG;aACpG,CAAA;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5C,CAAC;KAAA;IAEK,SAAS,CAAC,IAAoE;;YAClF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC/E,CAAC;KAAA;IA0DO,cAAc,CAAC,IAAc;QACnC,MAAM,uBAAsD,IAAI,CAAE,EAA5D,EAAE,KAAK,EAAE,SAAS,OAA0C,EAArC,QAAQ,cAA/B,sBAAiC,CAA2B,CAAA;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE9D,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAC7C,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QAEF,MAAM,OAAO,GAA4B;YACvC,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,OAAO;YACb,YAAY;YACZ,IAAI,EAAE,QAAQ;SACf,CAAA;QAED,MAAM,aAAa,GAAG,IAAA,oDAA4B,EAAC,EAAE,GAAG,EAAE,OAAyB,EAAE,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,mCAAQ,OAAO,CAAC,IAAI,KAAE,aAAa,GAAE,CAAA;QACjD,OAAO,OAAyB,CAAA;IAClC,CAAC;IAED,YAAY,CAAC,IAAoF;QAC/F,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IAEO,qBAAqB,CAAC,MAA+B;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG;YACT,KAAK;SACN,CAAC,CAAC,CAAA;IACL,CAAC;IAEO,2BAA2B,CAAC,MAA+B;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG;YACT,KAAK;SACN,CAAC,CAAC,CAAA;IACL,CAAC;CACF;AAtQD,4DAsQC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk-ext.kms-musap-rn",
|
|
3
3
|
"description": "Sphereon SSI-SDK react-native plugin for management of keys with musap.",
|
|
4
|
-
"version": "0.27.1-fix.
|
|
4
|
+
"version": "0.27.1-fix.7+eea46d8",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -11,13 +11,14 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@sphereon/musap-react-native": "0.2.1-next.170",
|
|
14
|
-
"@sphereon/ssi-sdk-ext.key-utils": "0.27.1-fix.
|
|
15
|
-
"@sphereon/ssi-sdk-ext.x509-utils": "0.27.1-fix.
|
|
14
|
+
"@sphereon/ssi-sdk-ext.key-utils": "0.27.1-fix.7+eea46d8",
|
|
15
|
+
"@sphereon/ssi-sdk-ext.x509-utils": "0.27.1-fix.7+eea46d8",
|
|
16
16
|
"@sphereon/ssi-types": "0.30.2-feature.SDK.41.oidf.support.286",
|
|
17
17
|
"@veramo/core": "4.2.0",
|
|
18
18
|
"@veramo/key-manager": "4.2.0",
|
|
19
19
|
"@veramo/kms-local": "4.2.0",
|
|
20
|
-
"text-encoding": "^0.7.0"
|
|
20
|
+
"text-encoding": "^0.7.0",
|
|
21
|
+
"uint8arrays": "^3.1.1"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
24
|
"@types/text-encoding": "0.0.39"
|
|
@@ -41,5 +42,5 @@
|
|
|
41
42
|
"react-native",
|
|
42
43
|
"Veramo"
|
|
43
44
|
],
|
|
44
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "eea46d8ff6fe7fac9bf900773681f01563b5e7c4"
|
|
45
46
|
}
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
isRawCompressedPublicKey,
|
|
31
31
|
toRawCompressedHexPublicKey,
|
|
32
32
|
} from '@sphereon/ssi-sdk-ext.key-utils'
|
|
33
|
+
import * as u8a from 'uint8arrays'
|
|
33
34
|
|
|
34
35
|
export const logger = Loggers.DEFAULT.get('sphereon:musap-rn-kms')
|
|
35
36
|
|
|
@@ -195,65 +196,61 @@ export class MusapKeyManagementSystem extends AbstractKeyManagementSystem {
|
|
|
195
196
|
throw new Error('importKey is not implemented for MusapKeyManagementSystem.')
|
|
196
197
|
}
|
|
197
198
|
|
|
198
|
-
|
|
199
199
|
private decodeMusapPublicKey = (args: { publicKey: { pem: string }, keyType: TKeyType }): string => {
|
|
200
|
-
const { publicKey, keyType } = args
|
|
201
|
-
|
|
202
|
-
try {
|
|
203
|
-
// First try the normal PEM decoding path
|
|
204
|
-
const pemBinary = PEMToBinary(publicKey.pem)
|
|
200
|
+
const { publicKey, keyType } = args
|
|
205
201
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
typeof Buffer.from(pemBinary).toString() === 'string' &&
|
|
209
|
-
Buffer.from(pemBinary).toString().startsWith('MF');
|
|
202
|
+
// First try the normal PEM decoding path
|
|
203
|
+
const pemBinary = PEMToBinary(publicKey.pem)
|
|
210
204
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
205
|
+
// Check if we got a string that looks like base64 (might be double encoded)
|
|
206
|
+
// Convert Uint8Array to string safely
|
|
207
|
+
const pemString = u8a.toString(pemBinary, 'utf8')
|
|
208
|
+
const isDoubleEncoded = pemBinary.length > 0 &&
|
|
209
|
+
typeof pemString === 'string' &&
|
|
210
|
+
pemString.startsWith('MF')
|
|
215
211
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
212
|
+
if (isDoubleEncoded) {
|
|
213
|
+
// Handle double-encoded case
|
|
214
|
+
const actualDerBytes = u8a.fromString(pemString, 'base64')
|
|
219
215
|
|
|
220
|
-
|
|
221
|
-
|
|
216
|
+
// For double-encoded case, we know the key data starts after the header
|
|
217
|
+
const keyDataStart = 24
|
|
218
|
+
const keyData = actualDerBytes.slice(keyDataStart)
|
|
222
219
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
publicKeyHex = '04' + publicKeyHex
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// Ensure we have full 65 bytes for uncompressed keys
|
|
229
|
-
while (publicKeyHex.startsWith('04') && publicKeyHex.length < 130) {
|
|
230
|
-
publicKeyHex = publicKeyHex + '0'
|
|
231
|
-
}
|
|
220
|
+
// Convert to public key hex
|
|
221
|
+
let publicKeyHex = u8a.toString(keyData, 'hex')
|
|
232
222
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
const prefix = Buffer.from([yCoord[31] % 2 === 0 ? 0x02 : 0x03])
|
|
238
|
-
const compressedKey = Buffer.concat([prefix, xCoord])
|
|
239
|
-
return compressedKey.toString('hex')
|
|
240
|
-
}
|
|
223
|
+
// If it's not compressed yet and doesn't start with 0x04 (uncompressed point marker), add it
|
|
224
|
+
if (publicKeyHex.length <= 128 && !publicKeyHex.startsWith('04')) {
|
|
225
|
+
publicKeyHex = '04' + publicKeyHex
|
|
226
|
+
}
|
|
241
227
|
|
|
242
|
-
|
|
228
|
+
// Ensure we have full 65 bytes for uncompressed keys
|
|
229
|
+
while (publicKeyHex.startsWith('04') && publicKeyHex.length < 130) {
|
|
230
|
+
publicKeyHex = publicKeyHex + '0'
|
|
243
231
|
}
|
|
244
232
|
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
233
|
+
// Now convert to compressed format if needed
|
|
234
|
+
if (publicKeyHex.startsWith('04') && publicKeyHex.length === 130) {
|
|
235
|
+
const xCoord = u8a.fromString(publicKeyHex.slice(2, 66), 'hex')
|
|
236
|
+
const yCoord = u8a.fromString(publicKeyHex.slice(66, 130), 'hex')
|
|
237
|
+
const prefix = new Uint8Array([yCoord[31] % 2 === 0 ? 0x02 : 0x03])
|
|
238
|
+
const compressedKey = new Uint8Array(33) // 1 byte prefix + 32 bytes x coordinate
|
|
239
|
+
compressedKey.set(prefix, 0)
|
|
240
|
+
compressedKey.set(xCoord, 1)
|
|
241
|
+
return u8a.toString(compressedKey, 'hex')
|
|
242
|
+
}
|
|
250
243
|
|
|
251
|
-
|
|
252
|
-
console.warn('Error decoding public key:', error)
|
|
253
|
-
// If all else fails, try direct conversion
|
|
254
|
-
return publicKey.pem
|
|
244
|
+
return publicKeyHex
|
|
255
245
|
}
|
|
246
|
+
|
|
247
|
+
// Not double encoded, proceed with normal path
|
|
248
|
+
const publicKeyBinary = isAsn1Der(pemBinary) ? asn1DerToRawPublicKey(pemBinary, keyType) : pemBinary
|
|
249
|
+
return isRawCompressedPublicKey(publicKeyBinary)
|
|
250
|
+
? hexStringFromUint8Array(publicKeyBinary)
|
|
251
|
+
: toRawCompressedHexPublicKey(publicKeyBinary, keyType)
|
|
256
252
|
}
|
|
253
|
+
|
|
257
254
|
|
|
258
255
|
private asMusapKeyInfo(args: MusapKey): ManagedKeyInfo {
|
|
259
256
|
const { keyId, publicKey, ...metadata }: KeyMetadata = { ...args }
|