doxygen.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22347 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -34,6 +34,11 @@
|
||||
#include "hx_locl.h"
|
||||
RCSID("$Id$");
|
||||
|
||||
/**
|
||||
* @page page_print Hx509 printing functions
|
||||
*
|
||||
* See the library functions here: @ref hx509_print
|
||||
*/
|
||||
|
||||
struct hx509_validate_ctx_data {
|
||||
int flags;
|
||||
@@ -75,15 +80,31 @@ Time2string(const Time *T, char **str)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to print on stdout for:
|
||||
* - hx509_oid_print(),
|
||||
* - hx509_bitstring_print(),
|
||||
* - hx509_validate_ctx_set_print().
|
||||
*
|
||||
* @param ctx the context to the print function. If the ctx is NULL,
|
||||
* stdout is used.
|
||||
* @param fmt the printing format.
|
||||
* @param va the argumet list.
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
void
|
||||
hx509_print_stdout(void *ctx, const char *fmt, va_list va)
|
||||
{
|
||||
FILE *f = ctx;
|
||||
if (f == NULL)
|
||||
f = stdout;
|
||||
vfprintf(f, fmt, va);
|
||||
}
|
||||
|
||||
void
|
||||
hx509_print_func(hx509_vprint_func func, void *ctx, const char *fmt, ...)
|
||||
print_func(hx509_vprint_func func, void *ctx, const char *fmt, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, fmt);
|
||||
@@ -91,36 +112,82 @@ hx509_print_func(hx509_vprint_func func, void *ctx, const char *fmt, ...)
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a oid to a string.
|
||||
*
|
||||
* @param oid oid to print
|
||||
* @param str allocated string, free with hx509_xfree().
|
||||
*
|
||||
* @return An hx509 error code, see hx509_get_error_string().
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
int
|
||||
hx509_oid_sprint(const heim_oid *oid, char **str)
|
||||
{
|
||||
return der_print_heim_oid(oid, '.', str);
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a oid using a hx509_vprint_func function. To print to stdout
|
||||
* use hx509_print_stdout().
|
||||
*
|
||||
* @param oid oid to print
|
||||
* @param func hx509_vprint_func to print with.
|
||||
* @param ctx context variable to hx509_vprint_func function.
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
void
|
||||
hx509_oid_print(const heim_oid *oid, hx509_vprint_func func, void *ctx)
|
||||
{
|
||||
char *str;
|
||||
hx509_oid_sprint(oid, &str);
|
||||
hx509_print_func(func, ctx, "%s", str);
|
||||
print_func(func, ctx, "%s", str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a bitstring using a hx509_vprint_func function. To print to
|
||||
* stdout use hx509_print_stdout().
|
||||
*
|
||||
* @param b bit string to print.
|
||||
* @param func hx509_vprint_func to print with.
|
||||
* @param ctx context variable to hx509_vprint_func function.
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
void
|
||||
hx509_bitstring_print(const heim_bit_string *b,
|
||||
hx509_vprint_func func, void *ctx)
|
||||
{
|
||||
int i;
|
||||
hx509_print_func(func, ctx, "\tlength: %d\n\t", b->length);
|
||||
print_func(func, ctx, "\tlength: %d\n\t", b->length);
|
||||
for (i = 0; i < (b->length + 7) / 8; i++)
|
||||
hx509_print_func(func, ctx, "%02x%s%s",
|
||||
((unsigned char *)b->data)[i],
|
||||
i < (b->length - 7) / 8
|
||||
&& (i == 0 || (i % 16) != 15) ? ":" : "",
|
||||
i != 0 && (i % 16) == 15 ?
|
||||
(i <= ((b->length + 7) / 8 - 2) ? "\n\t" : "\n"):"");
|
||||
print_func(func, ctx, "%02x%s%s",
|
||||
((unsigned char *)b->data)[i],
|
||||
i < (b->length - 7) / 8
|
||||
&& (i == 0 || (i % 16) != 15) ? ":" : "",
|
||||
i != 0 && (i % 16) == 15 ?
|
||||
(i <= ((b->length + 7) / 8 - 2) ? "\n\t" : "\n"):"");
|
||||
}
|
||||
|
||||
/**
|
||||
* Print certificate usage for a certificate to a string.
|
||||
*
|
||||
* @param context A hx509 context.
|
||||
* @param c a certificate print the keyusage for.
|
||||
* @param s the return string with the keysage printed in to, free
|
||||
* with hx509_xfree().
|
||||
*
|
||||
* @return An hx509 error code, see hx509_get_error_string().
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
int
|
||||
hx509_cert_keyusage_print(hx509_context context, hx509_cert c, char **s)
|
||||
{
|
||||
@@ -679,6 +746,18 @@ struct {
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
/**
|
||||
* Allocate a hx509 validation/printing context.
|
||||
*
|
||||
* @param context A hx509 context.
|
||||
* @param ctx a new allocated hx509 validation context, free with
|
||||
* hx509_validate_ctx_free().
|
||||
|
||||
* @return An hx509 error code, see hx509_get_error_string().
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
int
|
||||
hx509_validate_ctx_init(hx509_context context, hx509_validate_ctx *ctx)
|
||||
{
|
||||
@@ -689,6 +768,18 @@ hx509_validate_ctx_init(hx509_context context, hx509_validate_ctx *ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the printing functions for the validation context.
|
||||
*
|
||||
* @param ctx a hx509 valication context.
|
||||
* @param func the printing function to usea.
|
||||
* @param c the context variable to the printing function.
|
||||
*
|
||||
* @return An hx509 error code, see hx509_get_error_string().
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
void
|
||||
hx509_validate_ctx_set_print(hx509_validate_ctx ctx,
|
||||
hx509_vprint_func func,
|
||||
@@ -698,18 +789,50 @@ hx509_validate_ctx_set_print(hx509_validate_ctx ctx,
|
||||
ctx->ctx = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add flags to control the behaivor of the hx509_validate_cert()
|
||||
* function.
|
||||
*
|
||||
* @param ctx A hx509 validation context.
|
||||
* @param flags flags to add to the validation context.
|
||||
*
|
||||
* @return An hx509 error code, see hx509_get_error_string().
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
void
|
||||
hx509_validate_ctx_add_flags(hx509_validate_ctx ctx, int flags)
|
||||
{
|
||||
ctx->flags |= flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* Free an hx509 validate context.
|
||||
*
|
||||
* @param ctx the hx509 validate context to free.
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
void
|
||||
hx509_validate_ctx_free(hx509_validate_ctx ctx)
|
||||
{
|
||||
free(ctx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate/Print the status of the certificate.
|
||||
*
|
||||
* @param context A hx509 context.
|
||||
* @param ctx A hx509 validation context.
|
||||
* @param cert the cerificate to validate/print.
|
||||
|
||||
* @return An hx509 error code, see hx509_get_error_string().
|
||||
*
|
||||
* @ingroup hx509_print
|
||||
*/
|
||||
|
||||
int
|
||||
hx509_validate_cert(hx509_context context,
|
||||
hx509_validate_ctx ctx,
|
||||
|
Reference in New Issue
Block a user