#include <libkern/crypto/crypto_internal.h>
#include <corecrypto/ccaes.h>
#include <corecrypto/ccdes.h>
#include <corecrypto/ccpad.h>
#include <corecrypto/ccsha1.h>
#include <sys/malloc.h>
int corecrypto_available(void);
int
corecrypto_available(void)
{
return g_crypto_funcs ? 1 : 0;
}
const struct ccmode_cbc *
ccaes_cbc_decrypt_mode(void)
{
if (g_crypto_funcs) {
return g_crypto_funcs->ccaes_cbc_decrypt;
}
return NULL;
}
const struct ccmode_cbc *
ccaes_cbc_encrypt_mode(void)
{
if (g_crypto_funcs) {
return g_crypto_funcs->ccaes_cbc_encrypt;
}
return NULL;
}
const struct ccmode_cbc *
ccdes3_cbc_decrypt_mode(void)
{
if (g_crypto_funcs) {
return g_crypto_funcs->cctdes_cbc_decrypt;
}
return NULL;
}
const struct ccmode_cbc *
ccdes3_cbc_encrypt_mode(void)
{
if (g_crypto_funcs) {
return g_crypto_funcs->cctdes_cbc_encrypt;
}
return NULL;
}
size_t
ccpad_cts3_decrypt(const struct ccmode_cbc *cbc, cccbc_ctx *cbc_key,
cccbc_iv *iv, size_t nbytes, const void *in, void *out)
{
if (g_crypto_funcs) {
return (*g_crypto_funcs->ccpad_cts3_decrypt_fn)(cbc, cbc_key, iv, nbytes, in, out);
}
return 0;
}
size_t
ccpad_cts3_encrypt(const struct ccmode_cbc *cbc, cccbc_ctx *cbc_key,
cccbc_iv *iv, size_t nbytes, const void *in, void *out)
{
if (g_crypto_funcs) {
return (*g_crypto_funcs->ccpad_cts3_encrypt_fn)(cbc, cbc_key, iv, nbytes, in, out);
}
return 0;
}
const struct ccdigest_info *ccsha1_ltc_di_ptr;
const struct ccdigest_info *
ccsha1_di(void)
{
if (g_crypto_funcs) {
return g_crypto_funcs->ccsha1_di;
}
return NULL;
}
void
ccdes_key_set_odd_parity(void *key, unsigned long length)
{
if (g_crypto_funcs) {
(*g_crypto_funcs->ccdes_key_set_odd_parity_fn)(key, length);
}
}