Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cSSLTransform.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cSSLTransform_H
6 #define _INC_cSSLTransform_H
7 #ifndef NO_PRAGMA_ONCE
8 #pragma once
9 #endif
10 
11 #include "GraySSLInt.h"
16 #if defined(USE_ZLIB)
18 #endif
19 
20 namespace GraySSL
21 {
23  {
26  public:
27  BYTE m_iv[16];
28 
29 #if defined(USE_SSL_VER_SSL_3) // Needed only for SSL v3.0 secret
30  BYTE m_mac[20];
31 #endif // USE_SSL_VER_SSL_3
32 
35 
36  public:
38  {
39  cMem::Zero(m_iv, sizeof(m_iv));
40  }
41  };
42 
43  class GRAYSSL_LINK cSSLTransform : public cSSL // : public cRefBase
44  {
47 
48  public:
49  const cSSLCipherSuite* m_pCipherSuiteDef; // What cipher suite did we select?
50 
52  size_t m_nSizeKey;
53  size_t m_nSizeMin;
54  size_t m_nSizeIV;
55  size_t m_nSizeFixedIV;
56  size_t m_nSizeMac;
57 
60 
61  // Session specific compression layer
62 #if defined(USE_ZLIB)
63  cHeapBlock m_CompressBuf;
64  cStreamZLibCompress m_ctx_deflate;
65  cStreamZLibDecompress m_ctx_inflate;
66 #endif
67 
68  public:
69  cSSLTransform();
70  ~cSSLTransform();
71 
72  void SetZeroTransform();
73 
74 #if defined(USE_ZLIB)
75  HRESULT PrepareCompression();
76  HRESULT CompressCont(cSSLMsgBuilder& rOut);
77  HRESULT DecompressCont(cSSLMsgBuilder& rIn);
78 #endif
79 
80  HRESULT Encrypt(cSSLMsgBuilder& rOut, SSL_VERSION_TYPE nVer, bool bEncryptThenMac, IRandomNoise* pRandom);
81  HRESULT Decrypt(cSSLMsgBuilder& rIn, SSL_VERSION_TYPE nVer, bool bEncryptThenMac);
82  };
83 
84 }
85 
86 #endif
#define GRAYSSL_LINK
Definition: GraySSLInt.h:25
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cCipherWrap.h:20
Definition: cHashWrap.h:18
Definition: cSSLCipherSuite.h:28
Definition: cSSLMsg.h:471
Definition: cStreamZLib.h:77
Definition: cStreamZLib.h:106
Definition: cSSLTransform.h:23
cCipherWrap m_CipherWrap
cipher context
Definition: cSSLTransform.h:34
cHashWrap m_HashWrap
MAC (hash)
Definition: cSSLTransform.h:33
cSSLTransformSide()
Definition: cSSLTransform.h:37
Definition: cSSLTransform.h:44
cSSLTransformSide m_dec
(decryption)
Definition: cSSLTransform.h:59
const cSSLCipherSuite * m_pCipherSuiteDef
Definition: cSSLTransform.h:49
size_t m_nSizeIV
IV length.
Definition: cSSLTransform.h:54
size_t m_nSizeMin
min. ciphertext length
Definition: cSSLTransform.h:53
cSSLTransformSide m_enc
(encryption)
Definition: cSSLTransform.h:58
size_t m_nSizeMac
MAC length. effected by m_bTruncatedHMAC.
Definition: cSSLTransform.h:56
size_t m_nSizeKey
< for Chosen m_pCipherSuiteDef
Definition: cSSLTransform.h:52
size_t m_nSizeFixedIV
Fixed part of IV (AEAD)
Definition: cSSLTransform.h:55
Definition: cHeap.h:156
SSL_VERSION_TYPE
Definition: SSLTypes.h:66
Definition: GraySSL.cpp:11
Definition: SSLTypes.h:270
Definition: cRandom.h:19
static void Zero(void *pData, size_t nSizeBlock) noexcept
Definition: cMem.h:100