2 Unix SMB/CIFS implementation.
3 test suite for drsblobs ndr operations
5 Copyright (C) Guenther Deschner 2010
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include "torture/ndr/ndr.h"
23 #include "librpc/gen_ndr/ndr_drsblobs.h"
25 static const uint8_t forest_trust_info_data_out
[] = {
26 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
27 0x00, 0x00, 0x00, 0x00, 0x3e, 0xca, 0xca, 0x01, 0x00, 0xaf, 0xd5, 0x9b,
28 0x00, 0x07, 0x00, 0x00, 0x00, 0x66, 0x32, 0x2e, 0x74, 0x65, 0x73, 0x74,
29 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xca, 0xca, 0x01,
30 0x00, 0xaf, 0xd5, 0x9b, 0x02, 0x18, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00,
31 0x00, 0x00, 0x00, 0x00, 0x05, 0x15, 0x00, 0x00, 0x00, 0x68, 0x4a, 0x64,
32 0x28, 0xac, 0x88, 0xa2, 0x74, 0x17, 0x3e, 0x2d, 0x8f, 0x07, 0x00, 0x00,
33 0x00, 0x66, 0x32, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x02, 0x00, 0x00, 0x00,
37 static bool forest_trust_info_check_out(struct torture_context
*tctx
,
38 struct ForestTrustInfo
*r
)
40 torture_assert_int_equal(tctx
, r
->version
, 1, "version");
41 torture_assert_int_equal(tctx
, r
->count
, 2, "count");
42 torture_assert_int_equal(tctx
, r
->records
[0].record_size
, 0x00000018, "record size");
43 torture_assert_int_equal(tctx
, r
->records
[0].record
.flags
, 0, "record flags");
44 torture_assert_u64_equal(tctx
, r
->records
[0].record
.timestamp
, 0x9BD5AF0001CACA3EULL
, "record timestamp");
45 torture_assert_int_equal(tctx
, r
->records
[0].record
.type
, FOREST_TRUST_TOP_LEVEL_NAME
, "record type");
46 torture_assert_int_equal(tctx
, r
->records
[0].record
.data
.name
.size
, 7, "record name size");
47 torture_assert_str_equal(tctx
, r
->records
[0].record
.data
.name
.string
, "f2.test", "record name string");
48 torture_assert_int_equal(tctx
, r
->records
[1].record_size
, 0x0000003a, "record size");
49 torture_assert_int_equal(tctx
, r
->records
[1].record
.flags
, 0, "record flags");
50 torture_assert_u64_equal(tctx
, r
->records
[1].record
.timestamp
, 0x9BD5AF0001CACA3EULL
, "record timestamp");
51 torture_assert_int_equal(tctx
, r
->records
[1].record
.type
, FOREST_TRUST_DOMAIN_INFO
, "record type");
52 torture_assert_int_equal(tctx
, r
->records
[1].record
.data
.info
.sid_size
, 0x00000018, "record info sid_size");
53 torture_assert_sid_equal(tctx
, &r
->records
[1].record
.data
.info
.sid
, dom_sid_parse_talloc(tctx
, "S-1-5-21-677661288-1956808876-2402106903"), "record info sid");
54 torture_assert_int_equal(tctx
, r
->records
[1].record
.data
.info
.dns_name
.size
, 7, "record name size");
55 torture_assert_str_equal(tctx
, r
->records
[1].record
.data
.info
.dns_name
.string
, "f2.test", "record info dns_name string");
56 torture_assert_int_equal(tctx
, r
->records
[1].record
.data
.info
.netbios_name
.size
, 2, "record info netbios_name size");
57 torture_assert_str_equal(tctx
, r
->records
[1].record
.data
.info
.netbios_name
.string
, "F2", "record info netbios_name string");
62 static const uint8_t trust_domain_passwords_in
[] = {
63 0x34, 0x1f, 0x6e, 0xcd, 0x5f, 0x14, 0x99, 0xf9, 0xd8, 0x34, 0x9f, 0x1d,
64 0x1c, 0xcf, 0x1f, 0x02, 0xb8, 0x30, 0xcc, 0x77, 0x21, 0xc1, 0xf3, 0xe2,
65 0xcf, 0x32, 0xe7, 0xf7, 0x86, 0x49, 0x28, 0xa0, 0x57, 0x81, 0xa0, 0x72,
66 0x95, 0xd5, 0xa7, 0x49, 0xd7, 0xe7, 0x6f, 0xd1, 0x56, 0x91, 0x44, 0xb7,
67 0xe2, 0x4e, 0x48, 0xd2, 0x3e, 0x39, 0xfe, 0x79, 0xd9, 0x1d, 0x4a, 0x92,
68 0xc7, 0xbb, 0xe3, 0x65, 0x38, 0x28, 0xb3, 0xb5, 0x6d, 0x1a, 0xfc, 0xf9,
69 0xd1, 0xe9, 0xc0, 0x8a, 0x52, 0x5a, 0x86, 0xc1, 0x60, 0x45, 0x85, 0xaa,
70 0x20, 0xd8, 0xb4, 0x1f, 0x67, 0x6e, 0xe9, 0xc8, 0xed, 0x52, 0x08, 0x65,
71 0xd2, 0x5a, 0x3c, 0xb8, 0xdd, 0x5d, 0xef, 0x59, 0x54, 0x90, 0x75, 0x35,
72 0x23, 0x12, 0x92, 0xac, 0xf1, 0x76, 0xb0, 0x16, 0x3d, 0xd8, 0xea, 0x96,
73 0xd1, 0xd5, 0x27, 0x37, 0xbe, 0xb8, 0x30, 0x60, 0xab, 0xda, 0x21, 0xc1,
74 0x61, 0x66, 0x85, 0xbc, 0x4b, 0xf2, 0x0d, 0x8d, 0x28, 0x1f, 0x02, 0x1c,
75 0xcf, 0x39, 0x99, 0x14, 0x6b, 0x1a, 0x59, 0x66, 0x8d, 0x9f, 0x6f, 0x5a,
76 0x3d, 0x3d, 0xb4, 0x1e, 0x7d, 0xf4, 0xc3, 0xc6, 0xed, 0xed, 0x87, 0xb1,
77 0x35, 0x08, 0xf7, 0x7f, 0x61, 0x00, 0x4b, 0x0d, 0xa7, 0xb7, 0x59, 0x53,
78 0xc3, 0x97, 0x55, 0xf9, 0x86, 0x2e, 0x29, 0x6d, 0x00, 0x38, 0xde, 0xe1,
79 0x80, 0x37, 0xf4, 0xcb, 0x8d, 0x0d, 0x0d, 0x1f, 0x1c, 0x99, 0xf1, 0x24,
80 0x61, 0x14, 0x6b, 0x1a, 0xd9, 0x31, 0xc8, 0x6e, 0xd6, 0x98, 0xab, 0xdb,
81 0xb8, 0xaf, 0x99, 0xf9, 0xf4, 0x4c, 0xfe, 0x4b, 0x0d, 0xbb, 0x4f, 0xcc,
82 0x63, 0xd3, 0xf0, 0x0c, 0xd1, 0xd6, 0x11, 0x30, 0x68, 0x45, 0x98, 0x07,
83 0x44, 0x80, 0xca, 0xa4, 0x7b, 0x10, 0x5b, 0x0b, 0x33, 0xb6, 0x8c, 0xa4,
84 0x8f, 0xf1, 0x2b, 0xbf, 0xa2, 0x22, 0xd7, 0xcc, 0x92, 0x34, 0x0b, 0xa0,
85 0x05, 0xdf, 0x2f, 0xe3, 0x66, 0x0d, 0x9f, 0x09, 0x84, 0xdb, 0x0b, 0x3a,
86 0xfa, 0xd5, 0xa7, 0x1c, 0x46, 0x01, 0xa0, 0x3c, 0x02, 0x8a, 0x6d, 0xec,
87 0x97, 0xc1, 0x7c, 0x2f, 0x7e, 0x5d, 0x55, 0x27, 0x37, 0x59, 0x31, 0x64,
88 0xe9, 0xc9, 0xd6, 0xfd, 0x8f, 0xf9, 0x59, 0xe7, 0x11, 0x30, 0x4c, 0x76,
89 0xb0, 0xe7, 0xee, 0xe9, 0xf7, 0xa2, 0x0f, 0x71, 0x90, 0xdb, 0x1d, 0xb0,
90 0xfb, 0xa3, 0x25, 0xf8, 0x0a, 0x6c, 0x69, 0x5c, 0x21, 0xa6, 0xfb, 0x90,
91 0x5b, 0x9d, 0x14, 0xe4, 0xea, 0x32, 0xe8, 0xe0, 0x2b, 0x5a, 0x99, 0x0b,
92 0xbb, 0x7e, 0x14, 0x6b, 0x36, 0x42, 0x41, 0x0f, 0x44, 0x2f, 0x7f, 0xcf,
93 0x1f, 0x89, 0x04, 0xdc, 0x07, 0x2a, 0x57, 0xdf, 0xdd, 0x42, 0x78, 0xf0,
94 0x8d, 0x9f, 0x02, 0x1d, 0xaf, 0xff, 0x4f, 0xb2, 0x1e, 0xb4, 0x0b, 0xb2,
95 0x4d, 0x7a, 0xdc, 0xf3, 0x7e, 0x81, 0xbb, 0x6b, 0x2e, 0x29, 0x24, 0x61,
96 0x93, 0x1e, 0x20, 0x57, 0x66, 0x20, 0xcf, 0x4d, 0x67, 0x76, 0xb0, 0x7b,
97 0xd9, 0x9d, 0x30, 0x95, 0xba, 0xb0, 0xcc, 0xf6, 0xcc, 0xff, 0xea, 0x32,
98 0x55, 0x15, 0xcd, 0xdf, 0xaf, 0xf6, 0x16, 0xd1, 0x1f, 0x6f, 0xb7, 0xda,
99 0x1a, 0x75, 0xc7, 0x4f, 0xb1, 0xeb, 0x1a, 0xe2, 0x17, 0x8b, 0xe8, 0x5f,
100 0x41, 0x74, 0x5f, 0x41, 0xe0, 0x46, 0x08, 0x9a, 0xc6, 0x81, 0x19, 0x26,
101 0xcd, 0x60, 0xb2, 0x3a, 0x7a, 0x39, 0x2b, 0xee, 0x83, 0x8e, 0xdb, 0x83,
102 0x6b, 0x48, 0x24, 0x73, 0x91, 0x31, 0x64, 0xce, 0x2e, 0x43, 0x32, 0xb2,
103 0xcd, 0x60, 0x98, 0x87, 0xa9, 0x9b, 0xc3, 0x60, 0x7c, 0xa7, 0x52, 0x3e,
104 0xb8, 0x28, 0x4d, 0xcd, 0x5f, 0xaf, 0xe3, 0xe6, 0xa0, 0x06, 0x93, 0xfb,
105 0xd9, 0xd4, 0x2b, 0x52, 0xed, 0xec, 0x97, 0x3a, 0x01, 0x00, 0x00, 0x00,
106 0x0c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x4c, 0x6b, 0x41, 0xb6,
107 0x7c, 0x16, 0xcb, 0x01, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
108 0xb6, 0xe4, 0x4e, 0xa0, 0xf4, 0xed, 0x90, 0x9d, 0x67, 0xff, 0xda, 0xda,
109 0xc7, 0xe5, 0xaf, 0xc7, 0x4d, 0xc1, 0x58, 0xaf, 0x5f, 0x06, 0x5c, 0xe9,
110 0x4c, 0x5a, 0x02, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
111 0x38, 0x00, 0x00, 0x00, 0x4c, 0x6b, 0x41, 0xb6, 0x7c, 0x16, 0xcb, 0x01,
112 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xb6, 0xe4, 0x4e, 0xa0,
113 0xf4, 0xed, 0x90, 0x9d, 0x67, 0xff, 0xda, 0xda, 0xc7, 0xe5, 0xaf, 0xc7,
114 0x4d, 0xc1, 0x58, 0xaf, 0x5f, 0x06, 0x5c, 0xe9, 0x4c, 0x5a, 0x02, 0xfd,
115 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00
118 static bool trust_domain_passwords_check_in(struct torture_context
*tctx
,
119 struct trustDomainPasswords
*r
)
121 /* torture_assert_mem_equal(tctx, r->confounder, trust_domain_passwords_in, 512, "confounder mismatch"); */
123 torture_assert_int_equal(tctx
, r
->outgoing
.count
, 1, "outgoing count mismatch");
124 torture_assert_int_equal(tctx
, r
->outgoing
.current_offset
, 0x0000000c, "outgoing current offset mismatch");
125 torture_assert_int_equal(tctx
, r
->outgoing
.previous_offset
, 0x00000038, "outgoing previous offset mismatch");
127 torture_assert_int_equal(tctx
, r
->outgoing
.current
.count
, 1, "outgoing current count mismatch");
128 torture_assert_int_equal(tctx
, r
->outgoing
.current
.array
[0].LastUpdateTime
, 0xB6416B4C, "outgoing current last update time mismatch");
129 torture_assert_int_equal(tctx
, r
->outgoing
.current
.array
[0].AuthType
, TRUST_AUTH_TYPE_CLEAR
, "outgoing current auth type mismatch");
130 torture_assert_int_equal(tctx
, r
->outgoing
.current
.array
[0].AuthInfo
.clear
.size
, 0x0000001c, "outgoing current auth info size mismatch");
131 /* torture_assert_mem_equal(tctx, r->outgoing.current.array[0].AuthInfo.clear.password, trust_domain_passwords_in+512+12+8+4+4, 0x0000001c, "outgoing current auth info password mismatch"); */
133 torture_assert_int_equal(tctx
, r
->outgoing
.previous
.count
, 0, "outgoing previous count mismatch");
135 torture_assert_int_equal(tctx
, r
->incoming
.count
, 1, "incoming count mismatch");
136 torture_assert_int_equal(tctx
, r
->incoming
.current_offset
, 0x0000000c, "incoming current offset mismatch");
137 torture_assert_int_equal(tctx
, r
->incoming
.previous_offset
, 0x00000038, "incoming previous offset mismatch");
139 torture_assert_int_equal(tctx
, r
->incoming
.current
.count
, 1, "incoming current count mismatch");
140 torture_assert_int_equal(tctx
, r
->incoming
.current
.array
[0].LastUpdateTime
, 0xB6416B4C, "incoming current last update time mismatch");
141 torture_assert_int_equal(tctx
, r
->incoming
.current
.array
[0].AuthType
, TRUST_AUTH_TYPE_CLEAR
, "incoming current auth type mismatch");
142 torture_assert_int_equal(tctx
, r
->incoming
.current
.array
[0].AuthInfo
.clear
.size
, 0x0000001c, "incoming current auth info size mismatch");
143 /* torture_assert_mem_equal(tctx, r->incoming.current.array[0].AuthInfo.clear.password, trust_domain_passwords_in+512+12+8+4+4+0x0000001c+12+8+4+4, 0x0000001c, "incoming current auth info password mismatch"); */
145 torture_assert_int_equal(tctx
, r
->incoming
.previous
.count
, 0, "incoming previous count mismatch");
147 torture_assert_int_equal(tctx
, r
->outgoing_size
, 0x00000038, "outgoing size mismatch");
148 torture_assert_int_equal(tctx
, r
->incoming_size
, 0x00000038, "incoming size mismatch");
153 struct torture_suite
*ndr_drsblobs_suite(TALLOC_CTX
*ctx
)
155 struct torture_suite
*suite
= torture_suite_create(ctx
, "drsblobs");
157 torture_suite_add_ndr_pull_fn_test(suite
, ForestTrustInfo
, forest_trust_info_data_out
, NDR_IN
, forest_trust_info_check_out
);
158 torture_suite_add_ndr_pull_fn_test(suite
, trustDomainPasswords
, trust_domain_passwords_in
, NDR_IN
, trust_domain_passwords_check_in
);