add enctype_des3_cbc_none_cms

add cms padding for rc2
don't to padding for blocksize 1


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14301 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2004-10-12 21:23:48 +00:00
parent e72a36c030
commit 6c3270b0eb

View File

@@ -2961,10 +2961,23 @@ static struct encryption_type enctype_des_pcbc_none = {
}; };
static unsigned des_ede3_cbc_num[] = { 1, 2, 840, 113549, 3, 7 }; static unsigned des_ede3_cbc_num[] = { 1, 2, 840, 113549, 3, 7 };
static heim_oid des_ede3_cbc_oid = kcrypto_oid_enc(des_ede3_cbc_num); static heim_oid des_ede3_cbc_oid = kcrypto_oid_enc(des_ede3_cbc_num);
static struct encryption_type enctype_des3_cbc_none_cms = {
ETYPE_DES3_CBC_NONE_CMS,
"des3-cbc-none-cms",
&des_ede3_cbc_oid,
8,
8,
0,
&keytype_des3_derived,
&checksum_none,
NULL,
F_PSEUDO|F_PADCMS,
DES3_CBC_encrypt,
};
static struct encryption_type enctype_des3_cbc_none = { static struct encryption_type enctype_des3_cbc_none = {
ETYPE_DES3_CBC_NONE, ETYPE_DES3_CBC_NONE,
"des3-cbc-none", "des3-cbc-none",
&des_ede3_cbc_oid, NULL,
8, 8,
8, 8,
0, 0,
@@ -2986,7 +2999,7 @@ static struct encryption_type enctype_rc2_cbc_none = {
&keytype_rc2, &keytype_rc2,
&checksum_none, &checksum_none,
NULL, NULL,
F_PSEUDO, F_PSEUDO|F_PADCMS,
RC2_CBC_encrypt, RC2_CBC_encrypt,
}; };
@@ -3010,6 +3023,7 @@ static struct encryption_type *etypes[] = {
&enctype_des_cfb64_none, &enctype_des_cfb64_none,
&enctype_des_pcbc_none, &enctype_des_pcbc_none,
&enctype_des3_cbc_none, &enctype_des3_cbc_none,
&enctype_des3_cbc_none_cms,
&enctype_rc2_cbc_none &enctype_rc2_cbc_none
}; };
@@ -3343,7 +3357,7 @@ encrypt_internal(krb5_context context,
sz = et->confoundersize + checksum_sz + len; sz = et->confoundersize + checksum_sz + len;
block_sz = (sz + et->padsize - 1) &~ (et->padsize - 1); /* pad */ block_sz = (sz + et->padsize - 1) &~ (et->padsize - 1); /* pad */
if (et->flags & F_PADCMS) { if ((et->flags & F_PADCMS) && et->padsize != 1) {
padsize = et->padsize - (sz % et->padsize); padsize = et->padsize - (sz % et->padsize);
if (padsize == et->padsize) if (padsize == et->padsize)
block_sz += et->padsize; block_sz += et->padsize;
@@ -3382,7 +3396,7 @@ encrypt_internal(krb5_context context,
goto fail; goto fail;
if (et->flags & F_PADCMS) { if (et->flags & F_PADCMS) {
int i; int i;
q = p + len; q = p + len + checksum_sz + et->confoundersize;
for (i = 0; i < padsize; i++) for (i = 0; i < padsize; i++)
q[i] = padsize; q[i] = padsize;
} }