[openssl-users] AES-128-CFB1 encrypt

Marcus Vinicius do Nascimento m.vinicius at samsung.com
Tue May 19 19:56:31 UTC 2015


Hello,

 

I'm trying to use the CFB1 mode for AES-128.

However I'm having a bit of trouble interpreting the encrypt output.

 

I believe the EVP_EnvryptUpdate should get the data length in BITS (other
algorithms it should use in bytes). Is it correct?

How can I interpret the output correctly?

 

I got my testing data from the FIPS140 test vectors.

 

Here is a quick code snippet to illustrate it:

 

#include <openssl/evp.h>

#include <string.h>

 

int main() {

                unsigned char outbuf[1024];

                int outlen, tmplen;

 

                // From FIPS 140 test vectors (CFB1MCT128.rsp):

                //   COUNT = 0

                //   KEY = 6f219ca589944101d9b8d1997ec7f384

                //   IV = 00179d5c1f0436af09de22c09825b02d

                //   PLAINTEXT = 0

                //   CIPHERTEXT = 0

                unsigned char key[] = {0x6f, 0x21, 0x9c, 0xa5, 0x89, 0x94,
0x41, 0x01, 0xd9, 0xb8, 0xd1, 0x99, 0x7e, 0xc7, 0xf3, 0x84};

                unsigned char iv[] = {0x00, 0x17, 0x9d, 0x5c, 0x1f, 0x04,
0x36, 0xaf, 0x09, 0xde, 0x22, 0xc0, 0x98, 0x25, 0xb0, 0x2d};

                unsigned char intext[] = {0x00};

 

                EVP_CIPHER_CTX ctx;

                EVP_CIPHER_CTX_init(&ctx);

                EVP_EncryptInit_ex(&ctx, EVP_aes_128_cfb1(), NULL, key, iv);

 

                // EVP_EnvryptUpdate expects the number of bits or bytes in
CFB1 mode?

                int datalen = 1; 

 

                if (!EVP_EncryptUpdate(&ctx, outbuf, &outlen, intext,
datalen)) return 1;

                if (!EVP_EncryptFinal_ex(&ctx, outbuf + outlen, &tmplen))
return 1;

                outlen += tmplen;

                EVP_CIPHER_CTX_cleanup(&ctx);

 

                for (int ii = 0; ii < outlen; ++ii) printf("%02x",
outbut[ii]);

                printf("\n");

 

                // outbuf should contain CIPHERTEXT. However, it contains
one single byte: 0x47 (71 decimal).

 

                return 0;

}

 

Thanks very much.

 

Best,

Marcus

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20150519/85e78f02/attachment.html>


More information about the openssl-users mailing list