Update documentation

This commit is contained in:
Jeffrey Walton 2021-02-26 13:38:12 -05:00
parent 546b1e7827
commit 5cb57e1431
No known key found for this signature in database
GPG Key ID: B36AB348921B1838

17
salsa.h
View File

@ -21,18 +21,20 @@ NAMESPACE_BEGIN(CryptoPP)
/// \param data the data to transform /// \param data the data to transform
/// \param rounds the number of rounds /// \param rounds the number of rounds
/// \details Several algorithms, like CryptoBox and Scrypt, require access to /// \details Several algorithms, like CryptoBox and Scrypt, require access to
/// the core Salsa20 transform. The current Crypto++ implementation does not /// the core Salsa20 transform. The current Crypto++ implementation does not
/// lend itself to disgorging the Salsa20 cipher from the Salsa20 core transform. /// lend itself to disgorging the Salsa20 cipher from the Salsa20 core transform.
/// Instead Salsa20_Core is provided with customary accelerations. /// Instead Salsa20_Core is provided with customary accelerations.
void Salsa20_Core(word32* data, unsigned int rounds); void Salsa20_Core(word32* data, unsigned int rounds);
/// \brief Salsa20 stream cipher information /// \brief Salsa20 stream cipher information
/// \since Crypto++ 5.4
struct Salsa20_Info : public VariableKeyLength<32, 16, 32, 16, SimpleKeyingInterface::UNIQUE_IV, 8> struct Salsa20_Info : public VariableKeyLength<32, 16, 32, 16, SimpleKeyingInterface::UNIQUE_IV, 8>
{ {
static std::string StaticAlgorithmName() {return "Salsa20";} static std::string StaticAlgorithmName() {return "Salsa20";}
}; };
/// \brief Salsa20 stream cipher operation /// \brief Salsa20 stream cipher operation
/// \since Crypto++ 5.4
class CRYPTOPP_NO_VTABLE Salsa20_Policy : public AdditiveCipherConcretePolicy<word32, 16> class CRYPTOPP_NO_VTABLE Salsa20_Policy : public AdditiveCipherConcretePolicy<word32, 16>
{ {
protected: protected:
@ -57,7 +59,11 @@ protected:
/// \brief Salsa20 stream cipher /// \brief Salsa20 stream cipher
/// \details Salsa20 provides a variable number of rounds: 8, 12 or 20. The default number of rounds is 20. /// \details Salsa20 provides a variable number of rounds: 8, 12 or 20. The default number of rounds is 20.
/// \sa <a href="http://www.cryptolounge.org/wiki/XSalsa20">XSalsa20</a> /// \sa <A HREF="https://cr.yp.to/snuffle/salsafamily-20071225.pdf">The Salsa20
/// family of stream ciphers (20071225)</A>,
/// <A HREF="https://cr.yp.to/snuffle.html">Snuffle 2005: the Salsa20 encryption
/// function</A> and <A HREF="https://www.cryptopp.com/wiki/Salsa20">Salsa20</A>
/// \since Crypto++ 5.4
struct Salsa20 : public Salsa20_Info, public SymmetricCipherDocumentation struct Salsa20 : public Salsa20_Info, public SymmetricCipherDocumentation
{ {
typedef SymmetricCipherFinal<ConcretePolicyHolder<Salsa20_Policy, AdditiveCipherTemplate<> >, Salsa20_Info> Encryption; typedef SymmetricCipherFinal<ConcretePolicyHolder<Salsa20_Policy, AdditiveCipherTemplate<> >, Salsa20_Info> Encryption;
@ -65,12 +71,14 @@ struct Salsa20 : public Salsa20_Info, public SymmetricCipherDocumentation
}; };
/// \brief XSalsa20 stream cipher information /// \brief XSalsa20 stream cipher information
/// \since Crypto++ 5.4
struct XSalsa20_Info : public FixedKeyLength<32, SimpleKeyingInterface::UNIQUE_IV, 24> struct XSalsa20_Info : public FixedKeyLength<32, SimpleKeyingInterface::UNIQUE_IV, 24>
{ {
static std::string StaticAlgorithmName() {return "XSalsa20";} static std::string StaticAlgorithmName() {return "XSalsa20";}
}; };
/// \brief XSalsa20 stream cipher operation /// \brief XSalsa20 stream cipher operation
/// \since Crypto++ 5.4
class CRYPTOPP_NO_VTABLE XSalsa20_Policy : public Salsa20_Policy class CRYPTOPP_NO_VTABLE XSalsa20_Policy : public Salsa20_Policy
{ {
public: public:
@ -84,6 +92,7 @@ protected:
/// \brief XSalsa20 stream cipher /// \brief XSalsa20 stream cipher
/// \details XSalsa20 provides a variable number of rounds: 8, 12 or 20. The default number of rounds is 20. /// \details XSalsa20 provides a variable number of rounds: 8, 12 or 20. The default number of rounds is 20.
/// \sa <a href="http://www.cryptolounge.org/wiki/XSalsa20">XSalsa20</a> /// \sa <a href="http://www.cryptolounge.org/wiki/XSalsa20">XSalsa20</a>
/// \since Crypto++ 5.4
struct XSalsa20 : public XSalsa20_Info, public SymmetricCipherDocumentation struct XSalsa20 : public XSalsa20_Info, public SymmetricCipherDocumentation
{ {
typedef SymmetricCipherFinal<ConcretePolicyHolder<XSalsa20_Policy, AdditiveCipherTemplate<> >, XSalsa20_Info> Encryption; typedef SymmetricCipherFinal<ConcretePolicyHolder<XSalsa20_Policy, AdditiveCipherTemplate<> >, XSalsa20_Info> Encryption;