diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-06-04 09:46:46 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:56:25 -0500 |
commit | 5165fec02e0e489ac63c3cb71bed31dea9fde644 (patch) | |
tree | f253af775d6151ef9e3eb5d01973f2f177febd19 /source4/rpc_server/dcerpc_server.h | |
parent | b0d4ed741f9fcb31ef124c1375db13cd6874131e (diff) | |
download | samba-5165fec02e0e489ac63c3cb71bed31dea9fde644.tar.gz samba-5165fec02e0e489ac63c3cb71bed31dea9fde644.tar.bz2 samba-5165fec02e0e489ac63c3cb71bed31dea9fde644.zip |
r1004: continue tridge's work on dcerpc server auth/crypto code
I made it much more generic, and we should be able to add a
module interface to this code, so that other DCERPC_AUTH types can be added
via modules...
metze
(This used to be commit d09abeb686c43c62322205689273d1b417113004)
Diffstat (limited to 'source4/rpc_server/dcerpc_server.h')
-rw-r--r-- | source4/rpc_server/dcerpc_server.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/source4/rpc_server/dcerpc_server.h b/source4/rpc_server/dcerpc_server.h index bdda8f252f..44726b5828 100644 --- a/source4/rpc_server/dcerpc_server.h +++ b/source4/rpc_server/dcerpc_server.h @@ -45,6 +45,7 @@ struct dcesrv_ep_description { struct dcesrv_connection; struct dcesrv_call_state; +struct dcesrv_auth; /* the dispatch functions for an interface take this form */ typedef NTSTATUS (*dcesrv_dispatch_fn_t)(struct dcesrv_call_state *, TALLOC_CTX *, void *); @@ -93,10 +94,30 @@ struct dcesrv_handle { void (*destroy)(struct dcesrv_connection *, struct dcesrv_handle *); }; +struct dcesrv_cyrpto_ops { + const char *name; + uint8 auth_type; + NTSTATUS (*start)(struct dcesrv_auth *auth); + NTSTATUS (*update)(struct dcesrv_auth *auth, TALLOC_CTX *out_mem_ctx, + const DATA_BLOB in, DATA_BLOB *out); + NTSTATUS (*seal)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx, + uint8_t *data, size_t length, DATA_BLOB *sig); + NTSTATUS (*sign)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx, + const uint8_t *data, size_t length, DATA_BLOB *sig); + NTSTATUS (*check_sig)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx, + const uint8_t *data, size_t length, const DATA_BLOB *sig); + NTSTATUS (*unseal)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx, + uint8_t *data, size_t length, DATA_BLOB *sig); + void (*end)(struct dcesrv_auth *auth); +}; + /* hold the authentication state information */ struct dcesrv_auth { - void *crypto_state; struct dcerpc_auth *auth_info; + struct { + void *private_data; + const struct dcesrv_cyrpto_ops *ops; + } crypto_ctx; }; |