Beispiel #1
0
char * PKI_X509_CERT_get_parsed(const PKI_X509_CERT *x,
				PKI_X509_DATA type ) {

  char *ret = NULL;

  PKI_X509_KEYPAIR *k = NULL;
  const PKI_X509_KEYPAIR_VALUE *pkey = NULL;


  if( !x ) return (NULL);

  switch( type ) {
    case PKI_X509_DATA_SERIAL:
      ret = PKI_INTEGER_get_parsed((PKI_INTEGER *) 
		      		   PKI_X509_CERT_get_data(x, type));
      break;

    case PKI_X509_DATA_SUBJECT:
    case PKI_X509_DATA_ISSUER:
      ret = PKI_X509_NAME_get_parsed((PKI_X509_NAME *) 
		      		     PKI_X509_CERT_get_data(x, type));
      break;

    case PKI_X509_DATA_NOTBEFORE:
    case PKI_X509_DATA_NOTAFTER:
      ret = PKI_TIME_get_parsed((PKI_TIME *)PKI_X509_CERT_get_data(x, type));
      break;

    case PKI_X509_DATA_ALGORITHM:
      ret = (char *) PKI_ALGOR_get_parsed((PKI_ALGOR *) 
		      			  PKI_X509_CERT_get_data(x,type));
      break;

    case PKI_X509_DATA_PUBKEY:
    case PKI_X509_DATA_KEYPAIR_VALUE:
      if ((pkey = PKI_X509_CERT_get_data(x, type)) != NULL) {
        k = PKI_X509_new_dup_value(PKI_DATATYPE_X509_KEYPAIR, pkey, NULL);
        ret = PKI_X509_KEYPAIR_get_parsed( k );
        PKI_X509_KEYPAIR_free(k);
      }
      break;

    case PKI_X509_DATA_KEYSIZE:
      PKI_ERROR(PKI_ERR_PARAM_TYPE, "Deprecated Cert Datatype");
      break;

    case PKI_X509_DATA_CERT_TYPE:
    case PKI_X509_DATA_SIGNATURE:
    case PKI_X509_DATA_EXTENSIONS:
    default:
      /* Not Recognized/Supported DATATYPE */
      return (NULL);
  }

  return (ret);
}
Beispiel #2
0
static void _pki_stderr_add( int level, const char *fmt, va_list ap ) {

	PKI_TIME *now = NULL;

	now = PKI_TIME_new(0);

	/* Let's print the log entry */
	fprintf ( stderr, "%s [%d] %s: ", 
		PKI_TIME_get_parsed( (PKI_TIME *) now ), 
					getpid(), _get_info_string( level ));
	vfprintf( stderr, fmt, ap );
	fprintf ( stderr, "\n" );

	PKI_TIME_free( now );

	return;
}
Beispiel #3
0
char * PKI_X509_CRL_get_parsed(const PKI_X509_CRL *x, PKI_X509_DATA type ) {

  char *ret = NULL;
  const PKI_ALGOR *al = NULL;

  if (!x || !x->value) return NULL;

  switch (type)
  {
    case PKI_X509_DATA_VERSION:
      ret = PKI_INTEGER_get_parsed(
          PKI_X509_CRL_get_data(x, type));
      if (!ret) ret = strdup("NONE");
      break;

    case PKI_X509_DATA_ISSUER:
      ret = PKI_X509_NAME_get_parsed(
          PKI_X509_CRL_get_data(x, type));
      if (!ret) ret = strdup("NONE");
      break;

    case PKI_X509_DATA_ALGORITHM:
      if ((al = PKI_X509_CRL_get_data(x, type)) != NULL)
        ret = strdup(PKI_OID_get_descr(al->algorithm));
      else
        ret = strdup("NONE");
      break;

    case PKI_X509_DATA_LASTUPDATE:
    case PKI_X509_DATA_NEXTUPDATE:
    case PKI_X509_DATA_NOTBEFORE:
    case PKI_X509_DATA_NOTAFTER:
      ret = PKI_TIME_get_parsed(
          PKI_X509_CRL_get_data(x, type));
      if (!ret) ret = strdup("NONE");
      break;

    default:
      /* Not Recognized/Supported DATATYPE */
      return NULL;
  }

  return ret;
}
Beispiel #4
0
char * PKI_X509_OCSP_RESP_get_parsed ( PKI_X509_OCSP_RESP *r, 
						PKI_X509_DATA type ) {

	char *ret = NULL;

	if( !r ) return ( NULL );

	switch ( type ) {
		case PKI_X509_DATA_NONCE:
			ret = (char *) PKI_STRING_get_parsed((PKI_STRING *)
				PKI_X509_OCSP_RESP_get_data ( r, type ));
			break;

		case PKI_X509_DATA_NOTBEFORE:
			ret = (char *) PKI_TIME_get_parsed((PKI_TIME *)
				PKI_X509_OCSP_RESP_get_data ( r, type ));
			break;

		case PKI_X509_DATA_NOTAFTER:
			ret = NULL;
			break;

		case PKI_X509_DATA_ALGORITHM:
			ret = (char *) PKI_ALGOR_get_parsed ( (PKI_ALGOR *)
				PKI_X509_OCSP_RESP_get_data ( r, type ));
			break;

		case PKI_X509_DATA_SIGNATURE:
			ret = (char *) PKI_X509_SIGNATURE_get_parsed(
				(PKI_X509_SIGNATURE *) 
					PKI_X509_OCSP_RESP_get_data ( r, type ));
			break;

		default:
			ret = NULL;
	}

	return ret;
}
Beispiel #5
0
static void _pki_file_add( int level, const char *fmt, va_list ap ) {

	int fd = 0;
	FILE *file = NULL;

	PKI_TIME *now = NULL;

	if( ! _log_st.resource ) return;

	if(( fd = open( _log_st.resource, O_RDWR|O_APPEND|O_CREAT,
						S_IRUSR | S_IWUSR )) == -1 ) {
		/* Error! */
		return;
	}

	if(( file = fdopen( fd, "a+")) == NULL ) {
		/* Error!!! */
		fprintf( stderr, "DEBUG::ERROR, can not open log file!\n");
		return;
	}

	now = PKI_TIME_new(0);
	/* Let's print the log entry */
	fprintf ( file, "%s [%d]: %s: ", 
		PKI_TIME_get_parsed( (PKI_TIME *) now ), 
					getpid(), _get_info_string( level ));
	vfprintf( file, fmt, ap );
	fprintf ( file, "\n");
	PKI_TIME_free( now );

	/* Now close the file stream */
	fclose( file );

	/* Do we need to also close the fd ? */
	close ( fd );

	return;
}