71 lines
2.4 KiB
C
71 lines
2.4 KiB
C
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
//
|
||
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
||
|
//
|
||
|
// File: sp3crmsg.h
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// File: sp3crmsg.h
|
||
|
//
|
||
|
// Contents: Data structure for enabling NT 4.0 SP3 and IE 3.02 compatible
|
||
|
// PKCS #7 EnvelopeData messages.
|
||
|
//
|
||
|
// The SP3 version of crypt32.dll failed to byte reverse the
|
||
|
// encrypted symmetric key. It also added zero salt instead
|
||
|
// of no salt.
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef __SP3CRMSG_H__
|
||
|
#define __SP3CRMSG_H__
|
||
|
|
||
|
#include <wincrypt.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// To enable SP3 compatible encryption, the pvEncryptionAuxInfo field in either
|
||
|
// CMSG_ENVELOPED_ENCODE_INFO for CryptMsgOpenToEncode() or
|
||
|
// CRYPT_ENCRYPT_MESSAGE_PARA for CryptSignAndEncryptMessage() or
|
||
|
// CryptSignAndEncryptMessage() should point to the following
|
||
|
// CMSG_SP3_COMPATIBLE_AUX_INFO data structure.
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
// The following is defined in newer versions of wincrypt.h, starting with
|
||
|
// IE 4.01 and NT 5.0 Beta 2
|
||
|
|
||
|
#ifndef CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// CMSG_SP3_COMPATIBLE_AUX_INFO
|
||
|
//
|
||
|
// AuxInfo for enabling SP3 compatible encryption.
|
||
|
//
|
||
|
// The CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG is set in dwFlags to enable SP3
|
||
|
// compatible encryption. When set, uses zero salt instead of no salt,
|
||
|
// the encryption algorithm parameters are NULL instead of containing the
|
||
|
// encoded RC2 parameters or encoded IV octet string and the encrypted
|
||
|
// symmetric key is encoded little endian instead of big endian.
|
||
|
//--------------------------------------------------------------------------
|
||
|
typedef struct _CMSG_SP3_COMPATIBLE_AUX_INFO {
|
||
|
DWORD cbSize;
|
||
|
DWORD dwFlags;
|
||
|
} CMSG_SP3_COMPATIBLE_AUX_INFO, *PCMSG_SP3_COMPATIBLE_AUX_INFO;
|
||
|
|
||
|
#define CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG 0x80000000
|
||
|
|
||
|
#endif // CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} // Balance extern "C" above
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif // __SP3CRMSG_H__
|