📄 dss_key.h
字号:
#ifdef __cplusplus
extern "C" {
#endif
/* dss_key.h */
#define DSS_MIN_LENGTH 64 // 512 bit
#define DSS_MAX_LENGTH 128 // 1024 bit
#define DSS_DEFAULT_LENGTH 128 // 1024 bit
#define DSS_KEYSIZE_INC 64
/*********************************/
/* Definitions */
/*********************************/
#define DSS_MAGIC 0x31535344
#define DSS_PRIVATE_MAGIC 0x32535344
#define DSS_PUB_MAGIC_VER3 0x33535344
#define DSS_PRIV_MAGIC_VER3 0x34535344
/*********************************/
/* Structure Definitions */
/*********************************/
typedef dsa_private_t DSSKey_t;
/*********************************/
/* Function Definitions */
/*********************************/
DSSKey_t *allocDSSKey ();
void freeKeyDSS (DSSKey_t *dss);
DWORD initKeyDSS (
IN OUT DSSKey_t *dss,
IN DWORD dwBitLen
);
// Generate the DSS keys
DWORD genDSSKeys (
IN Context_t *pContext,
IN OUT DSSKey_t *pDss,
IN BYTE *pbRandom,
IN DWORD dwFlags
);
void copyDSSPubKey(
IN DSSKey_t *dss1,
IN DSSKey_t *dss2
);
void copyDSSKey(
IN DSSKey_t *dss1,
IN DSSKey_t *dss2
);
DWORD getDSSParams (DSSKey_t *dss, DWORD param, BYTE *data, DWORD *len);
DWORD setDSSParams (
IN Context_t *pContext,
IN OUT DSSKey_t *pDss,
IN DWORD dwParam,
IN BYTE *pbData
);
BOOL DSSValueExists(
IN DWORD *pdw,
IN DWORD cdw,
OUT DWORD *pcb
);
DWORD ExportDSSPrivBlob3(
IN Context_t *pContext,
IN DSSKey_t *pDSS,
IN DWORD dwMagic,
IN ALG_ID Algid,
IN BOOL fInternalExport,
IN BOOL fSigKey,
OUT BYTE *pbKeyBlob,
IN OUT DWORD *pcbKeyBlob
);
DWORD ImportDSSPrivBlob3(
IN BOOL fInternalExport,
IN BYTE *pbKeyBlob,
IN DWORD cbKeyBlob,
OUT DSSKey_t *pDSS
);
DWORD ExportDSSPubBlob3(
IN Context_t *pContext,
IN DSSKey_t *pDSS,
IN DWORD dwMagic,
IN ALG_ID Algid,
OUT BYTE *pbKeyBlob,
IN OUT DWORD *pcbKeyBlob
);
DWORD ImportDSSPubBlob3(
IN BYTE *pbKeyBlob,
IN DWORD cbKeyBlob,
IN BOOL fYIncluded,
OUT DSSKey_t *pDSS
);
// Export DSS key into blob format
DWORD exportDSSKey (
IN Context_t *pContext,
IN DSSKey_t *pDSS,
IN DWORD dwFlags,
IN DWORD dwBlobType,
IN BYTE *pbKeyBlob,
IN DWORD *pcbKeyBlob,
IN BOOL fInternalExport
);
// Import the blob into DSS key
DWORD importDSSKey (
IN Context_t *pContext,
IN Key_t *pKey,
IN BYTE *pbKeyBlob,
IN DWORD cbKeyBlob,
IN DWORD dwFlags,
IN DWORD dwKeysetType,
IN BOOL fInternal
);
DWORD dssGenerateSignature (
Context_t *pContext,
DSSKey_t *pDss,
BYTE *pbHash,
DWORD cbHash,
BYTE *pbSig,
DWORD *pcbSig,
BYTE *pbRandom
);
//
// Function : SignAndVerifyWithKey
//
// Description : This function creates a hash and then signs that hash with
// the passed in key and verifies the signature. The function
// is used for FIPS 140-1 compliance to make sure that newly
// generated/imported keys work and in the self test during
// DLL initialization.
//
DWORD SignAndVerifyWithKey(
IN DSSKey_t *pDss,
IN EXPO_OFFLOAD_STRUCT *pOffloadInfo,
IN HANDLE hRNGDriver,
IN BYTE *pbData,
IN DWORD cbData
);
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -