2 Unix SMB/CIFS implementation.
4 routines for marshalling/unmarshalling special schannel structures
6 Copyright (C) Guenther Deschner 2009
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
23 #include "../librpc/gen_ndr/ndr_schannel.h"
24 #include "../librpc/ndr/ndr_schannel.h"
25 #include "../libcli/nbt/libnbt.h"
27 _PUBLIC_
void ndr_print_NL_AUTH_MESSAGE_BUFFER(struct ndr_print
*ndr
, const char *name
, const union NL_AUTH_MESSAGE_BUFFER
*r
)
30 level
= ndr_print_steal_switch_value(ndr
, r
);
32 case NL_FLAG_OEM_NETBIOS_DOMAIN_NAME
:
33 ndr_print_string(ndr
, name
, r
->a
);
36 case NL_FLAG_OEM_NETBIOS_COMPUTER_NAME
:
37 ndr_print_string(ndr
, name
, r
->a
);
40 case NL_FLAG_UTF8_DNS_DOMAIN_NAME
:
41 ndr_print_nbt_string(ndr
, name
, r
->u
);
44 case NL_FLAG_UTF8_DNS_HOST_NAME
:
45 ndr_print_nbt_string(ndr
, name
, r
->u
);
48 case NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME
:
49 ndr_print_nbt_string(ndr
, name
, r
->u
);
58 _PUBLIC_
void ndr_print_NL_AUTH_MESSAGE_BUFFER_REPLY(struct ndr_print
*ndr
, const char *name
, const union NL_AUTH_MESSAGE_BUFFER_REPLY
*r
)
61 level
= ndr_print_steal_switch_value(ndr
, r
);
63 case NL_NEGOTIATE_RESPONSE
:
64 ndr_print_uint32(ndr
, name
, r
->dummy
);
73 void dump_NL_AUTH_SIGNATURE(TALLOC_CTX
*mem_ctx
,
74 const DATA_BLOB
*blob
)
76 enum ndr_err_code ndr_err
;
77 uint16_t signature_algorithm
;
79 if (blob
->length
< 2) {
83 signature_algorithm
= SVAL(blob
->data
, 0);
85 switch (signature_algorithm
) {
86 case NL_SIGN_HMAC_MD5
: {
87 struct NL_AUTH_SIGNATURE r
;
88 ndr_err
= ndr_pull_struct_blob(blob
, mem_ctx
, &r
,
89 (ndr_pull_flags_fn_t
)ndr_pull_NL_AUTH_SIGNATURE
);
90 if (NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
91 NDR_PRINT_DEBUG(NL_AUTH_SIGNATURE
, &r
);
95 case NL_SIGN_HMAC_SHA256
: {
96 struct NL_AUTH_SHA2_SIGNATURE r
;
97 ndr_err
= ndr_pull_struct_blob(blob
, mem_ctx
, &r
,
98 (ndr_pull_flags_fn_t
)ndr_pull_NL_AUTH_SHA2_SIGNATURE
);
99 if (NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
100 NDR_PRINT_DEBUG(NL_AUTH_SHA2_SIGNATURE
, &r
);