Annotation of embedaddon/strongswan/src/libstrongswan/plugins/af_alg/af_alg_ops.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2010 Martin Willi
3: * Copyright (C) 2010 revosec AG
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: /**
17: * @defgroup af_alg_ops af_alg_ops
18: * @{ @ingroup af_alg
19: */
20:
21: #ifndef AF_ALG_OPS_H_
22: #define AF_ALG_OPS_H_
23:
24: #include <library.h>
25:
26: #include <linux/if_alg.h>
27:
28: #ifndef AF_ALG
29: #define AF_ALG 38
30: #endif /* AF_ALG */
31:
32: #ifndef SOL_ALG
33: #define SOL_ALG 279
34: #endif /* SOL_ALG */
35:
36: typedef struct af_alg_ops_t af_alg_ops_t;
37:
38: /**
39: * Helper to run AF_ALG operations.
40: */
41: struct af_alg_ops_t {
42:
43: /**
44: * Hash a chunk of data.
45: *
46: * @param data data to hash
47: * @param out buffer to write hash to, NULL for append mode
48: * @param outlen number of bytes to read into out
49: * @return TRUE if successful
50: */
51: bool (*hash)(af_alg_ops_t *this, chunk_t data, char *out, size_t outlen);
52:
53: /**
54: * Reset hasher state.
55: */
56: void (*reset)(af_alg_ops_t *this);
57:
58: /**
59: * En-/Decrypt a chunk of data.
60: *
61: * @param type crypto operation (ALG_OP_DECRYPT/ALG_OP_ENCRYPT)
62: * @param iv iv to use
63: * @param data data to encrypt/decrypt
64: * @param out buffer write processed data to
65: * @return TRUE if successful
66: */
67: bool (*crypt)(af_alg_ops_t *this, uint32_t type, chunk_t iv, chunk_t data,
68: char *out);
69:
70: /**
71: * Set the key for en-/decryption or HMAC/XCBC operations.
72: *
73: * @param key key to set for transform
74: * @return TRUE if successful
75: */
76: bool (*set_key)(af_alg_ops_t *this, chunk_t key);
77:
78: /**
79: * Destroy a af_alg_ops_t.
80: */
81: void (*destroy)(af_alg_ops_t *this);
82: };
83:
84: /**
85: * Create a af_alg_ops instance.
86: *
87: * @param type algorithm type (hash, skcipher)
88: * @param alg algorithm name
89: * @return TRUE if AF_ALG socket bound successfully
90: */
91: af_alg_ops_t *af_alg_ops_create(char *type, char *alg);
92:
93: #endif /** AF_ALG_OPS_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>