Samba TODO

TEST:

Add
echo locDCpass1 | bin/rpcclient ncacn_np:$SERVER -UAdministrator -c getusername 

echo locDCpass1 | USER=administrator bin/rpcclient ncacn_np:$SERVER -c getusername

-> https://gitlab.com/samba-team/samba/-/merge_requests/1271

Migrate s3 client code to cli_credentials
-> https://gitlab.com/samba-team/samba/-/merge_requests/1362

SMB.CONF:

SMB_SIGNING_VALS="default|off|if_required|desired|required"
Create one function translating signing state string to enum
see set_cmdline_auth_info_signing_state and enum_smb_signing_vals

Add 'server smb encrypt' (done)
  -> smb encrypt as alias
Add 'client smb encrypt' (done)

smbclient -e => getop => lp_do_param(client smb encrypt) =>
cli_creds reads lp_client_smb_encrypt()


Add cli_credentials_set_smb_singing(),
cli_credentials_set_smb_ipc_signing(),
cli_credentials_set_smb_encryption(). - DONE

Use cli_creds smb encryption:
tig -7 b06e7ea5cbc0e46c0c42d6cdeb3a14f3cf21f1c6 - DONE



Check do_connect() in client.c


CMDLINE CLI:

-> parse popts

-> set password callback, if not --use-krb5-ccache and not
   --use-ccache and not --no-pass and not auth-file

--use-kerberos=yes|auto|no|default
   default only if we add 'client use kerberos' as smb.conf option

--use-krb5-ccache
  imply --use-kerberos=yes
--krb5-cache=$PATH - DONE

'-U... -k' =>
   --use-kerberos=yes
'-k' without -U =>
   --use-krb5-cache

--use-krb5-ccache and --use-ccache
=> not supported,
   TODO: --use-winbind-ccache that provides
         generic support for krb5 and ntlm
Rename --use-ccache to --use-winbind-ccache (removes --use-ccache?) - DONE

Add --smb-signing=$SMB_SIGNING_VALS
 also set GENSEC_FEATURE_SIGN for desired/required
 --signing=$SMB_SIGNING_VALS (as legacy)
 '-S $SMB_SIGNING_VALS' ??? (only smbclient?)
 '-S' check what smbtorture is actually using
Remove -S for signing and use only long option

Add --smb-encryption=$SMB_SIGNING_VALS
-e => --smb-encryption=required
      also set GENSEC_FEATURE_SEAL??? => defer to --gensec-protection
Remove -e and use only long option

Implemented --client-protection=off|sign|encrypt

TODO: what about 'net'...

break it and use options as above


Add the following???
--gensec-client-protection=[default,seal,sign,plain]
=> see also "ldap client sasl wrapping"
=> default from "gensec client protection"

LATER:
TODO: --use-pkinit


NEW TODO

popt pw-nt-hash

Remove smb_encrypt from client.c
Remove smb_encrypt from cli_cm_connect()

Add smb_cmdline_sanity(long_options)

POPT_COMMON_LEGACY_S3
POPT_COMMON_LEGACY_S4

client ldap sasl wrapping -> directly use gensec
add support for client-protection

Remove cli_credentials_set_machine_account_pending()