Hi Shane,
Good catch. I wasted about 4 hours on a fat fingered typo like that -
trying to figure out what I was doing wrong with the library...
Jeff
On 6/1/07, Shane Kirk <[EMAIL PROTECTED]> wrote:
>
> The template class name is "simple_prt", but the constructor is "simple_ptr".
> I could see how this would cause your error. Unless of course it was simply a
> typo in your email.
>
> -Shane
>
> --- [EMAIL PROTECTED] wrote:
>
> From: EricD <[EMAIL PROTECTED]>
> To: Crypto++ Users <[EMAIL PROTECTED]>
> Subject: symmetric cipher - visual C++ error
> Date: Fri, 01 Jun 2007 12:25:22 -0700
>
>
> I am trying to run a symmetric cipher with visual C++ express 2005,
> and keep getting an error linked to smartptr.h of the crypto++
> library. I encounter the errors C2590 ('simple_ptr' : only a
> constructor can have a base/member initializer list) and C2523
> ('CryptoPP::simple_prt<T>::~simple_ptr' : destructor tag mismatch).
> They reference this code:
>
> template <class T> class simple_prt
> {
> public:
> simple_ptr() : m_p(NULL) {} //error C2590
> ~simple_ptr() {delete m_p;} //error C2523
> T *m_p;
> };
>
> I am pretty sure C2523 will dissapear if C2590 is resolved, but the
> errors are within the crypto library...and I am at a loss.
>
> I have run the code with and without sp1, on windows vista and 2000,
> and have tried the vista patch for visual C++ as well.
>
> If it helps, below is the full program which shows what my goal is for
> this code.
>
> // PreCompiled Header
> #include "StdAfx.h"
>
> // Includes all required Crypto++
> // Block Cipher Headers
> #include "SymmetricCipher.h"
>
> // C Runtime Includes
> #include <iostream>
> #include <iomanip>
>
> // Crypto++ Includes
> // #include "cryptlib.h"
> #include "crypto++/modes.h" // xxx_Mode< >
> #include "crypto++/filters.h" // StringSource and
> // StreamTransformation
>
> // Cipher Modes
> //
> // #define CIPHER_MODE CBC_CTS_Mode
> #define CIPHER_MODE CBC_Mode
> // #define CIPHER_MODE CFB_FIPS_Mode
> // #define CIPHER_MODE CFB_Mode
> // #define CIPHER_MODE CTR_Mode
> // #define CIPHER_MODE ECB_Mode
> // #define CIPHER_MODE OFB_Mode
>
> // Ciphers
> //
> #define CIPHER AES
> // #define CIPHER Blowfish
> // #define CIPHER BTEA
> // #define CIPHER Camellia
> // #define CIPHER CAST128
> // #define CIPHER CAST256
> // #define CIPHER DES
> // #define CIPHER DES_EDE2
> // #define CIPHER DES_EDE3
> // #define CIPHER DES_XEX3
> // #define CIPHER GOST
> // #define CIPHER IDEA
> // #define CIPHER MARS
> // #define CIPHER RC2
> // #define CIPHER RC5
> // #define CIPHER RC6
> // #define CIPHER Rijndael
> // #define CIPHER SAFER_K
> // #define CIPHER SAFER_SK
> // #define CIPHER Serpent
> // #define CIPHER SHACAL2
> // #define CIPHER SHARK
> // #define CIPHER SKIPJACK
> // #define CIPHER ThreeWay
> // #define CIPHER Twofish
> // #define CIPHER XTEA
>
> int main(int argc, char* argv[]) {
>
> try
> {
> // Key and IV setup
> byte key[ CryptoPP::CIPHER::DEFAULT_KEYLENGTH ],
> iv[ CryptoPP::CIPHER::BLOCKSIZE ];
>
> ::memset( key, 0x01, CryptoPP::CIPHER::DEFAULT_KEYLENGTH );
> ::memset( iv, 0x01, CryptoPP::CIPHER::BLOCKSIZE );
>
> // Message M
> std::string PlainText = "Yoda said, Do or Do Not. There is no
> try.";
>
> // Cipher Text Sink
> std::string CipherText;
>
> // Encryptor
> CryptoPP::CIPHER_MODE<CryptoPP::CIPHER>::Encryption
> Encryptor( key, sizeof(key), iv );
>
> // Encryption
> CryptoPP::StringSource( PlainText, true,
> new CryptoPP::StreamTransformationFilter( Encryptor,
> new CryptoPP::StringSink( CipherText )
> ) // StreamTransformationFilter
> ); // StringSource
>
> ///////////////////////////////////////
> // DMZ //
> ///////////////////////////////////////
>
> // Recovered Text Sink
> std::string RecoveredText;
>
> // Decryptor
> CryptoPP::CIPHER_MODE<CryptoPP::CIPHER>::Decryption
> Decryptor( key, sizeof(key), iv );
>
> // Decryption
> CryptoPP::StringSource( CipherText, true,
> new CryptoPP::StreamTransformationFilter( Decryptor,
> new CryptoPP::StringSink( RecoveredText )
> ) // StreamTransformationFilter
> ); // StringSource
>
> //////////////////////////////////////////
> // Output //
> //////////////////////////////////////////
>
> std::cout << "Algorithm:" << std::endl;
> std::cout << " " << Encryptor.AlgorithmName() << std::endl;
> std::cout << "Minimum Key Size:" << std::endl;
> std::cout << " " << Encryptor.MinKeyLength() << " bytes" <<
> std::endl;
> std::cout << std::endl;
>
> std::cout << "Plain Text (" << PlainText.length() << " bytes)"
> << std::endl;
> std::cout << " '" << PlainText << "'" << std::endl;
> std::cout << std::endl;
>
> std::cout << "Cipher Text Size:" << std::endl;
> std::cout << " " << CipherText.size() << " bytes" << std::endl;
> std::cout << std::endl;
>
> std::cout << "Recovered Text:" << std::endl;
> std::cout << " '" << RecoveredText << "'" << std::endl;
> std::cout << std::endl;
> }
> catch( CryptoPP::Exception& e)
> {
> std::cerr << e.what() << std::endl;
> }
>
> catch(...)
> {
> std::cerr << "Unknown Error" << std::endl;
> }
>
> return 0;
> }
>
>
>
>
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users"
Google Group.
To unsubscribe, send an email to [EMAIL PROTECTED]
More information about Crypto++ and this group is available at
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---