Coverage Report

Created: 2020-02-14 15:38

`/src/botan/build/include/botan/divide.h`
 `Line` `Count` `Source` `1` `/*` `2` `* Division` `3` `* (C) 1999-2007 Jack Lloyd` `4` `*` `5` `* Botan is released under the Simplified BSD License (see license.txt)` `6` `*/` `7` `8` `#ifndef BOTAN_DIVISON_ALGORITHM_H_` `9` `#define BOTAN_DIVISON_ALGORITHM_H_` `10` `11` `#include ` `12` `13` `BOTAN_FUTURE_INTERNAL_HEADER(divide.h)` `14` `15` `namespace Botan {` `16` `17` `/**` `18` `* BigInt Division` `19` `* @param x an integer` `20` `* @param y a non-zero integer` `21` `* @param q will be set to x / y` `22` `* @param r will be set to x % y` `23` `*/` `24` `void BOTAN_PUBLIC_API(2,0) divide(const BigInt& x,` `25` ` const BigInt& y,` `26` ` BigInt& q,` `27` ` BigInt& r);` `28` `29` `/**` `30` `* BigInt division, const time variant` `31` `*` `32` `* This runs with control flow independent of the values of x/y.` `33` `* Warning: the loop bounds still leak the sizes of x and y.` `34` `*` `35` `* @param x an integer` `36` `* @param y a non-zero integer` `37` `* @param q will be set to x / y` `38` `* @param r will be set to x % y` `39` `*/` `40` `void BOTAN_PUBLIC_API(2,9) ct_divide(const BigInt& x,` `41` ` const BigInt& y,` `42` ` BigInt& q,` `43` ` BigInt& r);` `44` `45` `/**` `46` `* BigInt division, const time variant` `47` `*` `48` `* This runs with control flow independent of the values of x/y.` `49` `* Warning: the loop bounds still leak the sizes of x and y.` `50` `*` `51` `* @param x an integer` `52` `* @param y a non-zero integer` `53` `* @return x/y with remainder discarded` `54` `*/` `55` `inline BigInt ct_divide(const BigInt& x, const BigInt& y)` `56` `102k` ` {` `57` `102k` ` BigInt q, r;` `58` `102k` ` ct_divide(x, y, q, r);` `59` `102k` ` return q;` `60` `102k` ` }` `61` `62` `/**` `63` `* BigInt division, const time variant` `64` `*` `65` `* This runs with control flow independent of the values of x/y.` `66` `* Warning: the loop bounds still leak the sizes of x and y.` `67` `*` `68` `* @param x an integer` `69` `* @param y a non-zero integer` `70` `* @param q will be set to x / y` `71` `* @param r will be set to x % y` `72` `*/` `73` `void BOTAN_PUBLIC_API(2,9) ct_divide_u8(const BigInt& x,` `74` ` uint8_t y,` `75` ` BigInt& q,` `76` ` uint8_t& r);` `77` `78` `/**` `79` `* BigInt modulo, const time variant` `80` `*` `81` `* Using this function is (slightly) cheaper than calling ct_divide and` `82` `* using only the remainder.` `83` `*` `84` `* @param x a non-negative integer` `85` `* @param modulo a positive integer` `86` `* @return result x % modulo` `87` `*/` `88` `BigInt BOTAN_PUBLIC_API(2,9) ct_modulo(const BigInt& x,` `89` ` const BigInt& modulo);` `90` `91` `}` `92` `93` `#endif`