linux/net/rxrpc/insecure.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-or-later
   2/* Null security operations.
   3 *
   4 * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
   5 * Written by David Howells (dhowells@redhat.com)
   6 */
   7
   8#include <net/af_rxrpc.h>
   9#include "ar-internal.h"
  10
  11static int none_init_connection_security(struct rxrpc_connection *conn,
  12                                         struct rxrpc_key_token *token)
  13{
  14        return 0;
  15}
  16
  17/*
  18 * Work out how much data we can put in an unsecured packet.
  19 */
  20static int none_how_much_data(struct rxrpc_call *call, size_t remain,
  21                               size_t *_buf_size, size_t *_data_size, size_t *_offset)
  22{
  23        *_buf_size = *_data_size = min_t(size_t, remain, RXRPC_JUMBO_DATALEN);
  24        *_offset = 0;
  25        return 0;
  26}
  27
  28static int none_secure_packet(struct rxrpc_call *call, struct sk_buff *skb,
  29                              size_t data_size)
  30{
  31        return 0;
  32}
  33
  34static int none_verify_packet(struct rxrpc_call *call, struct sk_buff *skb,
  35                              unsigned int offset, unsigned int len,
  36                              rxrpc_seq_t seq, u16 expected_cksum)
  37{
  38        return 0;
  39}
  40
  41static void none_free_call_crypto(struct rxrpc_call *call)
  42{
  43}
  44
  45static void none_locate_data(struct rxrpc_call *call, struct sk_buff *skb,
  46                             unsigned int *_offset, unsigned int *_len)
  47{
  48}
  49
  50static int none_respond_to_challenge(struct rxrpc_connection *conn,
  51                                     struct sk_buff *skb,
  52                                     u32 *_abort_code)
  53{
  54        struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
  55
  56        trace_rxrpc_rx_eproto(NULL, sp->hdr.serial,
  57                              tracepoint_string("chall_none"));
  58        return -EPROTO;
  59}
  60
  61static int none_verify_response(struct rxrpc_connection *conn,
  62                                struct sk_buff *skb,
  63                                u32 *_abort_code)
  64{
  65        struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
  66
  67        trace_rxrpc_rx_eproto(NULL, sp->hdr.serial,
  68                              tracepoint_string("resp_none"));
  69        return -EPROTO;
  70}
  71
  72static void none_clear(struct rxrpc_connection *conn)
  73{
  74}
  75
  76static int none_init(void)
  77{
  78        return 0;
  79}
  80
  81static void none_exit(void)
  82{
  83}
  84
  85/*
  86 * RxRPC Kerberos-based security
  87 */
  88const struct rxrpc_security rxrpc_no_security = {
  89        .name                           = "none",
  90        .security_index                 = RXRPC_SECURITY_NONE,
  91        .init                           = none_init,
  92        .exit                           = none_exit,
  93        .init_connection_security       = none_init_connection_security,
  94        .free_call_crypto               = none_free_call_crypto,
  95        .how_much_data                  = none_how_much_data,
  96        .secure_packet                  = none_secure_packet,
  97        .verify_packet                  = none_verify_packet,
  98        .locate_data                    = none_locate_data,
  99        .respond_to_challenge           = none_respond_to_challenge,
 100        .verify_response                = none_verify_response,
 101        .clear                          = none_clear,
 102};
 103