Create a request structure
This commit is contained in:

committed by
Love Hörnquist Åstrand

parent
ca060554fb
commit
13eeb30a1d
@@ -44,6 +44,8 @@
|
|||||||
typedef struct pk_client_params pk_client_params;
|
typedef struct pk_client_params pk_client_params;
|
||||||
struct DigestREQ;
|
struct DigestREQ;
|
||||||
struct Kx509Request;
|
struct Kx509Request;
|
||||||
|
typedef struct kdc_request_desc *kdc_request_t;
|
||||||
|
|
||||||
#include <kdc-private.h>
|
#include <kdc-private.h>
|
||||||
|
|
||||||
krb5_kdc_configuration *config;
|
krb5_kdc_configuration *config;
|
||||||
|
@@ -106,6 +106,8 @@
|
|||||||
#include <kdc.h>
|
#include <kdc.h>
|
||||||
#include <windc_plugin.h>
|
#include <windc_plugin.h>
|
||||||
|
|
||||||
|
#include <heimbase.h>
|
||||||
|
|
||||||
#undef ALLOC
|
#undef ALLOC
|
||||||
#define ALLOC(X) ((X) = calloc(1, sizeof(*(X))))
|
#define ALLOC(X) ((X) = calloc(1, sizeof(*(X))))
|
||||||
#undef ALLOC_SEQ
|
#undef ALLOC_SEQ
|
||||||
|
@@ -43,8 +43,51 @@
|
|||||||
typedef struct pk_client_params pk_client_params;
|
typedef struct pk_client_params pk_client_params;
|
||||||
struct DigestREQ;
|
struct DigestREQ;
|
||||||
struct Kx509Request;
|
struct Kx509Request;
|
||||||
|
typedef struct kdc_request_desc *kdc_request_t;
|
||||||
|
|
||||||
#include <kdc-private.h>
|
#include <kdc-private.h>
|
||||||
|
|
||||||
|
struct kdc_request_desc {
|
||||||
|
krb5_context context;
|
||||||
|
krb5_kdc_configuration *config;
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
|
krb5_data request;
|
||||||
|
KDC_REQ req;
|
||||||
|
METHOD_DATA *padata;
|
||||||
|
|
||||||
|
/* out */
|
||||||
|
|
||||||
|
METHOD_DATA outpadata;
|
||||||
|
|
||||||
|
KDC_REP rep;
|
||||||
|
EncTicketPart et;
|
||||||
|
EncKDCRepPart ek;
|
||||||
|
|
||||||
|
/* PA methods can affect both the reply key and the session key (pkinit) */
|
||||||
|
krb5_keyblock sessionetype;
|
||||||
|
krb5_keyblock reply_key;
|
||||||
|
krb5_keyblock session_key;
|
||||||
|
|
||||||
|
const char *e_text;
|
||||||
|
|
||||||
|
/* state */
|
||||||
|
krb5_principal client_princ;
|
||||||
|
char *client_name;
|
||||||
|
hdb_entry_ex *client;
|
||||||
|
HDB *clientdb;
|
||||||
|
|
||||||
|
krb5_principal server_princ;
|
||||||
|
char *server_name;
|
||||||
|
hdb_entry_ex *server;
|
||||||
|
|
||||||
|
krb5_crypto armor_crypto;
|
||||||
|
|
||||||
|
heim_dict_t pastate;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
extern sig_atomic_t exit_flag;
|
extern sig_atomic_t exit_flag;
|
||||||
extern size_t max_request_udp;
|
extern size_t max_request_udp;
|
||||||
extern size_t max_request_tcp;
|
extern size_t max_request_tcp;
|
||||||
|
980
kdc/kerberos5.c
980
kdc/kerberos5.c
File diff suppressed because it is too large
Load Diff
@@ -1237,7 +1237,7 @@ _kdc_pk_mk_pa_reply(krb5_context context,
|
|||||||
krb5_enctype sessionetype,
|
krb5_enctype sessionetype,
|
||||||
const KDC_REQ *req,
|
const KDC_REQ *req,
|
||||||
const krb5_data *req_buffer,
|
const krb5_data *req_buffer,
|
||||||
krb5_keyblock **reply_key,
|
krb5_keyblock *reply_key,
|
||||||
krb5_keyblock *sessionkey,
|
krb5_keyblock *sessionkey,
|
||||||
METHOD_DATA *md)
|
METHOD_DATA *md)
|
||||||
{
|
{
|
||||||
@@ -1563,7 +1563,7 @@ out:
|
|||||||
hx509_cert_free(kdc_cert);
|
hx509_cert_free(kdc_cert);
|
||||||
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
*reply_key = &cp->reply_key;
|
ret = krb5_copy_keyblock_contents(context, &cp->reply_key, reply_key);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -57,19 +57,25 @@ kdc_as_req(krb5_context context,
|
|||||||
int datagram_reply,
|
int datagram_reply,
|
||||||
int *claim)
|
int *claim)
|
||||||
{
|
{
|
||||||
|
struct kdc_request_desc r;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
KDC_REQ req;
|
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
ret = decode_AS_REQ(req_buffer->data, req_buffer->length, &req, &len);
|
memset(&r, 0, sizeof(r));
|
||||||
|
|
||||||
|
ret = decode_AS_REQ(req_buffer->data, req_buffer->length, &r.req, &len);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
r.context = context;
|
||||||
|
r.config = config;
|
||||||
|
r.request.data = req_buffer->data;
|
||||||
|
r.request.length = req_buffer->length;
|
||||||
|
|
||||||
*claim = 1;
|
*claim = 1;
|
||||||
|
|
||||||
ret = _kdc_as_rep(context, config, &req, req_buffer,
|
ret = _kdc_as_rep(&r, reply, from, addr, datagram_reply);
|
||||||
reply, from, addr, datagram_reply);
|
free_AS_REQ(&r.req);
|
||||||
free_AS_REQ(&req);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,7 +43,7 @@ export KRB5_CONFIG
|
|||||||
testfailed="echo test failed; cat messages.log; exit 1"
|
testfailed="echo test failed; cat messages.log; exit 1"
|
||||||
|
|
||||||
# If there is no useful db support compile in, disable test
|
# If there is no useful db support compile in, disable test
|
||||||
${have_db} || exit 77
|
#${have_db} || exit 77
|
||||||
|
|
||||||
R=TEST.H5L.SE
|
R=TEST.H5L.SE
|
||||||
|
|
||||||
@@ -139,6 +139,9 @@ if [ -f ${mit}/kinit ] ; then
|
|||||||
echo "Checking for FAST avail"
|
echo "Checking for FAST avail"
|
||||||
${klist} --hidden | grep fast_avail > /dev/null || { exit 1; }
|
${klist} --hidden | grep fast_avail > /dev/null || { exit 1; }
|
||||||
|
|
||||||
|
echo "Getting service ticket"
|
||||||
|
${mit}/kvno -c ${cache} ${server}@${R} || { exit 1; }
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user