add EVP_CIPH_FLAG_LENGTH_BITS from 0.9.8-stable
authorDr. Stephen Henson <steve@openssl.org>
Mon, 15 Feb 2010 19:20:13 +0000 (19:20 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 15 Feb 2010 19:20:13 +0000 (19:20 +0000)
crypto/evp/evp.h
crypto/evp/evp_locl.h

index 96f83b8f62b3cf7da8fe540457da816182178052..2fa1141e8e02c73708b8719ff9d55978bc474a6e 100644 (file)
@@ -343,6 +343,10 @@ struct evp_cipher_st
 #define        EVP_CIPH_RAND_KEY               0x200
 /* cipher has its own additional copying logic */
 #define        EVP_CIPH_CUSTOM_COPY            0x400
+/* Allow use default ASN1 get/set iv */
+#define                EVP_CIPH_FLAG_DEFAULT_ASN1      0x1000
+/* Buffer length in bits not bytes: CFB1 mode only */
+#define                EVP_CIPH_FLAG_LENGTH_BITS       0x2000
 
 /* ctrl() values */
 
index 4cb80fbde0140095b791393d7293ff673b06bb44..3f6ac7e65c092205108d7060726861b33cb172ba 100644 (file)
@@ -115,7 +115,7 @@ static int cname##_cfb##cbits##_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
        if (inl<chunk) chunk=inl;\
        while(inl && inl>=chunk)\
            {\
-           cprefix##_cfb##cbits##_encrypt(in, out, (long)(cbits==1?chunk*8:chunk), &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num, ctx->encrypt);\
+            cprefix##_cfb##cbits##_encrypt(in, out, (long)((cbits==1) && !(ctx->flags & EVP_CIPH_FLAG_LENGTH_BITS) ?inl*8:inl), &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num, ctx->encrypt);\
            inl-=chunk;\
            in +=chunk;\
            out+=chunk;\