@super-protocol/sdk-js 2.2.0-beta.0 → 2.2.0-beta.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.
|
@@ -14,5 +14,16 @@ export declare class CryptoKeysTransformer {
|
|
|
14
14
|
static getBufferFromTransformedPublicKey(publicKey: PublicKey): Buffer;
|
|
15
15
|
static parseDerSignature(derSignature: string): Signature;
|
|
16
16
|
static sign(keys: CryptoKeyType<CryptoAlgorithm.ECIES>, data: Buffer): SignedData;
|
|
17
|
+
static privateKeyObjToDer(key: KeyObject): Buffer;
|
|
18
|
+
static publicKeyObjToDer(key: KeyObject): Buffer;
|
|
19
|
+
static keyObjectsToDer({ privateKey, publicKey, }: {
|
|
20
|
+
privateKey: KeyObject;
|
|
21
|
+
publicKey: KeyObject;
|
|
22
|
+
}): {
|
|
23
|
+
privateKey: Buffer;
|
|
24
|
+
publicKey: Buffer;
|
|
25
|
+
};
|
|
26
|
+
static privateDerToKeyObj(key: Buffer): KeyObject;
|
|
27
|
+
static publicDerToKeyObj(key: Buffer): KeyObject;
|
|
17
28
|
}
|
|
18
29
|
export {};
|
|
@@ -7,6 +7,7 @@ exports.CryptoKeysTransformer = void 0;
|
|
|
7
7
|
const index_js_1 = __importDefault(require("../crypto/index.js"));
|
|
8
8
|
const helpers_js_1 = require("./../tee/helpers.js");
|
|
9
9
|
const ethers_1 = require("ethers");
|
|
10
|
+
const crypto_1 = require("crypto");
|
|
10
11
|
class CryptoKeysTransformer {
|
|
11
12
|
static getStructuredPrivateKeyFromKeyObj(privateKeyObj) {
|
|
12
13
|
const privateKeyJwk = privateKeyObj.export({ format: 'jwk' });
|
|
@@ -55,6 +56,32 @@ class CryptoKeysTransformer {
|
|
|
55
56
|
signature,
|
|
56
57
|
};
|
|
57
58
|
}
|
|
59
|
+
static privateKeyObjToDer(key) {
|
|
60
|
+
return key.export({ type: 'pkcs8', format: 'der' });
|
|
61
|
+
}
|
|
62
|
+
static publicKeyObjToDer(key) {
|
|
63
|
+
return key.export({ type: 'spki', format: 'der' });
|
|
64
|
+
}
|
|
65
|
+
static keyObjectsToDer({ privateKey, publicKey, }) {
|
|
66
|
+
return {
|
|
67
|
+
privateKey: CryptoKeysTransformer.privateKeyObjToDer(privateKey),
|
|
68
|
+
publicKey: CryptoKeysTransformer.publicKeyObjToDer(publicKey),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
static privateDerToKeyObj(key) {
|
|
72
|
+
return (0, crypto_1.createPrivateKey)({
|
|
73
|
+
key,
|
|
74
|
+
type: 'pkcs8',
|
|
75
|
+
format: 'der',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
static publicDerToKeyObj(key) {
|
|
79
|
+
return (0, crypto_1.createPublicKey)({
|
|
80
|
+
key,
|
|
81
|
+
type: 'spki',
|
|
82
|
+
format: 'der',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
58
85
|
}
|
|
59
86
|
exports.CryptoKeysTransformer = CryptoKeysTransformer;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvS2V5c1RyYW5zZm9ybWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL0NyeXB0b0tleXNUcmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrRUFBd0M7QUFHeEMsb0RBQTZEO0FBRTdELG1DQUFnQztBQUNoQyxtQ0FBc0U7QUFPdEUsTUFBYSxxQkFBcUI7SUFDaEMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLGFBQXdCO1FBQy9ELE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxZQUF1QjtRQUM3RCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTztZQUNMLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBSTtZQUN0QixHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUk7WUFDdEIsTUFBTSxFQUFFLGVBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUMzQixJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDakU7WUFDRCxNQUFNLEVBQUUsZUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQzNCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUNqRTtTQUNGLENBQUM7SUFD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
|
|
@@ -14,5 +14,16 @@ export declare class CryptoKeysTransformer {
|
|
|
14
14
|
static getBufferFromTransformedPublicKey(publicKey: PublicKey): Buffer;
|
|
15
15
|
static parseDerSignature(derSignature: string): Signature;
|
|
16
16
|
static sign(keys: CryptoKeyType<CryptoAlgorithm.ECIES>, data: Buffer): SignedData;
|
|
17
|
+
static privateKeyObjToDer(key: KeyObject): Buffer;
|
|
18
|
+
static publicKeyObjToDer(key: KeyObject): Buffer;
|
|
19
|
+
static keyObjectsToDer({ privateKey, publicKey, }: {
|
|
20
|
+
privateKey: KeyObject;
|
|
21
|
+
publicKey: KeyObject;
|
|
22
|
+
}): {
|
|
23
|
+
privateKey: Buffer;
|
|
24
|
+
publicKey: Buffer;
|
|
25
|
+
};
|
|
26
|
+
static privateDerToKeyObj(key: Buffer): KeyObject;
|
|
27
|
+
static publicDerToKeyObj(key: Buffer): KeyObject;
|
|
17
28
|
}
|
|
18
29
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Crypto from '../crypto/index.js';
|
|
2
2
|
import { Signature as SigHelper } from './../tee/helpers.js';
|
|
3
3
|
import { ethers } from 'ethers';
|
|
4
|
+
import { createPrivateKey, createPublicKey } from 'crypto';
|
|
4
5
|
export class CryptoKeysTransformer {
|
|
5
6
|
static getStructuredPrivateKeyFromKeyObj(privateKeyObj) {
|
|
6
7
|
const privateKeyJwk = privateKeyObj.export({ format: 'jwk' });
|
|
@@ -49,5 +50,31 @@ export class CryptoKeysTransformer {
|
|
|
49
50
|
signature,
|
|
50
51
|
};
|
|
51
52
|
}
|
|
53
|
+
static privateKeyObjToDer(key) {
|
|
54
|
+
return key.export({ type: 'pkcs8', format: 'der' });
|
|
55
|
+
}
|
|
56
|
+
static publicKeyObjToDer(key) {
|
|
57
|
+
return key.export({ type: 'spki', format: 'der' });
|
|
58
|
+
}
|
|
59
|
+
static keyObjectsToDer({ privateKey, publicKey, }) {
|
|
60
|
+
return {
|
|
61
|
+
privateKey: CryptoKeysTransformer.privateKeyObjToDer(privateKey),
|
|
62
|
+
publicKey: CryptoKeysTransformer.publicKeyObjToDer(publicKey),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
static privateDerToKeyObj(key) {
|
|
66
|
+
return createPrivateKey({
|
|
67
|
+
key,
|
|
68
|
+
type: 'pkcs8',
|
|
69
|
+
format: 'der',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static publicDerToKeyObj(key) {
|
|
73
|
+
return createPublicKey({
|
|
74
|
+
key,
|
|
75
|
+
type: 'spki',
|
|
76
|
+
format: 'der',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
52
79
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvS2V5c1RyYW5zZm9ybWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL0NyeXB0b0tleXNUcmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUd4QyxPQUFPLEVBQUUsU0FBUyxJQUFJLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFhLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQU90RSxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxhQUF3QjtRQUMvRCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxNQUFNLENBQUMsZ0NBQWdDLENBQUMsWUFBdUI7UUFDN0QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE9BQU87WUFDTCxHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUk7WUFDdEIsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFJO1lBQ3RCLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDM0IsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQ2pFO1lBQ0QsTUFBTSxFQUFFLE1BQU0sQ0FB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
|