modes.h revision 296341
1120586Sbms/* ==================================================================== 2120586Sbms * Copyright (c) 2008 The OpenSSL Project. All rights reserved. 3120586Sbms * 4120586Sbms * Rights for redistribution and usage in source and binary 5120586Sbms * forms are granted according to the OpenSSL license. 6120586Sbms */ 7120586Sbms 8120586Sbms#include <stddef.h> 9120586Sbms 10120586Sbms#ifdef __cplusplus 11120586Sbmsextern "C" { 12120586Sbms#endif 13120586Sbmstypedef void (*block128_f) (const unsigned char in[16], 14120586Sbms unsigned char out[16], const void *key); 15120586Sbms 16120586Sbmstypedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, 17120586Sbms size_t len, const void *key, 18120586Sbms unsigned char ivec[16], int enc); 19120586Sbms 20120586Sbmstypedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, 21120586Sbms size_t blocks, const void *key, 22120586Sbms const unsigned char ivec[16]); 23120586Sbms 24120586Sbmstypedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, 25120586Sbms size_t blocks, const void *key, 26120586Sbms const unsigned char ivec[16], 27120586Sbms unsigned char cmac[16]); 28120586Sbms 29131680Sruvoid CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, 30131681Sru size_t len, const void *key, 31120586Sbms unsigned char ivec[16], block128_f block); 32120586Sbmsvoid CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, 33120586Sbms size_t len, const void *key, 34120586Sbms unsigned char ivec[16], block128_f block); 35120586Sbms 36120586Sbmsvoid CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, 37120586Sbms size_t len, const void *key, 38120586Sbms unsigned char ivec[16], 39131680Sru unsigned char ecount_buf[16], unsigned int *num, 40131680Sru block128_f block); 41131680Sru 42120586Sbmsvoid CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, 43120586Sbms size_t len, const void *key, 44120586Sbms unsigned char ivec[16], 45120586Sbms unsigned char ecount_buf[16], 46120586Sbms unsigned int *num, ctr128_f ctr); 47120586Sbms 48120586Sbmsvoid CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, 49120586Sbms size_t len, const void *key, 50120586Sbms unsigned char ivec[16], int *num, 51120586Sbms block128_f block); 52120586Sbms 53120586Sbmsvoid CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, 54120586Sbms size_t len, const void *key, 55120586Sbms unsigned char ivec[16], int *num, 56120586Sbms int enc, block128_f block); 57120586Sbmsvoid CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, 58120586Sbms size_t length, const void *key, 59120586Sbms unsigned char ivec[16], int *num, 60120586Sbms int enc, block128_f block); 61120586Sbmsvoid CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, 62120586Sbms size_t bits, const void *key, 63120586Sbms unsigned char ivec[16], int *num, 64120586Sbms int enc, block128_f block); 65120586Sbms 66120586Sbmssize_t CRYPTO_cts128_encrypt_block(const unsigned char *in, 67120586Sbms unsigned char *out, size_t len, 68120586Sbms const void *key, unsigned char ivec[16], 69120586Sbms block128_f block); 70120586Sbmssize_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, 71120586Sbms size_t len, const void *key, 72120586Sbms unsigned char ivec[16], cbc128_f cbc); 73120586Sbmssize_t CRYPTO_cts128_decrypt_block(const unsigned char *in, 74120586Sbms unsigned char *out, size_t len, 75120586Sbms const void *key, unsigned char ivec[16], 76120586Sbms block128_f block); 77120586Sbmssize_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, 78120586Sbms size_t len, const void *key, 79120586Sbms unsigned char ivec[16], cbc128_f cbc); 80120586Sbms 81120586Sbmssize_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, 82120586Sbms unsigned char *out, size_t len, 83120586Sbms const void *key, 84120586Sbms unsigned char ivec[16], 85120586Sbms block128_f block); 86120586Sbmssize_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, 87131680Sru size_t len, const void *key, 88131680Sru unsigned char ivec[16], cbc128_f cbc); 89131680Srusize_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, 90120586Sbms unsigned char *out, size_t len, 91120586Sbms const void *key, 92120586Sbms unsigned char ivec[16], 93120586Sbms block128_f block); 94147647Shmpsize_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, 95120586Sbms size_t len, const void *key, 96 unsigned char ivec[16], cbc128_f cbc); 97 98typedef struct gcm128_context GCM128_CONTEXT; 99 100GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); 101void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); 102void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, 103 size_t len); 104int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, 105 size_t len); 106int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, 107 const unsigned char *in, unsigned char *out, 108 size_t len); 109int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, 110 const unsigned char *in, unsigned char *out, 111 size_t len); 112int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, 113 const unsigned char *in, unsigned char *out, 114 size_t len, ctr128_f stream); 115int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, 116 const unsigned char *in, unsigned char *out, 117 size_t len, ctr128_f stream); 118int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, 119 size_t len); 120void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); 121void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); 122 123typedef struct ccm128_context CCM128_CONTEXT; 124 125void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, 126 unsigned int M, unsigned int L, void *key, 127 block128_f block); 128int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, 129 size_t nlen, size_t mlen); 130void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, 131 size_t alen); 132int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, 133 unsigned char *out, size_t len); 134int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, 135 unsigned char *out, size_t len); 136int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, 137 unsigned char *out, size_t len, 138 ccm128_f stream); 139int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, 140 unsigned char *out, size_t len, 141 ccm128_f stream); 142size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); 143 144typedef struct xts128_context XTS128_CONTEXT; 145 146int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, 147 const unsigned char iv[16], 148 const unsigned char *inp, unsigned char *out, 149 size_t len, int enc); 150 151#ifdef __cplusplus 152} 153#endif 154