~ubuntu-branches/ubuntu/hardy/postgresql-8.4/hardy-backports

« back to all changes in this revision

Viewing changes to contrib/pgcrypto/rijndael.h

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-03-20 12:00:13 UTC
  • Revision ID: james.westby@ubuntu.com-20090320120013-hogj7egc5mjncc5g
Tags: upstream-8.4~0cvs20090328
ImportĀ upstreamĀ versionĀ 8.4~0cvs20090328

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * $PostgreSQL:$ 
 
3
 *
 
4
 *      $OpenBSD$ */
 
5
 
 
6
/* This is an independent implementation of the encryption algorithm:   */
 
7
/*                                                                                                                                              */
 
8
/*                 RIJNDAEL by Joan Daemen and Vincent Rijmen                                   */
 
9
/*                                                                                                                                              */
 
10
/* which is a candidate algorithm in the Advanced Encryption Standard   */
 
11
/* programme of the US National Institute of Standards and Technology.  */
 
12
/*                                                                                                                                              */
 
13
/* Copyright in this implementation is held by Dr B R Gladman but I             */
 
14
/* hereby give permission for its free direct or derivative use subject */
 
15
/* to acknowledgment of its origin and compliance with any conditions   */
 
16
/* that the originators of the algorithm place on its exploitation.             */
 
17
/*                                                                                                                                              */
 
18
/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999             */
 
19
 
 
20
#ifndef _RIJNDAEL_H_
 
21
#define _RIJNDAEL_H_
 
22
 
 
23
/* 1. Standard types for AES cryptography source code                           */
 
24
 
 
25
typedef uint8 u1byte;                   /* an 8 bit unsigned character type */
 
26
typedef uint16 u2byte;                  /* a 16 bit unsigned integer type       */
 
27
typedef uint32 u4byte;                  /* a 32 bit unsigned integer type       */
 
28
 
 
29
typedef int8 s1byte;                    /* an 8 bit signed character type       */
 
30
typedef int16 s2byte;                   /* a 16 bit signed integer type         */
 
31
typedef int32 s4byte;                   /* a 32 bit signed integer type         */
 
32
 
 
33
typedef struct _rijndael_ctx
 
34
{
 
35
        u4byte          k_len;
 
36
        int                     decrypt;
 
37
        u4byte          e_key[64];
 
38
        u4byte          d_key[64];
 
39
}       rijndael_ctx;
 
40
 
 
41
 
 
42
/* 2. Standard interface for AES cryptographic routines                         */
 
43
 
 
44
/* These are all based on 32 bit unsigned values and will therefore */
 
45
/* require endian conversions for big-endian architectures                      */
 
46
 
 
47
rijndael_ctx *
 
48
                        rijndael_set_key(rijndael_ctx *, const u4byte *, const u4byte, int);
 
49
void            rijndael_encrypt(rijndael_ctx *, const u4byte *, u4byte *);
 
50
void            rijndael_decrypt(rijndael_ctx *, const u4byte *, u4byte *);
 
51
 
 
52
/* conventional interface */
 
53
 
 
54
void            aes_set_key(rijndael_ctx * ctx, const uint8 *key, unsigned keybits, int enc);
 
55
void            aes_ecb_encrypt(rijndael_ctx * ctx, uint8 *data, unsigned len);
 
56
void            aes_ecb_decrypt(rijndael_ctx * ctx, uint8 *data, unsigned len);
 
57
void            aes_cbc_encrypt(rijndael_ctx * ctx, uint8 *iva, uint8 *data, unsigned len);
 
58
void            aes_cbc_decrypt(rijndael_ctx * ctx, uint8 *iva, uint8 *data, unsigned len);
 
59
 
 
60
#endif   /* _RIJNDAEL_H_ */