s3:utils: Fix the auth function to print correct values to the user
[Samba.git] / source4 / kdc / kdc-glue.c
blob86c1eb5395f36b4bb1fa02194f580aa8dacb9a81
1 /*
2 Unix SMB/CIFS implementation.
4 PAC Glue between Samba and the KDC
6 Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005-2009
7 Copyright (C) Simo Sorce <idra@samba.org> 2010
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include "includes.h"
25 #include "system/kerberos.h"
26 #include "auth/kerberos/kerberos.h"
27 #include <hdb.h>
28 #include "kdc/samba_kdc.h"
29 #include "kdc/pac-glue.h"
30 #include "librpc/gen_ndr/ndr_krb5pac.h"
31 #include "auth/kerberos/pac_utils.h"
32 #include "kdc/kdc-glue.h"
34 #undef DBGC_CLASS
35 #define DBGC_CLASS DBGC_KERBEROS
37 int kdc_check_pac(krb5_context context,
38 DATA_BLOB srv_sig,
39 struct PAC_SIGNATURE_DATA *kdc_sig,
40 hdb_entry *ent)
42 krb5_enctype etype;
43 int ret;
44 krb5_keyblock keyblock;
45 Key *key;
47 if (kdc_sig->type == CKSUMTYPE_HMAC_MD5) {
48 etype = ENCTYPE_ARCFOUR_HMAC;
49 } else {
50 ret = krb5_cksumtype_to_enctype(context,
51 kdc_sig->type,
52 &etype);
53 if (ret != 0) {
54 return ret;
58 ret = hdb_enctype2key(context, ent, NULL, etype, &key);
60 if (ret != 0) {
61 return ret;
64 keyblock = key->key;
66 return check_pac_checksum(srv_sig, kdc_sig,
67 context, &keyblock);