Added OPENSSL_NO_OCB guards
Reviewed-by: Tim Hudson <tjh@openssl.org>
This commit is contained in:
parent
e4bbee9633
commit
3feb63054a
@ -172,7 +172,9 @@ void OpenSSL_add_all_ciphers(void)
|
|||||||
EVP_add_cipher(EVP_aes_128_ofb());
|
EVP_add_cipher(EVP_aes_128_ofb());
|
||||||
EVP_add_cipher(EVP_aes_128_ctr());
|
EVP_add_cipher(EVP_aes_128_ctr());
|
||||||
EVP_add_cipher(EVP_aes_128_gcm());
|
EVP_add_cipher(EVP_aes_128_gcm());
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
EVP_add_cipher(EVP_aes_128_ocb());
|
EVP_add_cipher(EVP_aes_128_ocb());
|
||||||
|
#endif
|
||||||
EVP_add_cipher(EVP_aes_128_xts());
|
EVP_add_cipher(EVP_aes_128_xts());
|
||||||
EVP_add_cipher(EVP_aes_128_ccm());
|
EVP_add_cipher(EVP_aes_128_ccm());
|
||||||
EVP_add_cipher(EVP_aes_128_wrap());
|
EVP_add_cipher(EVP_aes_128_wrap());
|
||||||
@ -187,7 +189,9 @@ void OpenSSL_add_all_ciphers(void)
|
|||||||
EVP_add_cipher(EVP_aes_192_ofb());
|
EVP_add_cipher(EVP_aes_192_ofb());
|
||||||
EVP_add_cipher(EVP_aes_192_ctr());
|
EVP_add_cipher(EVP_aes_192_ctr());
|
||||||
EVP_add_cipher(EVP_aes_192_gcm());
|
EVP_add_cipher(EVP_aes_192_gcm());
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
EVP_add_cipher(EVP_aes_192_ocb());
|
EVP_add_cipher(EVP_aes_192_ocb());
|
||||||
|
#endif
|
||||||
EVP_add_cipher(EVP_aes_192_ccm());
|
EVP_add_cipher(EVP_aes_192_ccm());
|
||||||
EVP_add_cipher(EVP_aes_192_wrap());
|
EVP_add_cipher(EVP_aes_192_wrap());
|
||||||
EVP_add_cipher(EVP_aes_192_wrap_pad());
|
EVP_add_cipher(EVP_aes_192_wrap_pad());
|
||||||
@ -201,7 +205,9 @@ void OpenSSL_add_all_ciphers(void)
|
|||||||
EVP_add_cipher(EVP_aes_256_ofb());
|
EVP_add_cipher(EVP_aes_256_ofb());
|
||||||
EVP_add_cipher(EVP_aes_256_ctr());
|
EVP_add_cipher(EVP_aes_256_ctr());
|
||||||
EVP_add_cipher(EVP_aes_256_gcm());
|
EVP_add_cipher(EVP_aes_256_gcm());
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
EVP_add_cipher(EVP_aes_256_ocb());
|
EVP_add_cipher(EVP_aes_256_ocb());
|
||||||
|
#endif
|
||||||
EVP_add_cipher(EVP_aes_256_xts());
|
EVP_add_cipher(EVP_aes_256_xts());
|
||||||
EVP_add_cipher(EVP_aes_256_ccm());
|
EVP_add_cipher(EVP_aes_256_ccm());
|
||||||
EVP_add_cipher(EVP_aes_256_wrap());
|
EVP_add_cipher(EVP_aes_256_wrap());
|
||||||
|
@ -107,7 +107,7 @@ typedef struct
|
|||||||
ccm128_f str;
|
ccm128_f str;
|
||||||
} EVP_AES_CCM_CTX;
|
} EVP_AES_CCM_CTX;
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
AES_KEY ksenc; /* AES key schedule to use for encryption */
|
AES_KEY ksenc; /* AES key schedule to use for encryption */
|
||||||
@ -124,6 +124,7 @@ typedef struct
|
|||||||
int ivlen; /* IV length */
|
int ivlen; /* IV length */
|
||||||
int taglen;
|
int taglen;
|
||||||
} EVP_AES_OCB_CTX;
|
} EVP_AES_OCB_CTX;
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAXBITCHUNK ((size_t)1<<(sizeof(size_t)*8-4))
|
#define MAXBITCHUNK ((size_t)1<<(sizeof(size_t)*8-4))
|
||||||
|
|
||||||
@ -469,6 +470,7 @@ static int aesni_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
|||||||
static int aesni_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int aesni_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len);
|
const unsigned char *in, size_t len);
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
static int aesni_ocb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
static int aesni_ocb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
||||||
const unsigned char *iv, int enc)
|
const unsigned char *iv, int enc)
|
||||||
{
|
{
|
||||||
@ -519,7 +521,7 @@ static int aesni_ocb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
|||||||
#define aesni_ocb_cipher aes_ocb_cipher
|
#define aesni_ocb_cipher aes_ocb_cipher
|
||||||
static int aesni_ocb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int aesni_ocb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len);
|
const unsigned char *in, size_t len);
|
||||||
|
#endif /* OPENSSL_NO_OCB */
|
||||||
|
|
||||||
#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \
|
#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \
|
||||||
static const EVP_CIPHER aesni_##keylen##_##mode = { \
|
static const EVP_CIPHER aesni_##keylen##_##mode = { \
|
||||||
@ -907,7 +909,7 @@ static int aes_t4_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
|||||||
static int aes_t4_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int aes_t4_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len);
|
const unsigned char *in, size_t len);
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
static int aes_t4_ocb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
static int aes_t4_ocb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
||||||
const unsigned char *iv, int enc)
|
const unsigned char *iv, int enc)
|
||||||
{
|
{
|
||||||
@ -958,7 +960,7 @@ static int aes_t4_ocb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
|||||||
#define aes_t4_ocb_cipher aes_ocb_cipher
|
#define aes_t4_ocb_cipher aes_ocb_cipher
|
||||||
static int aes_t4_ocb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int aes_t4_ocb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len);
|
const unsigned char *in, size_t len);
|
||||||
|
#endif /* OPENSSL_NO_OCB */
|
||||||
|
|
||||||
#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \
|
#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \
|
||||||
static const EVP_CIPHER aes_t4_##keylen##_##mode = { \
|
static const EVP_CIPHER aes_t4_##keylen##_##mode = { \
|
||||||
@ -2361,6 +2363,7 @@ const EVP_CIPHER *EVP_aes_256_wrap_pad(void)
|
|||||||
return &aes_256_wrap_pad;
|
return &aes_256_wrap_pad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
static int aes_ocb_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
|
static int aes_ocb_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
|
||||||
{
|
{
|
||||||
EVP_AES_OCB_CTX *octx = c->cipher_data;
|
EVP_AES_OCB_CTX *octx = c->cipher_data;
|
||||||
@ -2645,5 +2648,6 @@ static int aes_ocb_cleanup(EVP_CIPHER_CTX *c)
|
|||||||
BLOCK_CIPHER_custom(NID_aes,128,16,12,ocb,OCB,CUSTOM_FLAGS)
|
BLOCK_CIPHER_custom(NID_aes,128,16,12,ocb,OCB,CUSTOM_FLAGS)
|
||||||
BLOCK_CIPHER_custom(NID_aes,192,16,12,ocb,OCB,CUSTOM_FLAGS)
|
BLOCK_CIPHER_custom(NID_aes,192,16,12,ocb,OCB,CUSTOM_FLAGS)
|
||||||
BLOCK_CIPHER_custom(NID_aes,256,16,12,ocb,OCB,CUSTOM_FLAGS)
|
BLOCK_CIPHER_custom(NID_aes,256,16,12,ocb,OCB,CUSTOM_FLAGS)
|
||||||
|
#endif /* OPENSSL_NO_OCB */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -857,7 +857,9 @@ const EVP_CIPHER *EVP_aes_128_gcm(void);
|
|||||||
const EVP_CIPHER *EVP_aes_128_xts(void);
|
const EVP_CIPHER *EVP_aes_128_xts(void);
|
||||||
const EVP_CIPHER *EVP_aes_128_wrap(void);
|
const EVP_CIPHER *EVP_aes_128_wrap(void);
|
||||||
const EVP_CIPHER *EVP_aes_128_wrap_pad(void);
|
const EVP_CIPHER *EVP_aes_128_wrap_pad(void);
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
const EVP_CIPHER *EVP_aes_128_ocb(void);
|
const EVP_CIPHER *EVP_aes_128_ocb(void);
|
||||||
|
#endif
|
||||||
const EVP_CIPHER *EVP_aes_192_ecb(void);
|
const EVP_CIPHER *EVP_aes_192_ecb(void);
|
||||||
const EVP_CIPHER *EVP_aes_192_cbc(void);
|
const EVP_CIPHER *EVP_aes_192_cbc(void);
|
||||||
const EVP_CIPHER *EVP_aes_192_cfb1(void);
|
const EVP_CIPHER *EVP_aes_192_cfb1(void);
|
||||||
@ -870,7 +872,9 @@ const EVP_CIPHER *EVP_aes_192_ccm(void);
|
|||||||
const EVP_CIPHER *EVP_aes_192_gcm(void);
|
const EVP_CIPHER *EVP_aes_192_gcm(void);
|
||||||
const EVP_CIPHER *EVP_aes_192_wrap(void);
|
const EVP_CIPHER *EVP_aes_192_wrap(void);
|
||||||
const EVP_CIPHER *EVP_aes_192_wrap_pad(void);
|
const EVP_CIPHER *EVP_aes_192_wrap_pad(void);
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
const EVP_CIPHER *EVP_aes_192_ocb(void);
|
const EVP_CIPHER *EVP_aes_192_ocb(void);
|
||||||
|
#endif
|
||||||
const EVP_CIPHER *EVP_aes_256_ecb(void);
|
const EVP_CIPHER *EVP_aes_256_ecb(void);
|
||||||
const EVP_CIPHER *EVP_aes_256_cbc(void);
|
const EVP_CIPHER *EVP_aes_256_cbc(void);
|
||||||
const EVP_CIPHER *EVP_aes_256_cfb1(void);
|
const EVP_CIPHER *EVP_aes_256_cfb1(void);
|
||||||
@ -884,7 +888,9 @@ const EVP_CIPHER *EVP_aes_256_gcm(void);
|
|||||||
const EVP_CIPHER *EVP_aes_256_xts(void);
|
const EVP_CIPHER *EVP_aes_256_xts(void);
|
||||||
const EVP_CIPHER *EVP_aes_256_wrap(void);
|
const EVP_CIPHER *EVP_aes_256_wrap(void);
|
||||||
const EVP_CIPHER *EVP_aes_256_wrap_pad(void);
|
const EVP_CIPHER *EVP_aes_256_wrap_pad(void);
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
const EVP_CIPHER *EVP_aes_256_ocb(void);
|
const EVP_CIPHER *EVP_aes_256_ocb(void);
|
||||||
|
#endif
|
||||||
# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
|
# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
|
||||||
const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void);
|
const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void);
|
||||||
const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void);
|
const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void);
|
||||||
|
@ -462,6 +462,10 @@ static int test_cipher(const char *cipher,const unsigned char *key,int kn,
|
|||||||
{
|
{
|
||||||
const EVP_CIPHER *c;
|
const EVP_CIPHER *c;
|
||||||
|
|
||||||
|
#ifdef OPENSSL_NO_OCB
|
||||||
|
if(strstr(cipher, "ocb") != NULL)
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
c=EVP_get_cipherbyname(cipher);
|
c=EVP_get_cipherbyname(cipher);
|
||||||
if(!c)
|
if(!c)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -152,6 +152,7 @@ size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv,
|
|||||||
unsigned char *out,
|
unsigned char *out,
|
||||||
const unsigned char *in, size_t inlen, block128_f block);
|
const unsigned char *in, size_t inlen, block128_f block);
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
typedef struct ocb128_context OCB128_CONTEXT;
|
typedef struct ocb128_context OCB128_CONTEXT;
|
||||||
|
|
||||||
OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, block128_f encrypt, block128_f decrypt);
|
OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, block128_f encrypt, block128_f decrypt);
|
||||||
@ -172,6 +173,7 @@ int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx,const unsigned char *tag,
|
|||||||
size_t len);
|
size_t len);
|
||||||
int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len);
|
int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len);
|
||||||
void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx);
|
void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx);
|
||||||
|
#endif /* OPENSSL_NO_ECB */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -136,20 +136,22 @@ struct ccm128_context {
|
|||||||
void *key;
|
void *key;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
|
|
||||||
#ifdef STRICT_ALIGNMENT
|
#ifdef STRICT_ALIGNMENT
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char a[16];
|
unsigned char a[16];
|
||||||
} OCB_BLOCK;
|
} OCB_BLOCK;
|
||||||
# define ocb_block16_xor(in1,in2,out) \
|
# define ocb_block16_xor(in1,in2,out) \
|
||||||
ocb_block_xor((in1)->a,(in2)->a,16,(out)->a)
|
ocb_block_xor((in1)->a,(in2)->a,16,(out)->a)
|
||||||
#else
|
#else /* STRICT_ALIGNMENT */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u64 a;
|
u64 a;
|
||||||
u64 b;
|
u64 b;
|
||||||
} OCB_BLOCK;
|
} OCB_BLOCK;
|
||||||
# define ocb_block16_xor(in1,in2,out) \
|
# define ocb_block16_xor(in1,in2,out) \
|
||||||
(out)->a=(in1)->a^(in2)->a; (out)->b=(in1)->b^(in2)->b;
|
(out)->a=(in1)->a^(in2)->a; (out)->b=(in1)->b^(in2)->b;
|
||||||
#endif
|
#endif /* STRICT_ALIGNMENT */
|
||||||
|
|
||||||
struct ocb128_context {
|
struct ocb128_context {
|
||||||
/* Need both encrypt and decrypt key schedules for decryption */
|
/* Need both encrypt and decrypt key schedules for decryption */
|
||||||
@ -175,3 +177,4 @@ struct ocb128_context {
|
|||||||
OCB_BLOCK checksum;
|
OCB_BLOCK checksum;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
#endif /* OPENSSL_NO_OCB */
|
||||||
|
@ -51,6 +51,8 @@
|
|||||||
#include <openssl/crypto.h>
|
#include <openssl/crypto.h>
|
||||||
#include "modes_lcl.h"
|
#include "modes_lcl.h"
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_OCB
|
||||||
|
|
||||||
union ublock {
|
union ublock {
|
||||||
unsigned char *chrblk;
|
unsigned char *chrblk;
|
||||||
OCB_BLOCK *ocbblk;
|
OCB_BLOCK *ocbblk;
|
||||||
@ -585,3 +587,5 @@ void CRYPTO_ocb128_cleanup(OCB128_CONTEXT * ctx)
|
|||||||
OPENSSL_cleanse(ctx, sizeof(*ctx));
|
OPENSSL_cleanse(ctx, sizeof(*ctx));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* OPENSSL_NO_OCB */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user