algosdk 3.6.0 → 3.7.0-beta.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/dist/browser/algosdk.min.js +1 -1
- package/dist/browser/algosdk.min.js.map +1 -1
- package/dist/cjs/client/v2/algod/algod.js +0 -18
- package/dist/cjs/client/v2/algod/algod.js.map +1 -1
- package/dist/cjs/client/v2/algod/models/types.js +2 -434
- package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
- package/dist/cjs/ed25519-signer.js +76 -0
- package/dist/cjs/ed25519-signer.js.map +1 -0
- package/dist/cjs/encoding/address.js +61 -1
- package/dist/cjs/encoding/address.js.map +1 -1
- package/dist/cjs/falcon-signer.js +17 -0
- package/dist/cjs/falcon-signer.js.map +1 -0
- package/dist/cjs/logicsig.js +201 -16
- package/dist/cjs/logicsig.js.map +1 -1
- package/dist/cjs/main.js +32 -63
- package/dist/cjs/main.js.map +1 -1
- package/dist/cjs/mnemonic/mnemonic.js +26 -1
- package/dist/cjs/mnemonic/mnemonic.js.map +1 -1
- package/dist/cjs/multisigSigning.js +78 -1
- package/dist/cjs/multisigSigning.js.map +1 -1
- package/dist/cjs/pq-signer.js +54 -0
- package/dist/cjs/pq-signer.js.map +1 -0
- package/dist/cjs/signedTransaction.js +15 -1
- package/dist/cjs/signedTransaction.js.map +1 -1
- package/dist/cjs/signer.js.map +1 -1
- package/dist/cjs/signing.js +94 -7
- package/dist/cjs/signing.js.map +1 -1
- package/dist/cjs/transaction.js +9 -1
- package/dist/cjs/transaction.js.map +1 -1
- package/dist/cjs/types/transactions/encoded.js +51 -1
- package/dist/cjs/types/transactions/encoded.js.map +1 -1
- package/dist/cjs/utils/ed25519-check.js +69 -0
- package/dist/cjs/utils/ed25519-check.js.map +1 -0
- package/dist/esm/client/v2/algod/algod.js +0 -18
- package/dist/esm/client/v2/algod/algod.js.map +1 -1
- package/dist/esm/client/v2/algod/models/types.js +0 -427
- package/dist/esm/client/v2/algod/models/types.js.map +1 -1
- package/dist/esm/ed25519-signer.js +72 -0
- package/dist/esm/ed25519-signer.js.map +1 -0
- package/dist/esm/encoding/address.js +58 -0
- package/dist/esm/encoding/address.js.map +1 -1
- package/dist/esm/falcon-signer.js +13 -0
- package/dist/esm/falcon-signer.js.map +1 -0
- package/dist/esm/logicsig.js +200 -15
- package/dist/esm/logicsig.js.map +1 -1
- package/dist/esm/main.js +8 -56
- package/dist/esm/main.js.map +1 -1
- package/dist/esm/mnemonic/mnemonic.js +25 -1
- package/dist/esm/mnemonic/mnemonic.js.map +1 -1
- package/dist/esm/multisigSigning.js +75 -0
- package/dist/esm/multisigSigning.js.map +1 -1
- package/dist/esm/pq-signer.js +50 -0
- package/dist/esm/pq-signer.js.map +1 -0
- package/dist/esm/signedTransaction.js +16 -2
- package/dist/esm/signedTransaction.js.map +1 -1
- package/dist/esm/signer.js.map +1 -1
- package/dist/esm/signing.js +91 -8
- package/dist/esm/signing.js.map +1 -1
- package/dist/esm/transaction.js +9 -1
- package/dist/esm/transaction.js.map +1 -1
- package/dist/esm/types/transactions/encoded.js +49 -1
- package/dist/esm/types/transactions/encoded.js.map +1 -1
- package/dist/esm/utils/ed25519-check.js +65 -0
- package/dist/esm/utils/ed25519-check.js.map +1 -0
- package/dist/types/client/v2/algod/algod.d.ts +0 -16
- package/dist/types/client/v2/algod/models/types.d.ts +0 -217
- package/dist/types/ed25519-signer.d.ts +7 -0
- package/dist/types/encoding/address.d.ts +37 -0
- package/dist/types/falcon-signer.d.ts +11 -0
- package/dist/types/logicsig.d.ts +72 -1
- package/dist/types/main.d.ts +8 -44
- package/dist/types/mnemonic/mnemonic.d.ts +13 -0
- package/dist/types/multisigSigning.d.ts +49 -0
- package/dist/types/pq-signer.d.ts +8 -0
- package/dist/types/signedTransaction.d.ts +7 -2
- package/dist/types/signer.d.ts +38 -0
- package/dist/types/signing.d.ts +45 -0
- package/dist/types/transaction.d.ts +9 -0
- package/dist/types/types/transactions/encoded.d.ts +27 -0
- package/dist/types/utils/ed25519-check.d.ts +10 -0
- package/package.json +2 -1
- package/src/client/v2/algod/algod.ts +0 -19
- package/src/client/v2/algod/models/types.ts +0 -700
- package/src/ed25519-signer.ts +125 -0
- package/src/encoding/address.ts +80 -0
- package/src/falcon-signer.ts +30 -0
- package/src/logicsig.ts +258 -16
- package/src/main.ts +30 -60
- package/src/mnemonic/mnemonic.ts +34 -1
- package/src/multisigSigning.ts +111 -0
- package/src/pq-signer.ts +90 -0
- package/src/signedTransaction.ts +24 -0
- package/src/signer.ts +53 -0
- package/src/signing.ts +109 -8
- package/src/transaction.ts +9 -1
- package/src/types/transactions/encoded.ts +88 -0
- package/src/utils/ed25519-check.ts +67 -0
- package/dist/cjs/client/v2/algod/dryrun.js +0 -34
- package/dist/cjs/client/v2/algod/dryrun.js.map +0 -1
- package/dist/cjs/dryrun.js +0 -214
- package/dist/cjs/dryrun.js.map +0 -1
- package/dist/esm/client/v2/algod/dryrun.js +0 -28
- package/dist/esm/client/v2/algod/dryrun.js.map +0 -1
- package/dist/esm/dryrun.js +0 -208
- package/dist/esm/dryrun.js.map +0 -1
- package/dist/types/client/v2/algod/dryrun.d.ts +0 -11
- package/dist/types/dryrun.d.ts +0 -28
- package/src/client/v2/algod/dryrun.ts +0 -38
- package/src/dryrun.ts +0 -292
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Address } from './encoding/address.js';
|
|
2
|
+
import { encodeMsgpack } from './encoding/encoding.js';
|
|
3
|
+
import { MSIG_PROGRAM_TAG, PROGRAM_TAG, SIGN_PROGRAM_DATA_PREFIX, } from './logicsig.js';
|
|
4
|
+
import { addressFromMultisigPreImg, pksFromAddresses } from './multisig.js';
|
|
5
|
+
import { SignedTransaction } from './signedTransaction.js';
|
|
6
|
+
import { SIGN_BYTES_PREFIX } from './signing.js';
|
|
7
|
+
import { arrayEqual, concatArrays } from './utils/utils.js';
|
|
8
|
+
export function addressWithSignersFromRawEd25519Signer(ed25519SigningKey, sendingAddress = new Address(ed25519SigningKey.ed25519PublicKey)) {
|
|
9
|
+
const authAddress = new Address(ed25519SigningKey.ed25519PublicKey);
|
|
10
|
+
const { ed25519Signer: rawSigner } = ed25519SigningKey;
|
|
11
|
+
const txnSigner = async (txnGroup, indexesToSign) => {
|
|
12
|
+
const stxns = [];
|
|
13
|
+
for (const index of indexesToSign) {
|
|
14
|
+
const txn = txnGroup[index];
|
|
15
|
+
// eslint-disable-next-line no-await-in-loop
|
|
16
|
+
const sig = await rawSigner(txn.bytesToSign());
|
|
17
|
+
const stxn = new SignedTransaction({
|
|
18
|
+
txn,
|
|
19
|
+
sig,
|
|
20
|
+
sgnr: txn.sender.equals(authAddress) ? undefined : authAddress,
|
|
21
|
+
});
|
|
22
|
+
stxns.push(stxn);
|
|
23
|
+
}
|
|
24
|
+
return stxns.map((stxn) => encodeMsgpack(stxn));
|
|
25
|
+
};
|
|
26
|
+
const delegatedLsigSigner = async (lsig, msig) => {
|
|
27
|
+
if (msig) {
|
|
28
|
+
const pks = pksFromAddresses(msig.addrs);
|
|
29
|
+
const multisigAddr = addressFromMultisigPreImg({
|
|
30
|
+
version: msig.version,
|
|
31
|
+
threshold: msig.threshold,
|
|
32
|
+
pks,
|
|
33
|
+
});
|
|
34
|
+
const toBeSigned = concatArrays(MSIG_PROGRAM_TAG, multisigAddr.publicKey, lsig.logic);
|
|
35
|
+
const subsigs = pks.map((pk) => ({ pk }));
|
|
36
|
+
const ourSubsig = subsigs.find((subsig) => arrayEqual(subsig.pk, authAddress.publicKey));
|
|
37
|
+
if (ourSubsig === undefined) {
|
|
38
|
+
throw Error(`DelegatedLsigSigner could not find ${authAddress} as a signer in the multisig`);
|
|
39
|
+
}
|
|
40
|
+
const sig = await rawSigner(toBeSigned);
|
|
41
|
+
ourSubsig.s = sig;
|
|
42
|
+
return {
|
|
43
|
+
address: authAddress,
|
|
44
|
+
lmsig: {
|
|
45
|
+
v: msig.version,
|
|
46
|
+
thr: msig.threshold,
|
|
47
|
+
subsig: subsigs,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const toBeSigned = concatArrays(PROGRAM_TAG, lsig.logic);
|
|
52
|
+
const sig = await rawSigner(toBeSigned);
|
|
53
|
+
return { address: authAddress, sig };
|
|
54
|
+
};
|
|
55
|
+
const mxBytesSigner = async (bytes) => {
|
|
56
|
+
const bytesToSign = concatArrays(SIGN_BYTES_PREFIX, bytes);
|
|
57
|
+
return rawSigner(bytesToSign);
|
|
58
|
+
};
|
|
59
|
+
const programDataSigner = async (data, lsig) => {
|
|
60
|
+
const parts = concatArrays(lsig.address().publicKey, data);
|
|
61
|
+
const toBeSigned = concatArrays(SIGN_PROGRAM_DATA_PREFIX, parts);
|
|
62
|
+
return rawSigner(toBeSigned);
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
address: sendingAddress,
|
|
66
|
+
programDataSigner,
|
|
67
|
+
txnSigner,
|
|
68
|
+
delegatedLsigSigner,
|
|
69
|
+
mxBytesSigner,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=ed25519-signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ed25519-signer.js","sourceRoot":"","sources":["../../src/ed25519-signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,27 @@ import * as nacl from '../nacl/naclWrappers.js';
|
|
|
3
3
|
import * as utils from '../utils/utils.js';
|
|
4
4
|
import { encodeUint64 } from './uint64.js';
|
|
5
5
|
import { bytesToHex } from './binarydata.js';
|
|
6
|
+
import { couldBeCurvePoint } from '../utils/ed25519-check.js';
|
|
6
7
|
export const ALGORAND_ADDRESS_BYTE_LENGTH = 36;
|
|
7
8
|
export const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
|
|
8
9
|
export const ALGORAND_ADDRESS_LENGTH = 58;
|
|
9
10
|
export const ALGORAND_ZERO_ADDRESS_STRING = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ';
|
|
10
11
|
export const MALFORMED_ADDRESS_ERROR_MSG = 'address seems to be malformed';
|
|
11
12
|
export const CHECKSUM_ADDRESS_ERROR_MSG = 'wrong checksum for address';
|
|
13
|
+
/**
|
|
14
|
+
* The domain-separation prefix prepended to a post-quantum address preimage
|
|
15
|
+
* before hashing. Matches go-algorand's protocol.PostQuantumAddress HashID.
|
|
16
|
+
*/
|
|
17
|
+
const PQ_ADDRESS_PREFIX = new TextEncoder().encode('PQA');
|
|
18
|
+
/**
|
|
19
|
+
* The required byte length of a post-quantum signature scheme identifier.
|
|
20
|
+
*/
|
|
21
|
+
export const PQ_SCHEME_SIZE = 2;
|
|
22
|
+
/**
|
|
23
|
+
* The largest value a post-quantum address salt may take. The salt occupies a
|
|
24
|
+
* single byte of the address preimage.
|
|
25
|
+
*/
|
|
26
|
+
export const PQ_SALT_MAX = 0xff;
|
|
12
27
|
function checksumFromPublicKey(pk) {
|
|
13
28
|
return Uint8Array.from(nacl
|
|
14
29
|
.genericHash(pk)
|
|
@@ -124,4 +139,47 @@ export function getApplicationAddress(appID) {
|
|
|
124
139
|
const hash = nacl.genericHash(toBeSigned);
|
|
125
140
|
return new Address(Uint8Array.from(hash));
|
|
126
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Derive a post-quantum (PQ) account address together with the canonical salt
|
|
144
|
+
* used to derive it.
|
|
145
|
+
*
|
|
146
|
+
* @param schemeBytes - The 2-byte ASCII PQ scheme identifier (e.g. "f1" for Falcon-1024).
|
|
147
|
+
* @param key - The scheme's canonical public key.
|
|
148
|
+
* @returns The derived Address and the canonical 1-byte salt.
|
|
149
|
+
*/
|
|
150
|
+
export function addressFromPQKey(schemeBytes, key) {
|
|
151
|
+
if (schemeBytes.length !== PQ_SCHEME_SIZE)
|
|
152
|
+
throw new Error(`invalid PQ scheme length: expected ${PQ_SCHEME_SIZE} bytes, got ${schemeBytes.length}`);
|
|
153
|
+
// Rejection-sample the lowest salt that yields a PQ-compliant (non-Ed25519)
|
|
154
|
+
// address. The probability of exhausting the range is ~2^-256.
|
|
155
|
+
for (let salt = 0; salt <= PQ_SALT_MAX; salt++) {
|
|
156
|
+
const toBeHashed = utils.concatArrays(PQ_ADDRESS_PREFIX, schemeBytes, Uint8Array.of(salt), key);
|
|
157
|
+
const publicKey = Uint8Array.from(nacl.genericHash(toBeHashed));
|
|
158
|
+
if (!couldBeCurvePoint(publicKey)) {
|
|
159
|
+
return { address: new Address(publicKey), salt };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
throw new Error('no canonical salt exists for this PQ public key and scheme');
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Derive the account address that a post-quantum signature authorizes.
|
|
166
|
+
*
|
|
167
|
+
* Unlike an Ed25519 signature, a PQ signature carries the scheme, salt and
|
|
168
|
+
* public key of the signing account, so the address it authorizes is fully
|
|
169
|
+
* determined by the signature and does not have to be supplied out of band.
|
|
170
|
+
*
|
|
171
|
+
* This also validates the signature's self-consistency: the salt must be the
|
|
172
|
+
* canonical one for the given scheme and public key, which is what the network
|
|
173
|
+
* requires.
|
|
174
|
+
*
|
|
175
|
+
* @param pqsig - The post-quantum signature to derive the address from.
|
|
176
|
+
* @returns The address of the account the signature authorizes.
|
|
177
|
+
*/
|
|
178
|
+
export function addressFromPQSig(pqsig) {
|
|
179
|
+
const { address, salt } = addressFromPQKey(pqsig.sch, pqsig.pk);
|
|
180
|
+
if (salt !== pqsig.slt) {
|
|
181
|
+
throw new Error(`invalid PQ signature salt: expected the canonical salt ${salt}, got ${pqsig.slt}`);
|
|
182
|
+
}
|
|
183
|
+
return address;
|
|
184
|
+
}
|
|
127
185
|
//# sourceMappingURL=address.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/encoding/address.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/encoding/address.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { addressWithSignersFromRawPQSigner } from './pq-signer.js';
|
|
2
|
+
/**
|
|
3
|
+
* The 2-byte ASCII identifier of the Falcon-1024 post-quantum signature scheme.
|
|
4
|
+
*/
|
|
5
|
+
export const FALCON_1024_SCHEME = new TextEncoder().encode('f1');
|
|
6
|
+
export function addressWithSignersFromRawFalcon1024Signer(falconSigningKey, sendingAddress) {
|
|
7
|
+
return addressWithSignersFromRawPQSigner({
|
|
8
|
+
pqScheme: FALCON_1024_SCHEME,
|
|
9
|
+
pqPublicKey: falconSigningKey.falcon1024PublicKey,
|
|
10
|
+
pqSigner: falconSigningKey.falcon1024Signer,
|
|
11
|
+
}, sendingAddress);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=falcon-signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"falcon-signer.js","sourceRoot":"","sources":["../../src/falcon-signer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAOjE,MAAM,UAAU,yCAAyC,CACvD,gBAAsC,EACtC,cAAwB;IAExB,OAAO,iCAAiC,CACtC;QACE,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,gBAAgB,CAAC,mBAAmB;QACjD,QAAQ,EAAE,gBAAgB,CAAC,gBAAgB;KAC5C,EACD,cAAc,CACf,CAAC;AACJ,CAAC"}
|
package/dist/esm/logicsig.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as nacl from './nacl/naclWrappers.js';
|
|
2
|
-
import { Address, isValidAddress } from './encoding/address.js';
|
|
2
|
+
import { Address, addressFromPQSig, isValidAddress, } from './encoding/address.js';
|
|
3
3
|
import * as encoding from './encoding/encoding.js';
|
|
4
4
|
import { NamedMapSchema, ArraySchema, ByteArraySchema, FixedLengthByteArraySchema, OptionalSchema, allOmitEmpty, } from './encoding/schema/index.js';
|
|
5
5
|
import { verifyMultisig, addressFromMultisigPreImg, pksFromAddresses, } from './multisig.js';
|
|
6
6
|
import * as utils from './utils/utils.js';
|
|
7
|
-
import { encodedMultiSigToEncodingData, encodedMultiSigFromEncodingData, ENCODED_MULTISIG_SCHEMA, } from './types/transactions/encoded.js';
|
|
7
|
+
import { encodedMultiSigToEncodingData, encodedMultiSigFromEncodingData, ENCODED_MULTISIG_SCHEMA, ENCODED_PQSIG_SCHEMA, encodedPQSigToEncodingData, encodedPQSigFromEncodingData, } from './types/transactions/encoded.js';
|
|
8
8
|
// base64regex is the regex to test for base64 strings
|
|
9
9
|
const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
10
10
|
/** sanityCheckProgram performs heuristic program validation:
|
|
@@ -29,8 +29,9 @@ export function sanityCheckProgram(program) {
|
|
|
29
29
|
throw new Error('program bytes are all ASCII printable characters, not looking like Teal byte code');
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
const
|
|
33
|
-
const
|
|
32
|
+
export const PROGRAM_TAG = new TextEncoder().encode('Program');
|
|
33
|
+
export const PQ_PROGRAM_TAG = new TextEncoder().encode('PQProgram');
|
|
34
|
+
export const MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram');
|
|
34
35
|
/**
|
|
35
36
|
LogicSig implementation
|
|
36
37
|
|
|
@@ -52,6 +53,7 @@ export class LogicSig {
|
|
|
52
53
|
this.sig = undefined;
|
|
53
54
|
this.msig = undefined;
|
|
54
55
|
this.lmsig = undefined;
|
|
56
|
+
this.pqsig = undefined;
|
|
55
57
|
}
|
|
56
58
|
// eslint-disable-next-line class-methods-use-this
|
|
57
59
|
getEncodingSchema() {
|
|
@@ -69,6 +71,9 @@ export class LogicSig {
|
|
|
69
71
|
if (this.lmsig) {
|
|
70
72
|
data.set('lmsig', encodedMultiSigToEncodingData(this.lmsig));
|
|
71
73
|
}
|
|
74
|
+
if (this.pqsig) {
|
|
75
|
+
data.set('pqsig', encodedPQSigToEncodingData(this.pqsig));
|
|
76
|
+
}
|
|
72
77
|
return data;
|
|
73
78
|
}
|
|
74
79
|
static fromEncodingData(data) {
|
|
@@ -83,14 +88,20 @@ export class LogicSig {
|
|
|
83
88
|
if (data.get('lmsig')) {
|
|
84
89
|
lsig.lmsig = encodedMultiSigFromEncodingData(data.get('lmsig'));
|
|
85
90
|
}
|
|
91
|
+
if (data.get('pqsig')) {
|
|
92
|
+
lsig.pqsig = encodedPQSigFromEncodingData(data.get('pqsig'));
|
|
93
|
+
}
|
|
86
94
|
return lsig;
|
|
87
95
|
}
|
|
88
96
|
/**
|
|
97
|
+
* @deprecated This function does not perform full verification and should not be fully trusted on its own.
|
|
98
|
+
* For example, it does not evaluate programs and does not have the ability to validate PQ signatures.
|
|
99
|
+
*
|
|
89
100
|
* Performs signature verification
|
|
90
101
|
* @param publicKey - Verification key (derived from sender address or escrow address)
|
|
91
102
|
*/
|
|
92
103
|
verify(publicKey) {
|
|
93
|
-
const sigCount = [this.sig, this.msig, this.lmsig].filter(Boolean).length;
|
|
104
|
+
const sigCount = [this.sig, this.msig, this.lmsig, this.pqsig].filter(Boolean).length;
|
|
94
105
|
if (sigCount > 1) {
|
|
95
106
|
return false;
|
|
96
107
|
}
|
|
@@ -100,11 +111,18 @@ export class LogicSig {
|
|
|
100
111
|
catch (e) {
|
|
101
112
|
return false;
|
|
102
113
|
}
|
|
103
|
-
const toBeSigned = utils.concatArrays(
|
|
104
|
-
if (!this.sig && !this.msig && !this.lmsig) {
|
|
114
|
+
const toBeSigned = utils.concatArrays(PROGRAM_TAG, this.logic);
|
|
115
|
+
if (!this.sig && !this.msig && !this.lmsig && !this.pqsig) {
|
|
105
116
|
const hash = nacl.genericHash(toBeSigned);
|
|
106
117
|
return utils.arrayEqual(hash, publicKey);
|
|
107
118
|
}
|
|
119
|
+
if (this.pqsig) {
|
|
120
|
+
// This function has no way to validate a post-quantum signature, so it
|
|
121
|
+
// cannot report success here. Callers that need to sign a transaction
|
|
122
|
+
// with a PQ delegated LogicSig should go through
|
|
123
|
+
// signLogicSigTransactionObject, which skips this check.
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
108
126
|
if (this.sig) {
|
|
109
127
|
return nacl.verify(toBeSigned, this.sig, publicKey);
|
|
110
128
|
}
|
|
@@ -114,7 +132,7 @@ export class LogicSig {
|
|
|
114
132
|
threshold: this.lmsig.thr,
|
|
115
133
|
pks: this.lmsig.subsig.map((subsig) => subsig.pk),
|
|
116
134
|
});
|
|
117
|
-
const lmsigProgram = utils.concatArrays(
|
|
135
|
+
const lmsigProgram = utils.concatArrays(MSIG_PROGRAM_TAG, multisigAddr.publicKey, this.logic);
|
|
118
136
|
return verifyMultisig(lmsigProgram, this.lmsig, publicKey);
|
|
119
137
|
}
|
|
120
138
|
if (this.msig) {
|
|
@@ -127,11 +145,13 @@ export class LogicSig {
|
|
|
127
145
|
* @returns String representation of the address
|
|
128
146
|
*/
|
|
129
147
|
address() {
|
|
130
|
-
const toBeSigned = utils.concatArrays(
|
|
148
|
+
const toBeSigned = utils.concatArrays(PROGRAM_TAG, this.logic);
|
|
131
149
|
const hash = nacl.genericHash(toBeSigned);
|
|
132
150
|
return new Address(Uint8Array.from(hash));
|
|
133
151
|
}
|
|
134
152
|
/**
|
|
153
|
+
* @deprecated Use `signWithSigner` instead
|
|
154
|
+
*
|
|
135
155
|
* Creates signature (if no msig provided) or multi signature otherwise
|
|
136
156
|
* @param secretKey - Secret key to sign with
|
|
137
157
|
* @param msig - Multisig account as \{version, threshold, addrs\}
|
|
@@ -152,6 +172,64 @@ export class LogicSig {
|
|
|
152
172
|
}
|
|
153
173
|
}
|
|
154
174
|
/**
|
|
175
|
+
* Signs this LogicSig for delegation using the given signer.
|
|
176
|
+
*
|
|
177
|
+
* @param signer - The signer to delegate to
|
|
178
|
+
* @param msig - Optional multisig account the signer is a subsigner of
|
|
179
|
+
* @returns The address the signer signed as. When `msig` is omitted this is
|
|
180
|
+
* the delegating account. When `msig` is given it is the individual
|
|
181
|
+
* subsigner, not the multisig, so the delegating account is
|
|
182
|
+
* `multisigAddress(msig)`. Either way it is an authorizing address, which
|
|
183
|
+
* is not necessarily the address a signer sends transactions from.
|
|
184
|
+
*
|
|
185
|
+
* Re-signing an already-signed LogicSig is allowed, and replaces the previous
|
|
186
|
+
* delegation signature. At most one of `sig`, `msig`, `lmsig` and `pqsig` may
|
|
187
|
+
* be set, so any signature left over from an earlier call is cleared.
|
|
188
|
+
*/
|
|
189
|
+
async signWithSigner(signer, msig) {
|
|
190
|
+
const sigResult = await signer(this, msig);
|
|
191
|
+
if (msig == null) {
|
|
192
|
+
if ('pqsig' in sigResult && sigResult.pqsig) {
|
|
193
|
+
this.clearSignatures();
|
|
194
|
+
this.pqsig = sigResult.pqsig;
|
|
195
|
+
return sigResult.address;
|
|
196
|
+
}
|
|
197
|
+
if (!('sig' in sigResult) || !sigResult.sig) {
|
|
198
|
+
throw Error('Expected DelegatedLsigSigner to return sig or pqsig, but both are undefined. If signing for an msig, be sure to pass the msig argument');
|
|
199
|
+
}
|
|
200
|
+
this.clearSignatures();
|
|
201
|
+
this.sig = sigResult.sig;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
if (!('lmsig' in sigResult) || !sigResult.lmsig) {
|
|
205
|
+
throw Error('Expected DelegatedLsigSigner to return lmsig, but lmsig is undefined. If signing for a single account, do not pass msig argument');
|
|
206
|
+
}
|
|
207
|
+
const { lmsig } = sigResult;
|
|
208
|
+
const expectedPks = pksFromAddresses(msig.addrs);
|
|
209
|
+
if (lmsig.v !== msig.version ||
|
|
210
|
+
lmsig.thr !== msig.threshold ||
|
|
211
|
+
lmsig.subsig.length !== expectedPks.length ||
|
|
212
|
+
!lmsig.subsig.every((subsig, i) => utils.arrayEqual(subsig.pk, expectedPks[i]))) {
|
|
213
|
+
throw Error('DelegatedLsigSigner returned an lmsig whose version, threshold or public keys do not match the requested multisig');
|
|
214
|
+
}
|
|
215
|
+
this.clearSignatures();
|
|
216
|
+
this.lmsig = sigResult.lmsig;
|
|
217
|
+
}
|
|
218
|
+
return sigResult.address;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Removes every delegation signature from this LogicSig, so that exactly one
|
|
222
|
+
* of them can be set afterwards.
|
|
223
|
+
*/
|
|
224
|
+
clearSignatures() {
|
|
225
|
+
this.sig = undefined;
|
|
226
|
+
this.msig = undefined;
|
|
227
|
+
this.lmsig = undefined;
|
|
228
|
+
this.pqsig = undefined;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* @deprecated Use `appendToMultisigWithSigner` instead
|
|
232
|
+
*
|
|
155
233
|
* Appends a signature to multi signature
|
|
156
234
|
* @param secretKey - Secret key to sign with
|
|
157
235
|
*/
|
|
@@ -162,21 +240,66 @@ export class LogicSig {
|
|
|
162
240
|
const [sig, index] = this.singleSignMultisig(secretKey, this.lmsig);
|
|
163
241
|
this.lmsig.subsig[index].s = sig;
|
|
164
242
|
}
|
|
243
|
+
async appendToMultisigWithSigner(signer) {
|
|
244
|
+
if (this.lmsig === undefined) {
|
|
245
|
+
throw new Error('no multisig present');
|
|
246
|
+
}
|
|
247
|
+
const sigResult = await signer(this, {
|
|
248
|
+
version: this.lmsig.v,
|
|
249
|
+
threshold: this.lmsig.thr,
|
|
250
|
+
addrs: this.lmsig.subsig.map((s) => new Address(s.pk)),
|
|
251
|
+
});
|
|
252
|
+
if (!('lmsig' in sigResult) || !sigResult.lmsig) {
|
|
253
|
+
throw Error('Expected DelegatedLsigSigner to return lmsig, but lmsig is undefined');
|
|
254
|
+
}
|
|
255
|
+
if (sigResult.lmsig.v !== this.lmsig.v ||
|
|
256
|
+
sigResult.lmsig.thr !== this.lmsig.thr) {
|
|
257
|
+
throw Error('DelegatedLsigSigner returned an lmsig whose version or threshold does not match the current msig');
|
|
258
|
+
}
|
|
259
|
+
let signaturesReturned = false;
|
|
260
|
+
for (const subsig of sigResult.lmsig.subsig) {
|
|
261
|
+
if (subsig.s) {
|
|
262
|
+
signaturesReturned = true;
|
|
263
|
+
const thisSubsig = this.lmsig.subsig.find((s) => utils.arrayEqual(s.pk, subsig.pk));
|
|
264
|
+
if (thisSubsig === undefined) {
|
|
265
|
+
throw Error(`DelegatedLsigSigner returned a signature for ${new Address(subsig.pk)} but this pk is not in the current msig`);
|
|
266
|
+
}
|
|
267
|
+
// Never let the signer silently replace a signature already collected
|
|
268
|
+
// from another member.
|
|
269
|
+
if (thisSubsig.s && !utils.arrayEqual(thisSubsig.s, subsig.s)) {
|
|
270
|
+
throw Error(`DelegatedLsigSigner returned a signature for ${new Address(subsig.pk)} that conflicts with the signature already collected for it`);
|
|
271
|
+
}
|
|
272
|
+
thisSubsig.s = subsig.s;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (!signaturesReturned) {
|
|
276
|
+
throw Error('DelegatedLsigSigner returned an lmsig with no signatures');
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* @deprecated Use `signWithSigner` followed by `.sig` instead
|
|
281
|
+
*/
|
|
165
282
|
signProgram(secretKey) {
|
|
166
|
-
const toBeSigned = utils.concatArrays(
|
|
283
|
+
const toBeSigned = utils.concatArrays(PROGRAM_TAG, this.logic);
|
|
167
284
|
const sig = nacl.sign(toBeSigned, secretKey);
|
|
168
285
|
return sig;
|
|
169
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* @deprecated Use `signWithSigner` followed by `.sig` instead
|
|
289
|
+
*/
|
|
170
290
|
signProgramMultisig(secretKey, msig) {
|
|
171
291
|
const multisigAddr = addressFromMultisigPreImg({
|
|
172
292
|
version: msig.v,
|
|
173
293
|
threshold: msig.thr,
|
|
174
294
|
pks: msig.subsig.map((subsig) => subsig.pk),
|
|
175
295
|
});
|
|
176
|
-
const toBeSigned = utils.concatArrays(
|
|
296
|
+
const toBeSigned = utils.concatArrays(MSIG_PROGRAM_TAG, multisigAddr.publicKey, this.logic);
|
|
177
297
|
const sig = nacl.sign(toBeSigned, secretKey);
|
|
178
298
|
return sig;
|
|
179
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* @deprecated Use `signWithSigner` followed by `.sig` instead
|
|
302
|
+
*/
|
|
180
303
|
singleSignMultisig(secretKey, msig) {
|
|
181
304
|
let index = -1;
|
|
182
305
|
const myPk = nacl.keyPairFromSecretKey(secretKey).publicKey;
|
|
@@ -199,6 +322,16 @@ export class LogicSig {
|
|
|
199
322
|
static fromByte(encoded) {
|
|
200
323
|
return encoding.decodeMsgpack(encoded, LogicSig);
|
|
201
324
|
}
|
|
325
|
+
/**
|
|
326
|
+
* Signs arbitrary data for use with the `ed25519verify` opcode from within
|
|
327
|
+
* this LogicSig's program.
|
|
328
|
+
*
|
|
329
|
+
* @param signer - The signer to sign the data with
|
|
330
|
+
* @param data - The data to sign
|
|
331
|
+
*/
|
|
332
|
+
async signDataWithSigner(signer, data) {
|
|
333
|
+
return signer(data, this);
|
|
334
|
+
}
|
|
202
335
|
}
|
|
203
336
|
LogicSig.encodingSchema = new NamedMapSchema(allOmitEmpty([
|
|
204
337
|
{
|
|
@@ -221,6 +354,10 @@ LogicSig.encodingSchema = new NamedMapSchema(allOmitEmpty([
|
|
|
221
354
|
key: 'lmsig',
|
|
222
355
|
valueSchema: new OptionalSchema(ENCODED_MULTISIG_SCHEMA),
|
|
223
356
|
},
|
|
357
|
+
{
|
|
358
|
+
key: 'pqsig',
|
|
359
|
+
valueSchema: new OptionalSchema(ENCODED_PQSIG_SCHEMA),
|
|
360
|
+
},
|
|
224
361
|
]));
|
|
225
362
|
/**
|
|
226
363
|
* Represents an account that can sign with a LogicSig program.
|
|
@@ -281,9 +418,15 @@ export class LogicSigAccount {
|
|
|
281
418
|
* To verify the delegation signature, use `verify`.
|
|
282
419
|
*/
|
|
283
420
|
isDelegated() {
|
|
284
|
-
return !!(this.lsig.sig ||
|
|
421
|
+
return !!(this.lsig.sig ||
|
|
422
|
+
this.lsig.msig ||
|
|
423
|
+
this.lsig.lmsig ||
|
|
424
|
+
this.lsig.pqsig);
|
|
285
425
|
}
|
|
286
426
|
/**
|
|
427
|
+
* @deprecated This function does not perform full verification and should not be fully trusted on its own.
|
|
428
|
+
* For example, it does not evaluate programs and does not have the ability to validate PQ signatures.
|
|
429
|
+
*
|
|
287
430
|
* Verifies this LogicSig's program and signatures.
|
|
288
431
|
* @returns true if and only if the LogicSig program and signatures are valid.
|
|
289
432
|
*/
|
|
@@ -301,9 +444,24 @@ export class LogicSigAccount {
|
|
|
301
444
|
* escrow address that is the hash of the LogicSig's program code.
|
|
302
445
|
*/
|
|
303
446
|
address() {
|
|
304
|
-
const sigCount = [
|
|
447
|
+
const sigCount = [
|
|
448
|
+
this.lsig.sig,
|
|
449
|
+
this.lsig.msig,
|
|
450
|
+
this.lsig.lmsig,
|
|
451
|
+
this.lsig.pqsig,
|
|
452
|
+
].filter(Boolean).length;
|
|
305
453
|
if (sigCount > 1) {
|
|
306
|
-
throw new Error('LogicSig has too many signatures. At most one of sig, msig, or
|
|
454
|
+
throw new Error('LogicSig has too many signatures. At most one of sig, msig, lmsig, or pqsig may be present');
|
|
455
|
+
}
|
|
456
|
+
if (this.lsig.pqsig) {
|
|
457
|
+
// A PQ signature carries the scheme, salt and public key of the
|
|
458
|
+
// delegating account, so derive the address rather than trusting
|
|
459
|
+
// `sigkey`. Also throws if the signature is not self-consistent.
|
|
460
|
+
const derived = addressFromPQSig(this.lsig.pqsig);
|
|
461
|
+
if (this.sigkey && !utils.arrayEqual(this.sigkey, derived.publicKey)) {
|
|
462
|
+
throw new Error(`Signing key for delegated account does not match the PQ signature. The signature authorizes ${derived}, but sigkey is ${new Address(this.sigkey)}`);
|
|
463
|
+
}
|
|
464
|
+
return derived;
|
|
307
465
|
}
|
|
308
466
|
if (this.lsig.sig) {
|
|
309
467
|
if (!this.sigkey) {
|
|
@@ -323,6 +481,8 @@ export class LogicSigAccount {
|
|
|
323
481
|
return this.lsig.address();
|
|
324
482
|
}
|
|
325
483
|
/**
|
|
484
|
+
* @deprecated Use `signMultisigWithSigner` instead
|
|
485
|
+
*
|
|
326
486
|
* Turns this LogicSigAccount into a delegated LogicSig. This type of LogicSig
|
|
327
487
|
* has the authority to sign transactions on behalf of another account, called
|
|
328
488
|
* the delegating account. Use this function if the delegating account is a
|
|
@@ -336,7 +496,12 @@ export class LogicSigAccount {
|
|
|
336
496
|
signMultisig(msig, secretKey) {
|
|
337
497
|
this.lsig.sign(secretKey, msig);
|
|
338
498
|
}
|
|
499
|
+
async signMultisigWithSigner(msig, signer) {
|
|
500
|
+
await this.lsig.signWithSigner(signer, msig);
|
|
501
|
+
}
|
|
339
502
|
/**
|
|
503
|
+
* @deprecated Use appendToMultisigWithSigner
|
|
504
|
+
*
|
|
340
505
|
* Adds an additional signature from a member of the delegating multisig
|
|
341
506
|
* account.
|
|
342
507
|
*
|
|
@@ -346,7 +511,12 @@ export class LogicSigAccount {
|
|
|
346
511
|
appendToMultisig(secretKey) {
|
|
347
512
|
this.lsig.appendToMultisig(secretKey);
|
|
348
513
|
}
|
|
514
|
+
async appendToMultisigWithSigner(signer) {
|
|
515
|
+
await this.lsig.appendToMultisigWithSigner(signer);
|
|
516
|
+
}
|
|
349
517
|
/**
|
|
518
|
+
* @deprecated Use `signWithSigner` instead
|
|
519
|
+
*
|
|
350
520
|
* Turns this LogicSigAccount into a delegated LogicSig. This type of LogicSig
|
|
351
521
|
* has the authority to sign transactions on behalf of another account, called
|
|
352
522
|
* the delegating account. If the delegating account is a multisig account,
|
|
@@ -358,6 +528,21 @@ export class LogicSigAccount {
|
|
|
358
528
|
this.lsig.sign(secretKey);
|
|
359
529
|
this.sigkey = nacl.keyPairFromSecretKey(secretKey).publicKey;
|
|
360
530
|
}
|
|
531
|
+
/**
|
|
532
|
+
* Turns this LogicSigAccount into a delegated LogicSig, signed by the given
|
|
533
|
+
* signer. If the delegating account is a multisig account, use
|
|
534
|
+
* `signMultisigWithSigner` instead.
|
|
535
|
+
*
|
|
536
|
+
* @param signer - The signer of the delegating account.
|
|
537
|
+
*/
|
|
538
|
+
async signWithSigner(signer) {
|
|
539
|
+
// Record the address the signer reports rather than any sending address it
|
|
540
|
+
// may advertise: the latter is the address the signer sends transactions
|
|
541
|
+
// from, which for a rekeyed account is not the account that authorizes
|
|
542
|
+
// this delegation.
|
|
543
|
+
const delegatingAddress = await this.lsig.signWithSigner(signer);
|
|
544
|
+
this.sigkey = delegatingAddress.publicKey;
|
|
545
|
+
}
|
|
361
546
|
}
|
|
362
547
|
LogicSigAccount.encodingSchema = new NamedMapSchema(allOmitEmpty([
|
|
363
548
|
{
|
|
@@ -376,7 +561,7 @@ LogicSigAccount.encodingSchema = new NamedMapSchema(allOmitEmpty([
|
|
|
376
561
|
export function logicSigFromByte(encoded) {
|
|
377
562
|
return encoding.decodeMsgpack(encoded, LogicSig);
|
|
378
563
|
}
|
|
379
|
-
const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData');
|
|
564
|
+
export const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData');
|
|
380
565
|
/**
|
|
381
566
|
* tealSign creates a signature compatible with ed25519verify opcode from program hash
|
|
382
567
|
* @param sk - Uint8Array with secret key
|
package/dist/esm/logicsig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logicsig.js","sourceRoot":"","sources":["../../src/logicsig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,cAAc,EACd,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAEL,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,sDAAsD;AACtD,MAAM,WAAW,GACf,kEAAkE,CAAC;AAErE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IACpD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CACpC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,CACpD,CAAC;IAEF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,cAAc,CAAC,UAAU,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAEpE,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEvD,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvD,MAAM,kBAAkB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IAgCnB,YAAY,OAAmB,EAAE,WAAsC;QACrE,IACE,WAAW;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC1B,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,EAC9D,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,GAAiB,EAAE,CAAC;QAC5B,IAAI,WAAW,IAAI,IAAI;YACrB,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvD,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,kDAAkD;IAClD,iBAAiB;QACf,OAAO,QAAQ,CAAC,cAAc,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAkB;YACpC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;YACjB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAa;QACnC,IAAI,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAqB;QAC1B,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC1E,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9D,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,yBAAyB,CAAC;gBAC7C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;gBACzB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aAClD,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CACrC,kBAAkB,EAClB,YAAY,CAAC,SAAS,EACtB,IAAI,CAAC,KAAK,CACX,CAAC;YACF,OAAO,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,KAAM,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,IAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,SAAqB,EAAE,IAAuB;QACjD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAEnE,IAAI,CAAC,KAAK,GAAG;gBACX,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,GAAG,EAAE,IAAI,CAAC,SAAS;gBACnB,MAAM,EAAE,OAAO;aAChB,CAAC;YAEF,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,SAAqB;QACpC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,SAAqB;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mBAAmB,CAAC,SAAqB,EAAE,IAAqB;QAC9D,MAAM,YAAY,GAAG,yBAAyB,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,CAAC;YACf,SAAS,EAAE,IAAI,CAAC,GAAG;YACnB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CACnC,kBAAkB,EAClB,YAAY,CAAC,SAAS,EACtB,IAAI,CAAC,KAAK,CACX,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kBAAkB,CAChB,SAAqB,EACrB,IAAqB;QAErB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAuB;QACrC,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;;AAnOe,uBAAc,GAAG,IAAI,cAAc,CACjD,YAAY,CAAC;IACX;QACE,GAAG,EAAE,GAAG;QACR,WAAW,EAAE,IAAI,eAAe,EAAE;KACnC;IACD;QACE,GAAG,EAAE,KAAK;QACV,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,eAAe,EAAE,CAAC;KACpD;IACD;QACE,GAAG,EAAE,KAAK;QACV,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;KACpE;IACD;QACE,GAAG,EAAE,MAAM;QACX,WAAW,EAAE,IAAI,cAAc,CAAC,uBAAuB,CAAC;KACzD;IACD;QACE,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,IAAI,cAAc,CAAC,uBAAuB,CAAC;KACzD;CACF,CAAC,CACH,CAAC;AA+MJ;;GAEG;AACH,MAAM,OAAO,eAAe;IAiB1B;;;;;;;;OAQG;IACH,YAAY,OAAmB,EAAE,IAA+B;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,kDAAkD;IAClD,iBAAiB;QACf,OAAO,eAAe,CAAC,cAAc,CAAC;IACxC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,GAAG,CAAkB;YAC9B,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpC,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAa;QACnC,IAAI,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAG,IAA4B,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,uCAAuC;QAChE,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAe,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAuB;QACrC,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,WAAW;QACT,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO;QACL,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CACtE,OAAO,CACR,CAAC,MAAM,CAAC;QACT,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,CAAC;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG;gBACnB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5C,CAAC;YACF,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,IAAsB,EAAE,SAAqB;QACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,SAAqB;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,SAAqB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;;AArKe,8BAAc,GAAG,IAAI,cAAc,CACjD,YAAY,CAAC;IACX;QACE,GAAG,EAAE,MAAM;QACX,WAAW,EAAE,QAAQ,CAAC,cAAc;KACrC;IACD;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;KACpE;CACF,CAAC,CACH,CAAC;AA6JJ;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,wBAAwB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAc,EACd,IAAgB,EAChB,WAA6B;IAE7B,MAAM,WAAW,GACf,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QACjC,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAgB,EAChB,WAA6B,EAC7B,GAAe,EACf,EAAc;IAEd,MAAM,WAAW,GACf,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QACjC,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAc,EACd,IAAgB,EAChB,OAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"logicsig.js","sourceRoot":"","sources":["../../src/logicsig.ts"],"names":[],"mappings":"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"}
|