securityanddataprivacytools/securitytools/openssllib/import/inc/openssl/aes.h
author Santosh V Patil <santosh.v.patil@nokia.com>
Mon, 19 Apr 2010 11:11:16 +0530
branchRCL_1
changeset 54 de7f90723dab
permissions -rw-r--r--
Fix for Bug 2442 - Symbian^2 package build failure.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     1
/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     2
/* ====================================================================
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     3
 * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     4
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     5
 * Redistribution and use in source and binary forms, with or without
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     6
 * modification, are permitted provided that the following conditions
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     7
 * are met:
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     8
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
     9
 * 1. Redistributions of source code must retain the above copyright
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    10
 *    notice, this list of conditions and the following disclaimer. 
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    11
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    12
 * 2. Redistributions in binary form must reproduce the above copyright
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    13
 *    notice, this list of conditions and the following disclaimer in
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    14
 *    the documentation and/or other materials provided with the
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    15
 *    distribution.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    16
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    17
 * 3. All advertising materials mentioning features or use of this
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    18
 *    software must display the following acknowledgment:
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    19
 *    "This product includes software developed by the OpenSSL Project
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    20
 *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    21
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    22
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    23
 *    endorse or promote products derived from this software without
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    24
 *    prior written permission. For written permission, please contact
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    25
 *    openssl-core@openssl.org.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    26
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    27
 * 5. Products derived from this software may not be called "OpenSSL"
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    28
 *    nor may "OpenSSL" appear in their names without prior written
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    29
 *    permission of the OpenSSL Project.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    30
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    31
 * 6. Redistributions of any form whatsoever must retain the following
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    32
 *    acknowledgment:
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    33
 *    "This product includes software developed by the OpenSSL Project
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    34
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    35
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    36
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    37
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    38
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    39
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    40
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    41
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    42
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    43
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    44
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    45
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    46
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    47
 * OF THE POSSIBILITY OF SUCH DAMAGE.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    48
 * ====================================================================
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    49
 *
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    50
 */
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    51
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    52
#ifndef HEADER_AES_H
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    53
#define HEADER_AES_H
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    54
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    55
#ifdef OPENSSL_NO_AES
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    56
#error AES is disabled.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    57
#endif
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    58
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    59
#define AES_ENCRYPT	1
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    60
#define AES_DECRYPT	0
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    61
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    62
/* Because array size can't be a const in C, the following two are macros.
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    63
   Both sizes are in bytes. */
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    64
#define AES_MAXNR 14
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    65
#define AES_BLOCK_SIZE 16
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    66
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    67
#ifdef  __cplusplus
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    68
extern "C" {
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    69
#endif
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    70
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    71
/* This should be a hidden type, but EVP requires that the size be known */
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    72
struct aes_key_st {
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    73
    unsigned long rd_key[4 *(AES_MAXNR + 1)];
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    74
    int rounds;
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    75
};
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    76
typedef struct aes_key_st AES_KEY;
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    77
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    78
const char *AES_options(void);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    79
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    80
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    81
	AES_KEY *key);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    82
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    83
	AES_KEY *key);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    84
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    85
void AES_encrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    86
	const AES_KEY *key);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    87
void AES_decrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    88
	const AES_KEY *key);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    89
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    90
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    91
	const AES_KEY *key, const int enc);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    92
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    93
	const unsigned long length, const AES_KEY *key,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    94
	unsigned char *ivec, const int enc);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    95
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    96
	const unsigned long length, const AES_KEY *key,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    97
	unsigned char *ivec, int *num, const int enc);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    98
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
    99
	const unsigned long length, const AES_KEY *key,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   100
	unsigned char *ivec, int *num);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   101
void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   102
	const unsigned long length, const AES_KEY *key,
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   103
	unsigned char counter[AES_BLOCK_SIZE],
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   104
	unsigned char ecount_buf[AES_BLOCK_SIZE],
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   105
	unsigned int *num);
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   106
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   107
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   108
#ifdef  __cplusplus
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   109
}
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   110
#endif
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   111
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   112
#endif /* !HEADER_AES_H */
de7f90723dab Fix for Bug 2442 - Symbian^2 package build failure.
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff changeset
   113