Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / netpgp.h @ 13

History | View | Annotate | Download (4.34 KB)

1 13 up20180614
/*-
2
 * Copyright (c) 2009 The NetBSD Foundation, Inc.
3
 * All rights reserved.
4
 *
5
 * This code is derived from software contributed to The NetBSD Foundation
6
 * by Alistair Crooks (agc@netbsd.org)
7
 *
8
 * Redistribution and use in source and binary forms, with or without
9
 * modification, are permitted provided that the following conditions
10
 * are met:
11
 * 1. Redistributions of source code must retain the above copyright
12
 *    notice, this list of conditions and the following disclaimer.
13
 * 2. Redistributions in binary form must reproduce the above copyright
14
 *    notice, this list of conditions and the following disclaimer in the
15
 *    documentation and/or other materials provided with the distribution.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
 * POSSIBILITY OF SUCH DAMAGE.
28
 */
29
#ifndef NETPGP_H_
30
#define NETPGP_H_
31
32
#ifndef __BEGIN_DECLS
33
#  if defined(__cplusplus)
34
#  define __BEGIN_DECLS           extern "C" {
35
#  define __END_DECLS             }
36
#  else
37
#  define __BEGIN_DECLS
38
#  define __END_DECLS
39
#  endif
40
#endif
41
42
__BEGIN_DECLS
43
44
/* structure used to hold (key,value) pair information */
45
typedef struct netpgp_t {
46
        unsigned          c;                /* # of elements used */
47
        unsigned          size;                /* size of array */
48
        char                **name;                /* key names */
49
        char                **value;        /* value information */
50
        void                 *pubring;        /* public key ring */
51
        void                 *secring;        /* s3kr1t key ring */
52
        void                 *io;                /* the io struct for results/errs */
53
        void                 *passfp;        /* file pointer for password input */
54
} netpgp_t;
55
56
/* begin and end */
57
int netpgp_init(netpgp_t *);
58
int netpgp_end(netpgp_t *);
59
60
/* debugging, reflection and information */
61
int netpgp_set_debug(const char *);
62
int netpgp_get_debug(const char *);
63
const char *netpgp_get_info(const char *);
64
int netpgp_list_packets(netpgp_t *, char *, int, char *);
65
66
/* variables */
67
int netpgp_setvar(netpgp_t *, const char *, const char *);
68
char *netpgp_getvar(netpgp_t *, const char *);
69
int netpgp_incvar(netpgp_t *, const char *, const int);
70
int netpgp_unsetvar(netpgp_t *, const char *);
71
72
/* set home directory information */
73
int netpgp_set_homedir(netpgp_t *, char *, const char *, const int);
74
75
/* key management */
76
int netpgp_list_keys(netpgp_t *, const int);
77
int netpgp_list_keys_json(netpgp_t *, char **, const int);
78
int netpgp_find_key(netpgp_t *, char *);
79
char *netpgp_get_key(netpgp_t *, const char *, const char *);
80
char *netpgp_export_key(netpgp_t *, char *);
81
int netpgp_import_key(netpgp_t *, char *);
82
int netpgp_generate_key(netpgp_t *, char *, int);
83
84
/* file management */
85
int netpgp_encrypt_file(netpgp_t *, const char *, const char *, char *, int);
86
int netpgp_decrypt_file(netpgp_t *, const char *, char *, int);
87
int netpgp_sign_file(netpgp_t *, const char *, const char *, char *, int, int, int);
88
int netpgp_verify_file(netpgp_t *, const char *, const char *, int);
89
90
/* memory signing and encryption */
91
int netpgp_sign_memory(netpgp_t *, const char *, char *, size_t, char *, size_t, const unsigned, const unsigned);
92
int netpgp_verify_memory(netpgp_t *, const void *, const size_t, void *, size_t, const int);
93
int netpgp_encrypt_memory(netpgp_t *, const char *, void *, const size_t, char *, size_t, int);
94
int netpgp_decrypt_memory(netpgp_t *, const void *, const size_t, char *, size_t, const int);
95
96
/* match and hkp-related functions */
97
int netpgp_match_keys_json(netpgp_t *, char **, char *, const char *, const int);
98
int netpgp_match_keys(netpgp_t *, char *, const char *, void *, const int);
99
int netpgp_match_pubkeys(netpgp_t *, char *, void *);
100
int netpgp_format_json(void *, const char *, const int);
101
102
int netpgp_validate_sigs(netpgp_t *);
103
104
/* save pgp key in ssh format */
105
int netpgp_write_sshkey(netpgp_t *, char *, const char *, char *, size_t);
106
107
108
__END_DECLS
109
110
#endif /* !NETPGP_H_ */