Cryptography Reference
In-Depth Information
int error_code;
signed_x509_certificate certificate;
if ( argc < 3 )
{
fprintf( stderr, “Usage: x509 [-pem|-der] [certificate file]\n” );
exit( 0 );
}
if ( ( certificate_file = open( argv[ 2 ], O_RDONLY ) ) == -1 )
{
perror( “Unable to open certificate file” );
return 1;
}
// Slurp the whole thing into memory
if ( fstat( certificate_file, &certificate_file_stat ) )
{
perror( “Unable to stat certificate file” );
return 2;
}
buffer_size = certificate_file_stat.st_size;
buffer = ( char * ) malloc( buffer_size );
if ( !buffer )
{
perror( “Not enough memory” );
return 3;
}
bufptr = buffer;
while ( ( bytes_read = read( certificate_file, ( void * ) buffer,
buffer_size ) ) )
{
bufptr += bytes_read;
}
if ( !strcmp( argv[ 1 ], “-pem” ) )
{
// XXX this overallocates a bit, since it sets aside space for markers, etc.
unsigned char *pem_buffer = buffer;
buffer = (unsigned char * ) malloc( buffer_size );
buffer_size = pem_decode( pem_buffer, buffer );
free( pem_buffer );
}
// now parse it
init_x509_certificate( &certificate );
if ( !( error_code = parse_x509_certificate( buffer, buffer_size,
&certificate ) ) )
Search WWH ::




Custom Search