reputrans 0.1.2 → 0.1.4
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/circuits/composite/target/composite.json +1 -1
- package/dist/cli/src/auto-detect.d.ts +1 -0
- package/dist/cli/src/auto-detect.d.ts.map +1 -1
- package/dist/cli/src/auto-detect.js +3 -0
- package/dist/cli/src/auto-detect.js.map +1 -1
- package/dist/cli/src/commands/inspect.d.ts.map +1 -1
- package/dist/cli/src/commands/inspect.js +2 -1
- package/dist/cli/src/commands/inspect.js.map +1 -1
- package/dist/cli/src/commands/issue.d.ts.map +1 -1
- package/dist/cli/src/commands/issue.js +75 -28
- package/dist/cli/src/commands/issue.js.map +1 -1
- package/dist/cli/src/commands/keygen.d.ts.map +1 -1
- package/dist/cli/src/commands/keygen.js +30 -6
- package/dist/cli/src/commands/keygen.js.map +1 -1
- package/dist/cli/src/commands/prove.d.ts +3 -1
- package/dist/cli/src/commands/prove.d.ts.map +1 -1
- package/dist/cli/src/commands/prove.js +44 -11
- package/dist/cli/src/commands/prove.js.map +1 -1
- package/dist/cli/src/commands/verify.d.ts.map +1 -1
- package/dist/cli/src/commands/verify.js +229 -22
- package/dist/cli/src/commands/verify.js.map +1 -1
- package/dist/cli/src/index.js +3 -1
- package/dist/cli/src/index.js.map +1 -1
- package/dist/cli/src/keystore.d.ts +10 -0
- package/dist/cli/src/keystore.d.ts.map +1 -0
- package/dist/cli/src/keystore.js +70 -0
- package/dist/cli/src/keystore.js.map +1 -0
- package/dist/sdk/src/encoder.d.ts +12 -2
- package/dist/sdk/src/encoder.d.ts.map +1 -1
- package/dist/sdk/src/encoder.js +19 -20
- package/dist/sdk/src/encoder.js.map +1 -1
- package/dist/sdk/src/index.d.ts +1 -1
- package/dist/sdk/src/index.d.ts.map +1 -1
- package/dist/sdk/src/index.js +1 -1
- package/dist/sdk/src/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,5 +5,6 @@
|
|
|
5
5
|
export declare function findFile(pattern: RegExp, dir?: string): Promise<string | null>;
|
|
6
6
|
export declare function findKeyFile(dir?: string): Promise<string | null>;
|
|
7
7
|
export declare function findCredentialFile(dir?: string): Promise<string | null>;
|
|
8
|
+
export declare function findWalletFile(dir?: string): Promise<string | null>;
|
|
8
9
|
export declare function findProofFile(dir?: string): Promise<string | null>;
|
|
9
10
|
//# sourceMappingURL=auto-detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../../cli/src/auto-detect.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIjF;AAED,wBAAsB,WAAW,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1E;AAED,wBAAsB,aAAa,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAErE"}
|
|
1
|
+
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../../cli/src/auto-detect.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIjF;AAED,wBAAsB,WAAW,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1E;AAED,wBAAsB,cAAc,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEtE;AAED,wBAAsB,aAAa,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAErE"}
|
|
@@ -15,6 +15,9 @@ export async function findKeyFile(dir = '.') {
|
|
|
15
15
|
export async function findCredentialFile(dir = '.') {
|
|
16
16
|
return findFile(/^credential-.*\.json$/, dir);
|
|
17
17
|
}
|
|
18
|
+
export async function findWalletFile(dir = '.') {
|
|
19
|
+
return findFile(/^wallet-.*\.json$/, dir);
|
|
20
|
+
}
|
|
18
21
|
export async function findProofFile(dir = '.') {
|
|
19
22
|
return findFile(/^proof-.*\.json$/, dir);
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-detect.js","sourceRoot":"","sources":["../../../cli/src/auto-detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAG,GAAG,GAAG;IACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAG,GAAG,GAAG;IACzC,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAG,GAAG,GAAG;IAChD,OAAO,QAAQ,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAG,GAAG,GAAG;IAC3C,OAAO,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC"}
|
|
1
|
+
{"version":3,"file":"auto-detect.js","sourceRoot":"","sources":["../../../cli/src/auto-detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAG,GAAG,GAAG;IACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAG,GAAG,GAAG;IACzC,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAG,GAAG,GAAG;IAChD,OAAO,QAAQ,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAG,GAAG,GAAG;IAC5C,OAAO,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAG,GAAG,GAAG;IAC3C,OAAO,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/inspect.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/inspect.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CjE"}
|
|
@@ -17,7 +17,8 @@ export async function inspect(opts) {
|
|
|
17
17
|
console.log(`\nREPUTRANS Credential (v${cred.version})`);
|
|
18
18
|
console.log(` Issuer: ${cred.issuer.name || 'unknown'}`);
|
|
19
19
|
console.log(` Issued: ${cred.issuedAt || 'unknown'}`);
|
|
20
|
-
|
|
20
|
+
const root = cred.merkleRoot || cred.merkle?.root || 'unknown';
|
|
21
|
+
console.log(` Merkle root: ${root.slice(0, 20)}...`);
|
|
21
22
|
console.log();
|
|
22
23
|
console.log('Fields:');
|
|
23
24
|
const claims = cred.claims;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../../cli/src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAMvD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAoB;IAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;IACvD,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../../cli/src/commands/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/issue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/issue.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AASD,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmJ7D"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { readFile, writeFile } from 'fs/promises';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
+
import { randomBytes } from 'crypto';
|
|
3
4
|
import { sign } from '../../../sdk/src/eddsa.js';
|
|
4
5
|
import { encodeCredential } from '../../../sdk/src/encoder.js';
|
|
5
6
|
import { findKeyFile } from '../auto-detect.js';
|
|
7
|
+
import { decryptPrivateKey, promptPassword } from '../keystore.js';
|
|
6
8
|
const EXAMPLE_CLAIMS = {
|
|
7
9
|
name: 'Alice',
|
|
8
10
|
field_of_study: 'Computer Science',
|
|
@@ -24,7 +26,23 @@ export async function issue(opts) {
|
|
|
24
26
|
// Load issuer key
|
|
25
27
|
const keyRaw = await readFile(resolve(keyPath), 'utf-8');
|
|
26
28
|
const keyData = JSON.parse(keyRaw);
|
|
27
|
-
|
|
29
|
+
let privateKey;
|
|
30
|
+
if (keyData.encrypted) {
|
|
31
|
+
// v2 encrypted key file
|
|
32
|
+
const password = await promptPassword('Enter key password: ');
|
|
33
|
+
try {
|
|
34
|
+
privateKey = BigInt(decryptPrivateKey(keyData.encrypted, password));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
console.error('Decryption failed - wrong password or corrupted key file.');
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// v1 plaintext key file (legacy)
|
|
43
|
+
process.stderr.write('WARNING: This key file stores the private key in plaintext. Re-run keygen to encrypt it.\n');
|
|
44
|
+
privateKey = BigInt(keyData.privateKey);
|
|
45
|
+
}
|
|
28
46
|
// Parse claims - inline JSON, file path, or use example
|
|
29
47
|
let claims;
|
|
30
48
|
if (!opts.claims) {
|
|
@@ -38,22 +56,19 @@ export async function issue(opts) {
|
|
|
38
56
|
claims = JSON.parse(opts.claims);
|
|
39
57
|
}
|
|
40
58
|
catch {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
catch {
|
|
47
|
-
console.error('Invalid JSON in --claims. Use a file instead:');
|
|
48
|
-
console.error(' echo \'{"role":"engineer"}\' > claims.json');
|
|
49
|
-
console.error(' reputrans issue --claims claims.json');
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
59
|
+
console.error('Invalid JSON in --claims. Use a file instead:');
|
|
60
|
+
console.error(' echo \'{"role":"engineer"}\' > claims.json');
|
|
61
|
+
console.error(' reputrans issue --claims claims.json');
|
|
62
|
+
console.error('\nPowerShell tip: use --claims \'{\\"role\\":\\"engineer\\"}\'');
|
|
63
|
+
process.exit(1);
|
|
52
64
|
}
|
|
53
65
|
}
|
|
54
66
|
else {
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
let claimsRaw = await readFile(resolve(opts.claims), 'utf-8');
|
|
68
|
+
// Strip BOM that PowerShell's Out-File adds
|
|
69
|
+
if (claimsRaw.charCodeAt(0) === 0xFEFF)
|
|
70
|
+
claimsRaw = claimsRaw.slice(1);
|
|
71
|
+
claims = JSON.parse(claimsRaw.trim());
|
|
57
72
|
}
|
|
58
73
|
// Ensure all values are strings
|
|
59
74
|
for (const [k, v] of Object.entries(claims)) {
|
|
@@ -65,6 +80,9 @@ export async function issue(opts) {
|
|
|
65
80
|
const encoded = encodeCredential(claims);
|
|
66
81
|
// Sign the Merkle root
|
|
67
82
|
const { signature, publicKey } = sign(privateKey, encoded.merkleRoot);
|
|
83
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
84
|
+
const issuedAt = new Date().toISOString();
|
|
85
|
+
// Credential file - shareable with verifiers (no witness data)
|
|
68
86
|
const credential = {
|
|
69
87
|
version: '1.0',
|
|
70
88
|
issuer: {
|
|
@@ -75,15 +93,7 @@ export async function issue(opts) {
|
|
|
75
93
|
},
|
|
76
94
|
},
|
|
77
95
|
claims,
|
|
78
|
-
|
|
79
|
-
root: encoded.merkleRoot.toString(),
|
|
80
|
-
fieldNames: encoded.fieldNames,
|
|
81
|
-
fieldValues: encoded.fieldValues.map(String),
|
|
82
|
-
paths: encoded.merklePaths.map((p) => ({
|
|
83
|
-
siblings: p.siblings.map(String),
|
|
84
|
-
indices: p.indices,
|
|
85
|
-
})),
|
|
86
|
-
},
|
|
96
|
+
merkleRoot: encoded.merkleRoot.toString(),
|
|
87
97
|
signature: {
|
|
88
98
|
r8: {
|
|
89
99
|
x: signature.r8.x.toString(),
|
|
@@ -91,17 +101,54 @@ export async function issue(opts) {
|
|
|
91
101
|
},
|
|
92
102
|
s: signature.s.toString(),
|
|
93
103
|
},
|
|
94
|
-
issuedAt
|
|
104
|
+
issuedAt,
|
|
95
105
|
};
|
|
96
|
-
const
|
|
97
|
-
const outPath = opts.out
|
|
106
|
+
const credPath = opts.out
|
|
98
107
|
? resolve(opts.out)
|
|
99
108
|
: resolve(`credential-${timestamp}.json`);
|
|
100
|
-
|
|
109
|
+
// Generate holder secret - cryptographically random, stored only in wallet
|
|
110
|
+
const holderSecret = BigInt('0x' + randomBytes(32).toString('hex').slice(0, 62)).toString();
|
|
111
|
+
// Wallet file - private, never shared (contains full witness for proving)
|
|
112
|
+
const wallet = {
|
|
113
|
+
version: '2.0',
|
|
114
|
+
holderSecret,
|
|
115
|
+
credentialFile: credPath.replace(/\\/g, '/').split('/').pop(),
|
|
116
|
+
issuer: {
|
|
117
|
+
name: keyData.name,
|
|
118
|
+
publicKey: {
|
|
119
|
+
x: publicKey.x.toString(),
|
|
120
|
+
y: publicKey.y.toString(),
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
claims,
|
|
124
|
+
signature: {
|
|
125
|
+
r8: {
|
|
126
|
+
x: signature.r8.x.toString(),
|
|
127
|
+
y: signature.r8.y.toString(),
|
|
128
|
+
},
|
|
129
|
+
s: signature.s.toString(),
|
|
130
|
+
},
|
|
131
|
+
merkle: {
|
|
132
|
+
root: encoded.merkleRoot.toString(),
|
|
133
|
+
fieldNames: encoded.fieldNames,
|
|
134
|
+
fieldValues: encoded.fieldValues.map(String),
|
|
135
|
+
paths: encoded.merklePaths.map((p) => ({
|
|
136
|
+
siblings: p.siblings.map(String),
|
|
137
|
+
indices: p.indices,
|
|
138
|
+
})),
|
|
139
|
+
},
|
|
140
|
+
issuedAt,
|
|
141
|
+
};
|
|
142
|
+
const walletPath = resolve(`wallet-${timestamp}.json`);
|
|
143
|
+
await writeFile(credPath, JSON.stringify(credential, null, 2));
|
|
144
|
+
await writeFile(walletPath, JSON.stringify(wallet, null, 2), { mode: 0o600 });
|
|
101
145
|
const fieldNames = Object.keys(claims).sort();
|
|
102
146
|
console.log(`Credential issued by "${keyData.name}"`);
|
|
103
147
|
console.log(` Fields: ${fieldNames.join(', ')}`);
|
|
104
|
-
console.log(`
|
|
148
|
+
console.log(` Credential (shareable): ${credPath}`);
|
|
149
|
+
console.log(` Wallet (private): ${walletPath}`);
|
|
150
|
+
console.log(`\nThe credential file is safe to share - it contains no witness data.`);
|
|
151
|
+
console.log(`The wallet file is private - it contains everything needed to generate proofs.`);
|
|
105
152
|
console.log(`\nNext: reputrans inspect`);
|
|
106
153
|
}
|
|
107
154
|
//# sourceMappingURL=issue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../../cli/src/commands/issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../../cli/src/commands/issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAqB,MAAM,gBAAgB,CAAC;AAQtF,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,OAAO;IACb,cAAc,EAAE,kBAAkB;IAClC,eAAe,EAAE,MAAM;IACvB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAkB;IAC5C,uBAAuB;IACvB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,KAAK,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnC,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAyB,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,iCAAiC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QACnH,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,wDAAwD;IACxD,IAAI,MAA8B,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,GAAG,cAAc,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC/D,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,4CAA4C;QAC5C,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,gCAAgC;IAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzC,uBAAuB;IACvB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE1C,+DAA+D;IAC/D,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE;gBACT,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACzB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC1B;SACF;QACD,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;QACzC,SAAS,EAAE;YACT,EAAE,EAAE;gBACF,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC5B,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7B;YACD,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1B;QACD,QAAQ;KACT,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG;QACvB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,cAAc,SAAS,OAAO,CAAC,CAAC;IAE5C,2EAA2E;IAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5F,0EAA0E;IAC1E,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,KAAK;QACd,YAAY;QACZ,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QAC7D,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE;gBACT,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACzB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC1B;SACF;QACD,MAAM;QACN,SAAS,EAAE;YACT,EAAE,EAAE;gBACF,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC5B,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7B;YACD,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1B;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBAChC,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;SACJ;QACD,QAAQ;KACT,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,SAAS,OAAO,CAAC,CAAC;IAEvD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keygen.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/keygen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keygen.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/keygen.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAiBD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C/D"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { writeFile, chmod } from 'fs/promises';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
+
import { execFileSync } from 'child_process';
|
|
3
4
|
import { getPublicKey } from '../../../sdk/src/eddsa.js';
|
|
4
5
|
import { BN254_FIELD_ORDER } from '../../../sdk/src/poseidon.js';
|
|
6
|
+
import { encryptPrivateKey, promptPassword } from '../keystore.js';
|
|
7
|
+
function restrictPermissions(filePath) {
|
|
8
|
+
if (process.platform === 'win32') {
|
|
9
|
+
try {
|
|
10
|
+
// Remove inherited permissions, grant full control only to current user
|
|
11
|
+
execFileSync('icacls', [filePath, '/inheritance:r', '/grant:r', `${process.env.USERNAME || 'CURRENT_USER'}:(R,W)`]);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
process.stderr.write(`WARNING: Could not restrict permissions on ${filePath}. Run manually:\n icacls "${filePath}" /inheritance:r /grant:r "%USERNAME%:(R,W)"\n`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
chmod(filePath, 0o600).catch(() => {
|
|
19
|
+
process.stderr.write(`WARNING: Could not set file permissions on ${filePath}\n`);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
5
23
|
export async function keygen(opts) {
|
|
6
24
|
const name = opts.name || 'issuer';
|
|
7
25
|
// Generate a random BN254 field element as private key
|
|
@@ -13,27 +31,33 @@ export async function keygen(opts) {
|
|
|
13
31
|
privateKey = privateKey % BN254_FIELD_ORDER;
|
|
14
32
|
// Derive public key
|
|
15
33
|
const publicKey = getPublicKey(privateKey);
|
|
34
|
+
// Prompt for encryption password
|
|
35
|
+
const password = await promptPassword('Enter password to encrypt key: ');
|
|
36
|
+
const passwordConfirm = await promptPassword('Confirm password: ');
|
|
37
|
+
if (password !== passwordConfirm) {
|
|
38
|
+
console.error('Passwords do not match.');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const encrypted = encryptPrivateKey(privateKey.toString(), password);
|
|
16
42
|
const keyData = {
|
|
17
|
-
version: '
|
|
43
|
+
version: '2.0',
|
|
18
44
|
name,
|
|
19
|
-
privateKey: privateKey.toString(),
|
|
20
45
|
publicKey: {
|
|
21
46
|
x: publicKey.x.toString(),
|
|
22
47
|
y: publicKey.y.toString(),
|
|
23
48
|
},
|
|
49
|
+
encrypted,
|
|
24
50
|
createdAt: new Date().toISOString(),
|
|
25
51
|
};
|
|
26
52
|
const filename = `${name.toLowerCase().replace(/[^a-z0-9]/g, '-')}-key.json`;
|
|
27
53
|
const outPath = opts.out ? resolve(opts.out) : resolve(filename);
|
|
28
54
|
await writeFile(outPath, JSON.stringify(keyData, null, 2));
|
|
29
|
-
|
|
30
|
-
if (process.platform !== 'win32') {
|
|
31
|
-
await chmod(outPath, 0o600);
|
|
32
|
-
}
|
|
55
|
+
restrictPermissions(outPath);
|
|
33
56
|
console.log(`Keypair generated for "${name}"`);
|
|
34
57
|
console.log(` Saved to: ${outPath}`);
|
|
35
58
|
console.log(` Public key X: ${publicKey.x.toString().slice(0, 20)}...`);
|
|
36
59
|
console.log(` Public key Y: ${publicKey.y.toString().slice(0, 20)}...`);
|
|
60
|
+
console.log(` Private key: encrypted with AES-256-GCM`);
|
|
37
61
|
console.log(`\nNext: reputrans issue --claims '{"field":"value"}'`);
|
|
38
62
|
}
|
|
39
63
|
//# sourceMappingURL=keygen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keygen.js","sourceRoot":"","sources":["../../../../cli/src/commands/keygen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"keygen.js","sourceRoot":"","sources":["../../../../cli/src/commands/keygen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prove.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/prove.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prove.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/prove.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqM7D"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { readFile, writeFile } from 'fs/promises';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
+
import { randomBytes } from 'crypto';
|
|
3
4
|
import { loadCircuit } from '../../../sdk/src/circuit-loader.js';
|
|
4
|
-
import {
|
|
5
|
+
import { findWalletFile } from '../auto-detect.js';
|
|
5
6
|
export async function prove(opts) {
|
|
6
|
-
// Auto-detect
|
|
7
|
-
let
|
|
8
|
-
if (!
|
|
9
|
-
const found = await
|
|
7
|
+
// Auto-detect wallet file
|
|
8
|
+
let walletPath = opts.wallet;
|
|
9
|
+
if (!walletPath) {
|
|
10
|
+
const found = await findWalletFile();
|
|
10
11
|
if (!found) {
|
|
11
|
-
console.error('No
|
|
12
|
+
console.error('No wallet file found. Run "reputrans issue" first.');
|
|
12
13
|
process.exit(1);
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
console.log(`Using
|
|
15
|
+
walletPath = found;
|
|
16
|
+
console.log(`Using wallet: ${walletPath}`);
|
|
16
17
|
}
|
|
17
18
|
if (!opts.disclose && !opts.range) {
|
|
18
19
|
console.error('Specify what to prove:');
|
|
@@ -21,8 +22,8 @@ export async function prove(opts) {
|
|
|
21
22
|
console.error('\nRun "reputrans inspect" to see available fields.');
|
|
22
23
|
process.exit(1);
|
|
23
24
|
}
|
|
24
|
-
// Load
|
|
25
|
-
const raw = await readFile(resolve(
|
|
25
|
+
// Load wallet (contains full witness data for proving)
|
|
26
|
+
const raw = await readFile(resolve(walletPath), 'utf-8');
|
|
26
27
|
const cred = JSON.parse(raw);
|
|
27
28
|
// Parse disclose field
|
|
28
29
|
const disclosedFieldName = opts.disclose || '';
|
|
@@ -46,6 +47,10 @@ export async function prove(opts) {
|
|
|
46
47
|
rangeFieldName = parts[0];
|
|
47
48
|
const operator = parts[1];
|
|
48
49
|
rangeThreshold = parts[2];
|
|
50
|
+
if (!/^\d+$/.test(rangeThreshold)) {
|
|
51
|
+
console.error('Range threshold must be a non-negative integer.');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
49
54
|
rangeIdx = cred.merkle.fieldNames.indexOf(rangeFieldName);
|
|
50
55
|
if (rangeIdx < 0) {
|
|
51
56
|
const available = cred.merkle.fieldNames.filter((n) => n !== '');
|
|
@@ -63,6 +68,22 @@ export async function prove(opts) {
|
|
|
63
68
|
const { BarretenbergBackend } = await import('@noir-lang/backend_barretenberg');
|
|
64
69
|
const backend = new BarretenbergBackend(circuit);
|
|
65
70
|
const noir = new Noir(circuit);
|
|
71
|
+
// Generate nonce: use provided nonce (from verifier challenge) or generate random
|
|
72
|
+
const nonce = opts.nonce || BigInt('0x' + randomBytes(32).toString('hex').slice(0, 62)).toString();
|
|
73
|
+
// Expiry: use provided or default to 1 hour from now (Unix seconds)
|
|
74
|
+
const expiry = opts.expiry || Math.floor(Date.now() / 1000 + 3600).toString();
|
|
75
|
+
// Holder secret: must be stored in wallet (generated at issue time).
|
|
76
|
+
// NEVER derived from public credential data - that would be computable by anyone.
|
|
77
|
+
if (!cred.holderSecret) {
|
|
78
|
+
console.error('Wallet file missing holderSecret. Re-issue the credential to generate one.');
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
const holderSecret = cred.holderSecret;
|
|
82
|
+
// Compute holder commitment: Poseidon(secret, nonce)
|
|
83
|
+
// Using nonce as blinding factor ensures each proof has a unique commitment,
|
|
84
|
+
// preserving unlinkability across multiple presentations.
|
|
85
|
+
const { poseidonHash } = await import('../../../sdk/src/poseidon.js');
|
|
86
|
+
const holderCommitment = poseidonHash(BigInt(holderSecret), BigInt(nonce)).toString();
|
|
66
87
|
// Build circuit inputs from credential data
|
|
67
88
|
const inputs = {
|
|
68
89
|
// Signature verification
|
|
@@ -90,6 +111,12 @@ export async function prove(opts) {
|
|
|
90
111
|
: cred.merkle.paths[15].indices.map(String),
|
|
91
112
|
range_threshold: rangeThreshold,
|
|
92
113
|
range_comparison_type: rangeComparisonType,
|
|
114
|
+
// Replay protection
|
|
115
|
+
nonce,
|
|
116
|
+
expiry,
|
|
117
|
+
// Subject binding
|
|
118
|
+
holder_secret: holderSecret,
|
|
119
|
+
holder_commitment: holderCommitment,
|
|
93
120
|
};
|
|
94
121
|
console.log('Generating ZK proof (this takes 10-40 seconds)...');
|
|
95
122
|
const startTime = Date.now();
|
|
@@ -104,7 +131,7 @@ export async function prove(opts) {
|
|
|
104
131
|
disclosed[disclosedFieldName] = cred.claims[disclosedFieldName];
|
|
105
132
|
}
|
|
106
133
|
const proofOutput = {
|
|
107
|
-
version: '
|
|
134
|
+
version: '2.0',
|
|
108
135
|
circuit: 'composite',
|
|
109
136
|
proof: proofHex,
|
|
110
137
|
publicInputs: proof.publicInputs,
|
|
@@ -113,6 +140,9 @@ export async function prove(opts) {
|
|
|
113
140
|
publicKey: cred.issuer.publicKey,
|
|
114
141
|
},
|
|
115
142
|
disclosed,
|
|
143
|
+
nonce,
|
|
144
|
+
expiry: Number(expiry),
|
|
145
|
+
holderCommitment: holderCommitment,
|
|
116
146
|
generatedAt: new Date().toISOString(),
|
|
117
147
|
generationTimeMs: Date.now() - startTime,
|
|
118
148
|
};
|
|
@@ -134,6 +164,9 @@ export async function prove(opts) {
|
|
|
134
164
|
if (opts.range) {
|
|
135
165
|
console.log(` Range: ${rangeFieldName} ${rangeComparisonType === '0' ? '>=' : '<='} ${rangeThreshold}`);
|
|
136
166
|
}
|
|
167
|
+
console.log(` Nonce: ${nonce}`);
|
|
168
|
+
console.log(` Expires: ${new Date(Number(expiry) * 1000).toISOString()}`);
|
|
169
|
+
console.log(` Holder commitment: ${holderCommitment}`);
|
|
137
170
|
console.log(`\nNext: reputrans verify`);
|
|
138
171
|
}
|
|
139
172
|
//# sourceMappingURL=prove.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prove.js","sourceRoot":"","sources":["../../../../cli/src/commands/prove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prove.js","sourceRoot":"","sources":["../../../../cli/src/commands/prove.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/verify.ts"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsCD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2Q/D"}
|