summaryrefslogtreecommitdiffstats
path: root/src/crypt
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypt')
-rw-r--r--src/crypt/cbigint.cpp51
-rw-r--r--src/crypt/cbigint.h98
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