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
27
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/*____________________________________________________________________________
Copyright (C) 1997 Network Associates Inc. and affiliated companies.
All rights reserved.
$Id: pgpCFB.h,v 1.6 1999/03/10 02:47:11 heller Exp $
____________________________________________________________________________*/
#ifndef Included_pgpCFB_h /* [ */
#define Included_pgpCFB_h
#include "pgpSymmetricCipher.h"
PGP_BEGIN_C_DECLARATIONS
#if PRAGMA_IMPORT_SUPPORTED
#pragma import on
#endif
/*____________________________________________________________________________
A CFB context requires use of a symmetric cipher which has been created
and whose key has been set. An error will be returned if this is not
the case.
After the call, the CFBRef "owns" the symmetric ref and will
dispose of it properly (even if an error occurs).
The caller should no longer reference it.
____________________________________________________________________________*/
PGPError PGPNewCFBContext( PGPSymmetricCipherContextRef ref,
PGPUInt16 interleaveFactor,
PGPCFBContextRef *outRef );
/*____________________________________________________________________________
Disposal clears all data in memory before releasing it.
____________________________________________________________________________*/
PGPError PGPFreeCFBContext( PGPCFBContextRef ref );
/*____________________________________________________________________________
Make an exact copy, including current state. Original is not changed.
____________________________________________________________________________*/
PGPError PGPCopyCFBContext( PGPCFBContextRef ref,
PGPCFBContextRef *outRef );
/*____________________________________________________________________________
IV size is implicit (same size as the symmetric cipher block size).
IV is *copied*.
Caller may want to destroy the original after passing it in.
Calling this implicitly calls PGPResetCFB().
____________________________________________________________________________*/
PGPError PGPInitCFB( PGPCFBContextRef ref,
const void *key,
const void *initializationVector );
/*____________________________________________________________________________
Call repeatedly to process arbitrary amounts of data.
____________________________________________________________________________*/
PGPError PGPCFBEncrypt( PGPCFBContextRef ref,
const void *in, PGPSize bytesIn, void *out );
PGPError PGPCFBDecrypt( PGPCFBContextRef ref,
const void *in, PGPSize bytesIn, void *out );
/*____________________________________________________________________________
Get the symmetric cipher being used for this CFB context.
You can use this to determine useful things about the underlying cipher
such as its block size.
____________________________________________________________________________*/
PGPError PGPCFBGetSymmetricCipher(
PGPCFBContextRef ref,
PGPSymmetricCipherContextRef *outRef );
/*____________________________________________________________________________
Reset the feedback mechanism to use whatever we have so far, plus previous
bytes for a total of the cipher block size bytes. This effectively
changes the cipher block boundary.
____________________________________________________________________________*/
PGPError PGPCFBSync( PGPCFBContextRef ref );
/*____________________________________________________________________________
Fetch random bytes from the cipher. Returns the actual number of
random bytes obtained.
____________________________________________________________________________*/
PGPError PGPCFBGetRandom( PGPCFBContextRef ref,
PGPSize requestCount, void *out, PGPSize *outCount);
/*____________________________________________________________________________
Make more random bytes available using the supplied salt, which must
be the same as the symmetric cipher block size.
____________________________________________________________________________*/
PGPError PGPCFBRandomCycle( PGPCFBContextRef ref,
const void *salt);
/*____________________________________________________________________________
Make more random bytes available using the supplied salt, which must
be the same as the symmetric cipher block size.
____________________________________________________________________________*/
PGPError PGPCFBRandomWash( PGPCFBContextRef ref,
const void *in, PGPSize bytesIn );
#if PRAGMA_IMPORT_SUPPORTED
#pragma import reset
#endif
PGP_END_C_DECLARATIONS
#endif /* ] Included_pgpCFB_h */
/*__Editor_settings____
Local Variables:
tab-width: 4
End:
vi: ts=4 sw=4
vim: si
_____________________*/
|