//========================================================================== // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR // PURPOSE. // // Copyright (c) 1999 - 2001 On2 Technologies Inc. All Rights Reserved. // //-------------------------------------------------------------------------- #if !defined(ON2CRYPT_H) #define ON2CRYPT_H //______________________________________________________________________________ // // On2Crypt.h // API to on2comp's encryption dll //-------------------------------------------------------------------------- #ifdef _USRDLL #define DLLExport __declspec(dllexport) #else #define DLLExport #endif #define DLLCC __stdcall #ifdef __cplusplus extern "C" { #endif typedef void* HOn2Encryptor; DLLExport int DLLCC MakeEncryptor(unsigned char* pString, int iLength, HOn2Encryptor* phOn2Encryptor); //*************************************************************************************** // Name : MakeEncryptor // Description: set up an encryption session // Inputs : pString -> information to be used by encryptor to set up encryption session // iLength -> number of bytes used in pString // Outputs : phOn2Encryptor -> pointer to an encryption session // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC GetEncryptionCode(char* pfccCode); // size of szCode must be >= 4 //*************************************************************************************** // Name : GetEncryptionCode // Description: get the 4 character code to use as a reference for this encryption dll // Inputs : // Outputs : pfccCode 4 character code // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC GetDRMXLength(HOn2Encryptor hOn2Encryptor, int* piLength); //*************************************************************************************** // Name : GetDRMXLength // Description: calculates the length of decryption chunk to be produced // Inputs : hOn2Encryptor -> handle of encryption sesion to use ( from make encryptor) // Outputs : piLength -> filled with length of extra information // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC GenerateDRMX(HOn2Encryptor hOn2Encryptor, unsigned char* pBuffer); //*************************************************************************************** // Name : GenerateDRMX // Description: generates a decryption chunk // Inputs : hOn2Encryptor -> handle of encryption sesion to use ( from make encryptor) // Outputs : pBuffer is filled with information necessary to decrypt the file we are // encrypting // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC EncryptedSize(HOn2Encryptor hOn2Encryptor, int iSizeIn, int* piSizeOut); //*************************************************************************************** // Name : EncryptedSize // Description: returns size that an encrypted chunk will be given a size in // Inputs : hOn2Encryptor -> handle of encryption sesion to use ( from make encryptor) // : iSizeIn -> size of input data // Outputs : piSizeOut -> size of output data // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC EncryptBytes(HOn2Encryptor hOn2Encryptor, unsigned char* pBufferIn, int iSizeIn, unsigned char* pBufferOut, int iSizeOutMax, int* piSizeOut); //*************************************************************************************** // Name : EncryptBytes // Description: encrypts bytes in input buffer and stores them to the output buffer // Inputs : hOn2Encryptor -> handle of encryption sesion to use ( from make encryptor) // : pBufferIn -> buffer holding bytes to encrypt // iSizeIn -> number of bytes to encrypt of that buffer // Outputs : pBufferOut -> buffer for holding encrypted bytes // iSizeOutMax -> maximum number of bytes to write to pBufferOut // piSizeOut -> number of bytes actually written to pbufferout // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC EncryptorError(char* szError, int nErrorMax); //*************************************************************************************** // Name : EncryptorError // Description: gets a string description of the last error // Inputs : szError -> pointer to string // nErrorMax -> the largest number of bytes to fill in in szerror // Outputs : // Returns : 0 = success //*************************************************************************************** DLLExport int DLLCC DeleteEncryptor(HOn2Encryptor hOn2Encryptor); //*************************************************************************************** // Name : DeleteEncryptor // Description: ends the encryption session and cleans up // Inputs : hOn2Encryptor -> handle of encryption sesion to use ( from make encryptor) // Outputs : // Returns : 0 = success //*************************************************************************************** typedef int (DLLCC *PFNMakeEncryptor)(unsigned char* pString, int iLength, HOn2Encryptor* phOn2Encryptor); typedef int (DLLCC *PFNGetEncryptionCode)(char* pfccCode); // size of szCode must be >= 4 typedef int (DLLCC *PFNGetDRMXLength)(HOn2Encryptor hOn2Encryptor, int* piLength); typedef int (DLLCC *PFNGenerateDRMX)(HOn2Encryptor hOn2Encryptor, unsigned char* pBuffer); typedef int (DLLCC *PFNEncryptedSize)(HOn2Encryptor hOn2Encryptor, int iSizeIn, int* piSizeOut); typedef int (DLLCC *PFNEncryptBytes)(HOn2Encryptor hOn2Encryptor, unsigned char* pBufferIn, int iSizeIn, unsigned char* pBufferOut, int iSizeOutMax, int* piSizeOut); typedef int (DLLCC *PFNEncryptorError)(char* szError, int nErrorMax); typedef int (DLLCC *PFNDeleteEncryptor)(HOn2Encryptor hOn2Encryptor); #ifdef __cplusplus } // extern "C" #endif #endif // ON2CRYPT_H