162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/* Null security operations.
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
562306a36Sopenharmony_ci * Written by David Howells (dhowells@redhat.com)
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <net/af_rxrpc.h>
962306a36Sopenharmony_ci#include "ar-internal.h"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistatic int none_init_connection_security(struct rxrpc_connection *conn,
1262306a36Sopenharmony_ci					 struct rxrpc_key_token *token)
1362306a36Sopenharmony_ci{
1462306a36Sopenharmony_ci	return 0;
1562306a36Sopenharmony_ci}
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * Work out how much data we can put in an unsecured packet.
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_cistatic int none_how_much_data(struct rxrpc_call *call, size_t remain,
2162306a36Sopenharmony_ci			       size_t *_buf_size, size_t *_data_size, size_t *_offset)
2262306a36Sopenharmony_ci{
2362306a36Sopenharmony_ci	*_buf_size = *_data_size = min_t(size_t, remain, RXRPC_JUMBO_DATALEN);
2462306a36Sopenharmony_ci	*_offset = 0;
2562306a36Sopenharmony_ci	return 0;
2662306a36Sopenharmony_ci}
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cistatic int none_secure_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
2962306a36Sopenharmony_ci{
3062306a36Sopenharmony_ci	return 0;
3162306a36Sopenharmony_ci}
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cistatic int none_verify_packet(struct rxrpc_call *call, struct sk_buff *skb)
3462306a36Sopenharmony_ci{
3562306a36Sopenharmony_ci	struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	sp->flags |= RXRPC_RX_VERIFIED;
3862306a36Sopenharmony_ci	return 0;
3962306a36Sopenharmony_ci}
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cistatic void none_free_call_crypto(struct rxrpc_call *call)
4262306a36Sopenharmony_ci{
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cistatic int none_respond_to_challenge(struct rxrpc_connection *conn,
4662306a36Sopenharmony_ci				     struct sk_buff *skb)
4762306a36Sopenharmony_ci{
4862306a36Sopenharmony_ci	return rxrpc_abort_conn(conn, skb, RX_PROTOCOL_ERROR, -EPROTO,
4962306a36Sopenharmony_ci				rxrpc_eproto_rxnull_challenge);
5062306a36Sopenharmony_ci}
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cistatic int none_verify_response(struct rxrpc_connection *conn,
5362306a36Sopenharmony_ci				struct sk_buff *skb)
5462306a36Sopenharmony_ci{
5562306a36Sopenharmony_ci	return rxrpc_abort_conn(conn, skb, RX_PROTOCOL_ERROR, -EPROTO,
5662306a36Sopenharmony_ci				rxrpc_eproto_rxnull_response);
5762306a36Sopenharmony_ci}
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistatic void none_clear(struct rxrpc_connection *conn)
6062306a36Sopenharmony_ci{
6162306a36Sopenharmony_ci}
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cistatic int none_init(void)
6462306a36Sopenharmony_ci{
6562306a36Sopenharmony_ci	return 0;
6662306a36Sopenharmony_ci}
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cistatic void none_exit(void)
6962306a36Sopenharmony_ci{
7062306a36Sopenharmony_ci}
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci/*
7362306a36Sopenharmony_ci * RxRPC Kerberos-based security
7462306a36Sopenharmony_ci */
7562306a36Sopenharmony_ciconst struct rxrpc_security rxrpc_no_security = {
7662306a36Sopenharmony_ci	.name				= "none",
7762306a36Sopenharmony_ci	.security_index			= RXRPC_SECURITY_NONE,
7862306a36Sopenharmony_ci	.init				= none_init,
7962306a36Sopenharmony_ci	.exit				= none_exit,
8062306a36Sopenharmony_ci	.init_connection_security	= none_init_connection_security,
8162306a36Sopenharmony_ci	.free_call_crypto		= none_free_call_crypto,
8262306a36Sopenharmony_ci	.how_much_data			= none_how_much_data,
8362306a36Sopenharmony_ci	.secure_packet			= none_secure_packet,
8462306a36Sopenharmony_ci	.verify_packet			= none_verify_packet,
8562306a36Sopenharmony_ci	.respond_to_challenge		= none_respond_to_challenge,
8662306a36Sopenharmony_ci	.verify_response		= none_verify_response,
8762306a36Sopenharmony_ci	.clear				= none_clear,
8862306a36Sopenharmony_ci};
89