Lines 821-836
Link Here
|
821 |
{ |
821 |
{ |
822 |
switch (enctype) |
822 |
switch (enctype) |
823 |
{ |
823 |
{ |
824 |
case ENCTYPE_DES_HMAC_SHA1: /* EVP_des_cbc(); */ |
824 |
case ENCTYPE_DES_CBC_CRC: /* EVP_des_cbc(); */ |
825 |
case ENCTYPE_DES_CBC_CRC: |
|
|
826 |
case ENCTYPE_DES_CBC_MD4: |
825 |
case ENCTYPE_DES_CBC_MD4: |
827 |
case ENCTYPE_DES_CBC_MD5: |
826 |
case ENCTYPE_DES_CBC_MD5: |
|
|
827 |
#ifdef KRB5_HEIMDAL |
828 |
case ENCTYPE_DES_CBC_NONE: |
829 |
case ENCTYPE_DES_CFB64_NONE: |
830 |
case ENCTYPE_DES_PCBC_NONE: |
831 |
#else |
832 |
case ENCTYPE_DES_HMAC_SHA1: |
828 |
case ENCTYPE_DES_CBC_RAW: |
833 |
case ENCTYPE_DES_CBC_RAW: |
|
|
834 |
#endif |
829 |
return EVP_des_cbc(); |
835 |
return EVP_des_cbc(); |
830 |
break; |
836 |
break; |
831 |
case ENCTYPE_DES3_CBC_SHA1: /* EVP_des_ede3_cbc(); */ |
837 |
case ENCTYPE_DES3_CBC_SHA1: /* EVP_des_ede3_cbc(); */ |
|
|
838 |
#ifdef KRB5_HEIMDAL |
839 |
case ENCTYPE_DES3_CBC_MD5: |
840 |
case ENCTYPE_DES3_CBC_NONE: |
841 |
#else |
832 |
case ENCTYPE_DES3_CBC_SHA: |
842 |
case ENCTYPE_DES3_CBC_SHA: |
833 |
case ENCTYPE_DES3_CBC_RAW: |
843 |
case ENCTYPE_DES3_CBC_RAW: |
|
|
844 |
#endif |
834 |
return EVP_des_ede3_cbc(); |
845 |
return EVP_des_ede3_cbc(); |
835 |
break; |
846 |
break; |
836 |
default: return NULL; |
847 |
default: return NULL; |
Lines 883-888
Link Here
|
883 |
{ |
894 |
{ |
884 |
int i, j, n; |
895 |
int i, j, n; |
885 |
static size_t *cklens = NULL; |
896 |
static size_t *cklens = NULL; |
|
|
897 |
size_t cksumsize; |
886 |
|
898 |
|
887 |
#ifdef KRB5_MIT_OLD11 |
899 |
#ifdef KRB5_MIT_OLD11 |
888 |
n = krb5_max_cksum; |
900 |
n = krb5_max_cksum; |
Lines 894-906
Link Here
|
894 |
if (!cklens && !(cklens = (size_t *) calloc(sizeof(int),n+1))) return NULL; |
906 |
if (!cklens && !(cklens = (size_t *) calloc(sizeof(int),n+1))) return NULL; |
895 |
|
907 |
|
896 |
for (i=0; i < n; i++) { |
908 |
for (i=0; i < n; i++) { |
897 |
if (!valid_cksumtype(i)) continue; /* array has holes */ |
909 |
if (!krb5_c_valid_cksumtype(i)) continue; /* array has holes */ |
|
|
910 |
if (krb5_c_checksum_length(NULL, i, &cksumsize)) continue; /* there's something wrong */ |
898 |
for (j=0; j < n; j++) { |
911 |
for (j=0; j < n; j++) { |
899 |
if (cklens[j] == 0) { |
912 |
if (cklens[j] == 0) { |
900 |
cklens[j] = krb5_checksum_size(NULL,i); |
913 |
cklens[j] = cksumsize; |
901 |
break; /* krb5 elem was new: add */ |
914 |
break; /* krb5 elem was new: add */ |
902 |
} |
915 |
} |
903 |
if (cklens[j] == krb5_checksum_size(NULL,i)) { |
916 |
if (cklens[j] == cksumsize) { |
904 |
break; /* ignore duplicate elements */ |
917 |
break; /* ignore duplicate elements */ |
905 |
} |
918 |
} |
906 |
} |
919 |
} |
Lines 957-970
Link Here
|
957 |
print_krb5_data(char *label, krb5_data *kdata) |
970 |
print_krb5_data(char *label, krb5_data *kdata) |
958 |
{ |
971 |
{ |
959 |
int i; |
972 |
int i; |
|
|
973 |
unsigned char *datastring; |
974 |
|
975 |
#ifdef KRB5_HEIMDAL |
976 |
memcpy(datastring, kdata->data, kdata->length); |
977 |
#else |
978 |
datastring = kdata->data; |
979 |
#endif |
960 |
|
980 |
|
961 |
printf("%s[%d] ", label, kdata->length); |
981 |
printf("%s[%d] ", label, kdata->length); |
962 |
for (i=0; i < (int)kdata->length; i++) |
982 |
for (i=0; i < (int)kdata->length; i++) |
963 |
{ |
983 |
{ |
964 |
if (0 && isprint((int) kdata->data[i])) |
984 |
if (0 && isprint((int) datastring[i])) |
965 |
printf( "%c ", kdata->data[i]); |
985 |
printf( "%c ", datastring[i]); |
966 |
else |
986 |
else |
967 |
printf( "%02x ", (unsigned char) kdata->data[i]); |
987 |
printf( "%02x ", datastring[i]); |
968 |
} |
988 |
} |
969 |
printf("\n"); |
989 |
printf("\n"); |
970 |
} |
990 |
} |
Lines 1002-1029
Link Here
|
1002 |
print_krb5_keyblock(char *label, krb5_keyblock *keyblk) |
1022 |
print_krb5_keyblock(char *label, krb5_keyblock *keyblk) |
1003 |
{ |
1023 |
{ |
1004 |
int i; |
1024 |
int i; |
|
|
1025 |
unsigned char *keyblkcontents; |
1005 |
|
1026 |
|
1006 |
if (keyblk == NULL) |
1027 |
if (keyblk == NULL) |
1007 |
{ |
1028 |
{ |
1008 |
printf("%s, keyblk==0\n", label); |
1029 |
printf("%s, keyblk==0\n", label); |
1009 |
return; |
1030 |
return; |
1010 |
} |
1031 |
} |
|
|
1032 |
|
1011 |
#ifdef KRB5_HEIMDAL |
1033 |
#ifdef KRB5_HEIMDAL |
1012 |
printf("%s\n\t[et%d:%d]: ", label, keyblk->keytype, |
1034 |
printf("%s\n\t[et%d:%d]: ", label, keyblk->keytype, |
1013 |
keyblk->keyvalue->length); |
1035 |
keyblk->keyvalue.length); |
1014 |
for (i=0; i < (int)keyblk->keyvalue->length; i++) |
1036 |
memcpy(keyblkcontents, keyblk->keyvalue.data, keyblk->keyvalue.length); |
1015 |
{ |
1037 |
for (i=0; i < (int)keyblk->keyvalue.length; i++) |
1016 |
printf("%02x",(unsigned char *)(keyblk->keyvalue->contents)[i]); |
|
|
1017 |
} |
1018 |
printf("\n"); |
1019 |
#else |
1038 |
#else |
1020 |
printf("%s\n\t[et%d:%d]: ", label, keyblk->enctype, keyblk->length); |
1039 |
printf("%s\n\t[et%d:%d]: ", label, keyblk->enctype, keyblk->length); |
|
|
1040 |
keyblkcontents = keyblk->contents; |
1021 |
for (i=0; i < (int)keyblk->length; i++) |
1041 |
for (i=0; i < (int)keyblk->length; i++) |
|
|
1042 |
#endif |
1022 |
{ |
1043 |
{ |
1023 |
printf("%02x",keyblk->contents[i]); |
1044 |
printf("%02x",keyblkcontents[i]); |
1024 |
} |
1045 |
} |
1025 |
printf("\n"); |
1046 |
printf("\n"); |
1026 |
#endif |
|
|
1027 |
} |
1047 |
} |
1028 |
|
1048 |
|
1029 |
|
1049 |
|
Lines 1034-1043
Link Here
|
1034 |
print_krb5_princ(char *label, krb5_principal_data *princ) |
1054 |
print_krb5_princ(char *label, krb5_principal_data *princ) |
1035 |
{ |
1055 |
{ |
1036 |
int i, ui, uj; |
1056 |
int i, ui, uj; |
|
|
1057 |
unsigned int realmlength; |
1058 |
char *realmdata; |
1037 |
|
1059 |
|
1038 |
printf("%s principal Realm: ", label); |
1060 |
printf("%s principal Realm: ", label); |
1039 |
if (princ == NULL) return; |
1061 |
if (princ == NULL) return; |
1040 |
for (ui=0; ui < (int)princ->realm.length; ui++) putchar(princ->realm.data[ui]); |
1062 |
|
|
|
1063 |
#ifdef KRB5_HEIMDAL |
1064 |
realmlength = krb5_realm_length(princ->realm); |
1065 |
realmdata = krb5_realm_data(princ->realm); |
1066 |
#else |
1067 |
realmlength = princ->realm.length; |
1068 |
realmdata = princ->realm.data; |
1069 |
#endif |
1070 |
|
1071 |
for (ui=0; ui < (int)realmlength; ui++) putchar(realmdata[ui]); |
1072 |
|
1073 |
#ifdef KRB5_HEIMDAL |
1074 |
printf(" (nametype %d) has %d strings:\n", |
1075 |
princ->name.name_type, |
1076 |
princ->name.name_string.len); |
1077 |
for (i=0; i < (int)princ->name.name_string.len; i++) |
1078 |
{ |
1079 |
realmlength = krb5_realm_length(princ->name.name_string.val[i]); |
1080 |
realmdata = krb5_realm_data(princ->name.name_string.val[i]); |
1081 |
printf("\t%d [%d]: ", i, realmlength); |
1082 |
for (uj=0; uj < (int)realmlength; uj++) { |
1083 |
putchar(realmdata[uj]); |
1084 |
} |
1085 |
printf("\n"); |
1086 |
} |
1087 |
#else |
1041 |
printf(" (nametype %d) has %d strings:\n", princ->type,princ->length); |
1088 |
printf(" (nametype %d) has %d strings:\n", princ->type,princ->length); |
1042 |
for (i=0; i < (int)princ->length; i++) |
1089 |
for (i=0; i < (int)princ->length; i++) |
1043 |
{ |
1090 |
{ |
Lines 1047-1052
Link Here
|
1047 |
} |
1094 |
} |
1048 |
printf("\n"); |
1095 |
printf("\n"); |
1049 |
} |
1096 |
} |
|
|
1097 |
#endif |
1098 |
|
1050 |
return; |
1099 |
return; |
1051 |
} |
1100 |
} |
1052 |
|
1101 |
|
Lines 1275-1282
Link Here
|
1275 |
return krb5rc; /* or KRB5KRB_ERR_GENERIC; */ |
1324 |
return krb5rc; /* or KRB5KRB_ERR_GENERIC; */ |
1276 |
} |
1325 |
} |
1277 |
|
1326 |
|
1278 |
krb5_princ_type(krb5context, new5ticket->server) = |
1327 |
krb5_principal_set_type(krb5context, new5ticket->server, |
1279 |
asn1ticket->sname->nametype->data[0]; |
1328 |
asn1ticket->sname->nametype->data[0]); |
|
|
1329 |
#ifdef KRB5_HEIMDAL |
1330 |
/* |
1331 |
** To do. |
1332 |
** MIT krb5_ticket looks more like the Ticket type of Heimdal, |
1333 |
** there seems to be no simple translation. |
1334 |
** May be the whole kssl_TKT2tkt function will have to be left out, |
1335 |
** and kssl_sget_tkt deeply rewriten for Heimdal. |
1336 |
*/ |
1337 |
#else |
1280 |
new5ticket->enc_part.enctype = asn1ticket->encdata->etype->data[0]; |
1338 |
new5ticket->enc_part.enctype = asn1ticket->encdata->etype->data[0]; |
1281 |
new5ticket->enc_part.kvno = asn1ticket->encdata->kvno->data[0]; |
1339 |
new5ticket->enc_part.kvno = asn1ticket->encdata->kvno->data[0]; |
1282 |
new5ticket->enc_part.ciphertext.length = |
1340 |
new5ticket->enc_part.ciphertext.length = |
Lines 1296-1301
Link Here
|
1296 |
asn1ticket->encdata->cipher->data, |
1354 |
asn1ticket->encdata->cipher->data, |
1297 |
asn1ticket->encdata->cipher->length); |
1355 |
asn1ticket->encdata->cipher->length); |
1298 |
} |
1356 |
} |
|
|
1357 |
#endif |
1299 |
|
1358 |
|
1300 |
*krb5ticket = new5ticket; |
1359 |
*krb5ticket = new5ticket; |
1301 |
return 0; |
1360 |
return 0; |