⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 schderiv.h

📁 windows的加密api源码
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
//  FILE          : schderiv.h                                             //
//  DESCRIPTION   :                                                        //
//  AUTHOR        :                                                        //
//  HISTORY       :                                                        //
//      Oct  9 1997 jeffspel  Create                                       //
//                                                                         //
//  Copyright (C) 1993 Microsoft Corporation   All Rights Reserved         //
/////////////////////////////////////////////////////////////////////////////

#ifndef __SCHDERIV_H__
#define __SCHDERIV_H__

#ifdef __cplusplus
extern "C" {
#endif

#define     RC_KEYLEN           16
#define     MAX_PREMASTER_LEN   512  // BUGBUG - DH key must be <= 4096 bits
#define     MAX_RANDOM_LEN      256

#define     TLS_MASTER_LEN   48
#define     SSL3_MASTER_LEN   48

// definition of a Secure Channel hash structure
typedef struct _SCH_KeyData
{
    BYTE        rgbPremaster[MAX_PREMASTER_LEN];
    DWORD       cbPremaster;
    BYTE        rgbClientRandom[MAX_RANDOM_LEN];
    DWORD       cbClientRandom;
    BYTE        rgbServerRandom[MAX_RANDOM_LEN];
    DWORD       cbServerRandom;
    ALG_ID      EncAlgid;
    ALG_ID      HashAlgid;
    DWORD       cbEnc;
    DWORD       cbEncMac;
    DWORD       cbHash;
    DWORD       cbIV;
    BOOL        fFinished;
    BOOL        dwFlags;
} SCH_KEY, *PSCH_KEY;

// definition of a Secure Channel hash structure
typedef struct _SCH_HashData
{
    ALG_ID      ProtocolAlgid;
    ALG_ID      EncAlgid;
    ALG_ID      HashAlgid;
    DWORD       cbEnc;
    DWORD       cbEncMac;
    DWORD       cbHash;
    DWORD       cbIV;
    BYTE        rgbClientRandom[MAX_RANDOM_LEN];
    DWORD       cbClientRandom;
    BYTE        rgbServerRandom[MAX_RANDOM_LEN];
    DWORD       cbServerRandom;
	BYTE        rgbFinal[MAX_RANDOM_LEN];
    DWORD       cbFinal;
    BOOL        dwFlags;
} SCH_HASH, *PSCH_HASH;

// definition of a TLS1 PRF hash structure
typedef struct _PRF_HashData
{
    BYTE        rgbLabel[MAX_RANDOM_LEN];
    DWORD       cbLabel;
    BYTE        rgbSeed[MD5DIGESTLEN + A_SHA_DIGEST_LEN];
    DWORD       cbSeed;
	BYTE        rgbMasterKey[TLS_MASTER_LEN];
} PRF_HASH;

BOOL SCHSetKeyParam(
                    IN Context_t *pContext,
                    IN Key_t *pKey,
                    IN DWORD dwParam,
                    IN PBYTE pbData
                    );

BOOL SCHGetKeyParam(
                    Key_t *pKey,
                    DWORD dwParam,
                    PBYTE pbData
                    );

BOOL SChGenMasterKey(
                     Key_t *pKey,
                     PSCH_HASH pSChHash
                     );

BOOL SecureChannelDeriveKey(
                            Hash_t *pHash,
                            ALG_ID Algid,
                            DWORD dwFlags,
                            HCRYPTKEY *phKey
                            );

BOOL SetPRFHashParam(
                     PRF_HASH *pPRFHash,
                     DWORD dwParam,
                     BYTE *pbData
                     );

BOOL CalculatePRF(
                  PRF_HASH *pPRFHash,
                  BYTE *pbData,
                  DWORD *pcbData
                  );

#ifdef __cplusplus
}
#endif

#endif // __SCHDERIV_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -