Remove CMS symmetric encryption support.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17859 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-07-20 10:57:44 +00:00
parent ab33ecb1ab
commit fdcc12bca6

View File

@@ -666,115 +666,6 @@ AES_schedule(krb5_context context,
AES_set_decrypt_key(kd->key->keyvalue.data, bits, &key->dkey); AES_set_decrypt_key(kd->key->keyvalue.data, bits, &key->dkey);
} }
/*
* RC2
*/
struct _RC2_params {
int maximum_effective_key;
};
static krb5_error_code
rc2_get_params(krb5_context context,
const krb5_data *data,
void **params,
krb5_data *ivec)
{
RC2CBCParameter rc2params;
struct _RC2_params *p;
krb5_error_code ret;
size_t size;
ret = decode_RC2CBCParameter(data->data, data->length, &rc2params, &size);
if (ret) {
krb5_set_error_string(context, "Can't decode RC2 parameters");
return ret;
}
p = malloc(sizeof(*p));
if (p == NULL) {
free_RC2CBCParameter(&rc2params);
krb5_set_error_string(context, "malloc - out of memory");
return ENOMEM;
}
/* XXX */
switch(rc2params.rc2ParameterVersion) {
case 160:
p->maximum_effective_key = 40;
break;
case 120:
p->maximum_effective_key = 64;
break;
case 58:
p->maximum_effective_key = 128;
break;
}
if (ivec)
ret = copy_octet_string(&rc2params.iv, ivec);
free_RC2CBCParameter(&rc2params);
*params = p;
return ret;
}
static krb5_error_code
rc2_set_params(krb5_context context,
const void *params,
const krb5_data *ivec,
krb5_data *data)
{
RC2CBCParameter rc2params;
const struct _RC2_params *p = params;
int maximum_effective_key = 128;
krb5_error_code ret;
size_t size;
memset(&rc2params, 0, sizeof(rc2params));
if (p)
maximum_effective_key = p->maximum_effective_key;
/* XXX */
switch(maximum_effective_key) {
case 40:
rc2params.rc2ParameterVersion = 160;
break;
case 64:
rc2params.rc2ParameterVersion = 120;
break;
case 128:
rc2params.rc2ParameterVersion = 58;
break;
}
ret = copy_octet_string(ivec, &rc2params.iv);
if (ret)
return ret;
ASN1_MALLOC_ENCODE(RC2CBCParameter, data->data, data->length,
&rc2params, &size, ret);
if (ret == 0 && size != data->length)
krb5_abortx(context, "Internal asn1 encoder failure");
free_RC2CBCParameter(&rc2params);
return ret;
}
static void
rc2_schedule(krb5_context context,
struct key_data *kd,
const void *params)
{
const struct _RC2_params *p = params;
int maximum_effective_key = 128;
if (p)
maximum_effective_key = p->maximum_effective_key;
RC2_set_key (kd->schedule->data,
kd->key->keyvalue.length,
kd->key->keyvalue.data,
maximum_effective_key);
}
/* /*
* *
*/ */
@@ -934,21 +825,6 @@ static struct key_type keytype_arcfour = {
arcfour_salt arcfour_salt
}; };
static struct key_type keytype_rc2 = {
KEYTYPE_RC2,
"rc2",
128,
16,
1,
sizeof(RC2_KEY),
NULL,
rc2_schedule,
NULL, /* XXX salt */
NULL,
rc2_get_params,
rc2_set_params
};
static struct key_type *keytypes[] = { static struct key_type *keytypes[] = {
&keytype_null, &keytype_null,
&keytype_des, &keytype_des,
@@ -957,7 +833,6 @@ static struct key_type *keytypes[] = {
&keytype_aes128, &keytype_aes128,
&keytype_aes192, &keytype_aes192,
&keytype_aes256, &keytype_aes256,
&keytype_rc2,
&keytype_arcfour &keytype_arcfour
}; };
@@ -3613,10 +3488,8 @@ derive_key(krb5_context context,
unsigned char *k; unsigned char *k;
unsigned int nblocks = 0, i; unsigned int nblocks = 0, i;
krb5_error_code ret = 0; krb5_error_code ret = 0;
struct key_type *kt = et->keytype; struct key_type *kt = et->keytype;
/* since RC2 is only the weird crypto alg with parameter and this
* function not defined with work with RC2, this is ok */
ret = _key_schedule(context, key, NULL); ret = _key_schedule(context, key, NULL);
if(ret) if(ret)
return ret; return ret;