tree checksum vpatch file split hunks
all signers: bvt diana_coman asciilifeform
antecedents: ffa_ch16_miller_rabin.kv ffa_ch20d_litmus_nested_fix.kv ffa_ch21a_bis_fix_ch15_gcd.kv
press order:
patch:
(23 . 3)(23 . 4)
5 612395 ffa_ch20c_litmus_clearsigned "Support for 'clearsigned' GPG texts in Litmus."
6 612828 ffa_ch20d_litmus_nested_fix "Fix for bug where nested 'clearsigned' sigs were rejected."
7 629424 ffa_ch21a_bis_fix_ch15_gcd "Fix for lethal flaw in Ch.15's Greatest Common Divisor."
8 659788 ffa_ch21a_ter_ch14_ch20_errata "Fix for false alarm in Ch.14; Removal of two mutually-canceling bugs in Litmus."
- A6F142145B954FC7938DF34435542376D3D7D2609AEC6B7367AD49414E3730960EC4E213B6AA0EDE2C8A4714F44224970738C8DA938B6C1AE426188491F22C06(42 . 6)(42 . 13)- 13553A8EAFBC60A349FB364BC26DB59B7C4E3A998DA325BD725D960A2F1E6F16C96BE9EB6C373B5307545B042AA7B37BB0E995C7008516FE7C4016ADE21AC524
13 # All Other Cases:
14 RET_EGGOG=-1
15
16 # Verify that all of the necessary external programs in fact exist:
17 for i in $EXTERNALS
18 do
19 command -v $i >/dev/null && continue || \
20 { echo "$i is required but was not found! Please install it." >&2 ; \
21 exit $RET_EGGOG; }
22 done
23
24 # Terminations:
25
(216 . 14)(223 . 6)
27 exit $RET_EGGOG
28 fi
29
30 # Verify that all of the necessary external programs in fact exist:
31 for i in $EXTERNALS
32 do
33 command -v $i >/dev/null && continue || \
34 { echo "$i is required but was not found! Please install it." >&2 ; \
35 exit $RET_EGGOG; }
36 done
37
38 # 'ASCII-Armoured' PGP signatures have mandatory start and end markers:
39 START_MARKER="^\-\-\-\-\-BEGIN PGP SIGNATURE\-\-\-\-\-"
40 END_MARKER="^\-\-\-\-\-END PGP SIGNATURE\-\-\-\-\-"
(458 . 6)(457 . 7)
42 # Calculate length (bytes) of the ASN turd for the digest used in the sig:
43 ASN_LEN=$((${#ASN} / 2))
44
45 # Read the hashed and unhashed sections :
46
47 # Hashed Section Length
48 get_sig_bytes 2
(471 . 7)(471 . 7)
50 sig_hashed=$r
51
52 # Unhashed Section Length
53 get_sig_bytes 1
54 get_sig_bytes 2
55 hex_to_int
56 sig_unhashed_len=$r
57
(491 . 16)(491 . 7)
59 # Convert to upper case
60 hash=$(echo $hash | tr 'a-z' 'A-Z')
61
62 # Parse the RSA Signature portion of the Sig file:
63
64 # RSA Packet Length (how many bytes to read)
65 get_sig_bytes 1
66 hex_to_int
67 rsa_packet_len=$r
68
69 # The RSA Packet itself
70 get_sig_bytes $rsa_packet_len
71 rsa_packet=$r
72 # Read and validate digest prefix :
73
74 # Digest Prefix (2 bytes)
75 get_sig_bytes 2
(45 . 7)(45 . 7)
80 --- Current 'deg. Kelvin' Version of FFA
81 ----------------------------------------------------------------------------
82
83 FFA_K_Version : constant Natural := 200;
84 FFA_K_Version : constant Natural := 199;
85
86 ----------------------------------------------------------------------------
87 --- Fundamental Types and Sizes
- BAEFDDB79033F5D5657EC6C1685BBD6EC468F41535215B0D88CACC9089BBBD0CE073352C8EBC287C81EAD2BE8A33972A0CE6BB4F3DFC19B0CD8A048121173ACE(247 . 9)(247 . 13)
92 -- Borrow from the gated subtractions
93 C : WBool;
94
95 -- Barring cosmic ray, no underflow can take place in (4) and (5)
96 -- Barring cosmic ray, no underflow can take place in (4)
97 NoCarry : WZeroOrDie := 0;
98
99 -- Borrow from Subtraction in (5) is meaningless, and is discarded
100 IgnoreC : WBool;
101 pragma Unreferenced(IgnoreC);
102
103 begin
104
105 -- Result is initially zero (and will stay zero if Modulus = 1)
(277 . 7)(281 . 7)
107
108 -- (5) R := X - Q (we only need Rl-sized segments of X and Q here)
109 FZ_Sub(X => X(1 .. Rl), Y => Q(1 .. Rl),
110 Difference => R, Underflow => NoCarry);
111 Difference => R, Underflow => IgnoreC); -- Borrow is discarded
112
113 -- (6) S1 := R - M, C1 := Borrow (1st gated subtraction of Modulus)
114 FZ_Sub(X => R, Y => Bar.ZXM, Difference => S, Underflow => C);