spnego 3297 source3/include/proto.h ssize_t write_spnego_data(DATA_BLOB *blob, SPNEGO_DATA *spnego); spnego 3298 source3/include/proto.h bool free_spnego_data(SPNEGO_DATA *spnego); spnego 291 source3/libsmb/spnego.c ssize_t write_spnego_data(DATA_BLOB *blob, SPNEGO_DATA *spnego) spnego 301 source3/libsmb/spnego.c switch (spnego->type) { spnego 305 source3/libsmb/spnego.c write_negTokenInit(asn1, &spnego->negTokenInit); spnego 309 source3/libsmb/spnego.c write_negTokenTarg(asn1, &spnego->negTokenTarg); spnego 325 source3/libsmb/spnego.c bool free_spnego_data(SPNEGO_DATA *spnego) spnego 329 source3/libsmb/spnego.c if (!spnego) goto out; spnego 331 source3/libsmb/spnego.c switch(spnego->type) { spnego 333 source3/libsmb/spnego.c if (spnego->negTokenInit.mechTypes) { spnego 335 source3/libsmb/spnego.c for (i = 0; spnego->negTokenInit.mechTypes[i]; i++) { spnego 336 source3/libsmb/spnego.c talloc_free(CONST_DISCARD(char *,spnego->negTokenInit.mechTypes[i])); spnego 338 source3/libsmb/spnego.c talloc_free(spnego->negTokenInit.mechTypes); spnego 340 source3/libsmb/spnego.c data_blob_free(&spnego->negTokenInit.mechToken); spnego 341 source3/libsmb/spnego.c data_blob_free(&spnego->negTokenInit.mechListMIC); spnego 344 source3/libsmb/spnego.c if (spnego->negTokenTarg.supportedMech) { spnego 345 source3/libsmb/spnego.c talloc_free(spnego->negTokenTarg.supportedMech); spnego 347 source3/libsmb/spnego.c data_blob_free(&spnego->negTokenTarg.responseToken); spnego 348 source3/libsmb/spnego.c data_blob_free(&spnego->negTokenTarg.mechListMIC); spnego 354 source3/libsmb/spnego.c ZERO_STRUCTP(spnego); spnego 1062 source3/utils/ntlm_auth.c SPNEGO_DATA spnego; spnego 1069 source3/utils/ntlm_auth.c ZERO_STRUCT(spnego); spnego 1083 source3/utils/ntlm_auth.c spnego.type = SPNEGO_NEG_TOKEN_INIT; spnego 1084 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes = SMB_XMALLOC_ARRAY(const char *, 2); spnego 1086 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes[0] = smb_xstrdup(OID_KERBEROS5_OLD); spnego 1087 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes[1] = smb_xstrdup(OID_NTLMSSP); spnego 1088 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes[2] = NULL; spnego 1090 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes[0] = smb_xstrdup(OID_NTLMSSP); spnego 1091 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes[1] = NULL; spnego 1095 source3/utils/ntlm_auth.c spnego.negTokenInit.mechListMIC = data_blob(principal, spnego 1098 source3/utils/ntlm_auth.c len = write_spnego_data(&token, &spnego); spnego 1099 source3/utils/ntlm_auth.c free_spnego_data(&spnego); spnego 1364 source3/utils/ntlm_auth.c static bool manage_client_ntlmssp_init(SPNEGO_DATA spnego) spnego 1399 source3/utils/ntlm_auth.c spnego.type = SPNEGO_NEG_TOKEN_INIT; spnego 1400 source3/utils/ntlm_auth.c spnego.negTokenInit.mechTypes = my_mechs; spnego 1401 source3/utils/ntlm_auth.c spnego.negTokenInit.reqFlags = 0; spnego 1402 source3/utils/ntlm_auth.c spnego.negTokenInit.mechListMIC = null_blob; spnego 1405 source3/utils/ntlm_auth.c &spnego.negTokenInit.mechToken); spnego 1415 source3/utils/ntlm_auth.c write_spnego_data(&to_server, &spnego); spnego 1416 source3/utils/ntlm_auth.c data_blob_free(&spnego.negTokenInit.mechToken); spnego 1425 source3/utils/ntlm_auth.c static void manage_client_ntlmssp_targ(SPNEGO_DATA spnego) spnego 1441 source3/utils/ntlm_auth.c if (spnego.negTokenTarg.negResult == SPNEGO_REJECT) { spnego 1447 source3/utils/ntlm_auth.c if (spnego.negTokenTarg.negResult == SPNEGO_ACCEPT_COMPLETED) { spnego 1454 source3/utils/ntlm_auth.c spnego.negTokenTarg.responseToken, spnego 1468 source3/utils/ntlm_auth.c spnego.type = SPNEGO_NEG_TOKEN_TARG; spnego 1469 source3/utils/ntlm_auth.c spnego.negTokenTarg.negResult = SPNEGO_ACCEPT_INCOMPLETE; spnego 1470 source3/utils/ntlm_auth.c spnego.negTokenTarg.supportedMech = (char *)OID_NTLMSSP; spnego 1471 source3/utils/ntlm_auth.c spnego.negTokenTarg.responseToken = request; spnego 1472 source3/utils/ntlm_auth.c spnego.negTokenTarg.mechListMIC = null_blob; spnego 1474 source3/utils/ntlm_auth.c write_spnego_data(&to_server, &spnego); spnego 1486 source3/utils/ntlm_auth.c static bool manage_client_krb5_init(SPNEGO_DATA spnego) spnego 1498 source3/utils/ntlm_auth.c if ( (spnego.negTokenInit.mechListMIC.data == NULL) || spnego 1499 source3/utils/ntlm_auth.c (spnego.negTokenInit.mechListMIC.length == 0) ) { spnego 1505 source3/utils/ntlm_auth.c spnego.negTokenInit.mechListMIC.length+1); spnego 1512 source3/utils/ntlm_auth.c memcpy(principal, spnego.negTokenInit.mechListMIC.data, spnego 1513 source3/utils/ntlm_auth.c spnego.negTokenInit.mechListMIC.length); spnego 1514 source3/utils/ntlm_auth.c principal[spnego.negTokenInit.mechListMIC.length] = '\0'; spnego 1575 source3/utils/ntlm_auth.c static void manage_client_krb5_targ(SPNEGO_DATA spnego) spnego 1577 source3/utils/ntlm_auth.c switch (spnego.negTokenTarg.negResult) { spnego 1603 source3/utils/ntlm_auth.c SPNEGO_DATA spnego; spnego 1649 source3/utils/ntlm_auth.c len = read_spnego_data(talloc_tos(), request, &spnego); spnego 1658 source3/utils/ntlm_auth.c if (spnego.type == SPNEGO_NEG_TOKEN_INIT) { spnego 1662 source3/utils/ntlm_auth.c const char **mechType = (const char **)spnego.negTokenInit.mechTypes; spnego 1669 source3/utils/ntlm_auth.c if (manage_client_krb5_init(spnego)) spnego 1675 source3/utils/ntlm_auth.c if (manage_client_ntlmssp_init(spnego)) spnego 1687 source3/utils/ntlm_auth.c if (spnego.type == SPNEGO_NEG_TOKEN_TARG) { spnego 1689 source3/utils/ntlm_auth.c if (spnego.negTokenTarg.supportedMech == NULL) { spnego 1694 source3/utils/ntlm_auth.c switch (spnego.negTokenTarg.negResult) { spnego 1704 source3/utils/ntlm_auth.c spnego.negTokenTarg.negResult)); spnego 1714 source3/utils/ntlm_auth.c if (strcmp(spnego.negTokenTarg.supportedMech, spnego 1716 source3/utils/ntlm_auth.c manage_client_ntlmssp_targ(spnego); spnego 1721 source3/utils/ntlm_auth.c if (strcmp(spnego.negTokenTarg.supportedMech, spnego 1723 source3/utils/ntlm_auth.c manage_client_krb5_targ(spnego); spnego 1735 source3/utils/ntlm_auth.c free_spnego_data(&spnego); spnego 729 source4/auth/gensec/spnego.c struct spnego_data spnego; spnego 750 source4/auth/gensec/spnego.c len = spnego_read_data(gensec_security, in, &spnego); spnego 758 source4/auth/gensec/spnego.c if (spnego.type != spnego_state->expected_packet) { spnego 759 source4/auth/gensec/spnego.c DEBUG(1, ("Invalid SPNEGO request: %d, expected %d\n", spnego.type, spnego 762 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 769 source4/auth/gensec/spnego.c spnego.negTokenInit.mechTypes, spnego 770 source4/auth/gensec/spnego.c spnego.negTokenInit.mechToken, spnego 781 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 809 source4/auth/gensec/spnego.c len = spnego_read_data(gensec_security, in, &spnego); spnego 818 source4/auth/gensec/spnego.c if (spnego.type != spnego_state->expected_packet) { spnego 819 source4/auth/gensec/spnego.c DEBUG(1, ("Invalid SPNEGO request: %d, expected %d\n", spnego.type, spnego 822 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 826 source4/auth/gensec/spnego.c if (spnego.negTokenInit.targetPrincipal) { spnego 827 source4/auth/gensec/spnego.c DEBUG(5, ("Server claims it's principal name is %s\n", spnego.negTokenInit.targetPrincipal)); spnego 828 source4/auth/gensec/spnego.c gensec_set_target_principal(gensec_security, spnego.negTokenInit.targetPrincipal); spnego 834 source4/auth/gensec/spnego.c spnego.negTokenInit.mechTypes, spnego 835 source4/auth/gensec/spnego.c spnego.negTokenInit.mechToken, spnego 839 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 864 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 876 source4/auth/gensec/spnego.c len = spnego_read_data(gensec_security, in, &spnego); spnego 885 source4/auth/gensec/spnego.c if (spnego.type != spnego_state->expected_packet) { spnego 886 source4/auth/gensec/spnego.c DEBUG(1, ("Invalid SPNEGO request: %d, expected %d\n", spnego.type, spnego 889 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 895 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 901 source4/auth/gensec/spnego.c spnego.negTokenTarg.responseToken, spnego 903 source4/auth/gensec/spnego.c if (NT_STATUS_IS_OK(nt_status) && spnego.negTokenTarg.mechListMIC.length > 0) { spnego 911 source4/auth/gensec/spnego.c &spnego.negTokenTarg.mechListMIC); spnego 939 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 950 source4/auth/gensec/spnego.c len = spnego_read_data(gensec_security, in, &spnego); spnego 959 source4/auth/gensec/spnego.c if (spnego.type != spnego_state->expected_packet) { spnego 960 source4/auth/gensec/spnego.c DEBUG(1, ("Invalid SPNEGO request: %d, expected %d\n", spnego.type, spnego 963 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 967 source4/auth/gensec/spnego.c if (spnego.negTokenTarg.negResult == SPNEGO_REJECT) { spnego 968 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 973 source4/auth/gensec/spnego.c if ((spnego.negTokenTarg.negResult == SPNEGO_ACCEPT_INCOMPLETE) && spnego 974 source4/auth/gensec/spnego.c spnego.negTokenTarg.supportedMech && spnego 975 source4/auth/gensec/spnego.c strcmp(spnego.negTokenTarg.supportedMech, spnego_state->neg_oid) != 0) { spnego 977 source4/auth/gensec/spnego.c gensec_get_name_by_oid(gensec_security, spnego.negTokenTarg.supportedMech), spnego 985 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 990 source4/auth/gensec/spnego.c spnego.negTokenTarg.supportedMech); spnego 992 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 998 source4/auth/gensec/spnego.c spnego.negTokenTarg.responseToken, spnego 1000 source4/auth/gensec/spnego.c spnego_state->neg_oid = talloc_strdup(spnego_state, spnego.negTokenTarg.supportedMech); spnego 1002 source4/auth/gensec/spnego.c if (spnego.negTokenTarg.negResult != SPNEGO_ACCEPT_COMPLETED) { spnego 1005 source4/auth/gensec/spnego.c } else if (spnego.negTokenTarg.responseToken.length) { spnego 1011 source4/auth/gensec/spnego.c if (NT_STATUS_IS_OK(nt_status) && spnego.negTokenTarg.mechListMIC.length > 0) { spnego 1018 source4/auth/gensec/spnego.c &spnego.negTokenTarg.mechListMIC); spnego 1029 source4/auth/gensec/spnego.c spnego.negTokenTarg.responseToken, spnego 1054 source4/auth/gensec/spnego.c spnego_free_data(&spnego); spnego 1084 source4/auth/gensec/spnego.c if (spnego.negTokenTarg.negResult != SPNEGO_ACCEPT_COMPLETED) { spnego 313 source4/auth/gensec/spnego_parse.c ssize_t spnego_write_data(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct spnego_data *spnego) spnego 322 source4/auth/gensec/spnego_parse.c switch (spnego->type) { spnego 326 source4/auth/gensec/spnego_parse.c write_negTokenInit(asn1, &spnego->negTokenInit); spnego 330 source4/auth/gensec/spnego_parse.c write_negTokenTarg(asn1, &spnego->negTokenTarg); spnego 346 source4/auth/gensec/spnego_parse.c bool spnego_free_data(struct spnego_data *spnego) spnego 350 source4/auth/gensec/spnego_parse.c if (!spnego) goto out; spnego 352 source4/auth/gensec/spnego_parse.c switch(spnego->type) { spnego 354 source4/auth/gensec/spnego_parse.c if (spnego->negTokenInit.mechTypes) { spnego 355 source4/auth/gensec/spnego_parse.c talloc_free(spnego->negTokenInit.mechTypes); spnego 357 source4/auth/gensec/spnego_parse.c data_blob_free(&spnego->negTokenInit.mechToken); spnego 358 source4/auth/gensec/spnego_parse.c data_blob_free(&spnego->negTokenInit.mechListMIC); spnego 359 source4/auth/gensec/spnego_parse.c talloc_free(spnego->negTokenInit.targetPrincipal); spnego 362 source4/auth/gensec/spnego_parse.c if (spnego->negTokenTarg.supportedMech) { spnego 363 source4/auth/gensec/spnego_parse.c talloc_free(discard_const(spnego->negTokenTarg.supportedMech)); spnego 365 source4/auth/gensec/spnego_parse.c data_blob_free(&spnego->negTokenTarg.responseToken); spnego 366 source4/auth/gensec/spnego_parse.c data_blob_free(&spnego->negTokenTarg.mechListMIC); spnego 372 source4/auth/gensec/spnego_parse.c ZERO_STRUCTP(spnego); spnego 130 source4/libcli/raw/clisession.c SSVAL(req->out.vwv, VWV(2), parms->spnego.in.bufsize); spnego 131 source4/libcli/raw/clisession.c SSVAL(req->out.vwv, VWV(3), parms->spnego.in.mpx_max); spnego 132 source4/libcli/raw/clisession.c SSVAL(req->out.vwv, VWV(4), parms->spnego.in.vc_num); spnego 133 source4/libcli/raw/clisession.c SIVAL(req->out.vwv, VWV(5), parms->spnego.in.sesskey); spnego 134 source4/libcli/raw/clisession.c SSVAL(req->out.vwv, VWV(7), parms->spnego.in.secblob.length); spnego 136 source4/libcli/raw/clisession.c SIVAL(req->out.vwv, VWV(10), parms->spnego.in.capabilities); spnego 137 source4/libcli/raw/clisession.c smbcli_req_append_blob(req, &parms->spnego.in.secblob); spnego 138 source4/libcli/raw/clisession.c smbcli_req_append_string(req, parms->spnego.in.os, STR_TERMINATE); spnego 139 source4/libcli/raw/clisession.c smbcli_req_append_string(req, parms->spnego.in.lanman, STR_TERMINATE); spnego 140 source4/libcli/raw/clisession.c smbcli_req_append_string(req, parms->spnego.in.workgroup, STR_TERMINATE); spnego 206 source4/libcli/raw/clisession.c ZERO_STRUCT(parms->spnego.out); spnego 207 source4/libcli/raw/clisession.c parms->spnego.out.vuid = SVAL(req->in.hdr, HDR_UID); spnego 208 source4/libcli/raw/clisession.c parms->spnego.out.action = SVAL(req->in.vwv, VWV(2)); spnego 215 source4/libcli/raw/clisession.c parms->spnego.out.secblob = smbcli_req_pull_blob(&req->in.bufinfo, mem_ctx, p, len); spnego 216 source4/libcli/raw/clisession.c p += parms->spnego.out.secblob.length; spnego 217 source4/libcli/raw/clisession.c p += smbcli_req_pull_string(&req->in.bufinfo, mem_ctx, &parms->spnego.out.os, p, -1, STR_TERMINATE); spnego 218 source4/libcli/raw/clisession.c p += smbcli_req_pull_string(&req->in.bufinfo, mem_ctx, &parms->spnego.out.lanman, p, -1, STR_TERMINATE); spnego 219 source4/libcli/raw/clisession.c p += smbcli_req_pull_string(&req->in.bufinfo, mem_ctx, &parms->spnego.out.workgroup, p, -1, STR_TERMINATE); spnego 379 source4/libcli/raw/interfaces.h } spnego; spnego 151 source4/libcli/smb_composite/sesssetup.c state->io->out.vuid = state->setup.spnego.out.vuid; spnego 181 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.out.secblob, spnego 182 source4/libcli/smb_composite/sesssetup.c &state->setup.spnego.in.secblob); spnego 189 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.secblob = data_blob(NULL, 0); spnego 193 source4/libcli/smb_composite/sesssetup.c if (state->setup.spnego.in.secblob.length) { spnego 204 source4/libcli/smb_composite/sesssetup.c if (state->setup.spnego.in.secblob.length) { spnego 398 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.level = RAW_SESSSETUP_SPNEGO; spnego 399 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.bufsize = session->transport->options.max_xmit; spnego 400 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.mpx_max = session->transport->options.max_mux; spnego 401 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.vc_num = 1; spnego 402 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.sesskey = io->in.sesskey; spnego 403 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.capabilities = io->in.capabilities; spnego 404 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.os = "Unix"; spnego 405 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.lanman = talloc_asprintf(state, "Samba %s", SAMBA_VERSION_STRING); spnego 406 source4/libcli/smb_composite/sesssetup.c state->setup.spnego.in.workgroup = io->in.workgroup; spnego 468 source4/libcli/smb_composite/sesssetup.c &state->setup.spnego.in.secblob); spnego 472 source4/libcli/smb_composite/sesssetup.c &state->setup.spnego.in.secblob); spnego 1831 source4/smb_server/smb/reply.c smbsrv_setup_reply(req, 4, io->spnego.out.secblob.length); spnego 1839 source4/smb_server/smb/reply.c SSVAL(req->out.vwv, VWV(2), io->spnego.out.action); spnego 1840 source4/smb_server/smb/reply.c SSVAL(req->out.vwv, VWV(3), io->spnego.out.secblob.length); spnego 1842 source4/smb_server/smb/reply.c SSVAL(req->out.hdr, HDR_UID, io->spnego.out.vuid); spnego 1844 source4/smb_server/smb/reply.c memcpy(req->out.data, io->spnego.out.secblob.data, io->spnego.out.secblob.length); spnego 1845 source4/smb_server/smb/reply.c req_push_str(req, NULL, io->spnego.out.os, -1, STR_TERMINATE); spnego 1846 source4/smb_server/smb/reply.c req_push_str(req, NULL, io->spnego.out.lanman, -1, STR_TERMINATE); spnego 1847 source4/smb_server/smb/reply.c req_push_str(req, NULL, io->spnego.out.workgroup, -1, STR_TERMINATE); spnego 1963 source4/smb_server/smb/reply.c io->spnego.level = RAW_SESSSETUP_SPNEGO; spnego 1966 source4/smb_server/smb/reply.c io->spnego.in.bufsize = SVAL(req->in.vwv, VWV(2)); spnego 1967 source4/smb_server/smb/reply.c io->spnego.in.mpx_max = SVAL(req->in.vwv, VWV(3)); spnego 1968 source4/smb_server/smb/reply.c io->spnego.in.vc_num = SVAL(req->in.vwv, VWV(4)); spnego 1969 source4/smb_server/smb/reply.c io->spnego.in.sesskey = IVAL(req->in.vwv, VWV(5)); spnego 1971 source4/smb_server/smb/reply.c io->spnego.in.capabilities = IVAL(req->in.vwv, VWV(10)); spnego 1974 source4/smb_server/smb/reply.c if (!req_pull_blob(&req->in.bufinfo, p, blob_len, &io->spnego.in.secblob)) { spnego 1980 source4/smb_server/smb/reply.c p += req_pull_string(&req->in.bufinfo, &io->spnego.in.os, p, -1, STR_TERMINATE); spnego 1981 source4/smb_server/smb/reply.c p += req_pull_string(&req->in.bufinfo, &io->spnego.in.lanman, p, -1, STR_TERMINATE); spnego 1982 source4/smb_server/smb/reply.c p += req_pull_string(&req->in.bufinfo, &io->spnego.in.workgroup, p, -1, STR_TERMINATE); spnego 303 source4/smb_server/smb/sesssetup.c status = gensec_update_recv(greq, req, &sess->spnego.out.secblob); spnego 326 source4/smb_server/smb/sesssetup.c sess->spnego.out.vuid = smb_sess->vuid; spnego 346 source4/smb_server/smb/sesssetup.c sess->spnego.out.vuid = 0; spnego 347 source4/smb_server/smb/sesssetup.c sess->spnego.out.action = 0; spnego 350 source4/smb_server/smb/sesssetup.c &sess->spnego.out.os, spnego 351 source4/smb_server/smb/sesssetup.c &sess->spnego.out.lanman, spnego 352 source4/smb_server/smb/sesssetup.c &sess->spnego.out.workgroup); spnego 355 source4/smb_server/smb/sesssetup.c req->smb_conn->negotiate.max_send = sess->spnego.in.bufsize; spnego 356 source4/smb_server/smb/sesssetup.c req->smb_conn->negotiate.client_caps = sess->spnego.in.capabilities; spnego 412 source4/smb_server/smb/sesssetup.c gensec_update_send(smb_sess->gensec_ctx, sess->spnego.in.secblob,