]> git.saurik.com Git - apple/security.git/blob - SecurityTests/cspxutils/aesVect/enDecryptTest.c
Security-57031.1.35.tar.gz
[apple/security.git] / SecurityTests / cspxutils / aesVect / enDecryptTest.c
1 #include "enDecrypt.h"
2 #include "std_defs.h"
3 #include <strings.h>
4 #include <stdio.h>
5
6 /*
7 * encrypt/decrypt using Gladman version of AES.
8 */
9
10 CSSM_RETURN encryptDecryptTest(
11 CSSM_BOOL forEncrypt,
12 uint32 keySizeInBits,
13 uint32 blockSizeInBits,
14 const uint8 *key, // raw key bytes
15 const uint8 *inText,
16 uint32 inTextLen,
17 uint8 *outText)
18 {
19 u4byte aesKey[8];
20 uint8 *inPtr = (uint8 *)inText;
21 uint8 *outPtr = outText;
22 uint32 blockSizeInBytes = blockSizeInBits / 8;
23 uint32 blocks = inTextLen / blockSizeInBytes;
24
25 if(blockSizeInBits != 128) {
26 printf("***This AES implementation supports only 128 bit blocks.\n");
27 return CSSM_ERRCODE_INTERNAL_ERROR;
28 }
29 memmove(aesKey, key, keySizeInBits / 8);
30 set_key(aesKey, keySizeInBits);
31 for( ; blocks > 0; blocks--) {
32 if(forEncrypt) {
33 rEncrypt((u4byte *)inPtr, (u4byte *)outPtr);
34 }
35 else {
36 rDecrypt((u4byte *)inPtr, (u4byte *)outPtr);
37 }
38 inPtr += blockSizeInBytes;
39 outPtr += blockSizeInBytes;
40 }
41 return CSSM_OK;
42 }