4 * The secure anycast tunneling protocol (satp) defines a protocol used
5 * for communication between any combination of unicast and anycast
6 * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel
7 * mode and allows tunneling of every ETHER TYPE protocol (e.g.
8 * ethernet, ip, arp ...). satp directly includes cryptography and
9 * message authentication based on the methodes used by SRTP. It is
10 * intended to deliver a generic, scaleable and secure solution for
11 * tunneling and relaying of packets of any protocol.
14 * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl,
15 * Christian Pointner <satp@wirdorange.org>
17 * This file is part of Anytun.
19 * Anytun is free software: you can redistribute it and/or modify
20 * it under the terms of the GNU General Public License version 3 as
21 * published by the Free Software Foundation.
23 * Anytun is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
28 * You should have received a copy of the GNU General Public License
29 * along with anytun. If not, see <http://www.gnu.org/licenses/>.
35 #include "datatypes.h"
42 * This class is a wrapper for the libgcrypt multi precision integer library [1]
43 * [1] http://www.gnupg.org/documentation/manuals/gcrypt/MPI-library.html
54 Mpi(const u_int8_t
* src
, u_int32_t len
);
56 void operator=(const Mpi
&src
);
57 void operator=(u_int32_t src
);
58 Mpi
operator+(const Mpi
&b
) const;
59 Mpi
operator+(const u_int32_t
&b
) const;
60 Mpi
operator*(const u_int32_t n
) const;
61 Mpi
operator/(const Mpi
&b
) const;
63 Mpi
operator^(const Mpi
&b
) const;
65 Mpi
mul2exp(u_int32_t e
) const; // value * 2^e
68 * returns a new[] u_int8_t* buffer with the MPI value in the
69 * GCRYMPI_FMT_STD (2-complement stored without a length header).<br>
70 * you have to delete it by hand with delete[]!
71 * @param buf_len size of the new buffer that is returned
72 * @return a byte buffer of size buf_len
74 u_int8_t
*getNewBuf(size_t* written
) const;
75 std::string
getHexDump() const;
76 u_int32_t
getLength() const;