BeeCrypt 4.2.1
mpnumber.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2003 Bob Deblier
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 */
19
26#ifndef _MPNUMBER_H
27#define _MPNUMBER_H
28
29#include "beecrypt/mp.h"
30
31#ifdef __cplusplus
32# include <iostream>
33#endif
34
35#ifdef __cplusplus
37#else
38struct _mpnumber
39#endif
40{
41 size_t size;
43
44#ifdef __cplusplus
45 static const mpnumber ZERO;
46 static const mpnumber ONE;
47
49 mpnumber(unsigned int);
50 mpnumber(size_t, const mpw*);
53
54 const mpnumber& operator=(const mpnumber&);
55
56 void wipe();
57
58 size_t bitlength() const;
59#endif
60};
61
62#ifndef __cplusplus
63typedef struct _mpnumber mpnumber;
64#else
66std::ostream& operator<<(std::ostream&, const mpnumber&);
67#endif
68
69#ifdef __cplusplus
70extern "C" {
71#endif
72
76void mpnsize(mpnumber*, size_t);
78void mpninit(mpnumber*, size_t, const mpw*);
82void mpncopy(mpnumber*, const mpnumber*);
85
87void mpnset (mpnumber*, size_t, const mpw*);
90
92int mpnsetbin(mpnumber*, const byte*, size_t);
94int mpnsethex(mpnumber*, const char*);
95
97int mpninv(mpnumber*, const mpnumber*, const mpnumber*);
98
102size_t mpntrbits(mpnumber*, size_t);
104size_t mpnbits(const mpnumber*);
105
106#ifdef __cplusplus
107}
108#endif
109
110#endif
#define BEECRYPTAPI
Definition: api.h:52
uint64_t mpw
Definition: api.h:87
Multi-precision integer routines.
size_t mpntrbits(mpnumber *, size_t)
Truncate the mpnumber to the specified number of (least significant) bits.
void mpninit(mpnumber *, size_t, const mpw *)
std::ostream & operator<<(std::ostream &, const mpnumber &)
int mpnsetbin(mpnumber *, const byte *, size_t)
void mpnsetw(mpnumber *, mpw)
void mpnwipe(mpnumber *)
int mpnsethex(mpnumber *, const char *)
void mpnset(mpnumber *, size_t, const mpw *)
size_t mpnbits(const mpnumber *)
void mpnsize(mpnumber *, size_t)
int mpninv(mpnumber *, const mpnumber *, const mpnumber *)
void mpnzero(mpnumber *)
void mpncopy(mpnumber *, const mpnumber *)
void mpnfree(mpnumber *)
Definition: mpnumber.h:40
static const mpnumber ZERO
Definition: mpnumber.h:45
mpnumber(const mpnumber &)
mpnumber(size_t, const mpw *)
size_t size
Definition: mpnumber.h:41
const mpnumber & operator=(const mpnumber &)
mpnumber(unsigned int)
mpw * data
Definition: mpnumber.h:42
void wipe()
static const mpnumber ONE
Definition: mpnumber.h:46
size_t bitlength() const