libzahl.7 (2304B)
1 .TH LIBZAHL 7 libzahl 2 .SH NAME 3 libzahl - Big integer library 4 .SH ETYMOLOGY 5 The bold uppercase \(aqZ\(aq which represents the 6 set of all integers is derived from the german word 7 \(aqZahlen\(aq, whose singular is \(aqZahl\(aq. 8 .SH DESCRIPTION 9 .B libzahl 10 is a C library for arbitrary size integers, that 11 aims to be usable for robust programs, and be 12 fast. 13 .P 14 .B libzahl 15 will accomplish this by using long jumps when an 16 error is detected, rather than letting the caller 17 also perform a check. This shall make the code in 18 the user program cleaner too. 19 .B libzahl 20 will use dedicated temporary bignum integers whether 21 possible, and necessary, for its internal calculations. 22 .B libzahl 23 will not deallocate allocations, but rather cache 24 them for reuse. 25 .P 26 With the exception of functions working with strings, 27 all output parameters are before the input parameters. 28 .P 29 Like any self-respecting big number library, libzahl 30 supports assign values to variables that are also 31 input variables. However, keep in mind that commutative 32 functions are optimised for the first operand to also 33 be the output over the second operand to also be the 34 input. For example, \fIzadd(a,a,b)\fP should be faster 35 than \fIzadd(a,b,a)\fP, although both are supported. 36 Whether or not the function believe that it is more 37 likely to occur that the input variables are different 38 that the output variable than the output variable 39 being the first input variable depends on the function. 40 Some functions are implemented to believe that the 41 first is more likely, other fucntions are implemented 42 to believe that the latter is more likely. 43 .SH RATIONALE 44 GMP MP cannot be used for robust programs. LibTomMath 45 is too slow, probably because of all memory allocations, 46 and has an nonintuitive API. Hebimath is promising, but 47 I think it can be done better. 48 .SH NOTES 49 .B libzahl 50 is currently not thread-safe. 51 .P 52 You are strongly discouraged from using 53 .B libzahl 54 for cryptographic applications. Instead, use a library 55 specifically targeting cryptography, otherwise, your 56 program may be subject to side-channel attacks such as 57 timing attacks, power-monitoring attacks, electromagnetic 58 attacks, acoustic cryptanalysis, and data remanence 59 attacks. 60 .B libzahl 61 is known to be susceptible to timing attacks and data 62 remanence attacks. 63 .SH SEE ALSO 64 .BR zsetup (3)