2019-05-20 19:08:01 +02:00
// SPDX-License-Identifier: GPL-2.0-or-later
2016-04-07 17:23:58 +01: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 08:19:12 +01:00
static int none_init_connection_security ( struct rxrpc_connection * conn ,
struct rxrpc_key_token * token )
2016-04-07 17:23:58 +01:00
{
return 0 ;
}
2020-09-16 01:34:39 +01: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 ;
}
2020-09-17 23:23:38 +01:00
static int none_secure_packet ( struct rxrpc_call * call , struct sk_buff * skb ,
size_t data_size )
2016-04-07 17:23:58 +01:00
{
return 0 ;
}
2022-10-07 17:44:39 +01:00
static int none_verify_packet ( struct rxrpc_call * call , struct sk_buff * skb )
2016-04-07 17:23:58 +01:00
{
2022-10-07 17:44:39 +01:00
struct rxrpc_skb_priv * sp = rxrpc_skb ( skb ) ;
sp - > flags | = RXRPC_RX_VERIFIED ;
2016-04-07 17:23:58 +01:00
return 0 ;
}
2019-07-30 15:56:57 +01:00
static void none_free_call_crypto ( struct rxrpc_call * call )
{
}
2016-04-07 17:23:58 +01:00
static int none_respond_to_challenge ( struct rxrpc_connection * conn ,
2016-09-06 22:19:51 +01:00
struct sk_buff * skb ,
u32 * _abort_code )
2016-04-07 17:23:58 +01:00
{
2017-04-06 10:12:00 +01:00
struct rxrpc_skb_priv * sp = rxrpc_skb ( skb ) ;
trace_rxrpc_rx_eproto ( NULL , sp - > hdr . serial ,
tracepoint_string ( " chall_none " ) ) ;
2016-04-07 17:23:58 +01:00
return - EPROTO ;
}
static int none_verify_response ( struct rxrpc_connection * conn ,
2016-09-06 22:19:51 +01:00
struct sk_buff * skb ,
u32 * _abort_code )
2016-04-07 17:23:58 +01:00
{
2017-04-06 10:12:00 +01:00
struct rxrpc_skb_priv * sp = rxrpc_skb ( skb ) ;
trace_rxrpc_rx_eproto ( NULL , sp - > hdr . serial ,
tracepoint_string ( " resp_none " ) ) ;
2016-04-07 17:23:58 +01:00
return - EPROTO ;
}
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 15:56:57 +01:00
. free_call_crypto = none_free_call_crypto ,
2020-09-16 01:34:39 +01:00
. how_much_data = none_how_much_data ,
2016-04-07 17:23:58 +01: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 ,
} ;