亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libewf_digest_context.c

?? sleuthit-2.09 一個磁盤的工具集
?? C
字號:
/* * libewf crypographic digest wrapper code * * Copyright (c) 2006-2007, Joachim Metz <forensics@hoffmannbv.nl>, * Hoffmann Investigations. All rights reserved. * * Refer to AUTHORS for acknowledgements. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, *   this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, *   this list of conditions and the following disclaimer in the documentation *   and/or other materials provided with the distribution. * - Neither the name of the creator, related organisations, nor the names of *   its contributors may be used to endorse or promote products derived from *   this software without specific prior written permission. * - All advertising materials mentioning features or use of this software *   must acknowledge the contribution by people stated in the acknowledgements. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER, COMPANY AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */#include "libewf_includes.h"#include "libewf_common.h"#include "libewf_digest_context.h"#include "libewf_notify.h"/* Initializes the digest context * Returns 1 if successful, 0 on failure, -1 on error */int8_t libewf_digest_context_initialize( LIBEWF_DIGEST_CONTEXT* digest_context, uint8_t type ){#if defined( HAVE_LIBCRYPTO ) && defined( HAVE_OPENSSL_EVP_H )	const EVP_MD *digest_type = NULL;#elif defined( HAVE_WINCPRYPT_H )	DWORD digest_type   = 0;#endif	if( digest_context == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_initialize: invalid digest context.\n" );		return( -1 );	}	if( ( type != LIBEWF_DIGEST_CONTEXT_TYPE_MD5 )	 && ( type != LIBEWF_DIGEST_CONTEXT_TYPE_SHA1 ) )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_alloc: unsupported digest context type.\n" );		return( -1 );	}#if defined( HAVE_LIBCRYPTO ) && defined( HAVE_OPENSSL_EVP_H )	EVP_MD_CTX_init( digest_context );	if( type == LIBEWF_DIGEST_CONTEXT_TYPE_MD5 )	{		digest_type = EVP_md5();	}	else if( type == LIBEWF_DIGEST_CONTEXT_TYPE_SHA1 )	{		digest_type = EVP_sha1();	}	if( EVP_DigestInit_ex( digest_context, digest_type, NULL ) != 1 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_initialize: unable to initialize context.\n" );		return( 0 );	}#elif defined( HAVE_WINCPRYPT_H )	digest_context->crypt_provider = 0;	digest_context->hash           = 0;	/* Request the AES crypt provider, fail back to the RSA crypt provider	*/ 	if( CryptAcquireContext( &digest_context->crypt_provider, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT ) == 0 )	{		if( CryptAcquireContext( &digest_context->crypt_provider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT ) == 0 )		{			LIBEWF_WARNING_PRINT( "libewf_digest_context_initialize: unable to create AES or RSA crypt provider.\n" );			return( 0 );		}	}	if( digest_context->crypt_provider == 0 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_initialize: unable to create crypt provider.\n" );		return( 0 );	}	if( type == LIBEWF_DIGEST_CONTEXT_TYPE_MD5 )	{		digest_type = CALG_MD5;	}	else if( type == LIBEWF_DIGEST_CONTEXT_TYPE_SHA1 )	{		digest_type = CALG_SHA1;	}	if( CryptCreateHash( digest_context->crypt_provider, digest_type, 0, 0, &digest_context->hash ) != 1 ) 	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_initialize: unable to create hash object.\n" );		CryptReleaseContext( digest_context->crypt_provider, 0 );		return( 0 );	}#endif	return( 1 );}/* Updates the digest context * Returns 1 if successful, 0 on failure, -1 on error */int8_t libewf_digest_context_update( LIBEWF_DIGEST_CONTEXT* digest_context, uint8_t *buffer, size_t size ){	if( digest_context == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_update: invalid digest context.\n" );		return( -1 );	}	if( buffer == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_update: invalid buffer.\n" );		return( -1 );	}	if( size > (size_t) SSIZE_MAX )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_update: invalid size value exceeds maximum.\n" );		return( -1 );	}#if defined( HAVE_LIBCRYPTO ) && defined( HAVE_OPENSSL_EVP_H )	if( EVP_DigestUpdate( digest_context, (const void *) buffer, (unsigned long) size ) != 1 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_update: unable to update digest hash.\n" );		return( 0 );	}#elif defined( HAVE_WINCPRYPT_H )	if( digest_context->hash == 0 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_update: invalid digest context - missing hash.\n" );		return( -1 );	}	if( CryptHashData( digest_context->hash, (BYTE *) buffer, (DWORD) size, 0 ) != 1 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_update: unable to update digest context hash.\n" );		return( 0 );	}#endif	return( 1 );}/* Finalizes the digest context * Returns 1 if successful, 0 on failure, -1 on error */int8_t libewf_digest_context_finalize( LIBEWF_DIGEST_CONTEXT* digest_context, EWF_DIGEST_HASH *digest_hash, size_t *size ){	if( digest_context == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: invalid digest context.\n" );		return( -1 );	}	if( digest_hash == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: invalid digest hash.\n" );		return( -1 );	}	if( *size > (size_t) SSIZE_MAX )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: invalid size value exceeds maximum.\n" );		return( -1 );	}#if defined( HAVE_LIBCRYPTO ) && defined( HAVE_OPENSSL_EVP_H )	if( EVP_DigestFinal_ex( digest_context, (unsigned char *) digest_hash, (unsigned int *) size  ) != 1 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: unable to finalize digest hash.\n" );		return( 0 );	}	if( EVP_MD_CTX_cleanup( digest_context ) != 1 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: unable to clean up digest context.\n" );	}#elif defined( HAVE_WINCPRYPT_H )	if( digest_context->hash == 0 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: invalid digest context - missing hash.\n" );		return( -1 );	}	if( CryptGetHashParam( digest_context->hash, HP_HASHVAL, (BYTE *) digest_hash, (DWORD *) size, 0 ) != 1 )	{		LIBEWF_WARNING_PRINT( "libewf_digest_context_finalize: unable to finalize digest hash.\n" );		return( 0 );	}	if( digest_context->crypt_provider != 0 )	{		CryptReleaseContext( digest_context->crypt_provider, 0 );	}	if( digest_context->hash != 0 )	{		CryptDestroyHash( digest_context->hash );	}#endif	return( 1 );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜爽夜夜爽精品视频| 亚洲欧美经典视频| 国产精品免费免费| 亚洲777理论| 国产成人午夜视频| 欧美一级日韩免费不卡| 中文成人av在线| 免费观看成人av| 色嗨嗨av一区二区三区| 国产喂奶挤奶一区二区三区| 亚洲成人精品一区二区| 99久免费精品视频在线观看| 日韩区在线观看| 亚洲午夜免费福利视频| 99久久国产免费看| 久久先锋影音av| 美国十次综合导航| 欧美日韩国产一级| 亚洲精品国产第一综合99久久| 国产一区二区三区免费在线观看| 欧美日韩精品综合在线| 亚洲精品视频免费观看| 波多野结衣的一区二区三区| 久久久久国产一区二区三区四区| 日本成人在线看| 国产欧美一区二区三区在线看蜜臀 | 亚洲第一会所有码转帖| 国产a久久麻豆| 国产亚洲一区二区在线观看| 麻豆成人在线观看| 日韩视频在线永久播放| 欧美aa在线视频| 欧美一卡在线观看| 日本怡春院一区二区| 欧美精品在线一区二区| 亚洲图片一区二区| 97精品久久久午夜一区二区三区 | 亚洲欧美日韩在线播放| 丁香婷婷综合激情五月色| 久久久久久久综合狠狠综合| 麻豆一区二区三区| 日韩免费高清视频| 国产综合一区二区| 国产三级精品视频| 成人黄色a**站在线观看| 中文字幕一区日韩精品欧美| 99视频超级精品| 亚洲综合区在线| 91精品国产入口在线| 丝袜诱惑亚洲看片| 日韩欧美亚洲国产另类| 国产一区二区三区免费播放| 久久人人爽人人爽| 波多野结衣91| 午夜视频一区在线观看| 日韩小视频在线观看专区| 久久精品国产久精国产爱| 久久精品人人做人人综合| 成人午夜碰碰视频| 亚洲卡通欧美制服中文| 欧美日韩久久一区| 国内精品国产成人国产三级粉色| 国产欧美一区二区三区网站 | 久久久久久毛片| bt7086福利一区国产| 一区二区免费视频| 91精品国产乱| 成人丝袜视频网| 五月天亚洲精品| 久久久综合网站| 色系网站成人免费| 蜜臀av在线播放一区二区三区| 久久久久国产精品免费免费搜索| 91网上在线视频| 爽好多水快深点欧美视频| 久久久精品tv| 欧美日本一区二区| 成人av在线看| 美女在线观看视频一区二区| 中文字幕字幕中文在线中不卡视频| 欧美日韩激情在线| jlzzjlzz亚洲日本少妇| 日日夜夜精品视频免费| 国产精品美女久久久久久久久 | jlzzjlzz亚洲日本少妇| 青椒成人免费视频| 亚洲男帅同性gay1069| 精品va天堂亚洲国产| 在线免费不卡视频| 国产凹凸在线观看一区二区| 亚洲成人综合网站| 亚洲欧洲日韩综合一区二区| 日韩欧美亚洲一区二区| 欧美性生活久久| av在线不卡电影| 国内欧美视频一区二区| 日本中文字幕一区二区有限公司| 国产精品久线在线观看| 欧美精品一区二区三区四区| 欧美日韩精品三区| 色综合久久天天| 懂色av中文一区二区三区| 麻豆91在线观看| 日韩不卡一二三区| 亚洲午夜电影在线| 亚洲在线视频网站| 亚洲美女屁股眼交3| 中文字幕在线一区二区三区| 久久美女高清视频| 久久久久久久综合日本| www日韩大片| 精品国精品国产尤物美女| 91麻豆精品91久久久久同性| 欧美日韩亚洲综合| 欧美色网站导航| 欧美日韩亚洲国产综合| 欧美综合一区二区| 欧美综合视频在线观看| 色哦色哦哦色天天综合| 一本久久a久久免费精品不卡| 菠萝蜜视频在线观看一区| 成人激情免费视频| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 久久九九影视网| 国产三级欧美三级日产三级99| 久久久蜜桃精品| 国产亚洲精品资源在线26u| 久久精品人人做人人爽人人| 国产欧美日韩不卡免费| 国产精品久久久久aaaa樱花| 最好看的中文字幕久久| 亚洲色图视频网| 亚洲综合视频网| 日本vs亚洲vs韩国一区三区二区| 免费国产亚洲视频| 国产精品99久久不卡二区| 国产成人在线视频网站| 99国产精品久久久久| 在线欧美日韩精品| 日韩精品资源二区在线| 久久久国产精品不卡| 综合久久一区二区三区| 亚洲国产中文字幕| 精品中文字幕一区二区| 成人sese在线| 51久久夜色精品国产麻豆| 日本一区二区免费在线观看视频| 国产精品拍天天在线| 国产欧美一区二区精品秋霞影院| 国产精品久久久久久一区二区三区 | 成+人+亚洲+综合天堂| 色狠狠av一区二区三区| 欧美一级艳片视频免费观看| 精品成人在线观看| 亚洲欧洲制服丝袜| 麻豆精品一区二区综合av| 粉嫩蜜臀av国产精品网站| 在线精品视频免费观看| 国产精品国产三级国产普通话蜜臀| 一区二区三区国产| 国产一区二区三区av电影| 91免费观看国产| 精品成人a区在线观看| 一区二区三区影院| 国产麻豆精品视频| 欧美日韩国产综合草草| 国产精品日韩成人| 日本va欧美va欧美va精品| 91视视频在线观看入口直接观看www | 色婷婷综合五月| 久久亚洲春色中文字幕久久久| 一区二区三区日韩| 国v精品久久久网| 欧美一区二区三区日韩视频| 亚洲欧洲成人av每日更新| 狂野欧美性猛交blacked| 91久久精品国产91性色tv| 久久精品欧美日韩精品 | 亚洲视频小说图片| 久久99精品久久只有精品| 欧美三级乱人伦电影| 欧美经典一区二区| 久久er99精品| 91精品国产一区二区三区香蕉| 亚洲精品视频一区| 成人午夜在线视频| 久久精品欧美日韩精品| 激情久久五月天| 日韩亚洲欧美在线| 日韩av一二三| 欧美高清视频不卡网| 夜夜嗨av一区二区三区| 美洲天堂一区二卡三卡四卡视频 | 久久激情综合网| 日韩精品自拍偷拍| 日本最新不卡在线| 678五月天丁香亚洲综合网| 亚洲高清视频的网址| 欧洲av在线精品| 洋洋av久久久久久久一区|