Ap4AesBlockCipher.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.  * AES Block cipher
  3.  * (c) 2005 Gilles Boccon-Gibod
  4.  * Portions (c) 2001, Dr Brian Gladman (see below)
  5.  */
  6. /*
  7.  -------------------------------------------------------------------------
  8.  Copyright (c) 2001, Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK.
  9.  All rights reserved.
  10.  LICENSE TERMS
  11.  The free distribution and use of this software in both source and binary 
  12.  form is allowed (with or without changes) provided that:
  13.    1. distributions of this source code include the above copyright 
  14.       notice, this list of conditions and the following disclaimer;
  15.    2. distributions in binary form include the above copyright
  16.       notice, this list of conditions and the following disclaimer
  17.       in the documentation and/or other associated materials;
  18.    3. the copyright holder's name is not used to endorse products 
  19.       built using this software without specific written permission. 
  20.  DISCLAIMER
  21.  This software is provided 'as is' with no explicit or implied warranties
  22.  in respect of its properties, including, but not limited to, correctness 
  23.  and fitness for purpose.
  24.  -------------------------------------------------------------------------
  25.  Issue Date: 29/07/2002
  26. */
  27. #ifndef _AP4_AES_BLOCK_CIPHER_H_
  28. #define _AP4_AES_BLOCK_CIPHER_H_
  29. /*----------------------------------------------------------------------
  30. |       includes
  31. +---------------------------------------------------------------------*/
  32. #include "Ap4Types.h"
  33. #include "Ap4Config.h"
  34. /*----------------------------------------------------------------------
  35. |       AES constants
  36. +---------------------------------------------------------------------*/
  37. #define AP4_AES_BLOCK_SIZE  16
  38. #define AP4_AES_KEY_LENGTH  16
  39. /*----------------------------------------------------------------------
  40. |       AES types
  41. +---------------------------------------------------------------------*/
  42. typedef AP4_UI32     aes_32t;
  43. typedef AP4_UI08     aes_08t;
  44. typedef unsigned int aes_rval;
  45. typedef struct                     // the AES context for encryption
  46. {   aes_32t    k_sch[4*AP4_AES_BLOCK_SIZE];   // the encryption key schedule
  47.     aes_32t    n_rnd;              // the number of cipher rounds
  48.     aes_32t    n_blk;              // the number of bytes in the state
  49. } aes_ctx;
  50. #define aes_bad      0             // bad function return value
  51. #define aes_good     1             // good function return value
  52. /*----------------------------------------------------------------------
  53. |       AP4_AesBlockCipher class
  54. +---------------------------------------------------------------------*/
  55. class AP4_AesBlockCipher
  56. {
  57.  public:
  58.     // constructor and destructor
  59.     AP4_AesBlockCipher(const AP4_UI08* key);
  60.    ~AP4_AesBlockCipher();
  61.     
  62.     // methods
  63.     AP4_Result EncryptBlock(const AP4_UI08* block_in, AP4_UI08* block_out);
  64.  private:
  65.     aes_ctx m_Context;
  66. };
  67. #endif // _AP4_AES_BLOCK_CIPHER_H_