Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 245934 | Differences between
and this patch

Collapse All | Expand All

(-)include/openssl/kssl.h (+1 lines)
Lines 81-86 Link Here
81
*/
81
*/
82
#ifdef KRB5_HEIMDAL
82
#ifdef KRB5_HEIMDAL
83
typedef unsigned char krb5_octet;
83
typedef unsigned char krb5_octet;
84
typedef krb5_times krb5_ticket_times;
84
#define FAR
85
#define FAR
85
#else
86
#else
86
87
(-)ssl/kssl.c (-17 / +78 lines)
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-1280 Link Here
1275
		return krb5rc;		/*  or  KRB5KRB_ERR_GENERIC;	*/
1324
		return krb5rc;		/*  or  KRB5KRB_ERR_GENERIC;	*/
1276
		}
1325
		}
1277
1326
1327
#ifdef KRB5_HEIMDAL
1328
	krb5_principal_set_type(krb5context, new5ticket->server,
1329
				asn1ticket->sname->nametype->data[0]);
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
1278
	krb5_princ_type(krb5context, new5ticket->server) =
1338
	krb5_princ_type(krb5context, new5ticket->server) =
1279
			asn1ticket->sname->nametype->data[0];
1339
			asn1ticket->sname->nametype->data[0];
1280
	new5ticket->enc_part.enctype = asn1ticket->encdata->etype->data[0];
1340
	new5ticket->enc_part.enctype = asn1ticket->encdata->etype->data[0];
Lines 1296-1301 Link Here
1296
			asn1ticket->encdata->cipher->data,
1356
			asn1ticket->encdata->cipher->data,
1297
			asn1ticket->encdata->cipher->length);
1357
			asn1ticket->encdata->cipher->length);
1298
		}
1358
		}
1359
#endif
1299
1360
1300
	*krb5ticket = new5ticket;
1361
	*krb5ticket = new5ticket;
1301
	return 0;
1362
	return 0;
(-)ssl/kssl.h (+1 lines)
Lines 81-86 Link Here
81
*/
81
*/
82
#ifdef KRB5_HEIMDAL
82
#ifdef KRB5_HEIMDAL
83
typedef unsigned char krb5_octet;
83
typedef unsigned char krb5_octet;
84
typedef krb5_times krb5_ticket_times;
84
#define FAR
85
#define FAR
85
#else
86
#else
86
87

Return to bug 245934