@parmanasystems/crypto 1.0.19
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/README.md +84 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.js +149 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# @parmanasystems/crypto
|
|
2
|
+
|
|
3
|
+
Ed25519 key management, signing, and verification primitives for the parmanasystems governance runtime.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@parmanasystems/crypto)
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
`@parmanasystems/crypto` provides the low-level cryptographic primitives used throughout parmanasystems:
|
|
10
|
+
|
|
11
|
+
- Loading Ed25519 keys from disk or environment variables
|
|
12
|
+
- Signing canonical payloads (returns base64)
|
|
13
|
+
- Verifying Ed25519 signatures
|
|
14
|
+
- Signing and verifying bundle manifests
|
|
15
|
+
|
|
16
|
+
All operations use Node.js's built-in `crypto` module — no external cryptographic dependencies.
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @parmanasystems/crypto
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## API
|
|
25
|
+
|
|
26
|
+
### Key loading
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { loadPrivateKey, loadPublicKey } from "@parmanasystems/crypto";
|
|
30
|
+
|
|
31
|
+
// Load from file (relative path or absolute)
|
|
32
|
+
const privateKey = loadPrivateKey(); // reads ./dev-keys/bundle_signing_key
|
|
33
|
+
const publicKey = loadPublicKey(); // reads ./dev-keys/bundle_signing_key.pub
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Signing
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
import { signManifest } from "@parmanasystems/crypto";
|
|
40
|
+
|
|
41
|
+
// Sign a bundle.manifest.json file
|
|
42
|
+
const signature = await signManifest("./policies/claims-approval/v1/bundle.manifest.json");
|
|
43
|
+
// Returns base64-encoded Ed25519 signature
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Verification
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import { verifySignature, verifyPayloadSignature } from "@parmanasystems/crypto";
|
|
50
|
+
|
|
51
|
+
// Verify a manifest signature
|
|
52
|
+
const ok = await verifySignature(manifestPath, signature);
|
|
53
|
+
|
|
54
|
+
// Verify an arbitrary payload
|
|
55
|
+
const ok = verifyPayloadSignature(payload, signature, publicKey);
|
|
56
|
+
// Returns boolean
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Key persistence
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { persistKeys } from "@parmanasystems/crypto";
|
|
63
|
+
|
|
64
|
+
await persistKeys(privateKey, publicKey, "./dev-keys");
|
|
65
|
+
// Writes bundle_signing_key and bundle_signing_key.pub
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Algorithm
|
|
69
|
+
|
|
70
|
+
All signatures use **Ed25519** via Node.js `crypto.sign` / `crypto.verify`.
|
|
71
|
+
|
|
72
|
+
- Private keys: PKCS8 DER format
|
|
73
|
+
- Public keys: SPKI DER format
|
|
74
|
+
- Signatures: base64-encoded
|
|
75
|
+
|
|
76
|
+
For AWS KMS HSM-backed signing, use `AwsKmsSigner` in `@parmanasystems/execution`.
|
|
77
|
+
|
|
78
|
+
## Dev key location
|
|
79
|
+
|
|
80
|
+
The default dev key path is `./dev-keys/bundle_signing_key{,.pub}` relative to the current working directory. The server and CI scripts fall back to environment variables `Parmana_PRIVATE_KEY` / `Parmana_PUBLIC_KEY` (base64 DER) if these files are absent.
|
|
81
|
+
|
|
82
|
+
## License
|
|
83
|
+
|
|
84
|
+
Apache-2.0
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads the root trust private key PEM.
|
|
3
|
+
*
|
|
4
|
+
* Production deployments should inject this
|
|
5
|
+
* via secure secret management.
|
|
6
|
+
*/
|
|
7
|
+
declare function loadPrivateKey(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Reads the root trust public key PEM.
|
|
10
|
+
*/
|
|
11
|
+
declare function loadPublicKey(): string;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Writes a base64 signature string to `<directory>/bundle.sig`.
|
|
15
|
+
* Overwrites any existing file at that path.
|
|
16
|
+
*/
|
|
17
|
+
declare function writeSignature(signature: string, directory: string): void;
|
|
18
|
+
/** Reads and returns the raw base64 signature from `<directory>/bundle.sig`. */
|
|
19
|
+
declare function readSignature(directory: string): string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Reads the manifest JSON at `manifestPath`, canonicalizes it, and returns a
|
|
23
|
+
* base64-encoded Ed25519 signature produced with the dev private key.
|
|
24
|
+
*
|
|
25
|
+
* @param manifestPath - Absolute or CWD-relative path to a `bundle.manifest.json` file.
|
|
26
|
+
* @returns Base64-encoded Ed25519 signature over the canonical manifest bytes.
|
|
27
|
+
*/
|
|
28
|
+
declare function signManifest(manifestPath: string): string;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Reads the manifest JSON at `manifestPath`, canonicalizes it, and verifies
|
|
32
|
+
* `signature` (base64 Ed25519) against the dev public key.
|
|
33
|
+
*
|
|
34
|
+
* @param manifestPath - Path to the `bundle.manifest.json` file.
|
|
35
|
+
* @param signature - Base64-encoded Ed25519 signature to verify.
|
|
36
|
+
*/
|
|
37
|
+
declare function verifySignature(manifestPath: string, signature: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Verifies a base64-encoded Ed25519 `signature` over an arbitrary UTF-8
|
|
40
|
+
* `payload` using the provided `publicKey` PEM. Unlike `verifySignature`,
|
|
41
|
+
* this function accepts any payload string rather than reading a manifest
|
|
42
|
+
* file from disk.
|
|
43
|
+
*
|
|
44
|
+
* @param payload - The original signed UTF-8 string.
|
|
45
|
+
* @param signature - Base64-encoded Ed25519 signature.
|
|
46
|
+
* @param publicKey - PEM-encoded Ed25519 public key.
|
|
47
|
+
*/
|
|
48
|
+
declare function verifyPayloadSignature(payload: string, signature: string, publicKey: string): boolean;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Verifies `signature` (base64 Ed25519) over the already-serialized canonical
|
|
52
|
+
* `manifest` string against the dev public key.
|
|
53
|
+
*
|
|
54
|
+
* Unlike `verifySignature`, this function accepts the manifest bytes directly
|
|
55
|
+
* rather than reading them from disk — suited for in-memory verification flows.
|
|
56
|
+
*
|
|
57
|
+
* @param manifest - Canonical manifest bytes (UTF-8 string).
|
|
58
|
+
* @param signature - Base64-encoded Ed25519 signature.
|
|
59
|
+
*/
|
|
60
|
+
declare function verifyManifestSignature(manifest: string, signature: string): boolean;
|
|
61
|
+
|
|
62
|
+
export { loadPrivateKey, loadPublicKey, readSignature, signManifest, verifyManifestSignature, verifyPayloadSignature, verifySignature, writeSignature };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// src/keys.ts
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
var PRIVATE_KEY_PATH = path.resolve(
|
|
5
|
+
"./trust/root.key"
|
|
6
|
+
);
|
|
7
|
+
var PUBLIC_KEY_PATH = path.resolve(
|
|
8
|
+
"./trust/root.pub"
|
|
9
|
+
);
|
|
10
|
+
function loadPrivateKey() {
|
|
11
|
+
return fs.readFileSync(
|
|
12
|
+
PRIVATE_KEY_PATH,
|
|
13
|
+
"utf8"
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
function loadPublicKey() {
|
|
17
|
+
return fs.readFileSync(
|
|
18
|
+
PUBLIC_KEY_PATH,
|
|
19
|
+
"utf8"
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/persist.ts
|
|
24
|
+
import fs2 from "fs";
|
|
25
|
+
import path2 from "path";
|
|
26
|
+
function writeSignature(signature, directory) {
|
|
27
|
+
const signaturePath = path2.join(
|
|
28
|
+
directory,
|
|
29
|
+
"bundle.sig"
|
|
30
|
+
);
|
|
31
|
+
fs2.writeFileSync(
|
|
32
|
+
signaturePath,
|
|
33
|
+
signature,
|
|
34
|
+
"utf8"
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
function readSignature(directory) {
|
|
38
|
+
const signaturePath = path2.join(
|
|
39
|
+
directory,
|
|
40
|
+
"bundle.sig"
|
|
41
|
+
);
|
|
42
|
+
return fs2.readFileSync(
|
|
43
|
+
signaturePath,
|
|
44
|
+
"utf8"
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/sign.ts
|
|
49
|
+
import fs3 from "fs";
|
|
50
|
+
import crypto from "crypto";
|
|
51
|
+
import {
|
|
52
|
+
canonicalize
|
|
53
|
+
} from "@parmanasystems/bundle";
|
|
54
|
+
function signManifest(manifestPath) {
|
|
55
|
+
const manifest = JSON.parse(
|
|
56
|
+
fs3.readFileSync(
|
|
57
|
+
manifestPath,
|
|
58
|
+
"utf8"
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
const canonical = canonicalize(
|
|
62
|
+
manifest
|
|
63
|
+
);
|
|
64
|
+
const privateKey = loadPrivateKey();
|
|
65
|
+
const signature = crypto.sign(
|
|
66
|
+
null,
|
|
67
|
+
Buffer.from(
|
|
68
|
+
canonical,
|
|
69
|
+
"utf8"
|
|
70
|
+
),
|
|
71
|
+
privateKey
|
|
72
|
+
);
|
|
73
|
+
return signature.toString(
|
|
74
|
+
"base64"
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// src/verify.ts
|
|
79
|
+
import fs4 from "fs";
|
|
80
|
+
import crypto2 from "crypto";
|
|
81
|
+
import {
|
|
82
|
+
canonicalize as canonicalize2
|
|
83
|
+
} from "@parmanasystems/bundle";
|
|
84
|
+
function verifySignature(manifestPath, signature) {
|
|
85
|
+
const manifest = JSON.parse(
|
|
86
|
+
fs4.readFileSync(
|
|
87
|
+
manifestPath,
|
|
88
|
+
"utf8"
|
|
89
|
+
)
|
|
90
|
+
);
|
|
91
|
+
const canonical = canonicalize2(
|
|
92
|
+
manifest
|
|
93
|
+
);
|
|
94
|
+
const publicKey = loadPublicKey();
|
|
95
|
+
return crypto2.verify(
|
|
96
|
+
null,
|
|
97
|
+
Buffer.from(
|
|
98
|
+
canonical,
|
|
99
|
+
"utf8"
|
|
100
|
+
),
|
|
101
|
+
publicKey,
|
|
102
|
+
Buffer.from(
|
|
103
|
+
signature,
|
|
104
|
+
"base64"
|
|
105
|
+
)
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
function verifyPayloadSignature(payload, signature, publicKey) {
|
|
109
|
+
return crypto2.verify(
|
|
110
|
+
null,
|
|
111
|
+
Buffer.from(
|
|
112
|
+
payload,
|
|
113
|
+
"utf8"
|
|
114
|
+
),
|
|
115
|
+
publicKey,
|
|
116
|
+
Buffer.from(
|
|
117
|
+
signature,
|
|
118
|
+
"base64"
|
|
119
|
+
)
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/verify-manifest-signature.ts
|
|
124
|
+
import crypto3 from "crypto";
|
|
125
|
+
function verifyManifestSignature(manifest, signature) {
|
|
126
|
+
const publicKey = loadPublicKey();
|
|
127
|
+
return crypto3.verify(
|
|
128
|
+
null,
|
|
129
|
+
Buffer.from(
|
|
130
|
+
manifest
|
|
131
|
+
),
|
|
132
|
+
publicKey,
|
|
133
|
+
Buffer.from(
|
|
134
|
+
signature,
|
|
135
|
+
"base64"
|
|
136
|
+
)
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
export {
|
|
140
|
+
loadPrivateKey,
|
|
141
|
+
loadPublicKey,
|
|
142
|
+
readSignature,
|
|
143
|
+
signManifest,
|
|
144
|
+
verifyManifestSignature,
|
|
145
|
+
verifyPayloadSignature,
|
|
146
|
+
verifySignature,
|
|
147
|
+
writeSignature
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/keys.ts","../src/persist.ts","../src/sign.ts","../src/verify.ts","../src/verify-manifest-signature.ts"],"sourcesContent":["import fs from \"fs\";\n\nimport path from \"path\";\n\nconst PRIVATE_KEY_PATH =\n path.resolve(\n \"./trust/root.key\"\n );\n\nconst PUBLIC_KEY_PATH =\n path.resolve(\n \"./trust/root.pub\"\n );\n\n/**\n * Reads the root trust private key PEM.\n *\n * Production deployments should inject this\n * via secure secret management.\n */\nexport function loadPrivateKey(): string {\n\n return fs.readFileSync(\n PRIVATE_KEY_PATH,\n \"utf8\"\n );\n}\n\n/**\n * Reads the root trust public key PEM.\n */\nexport function loadPublicKey(): string {\n\n return fs.readFileSync(\n PUBLIC_KEY_PATH,\n \"utf8\"\n );\n}","import fs from \"fs\";\nimport path from \"path\";\n\n/**\n * Writes a base64 signature string to `<directory>/bundle.sig`.\n * Overwrites any existing file at that path.\n */\nexport function writeSignature(\n signature: string,\n directory: string\n): void {\n const signaturePath = path.join(\n directory,\n \"bundle.sig\"\n );\n\n fs.writeFileSync(\n signaturePath,\n signature,\n \"utf8\"\n );\n}\n\n/** Reads and returns the raw base64 signature from `<directory>/bundle.sig`. */\nexport function readSignature(\n directory: string\n): string {\n const signaturePath = path.join(\n directory,\n \"bundle.sig\"\n );\n\n return fs.readFileSync(\n signaturePath,\n \"utf8\"\n );\n}\n\n\n\n\n","import fs from \"fs\";\n\nimport crypto from \"crypto\";\n\nimport {\n canonicalize,\n} from \"@parmanasystems/bundle\";\n\nimport {\n loadPrivateKey,\n} from \"./keys\";\n\n/**\n * Reads the manifest JSON at `manifestPath`, canonicalizes it, and returns a\n * base64-encoded Ed25519 signature produced with the dev private key.\n *\n * @param manifestPath - Absolute or CWD-relative path to a `bundle.manifest.json` file.\n * @returns Base64-encoded Ed25519 signature over the canonical manifest bytes.\n */\nexport function signManifest(\n manifestPath: string\n): string {\n\n const manifest =\n JSON.parse(\n fs.readFileSync(\n manifestPath,\n \"utf8\"\n )\n );\n\n const canonical =\n canonicalize(\n manifest\n );\n\n const privateKey =\n loadPrivateKey();\n\n const signature =\n crypto.sign(\n null,\n\n Buffer.from(\n canonical,\n \"utf8\"\n ),\n\n privateKey\n );\n\n return signature.toString(\n \"base64\"\n );\n}\n\n\n\n\n","import fs from \"fs\";\n\nimport crypto from \"crypto\";\n\nimport {\n canonicalize,\n} from \"@parmanasystems/bundle\";\n\nimport {\n loadPublicKey,\n} from \"./keys\";\n\n/**\n * Reads the manifest JSON at `manifestPath`, canonicalizes it, and verifies\n * `signature` (base64 Ed25519) against the dev public key.\n *\n * @param manifestPath - Path to the `bundle.manifest.json` file.\n * @param signature - Base64-encoded Ed25519 signature to verify.\n */\nexport function verifySignature(\n manifestPath: string,\n signature: string\n): boolean {\n\n const manifest =\n JSON.parse(\n fs.readFileSync(\n manifestPath,\n \"utf8\"\n )\n );\n\n const canonical =\n canonicalize(\n manifest\n );\n\n const publicKey =\n loadPublicKey();\n\n return crypto.verify(\n null,\n\n Buffer.from(\n canonical,\n \"utf8\"\n ),\n\n publicKey,\n\n Buffer.from(\n signature,\n \"base64\"\n )\n );\n}\n\n/**\n * Verifies a base64-encoded Ed25519 `signature` over an arbitrary UTF-8\n * `payload` using the provided `publicKey` PEM. Unlike `verifySignature`,\n * this function accepts any payload string rather than reading a manifest\n * file from disk.\n *\n * @param payload - The original signed UTF-8 string.\n * @param signature - Base64-encoded Ed25519 signature.\n * @param publicKey - PEM-encoded Ed25519 public key.\n */\nexport function verifyPayloadSignature(\n payload: string,\n signature: string,\n publicKey: string\n): boolean {\n\n return crypto.verify(\n null,\n\n Buffer.from(\n payload,\n \"utf8\"\n ),\n\n publicKey,\n\n Buffer.from(\n signature,\n \"base64\"\n )\n );\n}\n\n\n\n\n","import crypto from \"crypto\";\n\nimport {\n loadPublicKey,\n} from \"./keys\";\n\n/**\n * Verifies `signature` (base64 Ed25519) over the already-serialized canonical\n * `manifest` string against the dev public key.\n *\n * Unlike `verifySignature`, this function accepts the manifest bytes directly\n * rather than reading them from disk — suited for in-memory verification flows.\n *\n * @param manifest - Canonical manifest bytes (UTF-8 string).\n * @param signature - Base64-encoded Ed25519 signature.\n */\nexport function verifyManifestSignature(\n manifest: string,\n signature: string\n): boolean {\n\n const publicKey =\n loadPublicKey();\n\n return crypto.verify(\n null,\n\n Buffer.from(\n manifest\n ),\n\n publicKey,\n\n Buffer.from(\n signature,\n \"base64\"\n )\n );\n}\n\n\n\n\n"],"mappings":";AAAA,OAAO,QAAQ;AAEf,OAAO,UAAU;AAEjB,IAAM,mBACJ,KAAK;AAAA,EACH;AACF;AAEF,IAAM,kBACJ,KAAK;AAAA,EACH;AACF;AAQK,SAAS,iBAAyB;AAEvC,SAAO,GAAG;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACF;AAKO,SAAS,gBAAwB;AAEtC,SAAO,GAAG;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACF;;;ACrCA,OAAOA,SAAQ;AACf,OAAOC,WAAU;AAMV,SAAS,eACd,WACA,WACM;AACN,QAAM,gBAAgBA,MAAK;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAEA,EAAAD,IAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAGO,SAAS,cACd,WACQ;AACR,QAAM,gBAAgBC,MAAK;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAEA,SAAOD,IAAG;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACF;;;ACpCA,OAAOE,SAAQ;AAEf,OAAO,YAAY;AAEnB;AAAA,EACE;AAAA,OACK;AAaA,SAAS,aACd,cACQ;AAER,QAAM,WACJ,KAAK;AAAA,IACHC,IAAG;AAAA,MACD;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEF,QAAM,YACJ;AAAA,IACE;AAAA,EACF;AAEF,QAAM,aACJ,eAAe;AAEjB,QAAM,YACJ,OAAO;AAAA,IACL;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IAEA;AAAA,EACF;AAEF,SAAO,UAAU;AAAA,IACf;AAAA,EACF;AACF;;;ACtDA,OAAOC,SAAQ;AAEf,OAAOC,aAAY;AAEnB;AAAA,EACE,gBAAAC;AAAA,OACK;AAaA,SAAS,gBACd,cACA,WACS;AAET,QAAM,WACJ,KAAK;AAAA,IACHC,IAAG;AAAA,MACD;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEF,QAAM,YACJC;AAAA,IACE;AAAA,EACF;AAEF,QAAM,YACJ,cAAc;AAEhB,SAAOC,QAAO;AAAA,IACZ;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IAEA;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAYO,SAAS,uBACd,SACA,WACA,WACS;AAET,SAAOA,QAAO;AAAA,IACZ;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IAEA;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACxFA,OAAOC,aAAY;AAgBZ,SAAS,wBACd,UACA,WACS;AAET,QAAM,YACJ,cAAc;AAEhB,SAAOC,QAAO;AAAA,IACZ;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,IACF;AAAA,IAEA;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":["fs","path","fs","fs","fs","crypto","canonicalize","fs","canonicalize","crypto","crypto","crypto"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@parmanasystems/crypto",
|
|
3
|
+
"version": "1.0.19",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsup"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@parmanasystems/bundle": "^1.0.19"
|
|
22
|
+
},
|
|
23
|
+
"description": "Signing and verification primitives for deterministic governance infrastructure.",
|
|
24
|
+
"license": "Apache-2.0",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/pavancharak/parmanasystems-core.git"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/pavancharak/parmanasystems-core",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/pavancharak/parmanasystems-core/issues"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=20"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"crypto",
|
|
38
|
+
"signing",
|
|
39
|
+
"verification",
|
|
40
|
+
"ed25519",
|
|
41
|
+
"attestation",
|
|
42
|
+
"governance"
|
|
43
|
+
],
|
|
44
|
+
"main": "./dist/index.js",
|
|
45
|
+
"types": "./dist/index.d.ts"
|
|
46
|
+
}
|