LTKCPP-- LLRP Toolkit C Plus Plus Library
|
00001 /* ==================================================================== 00002 * Copyright (c) 2008 The OpenSSL Project. All rights reserved. 00003 * 00004 * Rights for redistribution and usage in source and binary 00005 * forms are granted according to the OpenSSL license. 00006 */ 00007 00008 #include <stddef.h> 00009 00010 #ifdef __cplusplus 00011 extern "C" { 00012 #endif 00013 typedef void (*block128_f) (const unsigned char in[16], 00014 unsigned char out[16], const void *key); 00015 00016 typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, 00017 size_t len, const void *key, 00018 unsigned char ivec[16], int enc); 00019 00020 typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, 00021 size_t blocks, const void *key, 00022 const unsigned char ivec[16]); 00023 00024 typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, 00025 size_t blocks, const void *key, 00026 const unsigned char ivec[16], 00027 unsigned char cmac[16]); 00028 00029 void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, 00030 size_t len, const void *key, 00031 unsigned char ivec[16], block128_f block); 00032 void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, 00033 size_t len, const void *key, 00034 unsigned char ivec[16], block128_f block); 00035 00036 void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, 00037 size_t len, const void *key, 00038 unsigned char ivec[16], 00039 unsigned char ecount_buf[16], unsigned int *num, 00040 block128_f block); 00041 00042 void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, 00043 size_t len, const void *key, 00044 unsigned char ivec[16], 00045 unsigned char ecount_buf[16], 00046 unsigned int *num, ctr128_f ctr); 00047 00048 void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, 00049 size_t len, const void *key, 00050 unsigned char ivec[16], int *num, 00051 block128_f block); 00052 00053 void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, 00054 size_t len, const void *key, 00055 unsigned char ivec[16], int *num, 00056 int enc, block128_f block); 00057 void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, 00058 size_t length, const void *key, 00059 unsigned char ivec[16], int *num, 00060 int enc, block128_f block); 00061 void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, 00062 size_t bits, const void *key, 00063 unsigned char ivec[16], int *num, 00064 int enc, block128_f block); 00065 00066 size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, 00067 unsigned char *out, size_t len, 00068 const void *key, unsigned char ivec[16], 00069 block128_f block); 00070 size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, 00071 size_t len, const void *key, 00072 unsigned char ivec[16], cbc128_f cbc); 00073 size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, 00074 unsigned char *out, size_t len, 00075 const void *key, unsigned char ivec[16], 00076 block128_f block); 00077 size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, 00078 size_t len, const void *key, 00079 unsigned char ivec[16], cbc128_f cbc); 00080 00081 size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, 00082 unsigned char *out, size_t len, 00083 const void *key, 00084 unsigned char ivec[16], 00085 block128_f block); 00086 size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, 00087 size_t len, const void *key, 00088 unsigned char ivec[16], cbc128_f cbc); 00089 size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, 00090 unsigned char *out, size_t len, 00091 const void *key, 00092 unsigned char ivec[16], 00093 block128_f block); 00094 size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, 00095 size_t len, const void *key, 00096 unsigned char ivec[16], cbc128_f cbc); 00097 00098 typedef struct gcm128_context GCM128_CONTEXT; 00099 00100 GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); 00101 void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); 00102 void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, 00103 size_t len); 00104 int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, 00105 size_t len); 00106 int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, 00107 const unsigned char *in, unsigned char *out, 00108 size_t len); 00109 int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, 00110 const unsigned char *in, unsigned char *out, 00111 size_t len); 00112 int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, 00113 const unsigned char *in, unsigned char *out, 00114 size_t len, ctr128_f stream); 00115 int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, 00116 const unsigned char *in, unsigned char *out, 00117 size_t len, ctr128_f stream); 00118 int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, 00119 size_t len); 00120 void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); 00121 void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); 00122 00123 typedef struct ccm128_context CCM128_CONTEXT; 00124 00125 void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, 00126 unsigned int M, unsigned int L, void *key, 00127 block128_f block); 00128 int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, 00129 size_t nlen, size_t mlen); 00130 void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, 00131 size_t alen); 00132 int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, 00133 unsigned char *out, size_t len); 00134 int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, 00135 unsigned char *out, size_t len); 00136 int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, 00137 unsigned char *out, size_t len, 00138 ccm128_f stream); 00139 int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, 00140 unsigned char *out, size_t len, 00141 ccm128_f stream); 00142 size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); 00143 00144 typedef struct xts128_context XTS128_CONTEXT; 00145 00146 int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, 00147 const unsigned char iv[16], 00148 const unsigned char *inp, unsigned char *out, 00149 size_t len, int enc); 00150 00151 size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, 00152 unsigned char *out, 00153 const unsigned char *in, size_t inlen, 00154 block128_f block); 00155 00156 size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, 00157 unsigned char *out, 00158 const unsigned char *in, size_t inlen, 00159 block128_f block); 00160 00161 #ifdef __cplusplus 00162 } 00163 #endif