Ejemplo n.º 1
0
	uint Sha::GetFileDigest(void* digest, LPCSTR fn, SHA_BITS bits) {
		int rst;
		if(bits == sha_160) {
			rst = sha1_file((char*)fn, (byte*)digest);
		} else if(bits == sha_224) {
			rst = sha2_file((char*)fn, (byte*)digest, 1);
		} else if(bits == sha_256) {
			rst = sha2_file((char*)fn, (byte*)digest, 0);
		} else if(bits == sha_384) {
			rst = sha4_file((char*)fn, (byte*)digest, 1);
		} else if(bits == sha_512) {
			rst = sha4_file((char*)fn, (byte*)digest, 0);
		} else {
			_ASSERT(0);
			return 0;
		}
		return rst ? 0 : bits;
	}
Ejemplo n.º 2
0
int sha512_file_wrap( const char *path, unsigned char *output )
{
#if defined(POLARSSL_FS_IO)
    return sha4_file( path, output, 0 );
#else
    ((void) path);
    ((void) output);
    return POLARSSL_ERR_MD_FEATURE_UNAVAILABLE;
#endif
}
Ejemplo n.º 3
0
	uint Sha::GetFileDigest(void* digest,LPCWSTR fn,SHA_BITS bits){
		String str = fn;
		char buf[MAX_PATH];
		int len = str.ToMultiByte(buf,MAX_PATH,CP_THREAD_ACP);
		buf[len] = 0;
		int rst;
		if(bits==sha_160){
			rst = sha1_file(buf,(byte*)digest);
		}else if(bits==sha_224){
			rst = sha2_file(buf,(byte*)digest,1);
		}else if(bits==sha_256){
			rst = sha2_file(buf,(byte*)digest,0);
		}else if(bits==sha_384){
			rst = sha4_file(buf,(byte*)digest,1);
		}else if(bits==sha_512){
			rst = sha4_file(buf,(byte*)digest,0);
		}else{
			_ASSERT(0);
			return 0;
		} 
		return rst?0:bits;
	}
Ejemplo n.º 4
0
void SHA512::computeFile(const char* path, unsigned char output [])
{
    sha4_file(path,output,0);
}
Ejemplo n.º 5
0
int main( int argc, char *argv[] )
{
    FILE *f;
    int ret, i;
    rsa_context rsa;
    unsigned char hash[64];
    unsigned char buf[1024];

    ret = 1;

    if( argc != 2 )
    {
        printf( "usage: rsa_sign <filename>\n" );

#ifdef WIN32
        printf( "\n" );
#endif

        goto exit;
    }

    printf( "\n  . Reading private key from rsa_priv.txt\n" );
    fflush( stdout );

    if( ( f = fopen( "rsa_priv.txt", "rb" ) ) == NULL )
    {
        ret = 1;
        printf( " failed\n  ! Could not open rsa_priv.txt\n" \
                "  ! Please run rsa_genkey first\n\n" );
        goto exit;
    }

    rsa_init( &rsa, RSA_PKCS_V15, 0, NULL, NULL );
    
    if( ( ret = mpi_read_file( &rsa.N , 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.E , 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.D , 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.P , 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.Q , 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.DP, 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.DQ, 16, f ) ) != 0 ||
        ( ret = mpi_read_file( &rsa.QP, 16, f ) ) != 0 )
    {
        printf( " failed\n  ! mpi_read_file returned %d\n\n", ret );
        goto exit;
    }

    rsa.len = ( mpi_msb( &rsa.N ) + 7 ) >> 3;

    fclose( f );

    /*
     * Compute the SHA-512 hash of the input file,
     * then calculate the RSA signature of the hash.
     */
    printf( "\n  . Generating the RSA/SHA-512 signature\n" );
    fflush( stdout );

    if( ( ret = sha4_file( argv[1], hash, 0 ) ) != 0 )
    {
        printf( " failed\n  ! Could not open or read %s\n\n", argv[1] );
        goto exit;
    }

    if( ( ret = rsa_pkcs1_sign( &rsa, RSA_PRIVATE, RSA_SHA512,
                                64, hash, buf ) ) != 0 )
    {
        printf( " failed\n  ! rsa_pkcs1_sign returned %d\n\n", ret );
        goto exit;
    }

    /*
     * Write the signature into <filename>-sig.txt
     */
    memcpy( argv[1] + strlen( argv[1] ), ".sig", 5 );

    if( ( f = fopen( argv[1], "wb+" ) ) == NULL )
    {
        ret = 1;
        printf( " failed\n  ! Could not create %s\n\n", argv[1] );
        goto exit;
    }

    for( i = 0; i < rsa.len; i++ )
        fprintf( f, "%02X%s", buf[i],
                 ( i + 1 ) % 16 == 0 ? "\r\n" : " " );

    fclose( f );

    printf( "\n  . Done (created \"%s\")\n\n", argv[1] );

exit:

#ifdef WIN32
    printf( "  + Press Enter to exit this program.\n" );
    fflush( stdout ); getchar();
#endif

    return( ret );
}