cmpa 0.1.2

Multiprecision arithmetic primitives commonly needed for asymmetric cryptography
Documentation
# *C*ryptographic *M*ulti*P*recision *A*rithmetic (cmpa)

Pure Rust implementation of multiprecision arithmetic primitives
commonly needed for asymmetric cryptography.

`rustdoc` comments are WIP.

## Features
* `[no_std]`
* Rigorously constant-time throughout.
* Complete user control over buffers: cmpa does not allocate any own
  its own or places any on the stack. Whenever scratch space is needed
  for some computation, a buffer is provided as an additional argument
  to the API.

### Functionality overview
* Operates on multiprecision integers in big or little endian format
  (stored as byte slices) or more effeciently on native format
  multiprecision integers (stored as a slice of machine words).
* "Standard" airhtmetic: addition, subtraction, multiplication,
  division, shifts, comparisons etc.
* Modular arithmetic: Montogomery multiplication and related functionality,
  modular inversions etc.
* Primality testing.

## Cargo features
* `zeroize` - implement traits from the
  [`zeroize`]https://github.com/RustCrypto/utils/tree/master/zeroize
  crate.
* `enable_arch_math_asm` - Use (rather trivial) assembly
   implementations for certain basic sinlge-word arithmetic
   primitives. You most likely want to enable it for performance
   reason, but it does introduce some `unsafe{}` blocks.