js: Testing lare messages
[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 = {
22     encrypt: {
23         good:{
24             data : 'Hello World.',
25             // Fingerprint of a key that has been imported to gnupg (i.e. see testkey.pub; testkey.sec)
26             fingerprint : 'D41735B91236FDB882048C5A2301635EEFF0CB05',
27             data_nonascii: '¡Äußerste µ€ før ñoquis@hóme! Добрый день',
28
29             // used for checking encoding consistency in > 2MB messages.
30             data_nonascii_32: [
31                 'K€K€K€K€K€K€K€K€K€K€K€K€K€K€K€K€',
32                 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€',
33                 '€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€',
34                 '²³²³²³²³²³²³²³²³²³²³²³²³²³²³²³²³',
35                 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€A€µ€µ€µ€µ€',
36                 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µAµ€µ€µ€µ€',
37                 'üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü',
38                 'µAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA€',
39                 'µAAAAµAAAAAAAAAAAAAAAAAAAAAAAAA€',
40                 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAµ€',
41                 'µAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA°',
42                 '€AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA€',
43                 'µ||||||||||||||||||||||||||||||€',
44                 'æſæſ³¼„¬“³³¬“¬½”æſæſ³¼„¬“³³¬“¬½”'
45             ]
46         },
47         bad: {
48             // valid Hex value, but not usable (not imported to gnupg, or bogus fingerprint)
49             fingerprint: 'CDC3A2B2860625CCBFC5AAAAAC6D1B604967FC4A'
50         }
51     },
52     init: {
53         // some parameters
54         invalid_startups: [
55             {all_passwords: true},
56             'openpgpmode',
57             {api_style:"frankenstein"}
58         ]
59     }
60 };
61
62 // (Pseudo-)Random String covering all of utf8.
63 function bigString(length){
64     var uint = '';
65     let arr = [];
66     for (let i= 0; i < length; i++){
67         arr.push(String.fromCharCode(
68             Math.floor(Math.random() * 10174) + 1)
69         );
70     }
71     return arr.join('');
72 }
73
74 function fixedLengthString(megabytes){
75     let maxlength = 1024 * 1024 * megabytes / 2;
76     let uint = new Uint8Array(maxlength);
77     for (let i = 0; i < maxlength; i++){
78         uint[i] = Math.floor(Math.random()* 256);
79     }
80     let td = new TextDecoder('ascii');
81     let result = td.decode(uint);
82     return result;
83 }
84
85 // (Pseudo-)Random Uint8Array, given size in Megabytes
86 function bigUint8(megabytes){
87     let maxlength = 1024 * 1024 * megabytes;
88     let uint = new Uint8Array(maxlength);
89     for (let i= 0; i < maxlength; i++){
90         uint[i] = Math.random() * Math.floor(256);
91     }
92     return uint;
93 }
94
95 // (Pseudo-)Random string with very limited charset (ascii only, no control chars)
96 function bigBoringString(megabytes){
97     let maxlength = 1024 * 1024 * megabytes;
98     let string = [];
99     let chars = ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
100     for (let i= 0; i < maxlength; i++){
101         string.push(chars[Math.floor(Math.random() * chars.length)]);
102     }
103     return string.join('');
104 }
105
106 // Some String with simple chars, with different characteristics, but still
107 // expected to occur in an averag message
108 function slightlyLessBoringString(megabytes, set){
109     let maxlength = 1024 * 1024 * megabytes;
110     let string = [];
111     let chars = '';
112     if (set ===1 ) {
113         chars = '\n\"\r \'';
114     } else if (set === 2 ) {
115         chars = '()=?`#+-{}[]';
116     } else if (set === 3){
117         chars = '^°/';
118     } else if (set ===4) {
119         chars = 'äüßµüþÖ~ɁÑ||@';
120     } else {
121         chars = '*<>\n\"\r§$%&/()=?`#+-{}[] \'';
122     }
123     for (let i= 0; i < maxlength; i++){
124         string.push(chars[Math.floor(Math.random() * chars.length)]);
125     }
126     return string.join('');
127 }
128
129 // Data encrypted with testKey
130 var encryptedData =
131     '-----BEGIN PGP MESSAGE-----\n' +
132     '\n' +
133     'hQEMA6B8jfIUScGEAQgAlANd3uyhmhYLzVcfz4LEqA8tgUC3n719YH0iuKEzG/dv\n' +
134     'B8fsIK2HoeQh2T3/Cc2LBMjgn4K33ksG3k2MqrbIvxWGUQlOAuggc259hquWtX9B\n' +
135     'EcEoOAeh5DuZT/b8CM5seJKNEpPzNxbEDiGikp9DV9gfIQTTUnrDjAu5YtgCN9vA\n' +
136     '3PJxihioH8ODoQw2jlYSkqgXpBVP2Fbx7qgTuxGNu5w36E0/P93//4hDXcKou7ez\n' +
137     'o0+NEGSkbaY+OPk1k7k9n+vBSC3F440dxsTNs5WmRvx9XZEotJkUBweE+8XaoLCn\n' +
138     '3RrtyD/lj63qi3dbyI5XFLuPU1baFskJ4UAmI4wNhdJ+ASailpnFBnNgiFBh3ZfB\n' +
139     'G5Rmd3ocSL7l6lq1bVK9advXb7vcne502W1ldAfHgTdQgc2CueIDFUYAaXP2OvhP\n' +
140     'isGL7jOlDCBKwep67ted0cTRPLWkk3NSuLIlvD5xs6L4z3rPu92gXYgbZoMMdP0N\n' +
141     'kSAQYOHplfA7YJWkrlRm\n' +
142     '=zap6\n' +
143     '-----END PGP MESSAGE-----\n';