/src/openssl/engines/e_afalg.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. |
3 | | * |
4 | | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | | * this file except in compliance with the License. You can obtain a copy |
6 | | * in the file LICENSE in the source distribution or at |
7 | | * https://www.openssl.org/source/license.html |
8 | | */ |
9 | | |
10 | | #ifndef OSSL_ENGINES_E_AFALG_H |
11 | | # define OSSL_ENGINES_E_AFALG_H |
12 | | |
13 | | # if defined(__GNUC__) && __GNUC__ >= 4 && \ |
14 | | (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L) |
15 | | # pragma GCC diagnostic ignored "-Wvariadic-macros" |
16 | | # endif |
17 | | |
18 | | # ifdef ALG_DEBUG |
19 | | # define ALG_DGB(x, ...) fprintf(stderr, "ALG_DBG: " x, __VA_ARGS__) |
20 | | # define ALG_INFO(x, ...) fprintf(stderr, "ALG_INFO: " x, __VA_ARGS__) |
21 | | # define ALG_WARN(x, ...) fprintf(stderr, "ALG_WARN: " x, __VA_ARGS__) |
22 | | # else |
23 | | # define ALG_DGB(x, ...) |
24 | | # define ALG_INFO(x, ...) |
25 | | # define ALG_WARN(x, ...) |
26 | | # endif |
27 | | |
28 | 0 | # define ALG_ERR(x, ...) fprintf(stderr, "ALG_ERR: " x, __VA_ARGS__) |
29 | | # define ALG_PERR(x, ...) \ |
30 | 0 | do { \ |
31 | 0 | fprintf(stderr, "ALG_PERR: " x, __VA_ARGS__); \ |
32 | 0 | perror(NULL); \ |
33 | 0 | } while(0) |
34 | | # define ALG_PWARN(x, ...) \ |
35 | 0 | do { \ |
36 | 0 | fprintf(stderr, "ALG_PERR: " x, __VA_ARGS__); \ |
37 | 0 | perror(NULL); \ |
38 | 0 | } while(0) |
39 | | |
40 | | # ifndef AES_BLOCK_SIZE |
41 | 0 | # define AES_BLOCK_SIZE 16 |
42 | | # endif |
43 | | # define AES_KEY_SIZE_128 16 |
44 | | # define AES_KEY_SIZE_192 24 |
45 | | # define AES_KEY_SIZE_256 32 |
46 | 0 | # define AES_IV_LEN 16 |
47 | | |
48 | 0 | # define MAX_INFLIGHTS 1 |
49 | | |
50 | | typedef enum { |
51 | | MODE_UNINIT = 0, |
52 | | MODE_SYNC, |
53 | | MODE_ASYNC |
54 | | } op_mode; |
55 | | |
56 | | enum { |
57 | | AES_CBC_128 = 0, |
58 | | AES_CBC_192, |
59 | | AES_CBC_256 |
60 | | }; |
61 | | |
62 | | struct cbc_cipher_handles { |
63 | | int key_size; |
64 | | EVP_CIPHER *_hidden; |
65 | | }; |
66 | | |
67 | | typedef struct cbc_cipher_handles cbc_handles; |
68 | | |
69 | | struct afalg_aio_st { |
70 | | int efd; |
71 | | op_mode mode; |
72 | | aio_context_t aio_ctx; |
73 | | struct io_event events[MAX_INFLIGHTS]; |
74 | | struct iocb cbt[MAX_INFLIGHTS]; |
75 | | }; |
76 | | typedef struct afalg_aio_st afalg_aio; |
77 | | |
78 | | /* |
79 | | * MAGIC Number to identify correct initialisation |
80 | | * of afalg_ctx. |
81 | | */ |
82 | 0 | # define MAGIC_INIT_NUM 0x1890671 |
83 | | |
84 | | struct afalg_ctx_st { |
85 | | int init_done; |
86 | | int sfd; |
87 | | int bfd; |
88 | | # ifdef ALG_ZERO_COPY |
89 | | int zc_pipe[2]; |
90 | | # endif |
91 | | afalg_aio aio; |
92 | | }; |
93 | | |
94 | | typedef struct afalg_ctx_st afalg_ctx; |
95 | | #endif |