Example #1
0
void disp_cert(char* cert_file, int pem) {
  int certificate_file;
  struct stat certificate_file_stat;
  char *buffer, *bufptr;
  int buffer_size;
  int bytes_read;
  int error_code;
 
  signed_x509_certificate certificate;

  if ((certificate_file = open(cert_file, "rb")) == -1) {
    perror("Unable to open certificate file");
    exit(3);
  }
  
  // Slurp the whole thing into memory
  if (fstat(certificate_file, &certificate_file_stat)) {
    perror( "Unable to stat certificate file" );
    exit(4);
  } 
  
  buffer_size = certificate_file_stat.st_size;
  buffer = (char*) malloc(buffer_size);
  if (!buffer) {
    perror("Not enough memory");
    exit(5);
  } 
  
  bufptr = buffer;
  
  while ((bytes_read = read(certificate_file, (void*) buffer, buffer_size))) { 
    bufptr += bytes_read;
  }
  
  if (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);
  }

  if (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))) {
    printf("X509 Certificate:\n");
    display_x509_certificate(&certificate);
  }
}
Example #2
0
int main( int argc, char *argv[ ] )
{   
  rsa_key privkey;
  unsigned char *buffer;
  int buffer_length;

  if ( argc < 3 )
  {
    fprintf( stderr, "Usage: %s [-pem|-der] <rsa private key file> [password]\n", argv[ 0 ] );
    exit( 0 );
  }

  if ( !( buffer = load_file_into_memory( argv[ 2 ], &buffer_length ) ) )
  {
    perror( "Unable to load file" );
    exit( 1 );
  }

  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_length );
    buffer_length = pem_decode( pem_buffer, buffer ); 
    free( pem_buffer );
  } 
  
  if ( argc == 3 )
  {
    parse_private_key( &privkey, buffer, buffer_length );
  }
  else
  {
    parse_pkcs8_private_key( &privkey, buffer, buffer_length, argv[ 3] );
  }
  
  printf( "Modulus:" );
  show_hex( privkey.modulus->rep, privkey.modulus->size );
  printf( "Private Exponent:" );
  show_hex( privkey.exponent->rep, privkey.exponent->size );
  
  free( buffer );
  
  return 0;
} 
Example #3
0
int main( int argc, char *argv[ ] )
{
  int certificate_file;
  struct stat certificate_file_stat;
  unsigned char *buffer, *bufptr;
  int buffer_size;
  int bytes_read;
 
  struct asn1struct certificate;

  if ( argc < 3 )
  {
    fprintf( stderr, "Usage: %s [-der|-pem] <certificate file>\n", argv[ 0 ] );
    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,       
               certificate_file_stat.st_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 );
  }

  asn1parse( buffer, buffer_size, &certificate );
 
  asn1show( 0, &certificate );
 
  asn1free( &certificate );

  return 0;
}