mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-07 18:55:18 +00:00
48 lines
1.5 KiB
C
48 lines
1.5 KiB
C
|
/* 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 _CMAC_H_
|
||
|
#define _CMAC_H_
|
||
|
|
||
|
typedef struct CMACContextStr CMACContext;
|
||
|
|
||
|
SEC_BEGIN_PROTOS
|
||
|
|
||
|
/* Enum for identifying the underlying block cipher we're using internally. */
|
||
|
typedef enum {
|
||
|
CMAC_AES = 0
|
||
|
} CMACCipher;
|
||
|
|
||
|
/* Initialize an existing CMACContext struct. */
|
||
|
SECStatus CMAC_Init(CMACContext *ctx, CMACCipher type,
|
||
|
const unsigned char *key, unsigned int key_len);
|
||
|
|
||
|
/* Allocate and initialize a new CMAC context with the specified cipher and
|
||
|
* key. */
|
||
|
CMACContext *CMAC_Create(CMACCipher type, const unsigned char *key,
|
||
|
unsigned int key_len);
|
||
|
|
||
|
/* Called automatically by CMAC_*{Create,Init}(...). Only useful for restarting
|
||
|
* an already-started CMAC instance. */
|
||
|
SECStatus CMAC_Begin(CMACContext *ctx);
|
||
|
|
||
|
/* Add the specified bytes into the CMAC state. */
|
||
|
SECStatus CMAC_Update(CMACContext *ctx, const unsigned char *data,
|
||
|
unsigned int data_len);
|
||
|
|
||
|
/* Finalize the CMAC state and return the result. */
|
||
|
SECStatus CMAC_Finish(CMACContext *ctx, unsigned char *result,
|
||
|
unsigned int *result_len,
|
||
|
unsigned int max_result_len);
|
||
|
|
||
|
/* Note: CMAC_Clone isn't implemented here because AES doesn't expose a
|
||
|
* context-cloning operation. */
|
||
|
|
||
|
/* Destroy a CMAC context, optionally freeing it. */
|
||
|
void CMAC_Destroy(CMACContext *ctx, PRBool free_it);
|
||
|
|
||
|
SEC_END_PROTOS
|
||
|
|
||
|
#endif
|