cast128.h 1.74 KB
Newer Older
Niels Möller's avatar
Niels Möller committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* cast128.h
 *
 * The CAST-128 block cipher.
 */

/*	CAST-128 in C
 *	Written by Steve Reid <sreid@sea-to-sky.net>
 *	100% Public Domain - no warranty
 *	Released 1997.10.11
 */

/* nettle, low-level cryptographics library
 *
 * Copyright (C) 2001 Niels Mller
 *  
 * The nettle library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version.
 * 
 * The nettle library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
 * License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
Niels Möller's avatar
Niels Möller committed
27
 * along with the nettle library; see the file COPYING.LIB.  If not, write to
Niels Möller's avatar
Niels Möller committed
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 * MA 02111-1307, USA.
 */
 
#ifndef NETTLE_CAST128_H_INCLUDED
#define NETTLE_CAST128_H_INCLUDED

#include <stdint.h>

#define CAST128_BLOCK_SIZE 8

/* Variable key size between 40 and 128. */
#define CAST128_MIN_KEY_SIZE 5
#define CAST128_MAX_KEY_SIZE 16

#define CAST128_KEY_SIZE 16

struct cast128_ctx
{
  uint32_t keys[32];  /* Key, after expansion */
  unsigned rounds;    /* Number of rounds to use, 12 or 16 */
};

void
cast128_set_key(struct cast128_ctx *ctx,
		unsigned length, const uint8_t *key);

void
cast128_encrypt(struct cast128_ctx *ctx,
		unsigned length, uint8_t *dst,
		const uint8_t *src);
void
cast128_decrypt(struct cast128_ctx *ctx,
		unsigned length, uint8_t *dst,
		const uint8_t *src);

#endif /* NETTLE_CAST128_H_INCLUDED */