From 53079da638e6e45e9e0a352f532e05073e60d3fb Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 25 Apr 2005 03:37:37 +0000 Subject: r6454: Start to migrate NTLMSSP away from it's own API to just use GENSEC. The aim here is to remove the extra layer of abstraction, and to then use the credentials code directly in the NTLMSSP layer. Andrew Bartlett (This used to be commit b14c530dfd3e56975dea7e30aa8d62d4f2827700) --- source4/torture/auth/ntlmssp.c | 45 +++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) (limited to 'source4/torture') diff --git a/source4/torture/auth/ntlmssp.c b/source4/torture/auth/ntlmssp.c index 5d8db9030d..6fb07914dd 100644 --- a/source4/torture/auth/ntlmssp.c +++ b/source4/torture/auth/ntlmssp.c @@ -1,6 +1,6 @@ /* Unix SMB/CIFS implementation. - basic raw test suite for change notify + Small self-tests for the NTLMSSP code Copyright (C) Andrew Bartlett 2004 This program is free software; you can redistribute it and/or modify @@ -20,18 +20,34 @@ #include "includes.h" #include "auth/auth.h" +#include "lib/cmdline/popt_common.h" BOOL torture_ntlmssp_self_check(void) { + struct gensec_security *gensec_security; struct ntlmssp_state *ntlmssp_state; + struct gensec_ntlmssp_state *gensec_ntlmssp_state; DATA_BLOB data; DATA_BLOB sig, expected_sig; NTSTATUS status; - if (!NT_STATUS_IS_OK(ntlmssp_client_start(NULL, &ntlmssp_state))) { + status = gensec_client_start(NULL, &gensec_security); + + if (!NT_STATUS_IS_OK(status)) { + return False; + } + + gensec_set_credentials(gensec_security, cmdline_credentials); + + status = gensec_start_mech_by_oid(gensec_security, GENSEC_OID_NTLMSSP); + + if (!NT_STATUS_IS_OK(status)) { return False; } + gensec_ntlmssp_state = gensec_security->private_data; + ntlmssp_state = gensec_ntlmssp_state->ntlmssp_state; + ntlmssp_state->session_key = strhex_to_data_blob("0102030405060708090a0b0c0d0e0f00"); dump_data_pw("NTLMSSP session key: \n", ntlmssp_state->session_key.data, @@ -46,8 +62,8 @@ BOOL torture_ntlmssp_self_check(void) } data = strhex_to_data_blob("6a43494653"); - ntlmssp_sign_packet(ntlmssp_state, ntlmssp_state, - data.data, data.length, data.data, data.length, &sig); + gensec_ntlmssp_sign_packet(gensec_security, gensec_security, + data.data, data.length, data.data, data.length, &sig); expected_sig = strhex_to_data_blob("01000000e37f97f2544f4d7e00000000"); @@ -63,12 +79,25 @@ BOOL torture_ntlmssp_self_check(void) return False; } - ntlmssp_end(&ntlmssp_state); + talloc_free(gensec_security); - if (!NT_STATUS_IS_OK(ntlmssp_client_start(NULL, &ntlmssp_state))) { + status = gensec_client_start(NULL, &gensec_security); + + if (!NT_STATUS_IS_OK(status)) { + return False; + } + + gensec_set_credentials(gensec_security, cmdline_credentials); + + status = gensec_start_mech_by_oid(gensec_security, GENSEC_OID_NTLMSSP); + + if (!NT_STATUS_IS_OK(status)) { return False; } + gensec_ntlmssp_state = gensec_security->private_data; + ntlmssp_state = gensec_ntlmssp_state->ntlmssp_state; + ntlmssp_state->session_key = strhex_to_data_blob("0102030405e538b0"); dump_data_pw("NTLMSSP session key: \n", ntlmssp_state->session_key.data, @@ -83,7 +112,7 @@ BOOL torture_ntlmssp_self_check(void) } data = strhex_to_data_blob("6a43494653"); - ntlmssp_sign_packet(ntlmssp_state, ntlmssp_state, + gensec_ntlmssp_sign_packet(gensec_security, gensec_security, data.data, data.length, data.data, data.length, &sig); expected_sig = strhex_to_data_blob("0100000078010900397420fe0e5a0f89"); @@ -100,5 +129,7 @@ BOOL torture_ntlmssp_self_check(void) return False; } + talloc_free(gensec_security); + return True; } -- cgit