comparison plugins/enigma/lib/enigma_driver.php @ 0:1e000243b222

vanilla 1.3.3 distro, I hope
author Charlie Root
date Thu, 04 Jan 2018 15:50:29 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1e000243b222
1 <?php
2
3 /**
4 +-------------------------------------------------------------------------+
5 | Abstract driver for the Enigma Plugin |
6 | |
7 | Copyright (C) 2010-2015 The Roundcube Dev Team |
8 | |
9 | Licensed under the GNU General Public License version 3 or |
10 | any later version with exceptions for skins & plugins. |
11 | See the README file for a full license statement. |
12 | |
13 +-------------------------------------------------------------------------+
14 | Author: Aleksander Machniak <alec@alec.pl> |
15 +-------------------------------------------------------------------------+
16 */
17
18 abstract class enigma_driver
19 {
20 /**
21 * Class constructor.
22 *
23 * @param string User name (email address)
24 */
25 abstract function __construct($user);
26
27 /**
28 * Driver initialization.
29 *
30 * @return mixed NULL on success, enigma_error on failure
31 */
32 abstract function init();
33
34 /**
35 * Encryption (and optional signing).
36 *
37 * @param string Message body
38 * @param array List of keys (enigma_key objects)
39 * @param enigma_key Optional signing Key ID
40 *
41 * @return mixed Encrypted message or enigma_error on failure
42 */
43 abstract function encrypt($text, $keys, $sign_key = null);
44
45 /**
46 * Decryption (and sig verification if sig exists).
47 *
48 * @param string Encrypted message
49 * @param array List of key-password
50 * @param enigma_signature Signature information (if available)
51 *
52 * @return mixed Decrypted message or enigma_error on failure
53 */
54 abstract function decrypt($text, $keys = array(), &$signature = null);
55
56 /**
57 * Signing.
58 *
59 * @param string Message body
60 * @param enigma_key The signing key
61 * @param int Signing mode (enigma_engine::SIGN_*)
62 *
63 * @return mixed True on success or enigma_error on failure
64 */
65 abstract function sign($text, $key, $mode = null);
66
67 /**
68 * Signature verification.
69 *
70 * @param string Message body
71 * @param string Signature, if message is of type PGP/MIME and body doesn't contain it
72 *
73 * @return mixed Signature information (enigma_signature) or enigma_error
74 */
75 abstract function verify($text, $signature);
76
77 /**
78 * Key/Cert file import.
79 *
80 * @param string File name or file content
81 * @param bolean True if first argument is a filename
82 * @param array Optional key => password map
83 *
84 * @return mixed Import status array or enigma_error
85 */
86 abstract function import($content, $isfile = false, $passwords = array());
87
88 /**
89 * Key/Cert export.
90 *
91 * @param string Key ID
92 * @param bool Include private key
93 * @param array Optional key => password map
94 *
95 * @return mixed Key content or enigma_error
96 */
97 abstract function export($key, $with_private = false, $passwords = array());
98
99 /**
100 * Keys listing.
101 *
102 * @param string Optional pattern for key ID, user ID or fingerprint
103 *
104 * @return mixed Array of enigma_key objects or enigma_error
105 */
106 abstract function list_keys($pattern = '');
107
108 /**
109 * Single key information.
110 *
111 * @param string Key ID, user ID or fingerprint
112 *
113 * @return mixed Key (enigma_key) object or enigma_error
114 */
115 abstract function get_key($keyid);
116
117 /**
118 * Key pair generation.
119 *
120 * @param array Key/User data (name, email, password, size)
121 *
122 * @return mixed Key (enigma_key) object or enigma_error
123 */
124 abstract function gen_key($data);
125
126 /**
127 * Key deletion.
128 *
129 * @param string Key ID
130 *
131 * @return mixed True on success or enigma_error
132 */
133 abstract function delete_key($keyid);
134
135 /**
136 * Returns a name of the hash algorithm used for the last
137 * signing operation.
138 *
139 * @return string Hash algorithm name e.g. sha1
140 */
141 abstract function signature_algorithm();
142 }