1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 
5 #ifndef CTS_H
6 #define CTS_H 1
7 
8 #include "blapii.h"
9 
10 typedef struct CTSContextStr CTSContext;
11 
12 /*
13  * The context argument is the inner cipher context to use with cipher. The
14  * CTSContext does not own context. context needs to remain valid for as long
15  * as the CTSContext is valid.
16  *
17  * The cipher argument is a block cipher in the CBC mode.
18  */
19 CTSContext *CTS_CreateContext(void *context, freeblCipherFunc cipher,
20                               const unsigned char *iv);
21 
22 void CTS_DestroyContext(CTSContext *cts, PRBool freeit);
23 
24 SECStatus CTS_EncryptUpdate(CTSContext *cts, unsigned char *outbuf,
25                             unsigned int *outlen, unsigned int maxout,
26                             const unsigned char *inbuf, unsigned int inlen,
27                             unsigned int blocksize);
28 SECStatus CTS_DecryptUpdate(CTSContext *cts, unsigned char *outbuf,
29                             unsigned int *outlen, unsigned int maxout,
30                             const unsigned char *inbuf, unsigned int inlen,
31                             unsigned int blocksize);
32 
33 #endif
34