| 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 */
 | 
|  
 | 
| 
 |