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