#ifndef _BSAFE_UTILS_H_
#define _BSAFE_UTILS_H_
#include <Security/cssmtype.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef void *BU_KEY;
CSSM_RETURN buGenSymKey(
uint32 keySizeInBits,
const CSSM_DATA *keyData,
BU_KEY *key);
CSSM_RETURN buGenKeyPair(
uint32 keySizeInBits,
CSSM_ALGORITHMS keyAlg, BU_KEY *pubKey, BU_KEY *privKey);
CSSM_RETURN buFreeKey(
BU_KEY key);
CSSM_RETURN buEncryptDecrypt(
BU_KEY key,
CSSM_BOOL forEncrypt,
CSSM_ALGORITHMS encrAlg,
CSSM_ENCRYPT_MODE mode, const CSSM_DATA *iv, uint32 effectiveKeyBits, uint32 rounds, const CSSM_DATA *inData,
CSSM_DATA_PTR outData);
CSSM_RETURN buSign(
BU_KEY key,
CSSM_ALGORITHMS sigAlg,
const CSSM_DATA *ptext,
uint32 keySizeInBits, CSSM_DATA_PTR sig);
CSSM_RETURN buVerify(
BU_KEY key,
CSSM_ALGORITHMS sigAlg,
const CSSM_DATA *ptext,
const CSSM_DATA *sig);
CSSM_RETURN buGenMac(
BU_KEY key, CSSM_ALGORITHMS macAlg, const CSSM_DATA *ptext,
unsigned *updateSizes, CSSM_DATA_PTR mac);
CSSM_RETURN buGenDigest(
CSSM_ALGORITHMS macAlg, const CSSM_DATA *ptext,
CSSM_DATA_PTR digest);
CSSM_RETURN buBsafePrivKeyToCdsa(
CSSM_ALGORITHMS keyAlg,
uint32 keySizeInBits,
BU_KEY bsafePrivKey,
CSSM_KEY_PTR cdsaPrivKey);
CSSM_RETURN buCdsaPrivKeyToBsafe(
CSSM_KEY_PTR cdsaPrivKey,
BU_KEY *bsafePrivKey);
#ifdef __cplusplus
}
#endif
#endif