Source code of Windows XP (NT5)
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.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: sipobjcb.hxx (CAB)
//
// Contents: Microsoft SIP Provider
//
// History: 14-Feb-1997 pberkman created
//
//--------------------------------------------------------------------------
#ifndef SIPOBJCB_HXX
#define SIPOBJCB_HXX
#include "sipobj.hxx"
extern "C" { # include "cabinet.h"
};
#define RESERVE_LEN_ALIGN(Len) ((Len + 3) & ~3) // all abReserve is alligned @ 4
#define RESERVE_CNT_HDR_LEN (sizeof(USHORT) * 2) // cbJund & cbSig
#define RESERVE_CAB_FLAG 0x00000001
#define VERIFY_CAB_FLAG 0x00000002
typedef struct _CAB_HDR_PARA { CFHEADER cfheader; CFRESERVE cfres; USHORT cbcfres; // 0 or sizeof(CFRESERVE)
BYTE *pbReserve; BYTE *pbStrings; DWORD cbStrings; USHORT cbJunk; USHORT cbSig; CABSignatureStruct_ *pCabSigStruct; DWORD cbTotalHdr; } CAB_HDR_PARA;
typedef struct _CAB_PARA { DWORD dwFlags; CAB_HDR_PARA Hdr; } CAB_PARA, *PCAB_PARA;
class SIPObjectCAB_ : public SIPObject_ { public: SIPObjectCAB_(DWORD id); virtual ~SIPObjectCAB_(void);
BOOL CreateIndirectData(SIP_SUBJECTINFO *pSI,DWORD *pdwDLen, SIP_INDIRECT_DATA *psData); virtual BOOL RemoveSignedDataMsg(SIP_SUBJECTINFO *pSI,DWORD dwIdx);
virtual char *GetDataObjectID(void) { return(SPC_CAB_DATA_OBJID); } virtual char *GetDataOIDHint(void) { return((char *)SPC_CAB_DATA_STRUCT); }
protected: virtual BOOL PutMessageInFile(SIP_SUBJECTINFO *pSI,WIN_CERTIFICATE *pWinCert, DWORD *pdwIndex); virtual BOOL GetMessageFromFile(SIP_SUBJECTINFO *pSI,WIN_CERTIFICATE *pWinCert, DWORD dwIndex,DWORD *pcbCert); virtual BOOL GetDigestStream(DIGEST_DATA *pDigestData, DIGEST_FUNCTION pfnCallBack, DWORD dwFlags);
private: CAB_PARA Para; BOOL fUseV1Sig;
BOOL ReadHeader(void); BOOL ReadSignedData(BYTE *pbRet); BOOL WriteSignedData(BYTE *pbSig, DWORD cbSig); BOOL WriteSignedDataV1(BYTE *pbSignedData, DWORD cbSignedData);
BOOL WriteHeader(void); void FreeHeader(void); BOOL RemoveCertificate(DWORD Index); BOOL ShiftFileBytes(LONG lbShift); // this may be needed in SIPObject_ (base)
BOOL ReserveSignedData(DWORD cbSignedData); BOOL DigestHeader(DIGEST_FUNCTION pfnDigestData, DIGEST_HANDLE hDigestData); void ChecksumHeader(void); };
#endif // SIPOBJCB_HXX
|