Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
BigNumber.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef _AUTH_BIGNUMBER_H
7
#define _AUTH_BIGNUMBER_H
8
9
#include "
Define.h
"
10
#include "
Errors.h
"
11
#include <array>
12
#include <memory>
13
#include <string>
14
#include <vector>
15
16
struct
bignum_st;
17
18
class
BigNumber
19
{
20
public
:
21
BigNumber
();
22
BigNumber
(
BigNumber
const
& bn);
23
BigNumber
(
uint32
v) :
BigNumber
() {
SetDword
(v); }
24
BigNumber
(
int32
v) :
BigNumber
() {
SetDword
(v); }
25
BigNumber
(std::string
const
& v) :
BigNumber
() {
SetHexStr
(v); }
26
template
<
size_t
Size>
27
BigNumber
(std::array<uint8, Size>
const
& v,
bool
littleEndian =
true
) :
BigNumber
() {
SetBinary
(v.data(), Size, littleEndian); }
28
29
~BigNumber
();
30
31
void
SetDword
(
int32
);
32
void
SetDword
(
uint32
);
33
void
SetQword
(
uint64
);
34
void
SetBinary
(
uint8
const
* bytes,
int32
len,
bool
littleEndian =
true
);
35
template
<
typename
Container>
36
auto
SetBinary
(Container
const
& c,
bool
littleEndian =
true
) -> std::enable_if_t<!std::is_pointer_v<std::decay_t<Container>>> {
SetBinary
(std::data(c), std::size(c), littleEndian); }
37
void
SetHexStr
(
char
const
* str);
38
void
SetHexStr
(std::string
const
& str) {
SetHexStr
(str.c_str()); }
39
40
void
SetRand
(
int32
numbits);
41
42
BigNumber
&
operator=
(
BigNumber
const
& bn);
43
44
BigNumber
operator+=
(
BigNumber
const
& bn);
45
BigNumber
operator+
(
BigNumber
const
& bn)
const
46
{
47
BigNumber
t(*
this
);
48
return
t += bn;
49
}
50
51
BigNumber
operator-=
(
BigNumber
const
& bn);
52
BigNumber
operator-
(
BigNumber
const
& bn)
const
53
{
54
BigNumber
t(*
this
);
55
return
t -= bn;
56
}
57
58
BigNumber
operator*=
(
BigNumber
const
& bn);
59
BigNumber
operator*
(
BigNumber
const
& bn)
const
60
{
61
BigNumber
t(*
this
);
62
return
t *= bn;
63
}
64
65
BigNumber
operator/=
(
BigNumber
const
& bn);
66
BigNumber
operator/
(
BigNumber
const
& bn)
const
67
{
68
BigNumber
t(*
this
);
69
return
t /= bn;
70
}
71
72
BigNumber
operator%=
(
BigNumber
const
& bn);
73
BigNumber
operator%
(
BigNumber
const
& bn)
const
74
{
75
BigNumber
t(*
this
);
76
return
t %= bn;
77
}
78
79
bool
isZero
()
const
;
80
81
BigNumber
ModExp
(
BigNumber
const
& bn1,
BigNumber
const
& bn2)
const
;
82
BigNumber
Exp
(
BigNumber
const
&)
const
;
83
84
int32
GetNumBytes
(
void
)
const
;
85
86
struct
bignum_st*
BN
() {
return
_bn
; }
87
struct
bignum_st const*
BN
()
const
{
return
_bn
; }
88
89
uint32
AsDword
();
90
91
void
GetBytes
(
uint8
* buf,
size_t
bufsize,
bool
littleEndian =
true
)
const
;
92
std::vector<uint8>
ToByteVector
(
int32
minSize = 0,
bool
littleEndian =
true
)
const
;
93
94
template
<std::
size_t
Size>
95
std::array<uint8, Size>
ToByteArray
(
bool
littleEndian =
true
)
const
96
{
97
std::array<uint8, Size> buf;
98
GetBytes
(buf.data(), Size, littleEndian);
99
return
buf;
100
}
101
102
char
*
AsHexStr
()
const
;
103
char
*
AsDecStr
()
const
;
104
105
private
:
106
struct
bignum_st*
_bn
;
107
};
108
#endif
109
Define.h
int32
std::int32_t int32
Definition
Define.h:73
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
uint64
std::uint64_t uint64
Definition
Define.h:76
Errors.h
BigNumber
Definition
BigNumber.h:19
BigNumber::SetHexStr
void SetHexStr(std::string const &str)
Definition
BigNumber.h:38
BigNumber::BigNumber
BigNumber()
Definition
BigNumber.cpp:11
BigNumber::Exp
BigNumber Exp(BigNumber const &) const
Definition
BigNumber.cpp:129
BigNumber::BN
struct bignum_st * BN()
Definition
BigNumber.h:86
BigNumber::BigNumber
BigNumber(std::array< uint8, Size > const &v, bool littleEndian=true)
Definition
BigNumber.h:27
BigNumber::ModExp
BigNumber ModExp(BigNumber const &bn1, BigNumber const &bn2) const
Definition
BigNumber.cpp:141
BigNumber::ToByteVector
std::vector< uint8 > ToByteVector(int32 minSize=0, bool littleEndian=true) const
Definition
BigNumber.cpp:194
BigNumber::ToByteArray
std::array< uint8, Size > ToByteArray(bool littleEndian=true) const
Definition
BigNumber.h:95
BigNumber::~BigNumber
~BigNumber()
Definition
BigNumber.cpp:20
BigNumber::BigNumber
BigNumber(uint32 v)
Definition
BigNumber.h:23
BigNumber::operator%=
BigNumber operator%=(BigNumber const &bn)
Definition
BigNumber.cpp:118
BigNumber::SetRand
void SetRand(int32 numbits)
Definition
BigNumber.cpp:70
BigNumber::SetDword
void SetDword(int32)
Definition
BigNumber.cpp:25
BigNumber::BigNumber
BigNumber(int32 v)
Definition
BigNumber.h:24
BigNumber::operator*
BigNumber operator*(BigNumber const &bn) const
Definition
BigNumber.h:59
BigNumber::AsDword
uint32 AsDword()
Definition
BigNumber.cpp:158
BigNumber::SetBinary
void SetBinary(uint8 const *bytes, int32 len, bool littleEndian=true)
Definition
BigNumber.cpp:44
BigNumber::operator*=
BigNumber operator*=(BigNumber const &bn)
Definition
BigNumber.cpp:96
BigNumber::operator-
BigNumber operator-(BigNumber const &bn) const
Definition
BigNumber.h:52
BigNumber::SetHexStr
void SetHexStr(char const *str)
Definition
BigNumber.cpp:65
BigNumber::BN
struct bignum_st const * BN() const
Definition
BigNumber.h:87
BigNumber::AsHexStr
char * AsHexStr() const
Definition
BigNumber.cpp:203
BigNumber::operator%
BigNumber operator%(BigNumber const &bn) const
Definition
BigNumber.h:73
BigNumber::operator+
BigNumber operator+(BigNumber const &bn) const
Definition
BigNumber.h:45
BigNumber::AsDecStr
char * AsDecStr() const
Definition
BigNumber.cpp:208
BigNumber::SetBinary
auto SetBinary(Container const &c, bool littleEndian=true) -> std::enable_if_t<!std::is_pointer_v< std::decay_t< Container > > >
Definition
BigNumber.h:36
BigNumber::GetNumBytes
int32 GetNumBytes(void) const
Definition
BigNumber.cpp:153
BigNumber::operator+=
BigNumber operator+=(BigNumber const &bn)
Definition
BigNumber.cpp:84
BigNumber::_bn
struct bignum_st * _bn
Definition
BigNumber.h:106
BigNumber::operator/=
BigNumber operator/=(BigNumber const &bn)
Definition
BigNumber.cpp:107
BigNumber::BigNumber
BigNumber(std::string const &v)
Definition
BigNumber.h:25
BigNumber::isZero
bool isZero() const
Definition
BigNumber.cpp:163
BigNumber::operator/
BigNumber operator/(BigNumber const &bn) const
Definition
BigNumber.h:66
BigNumber::GetBytes
void GetBytes(uint8 *buf, size_t bufsize, bool littleEndian=true) const
Definition
BigNumber.cpp:169
BigNumber::SetQword
void SetQword(uint64)
Definition
BigNumber.cpp:37
BigNumber::operator=
BigNumber & operator=(BigNumber const &bn)
Definition
BigNumber.cpp:75
BigNumber::operator-=
BigNumber operator-=(BigNumber const &bn)
Definition
BigNumber.cpp:90
src
server
shared
Cryptography
BigNumber.h
Generated on
for Project SkyFire Core by
1.17.0