Commit a484a497 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'keys-next-20200602' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs

Pull keyring updates from David Howells:

 - Fix a documentation warning.

 - Replace a zero-length array with a flexible one

 - Make the big_key key type use ChaCha20Poly1305 and use the crypto
   algorithm directly rather than going through the crypto layer.

 - Implement the update op for the big_key type.

* tag 'keys-next-20200602' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
  keys: Implement update for the big_key type
  security/keys: rewrite big_key crypto to use library interface
  KEYS: Replace zero-length array with flexible-array
  Documentation: security: core.rst: add missing argument
parents 38b3a5aa b6f61c31
...@@ -920,10 +920,14 @@ The keyctl syscall functions are: ...@@ -920,10 +920,14 @@ The keyctl syscall functions are:
long keyctl(KEYCTL_PKEY_QUERY, long keyctl(KEYCTL_PKEY_QUERY,
key_serial_t key_id, unsigned long reserved, key_serial_t key_id, unsigned long reserved,
const char *params,
struct keyctl_pkey_query *info); struct keyctl_pkey_query *info);
Get information about an asymmetric key. The information is returned in Get information about an asymmetric key. Specific algorithms and
the keyctl_pkey_query struct:: encodings may be queried by using the ``params`` argument. This is a
string containing a space- or tab-separated string of key-value pairs.
Currently supported keys include ``enc`` and ``hash``. The information
is returned in the keyctl_pkey_query struct::
__u32 supported_ops; __u32 supported_ops;
__u32 key_size; __u32 key_size;
......
...@@ -18,5 +18,6 @@ extern void big_key_revoke(struct key *key); ...@@ -18,5 +18,6 @@ extern void big_key_revoke(struct key *key);
extern void big_key_destroy(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 void big_key_describe(const struct key *big_key, struct seq_file *m);
extern long big_key_read(const struct key *key, char *buffer, size_t buflen); extern long big_key_read(const struct key *key, char *buffer, size_t buflen);
extern int big_key_update(struct key *key, struct key_preparsed_payload *prep);
#endif /* _KEYS_BIG_KEY_TYPE_H */ #endif /* _KEYS_BIG_KEY_TYPE_H */
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
struct user_key_payload { struct user_key_payload {
struct rcu_head rcu; /* RCU destructor */ struct rcu_head rcu; /* RCU destructor */
unsigned short datalen; /* length of this data */ unsigned short datalen; /* length of this data */
char data[0] __aligned(__alignof__(u64)); /* actual data */ char data[] __aligned(__alignof__(u64)); /* actual data */
}; };
extern struct key_type key_type_user; extern struct key_type key_type_user;
......
...@@ -60,9 +60,7 @@ config BIG_KEYS ...@@ -60,9 +60,7 @@ config BIG_KEYS
bool "Large payload keys" bool "Large payload keys"
depends on KEYS depends on KEYS
depends on TMPFS depends on TMPFS
select CRYPTO depends on CRYPTO_LIB_CHACHA20POLY1305 = y
select CRYPTO_AES
select CRYPTO_GCM
help help
This option provides support for holding large keys within the kernel This option provides support for holding large keys within the kernel
(for example Kerberos ticket caches). The data may be stored out to (for example Kerberos ticket caches). The data may be stored out to
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment