summaryrefslogtreecommitdiffstats
path: root/fips
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2009-04-18 22:41:17 +0000
committerDr. Stephen Henson <steve@openssl.org>2009-04-18 22:41:17 +0000
commit374941f727a1192685f66f347313bf89311cb65d (patch)
tree9e443d91acc6741ace463557490d98da96a7fa9a /fips
parentcaeb429055ad84c236e05018824d448b6377b78e (diff)
Fixes to make DES3 cfb1 work.
Diffstat (limited to 'fips')
-rw-r--r--fips/des/fips_desmovs.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/fips/des/fips_desmovs.c b/fips/des/fips_desmovs.c
index 2d3424cf9f..24d3035337 100644
--- a/fips/des/fips_desmovs.c
+++ b/fips/des/fips_desmovs.c
@@ -110,15 +110,10 @@ int DESTest(EVP_CIPHER_CTX *ctx,
cipher = EVP_des_ede3_cfb64();
else if (strncasecmp(amode, "OFB", 3) == 0)
cipher = EVP_des_ede3_ofb();
-#if 0
- else if(!strcasecmp(amode,"CFB1"))
- {
- ctx->cbits = 1;
- ctx->cmode = EVP_CIPH_CFB_MODE;
- }
-#endif
else if(!strcasecmp(amode,"CFB8"))
cipher = EVP_des_ede3_cfb8();
+ else if(!strcasecmp(amode,"CFB1"))
+ cipher = EVP_des_ede3_cfb1();
else
{
printf("Unknown mode: %s\n", amode);
@@ -127,6 +122,8 @@ int DESTest(EVP_CIPHER_CTX *ctx,
if (EVP_CipherInit_ex(ctx, cipher, NULL, aKey, iVec, dir) <= 0)
return 0;
+ if(!strcasecmp(amode,"CFB1"))
+ M_EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS);
EVP_Cipher(ctx, out, in, len);
return 1;
@@ -200,11 +197,11 @@ void do_mct(char *amode,
if(imode != ECB)
OutputValue("IV",ivec,8,rfp,0);
OutputValue(t_tag[dir^1],text,len,rfp,imode == CFB1);
-
+#if 0
/* compensate for endianness */
if(imode == CFB1)
text[0]<<=7;
-
+#endif
memcpy(text0,text,8);
for(j=0 ; j < 10000 ; ++j)