| Index: srtp/crypto/include/aes_icm_ossl.h
|
| diff --git a/srtp/crypto/include/aes_icm.h b/srtp/crypto/include/aes_icm_ossl.h
|
| similarity index 59%
|
| copy from srtp/crypto/include/aes_icm.h
|
| copy to srtp/crypto/include/aes_icm_ossl.h
|
| index 6b4aea69980e39a758b0bb55f1374de82b95747f..b4ec40a41cc14b4929732e9f126c02808671f762 100644
|
| --- a/srtp/crypto/include/aes_icm.h
|
| +++ b/srtp/crypto/include/aes_icm_ossl.h
|
| @@ -8,26 +8,26 @@
|
| *
|
| */
|
| /*
|
| - *
|
| - * Copyright (c) 2001-2006, Cisco Systems, Inc.
|
| + *
|
| + * Copyright (c) 2001-2005,2012, Cisco Systems, Inc.
|
| * All rights reserved.
|
| - *
|
| + *
|
| * Redistribution and use in source and binary forms, with or without
|
| * modification, are permitted provided that the following conditions
|
| * are met:
|
| - *
|
| + *
|
| * Redistributions of source code must retain the above copyright
|
| * notice, this list of conditions and the following disclaimer.
|
| - *
|
| + *
|
| * Redistributions in binary form must reproduce the above
|
| * copyright notice, this list of conditions and the following
|
| * disclaimer in the documentation and/or other materials provided
|
| * with the distribution.
|
| - *
|
| + *
|
| * Neither the name of the Cisco Systems, Inc. nor the names of its
|
| * contributors may be used to endorse or promote products derived
|
| * from this software without specific prior written permission.
|
| - *
|
| + *
|
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
| @@ -46,47 +46,40 @@
|
| #ifndef AES_ICM_H
|
| #define AES_ICM_H
|
|
|
| -#include "aes.h"
|
| #include "cipher.h"
|
| +#include <openssl/evp.h>
|
| +#include <openssl/aes.h>
|
|
|
| -typedef struct {
|
| - v128_t counter; /* holds the counter value */
|
| - v128_t offset; /* initial offset value */
|
| - v128_t keystream_buffer; /* buffers bytes of keystream */
|
| - aes_expanded_key_t expanded_key; /* the cipher key */
|
| - int bytes_in_buffer; /* number of unused bytes in buffer */
|
| -} aes_icm_ctx_t;
|
| -
|
| +#ifdef OPENSSL_IS_BORINGSSL
|
| +// BoringSSL doesn't support AES-192, cipher will be disabled
|
| +#define SRTP_NO_AES192
|
| +#endif
|
|
|
| -err_status_t
|
| -aes_icm_context_init(aes_icm_ctx_t *c,
|
| - const unsigned char *key,
|
| - int key_len);
|
| +#define SALT_SIZE 14
|
| +#define AES_128_KEYSIZE AES_BLOCK_SIZE
|
| +#ifndef SRTP_NO_AES192
|
| +#define AES_192_KEYSIZE AES_BLOCK_SIZE + AES_BLOCK_SIZE / 2
|
| +#endif
|
| +#define AES_256_KEYSIZE AES_BLOCK_SIZE * 2
|
| +#define AES_128_KEYSIZE_WSALT AES_128_KEYSIZE + SALT_SIZE
|
| +#ifndef SRTP_NO_AES192
|
| +#define AES_192_KEYSIZE_WSALT AES_192_KEYSIZE + SALT_SIZE
|
| +#endif
|
| +#define AES_256_KEYSIZE_WSALT AES_256_KEYSIZE + SALT_SIZE
|
|
|
| -err_status_t
|
| -aes_icm_set_iv(aes_icm_ctx_t *c, void *iv);
|
| -
|
| -err_status_t
|
| -aes_icm_encrypt(aes_icm_ctx_t *c,
|
| - unsigned char *buf, unsigned int *bytes_to_encr);
|
| +typedef struct {
|
| + v128_t counter; /* holds the counter value */
|
| + v128_t offset; /* initial offset value */
|
| + v256_t key;
|
| + int key_size;
|
| + EVP_CIPHER_CTX ctx;
|
| +} aes_icm_ctx_t;
|
|
|
| -err_status_t
|
| -aes_icm_output(aes_icm_ctx_t *c,
|
| - unsigned char *buf, int bytes_to_output);
|
| +err_status_t aes_icm_openssl_set_iv(aes_icm_ctx_t *c, void *iv, int dir);
|
| +err_status_t aes_icm_openssl_context_init(aes_icm_ctx_t *c, const uint8_t *key, int len);
|
| +err_status_t aes_icm_output(aes_icm_ctx_t *c, uint8_t *buffer, int num_octets_to_output);
|
| +uint16_t aes_icm_bytes_encrypted(aes_icm_ctx_t *c);
|
|
|
| -err_status_t
|
| -aes_icm_dealloc(cipher_t *c);
|
| -
|
| -err_status_t
|
| -aes_icm_encrypt_ismacryp(aes_icm_ctx_t *c,
|
| - unsigned char *buf,
|
| - unsigned int *enc_len,
|
| - int forIsmacryp);
|
| -
|
| -err_status_t
|
| -aes_icm_alloc_ismacryp(cipher_t **c,
|
| - int key_len,
|
| - int forIsmacryp);
|
|
|
| #endif /* AES_ICM_H */
|
|
|
|
|