xref: /freebsd/crypto/openssl/crypto/evp/e_bf.c (revision b077aed3)
1e71b7053SJung-uk Kim /*
2b077aed3SPierre Pronchery  * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
3ddd58736SKris Kennaway  *
4b077aed3SPierre Pronchery  * Licensed under the Apache License 2.0 (the "License").  You may not use
5e71b7053SJung-uk Kim  * this file except in compliance with the License.  You can obtain a copy
6e71b7053SJung-uk Kim  * in the file LICENSE in the source distribution or at
7e71b7053SJung-uk Kim  * https://www.openssl.org/source/license.html
8ddd58736SKris Kennaway  */
9ddd58736SKris Kennaway 
10b077aed3SPierre Pronchery /*
11b077aed3SPierre Pronchery  * BF low level APIs are deprecated for public use, but still ok for internal
12b077aed3SPierre Pronchery  * use.
13b077aed3SPierre Pronchery  */
14b077aed3SPierre Pronchery #include "internal/deprecated.h"
15b077aed3SPierre Pronchery 
16ddd58736SKris Kennaway #include <stdio.h>
17e71b7053SJung-uk Kim #include "internal/cryptlib.h"
183b4e3dcbSSimon L. B. Nielsen #ifndef OPENSSL_NO_BF
19ddd58736SKris Kennaway # include <openssl/evp.h>
2017f01e99SJung-uk Kim # include "crypto/evp.h"
21ddd58736SKris Kennaway # include <openssl/objects.h>
225c87c606SMark Murray # include <openssl/blowfish.h>
23b077aed3SPierre Pronchery # include "evp_local.h"
24ddd58736SKris Kennaway 
25ddd58736SKris Kennaway static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
26ddd58736SKris Kennaway                        const unsigned char *iv, int enc);
27ddd58736SKris Kennaway 
286f9291ceSJung-uk Kim typedef struct {
295c87c606SMark Murray     BF_KEY ks;
305c87c606SMark Murray } EVP_BF_KEY;
315c87c606SMark Murray 
325c87c606SMark Murray # define data(ctx)       EVP_C_DATA(EVP_BF_KEY,ctx)
335c87c606SMark Murray 
345c87c606SMark Murray IMPLEMENT_BLOCK_CIPHER(bf, ks, BF, EVP_BF_KEY, NID_bf, 8, 16, 8, 64,
3526d191b4SKris Kennaway                        EVP_CIPH_VARIABLE_LENGTH, bf_init_key, NULL,
36ddd58736SKris Kennaway                        EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, NULL)
37ddd58736SKris Kennaway 
bf_init_key(EVP_CIPHER_CTX * ctx,const unsigned char * key,const unsigned char * iv,int enc)38ddd58736SKris Kennaway static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
39ddd58736SKris Kennaway                        const unsigned char *iv, int enc)
40ddd58736SKris Kennaway {
41b077aed3SPierre Pronchery     int len = EVP_CIPHER_CTX_get_key_length(ctx);
42b077aed3SPierre Pronchery 
43b077aed3SPierre Pronchery     if (len < 0)
44b077aed3SPierre Pronchery         return 0;
45b077aed3SPierre Pronchery     BF_set_key(&data(ctx)->ks, len, key);
46ddd58736SKris Kennaway     return 1;
47ddd58736SKris Kennaway }
48ddd58736SKris Kennaway 
49ddd58736SKris Kennaway #endif
50