libzahl.7 - libzahl - big integer library
 (HTM) git clone git://git.suckless.org/libzahl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       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)