mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-24 15:42:32 +00:00
RxRPC: Allow key payloads to be passed in XDR form
Allow add_key() and KEYCTL_INSTANTIATE to accept key payloads in XDR form as described by openafs-1.4.10/src/auth/afs_token.xg. This provides a way of passing kaserver, Kerberos 4, Kerberos 5 and GSSAPI keys from userspace, and allows for future expansion. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8b815477f3
commit
339412841d
5 changed files with 353 additions and 75 deletions
|
@ -16,6 +16,7 @@
|
|||
#include <linux/crypto.h>
|
||||
#include <net/sock.h>
|
||||
#include <net/af_rxrpc.h>
|
||||
#include <keys/rxrpc-type.h>
|
||||
#include "ar-internal.h"
|
||||
|
||||
static LIST_HEAD(rxrpc_security_methods);
|
||||
|
@ -122,6 +123,7 @@ EXPORT_SYMBOL_GPL(rxrpc_unregister_security);
|
|||
*/
|
||||
int rxrpc_init_client_conn_security(struct rxrpc_connection *conn)
|
||||
{
|
||||
struct rxrpc_key_token *token;
|
||||
struct rxrpc_security *sec;
|
||||
struct key *key = conn->key;
|
||||
int ret;
|
||||
|
@ -135,7 +137,11 @@ int rxrpc_init_client_conn_security(struct rxrpc_connection *conn)
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
sec = rxrpc_security_lookup(key->type_data.x[0]);
|
||||
if (!key->payload.data)
|
||||
return -EKEYREJECTED;
|
||||
token = key->payload.data;
|
||||
|
||||
sec = rxrpc_security_lookup(token->security_index);
|
||||
if (!sec)
|
||||
return -EKEYREJECTED;
|
||||
conn->security = sec;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue