2019-05-20 20:08:01 +03:00
// SPDX-License-Identifier: GPL-2.0-or-later
2016-04-07 19:23:58 +03:00
/* Null security operations.
*
* Copyright ( C ) 2016 Red Hat , Inc . All Rights Reserved .
* Written by David Howells ( dhowells @ redhat . com )
*/
# include <net/af_rxrpc.h>
# include "ar-internal.h"
2020-09-16 10:19:12 +03:00
static int none_init_connection_security ( struct rxrpc_connection * conn ,
struct rxrpc_key_token * token )
2016-04-07 19:23:58 +03:00
{
return 0 ;
}
2020-09-16 03:34:39 +03:00
/*
* Work out how much data we can put in an unsecured packet .
*/
static int none_how_much_data ( struct rxrpc_call * call , size_t remain ,
size_t * _buf_size , size_t * _data_size , size_t * _offset )
{
* _buf_size = * _data_size = min_t ( size_t , remain , RXRPC_JUMBO_DATALEN ) ;
* _offset = 0 ;
return 0 ;
}
2022-04-01 01:55:08 +03:00
static int none_secure_packet ( struct rxrpc_call * call , struct rxrpc_txbuf * txb )
2016-04-07 19:23:58 +03:00
{
return 0 ;
}
2022-10-07 19:44:39 +03:00
static int none_verify_packet ( struct rxrpc_call * call , struct sk_buff * skb )
2016-04-07 19:23:58 +03:00
{
2022-10-07 19:44:39 +03:00
struct rxrpc_skb_priv * sp = rxrpc_skb ( skb ) ;
sp - > flags | = RXRPC_RX_VERIFIED ;
2016-04-07 19:23:58 +03:00
return 0 ;
}
2019-07-30 17:56:57 +03:00
static void none_free_call_crypto ( struct rxrpc_call * call )
{
}
2016-04-07 19:23:58 +03:00
static int none_respond_to_challenge ( struct rxrpc_connection * conn ,
2022-10-20 11:56:36 +03:00
struct sk_buff * skb )
2016-04-07 19:23:58 +03:00
{
2022-10-06 23:45:42 +03:00
return rxrpc_abort_conn ( conn , skb , RX_PROTOCOL_ERROR , - EPROTO ,
rxrpc_eproto_rxnull_challenge ) ;
2016-04-07 19:23:58 +03:00
}
static int none_verify_response ( struct rxrpc_connection * conn ,
2022-10-20 11:56:36 +03:00
struct sk_buff * skb )
2016-04-07 19:23:58 +03:00
{
2022-10-06 23:45:42 +03:00
return rxrpc_abort_conn ( conn , skb , RX_PROTOCOL_ERROR , - EPROTO ,
rxrpc_eproto_rxnull_response ) ;
2016-04-07 19:23:58 +03:00
}
static void none_clear ( struct rxrpc_connection * conn )
{
}
static int none_init ( void )
{
return 0 ;
}
static void none_exit ( void )
{
}
/*
* RxRPC Kerberos - based security
*/
const struct rxrpc_security rxrpc_no_security = {
. name = " none " ,
. security_index = RXRPC_SECURITY_NONE ,
. init = none_init ,
. exit = none_exit ,
. init_connection_security = none_init_connection_security ,
2019-07-30 17:56:57 +03:00
. free_call_crypto = none_free_call_crypto ,
2020-09-16 03:34:39 +03:00
. how_much_data = none_how_much_data ,
2016-04-07 19:23:58 +03:00
. secure_packet = none_secure_packet ,
. verify_packet = none_verify_packet ,
. respond_to_challenge = none_respond_to_challenge ,
. verify_response = none_verify_response ,
. clear = none_clear ,
} ;