xref: /openbsd/regress/lib/libradius/test11.c (revision d415bd75)
1 #include "incs.h"
2 
3 #include <openssl/md5.h>
4 
5 /*
6  * accounting request authenticator
7  */
8 
9 void test11(void)
10 {
11 	RADIUS_PACKET *packet;
12 	MD5_CTX ctx;
13 
14 	uint8_t packetdata[] = {
15 		RADIUS_CODE_ACCOUNTING_REQUEST, 0x7f, 0, 31,
16 		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* auth */
17 		10, 11, 'f', 'o', 'o', 'b', 'a', 'r', 'b', 'a', 'z',
18 	};
19 
20 	packet = radius_new_request_packet(RADIUS_CODE_ACCOUNTING_REQUEST);
21 	radius_set_id(packet, 0x7f);
22 	radius_put_string_attr(packet, 10, "foobarbaz");
23 	radius_set_accounting_request_authenticator(packet, "sharedsecret");
24 
25 	MD5_Init(&ctx);
26 	MD5_Update(&ctx, packetdata, sizeof(packetdata));
27 	MD5_Update(&ctx, "sharedsecret", 12);
28 	MD5_Final(packetdata + 4, &ctx);
29 
30 	CHECK(radius_get_length(packet) == sizeof(packetdata));
31 	CHECK(memcmp(radius_get_data(packet), packetdata, sizeof(packetdata)) == 0);
32 	CHECK(radius_check_accounting_request_authenticator(packet, "sharedsecret") == 0);
33 
34 	radius_set_raw_attr(packet, 10, "zapzapzap", 9);
35 	CHECK(radius_check_accounting_request_authenticator(packet, "sharedsecret") != 0);
36 }
37 
38 ADD_TEST(test11)
39