crypto.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1996-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: crypto.h,v 1.9 2002/08/06 06:37:07 bostic Exp $
  8.  */
  9. #ifndef _DB_CRYPTO_H_
  10. #define _DB_CRYPTO_H_
  11. /*
  12.  * !!!
  13.  * These are the internal representations of the algorithm flags.
  14.  * They are used in both the DB_CIPHER structure and the CIPHER
  15.  * structure so we can tell if users specified both passwd and alg
  16.  * correctly.
  17.  *
  18.  * CIPHER_ANY is used when an app joins an existing env but doesn't
  19.  * know the algorithm originally used.  This is only valid in the
  20.  * DB_CIPHER structure until we open and can set the alg.
  21.  */
  22. /*
  23.  * We store the algorithm in an 8-bit field on the meta-page.  So we
  24.  * use a numeric value, not bit fields.
  25.  * now we are limited to 8 algorithms before we cannot use bits and
  26.  * need numeric values.  That should be plenty.  It is okay for the
  27.  * CIPHER_ANY flag to go beyond that since that is never stored on disk.
  28.  */
  29. /*
  30.  * This structure is per-process, not in shared memory.
  31.  */
  32. struct __db_cipher {
  33. int (*adj_size) __P((size_t));
  34. int (*close) __P((DB_ENV *, void *));
  35. int (*decrypt) __P((DB_ENV *, void *, void *, u_int8_t *, size_t));
  36. int (*encrypt) __P((DB_ENV *, void *, void *, u_int8_t *, size_t));
  37. int (*init) __P((DB_ENV *, DB_CIPHER *));
  38. u_int8_t mac_key[DB_MAC_KEY]; /* MAC key. */
  39. void *data; /* Algorithm-specific information */
  40. #define CIPHER_AES 1 /* AES algorithm */
  41. u_int8_t alg; /* Algorithm used - See above */
  42. u_int8_t spare[3]; /* Spares */
  43. #define CIPHER_ANY 0x00000001 /* Only for DB_CIPHER */
  44. u_int32_t flags; /* Other flags */
  45. };
  46. #ifdef HAVE_CRYPTO
  47. #include "crypto/rijndael/rijndael-api-fst.h"
  48. /*
  49.  * Shared ciphering structure
  50.  * No DB_MUTEX needed because all information is read-only after creation.
  51.  */
  52. typedef struct __cipher {
  53. roff_t passwd; /* Offset to shared passwd */
  54. size_t passwd_len; /* Length of passwd */
  55. u_int32_t flags; /* Algorithm used - see above */
  56. } CIPHER;
  57. #define DB_AES_KEYLEN 128 /* AES key length */
  58. #define DB_AES_CHUNK 16 /* AES byte unit size */
  59. typedef struct __aes_cipher {
  60. keyInstance decrypt_ki; /* Decryption key instance */
  61. keyInstance encrypt_ki; /* Encryption key instance */
  62. u_int32_t flags; /* AES-specific flags */
  63. } AES_CIPHER;
  64. #include "dbinc_auto/crypto_ext.h"
  65. #endif /* HAVE_CRYPTO */
  66. #endif /* !_DB_CRYPTO_H_ */