mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-08 01:08:03 -04:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
37
include/keys/asymmetric-parser.h
Normal file
37
include/keys/asymmetric-parser.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/* Asymmetric public-key cryptography data parser
|
||||
*
|
||||
* See Documentation/crypto/asymmetric-keys.txt
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public Licence
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the Licence, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_ASYMMETRIC_PARSER_H
|
||||
#define _KEYS_ASYMMETRIC_PARSER_H
|
||||
|
||||
/*
|
||||
* Key data parser. Called during key instantiation.
|
||||
*/
|
||||
struct asymmetric_key_parser {
|
||||
struct list_head link;
|
||||
struct module *owner;
|
||||
const char *name;
|
||||
|
||||
/* Attempt to parse a key from the data blob passed to add_key() or
|
||||
* keyctl_instantiate(). Should also generate a proposed description
|
||||
* that the caller can optionally use for the key.
|
||||
*
|
||||
* Return EBADMSG if not recognised.
|
||||
*/
|
||||
int (*parse)(struct key_preparsed_payload *prep);
|
||||
};
|
||||
|
||||
extern int register_asymmetric_key_parser(struct asymmetric_key_parser *);
|
||||
extern void unregister_asymmetric_key_parser(struct asymmetric_key_parser *);
|
||||
|
||||
#endif /* _KEYS_ASYMMETRIC_PARSER_H */
|
55
include/keys/asymmetric-subtype.h
Normal file
55
include/keys/asymmetric-subtype.h
Normal file
|
@ -0,0 +1,55 @@
|
|||
/* Asymmetric public-key cryptography key subtype
|
||||
*
|
||||
* See Documentation/security/asymmetric-keys.txt
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public Licence
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the Licence, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_ASYMMETRIC_SUBTYPE_H
|
||||
#define _KEYS_ASYMMETRIC_SUBTYPE_H
|
||||
|
||||
#include <linux/seq_file.h>
|
||||
#include <keys/asymmetric-type.h>
|
||||
|
||||
struct public_key_signature;
|
||||
|
||||
/*
|
||||
* Keys of this type declare a subtype that indicates the handlers and
|
||||
* capabilities.
|
||||
*/
|
||||
struct asymmetric_key_subtype {
|
||||
struct module *owner;
|
||||
const char *name;
|
||||
unsigned short name_len; /* length of name */
|
||||
|
||||
/* Describe a key of this subtype for /proc/keys */
|
||||
void (*describe)(const struct key *key, struct seq_file *m);
|
||||
|
||||
/* Destroy a key of this subtype */
|
||||
void (*destroy)(void *payload);
|
||||
|
||||
/* Verify the signature on a key of this subtype (optional) */
|
||||
int (*verify_signature)(const struct key *key,
|
||||
const struct public_key_signature *sig);
|
||||
};
|
||||
|
||||
/**
|
||||
* asymmetric_key_subtype - Get the subtype from an asymmetric key
|
||||
* @key: The key of interest.
|
||||
*
|
||||
* Retrieves and returns the subtype pointer of the asymmetric key from the
|
||||
* type-specific data attached to the key.
|
||||
*/
|
||||
static inline
|
||||
struct asymmetric_key_subtype *asymmetric_key_subtype(const struct key *key)
|
||||
{
|
||||
return key->type_data.p[0];
|
||||
}
|
||||
|
||||
#endif /* _KEYS_ASYMMETRIC_SUBTYPE_H */
|
66
include/keys/asymmetric-type.h
Normal file
66
include/keys/asymmetric-type.h
Normal file
|
@ -0,0 +1,66 @@
|
|||
/* Asymmetric Public-key cryptography key type interface
|
||||
*
|
||||
* See Documentation/security/asymmetric-keys.txt
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public Licence
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the Licence, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_ASYMMETRIC_TYPE_H
|
||||
#define _KEYS_ASYMMETRIC_TYPE_H
|
||||
|
||||
#include <linux/key-type.h>
|
||||
|
||||
extern struct key_type key_type_asymmetric;
|
||||
|
||||
/*
|
||||
* Identifiers for an asymmetric key ID. We have three ways of looking up a
|
||||
* key derived from an X.509 certificate:
|
||||
*
|
||||
* (1) Serial Number & Issuer. Non-optional. This is the only valid way to
|
||||
* map a PKCS#7 signature to an X.509 certificate.
|
||||
*
|
||||
* (2) Issuer & Subject Unique IDs. Optional. These were the original way to
|
||||
* match X.509 certificates, but have fallen into disuse in favour of (3).
|
||||
*
|
||||
* (3) Auth & Subject Key Identifiers. Optional. SKIDs are only provided on
|
||||
* CA keys that are intended to sign other keys, so don't appear in end
|
||||
* user certificates unless forced.
|
||||
*
|
||||
* We could also support an PGP key identifier, which is just a SHA1 sum of the
|
||||
* public key and certain parameters, but since we don't support PGP keys at
|
||||
* the moment, we shall ignore those.
|
||||
*
|
||||
* What we actually do is provide a place where binary identifiers can be
|
||||
* stashed and then compare against them when checking for an id match.
|
||||
*/
|
||||
struct asymmetric_key_id {
|
||||
unsigned short len;
|
||||
unsigned char data[];
|
||||
};
|
||||
|
||||
struct asymmetric_key_ids {
|
||||
void *id[2];
|
||||
};
|
||||
|
||||
extern bool asymmetric_key_id_same(const struct asymmetric_key_id *kid1,
|
||||
const struct asymmetric_key_id *kid2);
|
||||
|
||||
extern bool asymmetric_key_id_partial(const struct asymmetric_key_id *kid1,
|
||||
const struct asymmetric_key_id *kid2);
|
||||
|
||||
extern struct asymmetric_key_id *asymmetric_key_generate_id(const void *val_1,
|
||||
size_t len_1,
|
||||
const void *val_2,
|
||||
size_t len_2);
|
||||
|
||||
/*
|
||||
* The payload is at the discretion of the subtype.
|
||||
*/
|
||||
|
||||
#endif /* _KEYS_ASYMMETRIC_TYPE_H */
|
26
include/keys/big_key-type.h
Normal file
26
include/keys/big_key-type.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* Big capacity key type.
|
||||
*
|
||||
* Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_BIG_KEY_TYPE_H
|
||||
#define _KEYS_BIG_KEY_TYPE_H
|
||||
|
||||
#include <linux/key-type.h>
|
||||
|
||||
extern struct key_type key_type_big_key;
|
||||
|
||||
extern int big_key_preparse(struct key_preparsed_payload *prep);
|
||||
extern void big_key_free_preparse(struct key_preparsed_payload *prep);
|
||||
extern void big_key_revoke(struct key *key);
|
||||
extern void big_key_destroy(struct key *key);
|
||||
extern void big_key_describe(const struct key *big_key, struct seq_file *m);
|
||||
extern long big_key_read(const struct key *key, char __user *buffer, size_t buflen);
|
||||
|
||||
#endif /* _KEYS_BIG_KEY_TYPE_H */
|
8
include/keys/ceph-type.h
Normal file
8
include/keys/ceph-type.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef _KEYS_CEPH_TYPE_H
|
||||
#define _KEYS_CEPH_TYPE_H
|
||||
|
||||
#include <linux/key.h>
|
||||
|
||||
extern struct key_type key_type_ceph;
|
||||
|
||||
#endif
|
23
include/keys/dns_resolver-type.h
Normal file
23
include/keys/dns_resolver-type.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* DNS resolver key type
|
||||
*
|
||||
* Copyright (C) 2010 Wang Lei. All Rights Reserved.
|
||||
* Written by Wang Lei (wang840925@gmail.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_DNS_RESOLVER_TYPE_H
|
||||
#define _KEYS_DNS_RESOLVER_TYPE_H
|
||||
|
||||
#include <linux/key-type.h>
|
||||
|
||||
extern struct key_type key_type_dns_resolver;
|
||||
|
||||
extern int request_dns_resolver_key(const char *description,
|
||||
const char *callout_info,
|
||||
char **data);
|
||||
|
||||
#endif /* _KEYS_DNS_RESOLVER_TYPE_H */
|
38
include/keys/encrypted-type.h
Normal file
38
include/keys/encrypted-type.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (C) 2010 IBM Corporation
|
||||
* Copyright (C) 2010 Politecnico di Torino, Italy
|
||||
* TORSEC group -- http://security.polito.it
|
||||
*
|
||||
* Authors:
|
||||
* Mimi Zohar <zohar@us.ibm.com>
|
||||
* Roberto Sassu <roberto.sassu@polito.it>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 2 of the License.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_ENCRYPTED_TYPE_H
|
||||
#define _KEYS_ENCRYPTED_TYPE_H
|
||||
|
||||
#include <linux/key.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
struct encrypted_key_payload {
|
||||
struct rcu_head rcu;
|
||||
char *format; /* datablob: format */
|
||||
char *master_desc; /* datablob: master key name */
|
||||
char *datalen; /* datablob: decrypted key length */
|
||||
u8 *iv; /* datablob: iv */
|
||||
u8 *encrypted_data; /* datablob: encrypted data */
|
||||
unsigned short datablob_len; /* length of datablob */
|
||||
unsigned short decrypted_datalen; /* decrypted data length */
|
||||
unsigned short payload_datalen; /* payload data length */
|
||||
unsigned short encrypted_key_format; /* encrypted key format */
|
||||
u8 *decrypted_data; /* decrypted data */
|
||||
u8 payload_data[0]; /* payload data + datablob + hmac */
|
||||
};
|
||||
|
||||
extern struct key_type key_type_encrypted;
|
||||
|
||||
#endif /* _KEYS_ENCRYPTED_TYPE_H */
|
18
include/keys/keyring-type.h
Normal file
18
include/keys/keyring-type.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
/* Keyring key type
|
||||
*
|
||||
* Copyright (C) 2008, 2013 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_KEYRING_TYPE_H
|
||||
#define _KEYS_KEYRING_TYPE_H
|
||||
|
||||
#include <linux/key.h>
|
||||
#include <linux/assoc_array.h>
|
||||
|
||||
#endif /* _KEYS_KEYRING_TYPE_H */
|
130
include/keys/rxrpc-type.h
Normal file
130
include/keys/rxrpc-type.h
Normal file
|
@ -0,0 +1,130 @@
|
|||
/* RxRPC key type
|
||||
*
|
||||
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_RXRPC_TYPE_H
|
||||
#define _KEYS_RXRPC_TYPE_H
|
||||
|
||||
#include <linux/key.h>
|
||||
|
||||
/*
|
||||
* key type for AF_RXRPC keys
|
||||
*/
|
||||
extern struct key_type key_type_rxrpc;
|
||||
|
||||
extern struct key *rxrpc_get_null_key(const char *);
|
||||
|
||||
/*
|
||||
* RxRPC key for Kerberos IV (type-2 security)
|
||||
*/
|
||||
struct rxkad_key {
|
||||
u32 vice_id;
|
||||
u32 start; /* time at which ticket starts */
|
||||
u32 expiry; /* time at which ticket expires */
|
||||
u32 kvno; /* key version number */
|
||||
u8 primary_flag; /* T if key for primary cell for this user */
|
||||
u16 ticket_len; /* length of ticket[] */
|
||||
u8 session_key[8]; /* DES session key */
|
||||
u8 ticket[0]; /* the encrypted ticket */
|
||||
};
|
||||
|
||||
/*
|
||||
* Kerberos 5 principal
|
||||
* name/name/name@realm
|
||||
*/
|
||||
struct krb5_principal {
|
||||
u8 n_name_parts; /* N of parts of the name part of the principal */
|
||||
char **name_parts; /* parts of the name part of the principal */
|
||||
char *realm; /* parts of the realm part of the principal */
|
||||
};
|
||||
|
||||
/*
|
||||
* Kerberos 5 tagged data
|
||||
*/
|
||||
struct krb5_tagged_data {
|
||||
/* for tag value, see /usr/include/krb5/krb5.h
|
||||
* - KRB5_AUTHDATA_* for auth data
|
||||
* -
|
||||
*/
|
||||
s32 tag;
|
||||
u32 data_len;
|
||||
u8 *data;
|
||||
};
|
||||
|
||||
/*
|
||||
* RxRPC key for Kerberos V (type-5 security)
|
||||
*/
|
||||
struct rxk5_key {
|
||||
u64 authtime; /* time at which auth token generated */
|
||||
u64 starttime; /* time at which auth token starts */
|
||||
u64 endtime; /* time at which auth token expired */
|
||||
u64 renew_till; /* time to which auth token can be renewed */
|
||||
s32 is_skey; /* T if ticket is encrypted in another ticket's
|
||||
* skey */
|
||||
s32 flags; /* mask of TKT_FLG_* bits (krb5/krb5.h) */
|
||||
struct krb5_principal client; /* client principal name */
|
||||
struct krb5_principal server; /* server principal name */
|
||||
u16 ticket_len; /* length of ticket */
|
||||
u16 ticket2_len; /* length of second ticket */
|
||||
u8 n_authdata; /* number of authorisation data elements */
|
||||
u8 n_addresses; /* number of addresses */
|
||||
struct krb5_tagged_data session; /* session data; tag is enctype */
|
||||
struct krb5_tagged_data *addresses; /* addresses */
|
||||
u8 *ticket; /* krb5 ticket */
|
||||
u8 *ticket2; /* second krb5 ticket, if related to ticket (via
|
||||
* DUPLICATE-SKEY or ENC-TKT-IN-SKEY) */
|
||||
struct krb5_tagged_data *authdata; /* authorisation data */
|
||||
};
|
||||
|
||||
/*
|
||||
* list of tokens attached to an rxrpc key
|
||||
*/
|
||||
struct rxrpc_key_token {
|
||||
u16 security_index; /* RxRPC header security index */
|
||||
struct rxrpc_key_token *next; /* the next token in the list */
|
||||
union {
|
||||
struct rxkad_key *kad;
|
||||
struct rxk5_key *k5;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* structure of raw payloads passed to add_key() or instantiate key
|
||||
*/
|
||||
struct rxrpc_key_data_v1 {
|
||||
u16 security_index;
|
||||
u16 ticket_length;
|
||||
u32 expiry; /* time_t */
|
||||
u32 kvno;
|
||||
u8 session_key[8];
|
||||
u8 ticket[0];
|
||||
};
|
||||
|
||||
/*
|
||||
* AF_RXRPC key payload derived from XDR format
|
||||
* - based on openafs-1.4.10/src/auth/afs_token.xg
|
||||
*/
|
||||
#define AFSTOKEN_LENGTH_MAX 16384 /* max payload size */
|
||||
#define AFSTOKEN_STRING_MAX 256 /* max small string length */
|
||||
#define AFSTOKEN_DATA_MAX 64 /* max small data length */
|
||||
#define AFSTOKEN_CELL_MAX 64 /* max cellname length */
|
||||
#define AFSTOKEN_MAX 8 /* max tokens per payload */
|
||||
#define AFSTOKEN_BDATALN_MAX 16384 /* max big data length */
|
||||
#define AFSTOKEN_RK_TIX_MAX 12000 /* max RxKAD ticket size */
|
||||
#define AFSTOKEN_GK_KEY_MAX 64 /* max GSSAPI key size */
|
||||
#define AFSTOKEN_GK_TOKEN_MAX 16384 /* max GSSAPI token size */
|
||||
#define AFSTOKEN_K5_COMPONENTS_MAX 16 /* max K5 components */
|
||||
#define AFSTOKEN_K5_NAME_MAX 128 /* max K5 name length */
|
||||
#define AFSTOKEN_K5_REALM_MAX 64 /* max K5 realm name length */
|
||||
#define AFSTOKEN_K5_TIX_MAX 16384 /* max K5 ticket size */
|
||||
#define AFSTOKEN_K5_ADDRESSES_MAX 16 /* max K5 addresses */
|
||||
#define AFSTOKEN_K5_AUTHDATA_MAX 16 /* max K5 pieces of auth data */
|
||||
|
||||
#endif /* _KEYS_RXRPC_TYPE_H */
|
31
include/keys/system_keyring.h
Normal file
31
include/keys/system_keyring.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* System keyring containing trusted public keys.
|
||||
*
|
||||
* Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public Licence
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the Licence, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_SYSTEM_KEYRING_H
|
||||
#define _KEYS_SYSTEM_KEYRING_H
|
||||
|
||||
#ifdef CONFIG_SYSTEM_TRUSTED_KEYRING
|
||||
|
||||
#include <linux/key.h>
|
||||
|
||||
extern struct key *system_trusted_keyring;
|
||||
static inline struct key *get_system_trusted_keyring(void)
|
||||
{
|
||||
return system_trusted_keyring;
|
||||
}
|
||||
#else
|
||||
static inline struct key *get_system_trusted_keyring(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _KEYS_SYSTEM_KEYRING_H */
|
31
include/keys/trusted-type.h
Normal file
31
include/keys/trusted-type.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (C) 2010 IBM Corporation
|
||||
* Author: David Safford <safford@us.ibm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 2 of the License.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_TRUSTED_TYPE_H
|
||||
#define _KEYS_TRUSTED_TYPE_H
|
||||
|
||||
#include <linux/key.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
#define MIN_KEY_SIZE 32
|
||||
#define MAX_KEY_SIZE 128
|
||||
#define MAX_BLOB_SIZE 320
|
||||
|
||||
struct trusted_key_payload {
|
||||
struct rcu_head rcu;
|
||||
unsigned int key_len;
|
||||
unsigned int blob_len;
|
||||
unsigned char migratable;
|
||||
unsigned char key[MAX_KEY_SIZE + 1];
|
||||
unsigned char blob[MAX_BLOB_SIZE];
|
||||
};
|
||||
|
||||
extern struct key_type key_type_trusted;
|
||||
|
||||
#endif /* _KEYS_TRUSTED_TYPE_H */
|
50
include/keys/user-type.h
Normal file
50
include/keys/user-type.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
/* user-type.h: User-defined key type
|
||||
*
|
||||
* Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _KEYS_USER_TYPE_H
|
||||
#define _KEYS_USER_TYPE_H
|
||||
|
||||
#include <linux/key.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* the payload for a key of type "user" or "logon"
|
||||
* - once filled in and attached to a key:
|
||||
* - the payload struct is invariant may not be changed, only replaced
|
||||
* - the payload must be read with RCU procedures or with the key semaphore
|
||||
* held
|
||||
* - the payload may only be replaced with the key semaphore write-locked
|
||||
* - the key's data length is the size of the actual data, not including the
|
||||
* payload wrapper
|
||||
*/
|
||||
struct user_key_payload {
|
||||
struct rcu_head rcu; /* RCU destructor */
|
||||
unsigned short datalen; /* length of this data */
|
||||
char data[0]; /* actual data */
|
||||
};
|
||||
|
||||
extern struct key_type key_type_user;
|
||||
extern struct key_type key_type_logon;
|
||||
|
||||
struct key_preparsed_payload;
|
||||
|
||||
extern int user_preparse(struct key_preparsed_payload *prep);
|
||||
extern void user_free_preparse(struct key_preparsed_payload *prep);
|
||||
extern int user_update(struct key *key, struct key_preparsed_payload *prep);
|
||||
extern void user_revoke(struct key *key);
|
||||
extern void user_destroy(struct key *key);
|
||||
extern void user_describe(const struct key *user, struct seq_file *m);
|
||||
extern long user_read(const struct key *key,
|
||||
char __user *buffer, size_t buflen);
|
||||
|
||||
|
||||
#endif /* _KEYS_USER_TYPE_H */
|
Loading…
Add table
Add a link
Reference in a new issue