summaryrefslogtreecommitdiff
path: root/xed25519.h
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-12-11 17:32:28 -0500
committerJeffrey Walton <noloader@gmail.com>2018-12-11 17:32:28 -0500
commit20fce33449e763a2c5d12375871409e5c1177731 (patch)
tree7a13ce4726f34c00058080213b46ca3b24cad144 /xed25519.h
parent77923a291a5c993cca5c11c9b7dc00891d88bd8e (diff)
downloadcryptopp-git-20fce33449e763a2c5d12375871409e5c1177731.tar.gz
Update documentation
Diffstat (limited to 'xed25519.h')
-rw-r--r--xed25519.h47
1 files changed, 46 insertions, 1 deletions
diff --git a/xed25519.h b/xed25519.h
index 3d6442fa..18913489 100644
--- a/xed25519.h
+++ b/xed25519.h
@@ -2,31 +2,76 @@
// Crypto++ specific implementation wrapped around Adam
// Langley's curve25519-donna.
+// Typically the key agreement classes encapsulate their data more
+// than x25519 does below. We made them a little more accessible
+// due to crypto_box operations. Once the library cuts-in the
+// crypto_box operations the x25519 class will be more restricted.
+
#ifndef CRYPTOPP_XED25519_H
#define CRYPTOPP_XED25519_H
#include "cryptlib.h"
-#include "algparam.h"
NAMESPACE_BEGIN(CryptoPP)
class Integer;
/// \brief x25519 with key validation
+/// \since Crypto++ 8.0
class x25519 : public SimpleKeyAgreementDomain, public CryptoParameters
{
public:
+ /// \brief Create a x25519 object
+ /// \param y public key
+ /// \param x private key
+ /// \details This constructor creates a x25519 object using existing parameters.
+ /// \note The public key is not validated.
x25519(const byte y[32], const byte x[32]);
+
+ /// \brief Create a x25519 object
+ /// \param x private key
+ /// \details This constructor creates a x25519 object using existing parameters.
+ /// The public key is calculated from the private key.
+ x25519(const byte x[32]);
+
+ /// \brief Create a x25519 object
+ /// \param y public key
+ /// \param x private key
+ /// \details This constructor creates a x25519 object using existing parameters.
+ /// \note The public key is not validated.
x25519(const Integer &y, const Integer &x);
+
+ /// \brief Create a x25519 object
+ /// \param x private key
+ /// \details This constructor creates a x25519 object using existing parameters.
+ /// The public key is calculated from the private key.
+ x25519(const Integer &x);
+
+ /// \brief Create a x25519 object
+ /// \param rng RandomNumberGenerator derived class
+ /// \details This constructor creates a new x25519 using the random number generator.
x25519(RandomNumberGenerator &rng);
+
+ /// \brief Create a x25519 object
+ /// \param params public and private key
+ /// \param y private key
+ /// \details This constructor creates a x25519 object using existing parameters.
+ /// The <tt>params</tt> can be created with <tt>DEREncode</tt>.
+ /// \note The public key is not validated.
x25519(BufferedTransformation &params);
+ /// \brief Decode a x25519 object
+ /// \param params serialized object
+ /// \details DEREncode() writes the public and private key as an ASN.1 structure.
+ /// The private key is written first as a <tt>BIT_STRING</tt>. The public key
+ /// is written second as an <tt>OCTET_STRING</tt>.
void DEREncode(BufferedTransformation &params) const;
bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const;
void AssignFrom(const NameValuePairs &source);
CryptoParameters & AccessCryptoParameters() {return *this;}
+
unsigned int AgreedValueLength() const {return 32;}
unsigned int PrivateKeyLength() const {return 32;}
unsigned int PublicKeyLength() const {return 32;}