2018-05-04 16:08:28 +02:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#ifndef CTR_H
|
|
|
|
#define CTR_H 1
|
|
|
|
|
|
|
|
#include "blapii.h"
|
|
|
|
|
|
|
|
/* This structure is defined in this header because both ctr.c and gcm.c
|
|
|
|
* need it. */
|
|
|
|
struct CTRContextStr {
|
|
|
|
freeblCipherFunc cipher;
|
|
|
|
void *context;
|
|
|
|
unsigned char counter[MAX_BLOCK_SIZE];
|
|
|
|
unsigned char buffer[MAX_BLOCK_SIZE];
|
|
|
|
unsigned long counterBits;
|
|
|
|
unsigned int bufPtr;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct CTRContextStr CTRContext;
|
|
|
|
|
|
|
|
SECStatus CTR_InitContext(CTRContext *ctr, void *context,
|
|
|
|
freeblCipherFunc cipher, const unsigned char *param,
|
|
|
|
unsigned int blocksize);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The context argument is the inner cipher context to use with cipher. The
|
|
|
|
* CTRContext does not own context. context needs to remain valid for as long
|
|
|
|
* as the CTRContext is valid.
|
|
|
|
*
|
|
|
|
* The cipher argument is a block cipher in the ECB encrypt mode.
|
|
|
|
*/
|
|
|
|
CTRContext * CTR_CreateContext(void *context, freeblCipherFunc cipher,
|
|
|
|
const unsigned char *param, unsigned int blocksize);
|
|
|
|
|
|
|
|
void CTR_DestroyContext(CTRContext *ctr, PRBool freeit);
|
|
|
|
|
|
|
|
SECStatus CTR_Update(CTRContext *ctr, unsigned char *outbuf,
|
|
|
|
unsigned int *outlen, unsigned int maxout,
|
|
|
|
const unsigned char *inbuf, unsigned int inlen,
|
|
|
|
unsigned int blocksize);
|
|
|
|
|
cherry-picked mozilla NSS upstream changes (to rev f7a4c771997e, which is on par with 3.16.1 but without windows rand() changes):
9934c8faef29, 3c3b381c4865, 5a67f6beee9a, 1b1eb6d77728, a8b668fd72f7, bug962760, bug743700, bug857304, bug972653, bug972450, bug971358, bug903885, bug977073, bug976111, bug949939, bug947653, bug947572, bug903885, bug979106, bug966596, bug979004, bug979752, bug980848, bug938369, bug981170, bug668130, bug974693, bug975056, bug979132, bug370717, bug979070, bug985070, bug900067, bug977673, bug519255, bug989558, bug557299, bug987263, bug369802, a751a5146718, bug992343, bug952572, bug979703, bug994883, bug994869, bug993489, bug984608, bug977869, bug667371, bug672828, bug793347, bug977869
2018-07-10 17:07:31 +02:00
|
|
|
#ifdef USE_HW_AES
|
|
|
|
SECStatus CTR_Update_HW_AES(CTRContext *ctr, unsigned char *outbuf,
|
|
|
|
unsigned int *outlen, unsigned int maxout,
|
|
|
|
const unsigned char *inbuf, unsigned int inlen,
|
|
|
|
unsigned int blocksize);
|
|
|
|
#endif
|
|
|
|
|
2018-05-04 16:08:28 +02:00
|
|
|
#endif
|