Blame lang/js/src/permittedOperations.js

Packit Service 30b792
/* gpgme.js - Javascript integration for gpgme
Packit Service 30b792
 * Copyright (C) 2018 Bundesamt für Sicherheit in der Informationstechnik
Packit Service 30b792
 *
Packit Service 30b792
 * This file is part of GPGME.
Packit Service 30b792
 *
Packit Service 30b792
 * GPGME is free software; you can redistribute it and/or modify it
Packit Service 30b792
 * under the terms of the GNU Lesser General Public License as
Packit Service 30b792
 * published by the Free Software Foundation; either version 2.1 of
Packit Service 30b792
 * the License, or (at your option) any later version.
Packit Service 30b792
 *
Packit Service 30b792
 * GPGME is distributed in the hope that it will be useful, but
Packit Service 30b792
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 30b792
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 30b792
 * Lesser General Public License for more details.
Packit Service 30b792
 *
Packit Service 30b792
 * You should have received a copy of the GNU Lesser General Public
Packit Service 30b792
 * License along with this program; if not, see <https://www.gnu.org/licenses/>.
Packit Service 30b792
 * SPDX-License-Identifier: LGPL-2.1+
Packit Service 30b792
 *
Packit Service 30b792
 * Author(s):
Packit Service 30b792
 *     Maximilian Krambach <mkrambach@intevation.de>
Packit Service 30b792
 */
Packit Service 30b792
Packit Service 30b792
/**
Packit Service 30b792
 * @typedef {Object} messageProperty
Packit Service 30b792
 * A message Property is defined by it's key.
Packit Service 30b792
 * @property {Array<String>} allowed Array of allowed types.
Packit Service 30b792
 * Currently accepted values are 'number', 'string', 'boolean'.
Packit Service 30b792
 * @property {Boolean} array_allowed If the value can be an array of types
Packit Service 30b792
 *      defined in allowed
Packit Service 30b792
 * @property {Array<*>} allowed_data (optional) restricts to the given values
Packit Service 30b792
  */
Packit Service 30b792
Packit Service 30b792
/**
Packit Service 30b792
 * Definition of the possible interactions with gpgme-json.
Packit Service 30b792
 * @param {Object} operation Each operation is named by a key and contains
Packit Service 30b792
 * the following properties:
Packit Service 30b792
 * @property {messageProperty} required An object with all required parameters
Packit Service 30b792
 * @property {messageProperty} optional An object with all optional parameters
Packit Service 30b792
 * @property {Boolean} pinentry (optional) If true, a password dialog is
Packit Service 30b792
 *      expected, thus a connection tuimeout is not advisable
Packit Service 30b792
 * @property {Object} answer The definition on what to expect as answer, if the
Packit Service 30b792
 *      answer is not an error
Packit Service 30b792
 * @property {Array<String>} answer.type the type(s) as reported by gpgme-json.
Packit Service 30b792
 * @property {Object} answer.payload key-value combinations of expected
Packit Service 30b792
 * properties of an answer and their type ('boolean', 'string', object), which
Packit Service 30b792
 * may need further decoding from base64
Packit Service 30b792
 * @property {Object} answer.info key-value combinations of expected
Packit Service 30b792
 * properties of an answer and their type ('boolean', 'string', object), which
Packit Service 30b792
 * are meant to be data directly sent by gpgme (i.e. user ids)
Packit Service 30b792
  @const
Packit Service 30b792
*/
Packit Service 30b792
export const permittedOperations = {
Packit Service 30b792
    encrypt: {
Packit Service 30b792
        pinentry: true, // TODO only with signing_keys
Packit Service 30b792
        required: {
Packit Service 30b792
            'keys': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                array_allowed: true
Packit Service 30b792
            },
Packit Service 30b792
            'data': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'signing_keys': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                array_allowed: true
Packit Service 30b792
            },
Packit Service 30b792
            'base64': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'mime': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'armor': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'always-trust': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'no-encrypt-to': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                array_allowed: true
Packit Service 30b792
            },
Packit Service 30b792
            'no-compress': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'throw-keyids': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'want-address': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'wrap': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'sender': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            },
Packit Service 30b792
            'file_name': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: ['ciphertext'],
Packit Service 30b792
            payload: {
Packit Service 30b792
                'data': 'string'
Packit Service 30b792
            },
