THANKS: Coverity.com (overdue)
[s-mailx.git] / src / mx / privacy.c
bloba9ead5cf7890cf607dcb260fbd5fa995dafe3516
1 /*@ S-nail - a mail user agent derived from Berkeley Mail.
2 *@ Implementation of privacy.h.
4 * Copyright (c) 2015 - 2020 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
5 * SPDX-License-Identifier: ISC
7 * Permission to use, copy, modify, and/or distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 #undef su_FILE
20 #define su_FILE privacy
21 #define mx_SOURCE
22 #define mx_SOURCE_PRIVACY
24 #ifndef mx_HAVE_AMALGAMATION
25 # include "mx/nail.h"
26 #endif
28 su_EMPTY_FILE()
29 #if defined mx_HAVE_XTLS
30 #include <su/cs.h>
31 #include <su/mem.h>
33 #include "mx/privacy.h"
34 #include "su/code-in.h"
36 boole
37 mx_privacy_sign_is_desired(void){
38 boole rv;
39 NYD_IN;
41 rv = ok_blook(smime_sign); /* TODO USER@HOST <-> *from* +++!!! */
42 #ifndef mx_HAVE_TLS
43 if(rv){
44 n_err(_("No TLS support compiled in\n"));
45 rv = FAL0;
47 #endif
49 NYD_OU;
50 return rv;
53 FILE *
54 mx_privacy_sign(FILE *ip, char const *addr){
55 FILE *rv;
56 NYD_IN;
57 UNUSED(ip);
59 if(addr == NIL){
60 n_err(_("No *from* address for signing specified\n"));
61 rv = NIL;
62 goto jleave;
65 #ifdef mx_HAVE_TLS
66 rv = smime_sign(ip, addr);
67 #else
68 n_err(_("No TLS support compiled in\n"));
69 rv = NIL;
70 #endif
72 jleave:
73 NYD_OU;
74 return rv;
77 boole
78 mx_privacy_verify(struct message *mp, int nr){
79 NYD_IN;
81 UNUSED(mp);
82 UNUSED(nr);
84 NYD_OU;
85 return FAL0;
88 FILE *
89 mx_privacy_encrypt_try(FILE *ip, char const *to){
90 char const k[] = "smime-encrypt-";
91 uz nl;
92 char const *cp;
93 char *vs;
94 FILE *rv;
95 NYD_IN;
97 nl = su_cs_len(to);
98 vs = n_lofi_alloc(sizeof(k)-1 + nl +1);
99 su_mem_copy(vs, k, sizeof(k) -1);
100 su_mem_copy(&vs[sizeof(k) -1], to, nl +1);
102 if((cp = n_var_vlook(vs, FAL0)) != NIL){
103 #ifdef mx_HAVE_TLS
104 rv = smime_encrypt(ip, cp, to);
105 goto jleave;
106 #else
107 n_err(_("No TLS support compiled in\n"));
108 #endif
111 rv = R(FILE*,-1);
112 jleave:
113 n_lofi_free(vs);
114 NYD_OU;
115 return rv;
118 boole
119 mx_privacy_encrypt_is_forced(void){
120 boole rv;
121 NYD_IN;
123 rv = ok_blook(smime_force_encryption);
124 NYD_OU;
125 return rv;
128 struct message *
129 mx_privacy_decrypt(struct message *mp, char const *to, char const *cc,
130 boole is_a_verify_call){
131 NYD_IN;
133 UNUSED(mp);
134 UNUSED(to);
135 UNUSED(cc);
136 UNUSED(is_a_verify_call);
138 NYD_OU;
139 return NIL;
142 #include "su/code-ou.h"
143 #endif /* mx_HAVE_XTLS */
144 /* s-it-mode */