18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/* Asymmetric public-key cryptography data parser
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * See Documentation/crypto/asymmetric-keys.rst
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
78c2ecf20Sopenharmony_ci * Written by David Howells (dhowells@redhat.com)
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#ifndef _KEYS_ASYMMETRIC_PARSER_H
118c2ecf20Sopenharmony_ci#define _KEYS_ASYMMETRIC_PARSER_H
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci/*
148c2ecf20Sopenharmony_ci * Key data parser.  Called during key instantiation.
158c2ecf20Sopenharmony_ci */
168c2ecf20Sopenharmony_cistruct asymmetric_key_parser {
178c2ecf20Sopenharmony_ci	struct list_head	link;
188c2ecf20Sopenharmony_ci	struct module		*owner;
198c2ecf20Sopenharmony_ci	const char		*name;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	/* Attempt to parse a key from the data blob passed to add_key() or
228c2ecf20Sopenharmony_ci	 * keyctl_instantiate().  Should also generate a proposed description
238c2ecf20Sopenharmony_ci	 * that the caller can optionally use for the key.
248c2ecf20Sopenharmony_ci	 *
258c2ecf20Sopenharmony_ci	 * Return EBADMSG if not recognised.
268c2ecf20Sopenharmony_ci	 */
278c2ecf20Sopenharmony_ci	int (*parse)(struct key_preparsed_payload *prep);
288c2ecf20Sopenharmony_ci};
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ciextern int register_asymmetric_key_parser(struct asymmetric_key_parser *);
318c2ecf20Sopenharmony_ciextern void unregister_asymmetric_key_parser(struct asymmetric_key_parser *);
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci#endif /* _KEYS_ASYMMETRIC_PARSER_H */
34