monotone

monotone Mtn Source Tree

Root/botan/mode_pad.h

1/*************************************************
2* CBC Padding Methods Header File *
3* (C) 1999-2006 The Botan Project *
4*************************************************/
5
6#ifndef BOTAN_CBC_PADDING_H__
7#define BOTAN_CBC_PADDING_H__
8
9#include <botan/base.h>
10#include <string>
11
12namespace Botan {
13
14/*************************************************
15* Block Cipher Mode Padding Method *
16*************************************************/
17class BlockCipherModePaddingMethod
18 {
19 public:
20 virtual void pad(byte[], u32bit, u32bit) const = 0;
21 virtual u32bit unpad(const byte[], u32bit) const = 0;
22 virtual u32bit pad_bytes(u32bit, u32bit) const;
23 virtual bool valid_blocksize(u32bit) const = 0;
24 virtual std::string name() const = 0;
25 virtual ~BlockCipherModePaddingMethod() {}
26 };
27
28/*************************************************
29* PKCS#7 Padding *
30*************************************************/
31class PKCS7_Padding : public BlockCipherModePaddingMethod
32 {
33 public:
34 void pad(byte[], u32bit, u32bit) const;
35 u32bit unpad(const byte[], u32bit) const;
36 bool valid_blocksize(u32bit) const;
37 std::string name() const { return "PKCS7"; }
38 };
39
40/*************************************************
41* ANSI X9.23 Padding *
42*************************************************/
43class ANSI_X923_Padding : public BlockCipherModePaddingMethod
44 {
45 public:
46 void pad(byte[], u32bit, u32bit) const;
47 u32bit unpad(const byte[], u32bit) const;
48 bool valid_blocksize(u32bit) const;
49 std::string name() const { return "X9.23"; }
50 };
51
52/*************************************************
53* One And Zeros Padding *
54*************************************************/
55class OneAndZeros_Padding : public BlockCipherModePaddingMethod
56 {
57 public:
58 void pad(byte[], u32bit, u32bit) const;
59 u32bit unpad(const byte[], u32bit) const;
60 bool valid_blocksize(u32bit) const;
61 std::string name() const { return "OneAndZeros"; }
62 };
63
64/*************************************************
65* Null Padding *
66*************************************************/
67class Null_Padding : public BlockCipherModePaddingMethod
68 {
69 public:
70 void pad(byte[], u32bit, u32bit) const { return; }
71 u32bit unpad(const byte[], u32bit size) const { return size; }
72 u32bit pad_bytes(u32bit, u32bit) const { return 0; }
73 bool valid_blocksize(u32bit) const { return true; }
74 std::string name() const { return "NoPadding"; }
75 };
76
77}
78
79#endif

Archive Download this file

Branches

Tags

Quick Links:     www.monotone.ca    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status