============================================================
y \tg znbV DLL
y  쐬  z D (postmaster@katsura-kotonoha.sakura.ne.jp)
============================================================

ڎ
Egp菇
ECreateAlgorithm
EDestroyAlgorithm
EInitAlgorithm
EInputData
EGetHashLength
EGetHash
EGetHashTextLength
EGetHashText
EG[ʒl
@E0x00000000
@E0x00000001
@E0x00000100

------------------------------------------------------------

gp菇
@PDLoadLibrary()  DLL [hB
@QDGetProcAddress() Ŋ֐ւ̃|C^擾B
@RDCreateAlgorithm() ŃASYւ̃nh擾B
@SDInitAlgorithm() ŃASYB
@TDInputData() Ńf[^ASY֓͂B
@UDGetHash() ŌvZʂ󂯎B
@VDDestroyAlgorithm() ŃASYւ̃nhB
@WDFreeLibrary()  DLL JB

------------------------------------------------------------

CreateAlgorithm

Tv
@ASYւ̃nh쐬܂B


@1

錾
@HANDLE WINAPI CreateAlgorithm( void );

Ԓl
@쐬ASYւ̃nhԂ܂B
@ASY̍쐬Ɏsꍇ null Ԃ܂B
@쐬ASY͊֐ DestroyAlgorithm() Ŕj܂B

gp
	HANDLE hAlgorithm = CreateAlgorithm();
	if ( hAlgorithm )
	{
		if ( 0 == InitAlgorithm( hAlgorithm ) )
		{
			if ( 0 == InputData( hAlgorithm, data, length ) )
			{
				const int hashsize = GetHashLength( hAlgorithm );
				if ( 0 < hashsize )
				{
					void *buffer = malloc( hashsize );
					if ( buffer )
					{
						if ( 0 == GetHash( hAlgorithm, buffer, hashsize ) )
						{
							cc ȗ cc
						}
					}
				}
			}
		}

		if ( 0 != DestroyAlgorithm( hAlgorithm ) )
		{
			cc ȗ cc
		}
	}


------------------------------------------------------------

DestroyAlgorithm

Tv
@ASYj܂B


@2

錾
@DWORD WINAPI DestroyAlgorithm( HANDLE hAlgorithm );


HANDLE hAlgorithm
@jASYւ̃nhw肵܂B

Ԓl
@֐ꍇ 0 Ԃ܂B
@֐sꍇ 0 ȊO G[ʒl Ԃ܂B

------------------------------------------------------------

InitAlgorithm

Tv
@ASY܂B
@ASYɓ͍ς݂̃f[^͑SĖɂȂ܂B


@3

錾
@DWORD WINAPI InitAlgorithm( HANDLE hAlgorithm );


HANDLE hAlgorithm
@ASYւ̃nhw肵܂B
Ԓl
@֐ꍇ 0 Ԃ܂B
@֐sꍇ 0 ȊO G[ʒl Ԃ܂B

------------------------------------------------------------

InputData

Tv
@nbVvZf[^ASY֓͂܂B
@f[^͕̓͂ɕčsƂł܂B


@4

錾
@DWORD WINAPI InputData( HANDLE hAlgorithm, const void *data, int length );


HANDLE hAlgorithm
@ASYւ̃nhw肵܂B

const void *data
@ރf[^ւ̃|C^w肵܂B

int length
@ data ẅ̃TCY oCg Ŏw肵܂B
@0 ȉ̒lw肷Ɗ֐͎s܂B

Ԓl
@֐ꍇ 0 Ԃ܂B
@֐sꍇ 0 ȊO G[ʒl Ԃ܂B

gp
	char buffer[ 1024 ];
	while( 0 < (length = fread( buffer, 1, sizeof( buffer ), fp )) )
	{
		if ( 0 == InputData( hAlgorithm, buffer, length ) )
		{
			cc ȗ cc
		}
	}

------------------------------------------------------------

GetHashLength

Tv
@nbṼTCY oCg ŕԂ܂B


@5

錾
@int WINAPI GetHashLength( HANDLE hAlgorithm );


HANDLE hAlgorithm
@ASYւ̃nhw肵܂B

Ԓl
@nbṼTCY oCg ŕԂ܂B
@֐sꍇ 0 ȉ̒lԂ܂B

------------------------------------------------------------

GetHash

Tv
@ASYɓ͂ꂽf[^nbVvZ܂B


@6

錾
@DWORD WINAPI GetHash( HANDLE hAlgorithm, void *buffer, int bufsize );


HANDLE hAlgorithm
@ASYւ̃nhw肵܂B

void *buffer
@obt@ւ̃|C^w肵܂B
@̗̈ nbV ̐擪 bufsize oCgi[܂B

int bufsize
@ buffer ẅ̃TCY oCg Ŏw肵܂B
@nbVi[̈ɕKvȃTCY͊֐ GetHashLength() Ŏ擾܂B
@0 ȉ̒lw肷Ɗ֐͎s܂B

Ԓl
@֐ꍇ 0 Ԃ܂B
@֐sꍇ 0 ȊO G[ʒl Ԃ܂B

gp
	const int hashsize = GetHashLength( hAlgorithm );
	if ( 0 < hashsize )
	{
		void *buffer = malloc( hashsize );
		if ( buffer )
		{
			if ( 0 == GetHash( hAlgorithm, buffer, hashsize ) )
			{
				cc ȗ cc
			}
			free( buffer );
		}
	}

------------------------------------------------------------

GetHashTextLength

Tv
@nbV̒ oCg ŕԂ܂B


@7

錾
@int WINAPI GetHashTextLength( HANDLE hAlgorithm );


HANDLE hAlgorithm
@ASYւ̃nhw肵܂B

Ԓl
@nbV̒ oCg ŕԂ܂B
@nbV̒ɏI[ '\0' ͊܂܂܂B
@֐sꍇ 0 ȉ̒lԂ܂B

gp
	const int length = GetHashTextLength( hAlgorithm );
	if ( 0 < length )
	{
		const int bufsize = 1 + length;
		void *buffer = malloc( bufsize );
		if ( buffer )
		{
			if ( 0 == GetHashText( hAlgorithm, buffer, bufsize ) )
			{
				cc ȗ cc
			}
			free( buffer );
		}
	}

------------------------------------------------------------

GetHashText

Tv
@ASYɓ͂ꂽf[^nbV擾܂B


@8

錾
@DWORD WINAPI GetHashText( HANDLE hAlgorithm, char *buffer, int bufsize );


HANDLE hAlgorithm
@ASYւ̃nhw肵܂B

char *buffer
@obt@ւ̃|C^w肵܂B
@̗̈ nbV ̐擪 bufsize-1 oCgi[܂B
@񖖔ɂ͏I[ '\0' t܂B

int bufsize
@ buffer ẅ̃TCY oCg Ŏw肵܂B
@nbVi[̈ɕKvȃTCY͊֐ GetHashTextLength() Ŏ擾܂B
@0 ȉ̒lw肷Ɗ֐͎s܂B

Ԓl
@֐ꍇ 0 Ԃ܂B
@֐sꍇ 0 ȊO G[ʒl Ԃ܂B

gp
	const int length = GetHashTextLength( hAlgorithm );
	if ( 0 < length )
	{
		const int bufsize = 1 + length;
		void *buffer = malloc( bufsize );
		if ( buffer )
		{
			if ( 0 == GetHashText( hAlgorithm, buffer, bufsize ) )
			{
				cc ȗ cc
			}
			free( buffer );
		}
	}

------------------------------------------------------------

G[ʒl

E0x00000000
@֐͐ɏI܂B 
E0x00000001
@w肳ꂽsłB 
E0x00000100
@֐ŃG[܂B

