diff --git a/arc4.h b/arc4.h
index a5b20da6..15daf914 100644
--- a/arc4.h
+++ b/arc4.h
@@ -2,6 +2,7 @@
/// \file arc4.h
/// \brief Classes for ARC4 cipher
+/// \since Crypto++ 3.1
#ifndef CRYPTOPP_ARC4_H
#define CRYPTOPP_ARC4_H
@@ -17,7 +18,7 @@ namespace Weak1 {
/// \brief ARC4 base class
/// \details Implementations and overrides in \p Base apply to both \p ENCRYPTION and \p DECRYPTION directions
-/// \since Crypto++ 1.0
+/// \since Crypto++ 3.1
class CRYPTOPP_NO_VTABLE ARC4_Base : public VariableKeyLength<16, 1, 256>, public RandomNumberGenerator, public SymmetricCipher, public SymmetricCipherDocumentation
{
public:
@@ -47,12 +48,13 @@ protected:
/// \brief Alleged RC4
/// \sa Alleged RC4
-/// \since Crypto++ 1.0
+/// \since Crypto++ 3.1
DOCUMENTED_TYPEDEF(SymmetricCipherFinal, ARC4)
/// \brief MARC4 base class
/// \details Implementations and overrides in \p Base apply to both \p ENCRYPTION and \p DECRYPTION directions
/// \details MARC4 discards the first 256 bytes of keystream, which may be weaker than the rest
+/// \since Crypto++ 3.1
class CRYPTOPP_NO_VTABLE MARC4_Base : public ARC4_Base
{
public:
@@ -67,7 +69,7 @@ protected:
/// \brief Modified Alleged RC4
/// \sa Alleged RC4
-/// \since Crypto++ 1.0
+/// \since Crypto++ 3.1
DOCUMENTED_TYPEDEF(SymmetricCipherFinal, MARC4)
}
diff --git a/cast.h b/cast.h
index 515b3a97..08ac2951 100644
--- a/cast.h
+++ b/cast.h
@@ -2,6 +2,7 @@
/// \file cast.h
/// \brief Classes for the CAST-128 and CAST-256 block ciphers
+/// \since Crypto++ 2.2
#ifndef CRYPTOPP_CAST_H
#define CRYPTOPP_CAST_H
@@ -12,6 +13,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief CAST block cipher base
+/// \since Crypto++ 2.2
class CAST
{
protected:
@@ -19,6 +21,7 @@ protected:
};
/// \brief CAST128 block cipher information
+/// \since Crypto++ 2.2
struct CAST128_Info : public FixedBlockSize<8>, public VariableKeyLength<16, 5, 16>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "CAST-128";}
@@ -26,6 +29,7 @@ struct CAST128_Info : public FixedBlockSize<8>, public VariableKeyLength<16, 5,
/// \brief CAST128 block cipher
/// \sa CAST-128
+/// \since Crypto++ 2.2
class CAST128 : public CAST128_Info, public BlockCipherDocumentation
{
/// \brief CAST128 block cipher default operation
@@ -59,6 +63,7 @@ public:
};
/// \brief CAST256 block cipher information
+/// \since Crypto++ 4.0
struct CAST256_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 32, 4>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "CAST-256";}
@@ -66,6 +71,7 @@ struct CAST256_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16
/// \brief CAST256 block cipher
/// \sa CAST-256
+/// \since Crypto++ 4.0
class CAST256 : public CAST256_Info, public BlockCipherDocumentation
{
/// \brief CAST256 block cipher default operation
diff --git a/cbcmac.h b/cbcmac.h
index ec047253..8ad81b52 100644
--- a/cbcmac.h
+++ b/cbcmac.h
@@ -2,6 +2,7 @@
/// \file
/// \brief Classes for CBC MAC
+/// \since Crypto++ 3.1
#ifndef CRYPTOPP_CBCMAC_H
#define CRYPTOPP_CBCMAC_H
@@ -12,6 +13,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief CBC-MAC base class
+/// \since Crypto++ 3.1
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_MAC_Base : public MessageAuthenticationCode
{
public:
@@ -36,6 +38,7 @@ private:
/// \details CBC-MAC is compatible with FIPS 113. The MAC is secure only for fixed
/// length messages. For variable length messages use CMAC or DMAC.
/// \sa CBC-MAC
+/// \since Crypto++ 3.1
template
class CBC_MAC : public MessageAuthenticationCodeImpl >, public SameKeyLengthAs
{
diff --git a/cryptlib.h b/cryptlib.h
index 15067c4f..a552f47d 100644
--- a/cryptlib.h
+++ b/cryptlib.h
@@ -2763,6 +2763,7 @@ public:
/// \details A key agreement domain is a set of parameters that must be shared
/// by two parties in a key agreement protocol, along with the algorithms
/// for generating key pairs and deriving agreed values.
+/// \since Crypto++ 3.0
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE SimpleKeyAgreementDomain : public KeyAgreementAlgorithm
{
public:
@@ -2821,6 +2822,7 @@ public:
/// \details In an authenticated key agreement protocol, each party has two
/// key pairs. The long-lived key pair is called the static key pair,
/// and the short-lived key pair is called the ephemeral key pair.
+/// \since Crypto++ 3.0
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE AuthenticatedKeyAgreementDomain : public KeyAgreementAlgorithm
{
public:
@@ -3000,6 +3002,8 @@ public:
const byte *passwordOrVerifier, unsigned int passwordOrVerifierLength);
};
+/// \brief Password based key agreement domain
+/// \since Crypto++ 3.0
class PasswordAuthenticatedKeyAgreementDomain : public KeyAgreementAlgorithm
{
public:
diff --git a/des.h b/des.h
index 569e7d93..ece7b378 100644
--- a/des.h
+++ b/des.h
@@ -12,6 +12,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief DES block cipher base class
+/// \since Crypto++ 1.0
class CRYPTOPP_DLL RawDES
{
public:
@@ -25,6 +26,7 @@ protected:
};
/// \brief DES block cipher information
+/// \since Crypto++ 1.0
struct DES_Info : public FixedBlockSize<8>, public FixedKeyLength<8>
{
// disable DES in DLL version by not exporting this function
@@ -58,6 +60,7 @@ public:
};
/// \brief 2-key TripleDES block cipher information
+/// \since Crypto++ 1.0
struct DES_EDE2_Info : public FixedBlockSize<8>, public FixedKeyLength<16>
{
CRYPTOPP_DLL static const char * CRYPTOPP_API StaticAlgorithmName() {return "DES-EDE2";}
@@ -85,6 +88,7 @@ public:
};
/// \brief 3-key TripleDES block cipher information
+/// \since Crypto++ 1.0
struct DES_EDE3_Info : public FixedBlockSize<8>, public FixedKeyLength<24>
{
CRYPTOPP_DLL static const char * CRYPTOPP_API StaticAlgorithmName() {return "DES-EDE3";}
@@ -112,6 +116,7 @@ public:
};
/// \brief DESX block cipher information
+/// \since Crypto++ 3.2
struct DES_XEX3_Info : public FixedBlockSize<8>, public FixedKeyLength<24>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "DES-XEX3";}
@@ -119,7 +124,7 @@ struct DES_XEX3_Info : public FixedBlockSize<8>, public FixedKeyLength<24>
/// \brief DESX block cipher
/// \sa DES-XEX3, AKA DESX
-/// \since Crypto++ 1.0
+/// \since Crypto++ 3.2
class DES_XEX3 : public DES_XEX3_Info, public BlockCipherDocumentation
{
/// \brief DES_XEX3 block cipher default operation
diff --git a/dh2.h b/dh2.h
index 48b8d464..b86161d7 100644
--- a/dh2.h
+++ b/dh2.h
@@ -2,6 +2,7 @@
/// \file dh2.h
/// \brief Classes for Unified Diffie-Hellman key exchange
+/// \since Crypto++ 3.0
#ifndef CRYPTOPP_DH2_H
#define CRYPTOPP_DH2_H
@@ -15,7 +16,7 @@ NAMESPACE_BEGIN(CryptoPP)
/// by two parties in a key agreement protocol, along with the algorithms
/// for generating key pairs and deriving agreed values.
/// \sa AuthenticatedKeyAgreementDomain, Unified Diffie-Hellman
-/// \since Crypto++ 1.0
+/// \since Crypto++ 3.0
class DH2 : public AuthenticatedKeyAgreementDomain
{
public:
diff --git a/dmac.h b/dmac.h
index 62be7ee0..539f69fe 100644
--- a/dmac.h
+++ b/dmac.h
@@ -12,6 +12,7 @@ NAMESPACE_BEGIN(CryptoPP)
/// \brief DMAC message authentication code base class
/// \tparam T class derived from BlockCipherDocumentation
+/// \since Crypto++ 3.1
template
class CRYPTOPP_NO_VTABLE DMAC_Base : public SameKeyLengthAs, public MessageAuthenticationCode
{
@@ -41,6 +42,7 @@ private:
/// \tparam T class derived from BlockCipherDocumentation
/// \sa CBC MAC for Real-Time Data Sources (08.15.1997)
/// by Erez Petrank and Charles Rackoff
+/// \since Crypto++ 3.1
template
class DMAC : public MessageAuthenticationCodeFinal >
{
diff --git a/eccrypto.h b/eccrypto.h
index 455dca17..40e3cb9a 100644
--- a/eccrypto.h
+++ b/eccrypto.h
@@ -258,6 +258,7 @@ DL_PrivateKey_EC::~DL_PrivateKey_EC() {}
/// \tparam EC elliptic curve field
/// \tparam COFACTOR_OPTION cofactor multiplication option
/// \sa CofactorMultiplicationOption, Elliptic Curve Diffie-Hellman, AKA ECDH
+/// \since Crypto++ 3.0
template ::DefaultCofactorOption>
struct ECDH
{
@@ -324,6 +325,7 @@ struct ECDSA;
/// \brief Elliptic Curve DSA keys
/// \tparam EC elliptic curve field
+/// \since Crypto++ 3.2
template
struct DL_Keys_ECDSA
{
@@ -333,6 +335,7 @@ struct DL_Keys_ECDSA
/// \brief Elliptic Curve DSA (ECDSA) signature algorithm
/// \tparam EC elliptic curve field
+/// \since Crypto++ 3.2
template
class DL_Algorithm_ECDSA : public DL_Algorithm_GDSA
{
@@ -365,6 +368,7 @@ public:
/// \tparam EC elliptic curve field
/// \tparam H HashTransformation derived class
/// \sa ECDSA
+/// \since Crypto++ 3.2
template
struct ECDSA : public DL_SS, DL_Algorithm_ECDSA, DL_SignatureMessageEncodingMethod_DSA, H>
{
@@ -375,6 +379,7 @@ struct ECDSA : public DL_SS, DL_Algorithm_ECDSA, DL_Signat
/// \tparam H HashTransformation derived class
/// \sa Deterministic Usage of the
/// Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)
+/// \since Crypto++ 6.0
template
struct ECDSA_RFC6979 : public DL_SS<
DL_Keys_ECDSA,
diff --git a/mars.h b/mars.h
index b27fe1a6..1a1f2019 100644
--- a/mars.h
+++ b/mars.h
@@ -2,6 +2,7 @@
/// \file mars.h
/// \brief Classes for the MARS block cipher (IBM AES submission)
+/// \since Crypto++ 3.0
#ifndef CRYPTOPP_MARS_H
#define CRYPTOPP_MARS_H
@@ -12,6 +13,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief MARS block cipher information
+/// \since Crypto++ 3.0
struct MARS_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 56, 8>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "MARS";}
@@ -19,6 +21,7 @@ struct MARS_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 5
/// \brief MARS block cipher
/// \sa MARS
+/// \since Crypto++ 3.0
class MARS : public MARS_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl
diff --git a/md2.h b/md2.h
index b98e5453..655c2232 100644
--- a/md2.h
+++ b/md2.h
@@ -1,3 +1,9 @@
+// md2.h - originally written and placed in the public domain by Wei Dai
+
+/// \file md2.h
+/// \brief Classes for the MD2 message digest
+/// \since Crypto++ 3.0
+
#ifndef CRYPTOPP_MD2_H
#define CRYPTOPP_MD2_H
@@ -8,7 +14,9 @@ NAMESPACE_BEGIN(CryptoPP)
namespace Weak1 {
-/// MD2
+/// \brief MD2 message digest
+/// \sa MD2
+/// \since Crypto++ 3.0
class MD2 : public HashTransformation
{
public:
diff --git a/modes.h b/modes.h
index cbffe46d..b199ef6d 100644
--- a/modes.h
+++ b/modes.h
@@ -237,6 +237,7 @@ public:
};
/// \brief CBC-CTS block cipher mode of operation encryption operation
+/// \since Crypto++ 3.0
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_CTS_Encryption : public CBC_Encryption
{
public:
@@ -270,6 +271,7 @@ protected:
};
/// \brief CBC-CTS block cipher mode of operation decryption operation
+/// \since Crypto++ 3.0
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_CTS_Decryption : public CBC_Decryption
{
public:
@@ -456,6 +458,7 @@ struct CBC_Mode_ExternalCipher : public CipherModeDocumentation
/// \brief CBC-CTS block cipher mode of operation
/// \sa Modes of Operation
/// on the Crypto++ wiki.
+/// \since Crypto++ 3.0
template
struct CBC_CTS_Mode : public CipherModeDocumentation
{
@@ -469,6 +472,7 @@ CRYPTOPP_DLL_TEMPLATE_CLASS CipherModeFinalTemplate_ExternalCipherModes of Operation
/// on the Crypto++ wiki.
+/// \since Crypto++ 3.0
struct CBC_CTS_Mode_ExternalCipher : public CipherModeDocumentation
{
typedef CipherModeFinalTemplate_ExternalCipher Encryption;
diff --git a/mqv.h b/mqv.h
index 6ab8d207..14f4d592 100644
--- a/mqv.h
+++ b/mqv.h
@@ -2,6 +2,7 @@
/// \file mqv.h
/// \brief Classes for Menezes–Qu–Vanstone (MQV) key agreement
+/// \since Crypto++ 3.0
#ifndef CRYPTOPP_MQV_H
#define CRYPTOPP_MQV_H
@@ -22,6 +23,7 @@ NAMESPACE_BEGIN(CryptoPP)
/// Binary curves use a polynomial to represent its characteristic, while prime curves
/// use a prime number.
/// \sa MQV, HMQV, FHMQV, and AuthenticatedKeyAgreementDomain
+/// \since Crypto++ 3.0
template
class MQV_Domain : public AuthenticatedKeyAgreementDomain
{
@@ -213,6 +215,7 @@ private:
/// Menezes-Qu-Vanstone in GF(p) with key validation, AKA MQV
/// \sa MQV, HMQV_Domain, FHMQV_Domain, AuthenticatedKeyAgreementDomain
+/// \since Crypto++ 3.0
typedef MQV_Domain MQV;
NAMESPACE_END
diff --git a/rc2.h b/rc2.h
index 8baf1288..f7a0d4fb 100644
--- a/rc2.h
+++ b/rc2.h
@@ -2,6 +2,7 @@
/// \file rc2.h
/// \brief Classes for the RC2 block cipher
+/// \since Crypto++ 3.0
#ifndef CRYPTOPP_RC2_H
#define CRYPTOPP_RC2_H
@@ -13,6 +14,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief RC2 block cipher information
+/// \since Crypto++ 3.0
struct RC2_Info : public FixedBlockSize<8>, public VariableKeyLength<16, 1, 128>
{
CRYPTOPP_CONSTANT(DEFAULT_EFFECTIVE_KEYLENGTH = 1024)
@@ -22,6 +24,7 @@ struct RC2_Info : public FixedBlockSize<8>, public VariableKeyLength<16, 1, 128>
/// \brief RC2 block cipher
/// \sa RC2 on the Crypto Lounge.
+/// \since Crypto++ 3.0
class RC2 : public RC2_Info, public BlockCipherDocumentation
{
/// \brief Class specific methods used to operate the cipher.
diff --git a/rc6.h b/rc6.h
index ce2227d6..1a41ab2c 100644
--- a/rc6.h
+++ b/rc6.h
@@ -2,6 +2,7 @@
/// \file rc6.h
/// \brief Classes for the RC6 block cipher
+/// \since Crypto++ 3.0
#ifndef CRYPTOPP_RC6_H
#define CRYPTOPP_RC6_H
@@ -12,6 +13,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief RC6 block cipher information
+/// \since Crypto++ 3.0
struct RC6_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 32, 8>, public VariableRounds<20>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "RC6";}
@@ -20,6 +22,7 @@ struct RC6_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 32
/// \brief RC6 block cipher
/// \sa RC6
+/// \since Crypto++ 3.0
class RC6 : public RC6_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl
diff --git a/rijndael.h b/rijndael.h
index 413d2ebf..a0316442 100644
--- a/rijndael.h
+++ b/rijndael.h
@@ -4,7 +4,7 @@
/// \brief Classes for Rijndael encryption algorithm
/// \details All key sizes are supported. The library only provides Rijndael with 128-bit blocks,
/// and not 192-bit or 256-bit blocks
-/// \since Rijndael since Crypto++ 3.2, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
+/// \since Rijndael since Crypto++ 3.1, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
/// Power8 AES since Crypto++ 6.0
#ifndef CRYPTOPP_RIJNDAEL_H
@@ -23,7 +23,7 @@ NAMESPACE_BEGIN(CryptoPP)
/// \brief Rijndael block cipher information
/// \details All key sizes are supported. The library only provides Rijndael with 128-bit blocks,
/// and not 192-bit or 256-bit blocks
-/// \since Rijndael since Crypto++ 3.2, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
+/// \since Rijndael since Crypto++ 3.1, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
/// Power8 AES since Crypto++ 6.0
struct Rijndael_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 32, 8>
{
@@ -33,7 +33,7 @@ struct Rijndael_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 1
/// \brief Rijndael block cipher
/// \details All key sizes are supported. The library only provides Rijndael with 128-bit blocks,
/// and not 192-bit or 256-bit blocks
-/// \since Rijndael since Crypto++ 3.2, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
+/// \since Rijndael since Crypto++ 3.1, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
/// Power8 AES since Crypto++ 6.0
/// \sa Rijndael
class CRYPTOPP_DLL Rijndael : public Rijndael_Info, public BlockCipherDocumentation
@@ -63,7 +63,7 @@ class CRYPTOPP_DLL Rijndael : public Rijndael_Info, public BlockCipherDocumentat
/// \brief Provides implementation for encryption transformation
/// \details Enc provides implementation for encryption transformation. All key sizes are supported.
/// The library only provides Rijndael with 128-bit blocks, and not 192-bit or 256-bit blocks
- /// \since Rijndael since Crypto++ 3.2, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
+ /// \since Rijndael since Crypto++ 3.1, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
/// Power8 AES since Crypto++ 6.0
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE Enc : public Base
{
@@ -77,7 +77,7 @@ class CRYPTOPP_DLL Rijndael : public Rijndael_Info, public BlockCipherDocumentat
/// \brief Provides implementation for decryption transformation
/// \details Dec provides implementation for decryption transformation. All key sizes are supported.
/// The library only provides Rijndael with 128-bit blocks, and not 192-bit or 256-bit blocks
- /// \since Rijndael since Crypto++ 3.2, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
+ /// \since Rijndael since Crypto++ 3.1, Intel AESNI since Crypto++ 5.6.1, ARMv8 AES since Crypto++ 6.0,
/// Power8 AES since Crypto++ 6.0
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE Dec : public Base
{
diff --git a/rw.h b/rw.h
index 21f60d03..48aa2891 100644
--- a/rw.h
+++ b/rw.h
@@ -7,6 +7,7 @@
/// speedup calculations.
/// \sa RSA signatures and Rabin–Williams
/// signatures: the state of the art (20080131), Section 6, The tweaks e and f.
+/// \since Crypto++ 3.0
#ifndef CRYPTOPP_RW_H
#define CRYPTOPP_RW_H
@@ -18,7 +19,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief Rabin-Williams trapdoor function using the public key
-/// \since Crypto++ 2.0, Tweaked roots using e and f since Crypto++ 5.6.4
+/// \since Crypto++ 3.0, Tweaked roots using e and f since Crypto++ 5.6.4
class CRYPTOPP_DLL RWFunction : public TrapdoorFunction, public PublicKey
{
typedef RWFunction ThisClass;
@@ -54,7 +55,7 @@ protected:
};
/// \brief Rabin-Williams trapdoor function using the private key
-/// \since Crypto++ 2.0, Tweaked roots using e and f since Crypto++ 5.6.4
+/// \since Crypto++ 3.0, Tweaked roots using e and f since Crypto++ 5.6.4
class CRYPTOPP_DLL InvertibleRWFunction : public RWFunction, public TrapdoorFunctionInverse, public PrivateKey
{
typedef InvertibleRWFunction ThisClass;
@@ -123,6 +124,7 @@ protected:
};
/// \brief Rabin-Williams keys
+/// \since Crypto++ 3.0
struct RW
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "RW";}
@@ -133,6 +135,7 @@ struct RW
/// \brief Rabin-Williams signature scheme
/// \tparam STANDARD signature standard
/// \tparam H hash transformation
+/// \since Crypto++ 3.0
template
struct RWSS : public TF_SS
{
diff --git a/seal.h b/seal.h
index 861bd35c..d8826aec 100644
--- a/seal.h
+++ b/seal.h
@@ -2,6 +2,7 @@
/// \file seal.h
/// \brief Classes for SEAL stream cipher
+/// \since Crypto++ 2.2
#ifndef CRYPTOPP_SEAL_H
#define CRYPTOPP_SEAL_H
@@ -13,6 +14,7 @@ NAMESPACE_BEGIN(CryptoPP)
/// \brief SEAL stream cipher information
/// \tparam B Endianness of the stream cipher
+/// \since Crypto++ 2.2
template
struct SEAL_Info : public FixedKeyLength<20, SimpleKeyingInterface::INTERNALLY_GENERATED_IV, 4>
{
@@ -21,6 +23,7 @@ struct SEAL_Info : public FixedKeyLength<20, SimpleKeyingInterface::INTERNALLY_G
/// \brief SEAL stream cipher operation
/// \tparam B Endianness of the stream cipher
+/// \since Crypto++ 2.2
template
class CRYPTOPP_NO_VTABLE SEAL_Policy : public AdditiveCipherConcretePolicy, public SEAL_Info
{
@@ -43,6 +46,7 @@ private:
/// \brief SEAL stream cipher
/// \tparam B Endianness of the stream cipher
/// \sa SEAL
+/// \since Crypto++ 2.2
template
struct SEAL : public SEAL_Info, public SymmetricCipherDocumentation
{
diff --git a/serpent.h b/serpent.h
index 37d53995..4f76e056 100644
--- a/serpent.h
+++ b/serpent.h
@@ -12,6 +12,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief Serpent block cipher information
+/// \since Crypto++ 3.1
struct Serpent_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 32, 8>, public FixedRounds<32>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "Serpent";}
@@ -19,6 +20,7 @@ struct Serpent_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16
/// \brief Serpent block cipher
/// \sa Serpent
+/// \since Crypto++ 3.1
class Serpent : public Serpent_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl
diff --git a/square.h b/square.h
index f1e9ee2c..962b229d 100644
--- a/square.h
+++ b/square.h
@@ -12,6 +12,7 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief Square block cipher information
+/// \since Crypto++ 2.2
struct Square_Info : public FixedBlockSize<16>, public FixedKeyLength<16>, FixedRounds<8>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "Square";}
@@ -19,6 +20,7 @@ struct Square_Info : public FixedBlockSize<16>, public FixedKeyLength<16>, Fixed
/// \brief Square block cipher
/// \sa Square
+/// \since Crypto++ 2.2
class Square : public Square_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl
diff --git a/twofish.h b/twofish.h
index 84b2bb53..16284b48 100644
--- a/twofish.h
+++ b/twofish.h
@@ -12,13 +12,15 @@
NAMESPACE_BEGIN(CryptoPP)
/// \brief Twofish block cipher information
+/// \since Crypto++ 3.1
struct Twofish_Info : public FixedBlockSize<16>, public VariableKeyLength<16, 16, 32, 8>, FixedRounds<16>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "Twofish";}
};
/// \brief Twofish block cipher
-//~ \sa Twofish
+/// \sa Twofish
+/// \since Crypto++ 3.1
class Twofish : public Twofish_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl