//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1997 - 1999
//
//  File:       pfxcrypt.h
//
//--------------------------------------------------------------------------

#define RC4_128     1
#define RC4_40      2
#define TripleDES   3
#define RC2_128     4
#define RC2_40      5


BOOL _stdcall 
PFXPasswordEncryptData(
        int     iEncrType,
        LPCWSTR szPassword,

        int     iPKCS5Iterations,   // pkcs5 data
        PBYTE   pbPKCS5Salt,
        DWORD   cbPKCS5Salt, 

        PBYTE* pbData,
        DWORD* pcbData);

BOOL _stdcall
PFXPasswordDecryptData(
        int     iEncrType,
        LPCWSTR szPassword,

        int     iPKCS5Iterations,   // pkcs5 data
        PBYTE   pbPKCS5Salt,
        DWORD   cbPKCS5Salt, 

        PBYTE* pbData,
        DWORD* pcbData);



BOOL NSCPPasswordDecryptData(
        int     iEncrType,

        LPCWSTR szPassword,

        PBYTE   pbPrivacySalt,
        DWORD   cbPrivacySalt,

        int     iPKCS5Iterations,
        PBYTE   pbPKCS5Salt,
        DWORD   cbPKCS5Salt, 

        PBYTE*  ppbData,
        DWORD*  pcbData);

BOOL FGenerateMAC(
        LPCWSTR szPassword,

        PBYTE   pbPKCS5Salt,
        DWORD   cbPKCS5Salt, 
        DWORD   iterationCount,

        PBYTE   pbData,     // pb data
        DWORD   cbData,     // cb data
        BYTE    rgbMAC[]);  // A_SHA_DIGEST_LEN



//////////////////////////////////////////////////
// begin tls1key.h
BOOL PKCS5_GenKey
(
    int     iIterations,

    PBYTE   pbPW, 
    DWORD   cbPW, 

    PBYTE   pbSalt, 
    DWORD   cbSalt, 

    BYTE    rgbPKCS5Key[]     // A_SHA_DIGEST_LEN
);

BOOL P_Hash
(
    PBYTE  pbSecret,
    DWORD  cbSecret, 

    PBYTE  pbSeed,  
    DWORD  cbSeed,  

    PBYTE  pbKeyOut, //Buffer to copy the result...
    DWORD  cbKeyOut, //# of bytes of key length they want as output.

    BOOL   fNSCPCompatMode
);

BOOL FTestPHASH_and_HMAC();
BOOL F_NSCP_TestPHASH_and_HMAC();