common: Rename private-keys.c to name-value.c
[gnupg.git] / common / name-value.h
1 /* name-value.h - Parser and writer for a name-value format.
2  *      Copyright (C) 2016 g10 Code GmbH
3  *
4  * This file is part of GnuPG.
5  *
6  * This file is free software; you can redistribute it and/or modify
7  * it under the terms of either
8  *
9  *   - the GNU Lesser General Public License as published by the Free
10  *     Software Foundation; either version 3 of the License, or (at
11  *     your option) any later version.
12  *
13  * or
14  *
15  *   - the GNU General Public License as published by the Free
16  *     Software Foundation; either version 2 of the License, or (at
17  *     your option) any later version.
18  *
19  * or both in parallel, as here.
20  *
21  * GnuPG is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24  * GNU General Public License for more details.
25  *
26  * You should have received a copy of the GNU General Public License
27  * along with this program; if not, see <http://www.gnu.org/licenses/>.
28  */
29
30 #ifndef GNUPG_COMMON_NAME_VALUE_H
31 #define GNUPG_COMMON_NAME_VALUE_H
32
33 struct private_key_container;
34 typedef struct private_key_container *pkc_t;
35
36 struct private_key_entry;
37 typedef struct private_key_entry *pke_t;
38
39 \f
40
41 /* Memory management, and dealing with entries.  */
42
43 /* Allocate a private key container structure.  */
44 pkc_t pkc_new (void);
45
46 /* Release a private key container structure.  */
47 void pkc_release (pkc_t pk);
48
49 /* Get the name.  */
50 char *pke_name (pke_t pke);
51
52 /* Get the value.  */
53 char *pke_value (pke_t pke);
54
55 \f
56
57 /* Lookup and iteration.  */
58
59 /* Get the first non-comment entry.  */
60 pke_t pkc_first (pkc_t pk);
61
62 /* Get the first entry with the given name.  */
63 pke_t pkc_lookup (pkc_t pk, const char *name);
64
65 /* Get the next non-comment entry.  */
66 pke_t pke_next (pke_t entry);
67
68 /* Get the next entry with the given name.  */
69 pke_t pke_next_value (pke_t entry, const char *name);
70
71 \f
72
73 /* Adding and modifying values.  */
74
75 /* Add (NAME, VALUE) to PK.  If an entry with NAME already exists, it
76    is not updated but the new entry is appended.  */
77 gpg_error_t pkc_add (pkc_t pk, const char *name, const char *value);
78
79 /* Add (NAME, VALUE) to PK.  If an entry with NAME already exists, it
80    is updated with VALUE.  If multiple entries with NAME exist, the
81    first entry is updated.  */
82 gpg_error_t pkc_set (pkc_t pk, const char *name, const char *value);
83
84 /* Delete the given entry from PK.  */
85 void pkc_delete (pkc_t pk, pke_t pke);
86
87 \f
88
89 /* Private key handling.  */
90
91 /* Get the private key.  */
92 gpg_error_t pkc_get_private_key (pkc_t pk, gcry_sexp_t *retsexp);
93
94 /* Set the private key.  */
95 gpg_error_t pkc_set_private_key (pkc_t pk, gcry_sexp_t sexp);
96
97 \f
98
99 /* Parsing and serialization.  */
100
101 /* Parse STREAM and return a newly allocated private key container
102    structure in RESULT.  If ERRLINEP is given, the line number the
103    parser was last considering is stored there.  */
104 gpg_error_t pkc_parse (pkc_t *result, int *errlinep, estream_t stream);
105
106 /* Write a representation of PK to STREAM.  */
107 gpg_error_t pkc_write (pkc_t pk, estream_t stream);
108
109 #endif /* GNUPG_COMMON_NAME_VALUE_H */