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

📄 dh_key.h

📁 windows的加密api源码
💻 H
字号:
/* dh_key.h */

#ifdef __cplusplus
extern "C" {
#endif

#define         DH_MIN_LENGTH       0x00000040     // in bytes, 64 bytes, 512 bits

#ifdef STRONG
#define         DH_MAX_LENGTH       0x00000200     // in bytes, 512 bytes, 4096 bits
#define         DH_DEFAULT_LENGTH   0x00000040     // in bytes, 64 bytes, 512 bits
#else
#define         DH_MAX_LENGTH       0x00000080     // in bytes, 128 bytes, 1024 bits
#define         DH_DEFAULT_LENGTH   0x00000040     // in bytes, 64 bytes, 512 bits
#endif // STRONG

// max in france
#define     DH_MAX_FRENCH_LENGTH    0x00000040     // in bytes, 64 bytes, 512 bits

#define DH_KEYSIZE_INC  8

/*********************************/
/* Definitions                   */
/*********************************/
#define DH_PUBLIC_MAGIC         0x31484400
#define DH_PRIVATE_MAGIC        0x32484400
#define DH_PUBLIC_MAGIC_VER3    0x33484400
#define DH_PRIV_MAGIC_VER3      0x34484400

/*********************************/
/* Structure Definitions         */
/*********************************/

typedef dsa_private_t DHKey_t; // use a DSA key since X 9.42 requires key
                               // gen like DSA

/*
typedef struct {
    ALG_ID      Algid;          // algorithm type of the key (SF or EPHEM)
    DH_PRIV_KEY Priv;
} DHKey_t;
*/

/*********************************/
/* Function Definitions          */
/*********************************/

// Initialize DH key
DWORD initKeyDH (
                 IN Context_t *pContext,
                 IN OUT DHKey_t *pDH,
                 IN ALG_ID AlgId,
                 IN DWORD dwFlags,
                 IN BOOL fAnyLength
                 );

DHKey_t *allocDHKey ();
void freeKeyDH (DHKey_t *dh);

// Get the DH parameters
DWORD getDHParams (
                   IN DHKey_t *dh,
                   IN DWORD param,
                   OUT BYTE *data,
                   OUT DWORD *len
                   );

// Set the DH parameters
DWORD setDHParams (
                   IN OUT DHKey_t *pDH,
                   IN DWORD dwParam,
                   IN BYTE *pbData,
                   IN OUT Context_t *pContext
                   );

// Generate a dh key
DWORD dhGenerateKey (
                     IN Context_t *pContext,
                     IN OUT DHKey_t *pDH,
                     IN DWORD dwFlags
                     );

DWORD dhDeriveKey (DHKey_t *dh, BYTE *data, DWORD len);

// Export the DH key in blob format
DWORD exportDHKey (
                   IN Context_t *pContext,
                   IN DHKey_t *pDH,
                   IN ALG_ID Algid,
                   IN DWORD dwFlags,
                   IN DWORD dwReserved,
                   IN DWORD dwBlobType,
                   OUT BYTE *pbData,
                   OUT DWORD *pcbData,
                   IN BOOL fInternal
                   );

DWORD DHPrivBlobToKey(
                      IN Context_t *pContext,
                      IN BLOBHEADER *pBlob,
                      IN DWORD cbBlob,
                      IN DWORD dwKeysetType,
                      IN BOOL fInternal,
                      OUT Key_t *pPrivKey
                      );

// Import the blob into DH key
DWORD importDHKey(
                  IN OUT Key_t *pPrivKey,
                  IN Context_t *pContext,
                  IN BYTE *pbBlob,
                  IN DWORD cbBlob,
                  OUT Key_t *pKey,
                  IN DWORD dwFlags,
                  IN DWORD dwKeysetType,
                  IN BOOL fInternal
                  );

void copyDHPubKey(
                  IN DHKey_t *pDH1,
                  IN DHKey_t *pDH2
                  );

DWORD copyDHKey(
                IN DHKey_t *pDH1,
                IN DHKey_t *pDH2,
                IN ALG_ID Algid,
                IN Context_t *pContext
                );

//
// Function : UseDHKey
//
// Description : This function creates an ephemeral DH key and then generates
//               two agreed keys, thus simulating a DH exchange.  If the
//               agreed keys are not the same then the function fails.
//

DWORD UseDHKey(
               IN Context_t *pContext,
               IN PEXPO_OFFLOAD_STRUCT pOffloadInfo,
               IN DHKey_t *pDH
               );


#ifdef __cplusplus
}
#endif

⌨️ 快捷键说明

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