eucrypt_ch11_serpent 1
eucrypt_ch11_serpent 2
eucrypt_ch11_serpent 3
eucrypt_ch11_serpent 4
eucrypt_ch11_serpent 5
eucrypt_ch11_serpent 6
eucrypt_ch11_serpent 7
eucrypt_ch11_serpent 8
eucrypt_ch11_serpent 9
eucrypt_ch11_serpent 10
eucrypt_ch11_serpent 11
eucrypt_ch11_serpent 12
eucrypt_ch11_serpent 13
eucrypt_ch11_serpent 14
eucrypt_ch11_serpent 15
eucrypt_ch11_serpent 16
eucrypt_ch11_serpent 17
eucrypt_ch11_serpent 18
eucrypt_ch11_serpent 19
eucrypt_ch11_serpent 20
eucrypt_ch11_serpent 21
eucrypt_ch11_serpent 22
eucrypt_ch11_serpent 23
eucrypt_ch11_serpent 24 with Interfaces; use Interfaces;
eucrypt_ch11_serpent 25
eucrypt_ch11_serpent 26 package SMG_Serpent is
eucrypt_ch11_serpent 27
eucrypt_ch11_serpent 28 pragma Pure(SMG_Serpent);
eucrypt_ch11_serpent 29
eucrypt_ch11_serpent 30 type Bytes is array (Integer range <>) of Unsigned_8;
eucrypt_ch11_serpent 31 type Words is array (Integer range <>) of Unsigned_32;
eucrypt_ch11_serpent 32 subtype Block is Bytes (0 .. 15);
eucrypt_ch11_serpent 33 subtype Key is Bytes (0 .. 31);
eucrypt_ch11_serpent 34 subtype Key_Schedule is Words (-8 .. 131);
eucrypt_ch11_serpent 35
eucrypt_ch11_serpent 36 procedure Prepare_Key (K : in Key; W : out Key_Schedule);
eucrypt_ch11_serpent 37
eucrypt_ch11_serpent 38 procedure Encrypt (W : in Key_Schedule; Plaintext : in Block;
eucrypt_ch11_serpent 39 Ciphertext : out Block);
eucrypt_ch11_serpent 40
eucrypt_ch11_serpent 41 procedure Decrypt (W : in Key_Schedule; Ciphertext : in Block;
eucrypt_ch11_serpent 42 Plaintext : out Block);
eucrypt_ch11_serpent 43
eucrypt_ch11_serpent 44 procedure Selftest;
eucrypt_ch11_serpent 45
eucrypt_ch11_serpent 46 Implementation_Error : exception;
eucrypt_ch11_serpent 47
eucrypt_ch11_serpent 48 end SMG_Serpent;