Add verification of PAC.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19671 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -42,10 +42,13 @@ RCSID("$Id$");
|
||||
#include <getarg.h>
|
||||
#include <roken.h>
|
||||
|
||||
static int verify_pac = 0;
|
||||
static int version_flag = 0;
|
||||
static int help_flag = 0;
|
||||
|
||||
static struct getargs args[] = {
|
||||
{"verify-pac",0, arg_flag, &verify_pac,
|
||||
"verify the PAC", NULL },
|
||||
{"version", 0, arg_flag, &version_flag,
|
||||
"print version", NULL },
|
||||
{"help", 0, arg_flag, &help_flag,
|
||||
@@ -133,6 +136,31 @@ test_ap(krb5_context context,
|
||||
krb5_data_free(&data);
|
||||
krb5_auth_con_free(context, client_ac);
|
||||
krb5_auth_con_free(context, server_ac);
|
||||
|
||||
if (verify_pac) {
|
||||
krb5_pac pac;
|
||||
|
||||
ret = krb5_ticket_get_authorization_data_type(context,
|
||||
ticket,
|
||||
KRB5_AUTHDATA_WIN2K_PAC,
|
||||
&data);
|
||||
if (ret)
|
||||
krb5_errx(context, 1, "get pac");
|
||||
|
||||
ret = krb5_pac_parse(context, data.data, data.length, &pac);
|
||||
if (ret)
|
||||
krb5_errx(context, 1, "pac parse");
|
||||
|
||||
|
||||
ret = krb5_pac_verify(context, pac, ticket->ticket.authtime,
|
||||
ticket->client, &ticket->ticket.key, NULL);
|
||||
if (ret)
|
||||
krb5_errx(context, 1, "pac verify");
|
||||
|
||||
krb5_pac_free(context, pac);
|
||||
}
|
||||
|
||||
krb5_free_ticket(context, ticket);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user