1
/*************************************************
2
* PK Filters Source File *
3
* (C) 1999-2007 The Botan Project *
4
*************************************************/
6
#include <botan/pk_filts.h>
10
/*************************************************
11
* Append to the buffer *
12
*************************************************/
13
void PK_Encryptor_Filter::write(const byte input[], u32bit length)
15
buffer.append(input, length);
18
/*************************************************
19
* Encrypt the message *
20
*************************************************/
21
void PK_Encryptor_Filter::end_msg()
23
send(cipher->encrypt(buffer, buffer.size()));
27
/*************************************************
28
* Append to the buffer *
29
*************************************************/
30
void PK_Decryptor_Filter::write(const byte input[], u32bit length)
32
buffer.append(input, length);
35
/*************************************************
36
* Decrypt the message *
37
*************************************************/
38
void PK_Decryptor_Filter::end_msg()
40
send(cipher->decrypt(buffer, buffer.size()));
44
/*************************************************
46
*************************************************/
47
void PK_Signer_Filter::write(const byte input[], u32bit length)
49
signer->update(input, length);
52
/*************************************************
54
*************************************************/
55
void PK_Signer_Filter::end_msg()
57
send(signer->signature());
60
/*************************************************
62
*************************************************/
63
void PK_Verifier_Filter::write(const byte input[], u32bit length)
65
verifier->update(input, length);
68
/*************************************************
69
* Verify the message *
70
*************************************************/
71
void PK_Verifier_Filter::end_msg()
73
if(signature.is_empty())
74
throw Exception("PK_Verifier_Filter: No signature to check against");
75
bool is_valid = verifier->check_signature(signature, signature.size());
76
send((is_valid ? 1 : 0));
79
/*************************************************
80
* Set the signature to check *
81
*************************************************/
82
void PK_Verifier_Filter::set_signature(const byte sig[], u32bit length)
84
signature.set(sig, length);
87
/*************************************************
88
* Set the signature to check *
89
*************************************************/
90
void PK_Verifier_Filter::set_signature(const MemoryRegion<byte>& sig)
95
/*************************************************
96
* PK_Verifier_Filter Constructor *
97
*************************************************/
98
PK_Verifier_Filter::PK_Verifier_Filter(PK_Verifier* v, const byte sig[],
100
verifier(v), signature(sig, length)
104
/*************************************************
105
* PK_Verifier_Filter Constructor *
106
*************************************************/
107
PK_Verifier_Filter::PK_Verifier_Filter(PK_Verifier* v,
108
const MemoryRegion<byte>& sig) :
109
verifier(v), signature(sig)