X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=Documentation%2Fkeys.txt;h=60c665d9cfaa883416c79efb0fb99245f610a1e2;hb=199c1167f5e8123a9b0a9ab1e8b78a6aa4b2733f;hp=61c0fad2fe2fa01ca14b14d218b56282940bafa6;hpb=2a2ed2db353d949c06b6ef8b6913f65b39111eab;p=powerpc.git diff --git a/Documentation/keys.txt b/Documentation/keys.txt index 61c0fad2fe..60c665d9cf 100644 --- a/Documentation/keys.txt +++ b/Documentation/keys.txt @@ -304,7 +304,7 @@ about the status of the key service: R Revoked D Dead Q Contributes to user's quota - U Under contruction by callback to userspace + U Under construction by callback to userspace N Negative key This file must be enabled at kernel configuration time as it allows anyone @@ -671,7 +671,7 @@ The keyctl syscall functions are: Note that this setting is inherited across fork/exec. - [1] The default default is: the thread keyring if there is one, otherwise + [1] The default is: the thread keyring if there is one, otherwise the process keyring if there is one, otherwise the session keyring if there is one, otherwise the user default session keyring. @@ -708,14 +708,14 @@ The keyctl syscall functions are: If the specified key is 0, then any assumed authority will be divested. - The assumed authorititive key is inherited across fork and exec. + The assumed authoritative key is inherited across fork and exec. =============== KERNEL SERVICES =============== -The kernel services for key managment are fairly simple to deal with. They can +The kernel services for key management are fairly simple to deal with. They can be broken down into two areas: keys and key types. Dealing with keys is fairly straightforward. Firstly, the kernel service @@ -780,6 +780,17 @@ payload contents" for more information. See also Documentation/keys-request-key.txt. +(*) To search for a key, passing auxiliary data to the upcaller, call: + + struct key *request_key_with_auxdata(const struct key_type *type, + const char *description, + const char *callout_string, + void *aux); + + This is identical to request_key(), except that the auxiliary data is + passed to the key_type->request_key() op if it exists. + + (*) When it is no longer required, the key should be released using: void key_put(struct key *key); @@ -1031,6 +1042,24 @@ The structure has a number of fields, some of which are mandatory: as might happen when the userspace buffer is accessed. + (*) int (*request_key)(struct key *key, struct key *authkey, const char *op, + void *aux); + + This method is optional. If provided, request_key() and + request_key_with_auxdata() will invoke this function rather than + upcalling to /sbin/request-key to operate upon a key of this type. + + The aux parameter is as passed to request_key_with_auxdata() or is NULL + otherwise. Also passed are the key to be operated upon, the + authorisation key for this operation and the operation type (currently + only "create"). + + This function should return only when the upcall is complete. Upon return + the authorisation key will be revoked, and the target key will be + negatively instantiated if it is still uninstantiated. The error will be + returned to the caller of request_key*(). + + ============================ REQUEST-KEY CALLBACK SERVICE ============================