libzahl

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