Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
2.9 KiB

//
// Microsoft Windows Media Technologies
// Copyright (C) Microsoft Corporation, 1999 - 2001. All rights reserved.
//
#ifndef _CSECURECHANNELSERVER_H_2AD99357_6FD2_11d3_8497_00C04F79DBC0
#define _CSECURECHANNELSERVER_H_2AD99357_6FD2_11d3_8497_00C04F79DBC0
#include "wtypes.h"
#ifdef USE_X509
#include "rsa.h"
#endif
#ifdef USE_X509
#include "x509cert.h"
#endif
#include "sac.h"
class CSecureChannelServer
{
public:
CSecureChannelServer();
~CSecureChannelServer();
HRESULT SetCertificate(DWORD dwFlags,
BYTE *pbAppCert,
DWORD dwCertLen,
BYTE *pbAppPVK,
DWORD dwPVKLen);
HRESULT SACAuth(DWORD dwProtocolID,
DWORD dwPass,
BYTE *pbDataIn,
DWORD dwDataInLen,
BYTE **ppbDataOut,
DWORD *pdwDataOutLen);
HRESULT SACGetProtocols(DWORD **ppdwProtocols,
DWORD *pdwProtocolCount);
HRESULT EncryptParam(BYTE *pbData,
DWORD dwDataLen);
HRESULT DecryptParam(BYTE *pbData,
DWORD dwDataLen);
HRESULT MACInit(HMAC *phMAC);
HRESULT MACUpdate(HMAC hMAC,
BYTE *pbData,
DWORD dwDataLen);
HRESULT MACFinal(HMAC hMAC,
BYTE abData[SAC_MAC_LEN]);
HRESULT GetAppSec(DWORD *pdwLocalAppSec, DWORD *pdwRemoteAppSec);
HRESULT SetSessionKey(BYTE *pbSPSessionKey);
HRESULT GetSessionKey(BYTE *pbSPSessionKey);
HRESULT GetRemoteAppCert(BYTE *pbAppCert, DWORD* pdwCertLen);
BOOL fIsAuthenticated();
private:
BOOL m_fAuthenticated;
BYTE *m_pbAppCert;
DWORD m_dwCertLen;
BYTE *m_pbRemoteCert;
DWORD m_dwRemoteCertLen;
BYTE *m_pbAppPVK;
DWORD m_dwPVKLen;
BYTE *m_pbSessionKey;
DWORD m_dwSessionKeyLen;
BYTE m_abCallerChallenge[4];
BYTE m_abIssuedChallenge[4];
BOOL m_TableInit;
unsigned long m_DesTable[32];
#ifdef USE_X509
CX509Cert m_CertObj;
#endif
DWORD m_dwCertFlags;
MACINFO aMacInfo[20];
BYTE m_abMacKey[64];
BOOL m_fMacKeyInit;
CRITICAL_SECTION m_CS;
HRESULT Protocol1(DWORD dwPass,
BYTE *pbDataIn,
DWORD dwDataInLen,
BYTE **ppbDataOut,
DWORD *pdwDataOutLen);
HRESULT Protocol2(DWORD dwPass,
BYTE *pbDataIn,
DWORD dwDataInLen,
BYTE **ppbDataOut,
DWORD *pdwDataOutLen);
};
#endif // _CSECURECHANNELSERVER_H_2AD99357-6FD2-11d3-8497-00C04F79DBC0