Lines Matching refs:pac

51     struct PACTYPE *pac;  member
171 krb5_pac *pac) in krb5_pac_parse() argument
211 p->pac = calloc(1, header_end); in krb5_pac_parse()
212 if (p->pac == NULL) { in krb5_pac_parse()
217 p->pac->numbuffers = tmp; in krb5_pac_parse()
218 p->pac->version = tmp2; in krb5_pac_parse()
225 for (i = 0; i < p->pac->numbuffers; i++) { in krb5_pac_parse()
226 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].type), out); in krb5_pac_parse()
227 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].buffersize), out); in krb5_pac_parse()
228 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].offset_lo), out); in krb5_pac_parse()
229 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].offset_hi), out); in krb5_pac_parse()
232 if (p->pac->buffers[i].offset_lo & (PAC_ALIGNMENT - 1)) { in krb5_pac_parse()
238 if (p->pac->buffers[i].offset_hi) { in krb5_pac_parse()
244 if (p->pac->buffers[i].offset_lo > len) { in krb5_pac_parse()
250 if (p->pac->buffers[i].offset_lo < header_end) { in krb5_pac_parse()
254 (unsigned long)p->pac->buffers[i].offset_lo, in krb5_pac_parse()
258 if (p->pac->buffers[i].buffersize > len - p->pac->buffers[i].offset_lo){ in krb5_pac_parse()
265 if (p->pac->buffers[i].type == PAC_SERVER_CHECKSUM) { in krb5_pac_parse()
272 p->server_checksum = &p->pac->buffers[i]; in krb5_pac_parse()
273 } else if (p->pac->buffers[i].type == PAC_PRIVSVR_CHECKSUM) { in krb5_pac_parse()
280 p->privsvr_checksum = &p->pac->buffers[i]; in krb5_pac_parse()
281 } else if (p->pac->buffers[i].type == PAC_LOGON_NAME) { in krb5_pac_parse()
288 p->logon_name = &p->pac->buffers[i]; in krb5_pac_parse()
298 *pac = p; in krb5_pac_parse()
305 if (p->pac) in krb5_pac_parse()
306 free(p->pac); in krb5_pac_parse()
309 *pac = NULL; in krb5_pac_parse()
315 krb5_pac_init(krb5_context context, krb5_pac *pac) in krb5_pac_init() argument
325 p->pac = calloc(1, sizeof(*p->pac)); in krb5_pac_init()
326 if (p->pac == NULL) { in krb5_pac_init()
333 free (p->pac); in krb5_pac_init()
338 *pac = p; in krb5_pac_init()
357 num_buffers = p->pac->numbuffers; in krb5_pac_add_buffer()
369 ptr = realloc(p->pac, header_end); in krb5_pac_add_buffer()
373 p->pac = ptr; in krb5_pac_add_buffer()
376 if (p->pac->buffers[i].offset_lo > UINT32_MAX - PAC_INFO_BUFFER_SIZE) { in krb5_pac_add_buffer()
382 p->pac->buffers[i].offset_lo += PAC_INFO_BUFFER_SIZE; in krb5_pac_add_buffer()
392 p->pac->buffers[num_buffers].type = type; in krb5_pac_add_buffer()
393 p->pac->buffers[num_buffers].buffersize = data->length; in krb5_pac_add_buffer()
394 p->pac->buffers[num_buffers].offset_lo = offset; in krb5_pac_add_buffer()
395 p->pac->buffers[num_buffers].offset_hi = 0; in krb5_pac_add_buffer()
432 p->pac->numbuffers += 1; in krb5_pac_add_buffer()
458 for (i = 0; i < p->pac->numbuffers; i++) { in krb5_pac_get_buffer()
459 const uint32_t len = p->pac->buffers[i].buffersize; in krb5_pac_get_buffer()
460 const uint32_t offset = p->pac->buffers[i].offset_lo; in krb5_pac_get_buffer()
462 if (p->pac->buffers[i].type != type) in krb5_pac_get_buffer()
489 *types = calloc(p->pac->numbuffers, sizeof(*types)); in krb5_pac_get_types()
494 for (i = 0; i < p->pac->numbuffers; i++) in krb5_pac_get_types()
495 (*types)[i] = p->pac->buffers[i].type; in krb5_pac_get_types()
496 *len = p->pac->numbuffers; in krb5_pac_get_types()
506 krb5_pac_free(krb5_context context, krb5_pac pac) in krb5_pac_free() argument
508 krb5_data_free(&pac->data); in krb5_pac_free()
509 free(pac->pac); in krb5_pac_free()
510 free(pac); in krb5_pac_free()
897 const krb5_pac pac, in krb5_pac_verify() argument
905 if (pac->server_checksum == NULL) { in krb5_pac_verify()
909 if (pac->privsvr_checksum == NULL) { in krb5_pac_verify()
913 if (pac->logon_name == NULL) { in krb5_pac_verify()
919 pac->logon_name, in krb5_pac_verify()
920 &pac->data, in krb5_pac_verify()
933 ret = krb5_copy_data(context, &pac->data, &copy); in krb5_pac_verify()
937 if (pac->server_checksum->buffersize < 4) in krb5_pac_verify()
939 if (pac->privsvr_checksum->buffersize < 4) in krb5_pac_verify()
942 memset((char *)copy->data + pac->server_checksum->offset_lo + 4, in krb5_pac_verify()
944 pac->server_checksum->buffersize - 4); in krb5_pac_verify()
946 memset((char *)copy->data + pac->privsvr_checksum->offset_lo + 4, in krb5_pac_verify()
948 pac->privsvr_checksum->buffersize - 4); in krb5_pac_verify()
951 pac->server_checksum, in krb5_pac_verify()
952 &pac->data, in krb5_pac_verify()
963 pac->privsvr_checksum, in krb5_pac_verify()
964 &pac->data, in krb5_pac_verify()
965 (char *)pac->data.data in krb5_pac_verify()
966 + pac->server_checksum->offset_lo + 4, in krb5_pac_verify()
967 pac->server_checksum->buffersize - 4, in krb5_pac_verify()
1064 if (p->pac->numbuffers > UINT32_MAX - num) { in _krb5_pac_sign()
1069 ret = pac_header_size(context, p->pac->numbuffers + num, &len); in _krb5_pac_sign()
1073 ptr = realloc(p->pac, len); in _krb5_pac_sign()
1077 p->pac = ptr; in _krb5_pac_sign()
1080 p->logon_name = &p->pac->buffers[p->pac->numbuffers++]; in _krb5_pac_sign()
1085 p->server_checksum = &p->pac->buffers[p->pac->numbuffers++]; in _krb5_pac_sign()
1090 p->privsvr_checksum = &p->pac->buffers[p->pac->numbuffers++]; in _krb5_pac_sign()
1123 CHECK(ret, krb5_store_uint32(sp, p->pac->numbuffers), out); in _krb5_pac_sign()
1124 CHECK(ret, krb5_store_uint32(sp, p->pac->version), out); in _krb5_pac_sign()
1126 ret = pac_header_size(context, p->pac->numbuffers, &end); in _krb5_pac_sign()
1130 for (i = 0; i < p->pac->numbuffers; i++) { in _krb5_pac_sign()
1137 if (p->pac->buffers[i].type == PAC_SERVER_CHECKSUM) { in _krb5_pac_sign()
1152 } else if (p->pac->buffers[i].type == PAC_PRIVSVR_CHECKSUM) { in _krb5_pac_sign()
1167 } else if (p->pac->buffers[i].type == PAC_LOGON_NAME) { in _krb5_pac_sign()
1174 len = p->pac->buffers[i].buffersize; in _krb5_pac_sign()
1175 ptr = (char *)p->data.data + p->pac->buffers[i].offset_lo; in _krb5_pac_sign()
1186 CHECK(ret, krb5_store_uint32(sp, p->pac->buffers[i].type), out); in _krb5_pac_sign()