linux/include/crypto/public_key.h
<<
>>
Prefs
   1/* Asymmetric public-key algorithm definitions
   2 *
   3 * See Documentation/crypto/asymmetric-keys.txt
   4 *
   5 * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
   6 * Written by David Howells (dhowells@redhat.com)
   7 *
   8 * This program is free software; you can redistribute it and/or
   9 * modify it under the terms of the GNU General Public Licence
  10 * as published by the Free Software Foundation; either version
  11 * 2 of the Licence, or (at your option) any later version.
  12 */
  13
  14#ifndef _LINUX_PUBLIC_KEY_H
  15#define _LINUX_PUBLIC_KEY_H
  16
  17/*
  18 * Cryptographic data for the public-key subtype of the asymmetric key type.
  19 *
  20 * Note that this may include private part of the key as well as the public
  21 * part.
  22 */
  23struct public_key {
  24        void *key;
  25        u32 keylen;
  26        const char *id_type;
  27        const char *pkey_algo;
  28};
  29
  30extern void public_key_free(struct public_key *key);
  31
  32/*
  33 * Public key cryptography signature data
  34 */
  35struct public_key_signature {
  36        struct asymmetric_key_id *auth_ids[2];
  37        u8 *s;                  /* Signature */
  38        u32 s_size;             /* Number of bytes in signature */
  39        u8 *digest;
  40        u8 digest_size;         /* Number of bytes in digest */
  41        const char *pkey_algo;
  42        const char *hash_algo;
  43};
  44
  45extern void public_key_signature_free(struct public_key_signature *sig);
  46
  47extern struct asymmetric_key_subtype public_key_subtype;
  48
  49struct key;
  50struct key_type;
  51union key_payload;
  52
  53extern int restrict_link_by_signature(struct key *dest_keyring,
  54                                      const struct key_type *type,
  55                                      const union key_payload *payload,
  56                                      struct key *trust_keyring);
  57
  58extern int restrict_link_by_key_or_keyring(struct key *dest_keyring,
  59                                           const struct key_type *type,
  60                                           const union key_payload *payload,
  61                                           struct key *trusted);
  62
  63extern int restrict_link_by_key_or_keyring_chain(struct key *trust_keyring,
  64                                                 const struct key_type *type,
  65                                                 const union key_payload *payload,
  66                                                 struct key *trusted);
  67
  68extern int verify_signature(const struct key *key,
  69                            const struct public_key_signature *sig);
  70
  71int public_key_verify_signature(const struct public_key *pkey,
  72                                const struct public_key_signature *sig);
  73
  74#endif /* _LINUX_PUBLIC_KEY_H */
  75