@1sat/actions 0.0.49 → 0.0.50
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/identity/index.d.ts +36 -26
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +197 -167
- package/dist/identity/index.js.map +1 -1
- package/dist/signing/aip.d.ts +21 -6
- package/dist/signing/aip.d.ts.map +1 -1
- package/dist/signing/aip.js +48 -8
- package/dist/signing/aip.js.map +1 -1
- package/dist/signing/index.d.ts +1 -1
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/index.js +1 -1
- package/dist/signing/index.js.map +1 -1
- package/package.json +1 -1
package/dist/identity/index.d.ts
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Identity Module
|
|
3
3
|
*
|
|
4
|
-
* BAP identity actions
|
|
5
|
-
* Uses the wallet's BAP signing key ([1, "sigma"] / "identity") via applyAip.
|
|
4
|
+
* BAP identity actions using the wallet's identity-{N} key derivation scheme.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Key hierarchy:
|
|
7
|
+
* identity-0 = root key (BAP ID source, signs initial publish)
|
|
8
|
+
* identity-{N} = current signing key (N tracked via seq tags on outputs)
|
|
9
|
+
*
|
|
10
|
+
* All keys derived at protocolID=[1,"sigma"], keyID="identity-{N}".
|
|
10
11
|
*/
|
|
11
12
|
import type { Action, OneSatContext } from '../types';
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
+
* Compute the BAP ID deterministically from the wallet's identity-0 key.
|
|
15
|
+
*
|
|
16
|
+
* BAP ID = base58(ripemd160(sha256(identity-0.address)))
|
|
17
|
+
*
|
|
18
|
+
* This always returns a value — every wallet can derive identity-0.
|
|
19
|
+
*/
|
|
20
|
+
export declare function computeBapId(ctx: OneSatContext): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve the BAP ID if the identity has been published.
|
|
14
23
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* the wallet yet).
|
|
24
|
+
* Returns the BAP ID if a `type:id` output exists in the BAP basket,
|
|
25
|
+
* null if the identity hasn't been published yet.
|
|
18
26
|
*/
|
|
19
27
|
export declare function resolveBapId(ctx: OneSatContext): Promise<string | null>;
|
|
20
|
-
export interface PublishIdentityRequest {
|
|
21
|
-
/** Pre-signed BAP ID locking script hex (AIP-signed with root key) */
|
|
22
|
-
signedScript: string;
|
|
23
|
-
}
|
|
24
28
|
export interface AttestRequest {
|
|
25
29
|
/** SHA-256 hash of the attestation URN (urn:bap:id:attribute:value:nonce) */
|
|
26
30
|
attestationHash: string;
|
|
@@ -34,6 +38,7 @@ export interface UpdateProfileRequest {
|
|
|
34
38
|
export interface IdentityResponse {
|
|
35
39
|
txid?: string;
|
|
36
40
|
rawtx?: string;
|
|
41
|
+
bapId?: string;
|
|
37
42
|
error?: string;
|
|
38
43
|
}
|
|
39
44
|
export interface ProfileResponse {
|
|
@@ -42,31 +47,36 @@ export interface ProfileResponse {
|
|
|
42
47
|
error?: string;
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
45
|
-
* Publish
|
|
50
|
+
* Publish the initial BAP ID record.
|
|
46
51
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* the
|
|
50
|
-
* then funds the transaction via the BRC-100 wallet. The output lands
|
|
51
|
-
* in the `bap` basket so that resolveBapId() can find it.
|
|
52
|
+
* Derives identity-0 (root key), computes the BAP ID, and publishes
|
|
53
|
+
* the ID record signed by identity-0 via AIP. The output lands in
|
|
54
|
+
* the `bap` basket tagged with seq:1.
|
|
52
55
|
*
|
|
53
|
-
*
|
|
56
|
+
* Returns an error if an identity has already been published.
|
|
54
57
|
*/
|
|
55
|
-
export declare const publishIdentity: Action<
|
|
58
|
+
export declare const publishIdentity: Action<Record<string, never>, IdentityResponse>;
|
|
59
|
+
/**
|
|
60
|
+
* Rotate the BAP signing key.
|
|
61
|
+
*
|
|
62
|
+
* Finds the current signing key (highest sequence), derives the next
|
|
63
|
+
* key (identity-{N+1}), builds a new BAP ID record declaring the new
|
|
64
|
+
* currentAddress, signs it with the outgoing key, and publishes.
|
|
65
|
+
* The previous ID output is relinquished.
|
|
66
|
+
*/
|
|
67
|
+
export declare const rotateIdentity: Action<Record<string, never>, IdentityResponse>;
|
|
56
68
|
/**
|
|
57
69
|
* Publish a BAP ATTEST transaction.
|
|
58
70
|
*
|
|
59
71
|
* OP_RETURN: BAP_PREFIX | "ATTEST" | attestation_hash | counter
|
|
60
|
-
* Signed with AIP via the
|
|
72
|
+
* Signed with AIP via the current signing key.
|
|
61
73
|
*/
|
|
62
74
|
export declare const attest: Action<AttestRequest, IdentityResponse>;
|
|
63
75
|
/**
|
|
64
76
|
* Publish a BAP ALIAS transaction to update the identity's profile.
|
|
65
77
|
*
|
|
66
78
|
* OP_RETURN: BAP_PREFIX | "ALIAS" | bap_id | profile_json
|
|
67
|
-
* Signed with AIP via the
|
|
68
|
-
*
|
|
69
|
-
* The BAP ID is resolved from the wallet's `bap` basket (seeded by Sigma Identity).
|
|
79
|
+
* Signed with AIP via the current signing key.
|
|
70
80
|
*/
|
|
71
81
|
export declare const updateProfile: Action<UpdateProfileRequest, IdentityResponse>;
|
|
72
82
|
/**
|
|
@@ -77,5 +87,5 @@ export declare const updateProfile: Action<UpdateProfileRequest, IdentityRespons
|
|
|
77
87
|
*/
|
|
78
88
|
export declare const getProfile: Action<Record<string, never>, ProfileResponse>;
|
|
79
89
|
/** All identity actions for registry */
|
|
80
|
-
export declare const identityActions: (Action<
|
|
90
|
+
export declare const identityActions: (Action<Record<string, never>, IdentityResponse> | Action<AttestRequest, IdentityResponse> | Action<UpdateProfileRequest, IdentityResponse> | Action<Record<string, never>, ProfileResponse>)[];
|
|
81
91
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AA6BrD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAGtE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CACjC,GAAG,EAAE,aAAa,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAiCD,MAAM,WAAW,aAAa;IAC7B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAA;IACvB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACpC,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAwE1E,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAmF1E,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAqE1D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CA8ExE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,eAAe,CAqDrE,CAAA;AAED,wCAAwC;AACxC,eAAO,MAAM,eAAe,iMAM3B,CAAA"}
|
package/dist/identity/index.js
CHANGED
|
@@ -1,200 +1,223 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Identity Module
|
|
3
3
|
*
|
|
4
|
-
* BAP identity actions
|
|
5
|
-
* Uses the wallet's BAP signing key ([1, "sigma"] / "identity") via applyAip.
|
|
4
|
+
* BAP identity actions using the wallet's identity-{N} key derivation scheme.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Key hierarchy:
|
|
7
|
+
* identity-0 = root key (BAP ID source, signs initial publish)
|
|
8
|
+
* identity-{N} = current signing key (N tracked via seq tags on outputs)
|
|
9
|
+
*
|
|
10
|
+
* All keys derived at protocolID=[1,"sigma"], keyID="identity-{N}".
|
|
10
11
|
*/
|
|
11
|
-
import {
|
|
12
|
+
import { Hash, OP, PublicKey, Script, Utils } from '@bsv/sdk';
|
|
12
13
|
import { BAP_BASKET, BAP_BITCOM_ADDRESS, BAP_KEY_ID, BAP_PROTOCOL_ID, } from '../constants';
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
const
|
|
14
|
+
import { applyBapAip, resolveCurrentKeyId } from '../signing/aip';
|
|
15
|
+
import { createTrackedAction } from '../utils/createTrackedAction';
|
|
16
|
+
const { toArray, toBase58, toHex } = Utils;
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Key ID Helpers
|
|
19
|
+
// ============================================================================
|
|
20
|
+
function signingKeyId(index) {
|
|
21
|
+
return `${BAP_KEY_ID}-${index}`;
|
|
22
|
+
}
|
|
23
|
+
async function deriveAddress(ctx, keyID) {
|
|
24
|
+
const { publicKey } = await ctx.wallet.getPublicKey({
|
|
25
|
+
protocolID: BAP_PROTOCOL_ID,
|
|
26
|
+
keyID,
|
|
27
|
+
counterparty: 'self',
|
|
28
|
+
});
|
|
29
|
+
return PublicKey.fromString(publicKey).toAddress();
|
|
30
|
+
}
|
|
16
31
|
// ============================================================================
|
|
17
32
|
// BAP ID Resolution
|
|
18
33
|
// ============================================================================
|
|
19
34
|
/**
|
|
20
|
-
*
|
|
35
|
+
* Compute the BAP ID deterministically from the wallet's identity-0 key.
|
|
21
36
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
37
|
+
* BAP ID = base58(ripemd160(sha256(identity-0.address)))
|
|
38
|
+
*
|
|
39
|
+
* This always returns a value — every wallet can derive identity-0.
|
|
40
|
+
*/
|
|
41
|
+
export async function computeBapId(ctx) {
|
|
42
|
+
const address = await deriveAddress(ctx, signingKeyId(0));
|
|
43
|
+
return toBase58(Hash.ripemd160(toHex(Hash.sha256(address, 'utf8')), 'hex'));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve the BAP ID if the identity has been published.
|
|
47
|
+
*
|
|
48
|
+
* Returns the BAP ID if a `type:id` output exists in the BAP basket,
|
|
49
|
+
* null if the identity hasn't been published yet.
|
|
25
50
|
*/
|
|
26
51
|
export async function resolveBapId(ctx) {
|
|
27
52
|
const result = await ctx.wallet.listOutputs({
|
|
28
53
|
basket: BAP_BASKET,
|
|
29
54
|
tags: ['type:id'],
|
|
30
|
-
includeTags: true,
|
|
31
55
|
limit: 1,
|
|
32
56
|
});
|
|
33
57
|
if (!result.outputs.length)
|
|
34
58
|
return null;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
59
|
+
return computeBapId(ctx);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Find the current sequence number from BAP basket ID outputs.
|
|
63
|
+
* Returns the highest seq tag value, or null if no ID outputs exist.
|
|
64
|
+
*/
|
|
65
|
+
async function getCurrentSequence(ctx) {
|
|
66
|
+
const result = await ctx.wallet.listOutputs({
|
|
67
|
+
basket: BAP_BASKET,
|
|
68
|
+
tags: ['type:id'],
|
|
69
|
+
includeTags: true,
|
|
70
|
+
limit: 100,
|
|
71
|
+
});
|
|
72
|
+
if (!result.outputs.length)
|
|
38
73
|
return null;
|
|
39
|
-
|
|
74
|
+
let maxSeq = 0;
|
|
75
|
+
for (const output of result.outputs) {
|
|
76
|
+
const seqTag = output.tags?.find((t) => t.startsWith('seq:'));
|
|
77
|
+
if (!seqTag)
|
|
78
|
+
continue;
|
|
79
|
+
const seq = Number.parseInt(seqTag.slice(4), 10);
|
|
80
|
+
if (seq > maxSeq)
|
|
81
|
+
maxSeq = seq;
|
|
82
|
+
}
|
|
83
|
+
return maxSeq;
|
|
40
84
|
}
|
|
41
85
|
// ============================================================================
|
|
42
86
|
// Actions
|
|
43
87
|
// ============================================================================
|
|
44
88
|
/**
|
|
45
|
-
*
|
|
89
|
+
* Publish the initial BAP ID record.
|
|
46
90
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
91
|
+
* Derives identity-0 (root key), computes the BAP ID, and publishes
|
|
92
|
+
* the ID record signed by identity-0 via AIP. The output lands in
|
|
93
|
+
* the `bap` basket tagged with seq:1.
|
|
49
94
|
*
|
|
50
|
-
*
|
|
51
|
-
* 1. Script structure (BAP prefix, "ID" command, required fields)
|
|
52
|
-
* 2. AIP signature over the OP_RETURN content
|
|
53
|
-
* 3. currentAddress matches the wallet's BAP-derived key
|
|
95
|
+
* Returns an error if an identity has already been published.
|
|
54
96
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const prefix = chunks[2]?.data
|
|
67
|
-
? toUTF8(Array.from(chunks[2].data))
|
|
68
|
-
: '';
|
|
69
|
-
if (prefix !== BAP_BITCOM_ADDRESS) {
|
|
70
|
-
return { error: 'invalid-script: not a BAP record' };
|
|
71
|
-
}
|
|
72
|
-
// Verify "ID" command
|
|
73
|
-
const command = chunks[3]?.data
|
|
74
|
-
? toUTF8(Array.from(chunks[3].data))
|
|
75
|
-
: '';
|
|
76
|
-
if (command !== 'ID') {
|
|
77
|
-
return { error: 'invalid-script: not a BAP ID record' };
|
|
78
|
-
}
|
|
79
|
-
// Extract bapId and currentAddress
|
|
80
|
-
const bapIdData = chunks[4]?.data;
|
|
81
|
-
const currentAddressData = chunks[5]?.data;
|
|
82
|
-
if (!bapIdData || !currentAddressData) {
|
|
83
|
-
return { error: 'invalid-script: missing bapId or currentAddress' };
|
|
84
|
-
}
|
|
85
|
-
const bapId = toUTF8(Array.from(bapIdData));
|
|
86
|
-
const currentAddress = toUTF8(Array.from(currentAddressData));
|
|
87
|
-
// Find the pipe delimiter and AIP suffix
|
|
88
|
-
let aipStart = -1;
|
|
89
|
-
for (let i = 6; i < chunks.length; i++) {
|
|
90
|
-
const data = chunks[i]?.data;
|
|
91
|
-
if (data && toUTF8(Array.from(data)) === '|') {
|
|
92
|
-
aipStart = i + 1;
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (aipStart < 0 || aipStart + 3 >= chunks.length) {
|
|
97
|
-
return { error: 'invalid-script: missing AIP signature' };
|
|
98
|
-
}
|
|
99
|
-
// Verify AIP prefix
|
|
100
|
-
const aipPrefixData = chunks[aipStart]?.data;
|
|
101
|
-
if (!aipPrefixData || toUTF8(Array.from(aipPrefixData)) !== AIP_PREFIX) {
|
|
102
|
-
return { error: 'invalid-script: invalid AIP prefix' };
|
|
103
|
-
}
|
|
104
|
-
const aipAddressData = chunks[aipStart + 2]?.data;
|
|
105
|
-
const aipSigBytes = chunks[aipStart + 3]?.data;
|
|
106
|
-
if (!aipAddressData || !aipSigBytes) {
|
|
107
|
-
return { error: 'invalid-script: incomplete AIP signature' };
|
|
108
|
-
}
|
|
109
|
-
const aipAddress = toUTF8(Array.from(aipAddressData));
|
|
110
|
-
// Build the AIP message buffer (OP_RETURN + all push data before the pipe)
|
|
111
|
-
const message = [OP.OP_RETURN];
|
|
112
|
-
for (let i = 2; i < chunks.length; i++) {
|
|
113
|
-
const data = chunks[i]?.data;
|
|
114
|
-
if (data && toUTF8(Array.from(data)) === '|')
|
|
115
|
-
break;
|
|
116
|
-
if (data && data.length > 0) {
|
|
117
|
-
message.push(...Array.from(data));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Verify AIP signature
|
|
121
|
-
const bsmHash = BSM.magicHash(message);
|
|
122
|
-
const sig = Signature.fromCompact(Utils.toBase64(Array.from(aipSigBytes)), 'base64');
|
|
123
|
-
let sigValid = false;
|
|
124
|
-
for (let recovery = 0; recovery < 4; recovery++) {
|
|
97
|
+
export const publishIdentity = {
|
|
98
|
+
meta: {
|
|
99
|
+
name: 'publishIdentity',
|
|
100
|
+
description: 'Publish initial BAP identity record from wallet',
|
|
101
|
+
category: 'identity',
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: 'object',
|
|
104
|
+
properties: {},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
async execute(ctx) {
|
|
125
108
|
try {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
109
|
+
const existing = await ctx.wallet.listOutputs({
|
|
110
|
+
basket: BAP_BASKET,
|
|
111
|
+
tags: ['type:id'],
|
|
112
|
+
limit: 1,
|
|
113
|
+
});
|
|
114
|
+
if (existing.outputs.length) {
|
|
115
|
+
return { error: 'identity-exists: already published' };
|
|
131
116
|
}
|
|
117
|
+
const rootKeyId = signingKeyId(0);
|
|
118
|
+
const bapId = await computeBapId(ctx);
|
|
119
|
+
const currentAddress = await deriveAddress(ctx, rootKeyId);
|
|
120
|
+
const script = new Script();
|
|
121
|
+
script.writeOpCode(OP.OP_FALSE);
|
|
122
|
+
script.writeOpCode(OP.OP_RETURN);
|
|
123
|
+
script.writeBin(toArray(BAP_BITCOM_ADDRESS));
|
|
124
|
+
script.writeBin(toArray('ID'));
|
|
125
|
+
script.writeBin(toArray(bapId));
|
|
126
|
+
script.writeBin(toArray(currentAddress));
|
|
127
|
+
const signedScript = await applyBapAip(ctx, script, rootKeyId);
|
|
128
|
+
const result = await createTrackedAction(ctx.wallet, {
|
|
129
|
+
description: 'BAP identity publication',
|
|
130
|
+
outputs: [
|
|
131
|
+
{
|
|
132
|
+
lockingScript: signedScript.toHex(),
|
|
133
|
+
satoshis: 0,
|
|
134
|
+
outputDescription: 'BAP ID',
|
|
135
|
+
basket: BAP_BASKET,
|
|
136
|
+
tags: ['type:id', `bapId:${bapId}`, 'seq:1'],
|
|
137
|
+
customInstructions: JSON.stringify({
|
|
138
|
+
protocolID: BAP_PROTOCOL_ID,
|
|
139
|
+
keyID: rootKeyId,
|
|
140
|
+
}),
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
options: {
|
|
144
|
+
signAndProcess: true,
|
|
145
|
+
acceptDelayedBroadcast: false,
|
|
146
|
+
randomizeOutputs: false,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
if (!result.txid)
|
|
150
|
+
return { error: 'no-txid-returned' };
|
|
151
|
+
return {
|
|
152
|
+
txid: result.txid,
|
|
153
|
+
rawtx: result.tx ? Utils.toHex(result.tx) : undefined,
|
|
154
|
+
bapId,
|
|
155
|
+
};
|
|
132
156
|
}
|
|
133
|
-
catch {
|
|
134
|
-
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error('[publishIdentity]', error);
|
|
159
|
+
return {
|
|
160
|
+
error: error instanceof Error ? error.message : 'unknown-error',
|
|
161
|
+
};
|
|
135
162
|
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return { error: 'invalid-signature: AIP signature verification failed' };
|
|
139
|
-
}
|
|
140
|
-
// Verify currentAddress matches this wallet's BAP-derived key
|
|
141
|
-
const { publicKey: walletBapPubKey } = await ctx.wallet.getPublicKey({
|
|
142
|
-
protocolID: BAP_PROTOCOL_ID,
|
|
143
|
-
keyID: BAP_KEY_ID,
|
|
144
|
-
counterparty: 'self',
|
|
145
|
-
});
|
|
146
|
-
const walletBapAddress = PublicKey.fromString(walletBapPubKey).toAddress();
|
|
147
|
-
if (currentAddress !== walletBapAddress) {
|
|
148
|
-
return {
|
|
149
|
-
error: `address-mismatch: script currentAddress ${currentAddress} does not match wallet BAP address ${walletBapAddress}`,
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
return { bapId, currentAddress };
|
|
153
|
-
}
|
|
163
|
+
},
|
|
164
|
+
};
|
|
154
165
|
/**
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
* The caller (Sigma Identity) signs the ID OP_RETURN with the root key
|
|
158
|
-
* via PrivateKeySigner + AIP. This action validates the script, verifies
|
|
159
|
-
* the AIP signature, confirms the currentAddress matches this wallet,
|
|
160
|
-
* then funds the transaction via the BRC-100 wallet. The output lands
|
|
161
|
-
* in the `bap` basket so that resolveBapId() can find it.
|
|
166
|
+
* Rotate the BAP signing key.
|
|
162
167
|
*
|
|
163
|
-
*
|
|
168
|
+
* Finds the current signing key (highest sequence), derives the next
|
|
169
|
+
* key (identity-{N+1}), builds a new BAP ID record declaring the new
|
|
170
|
+
* currentAddress, signs it with the outgoing key, and publishes.
|
|
171
|
+
* The previous ID output is relinquished.
|
|
164
172
|
*/
|
|
165
|
-
export const
|
|
173
|
+
export const rotateIdentity = {
|
|
166
174
|
meta: {
|
|
167
|
-
name: '
|
|
168
|
-
description: '
|
|
175
|
+
name: 'rotateIdentity',
|
|
176
|
+
description: 'Rotate BAP signing key to the next derived key',
|
|
169
177
|
category: 'identity',
|
|
170
178
|
inputSchema: {
|
|
171
179
|
type: 'object',
|
|
172
|
-
properties: {
|
|
173
|
-
signedScript: {
|
|
174
|
-
type: 'string',
|
|
175
|
-
description: 'Pre-signed BAP ID locking script hex (AIP-signed with root key)',
|
|
176
|
-
},
|
|
177
|
-
},
|
|
178
|
-
required: ['signedScript'],
|
|
180
|
+
properties: {},
|
|
179
181
|
},
|
|
180
182
|
},
|
|
181
|
-
async execute(ctx
|
|
183
|
+
async execute(ctx) {
|
|
182
184
|
try {
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return { error: validation.error };
|
|
185
|
+
const currentSeq = await getCurrentSequence(ctx);
|
|
186
|
+
if (currentSeq === null) {
|
|
187
|
+
return { error: 'no-identity: publish identity first' };
|
|
187
188
|
}
|
|
188
|
-
const
|
|
189
|
-
const
|
|
190
|
-
|
|
189
|
+
const currentKeyId = await resolveCurrentKeyId(ctx);
|
|
190
|
+
const bapId = await computeBapId(ctx);
|
|
191
|
+
const nextSeq = currentSeq + 1;
|
|
192
|
+
const nextKeyId = signingKeyId(nextSeq - 1);
|
|
193
|
+
const nextAddress = await deriveAddress(ctx, nextKeyId);
|
|
194
|
+
const script = new Script();
|
|
195
|
+
script.writeOpCode(OP.OP_FALSE);
|
|
196
|
+
script.writeOpCode(OP.OP_RETURN);
|
|
197
|
+
script.writeBin(toArray(BAP_BITCOM_ADDRESS));
|
|
198
|
+
script.writeBin(toArray('ID'));
|
|
199
|
+
script.writeBin(toArray(bapId));
|
|
200
|
+
script.writeBin(toArray(nextAddress));
|
|
201
|
+
const signedScript = await applyBapAip(ctx, script, currentKeyId);
|
|
202
|
+
// Find existing ID outputs to relinquish after rotation
|
|
203
|
+
const existingIds = await ctx.wallet.listOutputs({
|
|
204
|
+
basket: BAP_BASKET,
|
|
205
|
+
tags: ['type:id'],
|
|
206
|
+
limit: 100,
|
|
207
|
+
});
|
|
208
|
+
const result = await createTrackedAction(ctx.wallet, {
|
|
209
|
+
description: 'BAP key rotation',
|
|
191
210
|
outputs: [
|
|
192
211
|
{
|
|
193
|
-
lockingScript:
|
|
212
|
+
lockingScript: signedScript.toHex(),
|
|
194
213
|
satoshis: 0,
|
|
195
214
|
outputDescription: 'BAP ID',
|
|
196
215
|
basket: BAP_BASKET,
|
|
197
|
-
tags: ['type:id', `bapId:${bapId}`],
|
|
216
|
+
tags: ['type:id', `bapId:${bapId}`, `seq:${nextSeq}`],
|
|
217
|
+
customInstructions: JSON.stringify({
|
|
218
|
+
protocolID: BAP_PROTOCOL_ID,
|
|
219
|
+
keyID: nextKeyId,
|
|
220
|
+
}),
|
|
198
221
|
},
|
|
199
222
|
],
|
|
200
223
|
options: {
|
|
@@ -205,13 +228,20 @@ export const publishIdentity = {
|
|
|
205
228
|
});
|
|
206
229
|
if (!result.txid)
|
|
207
230
|
return { error: 'no-txid-returned' };
|
|
231
|
+
for (const old of existingIds.outputs) {
|
|
232
|
+
await ctx.wallet.relinquishOutput({
|
|
233
|
+
basket: BAP_BASKET,
|
|
234
|
+
output: old.outpoint,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
208
237
|
return {
|
|
209
238
|
txid: result.txid,
|
|
210
239
|
rawtx: result.tx ? Utils.toHex(result.tx) : undefined,
|
|
240
|
+
bapId,
|
|
211
241
|
};
|
|
212
242
|
}
|
|
213
243
|
catch (error) {
|
|
214
|
-
console.error('[
|
|
244
|
+
console.error('[rotateIdentity]', error);
|
|
215
245
|
return {
|
|
216
246
|
error: error instanceof Error ? error.message : 'unknown-error',
|
|
217
247
|
};
|
|
@@ -222,7 +252,7 @@ export const publishIdentity = {
|
|
|
222
252
|
* Publish a BAP ATTEST transaction.
|
|
223
253
|
*
|
|
224
254
|
* OP_RETURN: BAP_PREFIX | "ATTEST" | attestation_hash | counter
|
|
225
|
-
* Signed with AIP via the
|
|
255
|
+
* Signed with AIP via the current signing key.
|
|
226
256
|
*/
|
|
227
257
|
export const attest = {
|
|
228
258
|
meta: {
|
|
@@ -246,6 +276,10 @@ export const attest = {
|
|
|
246
276
|
},
|
|
247
277
|
async execute(ctx, input) {
|
|
248
278
|
try {
|
|
279
|
+
const bapId = await resolveBapId(ctx);
|
|
280
|
+
if (!bapId) {
|
|
281
|
+
return { error: 'no-identity: publish identity first' };
|
|
282
|
+
}
|
|
249
283
|
const script = new Script();
|
|
250
284
|
script.writeOpCode(OP.OP_FALSE);
|
|
251
285
|
script.writeOpCode(OP.OP_RETURN);
|
|
@@ -253,8 +287,8 @@ export const attest = {
|
|
|
253
287
|
script.writeBin(toArray('ATTEST'));
|
|
254
288
|
script.writeBin(toArray(input.attestationHash));
|
|
255
289
|
script.writeBin(toArray(input.counter ?? '0'));
|
|
256
|
-
const signedScript = await
|
|
257
|
-
const result = await ctx.wallet
|
|
290
|
+
const signedScript = await applyBapAip(ctx, script);
|
|
291
|
+
const result = await createTrackedAction(ctx.wallet, {
|
|
258
292
|
description: 'BAP attestation',
|
|
259
293
|
outputs: [
|
|
260
294
|
{
|
|
@@ -290,9 +324,7 @@ export const attest = {
|
|
|
290
324
|
* Publish a BAP ALIAS transaction to update the identity's profile.
|
|
291
325
|
*
|
|
292
326
|
* OP_RETURN: BAP_PREFIX | "ALIAS" | bap_id | profile_json
|
|
293
|
-
* Signed with AIP via the
|
|
294
|
-
*
|
|
295
|
-
* The BAP ID is resolved from the wallet's `bap` basket (seeded by Sigma Identity).
|
|
327
|
+
* Signed with AIP via the current signing key.
|
|
296
328
|
*/
|
|
297
329
|
export const updateProfile = {
|
|
298
330
|
meta: {
|
|
@@ -314,11 +346,8 @@ export const updateProfile = {
|
|
|
314
346
|
try {
|
|
315
347
|
const bapId = await resolveBapId(ctx);
|
|
316
348
|
if (!bapId) {
|
|
317
|
-
return {
|
|
318
|
-
error: 'no-bap-identity: publish identity via Sigma Identity first',
|
|
319
|
-
};
|
|
349
|
+
return { error: 'no-identity: publish identity first' };
|
|
320
350
|
}
|
|
321
|
-
// Find existing alias outputs to relinquish after the new one is created
|
|
322
351
|
const existing = await ctx.wallet.listOutputs({
|
|
323
352
|
basket: BAP_BASKET,
|
|
324
353
|
tags: ['type:alias'],
|
|
@@ -331,8 +360,8 @@ export const updateProfile = {
|
|
|
331
360
|
script.writeBin(toArray('ALIAS'));
|
|
332
361
|
script.writeBin(toArray(bapId));
|
|
333
362
|
script.writeBin(toArray(JSON.stringify(input.profile)));
|
|
334
|
-
const signedScript = await
|
|
335
|
-
const result = await ctx.wallet
|
|
363
|
+
const signedScript = await applyBapAip(ctx, script);
|
|
364
|
+
const result = await createTrackedAction(ctx.wallet, {
|
|
336
365
|
description: 'BAP alias update',
|
|
337
366
|
outputs: [
|
|
338
367
|
{
|
|
@@ -351,7 +380,6 @@ export const updateProfile = {
|
|
|
351
380
|
});
|
|
352
381
|
if (!result.txid)
|
|
353
382
|
return { error: 'no-txid-returned' };
|
|
354
|
-
// Relinquish old alias outputs now that the new one is committed
|
|
355
383
|
for (const old of existing.outputs) {
|
|
356
384
|
await ctx.wallet.relinquishOutput({
|
|
357
385
|
basket: BAP_BASKET,
|
|
@@ -399,11 +427,8 @@ export const getProfile = {
|
|
|
399
427
|
if (!result.outputs.length) {
|
|
400
428
|
return { error: 'no-profile: no alias output in wallet' };
|
|
401
429
|
}
|
|
402
|
-
// Parse profile from the first output's locking script
|
|
403
430
|
const primary = result.outputs[0];
|
|
404
431
|
const script = Script.fromHex(primary.lockingScript ?? '');
|
|
405
|
-
// Script: OP_FALSE OP_RETURN <BAP_PREFIX> <"ALIAS"> <bapId> <profileJson> [| AIP...]
|
|
406
|
-
// Chunks: [0]=OP_FALSE [1]=OP_RETURN [2]=BAP_PREFIX [3]="ALIAS" [4]=bapId [5]=profileJson
|
|
407
432
|
const bapIdChunk = script.chunks[4]?.data;
|
|
408
433
|
const profileChunk = script.chunks[5]?.data;
|
|
409
434
|
if (!bapIdChunk || !profileChunk) {
|
|
@@ -411,7 +436,6 @@ export const getProfile = {
|
|
|
411
436
|
}
|
|
412
437
|
const bapId = Utils.toUTF8(Array.from(bapIdChunk));
|
|
413
438
|
const profile = JSON.parse(Utils.toUTF8(Array.from(profileChunk)));
|
|
414
|
-
// Relinquish duplicates
|
|
415
439
|
for (const dup of result.outputs.slice(1)) {
|
|
416
440
|
await ctx.wallet.relinquishOutput({
|
|
417
441
|
basket: BAP_BASKET,
|
|
@@ -429,5 +453,11 @@ export const getProfile = {
|
|
|
429
453
|
},
|
|
430
454
|
};
|
|
431
455
|
/** All identity actions for registry */
|
|
432
|
-
export const identityActions = [
|
|
456
|
+
export const identityActions = [
|
|
457
|
+
publishIdentity,
|
|
458
|
+
rotateIdentity,
|
|
459
|
+
attest,
|
|
460
|
+
updateProfile,
|
|
461
|
+
getProfile,
|
|
462
|
+
];
|
|
433
463
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACN,GAAG,EACH,SAAS,EACT,EAAE,EACF,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,GACL,MAAM,UAAU,CAAA;AACjB,OAAO,EACN,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,eAAe,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;AAEjC,MAAM,UAAU,GAAG,oCAAoC,CAAA;AAEvD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAkB;IACpD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3C,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,CAAC;KACR,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC;AAmCD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,KAAK,UAAU,mBAAmB,CACjC,GAAkB,EAClB,MAAc;IAId,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAE5B,4GAA4G;IAC5G,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAA;IACnD,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;QACnE,OAAO,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAA;IAC/D,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI;QAC7B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAA;IACL,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAA;IACrD,CAAC;IAED,sBAAsB;IACtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI;QAC9B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAA;IACL,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAA;IACxD,CAAC;IAED,mCAAmC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;IACjC,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;IAC1C,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAA;IACpE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAE7D,yCAAyC;IACzC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;QAC5B,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9C,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YAChB,MAAK;QACN,CAAC;IACF,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAA;IAC1D,CAAC;IAED,oBAAoB;IACpB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;IAC5C,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAA;IACvD,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,CAAA;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,CAAA;IAC9C,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAA;IAC7D,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAErD,2EAA2E;IAC3E,MAAM,OAAO,GAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;QAC5B,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;YAAE,MAAK;QACnD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAClC,CAAC;IACF,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAChC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EACvC,QAAQ,CACR,CAAA;IAED,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAClC,QAAQ,EACR,IAAI,SAAS,CAAC,OAAO,CAAC,CACtB,CAAA;YACD,IACC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC;gBAChC,MAAM,CAAC,SAAS,EAAE,KAAK,UAAU,EAChC,CAAC;gBACF,QAAQ,GAAG,IAAI,CAAA;gBACf,MAAK;YACN,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,2BAA2B;QAC5B,CAAC;IACF,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAA;IACzE,CAAC;IAED,8DAA8D;IAC9D,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QACpE,UAAU,EAAE,eAAe;QAC3B,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,MAAM;KACpB,CAAC,CAAA;IACF,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAA;IAE1E,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;QACzC,OAAO;YACN,KAAK,EAAE,2CAA2C,cAAc,sCAAsC,gBAAgB,EAAE;SACxH,CAAA;IACF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAC3B;IACC,IAAI,EAAE;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACV,wEAAwE;QACzE,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACX,YAAY,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,WAAW,EACV,iEAAiE;iBAClE;aACD;YACD,QAAQ,EAAE,CAAC,cAAc,CAAC;SAC1B;KACD;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;QACvB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACjD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAEzD,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;gBAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAA;YACnC,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;YAE5B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5C,WAAW,EAAE,0BAA0B;gBACvC,OAAO,EAAE;oBACR;wBACC,aAAa,EAAE,KAAK,CAAC,YAAY;wBACjC,QAAQ,EAAE,CAAC;wBACX,iBAAiB,EAAE,QAAQ;wBAC3B,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC;qBACnC;iBACD;gBACD,OAAO,EAAE;oBACR,cAAc,EAAE,IAAI;oBACpB,sBAAsB,EAAE,KAAK;oBAC7B,gBAAgB,EAAE,KAAK;iBACvB;aACD,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;YAEtD,OAAO;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACrD,CAAA;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;YACzC,OAAO;gBACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC/D,CAAA;QACF,CAAC;IACF,CAAC;CACD,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAA4C;IAC9D,IAAI,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oDAAoD;QACjE,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACX,eAAe,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EACV,wEAAwE;iBACzE;gBACD,OAAO,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACxD;aACD;YACD,QAAQ,EAAE,CAAC,iBAAiB,CAAC;SAC7B;KACD;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;QACvB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;YAC3B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;YAC/B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;YAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;YAC/C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAA;YAE9C,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAEhD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5C,WAAW,EAAE,iBAAiB;gBAC9B,OAAO,EAAE;oBACR;wBACC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE;wBACnC,QAAQ,EAAE,CAAC;wBACX,iBAAiB,EAAE,YAAY;wBAC/B,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,CAAC,aAAa,EAAE,QAAQ,KAAK,CAAC,eAAe,EAAE,CAAC;qBACtD;iBACD;gBACD,OAAO,EAAE;oBACR,cAAc,EAAE,IAAI;oBACpB,sBAAsB,EAAE,KAAK;oBAC7B,gBAAgB,EAAE,KAAK;iBACvB;aACD,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;YAEtD,OAAO;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACrD,CAAA;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAChC,OAAO;gBACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC/D,CAAA;QACF,CAAC;IACF,CAAC;CACD,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAmD;IAC5E,IAAI,EAAE;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EACV,uEAAuE;iBACxE;aACD;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACrB;KACD;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;QACvB,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAA;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO;oBACN,KAAK,EAAE,4DAA4D;iBACnE,CAAA;YACF,CAAC;YAED,yEAAyE;YACzE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC7C,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,KAAK,EAAE,GAAG;aACV,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;YAC3B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;YAC/B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;YACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAEvD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAEhD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5C,WAAW,EAAE,kBAAkB;gBAC/B,OAAO,EAAE;oBACR;wBACC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE;wBACnC,QAAQ,EAAE,CAAC;wBACX,iBAAiB,EAAE,WAAW;wBAC9B,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,KAAK,EAAE,CAAC;qBACtC;iBACD;gBACD,OAAO,EAAE;oBACR,cAAc,EAAE,IAAI;oBACpB,sBAAsB,EAAE,KAAK;oBAC7B,gBAAgB,EAAE,KAAK;iBACvB;aACD,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;YAEtD,iEAAiE;YACjE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACpC,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACjC,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,GAAG,CAAC,QAAQ;iBACpB,CAAC,CAAA;YACH,CAAC;YAED,OAAO;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACrD,CAAA;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA;YACvC,OAAO;gBACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC/D,CAAA;QACF,CAAC;IACF,CAAC;CACD,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmD;IACzE,IAAI,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACd;KACD;IACD,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC3C,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,IAAI;gBACjB,KAAK,EAAE,GAAG;aACV,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC5B,OAAO,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAA;YAC1D,CAAC;YAED,uDAAuD;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;YAC1D,qFAAqF;YACrF,0FAA0F;YAC1F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;YACzC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;YAE3C,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClC,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAA;YACpE,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACzB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CACX,CAAA;YAE5B,wBAAwB;YACxB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACjC,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,GAAG,CAAC,QAAQ;iBACpB,CAAC,CAAA;YACH,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;YACpC,OAAO;gBACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC/D,CAAA;QACF,CAAC;IACF,CAAC;CACD,CAAA;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"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"}
|
package/dist/signing/aip.d.ts
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
import { Script } from '@bsv/sdk';
|
|
2
2
|
import type { OneSatContext } from '../types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* AIP protocol suffix to the provided locking script.
|
|
4
|
+
* Resolve the current BAP signing key ID from the wallet's basket.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Scans `type:id` outputs for the highest `seq:N` tag and reads the
|
|
7
|
+
* keyID from customInstructions. Falls back to `identity-0` if no
|
|
8
|
+
* ID outputs exist (identity not yet published).
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveCurrentKeyId(ctx: OneSatContext): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Sign OP_RETURN data with AIP using any wallet-derived key.
|
|
13
|
+
*
|
|
14
|
+
* General-purpose AIP signing — takes full derivation parameters
|
|
15
|
+
* (protocolID, keyID, counterparty) to sign with any derivable address.
|
|
16
|
+
*
|
|
17
|
+
* The returned script contains the original locking script followed by:
|
|
10
18
|
* `| AIP_PREFIX BITCOIN_ECDSA <address> <compactSig>`
|
|
11
19
|
*/
|
|
12
|
-
export declare function applyAip(ctx: OneSatContext, lockingScript: Script): Promise<Script>;
|
|
20
|
+
export declare function applyAip(ctx: OneSatContext, lockingScript: Script, protocolID: [0 | 1 | 2, string], keyID: string, counterparty: string): Promise<Script>;
|
|
21
|
+
/**
|
|
22
|
+
* Sign OP_RETURN data with AIP using the BAP signing key.
|
|
23
|
+
*
|
|
24
|
+
* When keyID is omitted, resolves the current signing key from the
|
|
25
|
+
* wallet's BAP basket (highest sequence output).
|
|
26
|
+
*/
|
|
27
|
+
export declare function applyBapAip(ctx: OneSatContext, lockingScript: Script, keyID?: string): Promise<Script>;
|
|
13
28
|
//# sourceMappingURL=aip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aip.d.ts","sourceRoot":"","sources":["../../src/signing/aip.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,MAAM,EAAS,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"aip.d.ts","sourceRoot":"","sources":["../../src/signing/aip.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,MAAM,EAAS,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAM7C;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACxC,GAAG,EAAE,aAAa,GAChB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AA4BD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC7B,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAChC,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
package/dist/signing/aip.js
CHANGED
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
import { AIP, WalletSigner } from '@bopen-io/templates';
|
|
2
2
|
import { OP, Script, Utils } from '@bsv/sdk';
|
|
3
|
-
import { BAP_KEY_ID, BAP_PROTOCOL_ID } from '../constants';
|
|
3
|
+
import { BAP_BASKET, BAP_KEY_ID, BAP_PROTOCOL_ID } from '../constants';
|
|
4
4
|
const { toArray } = Utils;
|
|
5
5
|
const AIP_PREFIX = '15PciHG22SNLQJXMoSUaWVi7WSqc7hCfva';
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the current BAP signing key ID from the wallet's basket.
|
|
8
|
+
*
|
|
9
|
+
* Scans `type:id` outputs for the highest `seq:N` tag and reads the
|
|
10
|
+
* keyID from customInstructions. Falls back to `identity-0` if no
|
|
11
|
+
* ID outputs exist (identity not yet published).
|
|
12
|
+
*/
|
|
13
|
+
export async function resolveCurrentKeyId(ctx) {
|
|
14
|
+
const result = await ctx.wallet.listOutputs({
|
|
15
|
+
basket: BAP_BASKET,
|
|
16
|
+
tags: ['type:id'],
|
|
17
|
+
includeTags: true,
|
|
18
|
+
includeCustomInstructions: true,
|
|
19
|
+
limit: 100,
|
|
20
|
+
});
|
|
21
|
+
let maxSeq = 0;
|
|
22
|
+
let keyID = `${BAP_KEY_ID}-0`;
|
|
23
|
+
for (const output of result.outputs) {
|
|
24
|
+
const seqTag = output.tags?.find((t) => t.startsWith('seq:'));
|
|
25
|
+
if (!seqTag)
|
|
26
|
+
continue;
|
|
27
|
+
const seq = Number.parseInt(seqTag.slice(4), 10);
|
|
28
|
+
if (seq > maxSeq && output.customInstructions) {
|
|
29
|
+
maxSeq = seq;
|
|
30
|
+
const info = JSON.parse(output.customInstructions);
|
|
31
|
+
keyID = info.keyID;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return keyID;
|
|
35
|
+
}
|
|
6
36
|
/**
|
|
7
37
|
* Build the AIP message buffer from a locking script's OP_RETURN data.
|
|
8
38
|
*
|
|
@@ -28,17 +58,17 @@ function getAipMessageBuffer(lockingScript) {
|
|
|
28
58
|
return buf;
|
|
29
59
|
}
|
|
30
60
|
/**
|
|
31
|
-
* Sign OP_RETURN data with AIP using
|
|
32
|
-
*
|
|
61
|
+
* Sign OP_RETURN data with AIP using any wallet-derived key.
|
|
62
|
+
*
|
|
63
|
+
* General-purpose AIP signing — takes full derivation parameters
|
|
64
|
+
* (protocolID, keyID, counterparty) to sign with any derivable address.
|
|
33
65
|
*
|
|
34
|
-
*
|
|
35
|
-
* transaction — simpler than Sigma). The returned script contains the
|
|
36
|
-
* original locking script followed by:
|
|
66
|
+
* The returned script contains the original locking script followed by:
|
|
37
67
|
* `| AIP_PREFIX BITCOIN_ECDSA <address> <compactSig>`
|
|
38
68
|
*/
|
|
39
|
-
export async function applyAip(ctx, lockingScript) {
|
|
69
|
+
export async function applyAip(ctx, lockingScript, protocolID, keyID, counterparty) {
|
|
40
70
|
const message = getAipMessageBuffer(lockingScript);
|
|
41
|
-
const signer = new WalletSigner(ctx.wallet,
|
|
71
|
+
const signer = new WalletSigner(ctx.wallet, protocolID, keyID, counterparty);
|
|
42
72
|
const aip = await AIP.sign(message, signer);
|
|
43
73
|
const out = new Script(lockingScript.chunks.slice());
|
|
44
74
|
out.writeBin(toArray('|'));
|
|
@@ -48,4 +78,14 @@ export async function applyAip(ctx, lockingScript) {
|
|
|
48
78
|
out.writeBin(aip.data.signature);
|
|
49
79
|
return out;
|
|
50
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Sign OP_RETURN data with AIP using the BAP signing key.
|
|
83
|
+
*
|
|
84
|
+
* When keyID is omitted, resolves the current signing key from the
|
|
85
|
+
* wallet's BAP basket (highest sequence output).
|
|
86
|
+
*/
|
|
87
|
+
export async function applyBapAip(ctx, lockingScript, keyID) {
|
|
88
|
+
const resolvedKeyID = keyID ?? (await resolveCurrentKeyId(ctx));
|
|
89
|
+
return applyAip(ctx, lockingScript, BAP_PROTOCOL_ID, resolvedKeyID, 'self');
|
|
90
|
+
}
|
|
51
91
|
//# sourceMappingURL=aip.js.map
|
package/dist/signing/aip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aip.js","sourceRoot":"","sources":["../../src/signing/aip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"aip.js","sourceRoot":"","sources":["../../src/signing/aip.ts"],"names":[],"mappings":"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"}
|
package/dist/signing/index.d.ts
CHANGED
|
@@ -33,6 +33,6 @@ export interface SignBsmResponse extends Partial<SignedMessage> {
|
|
|
33
33
|
export declare const signBsm: Action<SignBsmRequest, SignBsmResponse>;
|
|
34
34
|
/** All signing actions for registry */
|
|
35
35
|
export declare const signingActions: Action<SignBsmRequest, SignBsmResponse>[];
|
|
36
|
-
export { applyAip } from './aip';
|
|
36
|
+
export { applyAip, applyBapAip, resolveCurrentKeyId } from './aip';
|
|
37
37
|
export { applySigma } from './sigma';
|
|
38
38
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMtC,MAAM,WAAW,cAAc;IAC9B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACpC,uCAAuC;IACvC,GAAG,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAqE3D,CAAA;AAMD,uCAAuC;AACvC,eAAO,MAAM,cAAc,2CAAY,CAAA;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMtC,MAAM,WAAW,cAAc;IAC9B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACpC,uCAAuC;IACvC,GAAG,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAqE3D,CAAA;AAMD,uCAAuC;AACvC,eAAO,MAAM,cAAc,2CAAY,CAAA;AAGvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/signing/index.js
CHANGED
|
@@ -81,6 +81,6 @@ export const signBsm = {
|
|
|
81
81
|
/** All signing actions for registry */
|
|
82
82
|
export const signingActions = [signBsm];
|
|
83
83
|
// Signing helpers
|
|
84
|
-
export { applyAip } from './aip';
|
|
84
|
+
export { applyAip, applyBapAip, resolveCurrentKeyId } from './aip';
|
|
85
85
|
export { applySigma } from './sigma';
|
|
86
86
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"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"}
|