chainproof 0.1.1 → 0.2.0
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/dist/crypto.d.ts +2 -2
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +56 -56
- package/dist/crypto.js.map +1 -1
- package/package.json +1 -1
package/dist/crypto.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export declare function generateKeyPair(): Result<KeyPair, ChainError>;
|
|
|
10
10
|
export declare function sha256(data: string): string;
|
|
11
11
|
export declare function sign(privateKey: crypto.KeyObject, data: string): Result<string, ChainError>;
|
|
12
12
|
export declare function verify(publicKey: crypto.KeyObject, data: string, signature: string): Result<boolean, ChainError>;
|
|
13
|
-
export declare function exportPrivateKey(key: crypto.KeyObject): string
|
|
14
|
-
export declare function exportPublicKey(key: crypto.KeyObject): string
|
|
13
|
+
export declare function exportPrivateKey(key: crypto.KeyObject): Result<string, ChainError>;
|
|
14
|
+
export declare function exportPublicKey(key: crypto.KeyObject): Result<string, ChainError>;
|
|
15
15
|
export declare function importPrivateKey(pem: string): Result<crypto.KeyObject, ChainError>;
|
|
16
16
|
export declare function importPublicKey(pem: string): Result<crypto.KeyObject, ChainError>;
|
|
17
17
|
export declare function saveKeyPair(keyPair: KeyPair, dir: string): ResultAsync<void, ChainError>;
|
package/dist/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,EAA0B,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAA;CACrC;AAyDD,wBAAgB,eAAe,IAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAE9D;AAED,wBAAgB,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,IAAI,CAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAE5F;AAED,wBAAgB,MAAM,CACpB,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAE7B;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAEnF;AAED,wBAAgB,eAAe,CAAE,GAAG,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAElF;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAOnF;AAED,wBAAgB,eAAe,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAOlF;AAED,wBAAgB,WAAW,CAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAkBzF;AAED,wBAAgB,WAAW,CAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAiB1E"}
|
package/dist/crypto.js
CHANGED
|
@@ -1,81 +1,81 @@
|
|
|
1
1
|
import crypto from 'node:crypto';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
|
-
import { ok, err, ResultAsync } from '@valencets/resultkit';
|
|
3
|
+
import { ok, err, fromThrowable, ResultAsync } from '@valencets/resultkit';
|
|
4
|
+
const safeGenerateKeyPair = fromThrowable(() => crypto.generateKeyPairSync('ed25519'), (e) => ({
|
|
5
|
+
code: 'INVALID_KEY',
|
|
6
|
+
message: e instanceof Error ? e.message : 'Key generation failed'
|
|
7
|
+
}));
|
|
8
|
+
const safeSign = fromThrowable((privateKey, data) => {
|
|
9
|
+
const signature = crypto.sign(null, Buffer.from(data, 'utf-8'), privateKey);
|
|
10
|
+
return signature.toString('base64');
|
|
11
|
+
}, (e) => ({
|
|
12
|
+
code: 'SIGN_FAILED',
|
|
13
|
+
message: e instanceof Error ? e.message : 'Signing failed'
|
|
14
|
+
}));
|
|
15
|
+
const safeVerify = fromThrowable((publicKey, data, signature) => {
|
|
16
|
+
const sigBuffer = Buffer.from(signature, 'base64');
|
|
17
|
+
return crypto.verify(null, Buffer.from(data, 'utf-8'), publicKey, sigBuffer);
|
|
18
|
+
}, (e) => ({
|
|
19
|
+
code: 'VERIFY_FAILED',
|
|
20
|
+
message: e instanceof Error ? e.message : 'Verification failed'
|
|
21
|
+
}));
|
|
22
|
+
const safeCreatePrivateKey = fromThrowable((pem) => crypto.createPrivateKey(pem), (e) => ({
|
|
23
|
+
code: 'INVALID_KEY',
|
|
24
|
+
message: e instanceof Error ? e.message : 'Invalid private key PEM'
|
|
25
|
+
}));
|
|
26
|
+
const safeCreatePublicKey = fromThrowable((pem) => crypto.createPublicKey(pem), (e) => ({
|
|
27
|
+
code: 'INVALID_KEY',
|
|
28
|
+
message: e instanceof Error ? e.message : 'Invalid public key PEM'
|
|
29
|
+
}));
|
|
30
|
+
const safeExportKey = fromThrowable((key, type, format) => String(key.export({ type, format })), (e) => ({
|
|
31
|
+
code: 'INVALID_KEY',
|
|
32
|
+
message: e instanceof Error ? e.message : 'Key export failed'
|
|
33
|
+
}));
|
|
4
34
|
export function generateKeyPair() {
|
|
5
|
-
|
|
6
|
-
const { privateKey, publicKey } = crypto.generateKeyPairSync('ed25519');
|
|
7
|
-
return ok({ privateKey, publicKey });
|
|
8
|
-
}
|
|
9
|
-
catch (e) {
|
|
10
|
-
return err({
|
|
11
|
-
code: 'INVALID_KEY',
|
|
12
|
-
message: e instanceof Error ? e.message : 'Key generation failed'
|
|
13
|
-
});
|
|
14
|
-
}
|
|
35
|
+
return safeGenerateKeyPair().map(({ privateKey, publicKey }) => ({ privateKey, publicKey }));
|
|
15
36
|
}
|
|
16
37
|
export function sha256(data) {
|
|
17
38
|
return crypto.createHash('sha256').update(data, 'utf-8').digest('hex');
|
|
18
39
|
}
|
|
19
40
|
export function sign(privateKey, data) {
|
|
20
|
-
|
|
21
|
-
const signature = crypto.sign(null, Buffer.from(data, 'utf-8'), privateKey);
|
|
22
|
-
return ok(signature.toString('base64'));
|
|
23
|
-
}
|
|
24
|
-
catch (e) {
|
|
25
|
-
return err({
|
|
26
|
-
code: 'SIGN_FAILED',
|
|
27
|
-
message: e instanceof Error ? e.message : 'Signing failed'
|
|
28
|
-
});
|
|
29
|
-
}
|
|
41
|
+
return safeSign(privateKey, data);
|
|
30
42
|
}
|
|
31
43
|
export function verify(publicKey, data, signature) {
|
|
32
|
-
|
|
33
|
-
const sigBuffer = Buffer.from(signature, 'base64');
|
|
34
|
-
const valid = crypto.verify(null, Buffer.from(data, 'utf-8'), publicKey, sigBuffer);
|
|
35
|
-
return ok(valid);
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
return err({
|
|
39
|
-
code: 'VERIFY_FAILED',
|
|
40
|
-
message: e instanceof Error ? e.message : 'Verification failed'
|
|
41
|
-
});
|
|
42
|
-
}
|
|
44
|
+
return safeVerify(publicKey, data, signature);
|
|
43
45
|
}
|
|
44
46
|
export function exportPrivateKey(key) {
|
|
45
|
-
return key
|
|
47
|
+
return safeExportKey(key, 'pkcs8', 'pem');
|
|
46
48
|
}
|
|
47
49
|
export function exportPublicKey(key) {
|
|
48
|
-
return key
|
|
50
|
+
return safeExportKey(key, 'spki', 'pem');
|
|
49
51
|
}
|
|
50
52
|
export function importPrivateKey(pem) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return
|
|
56
|
-
|
|
57
|
-
message: e instanceof Error ? e.message : 'Invalid private key PEM'
|
|
58
|
-
});
|
|
59
|
-
}
|
|
53
|
+
return safeCreatePrivateKey(pem).andThen((key) => {
|
|
54
|
+
if (key.asymmetricKeyType !== 'ed25519') {
|
|
55
|
+
return err({ code: 'INVALID_KEY', message: `Expected Ed25519 key, got ${key.asymmetricKeyType}` });
|
|
56
|
+
}
|
|
57
|
+
return ok(key);
|
|
58
|
+
});
|
|
60
59
|
}
|
|
61
60
|
export function importPublicKey(pem) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
message: e instanceof Error ? e.message : 'Invalid public key PEM'
|
|
69
|
-
});
|
|
70
|
-
}
|
|
61
|
+
return safeCreatePublicKey(pem).andThen((key) => {
|
|
62
|
+
if (key.asymmetricKeyType !== 'ed25519') {
|
|
63
|
+
return err({ code: 'INVALID_KEY', message: `Expected Ed25519 key, got ${key.asymmetricKeyType}` });
|
|
64
|
+
}
|
|
65
|
+
return ok(key);
|
|
66
|
+
});
|
|
71
67
|
}
|
|
72
68
|
export function saveKeyPair(keyPair, dir) {
|
|
73
|
-
const
|
|
74
|
-
|
|
69
|
+
const privateResult = exportPrivateKey(keyPair.privateKey);
|
|
70
|
+
if (privateResult.isErr())
|
|
71
|
+
return privateResult.toAsync().map(() => undefined);
|
|
72
|
+
const publicResult = exportPublicKey(keyPair.publicKey);
|
|
73
|
+
if (publicResult.isErr())
|
|
74
|
+
return publicResult.toAsync().map(() => undefined);
|
|
75
75
|
return ResultAsync.fromPromise(fs.mkdir(dir, { recursive: true })
|
|
76
76
|
.then(() => Promise.all([
|
|
77
|
-
fs.writeFile(`${dir}/chain.key`,
|
|
78
|
-
fs.writeFile(`${dir}/chain.pub`,
|
|
77
|
+
fs.writeFile(`${dir}/chain.key`, privateResult.value, { mode: 0o600 }),
|
|
78
|
+
fs.writeFile(`${dir}/chain.pub`, publicResult.value, { mode: 0o644 })
|
|
79
79
|
]))
|
|
80
80
|
.then(() => undefined), (e) => ({
|
|
81
81
|
code: 'IO_FAILED',
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED