PageRenderTime 21ms CodeModel.GetById 16ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/security/nss/lib/freebl/camellia.h

http://github.com/zpao/v8monkey
C Header | 79 lines | 23 code | 8 blank | 48 comment | 0 complexity | 74c422782cdcbc0532bb8cbaf7a757df MD5 | raw file
 1/* ***** BEGIN LICENSE BLOCK *****
 2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 3 *
 4 * The contents of this file are subject to the Mozilla Public License Version
 5 * 1.1 (the "License"); you may not use this file except in compliance with
 6 * the License. You may obtain a copy of the License at
 7 * http://www.mozilla.org/MPL/
 8 *
 9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is the Camellia code.
15 *
16 * The Initial Developer of the Original Code is
17 * NTT(Nippon Telegraph and Telephone Corporation).
18 *
19 * Portions created by the Initial Developer are Copyright (C) 2006
20 * the Initial Developer. All Rights Reserved.
21 *
22 * Contributor(s):
23 *
24 * Alternatively, the contents of this file may be used under the terms of
25 * either the GNU General Public License Version 2 or later (the "GPL"), or
26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27 * in which case the provisions of the GPL or the LGPL are applicable instead
28 * of those above. If you wish to allow use of your version of this file only
29 * under the terms of either the GPL or the LGPL, and not to allow others to
30 * use your version of this file under the terms of the MPL, indicate your
31 * decision by deleting the provisions above and replace them with the notice
32 * and other provisions required by the GPL or the LGPL. If you do not delete
33 * the provisions above, a recipient may use your version of this file under
34 * the terms of any one of the MPL, the GPL or the LGPL.
35 *
36 * ***** END LICENSE BLOCK ***** */
37/*
38 * $Id: camellia.h,v 1.1 2007/02/28 19:47:37 rrelyea%redhat.com Exp $
39 */
40
41#ifndef _CAMELLIA_H_
42#define _CAMELLIA_H_ 1
43
44#define CAMELLIA_BLOCK_SIZE 16  /* bytes */
45#define CAMELLIA_MIN_KEYSIZE 16 /* bytes */
46#define CAMELLIA_MAX_KEYSIZE 32 /* bytes */
47
48#define CAMELLIA_MAX_EXPANDEDKEY (34*2) /* 32bit unit */
49
50typedef PRUint32 KEY_TABLE_TYPE[CAMELLIA_MAX_EXPANDEDKEY];
51
52typedef SECStatus CamelliaFunc(CamelliaContext *cx, unsigned char *output,
53			       unsigned int *outputLen,
54			       unsigned int maxOutputLen,
55			       const unsigned char *input,
56			       unsigned int inputLen);
57
58typedef SECStatus CamelliaBlockFunc(const PRUint32 *subkey, 
59				    unsigned char *output,
60				    const unsigned char *input);
61
62/* CamelliaContextStr
63 *
64 * Values which maintain the state for Camellia encryption/decryption.
65 *
66 * keysize     - the number of key bits
67 * worker      - the encryption/decryption function to use with this context
68 * iv          - initialization vector for CBC mode
69 * expandedKey - the round keys in 4-byte words
70 */
71struct CamelliaContextStr
72{
73    PRUint32  keysize; /* bytes */
74    CamelliaFunc  *worker;
75    PRUint32      expandedKey[CAMELLIA_MAX_EXPANDEDKEY];
76    PRUint8 iv[CAMELLIA_BLOCK_SIZE];
77};
78
79#endif /* _CAMELLIA_H_ */