|
|
typedef struct _DESKey { BYTE rgbKey[DES_BLOCKLEN]; DESTable sKeyTable; } DESKEY, *PDESKEY;
// assumes pbKeyMaterial is at least DES_BLOCKLEN bytes
BOOL FMyMakeDESKey( PDESKEY pDESKey, // out
BYTE* pbKeyMaterial); // in
BOOL FMyPrimitiveSHA( PBYTE pbData, // in
DWORD cbData, // in
BYTE rgbHash[A_SHA_DIGEST_LEN]); // out
BOOL FMyPrimitiveDESDecrypt( PBYTE pbBlock, // in out
DWORD *pcbBlock, // in out
DESKEY sDESKey); // in
BOOL FMyPrimitiveDESEncrypt( PBYTE* ppbBlock, // in out
DWORD* pcbBlock, // in out
DESKEY sDESKey); // in
BOOL FMyPrimitiveDeriveKey( PBYTE pbSalt, // in
DWORD cbSalt, // in
PBYTE pbOtherData, // in [optional]
DWORD cbOtherData, // in
DESKEY* pDesKey); // out
BOOL FMyOldPrimitiveHMAC( DESKEY sMacKey, // in
PBYTE pbData, // in
DWORD cbData, // in
BYTE rgbHMAC[A_SHA_DIGEST_LEN]); // out
BOOL FMyPrimitiveHMAC( DESKEY sMacKey, // in
PBYTE pbData, // in
DWORD cbData, // in
BYTE rgbHMAC[A_SHA_DIGEST_LEN]); // out
BOOL FMyPrimitiveHMACParam( PBYTE pbKeyMaterial, // in
DWORD cbKeyMaterial, // in
PBYTE pbData, // in
DWORD cbData, // in
BYTE rgbHMAC[A_SHA_DIGEST_LEN]); // out
#define PBKDF2_MAX_SALT_SIZE (16)
BOOL PKCS5DervivePBKDF2( PBYTE pbKeyMaterial, DWORD cbKeyMaterial, PBYTE pbSalt, DWORD cbSalt, DWORD KeyGenAlg, DWORD cIterationCount, DWORD iBlockIndex, BYTE rgbPKCS5Key[A_SHA_DIGEST_LEN] // output buffer
);
|