Return to encrypt.c CVS log | Up to [OMI] / omi / pal |
File: [OMI] / omi / pal / encrypt.c
(download)
Revision: 1.1, Mon Apr 20 17:19:55 2015 UTC (9 years ago) by krisbash Branch: MAIN CVS Tags: OMI_1_0_8_2, OMI_1_0_8_1, HEAD OMI 1.0.8-1 |
#include "encrypt.h" #if defined(_MSC_VER) #include <wincrypt.h> #endif _Success_(return == 0) int EncryptData( _In_bytecount_(inbufferLength) const void *inbuffer, PAL_Uint32 inbufferLength, _Out_writes_bytes_to_opt_(outbufferLength, *outbufferLengthNeeded) void *outbuffer, PAL_Uint32 outbufferLength, _When_(return == -2, _Out_) _When_(return == 0, _Out_) PAL_Uint32 *outbufferLengthNeeded) { PAL_Uint32 realOutBufferNeeded = inbufferLength; if (outbufferLengthNeeded == NULL) return -1; #if defined (_MSC_VER) if (inbufferLength%CRYPTPROTECTMEMORY_BLOCK_SIZE) { realOutBufferNeeded += (CRYPTPROTECTMEMORY_BLOCK_SIZE-(inbufferLength%CRYPTPROTECTMEMORY_BLOCK_SIZE)); } #endif *outbufferLengthNeeded = realOutBufferNeeded; if (inbuffer == NULL) return -1; if (outbufferLength < realOutBufferNeeded) return -2; if (outbuffer == NULL) return -1; memcpy(outbuffer, inbuffer, inbufferLength); #if defined(_MSC_VER) if (!CryptProtectMemory(outbuffer, realOutBufferNeeded, CRYPTPROTECTMEMORY_SAME_PROCESS)) { //printf("error = %u\n", GetLastError()); SecureZeroMemory(outbuffer, outbufferLength); return -1; } #endif return 0; } _Success_(return == 0) int DecryptData( _In_bytecount_(inbufferLength) const void *inbuffer, PAL_Uint32 inbufferLength, _Out_writes_bytes_to_opt_(outbufferLength, *outbufferLengthNeeded) void *outbuffer, PAL_Uint32 outbufferLength, _When_(return == -2, _Out_) _When_(return == 0, _Out_) PAL_Uint32 *outbufferLengthNeeded) { PAL_Uint32 realOutBufferNeeded = inbufferLength; if (outbufferLengthNeeded == NULL) return -1; *outbufferLengthNeeded = realOutBufferNeeded; #if defined (_MSC_VER) if (inbufferLength%CRYPTPROTECTMEMORY_BLOCK_SIZE) { *outbufferLengthNeeded += (CRYPTPROTECTMEMORY_BLOCK_SIZE-(inbufferLength%CRYPTPROTECTMEMORY_BLOCK_SIZE)); return -1; } #endif if (inbuffer == NULL) return -1; if (outbufferLength < realOutBufferNeeded) return -2; if (outbuffer == NULL) return -1; memcpy(outbuffer, inbuffer, inbufferLength); #if defined(_MSC_VER) if (!CryptUnprotectMemory(outbuffer, realOutBufferNeeded, CRYPTPROTECTMEMORY_SAME_PROCESS)) { SecureZeroMemory(outbuffer, outbufferLength); return -1; } #endif return 0; }
ViewCVS 0.9.2 |