diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crypt/cbigint.cpp | 51 | ||||
| -rw-r--r-- | src/crypt/cbigint.h | 98 |
2 files changed, 149 insertions, 0 deletions
diff --git a/src/crypt/cbigint.cpp b/src/crypt/cbigint.cpp new file mode 100644 index 0000000..a1aebc1 --- /dev/null +++ b/src/crypt/cbigint.cpp @@ -0,0 +1,51 @@ +#include "cbigint.h" + +CBigInt::CBigInt(int value = 0) +{ + +} + +CBigInt::CBigInt(const CBigInt & toCopy) +{ + +} + +CBigInt::~CBigInt() +{ + +} + +int CBigInt::setSize(int newSize) +{ + +} + +int CBigInt::size() const +{ + +} + +void CBigInt::setDigit(int pos, BaseType value) +{ + +} + +CBigInt CBigInt::operator +(const CBigInt & n2) +{ + +} + +const char * CBigInt::toHexString()const +{ + +} + +static bool CBigInt::isLongOk() +{ + +} + +void CBigInt::copy(const CBigInt & toCopy) +{ + +} diff --git a/src/crypt/cbigint.h b/src/crypt/cbigint.h new file mode 100644 index 0000000..f4ea407 --- /dev/null +++ b/src/crypt/cbigint.h @@ -0,0 +1,98 @@ +#ifndef CBIGINT_H +#define CBIGINT_H + +/** + * An integer number with unlimited number of digits. Low digit is at low address. + * + * @author Walter Roth + */ + +//define the base type of the number here. Useable types are: char, short int +typedef char BaseType; +struct BaseStruct +{ + BaseType low; + BaseType high; +}; + +union LongBaseType +{ + short int allSegments; + BaseStruct Segment; +}; + +class CBigInt +{ +public: + /** + * Default constructor. Creates a number with size zero digits. + * Converts value to it's CbigInt representation. + */ + CBigInt(int value = 0); + + /** + * Copy constructor. Creates a deep copy. + */ + CBigInt(const CBigInt & toCopy); + + /** + * Destructor frees memory. + */ + ~CBigInt(); + + /** + * Sets the new size, allocates memory and initializes with 0. + * If newSize is smaller than old,* _Size is reduced as long as + * digits to delete are zero. Returns final size. + */ + int setSize(int newSize); + + /** + * Returns the number of digits available (_Size) + */ + int size() const; + + /** + * Sets digit at position to value + */ + void setDigit(int pos, BaseType value); + + /** + * Operator + + */ + CBigInt operator +(const CBigInt & n2); + + /** + * Returns the number as a hexadecimal string + */ + const char * toHexString()const; + + /** + * Returns true, if LongBaseType is twice the size of BaseType + */ + static bool isLongOk(); + +private: + /** + * Make a deep copy + */ + void copy(const CBigInt & toCopy); + +private: + /** + * The start of the digit-array. Points to LSB. + */ + BaseType * _Digits; + + /** + * The number of Digits allocated. + */ + int _Size; + + /** + * The string buffer for toXXString functions + */ + static char * _StringBuffer; +} + +#endif // CBIGINT_H |
