-/* $OpenBSD: cipher_method_lib.c,v 1.6 2023/03/01 11:08:37 tb Exp $ */
+/* $OpenBSD: cipher_method_lib.c,v 1.7 2023/03/01 11:25:25 tb Exp $ */
/*
* Written by Richard Levitte (levitte@openssl.org) for the OpenSSL project
* 2015.
*
*/
-#include <string.h>
+#include <stdlib.h>
#include <openssl/evp.h>
-#include "crypto/evp.h"
+
#include "evp_local.h"
EVP_CIPHER *
EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len)
{
- EVP_CIPHER *cipher = OPENSSL_zalloc(sizeof(EVP_CIPHER));
+ EVP_CIPHER *cipher;
+
+ if ((cipher = calloc(1, sizeof(*cipher))) == NULL)
+ return NULL;
+
+ cipher->nid = cipher_type;
+ cipher->block_size = block_size;
+ cipher->key_len = key_len;
- if (cipher != NULL) {
- cipher->nid = cipher_type;
- cipher->block_size = block_size;
- cipher->key_len = key_len;
- }
return cipher;
}
EVP_CIPHER *
EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher)
{
- EVP_CIPHER *to = EVP_CIPHER_meth_new(cipher->nid, cipher->block_size,
- cipher->key_len);
+ EVP_CIPHER *copy;
+
+ if ((copy = EVP_CIPHER_meth_new(cipher->nid, cipher->block_size,
+ cipher->key_len)) == NULL)
+ return NULL;
- if (to != NULL)
- memcpy(to, cipher, sizeof(*to));
- return to;
+ *copy = *cipher;
+
+ return copy;
}
void
EVP_CIPHER_meth_free(EVP_CIPHER *cipher)
{
- OPENSSL_free(cipher);
+ free(cipher);
}
int
EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len)
{
cipher->iv_len = iv_len;
+
return 1;
}
EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags)
{
cipher->flags = flags;
+
return 1;
}
EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size)
{
cipher->ctx_size = ctx_size;
+
return 1;
}
const unsigned char *iv, int enc))
{
cipher->init = init;
+
return 1;
}
const unsigned char *in, size_t inl))
{
cipher->do_cipher = do_cipher;
+
return 1;
}
int (*cleanup)(EVP_CIPHER_CTX *))
{
cipher->cleanup = cleanup;
+
return 1;
}
int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *))
{
cipher->set_asn1_parameters = set_asn1_parameters;
+
return 1;
}
int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *))
{
cipher->get_asn1_parameters = get_asn1_parameters;
+
return 1;
}
int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr))
{
cipher->ctrl = ctrl;
+
return 1;
}