logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

if_alg.h (1601B)


  1. /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
  2. /*
  3. * if_alg: User-space algorithm interface
  4. *
  5. * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
  6. *
  7. * This program is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU General Public License as published by the Free
  9. * Software Foundation; either version 2 of the License, or (at your option)
  10. * any later version.
  11. *
  12. */
  13. #ifndef _LINUX_IF_ALG_H
  14. #define _LINUX_IF_ALG_H
  15. #include <linux/types.h>
  16. struct sockaddr_alg {
  17. __u16 salg_family;
  18. __u8 salg_type[14];
  19. __u32 salg_feat;
  20. __u32 salg_mask;
  21. __u8 salg_name[64];
  22. };
  23. /*
  24. * Linux v4.12 and later removed the 64-byte limit on salg_name[]; it's now an
  25. * arbitrary-length field. We had to keep the original struct above for source
  26. * compatibility with existing userspace programs, though. Use the new struct
  27. * below if support for very long algorithm names is needed. To do this,
  28. * allocate 'sizeof(struct sockaddr_alg_new) + strlen(algname) + 1' bytes, and
  29. * copy algname (including the null terminator) into salg_name.
  30. */
  31. struct sockaddr_alg_new {
  32. __u16 salg_family;
  33. __u8 salg_type[14];
  34. __u32 salg_feat;
  35. __u32 salg_mask;
  36. __u8 salg_name[];
  37. };
  38. struct af_alg_iv {
  39. __u32 ivlen;
  40. __u8 iv[];
  41. };
  42. /* Socket options */
  43. #define ALG_SET_KEY 1
  44. #define ALG_SET_IV 2
  45. #define ALG_SET_OP 3
  46. #define ALG_SET_AEAD_ASSOCLEN 4
  47. #define ALG_SET_AEAD_AUTHSIZE 5
  48. #define ALG_SET_DRBG_ENTROPY 6
  49. #define ALG_SET_KEY_BY_KEY_SERIAL 7
  50. /* Operations */
  51. #define ALG_OP_DECRYPT 0
  52. #define ALG_OP_ENCRYPT 1
  53. #endif /* _LINUX_IF_ALG_H */