Packit Service 30b792
            info: {
Packit Service 30b792
                'base64':'boolean'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    decrypt: {
Packit Service 30b792
        pinentry: true,
Packit Service 30b792
        required: {
Packit Service 30b792
            'data': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'base64': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: ['plaintext'],
Packit Service 30b792
            payload: {
Packit Service 30b792
                'data': 'string',
Packit Service 30b792
            },
Packit Service 30b792
            info: {
Packit Service 30b792
                'base64': 'boolean',
Packit Service 30b792
                'mime': 'boolean',
Packit Service 30b792
                'info': 'object',
Packit Service 30b792
                'dec_info': 'object'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    sign: {
Packit Service 30b792
        pinentry: true,
Packit Service 30b792
        required: {
Packit Service 30b792
            'data': {
Packit Service 30b792
                allowed: ['string'] },
Packit Service 30b792
            'keys': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                array_allowed: true
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'sender': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
            },
Packit Service 30b792
            'mode': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['detached', 'clearsign']
Packit Service 30b792
                // TODO 'opaque' is not used, but available on native app
Packit Service 30b792
            },
Packit Service 30b792
            'base64': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'armor': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: ['signature', 'ciphertext'],
Packit Service 30b792
            payload: {
Packit Service 30b792
                'data': 'string',
Packit Service 30b792
            },
Packit Service 30b792
            info: {
Packit Service 30b792
                'base64':'boolean'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    // note: For the meaning of the optional keylist flags, refer to
Packit Service 30b792
    // https://www.gnupg.org/documentation/manuals/gpgme/Key-Listing-Mode.html
Packit Service 30b792
    keylist:{
Packit Service 30b792
        required: {},
Packit Service 30b792
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'secret': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'extern': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'local':{
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'locate': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'sigs':{
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'notations':{
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'tofu': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'ephemeral': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'validate': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'keys': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                array_allowed: true
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: ['keys'],
Packit Service 30b792
            info: {
Packit Service 30b792
                'keys': 'object',
Packit Service 30b792
                'base64': 'boolean',
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    export: {
Packit Service 30b792
        required: {},
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'keys': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                array_allowed: true
Packit Service 30b792
            },
Packit Service 30b792
            'armor': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'extern': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'minimal': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'raw': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'pkcs12': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
            'with-sec-fprs': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            }
Packit Service 30b792
            // secret: not yet implemented
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: ['keys'],
Packit Service 30b792
            payload: {
Packit Service 30b792
                'data': 'string',
Packit Service 30b792
            },
Packit Service 30b792
            info: {
Packit Service 30b792
                'base64': 'boolean',
Packit Service 30b792
                'sec-fprs': 'object'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    import: {
Packit Service 30b792
        required: {
Packit Service 30b792
            'data': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'base64': {
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            },
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: [],
Packit Service 30b792
            info: {
Packit Service 30b792
                'result': 'object'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    delete: {
Packit Service 30b792
        pinentry: true,
Packit Service 30b792
        required:{
Packit Service 30b792
            'key': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            info: {
Packit Service 30b792
                'success': 'boolean'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    version: {
Packit Service 30b792
        required: {},
Packit Service 30b792
        optional: {},
Packit Service 30b792
        answer: {
Packit Service 30b792
            type:  [''],
Packit Service 30b792
            info: {
Packit Service 30b792
                'gpgme': 'string',
Packit Service 30b792
                'info': 'object'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    createkey: {
Packit Service 30b792
        pinentry: true,
Packit Service 30b792
        required: {
Packit Service 30b792
            userid: {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            algo: {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            },
Packit Service 30b792
            expires: {
Packit Service 30b792
                allowed: ['number'],
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: [''],
Packit Service 30b792
            info: { 'fingerprint': 'string' }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    verify: {
Packit Service 30b792
        required: {
Packit Service 30b792
            data: {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {
Packit Service 30b792
            'protocol': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                allowed_data: ['cms', 'openpgp']
Packit Service 30b792
            },
Packit Service 30b792
            'signature': {
Packit Service 30b792
                allowed: ['string']
Packit Service 30b792
            },
Packit Service 30b792
            'base64':{
Packit Service 30b792
                allowed: ['boolean']
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: ['plaintext'],
Packit Service 30b792
            payload:{
Packit Service 30b792
                'data': 'string'
Packit Service 30b792
            },
Packit Service 30b792
            info: {
Packit Service 30b792
                'base64':'boolean',
Packit Service 30b792
                'info': 'object'
Packit Service 30b792
                // info.file_name: Optional string of the plaintext file name.
Packit Service 30b792
                // info.is_mime: Boolean if the messages claims it is MIME.
Packit Service 30b792
                // info.signatures: Array of signatures
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    },
Packit Service 30b792
Packit Service 30b792
    config_opt: {
Packit Service 30b792
        required: {
Packit Service 30b792
            'component':{
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                // allowed_data: ['gpg'] // TODO check all available
Packit Service 30b792
            },
Packit Service 30b792
            'option': {
Packit Service 30b792
                allowed: ['string'],
Packit Service 30b792
                // allowed_data: ['default-key'] // TODO check all available
Packit Service 30b792
            }
Packit Service 30b792
        },
Packit Service 30b792
        optional: {},
Packit Service 30b792
        answer: {
Packit Service 30b792
            type: [],
Packit Service 30b792
            info: {
Packit Service 30b792
                'option': 'object'
Packit Service 30b792
            }
Packit Service 30b792
        }
Packit Service 30b792
    }
Packit Service 30b792
};