diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-03-10 10:16:49 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-03-10 10:16:49 +0000 |
commit | 8700645d5465babe0d0d095ff90c3d417690f080 (patch) | |
tree | d120c869b9fa43aa543636d8690c614632a937f6 /epan/dissectors/packet-gssapi.c | |
parent | 1564a2d2d33750ce7a3268d8b6134201a53a3946 (diff) | |
download | wireshark-8700645d5465babe0d0d095ff90c3d417690f080.tar.gz wireshark-8700645d5465babe0d0d095ff90c3d417690f080.tar.bz2 wireshark-8700645d5465babe0d0d095ff90c3d417690f080.zip |
add support to decrypt and dissect sign-and-sealed traffic.
(cifs: dc's talking to eachother and when longhorn comes out: anyone wanting to talk dce to a dc!)
((this is an incredibly advanced feature well worthy of mentioning in NEWS))
svn path=/trunk/; revision=13690
Diffstat (limited to 'epan/dissectors/packet-gssapi.c')
-rw-r--r-- | epan/dissectors/packet-gssapi.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/epan/dissectors/packet-gssapi.c b/epan/dissectors/packet-gssapi.c index 85d456edb3..38df659cb8 100644 --- a/epan/dissectors/packet-gssapi.c +++ b/epan/dissectors/packet-gssapi.c @@ -202,6 +202,7 @@ dissect_gssapi_work(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, goto done; } + if (!(cls == ASN1_APL && con == ASN1_CON && tag == 0)) { /* * If we do not recognise an Application class, @@ -458,6 +459,37 @@ int wrap_dissect_gssapi_verf(tvbuff_t *tvb, int offset, return dissect_gssapi_verf(auth_tvb, pinfo, tree); } +tvbuff_t * +wrap_dissect_gssapi_payload(tvbuff_t *data_tvb, + tvbuff_t *auth_tvb, + int offset, + packet_info *pinfo, + dcerpc_auth_info *auth_info) +{ + tvbuff_t *result; + + /* we need a full auth and a full data tvb or else we cant + decrypt anything + */ + if((!auth_tvb)||(!data_tvb)){ + return NULL; + } + + pinfo->decrypt_gssapi_tvb=DECRYPT_GSSAPI_DCE; + pinfo->gssapi_wrap_tvb=NULL; + pinfo->gssapi_encrypted_tvb=data_tvb; + pinfo->gssapi_decrypted_tvb=NULL; + dissect_gssapi_verf(auth_tvb, pinfo, NULL); + result=pinfo->gssapi_decrypted_tvb; + + pinfo->decrypt_gssapi_tvb=0; + pinfo->gssapi_wrap_tvb=NULL; + pinfo->gssapi_encrypted_tvb=NULL; + pinfo->gssapi_decrypted_tvb=NULL; + + return result; +} + static dcerpc_auth_subdissector_fns gssapi_auth_fns = { wrap_dissect_gssapi, /* Bind */ wrap_dissect_gssapi, /* Bind ACK */ |