Crypto++
Main Page
Namespaces
Classes
Files
File List
File Members
xtrcrypt.h
Go to the documentation of this file.
1
#ifndef CRYPTOPP_XTRCRYPT_H
2
#define CRYPTOPP_XTRCRYPT_H
3
4
/** \file
5
"The XTR public key system" by Arjen K. Lenstra and Eric R. Verheul
6
*/
7
8
#include "
xtr.h
"
9
10
NAMESPACE_BEGIN(CryptoPP)
11
12
//! XTR-DH with key validation
13
14
class
XTR_DH
: public
SimpleKeyAgreementDomain
, public
CryptoParameters
15
{
16
typedef
XTR_DH
ThisClass
;
17
18
public
:
19
XTR_DH
(
const
Integer
&p,
const
Integer
&q,
const
GFP2Element
&g);
20
XTR_DH
(
RandomNumberGenerator
&rng,
unsigned
int
pbits,
unsigned
int
qbits);
21
XTR_DH
(
BufferedTransformation
&domainParams);
22
23
void
DEREncode(
BufferedTransformation
&domainParams)
const
;
24
25
bool
Validate(
RandomNumberGenerator
&rng,
unsigned
int
level)
const
;
26
bool
GetVoidValue(
const
char
*name,
const
std::type_info &valueType,
void
*pValue)
const
;
27
void
AssignFrom(
const
NameValuePairs
&source);
28
CryptoParameters & AccessCryptoParameters() {
return
*
this
;}
29
unsigned
int
AgreedValueLength
()
const
{
return
2*m_p.ByteCount();}
30
unsigned
int
PrivateKeyLength
()
const
{
return
m_q.ByteCount();}
31
unsigned
int
PublicKeyLength
()
const
{
return
2*m_p.ByteCount();}
32
33
void
GeneratePrivateKey(
RandomNumberGenerator
&rng, byte *privateKey)
const
;
34
void
GeneratePublicKey(
RandomNumberGenerator
&rng,
const
byte *privateKey, byte *publicKey)
const
;
35
bool
Agree(byte *agreedValue,
const
byte *privateKey,
const
byte *otherPublicKey,
bool
validateOtherPublicKey=
true
)
const
;
36
37
const
Integer
&GetModulus()
const
{
return
m_p;}
38
const
Integer
&GetSubgroupOrder()
const
{
return
m_q;}
39
const
GFP2Element
&GetSubgroupGenerator()
const
{
return
m_g;}
40
41
void
SetModulus(
const
Integer
&p) {m_p = p;}
42
void
SetSubgroupOrder(
const
Integer
&q) {m_q = q;}
43
void
SetSubgroupGenerator(
const
GFP2Element
&g) {m_g = g;}
44
45
private
:
46
unsigned
int
ExponentBitLength()
const
;
47
48
Integer
m_p, m_q;
49
GFP2Element
m_g;
50
};
51
52
NAMESPACE_END
53
54
#endif
XTR_DH::PublicKeyLength
unsigned int PublicKeyLength() const
return length of public keys in this domain
Definition:
xtrcrypt.h:31
RandomNumberGenerator
interface for random number generators
Definition:
cryptlib.h:668
BufferedTransformation
interface for buffered transformations
Definition:
cryptlib.h:770
SimpleKeyAgreementDomain
interface for domains of simple key agreement protocols
Definition:
cryptlib.h:1430
GFP2Element
an element of GF(p^2)
Definition:
xtr.h:13
XTR_DH
XTR-DH with key validation.
Definition:
xtrcrypt.h:14
xtr.h
"The XTR public key system" by Arjen K.
XTR_DH::AgreedValueLength
unsigned int AgreedValueLength() const
return length of agreed value produced
Definition:
xtrcrypt.h:29
Integer
multiple precision integer and basic arithmetics
Definition:
integer.h:26
CryptoParameters
interface for crypto prameters
Definition:
cryptlib.h:1127
XTR_DH::PrivateKeyLength
unsigned int PrivateKeyLength() const
return length of private keys in this domain
Definition:
xtrcrypt.h:30
NameValuePairs
interface for retrieving values given their names
Definition:
cryptlib.h:224
Generated on Sat Dec 24 2016 09:02:34 for Crypto++ by
1.8.8