linux/include/uapi/linux/if_alg.h
<<
>>
Prefs
   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
  14#ifndef _LINUX_IF_ALG_H
  15#define _LINUX_IF_ALG_H
  16
  17#include <linux/types.h>
  18
  19struct sockaddr_alg {
  20        __u16   salg_family;
  21        __u8    salg_type[14];
  22        __u32   salg_feat;
  23        __u32   salg_mask;
  24        __u8    salg_name[64];
  25};
  26
  27/*
  28 * Linux v4.12 and later removed the 64-byte limit on salg_name[]; it's now an
  29 * arbitrary-length field.  We had to keep the original struct above for source
  30 * compatibility with existing userspace programs, though.  Use the new struct
  31 * below if support for very long algorithm names is needed.  To do this,
  32 * allocate 'sizeof(struct sockaddr_alg_new) + strlen(algname) + 1' bytes, and
  33 * copy algname (including the null terminator) into salg_name.
  34 */
  35struct sockaddr_alg_new {
  36        __u16   salg_family;
  37        __u8    salg_type[14];
  38        __u32   salg_feat;
  39        __u32   salg_mask;
  40        __u8    salg_name[];
  41};
  42
  43struct af_alg_iv {
  44        __u32   ivlen;
  45        __u8    iv[0];
  46};
  47
  48/* Socket options */
  49#define ALG_SET_KEY                     1
  50#define ALG_SET_IV                      2
  51#define ALG_SET_OP                      3
  52#define ALG_SET_AEAD_ASSOCLEN           4
  53#define ALG_SET_AEAD_AUTHSIZE           5
  54#define ALG_SET_DRBG_ENTROPY            6
  55
  56/* Operations */
  57#define ALG_OP_DECRYPT                  0
  58#define ALG_OP_ENCRYPT                  1
  59
  60#endif  /* _LINUX_IF_ALG_H */
  61