Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
3.4 KiB

  1. #ifndef _H_CAPIENC
  2. #define _H_CAPIENC
  3. #include <wincrypt.h>
  4. //#include <sha.h>
  5. #define A_SHA_DIGEST_LEN 20
  6. typedef BOOL (CRYPTENCRYPT)(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
  7. DWORD dwFlags, BYTE* pbData, DWORD* pdwDataLen, DWORD dwBufLen);
  8. typedef BOOL (CRYPTRELEASECONTEXT) (HCRYPTPROV hProv, DWORD dwFlags);
  9. typedef BOOL (CRYPTGENRANDOM) (HCRYPTPROV hProv, DWORD dwLen, BYTE* pbBuffer);
  10. typedef BOOL (CRYPTDECRYPT)(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags,
  11. BYTE* pbData, DWORD* pdwDataLen);
  12. typedef BOOL (CRYPTACQUIRECONTEXT) (HCRYPTPROV* phProv, LPCTSTR pszContainer, LPCTSTR pszProvider,
  13. DWORD dwProvType, DWORD dwFlags);
  14. typedef BOOL (CRYPTIMPORTKEY)(HCRYPTPROV hProv, BYTE* pbData, DWORD dwDataLen, HCRYPTKEY hPubKey,
  15. DWORD dwFlags, HCRYPTKEY* phKey);
  16. typedef BOOL (CRYPTDESTROYKEY) (HCRYPTKEY hKey);
  17. typedef BOOL (CRYPTSETKEYPARAM) (HCRYPTKEY hKey, DWORD dwParam, BYTE* pbData, DWORD dwFlags);
  18. typedef BOOL (CRYPTCREATEHASH)(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,
  19. DWORD dwFlags, HCRYPTHASH* phHash);
  20. typedef BOOL (CRYPTHASHDATA)(HCRYPTHASH hHash, BYTE* pbData, DWORD dwDataLen, DWORD dwFlags);
  21. typedef BOOL (CRYPTSETHASHPARAM)(HCRYPTHASH hHash, DWORD dwParam, BYTE* pbData, DWORD dwFlags);
  22. typedef BOOL (CRYPTGETHASHPARAM)(HCRYPTHASH hHash, DWORD dwParam, BYTE* pbData, DWORD* pdwDataLen, DWORD dwFlags);
  23. typedef BOOL (CRYPTDESTROYHASH)(HCRYPTHASH hHash);
  24. typedef struct _CAPI_FUNCTION_TABLE {
  25. CRYPTACQUIRECONTEXT *pfnCryptAcquireContext;
  26. CRYPTRELEASECONTEXT *pfnCryptReleaseContext;
  27. CRYPTGENRANDOM *pfnCryptGenRandom;
  28. CRYPTENCRYPT *pfnCryptEncrypt;
  29. CRYPTDECRYPT *pfnCryptDecrypt;
  30. CRYPTIMPORTKEY *pfnCryptImportKey;
  31. CRYPTDESTROYKEY *pfnCryptDestroyKey;
  32. CRYPTSETKEYPARAM *pfnCryptSetKeyParam;
  33. CRYPTCREATEHASH *pfnCryptCreateHash;
  34. CRYPTHASHDATA *pfnCryptHashData;
  35. CRYPTSETHASHPARAM *pfnCryptSetHashParam;
  36. CRYPTGETHASHPARAM *pfnCryptGetHashParam;
  37. CRYPTDESTROYHASH *pfnCryptDestroyHash;
  38. } CAPI_FUNCTION_TABLE, *PCAPI_FUNCTION_TABLE;
  39. typedef struct _CAPIData {
  40. HMODULE hAdvapi32;
  41. CAPI_FUNCTION_TABLE CapiFunctionTable;
  42. HCRYPTPROV hProv;
  43. HCRYPTKEY hEncKey;
  44. BYTE bEncKey[MAX_FIPS_SESSION_KEY_SIZE];
  45. HCRYPTKEY hDecKey;
  46. BYTE bDecKey[MAX_FIPS_SESSION_KEY_SIZE];
  47. BYTE bEncIv[FIPS_BLOCK_LEN];
  48. BYTE bDecIv[FIPS_BLOCK_LEN];
  49. HCRYPTHASH hSignKey;
  50. BYTE bSignKey[MAX_SIGNKEY_SIZE];
  51. }CAPIData, *PCAPIData;
  52. BOOL TSCAPI_Init(PCAPIData pCapiData);
  53. BOOL TSCAPI_Enable(PCAPIData pCapiData);
  54. BOOL TSCAPI_Term(PCAPIData pCapiData);
  55. DCUINT TSCAPI_AdjustDataLen(DCUINT dataLen);
  56. BOOL TSCAPI_GenerateRandomNumber(PCAPIData pCapiData, LPBYTE pbRandomBits, DWORD cbLen);
  57. BOOL TSCAPI_MakeSessionKeys(PCAPIData pCapiData, RANDOM_KEYS_PAIR *pKeyPair, CryptMethod *pEnumMethod);
  58. BOOL TSCAPI_EncryptData(
  59. PCAPIData pCapiData,
  60. LPBYTE pbData,
  61. DWORD *pdwDataLen,
  62. DWORD dwBufLen,
  63. LPBYTE pbSignature,
  64. DWORD dwEncryptionCount);
  65. BOOL TSCAPI_DecryptData(
  66. PCAPIData pCapiData,
  67. LPBYTE pbData,
  68. DWORD dwDataLen,
  69. DWORD dwPadLen,
  70. LPBYTE pbSignature,
  71. DWORD dwDecryptionCount);
  72. #endif