125981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * if_alg: User-space algorithm interface
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or modify it
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * under the terms of the GNU General Public License as published by the Free
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Software Foundation; either version 2 of the License, or (at your option)
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * any later version.
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_IF_ALG_H
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_IF_ALG_H
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sockaddr_alg {
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16	salg_family;
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	salg_type[14];
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	salg_feat;
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	salg_mask;
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	salg_name[64];
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct af_alg_iv {
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	ivlen;
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	iv[0];
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Socket options */
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ALG_SET_KEY			1
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ALG_SET_IV			2
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ALG_SET_OP			3
3612e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#define ALG_SET_AEAD_ASSOCLEN		4
3712e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#define ALG_SET_AEAD_AUTHSIZE		5
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Operations */
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ALG_OP_DECRYPT			0
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ALG_OP_ENCRYPT			1
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif	/* _LINUX_IF_ALG_H */
44