00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00026 #ifndef _MPNUMBER_H
00027 #define _MPNUMBER_H
00028
00029 #include "beecrypt/mp.h"
00030
00031 #ifdef __cplusplus
00032 # include <iostream>
00033 #endif
00034
00035 #ifdef __cplusplus
00036 struct BEECRYPTAPI mpnumber
00037 #else
00038 struct _mpnumber
00039 #endif
00040 {
00041 size_t size;
00042 mpw* data;
00043
00044 #ifdef __cplusplus
00045 static const mpnumber ZERO;
00046 static const mpnumber ONE;
00047
00048 mpnumber();
00049 mpnumber(unsigned int);
00050 mpnumber(const mpnumber&);
00051 ~mpnumber();
00052
00053 const mpnumber& operator=(const mpnumber&);
00054 bool operator==(const mpnumber&) const throw ();
00055 bool operator!=(const mpnumber&) const throw ();
00056
00057 void wipe();
00058
00059 size_t bitlength() const throw ();
00060 #endif
00061 };
00062
00063 #ifndef __cplusplus
00064 typedef struct _mpnumber mpnumber;
00065 #else
00066 BEECRYPTAPI
00067 std::ostream& operator<<(std::ostream&, const mpnumber&);
00068
00069
00070
00071
00072 #endif
00073
00074 #ifdef __cplusplus
00075 extern "C" {
00076 #endif
00077
00078 BEECRYPTAPI
00079 void mpnzero(mpnumber*);
00080 BEECRYPTAPI
00081 void mpnsize(mpnumber*, size_t);
00082 BEECRYPTAPI
00083 void mpninit(mpnumber*, size_t, const mpw*);
00084 BEECRYPTAPI
00085 void mpnfree(mpnumber*);
00086 BEECRYPTAPI
00087 void mpncopy(mpnumber*, const mpnumber*);
00088 BEECRYPTAPI
00089 void mpnwipe(mpnumber*);
00090
00091 BEECRYPTAPI
00092 void mpnset (mpnumber*, size_t, const mpw*);
00093 BEECRYPTAPI
00094 void mpnsetw (mpnumber*, mpw);
00095
00096 BEECRYPTAPI
00097 int mpnsetbin(mpnumber*, const byte*, size_t);
00098 BEECRYPTAPI
00099 int mpnsethex(mpnumber*, const char*);
00100
00101 BEECRYPTAPI
00102 int mpninv(mpnumber*, const mpnumber*, const mpnumber*);
00103
00106 BEECRYPTAPI
00107 size_t mpntrbits(mpnumber*, size_t);
00108 BEECRYPTAPI
00109 size_t mpnbits(const mpnumber*);
00110
00111 #ifdef __cplusplus
00112 }
00113 #endif
00114
00115 #endif