-
Notifications
You must be signed in to change notification settings - Fork 0
/
msg-mswallet.fif
54 lines (45 loc) · 1.7 KB
/
msg-mswallet.fif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env fift -s
// Select messages from message array
//
// Copyright Sergei Sevriugin (c) 2019
//
// The contest ends on October, 15 at 23:00 CET.
//
// Giro d'Iseo (R)
// Foresto Sparso
// Bergamo
// Italia
//
"TonUtil.fif" include
"Asm.fif" include
"MagArray.fif" include
{ cr
."usage: " @' $0 type ." <filename-base> [ non ]" cr cr
."Select messages from a message array for multisignature wallet for public key loaded from <filename-base>.pk" cr
." message array loaded from <filename-base>.msg" cr
." and result stored <filename-base>.select" cr 1 halt
} : usage
$# 2 < ' usage if
$1 =: file-base
def? $2 { @' $2 "non" $= { false } { true } cond } { true } cond constant selector
// ( filename -- boc )
{ dup file-exists?
{ file>B B>boc }
{ ."File '" type ."' is not found " cr 1 halt } cond
} : load-file
file-base +".msg" load-file // msgarray
file-base +".pk" load-generate-keypair // msgarray, pubk, pkey
constant wallet_pk // msgarray, pubk
constant wallet_pubk // msgarray
file-base +".pubk" load-file // msgarray, ka
key#@ @' pubkn // msgarray, ka, pubkn
=: keynumber // msgarray, ka
wallet_pubk B>u // msgarray, ka, pubk
key? 0= { ."Public key is not found in the wallet key array " cr 1 halt } if
dup // msgarray, index, index
."Selecting messages for key index: " . cr
@' selector // msgarray, index, selector
msgSEL // msgarray'
2 boc+>B
file-base +".select" B>file
."Save message array to the file : " file-base +".select" type cr