// SPDX-License-Identifier: GPL-2.0-or-later /* RxRPC security handling * * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com)
*/
int __init rxrpc_init_security(void)
{ int i, ret;
for (i = 0; i < ARRAY_SIZE(rxrpc_security_types); i++) { if (rxrpc_security_types[i]) {
ret = rxrpc_security_types[i]->init(); if (ret < 0) goto failed;
}
}
return 0;
failed: for (i--; i >= 0; i--) if (rxrpc_security_types[i])
rxrpc_security_types[i]->exit(); return ret;
}
void rxrpc_exit_security(void)
{ int i;
for (i = 0; i < ARRAY_SIZE(rxrpc_security_types); i++) if (rxrpc_security_types[i])
rxrpc_security_types[i]->exit();
}
/* * look up an rxrpc security module
*/ conststruct rxrpc_security *rxrpc_security_lookup(u8 security_index)
{ if (security_index >= ARRAY_SIZE(rxrpc_security_types)) return NULL; return rxrpc_security_types[security_index];
}
/* * Initialise the security on a client call.
*/ int rxrpc_init_client_call_security(struct rxrpc_call *call)
{ conststruct rxrpc_security *sec = &rxrpc_no_security; struct rxrpc_key_token *token; struct key *key = call->key; int ret;
if (!key) goto found;
ret = key_validate(key); if (ret < 0) return ret;
for (token = key->payload.data[0]; token; token = token->next) {
sec = rxrpc_security_lookup(token->security_index); if (sec) goto found;
} return -EKEYREJECTED;
/* * initialise the security on a client connection
*/ int rxrpc_init_client_conn_security(struct rxrpc_connection *conn)
{ struct rxrpc_key_token *token; struct key *key = conn->key; int ret = 0;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.