892f4f2ea7add2188a7f6dd84798daa1d3bbe4cd
[gpgme.git] / lang / js / src / permittedOperations.js
1 /* gpgme.js - Javascript integration for gpgme
2  * Copyright (C) 2018 Bundesamt für Sicherheit in der Informationstechnik
3  *
4  * This file is part of GPGME.
5  *
6  * GPGME is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as
8  * published by the Free Software Foundation; either version 2.1 of
9  * the License, or (at your option) any later version.
10  *
11  * GPGME is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
18  * SPDX-License-Identifier: LGPL-2.1+
19  */
20
21  /**
22   * Definition of the possible interactions with gpgme-json.
23   * operation: <Object>
24       required: Array<String>
25       optional: Array<String>
26       pinentry: Boolean If a pinentry dialog is expected, and a timeout of
27                 5000 ms would be too short
28       answer: <Object>
29           type: <String< The content type of answer expected
30           data: Array<String> The payload property of the answer. May be
31                 partial and in need of concatenation
32           params: Array<String> Information that do not change throughout
33                 the message
34           infos: Array<String> arbitrary information that may change
35       }
36   }
37   */
38
39 export const permittedOperations = {
40     encrypt: {
41         required: ['keys', 'data'],
42         optional: [
43             'protocol',
44             'chunksize',
45             'base64',
46             'mime',
47             'armor',
48             'always-trust',
49             'no-encrypt-to',
50             'no-compress',
51             'throw-keyids',
52             'want-address',
53             'wrap'
54         ],
55         answer: {
56             type: ['ciphertext'],
57             data: ['data'],
58             params: ['base64'],
59             infos: []
60         }
61     },
62
63     decrypt: {
64         pinentry: true,
65         required: ['data'],
66         optional: [
67             'protocol',
68             'chunksize',
69             'base64'
70         ],
71         answer: {
72             type: ['plaintext'],
73             data: ['data'],
74             params: ['base64', 'mime'],
75             infos: ['info']
76         }
77     }
78 }