suprafx-agent-sdk 0.3.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.
- package/LICENSE +21 -0
- package/README.md +452 -0
- package/dist/bin/suprafx-mcp.d.ts +15 -0
- package/dist/bin/suprafx-mcp.js +238 -0
- package/dist/bin/suprafx-mcp.js.map +1 -0
- package/dist/src/asset-registry.d.ts +61 -0
- package/dist/src/asset-registry.js +118 -0
- package/dist/src/asset-registry.js.map +1 -0
- package/dist/src/client.d.ts +227 -0
- package/dist/src/client.js +282 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/derive-ids.d.ts +112 -0
- package/dist/src/derive-ids.js +361 -0
- package/dist/src/derive-ids.js.map +1 -0
- package/dist/src/event-bcs.d.ts +341 -0
- package/dist/src/event-bcs.js +767 -0
- package/dist/src/event-bcs.js.map +1 -0
- package/dist/src/index.d.ts +26 -0
- package/dist/src/index.js +26 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/config.d.ts +32 -0
- package/dist/src/mcp/config.js +101 -0
- package/dist/src/mcp/config.js.map +1 -0
- package/dist/src/mcp/lifecycle.d.ts +109 -0
- package/dist/src/mcp/lifecycle.js +170 -0
- package/dist/src/mcp/lifecycle.js.map +1 -0
- package/dist/src/mcp/preflight.d.ts +36 -0
- package/dist/src/mcp/preflight.js +291 -0
- package/dist/src/mcp/preflight.js.map +1 -0
- package/dist/src/mcp/server.d.ts +20 -0
- package/dist/src/mcp/server.js +235 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/tools.d.ts +51 -0
- package/dist/src/mcp/tools.js +1022 -0
- package/dist/src/mcp/tools.js.map +1 -0
- package/dist/src/sign-event.d.ts +185 -0
- package/dist/src/sign-event.js +331 -0
- package/dist/src/sign-event.js.map +1 -0
- package/dist/src/signer.d.ts +89 -0
- package/dist/src/signer.js +226 -0
- package/dist/src/signer.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 3 of #22: TS-side counterpart of `council-protocol::auth`.
|
|
3
|
+
*
|
|
4
|
+
* Produces and verifies `SignedEventEnvelope` byte-for-byte compatibly
|
|
5
|
+
* with the Rust validator's `auth::verify_and_decode`. Used by:
|
|
6
|
+
*
|
|
7
|
+
* - The SupraFX UI (browser): signs user-authored events with the
|
|
8
|
+
* wallet's Ed25519 key, packages into an envelope, POSTs to
|
|
9
|
+
* `/api/council/submit`.
|
|
10
|
+
* - The SupraFX server (`/api/council/submit`): re-verifies the
|
|
11
|
+
* envelope at ingress before forwarding to validator gRPC.
|
|
12
|
+
* Cheap reject prevents forging-attack traffic from reaching the
|
|
13
|
+
* chain even before the validator's vote-time gate fires.
|
|
14
|
+
*
|
|
15
|
+
* ## What this module does NOT do
|
|
16
|
+
*
|
|
17
|
+
* - **Encode the Event itself.** This module treats `event_bcs` as
|
|
18
|
+
* opaque bytes. The caller is responsible for producing them in
|
|
19
|
+
* canonical BCS so the validator can decode. A separate module
|
|
20
|
+
* (`lib/council/event-bcs.ts`, Phase 3.2) provides per-variant
|
|
21
|
+
* BCS encoders mirroring `council_protocol::events::Event`.
|
|
22
|
+
* - **Talk to the wallet.** StarKey signing happens in the UI layer
|
|
23
|
+
* (see `lib/starkey.ts`); this module accepts a raw signing key
|
|
24
|
+
* or a callback that returns a sig over the sign-bytes.
|
|
25
|
+
*
|
|
26
|
+
* ## Cryptographic contract (matches Rust auth.rs)
|
|
27
|
+
*
|
|
28
|
+
* Address derivation:
|
|
29
|
+
* `auth_key = SHA3-256(pubkey ‖ 0x00)` — Aptos / Supra layout.
|
|
30
|
+
* Source: `node_modules/supra-l1-sdk-core` `AuthenticationKey.ED25519_SCHEME = 0`.
|
|
31
|
+
*
|
|
32
|
+
* Sign bytes:
|
|
33
|
+
* `b"SUPRAFX-USER-EVENT-V1" ‖ chain_id_hash[32] ‖ event_bcs`
|
|
34
|
+
* - DST domain-separates from any other sig context.
|
|
35
|
+
* - chain_id_hash prevents cross-chain replay.
|
|
36
|
+
*
|
|
37
|
+
* Wire envelope (BCS-encoded via this module's `encodeEnvelopeBcs`):
|
|
38
|
+
* ```
|
|
39
|
+
* struct SignedEventEnvelope {
|
|
40
|
+
* event_bcs: Vec<u8>, // length-prefixed via BCS ULEB128
|
|
41
|
+
* signer_pubkey: [u8; 32], // fixed
|
|
42
|
+
* signer_sig: [u8; 64], // fixed (with serde-big-array on Rust side)
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* BCS encoding rules used here:
|
|
47
|
+
* - `Vec<u8>` (= `event_bcs`): ULEB128 length, then bytes.
|
|
48
|
+
* - `[u8; N]` (fixed-size): N bytes, no length prefix.
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* Header line of the sign-bytes display message — must match Rust
|
|
52
|
+
* `auth::USER_EVENT_SIGN_HEADER` byte-for-byte. Wallets that show
|
|
53
|
+
* the user a human-readable prompt render this as the first line.
|
|
54
|
+
*/
|
|
55
|
+
export declare const USER_EVENT_SIGN_HEADER = "SUPRAFX-COUNCIL-SIGN-V1";
|
|
56
|
+
/**
|
|
57
|
+
* Backwards-compat alias. Old name; the constant now reflects the
|
|
58
|
+
* new display-message header rather than the legacy raw-bytes DST.
|
|
59
|
+
* Kept so external callers that pinned the symbol name keep working.
|
|
60
|
+
*/
|
|
61
|
+
export declare const USER_EVENT_DST: Uint8Array<ArrayBuffer>;
|
|
62
|
+
/** Supra Ed25519 scheme byte used in auth-key derivation. */
|
|
63
|
+
export declare const ED25519_SCHEME = 0;
|
|
64
|
+
/**
|
|
65
|
+
* Wire envelope. Field shapes match the Rust struct exactly so BCS
|
|
66
|
+
* serialization is byte-equivalent.
|
|
67
|
+
*/
|
|
68
|
+
export interface SignedEventEnvelope {
|
|
69
|
+
/** Canonical BCS encoding of the user's `Event`. Opaque to this module. */
|
|
70
|
+
event_bcs: Uint8Array;
|
|
71
|
+
/** Ed25519 public key of the signer (32 bytes). */
|
|
72
|
+
signer_pubkey: Uint8Array;
|
|
73
|
+
/** Ed25519 signature (64 bytes) over `composeSignBytes(chainIdHash, event_bcs)`. */
|
|
74
|
+
signer_sig: Uint8Array;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Derive a Supra account address from an Ed25519 public key.
|
|
78
|
+
*
|
|
79
|
+
* `auth_key = SHA3-256(pubkey || 0x00)`. 32-byte output, no truncation.
|
|
80
|
+
* Aligned byte-for-byte with Supra L1 SDK's
|
|
81
|
+
* `AuthenticationKey.fromEd25519PublicKey`.
|
|
82
|
+
*
|
|
83
|
+
* @throws if `pubkey.length !== 32`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function deriveSupraAddress(pubkey: Uint8Array): Uint8Array;
|
|
86
|
+
/**
|
|
87
|
+
* Compose the canonical bytes the signer signs / verifier checks.
|
|
88
|
+
* Pure function: same inputs always produce identical output.
|
|
89
|
+
*
|
|
90
|
+
* ## Format (V1)
|
|
91
|
+
*
|
|
92
|
+
* The output is a UTF-8 string a wallet can render to the user. Raw
|
|
93
|
+
* event bytes are hashed into the message rather than embedded so the
|
|
94
|
+
* displayed prompt has fixed shape (~173 ASCII chars), and wallets
|
|
95
|
+
* that only sign valid UTF-8 (StarKey's `signMessage`) accept it.
|
|
96
|
+
*
|
|
97
|
+
* ```text
|
|
98
|
+
* SUPRAFX-COUNCIL-SIGN-V1
|
|
99
|
+
* chain: 0x<chain_id_hash_hex_64>
|
|
100
|
+
* payload: 0x<blake3_of_event_bcs_hex_64>
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* Security: chain_id_hash blocks cross-chain replay; the BLAKE3 of
|
|
104
|
+
* event_bcs binds the sig to the exact event (substituting any byte
|
|
105
|
+
* yields a different payload hash). Header is the domain-separation
|
|
106
|
+
* tag — sigs over this aren't fungible with sigs from any other
|
|
107
|
+
* SupraFX flow (login session, genesis attestation, etc.).
|
|
108
|
+
*
|
|
109
|
+
* MUST match Rust `auth::compose_sign_bytes` byte-for-byte. Verified
|
|
110
|
+
* by cross-language fixture in `tests/unit/council-sign-event.test.ts`.
|
|
111
|
+
*
|
|
112
|
+
* @throws if `chainIdHash.length !== 32`.
|
|
113
|
+
*/
|
|
114
|
+
export declare function composeSignBytes(chainIdHash: Uint8Array, eventBcs: Uint8Array): Uint8Array;
|
|
115
|
+
/**
|
|
116
|
+
* Sign an event-bytes payload with an Ed25519 secret key, producing
|
|
117
|
+
* a `SignedEventEnvelope` ready for BCS-encoding + submission.
|
|
118
|
+
*
|
|
119
|
+
* `secretKey` is the 32-byte Ed25519 seed (NOT the 64-byte
|
|
120
|
+
* extended/hashed form). `@noble/curves/ed25519` derives the public
|
|
121
|
+
* key on demand via `ed25519.getPublicKey(secretKey)`.
|
|
122
|
+
*
|
|
123
|
+
* For wallets that don't expose the secret key (StarKey), use
|
|
124
|
+
* `signEnvelopeWithCallback` instead — it accepts a callback that
|
|
125
|
+
* returns a sig over the supplied bytes.
|
|
126
|
+
*/
|
|
127
|
+
export declare function signEnvelope(eventBcs: Uint8Array, secretKey: Uint8Array, chainIdHash: Uint8Array): SignedEventEnvelope;
|
|
128
|
+
/**
|
|
129
|
+
* Sign via a wallet-provided callback (e.g. StarKey's signMessage).
|
|
130
|
+
* The callback receives the canonical sign-bytes and must return the
|
|
131
|
+
* 64-byte Ed25519 signature.
|
|
132
|
+
*
|
|
133
|
+
* `signerPubkey` MUST be the wallet's Ed25519 pubkey — the verifier
|
|
134
|
+
* checks `derive_supra_address(signerPubkey) == event.user`, so a
|
|
135
|
+
* mismatch here will cause silent rejection at the chain.
|
|
136
|
+
*/
|
|
137
|
+
export declare function signEnvelopeWithCallback(eventBcs: Uint8Array, signerPubkey: Uint8Array, chainIdHash: Uint8Array, signCallback: (signBytes: Uint8Array) => Promise<Uint8Array>): Promise<SignedEventEnvelope>;
|
|
138
|
+
/**
|
|
139
|
+
* Verify a `SignedEventEnvelope` against a chain_id_hash. Mirrors
|
|
140
|
+
* Rust `auth::verify_and_decode` MINUS the event-decode step (TS
|
|
141
|
+
* doesn't need to materialize the Event — only the chain does).
|
|
142
|
+
*
|
|
143
|
+
* Verification steps:
|
|
144
|
+
* 1. `derive = derive_supra_address(envelope.signer_pubkey)`.
|
|
145
|
+
* 2. (Caller's responsibility) — assert `derive` matches the
|
|
146
|
+
* `user` field in `event_bcs`. We can't do that here without
|
|
147
|
+
* the Event schema; the SupraFX submit endpoint runs this
|
|
148
|
+
* check after BCS-decoding the event.
|
|
149
|
+
* 3. Verify Ed25519 sig over composed sign-bytes.
|
|
150
|
+
*
|
|
151
|
+
* Returns `{ ok: true, derivedAddress }` on pass, or `{ ok: false,
|
|
152
|
+
* reason }` with a typed reason. Errors are NOT thrown — the
|
|
153
|
+
* caller (often a request handler) wants a typed result.
|
|
154
|
+
*/
|
|
155
|
+
export declare function verifyEnvelope(envelope: SignedEventEnvelope, chainIdHash: Uint8Array): {
|
|
156
|
+
ok: true;
|
|
157
|
+
derivedAddress: Uint8Array;
|
|
158
|
+
} | {
|
|
159
|
+
ok: false;
|
|
160
|
+
reason: "invalid_pubkey" | "sig_verify_failed";
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* BCS-encode a `SignedEventEnvelope` for submission via gRPC's
|
|
164
|
+
* `SubmitEventsRequest.envelopes_bcs` field.
|
|
165
|
+
*
|
|
166
|
+
* Layout (matches the Rust derived `serde::Serialize` + `bcs`):
|
|
167
|
+
* - `event_bcs: Vec<u8>` → ULEB128 length, then bytes.
|
|
168
|
+
* - `signer_pubkey: [u8; 32]` → 32 raw bytes (no length prefix).
|
|
169
|
+
* - `signer_sig: [u8; 64]` → 64 raw bytes (no length prefix; the
|
|
170
|
+
* Rust side uses `serde-big-array` to make this work but the
|
|
171
|
+
* wire shape is just 64 bytes).
|
|
172
|
+
*/
|
|
173
|
+
export declare function encodeEnvelopeBcs(env: SignedEventEnvelope): Uint8Array;
|
|
174
|
+
/**
|
|
175
|
+
* Decode a BCS-encoded envelope (inverse of `encodeEnvelopeBcs`).
|
|
176
|
+
* Used by `/api/council/submit` to parse the body before re-verifying
|
|
177
|
+
* at ingress.
|
|
178
|
+
*
|
|
179
|
+
* Throws on malformed input (wrong length, truncated, etc.).
|
|
180
|
+
*/
|
|
181
|
+
export declare function decodeEnvelopeBcs(bytes: Uint8Array): SignedEventEnvelope;
|
|
182
|
+
/** Lower-case hex without `0x` prefix, matching the Rust hex crate. */
|
|
183
|
+
export declare function bytesToHexLower(bytes: Uint8Array): string;
|
|
184
|
+
/** Decode hex (with or without `0x` prefix). Throws on invalid input. */
|
|
185
|
+
export declare function hexToBytes(hex: string): Uint8Array;
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 3 of #22: TS-side counterpart of `council-protocol::auth`.
|
|
3
|
+
*
|
|
4
|
+
* Produces and verifies `SignedEventEnvelope` byte-for-byte compatibly
|
|
5
|
+
* with the Rust validator's `auth::verify_and_decode`. Used by:
|
|
6
|
+
*
|
|
7
|
+
* - The SupraFX UI (browser): signs user-authored events with the
|
|
8
|
+
* wallet's Ed25519 key, packages into an envelope, POSTs to
|
|
9
|
+
* `/api/council/submit`.
|
|
10
|
+
* - The SupraFX server (`/api/council/submit`): re-verifies the
|
|
11
|
+
* envelope at ingress before forwarding to validator gRPC.
|
|
12
|
+
* Cheap reject prevents forging-attack traffic from reaching the
|
|
13
|
+
* chain even before the validator's vote-time gate fires.
|
|
14
|
+
*
|
|
15
|
+
* ## What this module does NOT do
|
|
16
|
+
*
|
|
17
|
+
* - **Encode the Event itself.** This module treats `event_bcs` as
|
|
18
|
+
* opaque bytes. The caller is responsible for producing them in
|
|
19
|
+
* canonical BCS so the validator can decode. A separate module
|
|
20
|
+
* (`lib/council/event-bcs.ts`, Phase 3.2) provides per-variant
|
|
21
|
+
* BCS encoders mirroring `council_protocol::events::Event`.
|
|
22
|
+
* - **Talk to the wallet.** StarKey signing happens in the UI layer
|
|
23
|
+
* (see `lib/starkey.ts`); this module accepts a raw signing key
|
|
24
|
+
* or a callback that returns a sig over the sign-bytes.
|
|
25
|
+
*
|
|
26
|
+
* ## Cryptographic contract (matches Rust auth.rs)
|
|
27
|
+
*
|
|
28
|
+
* Address derivation:
|
|
29
|
+
* `auth_key = SHA3-256(pubkey ‖ 0x00)` — Aptos / Supra layout.
|
|
30
|
+
* Source: `node_modules/supra-l1-sdk-core` `AuthenticationKey.ED25519_SCHEME = 0`.
|
|
31
|
+
*
|
|
32
|
+
* Sign bytes:
|
|
33
|
+
* `b"SUPRAFX-USER-EVENT-V1" ‖ chain_id_hash[32] ‖ event_bcs`
|
|
34
|
+
* - DST domain-separates from any other sig context.
|
|
35
|
+
* - chain_id_hash prevents cross-chain replay.
|
|
36
|
+
*
|
|
37
|
+
* Wire envelope (BCS-encoded via this module's `encodeEnvelopeBcs`):
|
|
38
|
+
* ```
|
|
39
|
+
* struct SignedEventEnvelope {
|
|
40
|
+
* event_bcs: Vec<u8>, // length-prefixed via BCS ULEB128
|
|
41
|
+
* signer_pubkey: [u8; 32], // fixed
|
|
42
|
+
* signer_sig: [u8; 64], // fixed (with serde-big-array on Rust side)
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* BCS encoding rules used here:
|
|
47
|
+
* - `Vec<u8>` (= `event_bcs`): ULEB128 length, then bytes.
|
|
48
|
+
* - `[u8; N]` (fixed-size): N bytes, no length prefix.
|
|
49
|
+
*/
|
|
50
|
+
import { sha3_256 } from "@noble/hashes/sha3.js";
|
|
51
|
+
import { blake3 } from "@noble/hashes/blake3.js";
|
|
52
|
+
import { ed25519 } from "@noble/curves/ed25519.js";
|
|
53
|
+
/**
|
|
54
|
+
* Header line of the sign-bytes display message — must match Rust
|
|
55
|
+
* `auth::USER_EVENT_SIGN_HEADER` byte-for-byte. Wallets that show
|
|
56
|
+
* the user a human-readable prompt render this as the first line.
|
|
57
|
+
*/
|
|
58
|
+
export const USER_EVENT_SIGN_HEADER = "SUPRAFX-COUNCIL-SIGN-V1";
|
|
59
|
+
/**
|
|
60
|
+
* Backwards-compat alias. Old name; the constant now reflects the
|
|
61
|
+
* new display-message header rather than the legacy raw-bytes DST.
|
|
62
|
+
* Kept so external callers that pinned the symbol name keep working.
|
|
63
|
+
*/
|
|
64
|
+
export const USER_EVENT_DST = new TextEncoder().encode(USER_EVENT_SIGN_HEADER);
|
|
65
|
+
/** Supra Ed25519 scheme byte used in auth-key derivation. */
|
|
66
|
+
export const ED25519_SCHEME = 0x00;
|
|
67
|
+
/**
|
|
68
|
+
* Derive a Supra account address from an Ed25519 public key.
|
|
69
|
+
*
|
|
70
|
+
* `auth_key = SHA3-256(pubkey || 0x00)`. 32-byte output, no truncation.
|
|
71
|
+
* Aligned byte-for-byte with Supra L1 SDK's
|
|
72
|
+
* `AuthenticationKey.fromEd25519PublicKey`.
|
|
73
|
+
*
|
|
74
|
+
* @throws if `pubkey.length !== 32`.
|
|
75
|
+
*/
|
|
76
|
+
export function deriveSupraAddress(pubkey) {
|
|
77
|
+
if (pubkey.length !== 32) {
|
|
78
|
+
throw new Error(`deriveSupraAddress: pubkey must be 32 bytes, got ${pubkey.length}`);
|
|
79
|
+
}
|
|
80
|
+
const buf = new Uint8Array(33);
|
|
81
|
+
buf.set(pubkey, 0);
|
|
82
|
+
buf[32] = ED25519_SCHEME;
|
|
83
|
+
return sha3_256(buf);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Compose the canonical bytes the signer signs / verifier checks.
|
|
87
|
+
* Pure function: same inputs always produce identical output.
|
|
88
|
+
*
|
|
89
|
+
* ## Format (V1)
|
|
90
|
+
*
|
|
91
|
+
* The output is a UTF-8 string a wallet can render to the user. Raw
|
|
92
|
+
* event bytes are hashed into the message rather than embedded so the
|
|
93
|
+
* displayed prompt has fixed shape (~173 ASCII chars), and wallets
|
|
94
|
+
* that only sign valid UTF-8 (StarKey's `signMessage`) accept it.
|
|
95
|
+
*
|
|
96
|
+
* ```text
|
|
97
|
+
* SUPRAFX-COUNCIL-SIGN-V1
|
|
98
|
+
* chain: 0x<chain_id_hash_hex_64>
|
|
99
|
+
* payload: 0x<blake3_of_event_bcs_hex_64>
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* Security: chain_id_hash blocks cross-chain replay; the BLAKE3 of
|
|
103
|
+
* event_bcs binds the sig to the exact event (substituting any byte
|
|
104
|
+
* yields a different payload hash). Header is the domain-separation
|
|
105
|
+
* tag — sigs over this aren't fungible with sigs from any other
|
|
106
|
+
* SupraFX flow (login session, genesis attestation, etc.).
|
|
107
|
+
*
|
|
108
|
+
* MUST match Rust `auth::compose_sign_bytes` byte-for-byte. Verified
|
|
109
|
+
* by cross-language fixture in `tests/unit/council-sign-event.test.ts`.
|
|
110
|
+
*
|
|
111
|
+
* @throws if `chainIdHash.length !== 32`.
|
|
112
|
+
*/
|
|
113
|
+
export function composeSignBytes(chainIdHash, eventBcs) {
|
|
114
|
+
if (chainIdHash.length !== 32) {
|
|
115
|
+
throw new Error(`composeSignBytes: chain_id_hash must be 32 bytes, got ${chainIdHash.length}`);
|
|
116
|
+
}
|
|
117
|
+
const payloadHash = blake3(eventBcs);
|
|
118
|
+
const chainHex = bytesToLowerHex(chainIdHash);
|
|
119
|
+
const payloadHex = bytesToLowerHex(payloadHash);
|
|
120
|
+
const msg = `${USER_EVENT_SIGN_HEADER}\nchain: 0x${chainHex}\npayload: 0x${payloadHex}`;
|
|
121
|
+
return new TextEncoder().encode(msg);
|
|
122
|
+
}
|
|
123
|
+
function bytesToLowerHex(b) {
|
|
124
|
+
return Array.from(b, (x) => x.toString(16).padStart(2, "0")).join("");
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Sign an event-bytes payload with an Ed25519 secret key, producing
|
|
128
|
+
* a `SignedEventEnvelope` ready for BCS-encoding + submission.
|
|
129
|
+
*
|
|
130
|
+
* `secretKey` is the 32-byte Ed25519 seed (NOT the 64-byte
|
|
131
|
+
* extended/hashed form). `@noble/curves/ed25519` derives the public
|
|
132
|
+
* key on demand via `ed25519.getPublicKey(secretKey)`.
|
|
133
|
+
*
|
|
134
|
+
* For wallets that don't expose the secret key (StarKey), use
|
|
135
|
+
* `signEnvelopeWithCallback` instead — it accepts a callback that
|
|
136
|
+
* returns a sig over the supplied bytes.
|
|
137
|
+
*/
|
|
138
|
+
export function signEnvelope(eventBcs, secretKey, chainIdHash) {
|
|
139
|
+
if (secretKey.length !== 32) {
|
|
140
|
+
throw new Error(`signEnvelope: secret key must be 32 bytes, got ${secretKey.length}`);
|
|
141
|
+
}
|
|
142
|
+
const signBytes = composeSignBytes(chainIdHash, eventBcs);
|
|
143
|
+
const sig = ed25519.sign(signBytes, secretKey);
|
|
144
|
+
const pubkey = ed25519.getPublicKey(secretKey);
|
|
145
|
+
return {
|
|
146
|
+
event_bcs: new Uint8Array(eventBcs),
|
|
147
|
+
signer_pubkey: new Uint8Array(pubkey),
|
|
148
|
+
signer_sig: new Uint8Array(sig),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Sign via a wallet-provided callback (e.g. StarKey's signMessage).
|
|
153
|
+
* The callback receives the canonical sign-bytes and must return the
|
|
154
|
+
* 64-byte Ed25519 signature.
|
|
155
|
+
*
|
|
156
|
+
* `signerPubkey` MUST be the wallet's Ed25519 pubkey — the verifier
|
|
157
|
+
* checks `derive_supra_address(signerPubkey) == event.user`, so a
|
|
158
|
+
* mismatch here will cause silent rejection at the chain.
|
|
159
|
+
*/
|
|
160
|
+
export async function signEnvelopeWithCallback(eventBcs, signerPubkey, chainIdHash, signCallback) {
|
|
161
|
+
if (signerPubkey.length !== 32) {
|
|
162
|
+
throw new Error(`signEnvelopeWithCallback: pubkey must be 32 bytes, got ${signerPubkey.length}`);
|
|
163
|
+
}
|
|
164
|
+
const signBytes = composeSignBytes(chainIdHash, eventBcs);
|
|
165
|
+
const sig = await signCallback(signBytes);
|
|
166
|
+
if (sig.length !== 64) {
|
|
167
|
+
throw new Error(`signEnvelopeWithCallback: callback returned ${sig.length}-byte sig, expected 64`);
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
event_bcs: new Uint8Array(eventBcs),
|
|
171
|
+
signer_pubkey: new Uint8Array(signerPubkey),
|
|
172
|
+
signer_sig: new Uint8Array(sig),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Verify a `SignedEventEnvelope` against a chain_id_hash. Mirrors
|
|
177
|
+
* Rust `auth::verify_and_decode` MINUS the event-decode step (TS
|
|
178
|
+
* doesn't need to materialize the Event — only the chain does).
|
|
179
|
+
*
|
|
180
|
+
* Verification steps:
|
|
181
|
+
* 1. `derive = derive_supra_address(envelope.signer_pubkey)`.
|
|
182
|
+
* 2. (Caller's responsibility) — assert `derive` matches the
|
|
183
|
+
* `user` field in `event_bcs`. We can't do that here without
|
|
184
|
+
* the Event schema; the SupraFX submit endpoint runs this
|
|
185
|
+
* check after BCS-decoding the event.
|
|
186
|
+
* 3. Verify Ed25519 sig over composed sign-bytes.
|
|
187
|
+
*
|
|
188
|
+
* Returns `{ ok: true, derivedAddress }` on pass, or `{ ok: false,
|
|
189
|
+
* reason }` with a typed reason. Errors are NOT thrown — the
|
|
190
|
+
* caller (often a request handler) wants a typed result.
|
|
191
|
+
*/
|
|
192
|
+
export function verifyEnvelope(envelope, chainIdHash) {
|
|
193
|
+
if (envelope.signer_pubkey.length !== 32) {
|
|
194
|
+
return { ok: false, reason: "invalid_pubkey" };
|
|
195
|
+
}
|
|
196
|
+
if (envelope.signer_sig.length !== 64) {
|
|
197
|
+
return { ok: false, reason: "sig_verify_failed" };
|
|
198
|
+
}
|
|
199
|
+
let derivedAddress;
|
|
200
|
+
try {
|
|
201
|
+
derivedAddress = deriveSupraAddress(envelope.signer_pubkey);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return { ok: false, reason: "invalid_pubkey" };
|
|
205
|
+
}
|
|
206
|
+
const signBytes = composeSignBytes(chainIdHash, envelope.event_bcs);
|
|
207
|
+
let valid;
|
|
208
|
+
try {
|
|
209
|
+
valid = ed25519.verify(envelope.signer_sig, signBytes, envelope.signer_pubkey);
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// @noble/curves throws on malformed pubkey points (off-curve, etc.).
|
|
213
|
+
return { ok: false, reason: "invalid_pubkey" };
|
|
214
|
+
}
|
|
215
|
+
if (!valid) {
|
|
216
|
+
return { ok: false, reason: "sig_verify_failed" };
|
|
217
|
+
}
|
|
218
|
+
return { ok: true, derivedAddress };
|
|
219
|
+
}
|
|
220
|
+
// ─── BCS encoding for the envelope wire shape ─────────────────────
|
|
221
|
+
/**
|
|
222
|
+
* Encode a u32 (or smaller positive int) as BCS ULEB128. Used for
|
|
223
|
+
* the length prefix of `event_bcs: Vec<u8>`.
|
|
224
|
+
*/
|
|
225
|
+
function encodeUleb128(n) {
|
|
226
|
+
if (n < 0 || !Number.isInteger(n)) {
|
|
227
|
+
throw new Error(`encodeUleb128: invalid value ${n}`);
|
|
228
|
+
}
|
|
229
|
+
const out = [];
|
|
230
|
+
let v = n;
|
|
231
|
+
while (v >= 0x80) {
|
|
232
|
+
out.push((v & 0x7f) | 0x80);
|
|
233
|
+
v >>>= 7;
|
|
234
|
+
}
|
|
235
|
+
out.push(v & 0x7f);
|
|
236
|
+
return new Uint8Array(out);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* BCS-encode a `SignedEventEnvelope` for submission via gRPC's
|
|
240
|
+
* `SubmitEventsRequest.envelopes_bcs` field.
|
|
241
|
+
*
|
|
242
|
+
* Layout (matches the Rust derived `serde::Serialize` + `bcs`):
|
|
243
|
+
* - `event_bcs: Vec<u8>` → ULEB128 length, then bytes.
|
|
244
|
+
* - `signer_pubkey: [u8; 32]` → 32 raw bytes (no length prefix).
|
|
245
|
+
* - `signer_sig: [u8; 64]` → 64 raw bytes (no length prefix; the
|
|
246
|
+
* Rust side uses `serde-big-array` to make this work but the
|
|
247
|
+
* wire shape is just 64 bytes).
|
|
248
|
+
*/
|
|
249
|
+
export function encodeEnvelopeBcs(env) {
|
|
250
|
+
if (env.signer_pubkey.length !== 32) {
|
|
251
|
+
throw new Error(`encodeEnvelopeBcs: signer_pubkey must be 32 bytes, got ${env.signer_pubkey.length}`);
|
|
252
|
+
}
|
|
253
|
+
if (env.signer_sig.length !== 64) {
|
|
254
|
+
throw new Error(`encodeEnvelopeBcs: signer_sig must be 64 bytes, got ${env.signer_sig.length}`);
|
|
255
|
+
}
|
|
256
|
+
const lenPrefix = encodeUleb128(env.event_bcs.length);
|
|
257
|
+
const total = lenPrefix.length + env.event_bcs.length + 32 + 64;
|
|
258
|
+
const out = new Uint8Array(total);
|
|
259
|
+
let off = 0;
|
|
260
|
+
out.set(lenPrefix, off);
|
|
261
|
+
off += lenPrefix.length;
|
|
262
|
+
out.set(env.event_bcs, off);
|
|
263
|
+
off += env.event_bcs.length;
|
|
264
|
+
out.set(env.signer_pubkey, off);
|
|
265
|
+
off += 32;
|
|
266
|
+
out.set(env.signer_sig, off);
|
|
267
|
+
return out;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Decode a BCS-encoded envelope (inverse of `encodeEnvelopeBcs`).
|
|
271
|
+
* Used by `/api/council/submit` to parse the body before re-verifying
|
|
272
|
+
* at ingress.
|
|
273
|
+
*
|
|
274
|
+
* Throws on malformed input (wrong length, truncated, etc.).
|
|
275
|
+
*/
|
|
276
|
+
export function decodeEnvelopeBcs(bytes) {
|
|
277
|
+
let off = 0;
|
|
278
|
+
// Decode ULEB128 length.
|
|
279
|
+
let eventLen = 0;
|
|
280
|
+
let shift = 0;
|
|
281
|
+
while (true) {
|
|
282
|
+
if (off >= bytes.length) {
|
|
283
|
+
throw new Error("decodeEnvelopeBcs: truncated ULEB128 length");
|
|
284
|
+
}
|
|
285
|
+
const byte = bytes[off];
|
|
286
|
+
off += 1;
|
|
287
|
+
eventLen |= (byte & 0x7f) << shift;
|
|
288
|
+
if ((byte & 0x80) === 0)
|
|
289
|
+
break;
|
|
290
|
+
shift += 7;
|
|
291
|
+
if (shift > 32) {
|
|
292
|
+
throw new Error("decodeEnvelopeBcs: ULEB128 length exceeds u32");
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const expectedTotal = off + eventLen + 32 + 64;
|
|
296
|
+
if (bytes.length !== expectedTotal) {
|
|
297
|
+
throw new Error(`decodeEnvelopeBcs: wrong length (expected ${expectedTotal} from len=${eventLen}, got ${bytes.length})`);
|
|
298
|
+
}
|
|
299
|
+
const event_bcs = bytes.slice(off, off + eventLen);
|
|
300
|
+
off += eventLen;
|
|
301
|
+
const signer_pubkey = bytes.slice(off, off + 32);
|
|
302
|
+
off += 32;
|
|
303
|
+
const signer_sig = bytes.slice(off, off + 64);
|
|
304
|
+
return { event_bcs, signer_pubkey, signer_sig };
|
|
305
|
+
}
|
|
306
|
+
// ─── Hex helpers (for routes that ship envelopes as JSON) ─────────
|
|
307
|
+
/** Lower-case hex without `0x` prefix, matching the Rust hex crate. */
|
|
308
|
+
export function bytesToHexLower(bytes) {
|
|
309
|
+
let s = "";
|
|
310
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
311
|
+
s += bytes[i].toString(16).padStart(2, "0");
|
|
312
|
+
}
|
|
313
|
+
return s;
|
|
314
|
+
}
|
|
315
|
+
/** Decode hex (with or without `0x` prefix). Throws on invalid input. */
|
|
316
|
+
export function hexToBytes(hex) {
|
|
317
|
+
let h = hex.startsWith("0x") || hex.startsWith("0X") ? hex.slice(2) : hex;
|
|
318
|
+
if (h.length % 2 !== 0) {
|
|
319
|
+
throw new Error(`hexToBytes: odd hex length ${h.length}`);
|
|
320
|
+
}
|
|
321
|
+
const out = new Uint8Array(h.length / 2);
|
|
322
|
+
for (let i = 0; i < out.length; i++) {
|
|
323
|
+
const byte = parseInt(h.slice(i * 2, i * 2 + 2), 16);
|
|
324
|
+
if (Number.isNaN(byte)) {
|
|
325
|
+
throw new Error(`hexToBytes: invalid hex at offset ${i * 2}`);
|
|
326
|
+
}
|
|
327
|
+
out[i] = byte;
|
|
328
|
+
}
|
|
329
|
+
return out;
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=sign-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-event.js","sourceRoot":"","sources":["../../src/sign-event.ts"],"names":[],"mappings":"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"}
|