Annotation of truecrypt/volume/pkcs5kdf.h, revision 1.1

1.1     ! root        1: /*
        !             2:  Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
        !             3: 
        !             4:  Governed by the TrueCrypt License 2.4 the full text of which is contained
        !             5:  in the file License.txt included in TrueCrypt binary and source code
        !             6:  distribution packages.
        !             7: */
        !             8: 
        !             9: #ifndef TC_HEADER_Encryption_Pkcs5
        !            10: #define TC_HEADER_Encryption_Pkcs5
        !            11: 
        !            12: #include "Platform/Platform.h"
        !            13: #include "Hash.h"
        !            14: #include "VolumePassword.h"
        !            15: 
        !            16: namespace TrueCrypt
        !            17: {
        !            18:        class Pkcs5Kdf;
        !            19:        typedef list < shared_ptr <Pkcs5Kdf> > Pkcs5KdfList;
        !            20: 
        !            21:        class Pkcs5Kdf
        !            22:        {
        !            23:        public:
        !            24:                virtual ~Pkcs5Kdf ();
        !            25: 
        !            26:                virtual void DeriveKey (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt) const;
        !            27:                virtual void DeriveKey (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt, int iterationCount) const = 0;
        !            28:                static shared_ptr <Pkcs5Kdf> GetAlgorithm (const wstring &name);
        !            29:                static shared_ptr <Pkcs5Kdf> GetAlgorithm (const Hash &hash);
        !            30:                static Pkcs5KdfList GetAvailableAlgorithms ();
        !            31:                virtual shared_ptr <Hash> GetHash () const = 0;
        !            32:                virtual int GetIterationCount () const = 0;
        !            33:                virtual wstring GetName () const = 0;
        !            34:                virtual bool IsDeprecated () const { return GetHash()->IsDeprecated(); }
        !            35: 
        !            36:        protected:
        !            37:                Pkcs5Kdf ();
        !            38: 
        !            39:                void ValidateParameters (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt, int iterationCount) const;
        !            40: 
        !            41:        private:
        !            42:                Pkcs5Kdf (const Pkcs5Kdf &);
        !            43:                Pkcs5Kdf &operator= (const Pkcs5Kdf &);
        !            44:        };
        !            45: 
        !            46:        class Pkcs5HmacRipemd160 : public Pkcs5Kdf
        !            47:        {
        !            48:        public:
        !            49:                Pkcs5HmacRipemd160 () { }
        !            50:                virtual ~Pkcs5HmacRipemd160 () { }
        !            51: 
        !            52:                virtual void DeriveKey (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt, int iterationCount) const;
        !            53:                virtual shared_ptr <Hash> GetHash () const { return shared_ptr <Hash> (new Ripemd160); }
        !            54:                virtual int GetIterationCount () const { return 2000; }
        !            55:                virtual wstring GetName () const { return L"HMAC-RIPEMD-160"; }
        !            56: 
        !            57:        private:
        !            58:                Pkcs5HmacRipemd160 (const Pkcs5HmacRipemd160 &);
        !            59:                Pkcs5HmacRipemd160 &operator= (const Pkcs5HmacRipemd160 &);
        !            60:        };
        !            61: 
        !            62:        class Pkcs5HmacSha1 : public Pkcs5Kdf
        !            63:        {
        !            64:        public:
        !            65:                Pkcs5HmacSha1 () { }
        !            66:                virtual ~Pkcs5HmacSha1 () { }
        !            67: 
        !            68:                virtual void DeriveKey (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt, int iterationCount) const;
        !            69:                virtual shared_ptr <Hash> GetHash () const { return shared_ptr <Hash> (new Sha1); }
        !            70:                virtual int GetIterationCount () const { return 2000; }
        !            71:                virtual wstring GetName () const { return L"HMAC-SHA-1"; }
        !            72: 
        !            73:        private:
        !            74:                Pkcs5HmacSha1 (const Pkcs5HmacSha1 &);
        !            75:                Pkcs5HmacSha1 &operator= (const Pkcs5HmacSha1 &);
        !            76:        };
        !            77: 
        !            78:        class Pkcs5HmacSha512 : public Pkcs5Kdf
        !            79:        {
        !            80:        public:
        !            81:                Pkcs5HmacSha512 () { }
        !            82:                virtual ~Pkcs5HmacSha512 () { }
        !            83: 
        !            84:                virtual void DeriveKey (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt, int iterationCount) const;
        !            85:                virtual shared_ptr <Hash> GetHash () const { return shared_ptr <Hash> (new Sha512); }
        !            86:                virtual int GetIterationCount () const { return 1000; }
        !            87:                virtual wstring GetName () const { return L"HMAC-SHA-512"; }
        !            88: 
        !            89:        private:
        !            90:                Pkcs5HmacSha512 (const Pkcs5HmacSha512 &);
        !            91:                Pkcs5HmacSha512 &operator= (const Pkcs5HmacSha512 &);
        !            92:        };
        !            93: 
        !            94:        class Pkcs5HmacWhirlpool : public Pkcs5Kdf
        !            95:        {
        !            96:        public:
        !            97:                Pkcs5HmacWhirlpool () { }
        !            98:                virtual ~Pkcs5HmacWhirlpool () { }
        !            99: 
        !           100:                virtual void DeriveKey (const BufferPtr &key, const VolumePassword &password, const ConstBufferPtr &salt, int iterationCount) const;
        !           101:                virtual shared_ptr <Hash> GetHash () const { return shared_ptr <Hash> (new Whirlpool); }
        !           102:                virtual int GetIterationCount () const { return 1000; }
        !           103:                virtual wstring GetName () const { return L"HMAC-Whirlpool"; }
        !           104: 
        !           105:        private:
        !           106:                Pkcs5HmacWhirlpool (const Pkcs5HmacWhirlpool &);
        !           107:                Pkcs5HmacWhirlpool &operator= (const Pkcs5HmacWhirlpool &);
        !           108:        };
        !           109: }
        !           110: 
        !           111: #endif // TC_HEADER_Encryption_Pkcs5

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.