js: implement import/delete Key, some fixes
[gpgme.git] / lang / js / BrowserTestExtension / tests / inputvalues.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 var inputvalues = {// eslint-disable-line no-unused-vars
22     encrypt: {
23         good:{
24             data : 'Hello World.',
25             // Fingerprint of a key that has been imported to gnupg
26             // (i.e. see testkey.pub; testkey.sec)
27             fingerprint : 'D41735B91236FDB882048C5A2301635EEFF0CB05',
28             data_nonascii: '¡Äußerste µ€ før ñoquis@hóme! Добрый день',
29
30             // used for checking encoding consistency in > 2MB messages.
31             data_nonascii_32: [
32                 'K€K€K€K€K€K€K€K€K€K€K€K€K€K€K€K€',
33                 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€',
34                 '€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€',
35                 '²³²³²³²³²³²³²³²³²³²³²³²³²³²³²³²³',
36                 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€A€µ€µ€µ€µ€',
37                 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µAµ€µ€µ€µ€',
38                 'üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü',
39                 'µAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA€',
40                 'µAAAAµAAAAAAAAAAAAAAAAAAAAAAAAA€',
41                 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAµ€',
42                 'µAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA°',
43                 '€AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA€',
44                 'µ||||||||||||||||||||||||||||||€',
45                 'æſæſ³¼„¬“³³¬“¬½”æſæſ³¼„¬“³³¬“¬½”'
46             ]
47         },
48         bad: {
49             // valid Hex value, but not usable (not imported to gnupg, or
50             // bogus fingerprint)
51             fingerprint: 'CDC3A2B2860625CCBFC5AAAAAC6D1B604967FC4A'
52         }
53     },
54     init: {
55         // some parameters
56         invalid_startups: [
57             {all_passwords: true},
58             'openpgpmode',
59             {api_style:'frankenstein'}
60         ]
61     }
62 };
63
64 // (Pseudo-)Random String covering all of utf8.
65 function bigString(length){// eslint-disable-line no-unused-vars
66     let arr = [];
67     for (let i= 0; i < length; i++){
68         arr.push(String.fromCharCode(
69             Math.floor(Math.random() * 10174) + 1)
70         );
71     }
72     return arr.join('');
73 }
74
75 function fixedLengthString(megabytes){// eslint-disable-line no-unused-vars
76     let maxlength = 1024 * 1024 * megabytes / 2;
77     let uint = new Uint8Array(maxlength);
78     for (let i = 0; i < maxlength; i++){
79         uint[i] = Math.floor(Math.random()* 256);
80     }
81     let td = new TextDecoder('ascii');
82     let result = td.decode(uint);
83     return result;
84 }
85
86 // (Pseudo-)Random Uint8Array, given size in Megabytes
87 function bigUint8(megabytes){// eslint-disable-line no-unused-vars
88     let maxlength = 1024 * 1024 * megabytes;
89     let uint = new Uint8Array(maxlength);
90     for (let i= 0; i < maxlength; i++){
91         uint[i] = Math.random() * Math.floor(256);
92     }
93     return uint;
94 }
95
96 // (Pseudo-)Random string with very limited charset
97 // (ascii only, no control chars)
98 function bigBoringString(megabytes){// eslint-disable-line no-unused-vars
99     let maxlength = 1024 * 1024 * megabytes;
100     let string = [];
101     let chars =
102         ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
103     for (let i= 0; i < maxlength; i++){
104         string.push(chars[Math.floor(Math.random() * chars.length)]);
105     }
106     return string.join('');
107 }
108
109 // Some String with simple chars, with different characteristics, but still
110 // expected to occur in an averag message
111 // eslint-disable-next-line no-unused-vars
112 function slightlyLessBoringString(megabytes, set){
113     let maxlength = 1024 * 1024 * megabytes;
114     let string = [];
115     let chars = '';
116     if (set ===1 ) {
117         chars = '\n"\r \'';
118     } else if (set === 2 ) {
119         chars = '()=?`#+-{}[]';
120     } else if (set === 3){
121         chars = '^°/';
122     } else if (set ===4) {
123         chars = 'äüßµüþÖ~ɁÑ||@';
124     } else {
125         chars = '*<>\n"\r§$%&/()=?`#+-{}[] \'';
126     }
127     for (let i= 0; i < maxlength; i++){
128         string.push(chars[Math.floor(Math.random() * chars.length)]);
129     }
130     return string.join('');
131 }
132
133 // Data encrypted with testKey
134 var encryptedData =// eslint-disable-line no-unused-vars
135     '-----BEGIN PGP MESSAGE-----\n' +
136     '\n' +
137     'hQEMA6B8jfIUScGEAQgAlANd3uyhmhYLzVcfz4LEqA8tgUC3n719YH0iuKEzG/dv\n' +
138     'B8fsIK2HoeQh2T3/Cc2LBMjgn4K33ksG3k2MqrbIvxWGUQlOAuggc259hquWtX9B\n' +
139     'EcEoOAeh5DuZT/b8CM5seJKNEpPzNxbEDiGikp9DV9gfIQTTUnrDjAu5YtgCN9vA\n' +
140     '3PJxihioH8ODoQw2jlYSkqgXpBVP2Fbx7qgTuxGNu5w36E0/P93//4hDXcKou7ez\n' +
141     'o0+NEGSkbaY+OPk1k7k9n+vBSC3F440dxsTNs5WmRvx9XZEotJkUBweE+8XaoLCn\n' +
142     '3RrtyD/lj63qi3dbyI5XFLuPU1baFskJ4UAmI4wNhdJ+ASailpnFBnNgiFBh3ZfB\n' +
143     'G5Rmd3ocSL7l6lq1bVK9advXb7vcne502W1ldAfHgTdQgc2CueIDFUYAaXP2OvhP\n' +
144     'isGL7jOlDCBKwep67ted0cTRPLWkk3NSuLIlvD5xs6L4z3rPu92gXYgbZoMMdP0N\n' +
145     'kSAQYOHplfA7YJWkrlRm\n' +
146     '=zap6\n' +
147     '-----END PGP MESSAGE-----\n';
148
149 var ImportablePublicKey = {// eslint-disable-line no-unused-vars
150     fingerprint: '78034948BA7F5D0E9BDB67E4F63790C11E60278A',
151     key:'-----BEGIN PGP PUBLIC KEY BLOCK-----\n' +
152     '\n' +
153     'mQENBFsPvK0BCACaIgoIN+3g05mrTITULK/YDTrfg4W7RdzIZBxch5CM0zdu/dby\n' +
154     'esFwaJbVQIqu54CRz5xKAiWmRrQCaRvhvjY0na5r5UUIpbeQiOVrl65JtNbRmlik\n' +
155     'd9Prn1kZDUOZiCPIKn+/M2ecJ92YedM7I4/BbpiaFB11cVrPFg4thepn0LB3+Whp\n' +
156     '9HDm4orH9rjy6IUr6yjWNIr+LYRY6/Ip2vWcMVjleEpTFznXrm83hrJ0n0INtyox\n' +
157     'Nass4eDWkgo6ItxDFFLOORSmpfrToxZymSosWqgux/qG6sxHvLqlqy6Xe3ZYRFbG\n' +
158     '+JcA1oGdwOg/c0ndr6BYYiXTh8+uUJfEoZvzABEBAAG0HEJsYSBCbGEgPGJsYWJs\n' +
159     'YUBleGFtcGxlLm9yZz6JAVQEEwEIAD4WIQR4A0lIun9dDpvbZ+T2N5DBHmAnigUC\n' +
160     'Ww+8rQIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRD2N5DBHmAn\n' +
161     'igwIB/9K3E3Yev9taZP4KnXPhk1oMQRW1MWAsFGUr+70N85VwedpUawymW4vXi1+\n' +
162     'hMeTc39QjmZ0+VqHkJttkqEN6bLcEvgmU/mOlOgKdzy6eUcasYAzgoAKUqSX1SPs\n' +
163     '0Imo7Tj04wnfnVwvKxaeadi0VmdqIYaW75UlrzIaltsBctyeYH8sBrvaTLscb4ON\n' +
164     '46OM3Yw2G9+dBF0P+4UYFHP3EYZMlzNxfwF+i2HsYcNDHlcLfjENr9GwKn5FJqpY\n' +
165     'Iq3qmI37w1hVasHDxXdz1X06dpsa6Im4ACk6LXa7xIQlXxTgPAQV0sz2yB5eY+Md\n' +
166     'uzEXPGW+sq0WRp3hynn7kVP6QQYvuQENBFsPvK0BCACwvBcmbnGJk8XhEBRu2QN3\n' +
167     'jKgVs3CG5nE2Xh20JipZwAuGHugDLv6/jlizzz5jtj3SAHVtJB8lJW8I0cNSEIX8\n' +
168     'bRYH4C7lP2DTb9CgMcGErQIyK480+HIsbsZhJSNHdjUUl6IPEEVfSQzWaufmuswe\n' +
169     'e+giqHiTsaiW20ytXilwVGpjlHBaxn/bpskZ0YRasgnPqKgJD3d5kunNqWoyCpMc\n' +
170     'FYgDERvPbhhceFbvFE9G/u3gbcuV15mx53dDX0ImvPcvJnDOyJS9yr7ApdOV312p\n' +
171     'A1MLbxfPnbnVu+dGXn7D/VCDd5aBYVPm+5ANrk6z9lYKH9aO5wgXpLAdJvutCOL5\n' +
172     'ABEBAAGJATwEGAEIACYWIQR4A0lIun9dDpvbZ+T2N5DBHmAnigUCWw+8rQIbDAUJ\n' +
173     'A8JnAAAKCRD2N5DBHmAnigMVB/484G2+3R0cAaj3V/z4gW3MRSMhcYqEMyJ/ACdo\n' +
174     '7y8eoreYW843JWWVDRY6/YcYYGuBBP47WO4JuP2wIlVn17XOCSgnNjmmjsIYiAzk\n' +
175     'op772TB27o0VeiFX5iWcawy0EI7JCb23xpI+QP31ksL2yyRYFXCtXSUfcOrLpCY8\n' +
176     'aEQMQbAGtkag1wHTo/Tf/Vip8q0ZEQ4xOKTR2/ll6+inP8kzGyzadElUnH1Q1OUX\n' +
177     'd2Lj/7BpBHE2++hAjBQRgnyaONF7mpUNEuw64iBNs0Ce6Ki4RV2+EBLnFubnFNRx\n' +
178     'fFJcYXcijhuf3YCdWzqYmPpU/CtF4TgDlfSsdxHxVOmnZkY3\n' +
179     '=qP6s\n' +
180     '-----END PGP PUBLIC KEY BLOCK-----\n',
181
182     keyChangedUserId: '-----BEGIN PGP PUBLIC KEY BLOCK-----\n' +
183     '\n' +
184     'mQENBFsPvK0BCACaIgoIN+3g05mrTITULK/YDTrfg4W7RdzIZBxch5CM0zdu/dby\n' +
185     'esFwaJbVQIqu54CRz5xKAiWmRrQCaRvhvjY0na5r5UUIpbeQiOVrl65JtNbRmlik\n' +
186     'd9Prn1kZDUOZiCPIKn+/M2ecJ92YedM7I4/BbpiaFB11cVrPFg4thepn0LB3+Whp\n' +
187     '9HDm4orH9rjy6IUr6yjWNIr+LYRY6/Ip2vWcMVjleEpTFznXrm83hrJ0n0INtyox\n' +
188     'Nass4eDWkgo6ItxDFFLOORSmpfrToxZymSosWqgux/qG6sxHvLqlqy6Xe3ZYRFbG\n' +
189     '+JcA1oGdwOg/c0ndr6BYYiXTh8+uUJfEoZvzABEBAAG0HEJsYSBCbGEgPGJsYWJs\n' +
190     'YUBleGFtcGxlLm9yZz6JAVQEEwEIAD4WIQR4A0lIun9dDpvbZ+T2N5DBHmAnigUC\n' +
191     'Ww+8rQIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRD2N5DBHmAn\n' +
192     'igwIB/9K3E3Yev9taZP4KnXPhk1oMQRW1MWAsFGUr+70N85VwedpUawymW4vXi1+\n' +
193     'hMeTc39QjmZ0+VqHkJttkqEN6bLcEvgmU/mOlOgKdzy6eUcasYAzgoAKUqSX1SPs\n' +
194     '0Imo7Tj04wnfnVwvKxaeadi0VmdqIYaW75UlrzIaltsBctyeYH8sBrvaTLscb4ON\n' +
195     '46OM3Yw2G9+dBF0P+4UYFHP3EYZMlzNxfwF+i2HsYcNDHlcLfjENr9GwKn5FJqpY\n' +
196     'Iq3qmI37w1hVasHDxXdz1X06dpsa6Im4ACk6LXa7xIQlXxTgPAQV0sz2yB5eY+Md\n' +
197     'uzEXPGW+sq0WRp3hynn7kVP6QQYvtCZTb21lb25lIEVsc2UgPHNvbWVvbmVlbHNl\n' +
198     'QGV4YW1wbGUub3JnPokBVAQTAQgAPhYhBHgDSUi6f10Om9tn5PY3kMEeYCeKBQJb\n' +
199     'D705AhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEPY3kMEeYCeK\n' +
200     'aIUH/2o+Ra+GzxgZrVexXLL+FCSmcu0cxeWfMhL8jd96c6uXIT21qQMRU2jgvnUp\n' +
201     'Wdi/BeLKp5lYwywm04PFhmRVxWXLuLArCsDu+CFys+aPeybnjikPBZov6P8/cZV3\n' +
202     'cd6zxFvqB9J15HjDMcl/r5v6d4CgSLKlFebrO5WKxHa6zGK9TRMQrqTu1heKHRf6\n' +
203     '4+Wj+MZmYnPzEQePjiBw/VkJ1Nm37Dd24gKdcN/qJFwEOqvbI5RIjB7xqoDslZk9\n' +
204     'sAivBXwF0E9HKqvh4WZZeA7uaWNdGo/cQkD5rab5SdHGNPHLbzoRWScsM8WYtsME\n' +
205     'dEMp5iPuG9M63+TD7losAkJ/TlS5AQ0EWw+8rQEIALC8FyZucYmTxeEQFG7ZA3eM\n' +
206     'qBWzcIbmcTZeHbQmKlnAC4Ye6AMu/r+OWLPPPmO2PdIAdW0kHyUlbwjRw1IQhfxt\n' +
207     'FgfgLuU/YNNv0KAxwYStAjIrjzT4cixuxmElI0d2NRSXog8QRV9JDNZq5+a6zB57\n' +
208     '6CKoeJOxqJbbTK1eKXBUamOUcFrGf9umyRnRhFqyCc+oqAkPd3mS6c2pajIKkxwV\n' +
209     'iAMRG89uGFx4Vu8UT0b+7eBty5XXmbHnd0NfQia89y8mcM7IlL3KvsCl05XfXakD\n' +
210     'UwtvF8+dudW750ZefsP9UIN3loFhU+b7kA2uTrP2Vgof1o7nCBeksB0m+60I4vkA\n' +
211     'EQEAAYkBPAQYAQgAJhYhBHgDSUi6f10Om9tn5PY3kMEeYCeKBQJbD7ytAhsMBQkD\n' +
212     'wmcAAAoJEPY3kMEeYCeKAxUH/jzgbb7dHRwBqPdX/PiBbcxFIyFxioQzIn8AJ2jv\n' +
213     'Lx6it5hbzjclZZUNFjr9hxhga4EE/jtY7gm4/bAiVWfXtc4JKCc2OaaOwhiIDOSi\n' +
214     'nvvZMHbujRV6IVfmJZxrDLQQjskJvbfGkj5A/fWSwvbLJFgVcK1dJR9w6sukJjxo\n' +
215     'RAxBsAa2RqDXAdOj9N/9WKnyrRkRDjE4pNHb+WXr6Kc/yTMbLNp0SVScfVDU5Rd3\n' +
216     'YuP/sGkEcTb76ECMFBGCfJo40XualQ0S7DriIE2zQJ7oqLhFXb4QEucW5ucU1HF8\n' +
217     'UlxhdyKOG5/dgJ1bOpiY+lT8K0XhOAOV9Kx3EfFU6admRjc=\n' +
218     '=9WZ7\n' +
219     '-----END PGP PUBLIC KEY BLOCK-----\n'
220 };