~ubuntu-branches/debian/jessie/armory/jessie

« back to all changes in this revision

Viewing changes to cppForSwig/cryptopp/xtrcrypt.h

  • Committer: Package Import Robot
  • Author(s): Joseph Bisch
  • Date: 2014-10-07 10:22:45 UTC
  • Revision ID: package-import@ubuntu.com-20141007102245-2s3x3rhjxg689hek
Tags: upstream-0.92.3
ImportĀ upstreamĀ versionĀ 0.92.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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