Chirag1994 commited on
Commit
0804379
1 Parent(s): e76a088

Delete multilingual_toxic_files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. multilingual_toxic_comment_files/.gitattributes +0 -1
  2. multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/fingerprint.pb +0 -3
  3. multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/keras_metadata.pb +0 -3
  4. multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/saved_model.pb +0 -3
  5. multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/variables/variables.data-00000-of-00001 +0 -3
  6. multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/variables/variables.index +0 -0
  7. multilingual_toxic_comment_files/app.py +0 -55
  8. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/AES.py +0 -234
  9. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/AES.pyi +0 -154
  10. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC2.py +0 -175
  11. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC2.pyi +0 -33
  12. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC4.py +0 -136
  13. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC4.pyi +0 -14
  14. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Blowfish.py +0 -159
  15. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Blowfish.pyi +0 -33
  16. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/CAST.py +0 -159
  17. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/CAST.pyi +0 -33
  18. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20.py +0 -287
  19. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20.pyi +0 -23
  20. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20_Poly1305.py +0 -336
  21. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20_Poly1305.pyi +0 -26
  22. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES.py +0 -158
  23. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES.pyi +0 -33
  24. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES3.py +0 -187
  25. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES3.pyi +0 -35
  26. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_OAEP.py +0 -239
  27. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_OAEP.pyi +0 -35
  28. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_v1_5.py +0 -217
  29. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_v1_5.pyi +0 -20
  30. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Salsa20.py +0 -167
  31. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Salsa20.pyi +0 -24
  32. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_ARC4.pyd +0 -0
  33. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_EKSBlowfish.py +0 -131
  34. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_EKSBlowfish.pyi +0 -15
  35. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_Salsa20.pyd +0 -0
  36. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__init__.py +0 -79
  37. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__init__.pyi +0 -0
  38. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/AES.cpython-310.pyc +0 -0
  39. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ARC2.cpython-310.pyc +0 -0
  40. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ARC4.cpython-310.pyc +0 -0
  41. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/Blowfish.cpython-310.pyc +0 -0
  42. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/CAST.cpython-310.pyc +0 -0
  43. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ChaCha20.cpython-310.pyc +0 -0
  44. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ChaCha20_Poly1305.cpython-310.pyc +0 -0
  45. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/DES.cpython-310.pyc +0 -0
  46. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/DES3.cpython-310.pyc +0 -0
  47. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/PKCS1_OAEP.cpython-310.pyc +0 -0
  48. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/PKCS1_v1_5.cpython-310.pyc +0 -0
  49. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/Salsa20.cpython-310.pyc +0 -0
  50. multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/_EKSBlowfish.cpython-310.pyc +0 -0
multilingual_toxic_comment_files/.gitattributes DELETED
@@ -1 +0,0 @@
1
- Multilingual_toxic_comment_classifier/ filter=lfs diff=lfs merge=lfs -text
 
 
multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/fingerprint.pb DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:9a9d19f63b7b7b7dcfa8f357dd1fd99fa99f3a5ff34a7570f182d8a3aa20823c
3
- size 56
 
 
 
 
multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/keras_metadata.pb DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:82f64bf076deed233b6fc5b1571df01a1962cec9329ab1e666b1a40e342f7077
3
- size 335379
 
 
 
 
multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/saved_model.pb DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:e6d665d394967b71ef01e9726c26bacef102200d68d760a5ed5178356f788157
3
- size 14061456
 
 
 
 
multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/variables/variables.data-00000-of-00001 DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:c62edbd59c81c2c336b4fe4dae3f4e4d34b410ebe038c32904a538c91eb4636d
3
- size 6731757780
 
 
 
 
multilingual_toxic_comment_files/Multilingual_toxic_comment_classifier/variables/variables.index DELETED
Binary file (69.5 kB)
 
multilingual_toxic_comment_files/app.py DELETED
@@ -1,55 +0,0 @@
1
- import tensorflow as tf
2
- import gradio as gr
3
- import pandas as pd
4
- from transformers import AutoTokenizer
5
-
6
- model_save_path = "Multilingual_toxic_comment_classifier/"
7
- ### Loading the fine-tuned model ###
8
- loaded_model = tf.keras.models.load_model(model_save_path)
9
- ### Initializing the tokenizer ###
10
- tokenizer_ = AutoTokenizer.from_pretrained("xlm-roberta-large")
11
-
12
- examples_list = [
13
- [example]
14
- for example in pd.read_csv("examples/sample_comments.csv")["comment_text"].tolist()
15
- ]
16
-
17
-
18
- def prep_data(text, tokenizer, max_len=192):
19
- tokens = tokenizer(
20
- text,
21
- max_length=max_len,
22
- truncation=True,
23
- padding="max_length",
24
- add_special_tokens=True,
25
- return_tensors="tf",
26
- )
27
-
28
- return {
29
- "input_ids": tokens["input_ids"],
30
- "attention_mask": tokens["attention_mask"],
31
- }
32
-
33
-
34
- def predict(text):
35
- prob_of_toxic_comment = loaded_model.predict(
36
- prep_data(text=text, tokenizer=tokenizer_, max_len=192)
37
- )[0][0]
38
- prob_of_non_toxic_comment = 1 - prob_of_toxic_comment
39
- prob_of_toxic_comment, prob_of_non_toxic_comment
40
- probs = {
41
- "prob_of_toxic_comment": float(prob_of_toxic_comment),
42
- "prob_of_non_toxic_comment": float(prob_of_non_toxic_comment),
43
- }
44
- return probs
45
-
46
-
47
- interface = gr.Interface(
48
- fn=predict,
49
- inputs=gr.components.Textbox(lines=4, label="Comment"),
50
- outputs=[gr.Label(label="Probabilities")],
51
- examples=examples_list,
52
- title="Multi-Lingual Toxic Comment Classification.",
53
- description="XLM-Roberta Large model",
54
- )
55
- interface.launch(debug=False, share=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/AES.py DELETED
@@ -1,234 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/AES.py : AES
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
-
23
- import sys
24
-
25
- from Crypto.Cipher import _create_cipher
26
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
27
- VoidPointer, SmartPointer,
28
- c_size_t, c_uint8_ptr)
29
-
30
- from Crypto.Util import _cpu_features
31
- from Crypto.Random import get_random_bytes
32
-
33
- MODE_ECB = 1 #: Electronic Code Book (:ref:`ecb_mode`)
34
- MODE_CBC = 2 #: Cipher-Block Chaining (:ref:`cbc_mode`)
35
- MODE_CFB = 3 #: Cipher Feedback (:ref:`cfb_mode`)
36
- MODE_OFB = 5 #: Output Feedback (:ref:`ofb_mode`)
37
- MODE_CTR = 6 #: Counter mode (:ref:`ctr_mode`)
38
- MODE_OPENPGP = 7 #: OpenPGP mode (:ref:`openpgp_mode`)
39
- MODE_CCM = 8 #: Counter with CBC-MAC (:ref:`ccm_mode`)
40
- MODE_EAX = 9 #: :ref:`eax_mode`
41
- MODE_SIV = 10 #: Galois Counter Mode (:ref:`gcm_mode`)
42
- MODE_GCM = 11 #: Synthetic Initialization Vector (:ref:`siv_mode`)
43
- MODE_OCB = 12 #: Offset Code Book (:ref:`ocb_mode`)
44
-
45
-
46
- _cproto = """
47
- int AES_start_operation(const uint8_t key[],
48
- size_t key_len,
49
- void **pResult);
50
- int AES_encrypt(const void *state,
51
- const uint8_t *in,
52
- uint8_t *out,
53
- size_t data_len);
54
- int AES_decrypt(const void *state,
55
- const uint8_t *in,
56
- uint8_t *out,
57
- size_t data_len);
58
- int AES_stop_operation(void *state);
59
- """
60
-
61
-
62
- # Load portable AES
63
- _raw_aes_lib = load_pycryptodome_raw_lib("Crypto.Cipher._raw_aes",
64
- _cproto)
65
-
66
- # Try to load AES with AES NI instructions
67
- try:
68
- _raw_aesni_lib = None
69
- if _cpu_features.have_aes_ni():
70
- _raw_aesni_lib = load_pycryptodome_raw_lib("Crypto.Cipher._raw_aesni",
71
- _cproto.replace("AES",
72
- "AESNI"))
73
- # _raw_aesni may not have been compiled in
74
- except OSError:
75
- pass
76
-
77
-
78
- def _create_base_cipher(dict_parameters):
79
- """This method instantiates and returns a handle to a low-level
80
- base cipher. It will absorb named parameters in the process."""
81
-
82
- use_aesni = dict_parameters.pop("use_aesni", True)
83
-
84
- try:
85
- key = dict_parameters.pop("key")
86
- except KeyError:
87
- raise TypeError("Missing 'key' parameter")
88
-
89
- if len(key) not in key_size:
90
- raise ValueError("Incorrect AES key length (%d bytes)" % len(key))
91
-
92
- if use_aesni and _raw_aesni_lib:
93
- start_operation = _raw_aesni_lib.AESNI_start_operation
94
- stop_operation = _raw_aesni_lib.AESNI_stop_operation
95
- else:
96
- start_operation = _raw_aes_lib.AES_start_operation
97
- stop_operation = _raw_aes_lib.AES_stop_operation
98
-
99
- cipher = VoidPointer()
100
- result = start_operation(c_uint8_ptr(key),
101
- c_size_t(len(key)),
102
- cipher.address_of())
103
- if result:
104
- raise ValueError("Error %X while instantiating the AES cipher"
105
- % result)
106
- return SmartPointer(cipher.get(), stop_operation)
107
-
108
-
109
- def _derive_Poly1305_key_pair(key, nonce):
110
- """Derive a tuple (r, s, nonce) for a Poly1305 MAC.
111
-
112
- If nonce is ``None``, a new 16-byte nonce is generated.
113
- """
114
-
115
- if len(key) != 32:
116
- raise ValueError("Poly1305 with AES requires a 32-byte key")
117
-
118
- if nonce is None:
119
- nonce = get_random_bytes(16)
120
- elif len(nonce) != 16:
121
- raise ValueError("Poly1305 with AES requires a 16-byte nonce")
122
-
123
- s = new(key[:16], MODE_ECB).encrypt(nonce)
124
- return key[16:], s, nonce
125
-
126
-
127
- def new(key, mode, *args, **kwargs):
128
- """Create a new AES cipher.
129
-
130
- Args:
131
- key(bytes/bytearray/memoryview):
132
- The secret key to use in the symmetric cipher.
133
-
134
- It must be 16 (*AES-128)*, 24 (*AES-192*) or 32 (*AES-256*) bytes long.
135
-
136
- For ``MODE_SIV`` only, it doubles to 32, 48, or 64 bytes.
137
- mode (a ``MODE_*`` constant):
138
- The chaining mode to use for encryption or decryption.
139
- If in doubt, use ``MODE_EAX``.
140
-
141
- Keyword Args:
142
- iv (bytes/bytearray/memoryview):
143
- (Only applicable for ``MODE_CBC``, ``MODE_CFB``, ``MODE_OFB``,
144
- and ``MODE_OPENPGP`` modes).
145
-
146
- The initialization vector to use for encryption or decryption.
147
-
148
- For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 16 bytes long.
149
-
150
- For ``MODE_OPENPGP`` mode only,
151
- it must be 16 bytes long for encryption
152
- and 18 bytes for decryption (in the latter case, it is
153
- actually the *encrypted* IV which was prefixed to the ciphertext).
154
-
155
- If not provided, a random byte string is generated (you must then
156
- read its value with the :attr:`iv` attribute).
157
-
158
- nonce (bytes/bytearray/memoryview):
159
- (Only applicable for ``MODE_CCM``, ``MODE_EAX``, ``MODE_GCM``,
160
- ``MODE_SIV``, ``MODE_OCB``, and ``MODE_CTR``).
161
-
162
- A value that must never be reused for any other encryption done
163
- with this key (except possibly for ``MODE_SIV``, see below).
164
-
165
- For ``MODE_EAX``, ``MODE_GCM`` and ``MODE_SIV`` there are no
166
- restrictions on its length (recommended: **16** bytes).
167
-
168
- For ``MODE_CCM``, its length must be in the range **[7..13]**.
169
- Bear in mind that with CCM there is a trade-off between nonce
170
- length and maximum message size. Recommendation: **11** bytes.
171
-
172
- For ``MODE_OCB``, its length must be in the range **[1..15]**
173
- (recommended: **15**).
174
-
175
- For ``MODE_CTR``, its length must be in the range **[0..15]**
176
- (recommended: **8**).
177
-
178
- For ``MODE_SIV``, the nonce is optional, if it is not specified,
179
- then no nonce is being used, which renders the encryption
180
- deterministic.
181
-
182
- If not provided, for modes other than ``MODE_SIV``, a random
183
- byte string of the recommended length is used (you must then
184
- read its value with the :attr:`nonce` attribute).
185
-
186
- segment_size (integer):
187
- (Only ``MODE_CFB``).The number of **bits** the plaintext and ciphertext
188
- are segmented in. It must be a multiple of 8.
189
- If not specified, it will be assumed to be 8.
190
-
191
- mac_len (integer):
192
- (Only ``MODE_EAX``, ``MODE_GCM``, ``MODE_OCB``, ``MODE_CCM``)
193
- Length of the authentication tag, in bytes.
194
-
195
- It must be even and in the range **[4..16]**.
196
- The recommended value (and the default, if not specified) is **16**.
197
-
198
- msg_len (integer):
199
- (Only ``MODE_CCM``). Length of the message to (de)cipher.
200
- If not specified, ``encrypt`` must be called with the entire message.
201
- Similarly, ``decrypt`` can only be called once.
202
-
203
- assoc_len (integer):
204
- (Only ``MODE_CCM``). Length of the associated data.
205
- If not specified, all associated data is buffered internally,
206
- which may represent a problem for very large messages.
207
-
208
- initial_value (integer or bytes/bytearray/memoryview):
209
- (Only ``MODE_CTR``).
210
- The initial value for the counter. If not present, the cipher will
211
- start counting from 0. The value is incremented by one for each block.
212
- The counter number is encoded in big endian mode.
213
-
214
- counter (object):
215
- (Only ``MODE_CTR``).
216
- Instance of ``Crypto.Util.Counter``, which allows full customization
217
- of the counter block. This parameter is incompatible to both ``nonce``
218
- and ``initial_value``.
219
-
220
- use_aesni: (boolean):
221
- Use Intel AES-NI hardware extensions (default: use if available).
222
-
223
- Returns:
224
- an AES object, of the applicable mode.
225
- """
226
-
227
- kwargs["add_aes_modes"] = True
228
- return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
229
-
230
-
231
- # Size of a data block (in bytes)
232
- block_size = 16
233
- # Size of a key (in bytes)
234
- key_size = (16, 24, 32)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/AES.pyi DELETED
@@ -1,154 +0,0 @@
1
- from typing import ByteString, Dict, Optional, Tuple, Union, overload
2
- from typing_extensions import Literal
3
-
4
- from Crypto.Cipher._mode_ecb import EcbMode
5
- from Crypto.Cipher._mode_cbc import CbcMode
6
- from Crypto.Cipher._mode_cfb import CfbMode
7
- from Crypto.Cipher._mode_ofb import OfbMode
8
- from Crypto.Cipher._mode_ctr import CtrMode
9
- from Crypto.Cipher._mode_openpgp import OpenPgpMode
10
- from Crypto.Cipher._mode_ccm import CcmMode
11
- from Crypto.Cipher._mode_eax import EaxMode
12
- from Crypto.Cipher._mode_gcm import GcmMode
13
- from Crypto.Cipher._mode_siv import SivMode
14
- from Crypto.Cipher._mode_ocb import OcbMode
15
-
16
- MODE_ECB: Literal[1]
17
- MODE_CBC: Literal[2]
18
- MODE_CFB: Literal[3]
19
- MODE_OFB: Literal[5]
20
- MODE_CTR: Literal[6]
21
- MODE_OPENPGP: Literal[7]
22
- MODE_CCM: Literal[8]
23
- MODE_EAX: Literal[9]
24
- MODE_SIV: Literal[10]
25
- MODE_GCM: Literal[11]
26
- MODE_OCB: Literal[12]
27
-
28
- # MODE_ECB
29
- @overload
30
- def new(key: ByteString,
31
- mode: Literal[1],
32
- use_aesni : bool = ...) -> \
33
- EcbMode: ...
34
-
35
- # MODE_CBC
36
- @overload
37
- def new(key: ByteString,
38
- mode: Literal[2],
39
- iv : Optional[ByteString] = ...,
40
- use_aesni : bool = ...) -> \
41
- CbcMode: ...
42
-
43
- @overload
44
- def new(key: ByteString,
45
- mode: Literal[2],
46
- IV : Optional[ByteString] = ...,
47
- use_aesni : bool = ...) -> \
48
- CbcMode: ...
49
-
50
- # MODE_CFB
51
- @overload
52
- def new(key: ByteString,
53
- mode: Literal[3],
54
- iv : Optional[ByteString] = ...,
55
- segment_size : int = ...,
56
- use_aesni : bool = ...) -> \
57
- CfbMode: ...
58
-
59
- @overload
60
- def new(key: ByteString,
61
- mode: Literal[3],
62
- IV : Optional[ByteString] = ...,
63
- segment_size : int = ...,
64
- use_aesni : bool = ...) -> \
65
- CfbMode: ...
66
-
67
- # MODE_OFB
68
- @overload
69
- def new(key: ByteString,
70
- mode: Literal[5],
71
- iv : Optional[ByteString] = ...,
72
- use_aesni : bool = ...) -> \
73
- OfbMode: ...
74
-
75
- @overload
76
- def new(key: ByteString,
77
- mode: Literal[5],
78
- IV : Optional[ByteString] = ...,
79
- use_aesni : bool = ...) -> \
80
- OfbMode: ...
81
-
82
- # MODE_CTR
83
- @overload
84
- def new(key: ByteString,
85
- mode: Literal[6],
86
- nonce : Optional[ByteString] = ...,
87
- initial_value : Union[int, ByteString] = ...,
88
- counter : Dict = ...,
89
- use_aesni : bool = ...) -> \
90
- CtrMode: ...
91
-
92
- # MODE_OPENPGP
93
- @overload
94
- def new(key: ByteString,
95
- mode: Literal[7],
96
- iv : Optional[ByteString] = ...,
97
- use_aesni : bool = ...) -> \
98
- OpenPgpMode: ...
99
-
100
- @overload
101
- def new(key: ByteString,
102
- mode: Literal[7],
103
- IV : Optional[ByteString] = ...,
104
- use_aesni : bool = ...) -> \
105
- OpenPgpMode: ...
106
-
107
- # MODE_CCM
108
- @overload
109
- def new(key: ByteString,
110
- mode: Literal[8],
111
- nonce : Optional[ByteString] = ...,
112
- mac_len : int = ...,
113
- assoc_len : int = ...,
114
- use_aesni : bool = ...) -> \
115
- CcmMode: ...
116
-
117
- # MODE_EAX
118
- @overload
119
- def new(key: ByteString,
120
- mode: Literal[9],
121
- nonce : Optional[ByteString] = ...,
122
- mac_len : int = ...,
123
- use_aesni : bool = ...) -> \
124
- EaxMode: ...
125
-
126
- # MODE_GCM
127
- @overload
128
- def new(key: ByteString,
129
- mode: Literal[10],
130
- nonce : Optional[ByteString] = ...,
131
- use_aesni : bool = ...) -> \
132
- SivMode: ...
133
-
134
- # MODE_SIV
135
- @overload
136
- def new(key: ByteString,
137
- mode: Literal[11],
138
- nonce : Optional[ByteString] = ...,
139
- mac_len : int = ...,
140
- use_aesni : bool = ...) -> \
141
- GcmMode: ...
142
-
143
- # MODE_OCB
144
- @overload
145
- def new(key: ByteString,
146
- mode: Literal[12],
147
- nonce : Optional[ByteString] = ...,
148
- mac_len : int = ...,
149
- use_aesni : bool = ...) -> \
150
- OcbMode: ...
151
-
152
-
153
- block_size: int
154
- key_size: Tuple[int, int, int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC2.py DELETED
@@ -1,175 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/ARC2.py : ARC2.py
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
- """
23
- Module's constants for the modes of operation supported with ARC2:
24
-
25
- :var MODE_ECB: :ref:`Electronic Code Book (ECB) <ecb_mode>`
26
- :var MODE_CBC: :ref:`Cipher-Block Chaining (CBC) <cbc_mode>`
27
- :var MODE_CFB: :ref:`Cipher FeedBack (CFB) <cfb_mode>`
28
- :var MODE_OFB: :ref:`Output FeedBack (OFB) <ofb_mode>`
29
- :var MODE_CTR: :ref:`CounTer Mode (CTR) <ctr_mode>`
30
- :var MODE_OPENPGP: :ref:`OpenPGP Mode <openpgp_mode>`
31
- :var MODE_EAX: :ref:`EAX Mode <eax_mode>`
32
- """
33
-
34
- import sys
35
-
36
- from Crypto.Cipher import _create_cipher
37
- from Crypto.Util.py3compat import byte_string
38
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
39
- VoidPointer, SmartPointer,
40
- c_size_t, c_uint8_ptr)
41
-
42
- _raw_arc2_lib = load_pycryptodome_raw_lib(
43
- "Crypto.Cipher._raw_arc2",
44
- """
45
- int ARC2_start_operation(const uint8_t key[],
46
- size_t key_len,
47
- size_t effective_key_len,
48
- void **pResult);
49
- int ARC2_encrypt(const void *state,
50
- const uint8_t *in,
51
- uint8_t *out,
52
- size_t data_len);
53
- int ARC2_decrypt(const void *state,
54
- const uint8_t *in,
55
- uint8_t *out,
56
- size_t data_len);
57
- int ARC2_stop_operation(void *state);
58
- """
59
- )
60
-
61
-
62
- def _create_base_cipher(dict_parameters):
63
- """This method instantiates and returns a handle to a low-level
64
- base cipher. It will absorb named parameters in the process."""
65
-
66
- try:
67
- key = dict_parameters.pop("key")
68
- except KeyError:
69
- raise TypeError("Missing 'key' parameter")
70
-
71
- effective_keylen = dict_parameters.pop("effective_keylen", 1024)
72
-
73
- if len(key) not in key_size:
74
- raise ValueError("Incorrect ARC2 key length (%d bytes)" % len(key))
75
-
76
- if not (40 <= effective_keylen <= 1024):
77
- raise ValueError("'effective_key_len' must be at least 40 and no larger than 1024 "
78
- "(not %d)" % effective_keylen)
79
-
80
- start_operation = _raw_arc2_lib.ARC2_start_operation
81
- stop_operation = _raw_arc2_lib.ARC2_stop_operation
82
-
83
- cipher = VoidPointer()
84
- result = start_operation(c_uint8_ptr(key),
85
- c_size_t(len(key)),
86
- c_size_t(effective_keylen),
87
- cipher.address_of())
88
- if result:
89
- raise ValueError("Error %X while instantiating the ARC2 cipher"
90
- % result)
91
-
92
- return SmartPointer(cipher.get(), stop_operation)
93
-
94
-
95
- def new(key, mode, *args, **kwargs):
96
- """Create a new RC2 cipher.
97
-
98
- :param key:
99
- The secret key to use in the symmetric cipher.
100
- Its length can vary from 5 to 128 bytes; the actual search space
101
- (and the cipher strength) can be reduced with the ``effective_keylen`` parameter.
102
- :type key: bytes, bytearray, memoryview
103
-
104
- :param mode:
105
- The chaining mode to use for encryption or decryption.
106
- :type mode: One of the supported ``MODE_*`` constants
107
-
108
- :Keyword Arguments:
109
- * **iv** (*bytes*, *bytearray*, *memoryview*) --
110
- (Only applicable for ``MODE_CBC``, ``MODE_CFB``, ``MODE_OFB``,
111
- and ``MODE_OPENPGP`` modes).
112
-
113
- The initialization vector to use for encryption or decryption.
114
-
115
- For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 8 bytes long.
116
-
117
- For ``MODE_OPENPGP`` mode only,
118
- it must be 8 bytes long for encryption
119
- and 10 bytes for decryption (in the latter case, it is
120
- actually the *encrypted* IV which was prefixed to the ciphertext).
121
-
122
- If not provided, a random byte string is generated (you must then
123
- read its value with the :attr:`iv` attribute).
124
-
125
- * **nonce** (*bytes*, *bytearray*, *memoryview*) --
126
- (Only applicable for ``MODE_EAX`` and ``MODE_CTR``).
127
-
128
- A value that must never be reused for any other encryption done
129
- with this key.
130
-
131
- For ``MODE_EAX`` there are no
132
- restrictions on its length (recommended: **16** bytes).
133
-
134
- For ``MODE_CTR``, its length must be in the range **[0..7]**.
135
-
136
- If not provided for ``MODE_EAX``, a random byte string is generated (you
137
- can read it back via the ``nonce`` attribute).
138
-
139
- * **effective_keylen** (*integer*) --
140
- Optional. Maximum strength in bits of the actual key used by the ARC2 algorithm.
141
- If the supplied ``key`` parameter is longer (in bits) of the value specified
142
- here, it will be weakened to match it.
143
- If not specified, no limitation is applied.
144
-
145
- * **segment_size** (*integer*) --
146
- (Only ``MODE_CFB``).The number of **bits** the plaintext and ciphertext
147
- are segmented in. It must be a multiple of 8.
148
- If not specified, it will be assumed to be 8.
149
-
150
- * **mac_len** : (*integer*) --
151
- (Only ``MODE_EAX``)
152
- Length of the authentication tag, in bytes.
153
- It must be no longer than 8 (default).
154
-
155
- * **initial_value** : (*integer*) --
156
- (Only ``MODE_CTR``). The initial value for the counter within
157
- the counter block. By default it is **0**.
158
-
159
- :Return: an ARC2 object, of the applicable mode.
160
- """
161
-
162
- return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
163
-
164
- MODE_ECB = 1
165
- MODE_CBC = 2
166
- MODE_CFB = 3
167
- MODE_OFB = 5
168
- MODE_CTR = 6
169
- MODE_OPENPGP = 7
170
- MODE_EAX = 9
171
-
172
- # Size of a data block (in bytes)
173
- block_size = 8
174
- # Size of a key (in bytes)
175
- key_size = range(5, 128 + 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC2.pyi DELETED
@@ -1,33 +0,0 @@
1
- from typing import Union, Dict, Iterable, Optional, ByteString
2
-
3
- from Crypto.Cipher._mode_ecb import EcbMode
4
- from Crypto.Cipher._mode_cbc import CbcMode
5
- from Crypto.Cipher._mode_cfb import CfbMode
6
- from Crypto.Cipher._mode_ofb import OfbMode
7
- from Crypto.Cipher._mode_ctr import CtrMode
8
- from Crypto.Cipher._mode_openpgp import OpenPgpMode
9
- from Crypto.Cipher._mode_eax import EaxMode
10
-
11
- ARC2Mode = int
12
-
13
- MODE_ECB: ARC2Mode
14
- MODE_CBC: ARC2Mode
15
- MODE_CFB: ARC2Mode
16
- MODE_OFB: ARC2Mode
17
- MODE_CTR: ARC2Mode
18
- MODE_OPENPGP: ARC2Mode
19
- MODE_EAX: ARC2Mode
20
-
21
- def new(key: ByteString,
22
- mode: ARC2Mode,
23
- iv : Optional[ByteString] = ...,
24
- IV : Optional[ByteString] = ...,
25
- nonce : Optional[ByteString] = ...,
26
- segment_size : int = ...,
27
- mac_len : int = ...,
28
- initial_value : Union[int, ByteString] = ...,
29
- counter : Dict = ...) -> \
30
- Union[EcbMode, CbcMode, CfbMode, OfbMode, CtrMode, OpenPgpMode]: ...
31
-
32
- block_size: int
33
- key_size: Iterable[int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC4.py DELETED
@@ -1,136 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/ARC4.py : ARC4
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
-
23
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib, VoidPointer,
24
- create_string_buffer, get_raw_buffer,
25
- SmartPointer, c_size_t, c_uint8_ptr)
26
-
27
-
28
- _raw_arc4_lib = load_pycryptodome_raw_lib("Crypto.Cipher._ARC4", """
29
- int ARC4_stream_encrypt(void *rc4State, const uint8_t in[],
30
- uint8_t out[], size_t len);
31
- int ARC4_stream_init(uint8_t *key, size_t keylen,
32
- void **pRc4State);
33
- int ARC4_stream_destroy(void *rc4State);
34
- """)
35
-
36
-
37
- class ARC4Cipher:
38
- """ARC4 cipher object. Do not create it directly. Use
39
- :func:`Crypto.Cipher.ARC4.new` instead.
40
- """
41
-
42
- def __init__(self, key, *args, **kwargs):
43
- """Initialize an ARC4 cipher object
44
-
45
- See also `new()` at the module level."""
46
-
47
- if len(args) > 0:
48
- ndrop = args[0]
49
- args = args[1:]
50
- else:
51
- ndrop = kwargs.pop('drop', 0)
52
-
53
- if len(key) not in key_size:
54
- raise ValueError("Incorrect ARC4 key length (%d bytes)" %
55
- len(key))
56
-
57
- self._state = VoidPointer()
58
- result = _raw_arc4_lib.ARC4_stream_init(c_uint8_ptr(key),
59
- c_size_t(len(key)),
60
- self._state.address_of())
61
- if result != 0:
62
- raise ValueError("Error %d while creating the ARC4 cipher"
63
- % result)
64
- self._state = SmartPointer(self._state.get(),
65
- _raw_arc4_lib.ARC4_stream_destroy)
66
-
67
- if ndrop > 0:
68
- # This is OK even if the cipher is used for decryption,
69
- # since encrypt and decrypt are actually the same thing
70
- # with ARC4.
71
- self.encrypt(b'\x00' * ndrop)
72
-
73
- self.block_size = 1
74
- self.key_size = len(key)
75
-
76
- def encrypt(self, plaintext):
77
- """Encrypt a piece of data.
78
-
79
- :param plaintext: The data to encrypt, of any size.
80
- :type plaintext: bytes, bytearray, memoryview
81
- :returns: the encrypted byte string, of equal length as the
82
- plaintext.
83
- """
84
-
85
- ciphertext = create_string_buffer(len(plaintext))
86
- result = _raw_arc4_lib.ARC4_stream_encrypt(self._state.get(),
87
- c_uint8_ptr(plaintext),
88
- ciphertext,
89
- c_size_t(len(plaintext)))
90
- if result:
91
- raise ValueError("Error %d while encrypting with RC4" % result)
92
- return get_raw_buffer(ciphertext)
93
-
94
- def decrypt(self, ciphertext):
95
- """Decrypt a piece of data.
96
-
97
- :param ciphertext: The data to decrypt, of any size.
98
- :type ciphertext: bytes, bytearray, memoryview
99
- :returns: the decrypted byte string, of equal length as the
100
- ciphertext.
101
- """
102
-
103
- try:
104
- return self.encrypt(ciphertext)
105
- except ValueError as e:
106
- raise ValueError(str(e).replace("enc", "dec"))
107
-
108
-
109
- def new(key, *args, **kwargs):
110
- """Create a new ARC4 cipher.
111
-
112
- :param key:
113
- The secret key to use in the symmetric cipher.
114
- Its length must be in the range ``[1..256]``.
115
- The recommended length is 16 bytes.
116
- :type key: bytes, bytearray, memoryview
117
-
118
- :Keyword Arguments:
119
- * *drop* (``integer``) --
120
- The amount of bytes to discard from the initial part of the keystream.
121
- In fact, such part has been found to be distinguishable from random
122
- data (while it shouldn't) and also correlated to key.
123
-
124
- The recommended value is 3072_ bytes. The default value is 0.
125
-
126
- :Return: an `ARC4Cipher` object
127
-
128
- .. _3072: http://eprint.iacr.org/2002/067.pdf
129
- """
130
- return ARC4Cipher(key, *args, **kwargs)
131
-
132
-
133
- # Size of a data block (in bytes)
134
- block_size = 1
135
- # Size of a key (in bytes)
136
- key_size = range(1, 256+1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ARC4.pyi DELETED
@@ -1,14 +0,0 @@
1
- from typing import Any, Union, Iterable, ByteString
2
-
3
- class ARC4Cipher:
4
- block_size: int
5
- key_size: int
6
-
7
- def __init__(self, key: ByteString, *args: Any, **kwargs: Any) -> None: ...
8
- def encrypt(self, plaintext: ByteString) -> bytes: ...
9
- def decrypt(self, ciphertext: ByteString) -> bytes: ...
10
-
11
- def new(key: ByteString, drop : int = ...) -> ARC4Cipher: ...
12
-
13
- block_size: int
14
- key_size: Iterable[int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Blowfish.py DELETED
@@ -1,159 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/Blowfish.py : Blowfish
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
- """
23
- Module's constants for the modes of operation supported with Blowfish:
24
-
25
- :var MODE_ECB: :ref:`Electronic Code Book (ECB) <ecb_mode>`
26
- :var MODE_CBC: :ref:`Cipher-Block Chaining (CBC) <cbc_mode>`
27
- :var MODE_CFB: :ref:`Cipher FeedBack (CFB) <cfb_mode>`
28
- :var MODE_OFB: :ref:`Output FeedBack (OFB) <ofb_mode>`
29
- :var MODE_CTR: :ref:`CounTer Mode (CTR) <ctr_mode>`
30
- :var MODE_OPENPGP: :ref:`OpenPGP Mode <openpgp_mode>`
31
- :var MODE_EAX: :ref:`EAX Mode <eax_mode>`
32
- """
33
-
34
- import sys
35
-
36
- from Crypto.Cipher import _create_cipher
37
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
38
- VoidPointer, SmartPointer, c_size_t,
39
- c_uint8_ptr)
40
-
41
- _raw_blowfish_lib = load_pycryptodome_raw_lib(
42
- "Crypto.Cipher._raw_blowfish",
43
- """
44
- int Blowfish_start_operation(const uint8_t key[],
45
- size_t key_len,
46
- void **pResult);
47
- int Blowfish_encrypt(const void *state,
48
- const uint8_t *in,
49
- uint8_t *out,
50
- size_t data_len);
51
- int Blowfish_decrypt(const void *state,
52
- const uint8_t *in,
53
- uint8_t *out,
54
- size_t data_len);
55
- int Blowfish_stop_operation(void *state);
56
- """
57
- )
58
-
59
-
60
- def _create_base_cipher(dict_parameters):
61
- """This method instantiates and returns a smart pointer to
62
- a low-level base cipher. It will absorb named parameters in
63
- the process."""
64
-
65
- try:
66
- key = dict_parameters.pop("key")
67
- except KeyError:
68
- raise TypeError("Missing 'key' parameter")
69
-
70
- if len(key) not in key_size:
71
- raise ValueError("Incorrect Blowfish key length (%d bytes)" % len(key))
72
-
73
- start_operation = _raw_blowfish_lib.Blowfish_start_operation
74
- stop_operation = _raw_blowfish_lib.Blowfish_stop_operation
75
-
76
- void_p = VoidPointer()
77
- result = start_operation(c_uint8_ptr(key),
78
- c_size_t(len(key)),
79
- void_p.address_of())
80
- if result:
81
- raise ValueError("Error %X while instantiating the Blowfish cipher"
82
- % result)
83
- return SmartPointer(void_p.get(), stop_operation)
84
-
85
-
86
- def new(key, mode, *args, **kwargs):
87
- """Create a new Blowfish cipher
88
-
89
- :param key:
90
- The secret key to use in the symmetric cipher.
91
- Its length can vary from 5 to 56 bytes.
92
- :type key: bytes, bytearray, memoryview
93
-
94
- :param mode:
95
- The chaining mode to use for encryption or decryption.
96
- :type mode: One of the supported ``MODE_*`` constants
97
-
98
- :Keyword Arguments:
99
- * **iv** (*bytes*, *bytearray*, *memoryview*) --
100
- (Only applicable for ``MODE_CBC``, ``MODE_CFB``, ``MODE_OFB``,
101
- and ``MODE_OPENPGP`` modes).
102
-
103
- The initialization vector to use for encryption or decryption.
104
-
105
- For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 8 bytes long.
106
-
107
- For ``MODE_OPENPGP`` mode only,
108
- it must be 8 bytes long for encryption
109
- and 10 bytes for decryption (in the latter case, it is
110
- actually the *encrypted* IV which was prefixed to the ciphertext).
111
-
112
- If not provided, a random byte string is generated (you must then
113
- read its value with the :attr:`iv` attribute).
114
-
115
- * **nonce** (*bytes*, *bytearray*, *memoryview*) --
116
- (Only applicable for ``MODE_EAX`` and ``MODE_CTR``).
117
-
118
- A value that must never be reused for any other encryption done
119
- with this key.
120
-
121
- For ``MODE_EAX`` there are no
122
- restrictions on its length (recommended: **16** bytes).
123
-
124
- For ``MODE_CTR``, its length must be in the range **[0..7]**.
125
-
126
- If not provided for ``MODE_EAX``, a random byte string is generated (you
127
- can read it back via the ``nonce`` attribute).
128
-
129
- * **segment_size** (*integer*) --
130
- (Only ``MODE_CFB``).The number of **bits** the plaintext and ciphertext
131
- are segmented in. It must be a multiple of 8.
132
- If not specified, it will be assumed to be 8.
133
-
134
- * **mac_len** : (*integer*) --
135
- (Only ``MODE_EAX``)
136
- Length of the authentication tag, in bytes.
137
- It must be no longer than 8 (default).
138
-
139
- * **initial_value** : (*integer*) --
140
- (Only ``MODE_CTR``). The initial value for the counter within
141
- the counter block. By default it is **0**.
142
-
143
- :Return: a Blowfish object, of the applicable mode.
144
- """
145
-
146
- return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
147
-
148
- MODE_ECB = 1
149
- MODE_CBC = 2
150
- MODE_CFB = 3
151
- MODE_OFB = 5
152
- MODE_CTR = 6
153
- MODE_OPENPGP = 7
154
- MODE_EAX = 9
155
-
156
- # Size of a data block (in bytes)
157
- block_size = 8
158
- # Size of a key (in bytes)
159
- key_size = range(4, 56 + 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Blowfish.pyi DELETED
@@ -1,33 +0,0 @@
1
- from typing import Union, Dict, Iterable, ByteString, Optional
2
-
3
- from Crypto.Cipher._mode_ecb import EcbMode
4
- from Crypto.Cipher._mode_cbc import CbcMode
5
- from Crypto.Cipher._mode_cfb import CfbMode
6
- from Crypto.Cipher._mode_ofb import OfbMode
7
- from Crypto.Cipher._mode_ctr import CtrMode
8
- from Crypto.Cipher._mode_openpgp import OpenPgpMode
9
- from Crypto.Cipher._mode_eax import EaxMode
10
-
11
- BlowfishMode = int
12
-
13
- MODE_ECB: BlowfishMode
14
- MODE_CBC: BlowfishMode
15
- MODE_CFB: BlowfishMode
16
- MODE_OFB: BlowfishMode
17
- MODE_CTR: BlowfishMode
18
- MODE_OPENPGP: BlowfishMode
19
- MODE_EAX: BlowfishMode
20
-
21
- def new(key: ByteString,
22
- mode: BlowfishMode,
23
- iv : Optional[ByteString] = ...,
24
- IV : Optional[ByteString] = ...,
25
- nonce : Optional[ByteString] = ...,
26
- segment_size : int = ...,
27
- mac_len : int = ...,
28
- initial_value : Union[int, ByteString] = ...,
29
- counter : Dict = ...) -> \
30
- Union[EcbMode, CbcMode, CfbMode, OfbMode, CtrMode, OpenPgpMode]: ...
31
-
32
- block_size: int
33
- key_size: Iterable[int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/CAST.py DELETED
@@ -1,159 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/CAST.py : CAST
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
- """
23
- Module's constants for the modes of operation supported with CAST:
24
-
25
- :var MODE_ECB: :ref:`Electronic Code Book (ECB) <ecb_mode>`
26
- :var MODE_CBC: :ref:`Cipher-Block Chaining (CBC) <cbc_mode>`
27
- :var MODE_CFB: :ref:`Cipher FeedBack (CFB) <cfb_mode>`
28
- :var MODE_OFB: :ref:`Output FeedBack (OFB) <ofb_mode>`
29
- :var MODE_CTR: :ref:`CounTer Mode (CTR) <ctr_mode>`
30
- :var MODE_OPENPGP: :ref:`OpenPGP Mode <openpgp_mode>`
31
- :var MODE_EAX: :ref:`EAX Mode <eax_mode>`
32
- """
33
-
34
- import sys
35
-
36
- from Crypto.Cipher import _create_cipher
37
- from Crypto.Util.py3compat import byte_string
38
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
39
- VoidPointer, SmartPointer,
40
- c_size_t, c_uint8_ptr)
41
-
42
- _raw_cast_lib = load_pycryptodome_raw_lib(
43
- "Crypto.Cipher._raw_cast",
44
- """
45
- int CAST_start_operation(const uint8_t key[],
46
- size_t key_len,
47
- void **pResult);
48
- int CAST_encrypt(const void *state,
49
- const uint8_t *in,
50
- uint8_t *out,
51
- size_t data_len);
52
- int CAST_decrypt(const void *state,
53
- const uint8_t *in,
54
- uint8_t *out,
55
- size_t data_len);
56
- int CAST_stop_operation(void *state);
57
- """)
58
-
59
-
60
- def _create_base_cipher(dict_parameters):
61
- """This method instantiates and returns a handle to a low-level
62
- base cipher. It will absorb named parameters in the process."""
63
-
64
- try:
65
- key = dict_parameters.pop("key")
66
- except KeyError:
67
- raise TypeError("Missing 'key' parameter")
68
-
69
- if len(key) not in key_size:
70
- raise ValueError("Incorrect CAST key length (%d bytes)" % len(key))
71
-
72
- start_operation = _raw_cast_lib.CAST_start_operation
73
- stop_operation = _raw_cast_lib.CAST_stop_operation
74
-
75
- cipher = VoidPointer()
76
- result = start_operation(c_uint8_ptr(key),
77
- c_size_t(len(key)),
78
- cipher.address_of())
79
- if result:
80
- raise ValueError("Error %X while instantiating the CAST cipher"
81
- % result)
82
-
83
- return SmartPointer(cipher.get(), stop_operation)
84
-
85
-
86
- def new(key, mode, *args, **kwargs):
87
- """Create a new CAST cipher
88
-
89
- :param key:
90
- The secret key to use in the symmetric cipher.
91
- Its length can vary from 5 to 16 bytes.
92
- :type key: bytes, bytearray, memoryview
93
-
94
- :param mode:
95
- The chaining mode to use for encryption or decryption.
96
- :type mode: One of the supported ``MODE_*`` constants
97
-
98
- :Keyword Arguments:
99
- * **iv** (*bytes*, *bytearray*, *memoryview*) --
100
- (Only applicable for ``MODE_CBC``, ``MODE_CFB``, ``MODE_OFB``,
101
- and ``MODE_OPENPGP`` modes).
102
-
103
- The initialization vector to use for encryption or decryption.
104
-
105
- For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 8 bytes long.
106
-
107
- For ``MODE_OPENPGP`` mode only,
108
- it must be 8 bytes long for encryption
109
- and 10 bytes for decryption (in the latter case, it is
110
- actually the *encrypted* IV which was prefixed to the ciphertext).
111
-
112
- If not provided, a random byte string is generated (you must then
113
- read its value with the :attr:`iv` attribute).
114
-
115
- * **nonce** (*bytes*, *bytearray*, *memoryview*) --
116
- (Only applicable for ``MODE_EAX`` and ``MODE_CTR``).
117
-
118
- A value that must never be reused for any other encryption done
119
- with this key.
120
-
121
- For ``MODE_EAX`` there are no
122
- restrictions on its length (recommended: **16** bytes).
123
-
124
- For ``MODE_CTR``, its length must be in the range **[0..7]**.
125
-
126
- If not provided for ``MODE_EAX``, a random byte string is generated (you
127
- can read it back via the ``nonce`` attribute).
128
-
129
- * **segment_size** (*integer*) --
130
- (Only ``MODE_CFB``).The number of **bits** the plaintext and ciphertext
131
- are segmented in. It must be a multiple of 8.
132
- If not specified, it will be assumed to be 8.
133
-
134
- * **mac_len** : (*integer*) --
135
- (Only ``MODE_EAX``)
136
- Length of the authentication tag, in bytes.
137
- It must be no longer than 8 (default).
138
-
139
- * **initial_value** : (*integer*) --
140
- (Only ``MODE_CTR``). The initial value for the counter within
141
- the counter block. By default it is **0**.
142
-
143
- :Return: a CAST object, of the applicable mode.
144
- """
145
-
146
- return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
147
-
148
- MODE_ECB = 1
149
- MODE_CBC = 2
150
- MODE_CFB = 3
151
- MODE_OFB = 5
152
- MODE_CTR = 6
153
- MODE_OPENPGP = 7
154
- MODE_EAX = 9
155
-
156
- # Size of a data block (in bytes)
157
- block_size = 8
158
- # Size of a key (in bytes)
159
- key_size = range(5, 16 + 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/CAST.pyi DELETED
@@ -1,33 +0,0 @@
1
- from typing import Union, Dict, Iterable, Optional, ByteString
2
-
3
- from Crypto.Cipher._mode_ecb import EcbMode
4
- from Crypto.Cipher._mode_cbc import CbcMode
5
- from Crypto.Cipher._mode_cfb import CfbMode
6
- from Crypto.Cipher._mode_ofb import OfbMode
7
- from Crypto.Cipher._mode_ctr import CtrMode
8
- from Crypto.Cipher._mode_openpgp import OpenPgpMode
9
- from Crypto.Cipher._mode_eax import EaxMode
10
-
11
- CASTMode = int
12
-
13
- MODE_ECB: CASTMode
14
- MODE_CBC: CASTMode
15
- MODE_CFB: CASTMode
16
- MODE_OFB: CASTMode
17
- MODE_CTR: CASTMode
18
- MODE_OPENPGP: CASTMode
19
- MODE_EAX: CASTMode
20
-
21
- def new(key: ByteString,
22
- mode: CASTMode,
23
- iv : Optional[ByteString] = ...,
24
- IV : Optional[ByteString] = ...,
25
- nonce : Optional[ByteString] = ...,
26
- segment_size : int = ...,
27
- mac_len : int = ...,
28
- initial_value : Union[int, ByteString] = ...,
29
- counter : Dict = ...) -> \
30
- Union[EcbMode, CbcMode, CfbMode, OfbMode, CtrMode, OpenPgpMode]: ...
31
-
32
- block_size: int
33
- key_size : Iterable[int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20.py DELETED
@@ -1,287 +0,0 @@
1
- # ===================================================================
2
- #
3
- # Copyright (c) 2014, Legrandin <helderijs@gmail.com>
4
- # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions
8
- # are met:
9
- #
10
- # 1. Redistributions of source code must retain the above copyright
11
- # notice, this list of conditions and the following disclaimer.
12
- # 2. Redistributions in binary form must reproduce the above copyright
13
- # notice, this list of conditions and the following disclaimer in
14
- # the documentation and/or other materials provided with the
15
- # distribution.
16
- #
17
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
- # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23
- # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
- # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27
- # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
- # POSSIBILITY OF SUCH DAMAGE.
29
- # ===================================================================
30
-
31
- from Crypto.Random import get_random_bytes
32
-
33
- from Crypto.Util.py3compat import _copy_bytes
34
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
35
- create_string_buffer,
36
- get_raw_buffer, VoidPointer,
37
- SmartPointer, c_size_t,
38
- c_uint8_ptr, c_ulong,
39
- is_writeable_buffer)
40
-
41
- _raw_chacha20_lib = load_pycryptodome_raw_lib("Crypto.Cipher._chacha20",
42
- """
43
- int chacha20_init(void **pState,
44
- const uint8_t *key,
45
- size_t keySize,
46
- const uint8_t *nonce,
47
- size_t nonceSize);
48
-
49
- int chacha20_destroy(void *state);
50
-
51
- int chacha20_encrypt(void *state,
52
- const uint8_t in[],
53
- uint8_t out[],
54
- size_t len);
55
-
56
- int chacha20_seek(void *state,
57
- unsigned long block_high,
58
- unsigned long block_low,
59
- unsigned offset);
60
- int hchacha20( const uint8_t key[32],
61
- const uint8_t nonce16[16],
62
- uint8_t subkey[32]);
63
- """)
64
-
65
-
66
- def _HChaCha20(key, nonce):
67
-
68
- assert(len(key) == 32)
69
- assert(len(nonce) == 16)
70
-
71
- subkey = bytearray(32)
72
- result = _raw_chacha20_lib.hchacha20(
73
- c_uint8_ptr(key),
74
- c_uint8_ptr(nonce),
75
- c_uint8_ptr(subkey))
76
- if result:
77
- raise ValueError("Error %d when deriving subkey with HChaCha20" % result)
78
-
79
- return subkey
80
-
81
-
82
- class ChaCha20Cipher(object):
83
- """ChaCha20 (or XChaCha20) cipher object.
84
- Do not create it directly. Use :py:func:`new` instead.
85
-
86
- :var nonce: The nonce with length 8, 12 or 24 bytes
87
- :vartype nonce: bytes
88
- """
89
-
90
- block_size = 1
91
-
92
- def __init__(self, key, nonce):
93
- """Initialize a ChaCha20/XChaCha20 cipher object
94
-
95
- See also `new()` at the module level."""
96
-
97
- self.nonce = _copy_bytes(None, None, nonce)
98
-
99
- # XChaCha20 requires a key derivation with HChaCha20
100
- # See 2.3 in https://tools.ietf.org/html/draft-arciszewski-xchacha-03
101
- if len(nonce) == 24:
102
- key = _HChaCha20(key, nonce[:16])
103
- nonce = b'\x00' * 4 + nonce[16:]
104
- self._name = "XChaCha20"
105
- else:
106
- self._name = "ChaCha20"
107
- nonce = self.nonce
108
-
109
- self._next = ("encrypt", "decrypt")
110
-
111
- self._state = VoidPointer()
112
- result = _raw_chacha20_lib.chacha20_init(
113
- self._state.address_of(),
114
- c_uint8_ptr(key),
115
- c_size_t(len(key)),
116
- nonce,
117
- c_size_t(len(nonce)))
118
- if result:
119
- raise ValueError("Error %d instantiating a %s cipher" % (result,
120
- self._name))
121
- self._state = SmartPointer(self._state.get(),
122
- _raw_chacha20_lib.chacha20_destroy)
123
-
124
- def encrypt(self, plaintext, output=None):
125
- """Encrypt a piece of data.
126
-
127
- Args:
128
- plaintext(bytes/bytearray/memoryview): The data to encrypt, of any size.
129
- Keyword Args:
130
- output(bytes/bytearray/memoryview): The location where the ciphertext
131
- is written to. If ``None``, the ciphertext is returned.
132
- Returns:
133
- If ``output`` is ``None``, the ciphertext is returned as ``bytes``.
134
- Otherwise, ``None``.
135
- """
136
-
137
- if "encrypt" not in self._next:
138
- raise TypeError("Cipher object can only be used for decryption")
139
- self._next = ("encrypt",)
140
- return self._encrypt(plaintext, output)
141
-
142
- def _encrypt(self, plaintext, output):
143
- """Encrypt without FSM checks"""
144
-
145
- if output is None:
146
- ciphertext = create_string_buffer(len(plaintext))
147
- else:
148
- ciphertext = output
149
-
150
- if not is_writeable_buffer(output):
151
- raise TypeError("output must be a bytearray or a writeable memoryview")
152
-
153
- if len(plaintext) != len(output):
154
- raise ValueError("output must have the same length as the input"
155
- " (%d bytes)" % len(plaintext))
156
-
157
- result = _raw_chacha20_lib.chacha20_encrypt(
158
- self._state.get(),
159
- c_uint8_ptr(plaintext),
160
- c_uint8_ptr(ciphertext),
161
- c_size_t(len(plaintext)))
162
- if result:
163
- raise ValueError("Error %d while encrypting with %s" % (result, self._name))
164
-
165
- if output is None:
166
- return get_raw_buffer(ciphertext)
167
- else:
168
- return None
169
-
170
- def decrypt(self, ciphertext, output=None):
171
- """Decrypt a piece of data.
172
-
173
- Args:
174
- ciphertext(bytes/bytearray/memoryview): The data to decrypt, of any size.
175
- Keyword Args:
176
- output(bytes/bytearray/memoryview): The location where the plaintext
177
- is written to. If ``None``, the plaintext is returned.
178
- Returns:
179
- If ``output`` is ``None``, the plaintext is returned as ``bytes``.
180
- Otherwise, ``None``.
181
- """
182
-
183
- if "decrypt" not in self._next:
184
- raise TypeError("Cipher object can only be used for encryption")
185
- self._next = ("decrypt",)
186
-
187
- try:
188
- return self._encrypt(ciphertext, output)
189
- except ValueError as e:
190
- raise ValueError(str(e).replace("enc", "dec"))
191
-
192
- def seek(self, position):
193
- """Seek to a certain position in the key stream.
194
-
195
- Args:
196
- position (integer):
197
- The absolute position within the key stream, in bytes.
198
- """
199
-
200
- position, offset = divmod(position, 64)
201
- block_low = position & 0xFFFFFFFF
202
- block_high = position >> 32
203
-
204
- result = _raw_chacha20_lib.chacha20_seek(
205
- self._state.get(),
206
- c_ulong(block_high),
207
- c_ulong(block_low),
208
- offset
209
- )
210
- if result:
211
- raise ValueError("Error %d while seeking with %s" % (result, self._name))
212
-
213
-
214
- def _derive_Poly1305_key_pair(key, nonce):
215
- """Derive a tuple (r, s, nonce) for a Poly1305 MAC.
216
-
217
- If nonce is ``None``, a new 12-byte nonce is generated.
218
- """
219
-
220
- if len(key) != 32:
221
- raise ValueError("Poly1305 with ChaCha20 requires a 32-byte key")
222
-
223
- if nonce is None:
224
- padded_nonce = nonce = get_random_bytes(12)
225
- elif len(nonce) == 8:
226
- # See RFC7538, 2.6: [...] ChaCha20 as specified here requires a 96-bit
227
- # nonce. So if the provided nonce is only 64-bit, then the first 32
228
- # bits of the nonce will be set to a constant number.
229
- # This will usually be zero, but for protocols with multiple senders it may be
230
- # different for each sender, but should be the same for all
231
- # invocations of the function with the same key by a particular
232
- # sender.
233
- padded_nonce = b'\x00\x00\x00\x00' + nonce
234
- elif len(nonce) == 12:
235
- padded_nonce = nonce
236
- else:
237
- raise ValueError("Poly1305 with ChaCha20 requires an 8- or 12-byte nonce")
238
-
239
- rs = new(key=key, nonce=padded_nonce).encrypt(b'\x00' * 32)
240
- return rs[:16], rs[16:], nonce
241
-
242
-
243
- def new(**kwargs):
244
- """Create a new ChaCha20 or XChaCha20 cipher
245
-
246
- Keyword Args:
247
- key (bytes/bytearray/memoryview): The secret key to use.
248
- It must be 32 bytes long.
249
- nonce (bytes/bytearray/memoryview): A mandatory value that
250
- must never be reused for any other encryption
251
- done with this key.
252
-
253
- For ChaCha20, it must be 8 or 12 bytes long.
254
-
255
- For XChaCha20, it must be 24 bytes long.
256
-
257
- If not provided, 8 bytes will be randomly generated
258
- (you can find them back in the ``nonce`` attribute).
259
-
260
- :Return: a :class:`Crypto.Cipher.ChaCha20.ChaCha20Cipher` object
261
- """
262
-
263
- try:
264
- key = kwargs.pop("key")
265
- except KeyError as e:
266
- raise TypeError("Missing parameter %s" % e)
267
-
268
- nonce = kwargs.pop("nonce", None)
269
- if nonce is None:
270
- nonce = get_random_bytes(8)
271
-
272
- if len(key) != 32:
273
- raise ValueError("ChaCha20/XChaCha20 key must be 32 bytes long")
274
-
275
- if len(nonce) not in (8, 12, 24):
276
- raise ValueError("Nonce must be 8/12 bytes(ChaCha20) or 24 bytes (XChaCha20)")
277
-
278
- if kwargs:
279
- raise TypeError("Unknown parameters: " + str(kwargs))
280
-
281
- return ChaCha20Cipher(key, nonce)
282
-
283
- # Size of a data block (in bytes)
284
- block_size = 1
285
-
286
- # Size of a key (in bytes)
287
- key_size = 32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20.pyi DELETED
@@ -1,23 +0,0 @@
1
- from typing import Union, overload, ByteString, Optional
2
-
3
- def _HChaCha20(key: ByteString, nonce: ByteString) -> bytearray: ...
4
-
5
- class ChaCha20Cipher:
6
- block_size: int
7
- nonce: bytes
8
-
9
- def __init__(self, key: ByteString, nonce: ByteString) -> None: ...
10
- @overload
11
- def encrypt(self, plaintext: ByteString) -> bytes: ...
12
- @overload
13
- def encrypt(self, plaintext: ByteString, output: Union[bytearray, memoryview]) -> None: ...
14
- @overload
15
- def decrypt(self, plaintext: ByteString) -> bytes: ...
16
- @overload
17
- def decrypt(self, plaintext: ByteString, output: Union[bytearray, memoryview]) -> None: ...
18
- def seek(self, position: int) -> None: ...
19
-
20
- def new(key: ByteString, nonce: Optional[ByteString] = ...) -> ChaCha20Cipher: ...
21
-
22
- block_size: int
23
- key_size: int
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20_Poly1305.py DELETED
@@ -1,336 +0,0 @@
1
- # ===================================================================
2
- #
3
- # Copyright (c) 2018, Helder Eijs <helderijs@gmail.com>
4
- # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions
8
- # are met:
9
- #
10
- # 1. Redistributions of source code must retain the above copyright
11
- # notice, this list of conditions and the following disclaimer.
12
- # 2. Redistributions in binary form must reproduce the above copyright
13
- # notice, this list of conditions and the following disclaimer in
14
- # the documentation and/or other materials provided with the
15
- # distribution.
16
- #
17
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
- # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23
- # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
- # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27
- # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
- # POSSIBILITY OF SUCH DAMAGE.
29
- # ===================================================================
30
-
31
- from binascii import unhexlify
32
-
33
- from Crypto.Cipher import ChaCha20
34
- from Crypto.Cipher.ChaCha20 import _HChaCha20
35
- from Crypto.Hash import Poly1305, BLAKE2s
36
-
37
- from Crypto.Random import get_random_bytes
38
-
39
- from Crypto.Util.number import long_to_bytes
40
- from Crypto.Util.py3compat import _copy_bytes, bord
41
- from Crypto.Util._raw_api import is_buffer
42
-
43
-
44
- def _enum(**enums):
45
- return type('Enum', (), enums)
46
-
47
-
48
- _CipherStatus = _enum(PROCESSING_AUTH_DATA=1,
49
- PROCESSING_CIPHERTEXT=2,
50
- PROCESSING_DONE=3)
51
-
52
-
53
- class ChaCha20Poly1305Cipher(object):
54
- """ChaCha20-Poly1305 and XChaCha20-Poly1305 cipher object.
55
- Do not create it directly. Use :py:func:`new` instead.
56
-
57
- :var nonce: The nonce with length 8, 12 or 24 bytes
58
- :vartype nonce: byte string
59
- """
60
-
61
- def __init__(self, key, nonce):
62
- """Initialize a ChaCha20-Poly1305 AEAD cipher object
63
-
64
- See also `new()` at the module level."""
65
-
66
- self.nonce = _copy_bytes(None, None, nonce)
67
-
68
- self._next = ("update", "encrypt", "decrypt", "digest",
69
- "verify")
70
-
71
- self._authenticator = Poly1305.new(key=key, nonce=nonce, cipher=ChaCha20)
72
-
73
- self._cipher = ChaCha20.new(key=key, nonce=nonce)
74
- self._cipher.seek(64) # Block counter starts at 1
75
-
76
- self._len_aad = 0
77
- self._len_ct = 0
78
- self._mac_tag = None
79
- self._status = _CipherStatus.PROCESSING_AUTH_DATA
80
-
81
- def update(self, data):
82
- """Protect the associated data.
83
-
84
- Associated data (also known as *additional authenticated data* - AAD)
85
- is the piece of the message that must stay in the clear, while
86
- still allowing the receiver to verify its integrity.
87
- An example is packet headers.
88
-
89
- The associated data (possibly split into multiple segments) is
90
- fed into :meth:`update` before any call to :meth:`decrypt` or :meth:`encrypt`.
91
- If there is no associated data, :meth:`update` is not called.
92
-
93
- :param bytes/bytearray/memoryview assoc_data:
94
- A piece of associated data. There are no restrictions on its size.
95
- """
96
-
97
- if "update" not in self._next:
98
- raise TypeError("update() method cannot be called")
99
-
100
- self._len_aad += len(data)
101
- self._authenticator.update(data)
102
-
103
- def _pad_aad(self):
104
-
105
- assert(self._status == _CipherStatus.PROCESSING_AUTH_DATA)
106
- if self._len_aad & 0x0F:
107
- self._authenticator.update(b'\x00' * (16 - (self._len_aad & 0x0F)))
108
- self._status = _CipherStatus.PROCESSING_CIPHERTEXT
109
-
110
- def encrypt(self, plaintext, output=None):
111
- """Encrypt a piece of data.
112
-
113
- Args:
114
- plaintext(bytes/bytearray/memoryview): The data to encrypt, of any size.
115
- Keyword Args:
116
- output(bytes/bytearray/memoryview): The location where the ciphertext
117
- is written to. If ``None``, the ciphertext is returned.
118
- Returns:
119
- If ``output`` is ``None``, the ciphertext is returned as ``bytes``.
120
- Otherwise, ``None``.
121
- """
122
-
123
- if "encrypt" not in self._next:
124
- raise TypeError("encrypt() method cannot be called")
125
-
126
- if self._status == _CipherStatus.PROCESSING_AUTH_DATA:
127
- self._pad_aad()
128
-
129
- self._next = ("encrypt", "digest")
130
-
131
- result = self._cipher.encrypt(plaintext, output=output)
132
- self._len_ct += len(plaintext)
133
- if output is None:
134
- self._authenticator.update(result)
135
- else:
136
- self._authenticator.update(output)
137
- return result
138
-
139
- def decrypt(self, ciphertext, output=None):
140
- """Decrypt a piece of data.
141
-
142
- Args:
143
- ciphertext(bytes/bytearray/memoryview): The data to decrypt, of any size.
144
- Keyword Args:
145
- output(bytes/bytearray/memoryview): The location where the plaintext
146
- is written to. If ``None``, the plaintext is returned.
147
- Returns:
148
- If ``output`` is ``None``, the plaintext is returned as ``bytes``.
149
- Otherwise, ``None``.
150
- """
151
-
152
- if "decrypt" not in self._next:
153
- raise TypeError("decrypt() method cannot be called")
154
-
155
- if self._status == _CipherStatus.PROCESSING_AUTH_DATA:
156
- self._pad_aad()
157
-
158
- self._next = ("decrypt", "verify")
159
-
160
- self._len_ct += len(ciphertext)
161
- self._authenticator.update(ciphertext)
162
- return self._cipher.decrypt(ciphertext, output=output)
163
-
164
- def _compute_mac(self):
165
- """Finalize the cipher (if not done already) and return the MAC."""
166
-
167
- if self._mac_tag:
168
- assert(self._status == _CipherStatus.PROCESSING_DONE)
169
- return self._mac_tag
170
-
171
- assert(self._status != _CipherStatus.PROCESSING_DONE)
172
-
173
- if self._status == _CipherStatus.PROCESSING_AUTH_DATA:
174
- self._pad_aad()
175
-
176
- if self._len_ct & 0x0F:
177
- self._authenticator.update(b'\x00' * (16 - (self._len_ct & 0x0F)))
178
-
179
- self._status = _CipherStatus.PROCESSING_DONE
180
-
181
- self._authenticator.update(long_to_bytes(self._len_aad, 8)[::-1])
182
- self._authenticator.update(long_to_bytes(self._len_ct, 8)[::-1])
183
- self._mac_tag = self._authenticator.digest()
184
- return self._mac_tag
185
-
186
- def digest(self):
187
- """Compute the *binary* authentication tag (MAC).
188
-
189
- :Return: the MAC tag, as 16 ``bytes``.
190
- """
191
-
192
- if "digest" not in self._next:
193
- raise TypeError("digest() method cannot be called")
194
- self._next = ("digest",)
195
-
196
- return self._compute_mac()
197
-
198
- def hexdigest(self):
199
- """Compute the *printable* authentication tag (MAC).
200
-
201
- This method is like :meth:`digest`.
202
-
203
- :Return: the MAC tag, as a hexadecimal string.
204
- """
205
- return "".join(["%02x" % bord(x) for x in self.digest()])
206
-
207
- def verify(self, received_mac_tag):
208
- """Validate the *binary* authentication tag (MAC).
209
-
210
- The receiver invokes this method at the very end, to
211
- check if the associated data (if any) and the decrypted
212
- messages are valid.
213
-
214
- :param bytes/bytearray/memoryview received_mac_tag:
215
- This is the 16-byte *binary* MAC, as received from the sender.
216
- :Raises ValueError:
217
- if the MAC does not match. The message has been tampered with
218
- or the key is incorrect.
219
- """
220
-
221
- if "verify" not in self._next:
222
- raise TypeError("verify() cannot be called"
223
- " when encrypting a message")
224
- self._next = ("verify",)
225
-
226
- secret = get_random_bytes(16)
227
-
228
- self._compute_mac()
229
-
230
- mac1 = BLAKE2s.new(digest_bits=160, key=secret,
231
- data=self._mac_tag)
232
- mac2 = BLAKE2s.new(digest_bits=160, key=secret,
233
- data=received_mac_tag)
234
-
235
- if mac1.digest() != mac2.digest():
236
- raise ValueError("MAC check failed")
237
-
238
- def hexverify(self, hex_mac_tag):
239
- """Validate the *printable* authentication tag (MAC).
240
-
241
- This method is like :meth:`verify`.
242
-
243
- :param string hex_mac_tag:
244
- This is the *printable* MAC.
245
- :Raises ValueError:
246
- if the MAC does not match. The message has been tampered with
247
- or the key is incorrect.
248
- """
249
-
250
- self.verify(unhexlify(hex_mac_tag))
251
-
252
- def encrypt_and_digest(self, plaintext):
253
- """Perform :meth:`encrypt` and :meth:`digest` in one step.
254
-
255
- :param plaintext: The data to encrypt, of any size.
256
- :type plaintext: bytes/bytearray/memoryview
257
- :return: a tuple with two ``bytes`` objects:
258
-
259
- - the ciphertext, of equal length as the plaintext
260
- - the 16-byte MAC tag
261
- """
262
-
263
- return self.encrypt(plaintext), self.digest()
264
-
265
- def decrypt_and_verify(self, ciphertext, received_mac_tag):
266
- """Perform :meth:`decrypt` and :meth:`verify` in one step.
267
-
268
- :param ciphertext: The piece of data to decrypt.
269
- :type ciphertext: bytes/bytearray/memoryview
270
- :param bytes received_mac_tag:
271
- This is the 16-byte *binary* MAC, as received from the sender.
272
- :return: the decrypted data (as ``bytes``)
273
- :raises ValueError:
274
- if the MAC does not match. The message has been tampered with
275
- or the key is incorrect.
276
- """
277
-
278
- plaintext = self.decrypt(ciphertext)
279
- self.verify(received_mac_tag)
280
- return plaintext
281
-
282
-
283
- def new(**kwargs):
284
- """Create a new ChaCha20-Poly1305 or XChaCha20-Poly1305 AEAD cipher.
285
-
286
- :keyword key: The secret key to use. It must be 32 bytes long.
287
- :type key: byte string
288
-
289
- :keyword nonce:
290
- A value that must never be reused for any other encryption
291
- done with this key.
292
-
293
- For ChaCha20-Poly1305, it must be 8 or 12 bytes long.
294
-
295
- For XChaCha20-Poly1305, it must be 24 bytes long.
296
-
297
- If not provided, 12 ``bytes`` will be generated randomly
298
- (you can find them back in the ``nonce`` attribute).
299
- :type nonce: bytes, bytearray, memoryview
300
-
301
- :Return: a :class:`Crypto.Cipher.ChaCha20.ChaCha20Poly1305Cipher` object
302
- """
303
-
304
- try:
305
- key = kwargs.pop("key")
306
- except KeyError as e:
307
- raise TypeError("Missing parameter %s" % e)
308
-
309
- self._len_ct += len(plaintext)
310
-
311
- if len(key) != 32:
312
- raise ValueError("Key must be 32 bytes long")
313
-
314
- nonce = kwargs.pop("nonce", None)
315
- if nonce is None:
316
- nonce = get_random_bytes(12)
317
-
318
- if len(nonce) in (8, 12):
319
- pass
320
- elif len(nonce) == 24:
321
- key = _HChaCha20(key, nonce[:16])
322
- nonce = b'\x00\x00\x00\x00' + nonce[16:]
323
- else:
324
- raise ValueError("Nonce must be 8, 12 or 24 bytes long")
325
-
326
- if not is_buffer(nonce):
327
- raise TypeError("nonce must be bytes, bytearray or memoryview")
328
-
329
- if kwargs:
330
- raise TypeError("Unknown parameters: " + str(kwargs))
331
-
332
- return ChaCha20Poly1305Cipher(key, nonce)
333
-
334
-
335
- # Size of a key (in bytes)
336
- key_size = 32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/ChaCha20_Poly1305.pyi DELETED
@@ -1,26 +0,0 @@
1
- from typing import Union, Tuple, overload, ByteString, Optional
2
-
3
- class ChaCha20Poly1305Cipher:
4
- nonce: bytes
5
-
6
- def __init__(self, key: ByteString, nonce: ByteString) -> None: ...
7
- def update(self, data: ByteString) -> None: ...
8
- @overload
9
- def encrypt(self, plaintext: ByteString) -> bytes: ...
10
- @overload
11
- def encrypt(self, plaintext: ByteString, output: Union[bytearray, memoryview]) -> None: ...
12
- @overload
13
- def decrypt(self, plaintext: ByteString) -> bytes: ...
14
- @overload
15
- def decrypt(self, plaintext: ByteString, output: Union[bytearray, memoryview]) -> None: ...
16
- def digest(self) -> bytes: ...
17
- def hexdigest(self) -> str: ...
18
- def verify(self, received_mac_tag: ByteString) -> None: ...
19
- def hexverify(self, received_mac_tag: str) -> None: ...
20
- def encrypt_and_digest(self, plaintext: ByteString) -> Tuple[bytes, bytes]: ...
21
- def decrypt_and_verify(self, ciphertext: ByteString, received_mac_tag: ByteString) -> bytes: ...
22
-
23
- def new(key: ByteString, nonce: Optional[ByteString] = ...) -> ChaCha20Poly1305Cipher: ...
24
-
25
- block_size: int
26
- key_size: int
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES.py DELETED
@@ -1,158 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/DES.py : DES
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
- """
23
- Module's constants for the modes of operation supported with Single DES:
24
-
25
- :var MODE_ECB: :ref:`Electronic Code Book (ECB) <ecb_mode>`
26
- :var MODE_CBC: :ref:`Cipher-Block Chaining (CBC) <cbc_mode>`
27
- :var MODE_CFB: :ref:`Cipher FeedBack (CFB) <cfb_mode>`
28
- :var MODE_OFB: :ref:`Output FeedBack (OFB) <ofb_mode>`
29
- :var MODE_CTR: :ref:`CounTer Mode (CTR) <ctr_mode>`
30
- :var MODE_OPENPGP: :ref:`OpenPGP Mode <openpgp_mode>`
31
- :var MODE_EAX: :ref:`EAX Mode <eax_mode>`
32
- """
33
-
34
- import sys
35
-
36
- from Crypto.Cipher import _create_cipher
37
- from Crypto.Util.py3compat import byte_string
38
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
39
- VoidPointer, SmartPointer,
40
- c_size_t, c_uint8_ptr)
41
-
42
- _raw_des_lib = load_pycryptodome_raw_lib(
43
- "Crypto.Cipher._raw_des",
44
- """
45
- int DES_start_operation(const uint8_t key[],
46
- size_t key_len,
47
- void **pResult);
48
- int DES_encrypt(const void *state,
49
- const uint8_t *in,
50
- uint8_t *out,
51
- size_t data_len);
52
- int DES_decrypt(const void *state,
53
- const uint8_t *in,
54
- uint8_t *out,
55
- size_t data_len);
56
- int DES_stop_operation(void *state);
57
- """)
58
-
59
-
60
- def _create_base_cipher(dict_parameters):
61
- """This method instantiates and returns a handle to a low-level
62
- base cipher. It will absorb named parameters in the process."""
63
-
64
- try:
65
- key = dict_parameters.pop("key")
66
- except KeyError:
67
- raise TypeError("Missing 'key' parameter")
68
-
69
- if len(key) != key_size:
70
- raise ValueError("Incorrect DES key length (%d bytes)" % len(key))
71
-
72
- start_operation = _raw_des_lib.DES_start_operation
73
- stop_operation = _raw_des_lib.DES_stop_operation
74
-
75
- cipher = VoidPointer()
76
- result = start_operation(c_uint8_ptr(key),
77
- c_size_t(len(key)),
78
- cipher.address_of())
79
- if result:
80
- raise ValueError("Error %X while instantiating the DES cipher"
81
- % result)
82
- return SmartPointer(cipher.get(), stop_operation)
83
-
84
-
85
- def new(key, mode, *args, **kwargs):
86
- """Create a new DES cipher.
87
-
88
- :param key:
89
- The secret key to use in the symmetric cipher.
90
- It must be 8 byte long. The parity bits will be ignored.
91
- :type key: bytes/bytearray/memoryview
92
-
93
- :param mode:
94
- The chaining mode to use for encryption or decryption.
95
- :type mode: One of the supported ``MODE_*`` constants
96
-
97
- :Keyword Arguments:
98
- * **iv** (*byte string*) --
99
- (Only applicable for ``MODE_CBC``, ``MODE_CFB``, ``MODE_OFB``,
100
- and ``MODE_OPENPGP`` modes).
101
-
102
- The initialization vector to use for encryption or decryption.
103
-
104
- For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 8 bytes long.
105
-
106
- For ``MODE_OPENPGP`` mode only,
107
- it must be 8 bytes long for encryption
108
- and 10 bytes for decryption (in the latter case, it is
109
- actually the *encrypted* IV which was prefixed to the ciphertext).
110
-
111
- If not provided, a random byte string is generated (you must then
112
- read its value with the :attr:`iv` attribute).
113
-
114
- * **nonce** (*byte string*) --
115
- (Only applicable for ``MODE_EAX`` and ``MODE_CTR``).
116
-
117
- A value that must never be reused for any other encryption done
118
- with this key.
119
-
120
- For ``MODE_EAX`` there are no
121
- restrictions on its length (recommended: **16** bytes).
122
-
123
- For ``MODE_CTR``, its length must be in the range **[0..7]**.
124
-
125
- If not provided for ``MODE_EAX``, a random byte string is generated (you
126
- can read it back via the ``nonce`` attribute).
127
-
128
- * **segment_size** (*integer*) --
129
- (Only ``MODE_CFB``).The number of **bits** the plaintext and ciphertext
130
- are segmented in. It must be a multiple of 8.
131
- If not specified, it will be assumed to be 8.
132
-
133
- * **mac_len** : (*integer*) --
134
- (Only ``MODE_EAX``)
135
- Length of the authentication tag, in bytes.
136
- It must be no longer than 8 (default).
137
-
138
- * **initial_value** : (*integer*) --
139
- (Only ``MODE_CTR``). The initial value for the counter within
140
- the counter block. By default it is **0**.
141
-
142
- :Return: a DES object, of the applicable mode.
143
- """
144
-
145
- return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
146
-
147
- MODE_ECB = 1
148
- MODE_CBC = 2
149
- MODE_CFB = 3
150
- MODE_OFB = 5
151
- MODE_CTR = 6
152
- MODE_OPENPGP = 7
153
- MODE_EAX = 9
154
-
155
- # Size of a data block (in bytes)
156
- block_size = 8
157
- # Size of a key (in bytes)
158
- key_size = 8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES.pyi DELETED
@@ -1,33 +0,0 @@
1
- from typing import Union, Dict, Iterable, ByteString, Optional
2
-
3
- from Crypto.Cipher._mode_ecb import EcbMode
4
- from Crypto.Cipher._mode_cbc import CbcMode
5
- from Crypto.Cipher._mode_cfb import CfbMode
6
- from Crypto.Cipher._mode_ofb import OfbMode
7
- from Crypto.Cipher._mode_ctr import CtrMode
8
- from Crypto.Cipher._mode_openpgp import OpenPgpMode
9
- from Crypto.Cipher._mode_eax import EaxMode
10
-
11
- DESMode = int
12
-
13
- MODE_ECB: DESMode
14
- MODE_CBC: DESMode
15
- MODE_CFB: DESMode
16
- MODE_OFB: DESMode
17
- MODE_CTR: DESMode
18
- MODE_OPENPGP: DESMode
19
- MODE_EAX: DESMode
20
-
21
- def new(key: ByteString,
22
- mode: DESMode,
23
- iv : Optional[ByteString] = ...,
24
- IV : Optional[ByteString] = ...,
25
- nonce : Optional[ByteString] = ...,
26
- segment_size : int = ...,
27
- mac_len : int = ...,
28
- initial_value : Union[int, ByteString] = ...,
29
- counter : Dict = ...) -> \
30
- Union[EcbMode, CbcMode, CfbMode, OfbMode, CtrMode, OpenPgpMode]: ...
31
-
32
- block_size: int
33
- key_size: int
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES3.py DELETED
@@ -1,187 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/DES3.py : DES3
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
- """
23
- Module's constants for the modes of operation supported with Triple DES:
24
-
25
- :var MODE_ECB: :ref:`Electronic Code Book (ECB) <ecb_mode>`
26
- :var MODE_CBC: :ref:`Cipher-Block Chaining (CBC) <cbc_mode>`
27
- :var MODE_CFB: :ref:`Cipher FeedBack (CFB) <cfb_mode>`
28
- :var MODE_OFB: :ref:`Output FeedBack (OFB) <ofb_mode>`
29
- :var MODE_CTR: :ref:`CounTer Mode (CTR) <ctr_mode>`
30
- :var MODE_OPENPGP: :ref:`OpenPGP Mode <openpgp_mode>`
31
- :var MODE_EAX: :ref:`EAX Mode <eax_mode>`
32
- """
33
-
34
- import sys
35
-
36
- from Crypto.Cipher import _create_cipher
37
- from Crypto.Util.py3compat import byte_string, bchr, bord, bstr
38
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
39
- VoidPointer, SmartPointer,
40
- c_size_t)
41
-
42
- _raw_des3_lib = load_pycryptodome_raw_lib(
43
- "Crypto.Cipher._raw_des3",
44
- """
45
- int DES3_start_operation(const uint8_t key[],
46
- size_t key_len,
47
- void **pResult);
48
- int DES3_encrypt(const void *state,
49
- const uint8_t *in,
50
- uint8_t *out,
51
- size_t data_len);
52
- int DES3_decrypt(const void *state,
53
- const uint8_t *in,
54
- uint8_t *out,
55
- size_t data_len);
56
- int DES3_stop_operation(void *state);
57
- """)
58
-
59
-
60
- def adjust_key_parity(key_in):
61
- """Set the parity bits in a TDES key.
62
-
63
- :param key_in: the TDES key whose bits need to be adjusted
64
- :type key_in: byte string
65
-
66
- :returns: a copy of ``key_in``, with the parity bits correctly set
67
- :rtype: byte string
68
-
69
- :raises ValueError: if the TDES key is not 16 or 24 bytes long
70
- :raises ValueError: if the TDES key degenerates into Single DES
71
- """
72
-
73
- def parity_byte(key_byte):
74
- parity = 1
75
- for i in range(1, 8):
76
- parity ^= (key_byte >> i) & 1
77
- return (key_byte & 0xFE) | parity
78
-
79
- if len(key_in) not in key_size:
80
- raise ValueError("Not a valid TDES key")
81
-
82
- key_out = b"".join([ bchr(parity_byte(bord(x))) for x in key_in ])
83
-
84
- if key_out[:8] == key_out[8:16] or key_out[-16:-8] == key_out[-8:]:
85
- raise ValueError("Triple DES key degenerates to single DES")
86
-
87
- return key_out
88
-
89
-
90
- def _create_base_cipher(dict_parameters):
91
- """This method instantiates and returns a handle to a low-level base cipher.
92
- It will absorb named parameters in the process."""
93
-
94
- try:
95
- key_in = dict_parameters.pop("key")
96
- except KeyError:
97
- raise TypeError("Missing 'key' parameter")
98
-
99
- key = adjust_key_parity(bstr(key_in))
100
-
101
- start_operation = _raw_des3_lib.DES3_start_operation
102
- stop_operation = _raw_des3_lib.DES3_stop_operation
103
-
104
- cipher = VoidPointer()
105
- result = start_operation(key,
106
- c_size_t(len(key)),
107
- cipher.address_of())
108
- if result:
109
- raise ValueError("Error %X while instantiating the TDES cipher"
110
- % result)
111
- return SmartPointer(cipher.get(), stop_operation)
112
-
113
-
114
- def new(key, mode, *args, **kwargs):
115
- """Create a new Triple DES cipher.
116
-
117
- :param key:
118
- The secret key to use in the symmetric cipher.
119
- It must be 16 or 24 byte long. The parity bits will be ignored.
120
- :type key: bytes/bytearray/memoryview
121
-
122
- :param mode:
123
- The chaining mode to use for encryption or decryption.
124
- :type mode: One of the supported ``MODE_*`` constants
125
-
126
- :Keyword Arguments:
127
- * **iv** (*bytes*, *bytearray*, *memoryview*) --
128
- (Only applicable for ``MODE_CBC``, ``MODE_CFB``, ``MODE_OFB``,
129
- and ``MODE_OPENPGP`` modes).
130
-
131
- The initialization vector to use for encryption or decryption.
132
-
133
- For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 8 bytes long.
134
-
135
- For ``MODE_OPENPGP`` mode only,
136
- it must be 8 bytes long for encryption
137
- and 10 bytes for decryption (in the latter case, it is
138
- actually the *encrypted* IV which was prefixed to the ciphertext).
139
-
140
- If not provided, a random byte string is generated (you must then
141
- read its value with the :attr:`iv` attribute).
142
-
143
- * **nonce** (*bytes*, *bytearray*, *memoryview*) --
144
- (Only applicable for ``MODE_EAX`` and ``MODE_CTR``).
145
-
146
- A value that must never be reused for any other encryption done
147
- with this key.
148
-
149
- For ``MODE_EAX`` there are no
150
- restrictions on its length (recommended: **16** bytes).
151
-
152
- For ``MODE_CTR``, its length must be in the range **[0..7]**.
153
-
154
- If not provided for ``MODE_EAX``, a random byte string is generated (you
155
- can read it back via the ``nonce`` attribute).
156
-
157
- * **segment_size** (*integer*) --
158
- (Only ``MODE_CFB``).The number of **bits** the plaintext and ciphertext
159
- are segmented in. It must be a multiple of 8.
160
- If not specified, it will be assumed to be 8.
161
-
162
- * **mac_len** : (*integer*) --
163
- (Only ``MODE_EAX``)
164
- Length of the authentication tag, in bytes.
165
- It must be no longer than 8 (default).
166
-
167
- * **initial_value** : (*integer*) --
168
- (Only ``MODE_CTR``). The initial value for the counter within
169
- the counter block. By default it is **0**.
170
-
171
- :Return: a Triple DES object, of the applicable mode.
172
- """
173
-
174
- return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
175
-
176
- MODE_ECB = 1
177
- MODE_CBC = 2
178
- MODE_CFB = 3
179
- MODE_OFB = 5
180
- MODE_CTR = 6
181
- MODE_OPENPGP = 7
182
- MODE_EAX = 9
183
-
184
- # Size of a data block (in bytes)
185
- block_size = 8
186
- # Size of a key (in bytes)
187
- key_size = (16, 24)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/DES3.pyi DELETED
@@ -1,35 +0,0 @@
1
- from typing import Union, Dict, Tuple, ByteString, Optional
2
-
3
- from Crypto.Cipher._mode_ecb import EcbMode
4
- from Crypto.Cipher._mode_cbc import CbcMode
5
- from Crypto.Cipher._mode_cfb import CfbMode
6
- from Crypto.Cipher._mode_ofb import OfbMode
7
- from Crypto.Cipher._mode_ctr import CtrMode
8
- from Crypto.Cipher._mode_openpgp import OpenPgpMode
9
- from Crypto.Cipher._mode_eax import EaxMode
10
-
11
- def adjust_key_parity(key_in: bytes) -> bytes: ...
12
-
13
- DES3Mode = int
14
-
15
- MODE_ECB: DES3Mode
16
- MODE_CBC: DES3Mode
17
- MODE_CFB: DES3Mode
18
- MODE_OFB: DES3Mode
19
- MODE_CTR: DES3Mode
20
- MODE_OPENPGP: DES3Mode
21
- MODE_EAX: DES3Mode
22
-
23
- def new(key: ByteString,
24
- mode: DES3Mode,
25
- iv : Optional[ByteString] = ...,
26
- IV : Optional[ByteString] = ...,
27
- nonce : Optional[ByteString] = ...,
28
- segment_size : int = ...,
29
- mac_len : int = ...,
30
- initial_value : Union[int, ByteString] = ...,
31
- counter : Dict = ...) -> \
32
- Union[EcbMode, CbcMode, CfbMode, OfbMode, CtrMode, OpenPgpMode]: ...
33
-
34
- block_size: int
35
- key_size: Tuple[int, int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_OAEP.py DELETED
@@ -1,239 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/PKCS1_OAEP.py : PKCS#1 OAEP
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
-
23
- from Crypto.Signature.pss import MGF1
24
- import Crypto.Hash.SHA1
25
-
26
- from Crypto.Util.py3compat import bord, _copy_bytes
27
- import Crypto.Util.number
28
- from Crypto.Util.number import ceil_div, bytes_to_long, long_to_bytes
29
- from Crypto.Util.strxor import strxor
30
- from Crypto import Random
31
-
32
- class PKCS1OAEP_Cipher:
33
- """Cipher object for PKCS#1 v1.5 OAEP.
34
- Do not create directly: use :func:`new` instead."""
35
-
36
- def __init__(self, key, hashAlgo, mgfunc, label, randfunc):
37
- """Initialize this PKCS#1 OAEP cipher object.
38
-
39
- :Parameters:
40
- key : an RSA key object
41
- If a private half is given, both encryption and decryption are possible.
42
- If a public half is given, only encryption is possible.
43
- hashAlgo : hash object
44
- The hash function to use. This can be a module under `Crypto.Hash`
45
- or an existing hash object created from any of such modules. If not specified,
46
- `Crypto.Hash.SHA1` is used.
47
- mgfunc : callable
48
- A mask generation function that accepts two parameters: a string to
49
- use as seed, and the lenth of the mask to generate, in bytes.
50
- If not specified, the standard MGF1 consistent with ``hashAlgo`` is used (a safe choice).
51
- label : bytes/bytearray/memoryview
52
- A label to apply to this particular encryption. If not specified,
53
- an empty string is used. Specifying a label does not improve
54
- security.
55
- randfunc : callable
56
- A function that returns random bytes.
57
-
58
- :attention: Modify the mask generation function only if you know what you are doing.
59
- Sender and receiver must use the same one.
60
- """
61
- self._key = key
62
-
63
- if hashAlgo:
64
- self._hashObj = hashAlgo
65
- else:
66
- self._hashObj = Crypto.Hash.SHA1
67
-
68
- if mgfunc:
69
- self._mgf = mgfunc
70
- else:
71
- self._mgf = lambda x,y: MGF1(x,y,self._hashObj)
72
-
73
- self._label = _copy_bytes(None, None, label)
74
- self._randfunc = randfunc
75
-
76
- def can_encrypt(self):
77
- """Legacy function to check if you can call :meth:`encrypt`.
78
-
79
- .. deprecated:: 3.0"""
80
- return self._key.can_encrypt()
81
-
82
- def can_decrypt(self):
83
- """Legacy function to check if you can call :meth:`decrypt`.
84
-
85
- .. deprecated:: 3.0"""
86
- return self._key.can_decrypt()
87
-
88
- def encrypt(self, message):
89
- """Encrypt a message with PKCS#1 OAEP.
90
-
91
- :param message:
92
- The message to encrypt, also known as plaintext. It can be of
93
- variable length, but not longer than the RSA modulus (in bytes)
94
- minus 2, minus twice the hash output size.
95
- For instance, if you use RSA 2048 and SHA-256, the longest message
96
- you can encrypt is 190 byte long.
97
- :type message: bytes/bytearray/memoryview
98
-
99
- :returns: The ciphertext, as large as the RSA modulus.
100
- :rtype: bytes
101
-
102
- :raises ValueError:
103
- if the message is too long.
104
- """
105
-
106
- # See 7.1.1 in RFC3447
107
- modBits = Crypto.Util.number.size(self._key.n)
108
- k = ceil_div(modBits, 8) # Convert from bits to bytes
109
- hLen = self._hashObj.digest_size
110
- mLen = len(message)
111
-
112
- # Step 1b
113
- ps_len = k - mLen - 2 * hLen - 2
114
- if ps_len < 0:
115
- raise ValueError("Plaintext is too long.")
116
- # Step 2a
117
- lHash = self._hashObj.new(self._label).digest()
118
- # Step 2b
119
- ps = b'\x00' * ps_len
120
- # Step 2c
121
- db = lHash + ps + b'\x01' + _copy_bytes(None, None, message)
122
- # Step 2d
123
- ros = self._randfunc(hLen)
124
- # Step 2e
125
- dbMask = self._mgf(ros, k-hLen-1)
126
- # Step 2f
127
- maskedDB = strxor(db, dbMask)
128
- # Step 2g
129
- seedMask = self._mgf(maskedDB, hLen)
130
- # Step 2h
131
- maskedSeed = strxor(ros, seedMask)
132
- # Step 2i
133
- em = b'\x00' + maskedSeed + maskedDB
134
- # Step 3a (OS2IP)
135
- em_int = bytes_to_long(em)
136
- # Step 3b (RSAEP)
137
- m_int = self._key._encrypt(em_int)
138
- # Step 3c (I2OSP)
139
- c = long_to_bytes(m_int, k)
140
- return c
141
-
142
- def decrypt(self, ciphertext):
143
- """Decrypt a message with PKCS#1 OAEP.
144
-
145
- :param ciphertext: The encrypted message.
146
- :type ciphertext: bytes/bytearray/memoryview
147
-
148
- :returns: The original message (plaintext).
149
- :rtype: bytes
150
-
151
- :raises ValueError:
152
- if the ciphertext has the wrong length, or if decryption
153
- fails the integrity check (in which case, the decryption
154
- key is probably wrong).
155
- :raises TypeError:
156
- if the RSA key has no private half (i.e. you are trying
157
- to decrypt using a public key).
158
- """
159
-
160
- # See 7.1.2 in RFC3447
161
- modBits = Crypto.Util.number.size(self._key.n)
162
- k = ceil_div(modBits,8) # Convert from bits to bytes
163
- hLen = self._hashObj.digest_size
164
-
165
- # Step 1b and 1c
166
- if len(ciphertext) != k or k<hLen+2:
167
- raise ValueError("Ciphertext with incorrect length.")
168
- # Step 2a (O2SIP)
169
- ct_int = bytes_to_long(ciphertext)
170
- # Step 2b (RSADP)
171
- m_int = self._key._decrypt(ct_int)
172
- # Complete step 2c (I2OSP)
173
- em = long_to_bytes(m_int, k)
174
- # Step 3a
175
- lHash = self._hashObj.new(self._label).digest()
176
- # Step 3b
177
- y = em[0]
178
- # y must be 0, but we MUST NOT check it here in order not to
179
- # allow attacks like Manger's (http://dl.acm.org/citation.cfm?id=704143)
180
- maskedSeed = em[1:hLen+1]
181
- maskedDB = em[hLen+1:]
182
- # Step 3c
183
- seedMask = self._mgf(maskedDB, hLen)
184
- # Step 3d
185
- seed = strxor(maskedSeed, seedMask)
186
- # Step 3e
187
- dbMask = self._mgf(seed, k-hLen-1)
188
- # Step 3f
189
- db = strxor(maskedDB, dbMask)
190
- # Step 3g
191
- one_pos = hLen + db[hLen:].find(b'\x01')
192
- lHash1 = db[:hLen]
193
- invalid = bord(y) | int(one_pos < hLen)
194
- hash_compare = strxor(lHash1, lHash)
195
- for x in hash_compare:
196
- invalid |= bord(x)
197
- for x in db[hLen:one_pos]:
198
- invalid |= bord(x)
199
- if invalid != 0:
200
- raise ValueError("Incorrect decryption.")
201
- # Step 4
202
- return db[one_pos + 1:]
203
-
204
- def new(key, hashAlgo=None, mgfunc=None, label=b'', randfunc=None):
205
- """Return a cipher object :class:`PKCS1OAEP_Cipher` that can be used to perform PKCS#1 OAEP encryption or decryption.
206
-
207
- :param key:
208
- The key object to use to encrypt or decrypt the message.
209
- Decryption is only possible with a private RSA key.
210
- :type key: RSA key object
211
-
212
- :param hashAlgo:
213
- The hash function to use. This can be a module under `Crypto.Hash`
214
- or an existing hash object created from any of such modules.
215
- If not specified, `Crypto.Hash.SHA1` is used.
216
- :type hashAlgo: hash object
217
-
218
- :param mgfunc:
219
- A mask generation function that accepts two parameters: a string to
220
- use as seed, and the lenth of the mask to generate, in bytes.
221
- If not specified, the standard MGF1 consistent with ``hashAlgo`` is used (a safe choice).
222
- :type mgfunc: callable
223
-
224
- :param label:
225
- A label to apply to this particular encryption. If not specified,
226
- an empty string is used. Specifying a label does not improve
227
- security.
228
- :type label: bytes/bytearray/memoryview
229
-
230
- :param randfunc:
231
- A function that returns random bytes.
232
- The default is `Random.get_random_bytes`.
233
- :type randfunc: callable
234
- """
235
-
236
- if randfunc is None:
237
- randfunc = Random.get_random_bytes
238
- return PKCS1OAEP_Cipher(key, hashAlgo, mgfunc, label, randfunc)
239
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_OAEP.pyi DELETED
@@ -1,35 +0,0 @@
1
- from typing import Optional, Union, Callable, Any, overload
2
- from typing_extensions import Protocol
3
-
4
- from Crypto.PublicKey.RSA import RsaKey
5
-
6
- class HashLikeClass(Protocol):
7
- digest_size : int
8
- def new(self, data: Optional[bytes] = ...) -> Any: ...
9
-
10
- class HashLikeModule(Protocol):
11
- digest_size : int
12
- @staticmethod
13
- def new(data: Optional[bytes] = ...) -> Any: ...
14
-
15
- HashLike = Union[HashLikeClass, HashLikeModule]
16
-
17
- Buffer = Union[bytes, bytearray, memoryview]
18
-
19
- class PKCS1OAEP_Cipher:
20
- def __init__(self,
21
- key: RsaKey,
22
- hashAlgo: HashLike,
23
- mgfunc: Callable[[bytes, int], bytes],
24
- label: Buffer,
25
- randfunc: Callable[[int], bytes]) -> None: ...
26
- def can_encrypt(self) -> bool: ...
27
- def can_decrypt(self) -> bool: ...
28
- def encrypt(self, message: Buffer) -> bytes: ...
29
- def decrypt(self, ciphertext: Buffer) -> bytes: ...
30
-
31
- def new(key: RsaKey,
32
- hashAlgo: Optional[HashLike] = ...,
33
- mgfunc: Optional[Callable[[bytes, int], bytes]] = ...,
34
- label: Optional[Buffer] = ...,
35
- randfunc: Optional[Callable[[int], bytes]] = ...) -> PKCS1OAEP_Cipher: ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_v1_5.py DELETED
@@ -1,217 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/PKCS1-v1_5.py : PKCS#1 v1.5
4
- #
5
- # ===================================================================
6
- # The contents of this file are dedicated to the public domain. To
7
- # the extent that dedication to the public domain is not available,
8
- # everyone is granted a worldwide, perpetual, royalty-free,
9
- # non-exclusive license to exercise all rights associated with the
10
- # contents of this file for any purpose whatsoever.
11
- # No rights are reserved.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
17
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- # ===================================================================
22
-
23
- __all__ = ['new', 'PKCS115_Cipher']
24
-
25
- from Crypto import Random
26
- from Crypto.Util.number import bytes_to_long, long_to_bytes
27
- from Crypto.Util.py3compat import bord, is_bytes, _copy_bytes
28
-
29
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib, c_size_t,
30
- c_uint8_ptr)
31
-
32
-
33
- _raw_pkcs1_decode = load_pycryptodome_raw_lib("Crypto.Cipher._pkcs1_decode",
34
- """
35
- int pkcs1_decode(const uint8_t *em, size_t len_em,
36
- const uint8_t *sentinel, size_t len_sentinel,
37
- size_t expected_pt_len,
38
- uint8_t *output);
39
- """)
40
-
41
-
42
- def _pkcs1_decode(em, sentinel, expected_pt_len, output):
43
- if len(em) != len(output):
44
- raise ValueError("Incorrect output length")
45
-
46
- ret = _raw_pkcs1_decode.pkcs1_decode(c_uint8_ptr(em),
47
- c_size_t(len(em)),
48
- c_uint8_ptr(sentinel),
49
- c_size_t(len(sentinel)),
50
- c_size_t(expected_pt_len),
51
- c_uint8_ptr(output))
52
- return ret
53
-
54
-
55
- class PKCS115_Cipher:
56
- """This cipher can perform PKCS#1 v1.5 RSA encryption or decryption.
57
- Do not instantiate directly. Use :func:`Crypto.Cipher.PKCS1_v1_5.new` instead."""
58
-
59
- def __init__(self, key, randfunc):
60
- """Initialize this PKCS#1 v1.5 cipher object.
61
-
62
- :Parameters:
63
- key : an RSA key object
64
- If a private half is given, both encryption and decryption are possible.
65
- If a public half is given, only encryption is possible.
66
- randfunc : callable
67
- Function that returns random bytes.
68
- """
69
-
70
- self._key = key
71
- self._randfunc = randfunc
72
-
73
- def can_encrypt(self):
74
- """Return True if this cipher object can be used for encryption."""
75
- return self._key.can_encrypt()
76
-
77
- def can_decrypt(self):
78
- """Return True if this cipher object can be used for decryption."""
79
- return self._key.can_decrypt()
80
-
81
- def encrypt(self, message):
82
- """Produce the PKCS#1 v1.5 encryption of a message.
83
-
84
- This function is named ``RSAES-PKCS1-V1_5-ENCRYPT``, and it is specified in
85
- `section 7.2.1 of RFC8017
86
- <https://tools.ietf.org/html/rfc8017#page-28>`_.
87
-
88
- :param message:
89
- The message to encrypt, also known as plaintext. It can be of
90
- variable length, but not longer than the RSA modulus (in bytes) minus 11.
91
- :type message: bytes/bytearray/memoryview
92
-
93
- :Returns: A byte string, the ciphertext in which the message is encrypted.
94
- It is as long as the RSA modulus (in bytes).
95
-
96
- :Raises ValueError:
97
- If the RSA key length is not sufficiently long to deal with the given
98
- message.
99
- """
100
-
101
- # See 7.2.1 in RFC8017
102
- k = self._key.size_in_bytes()
103
- mLen = len(message)
104
-
105
- # Step 1
106
- if mLen > k - 11:
107
- raise ValueError("Plaintext is too long.")
108
- # Step 2a
109
- ps = []
110
- while len(ps) != k - mLen - 3:
111
- new_byte = self._randfunc(1)
112
- if bord(new_byte[0]) == 0x00:
113
- continue
114
- ps.append(new_byte)
115
- ps = b"".join(ps)
116
- assert(len(ps) == k - mLen - 3)
117
- # Step 2b
118
- em = b'\x00\x02' + ps + b'\x00' + _copy_bytes(None, None, message)
119
- # Step 3a (OS2IP)
120
- em_int = bytes_to_long(em)
121
- # Step 3b (RSAEP)
122
- m_int = self._key._encrypt(em_int)
123
- # Step 3c (I2OSP)
124
- c = long_to_bytes(m_int, k)
125
- return c
126
-
127
- def decrypt(self, ciphertext, sentinel, expected_pt_len=0):
128
- r"""Decrypt a PKCS#1 v1.5 ciphertext.
129
-
130
- This is the function ``RSAES-PKCS1-V1_5-DECRYPT`` specified in
131
- `section 7.2.2 of RFC8017
132
- <https://tools.ietf.org/html/rfc8017#page-29>`_.
133
-
134
- Args:
135
- ciphertext (bytes/bytearray/memoryview):
136
- The ciphertext that contains the message to recover.
137
- sentinel (any type):
138
- The object to return whenever an error is detected.
139
- expected_pt_len (integer):
140
- The length the plaintext is known to have, or 0 if unknown.
141
-
142
- Returns (byte string):
143
- It is either the original message or the ``sentinel`` (in case of an error).
144
-
145
- .. warning::
146
- PKCS#1 v1.5 decryption is intrinsically vulnerable to timing
147
- attacks (see `Bleichenbacher's`__ attack).
148
- **Use PKCS#1 OAEP instead**.
149
-
150
- This implementation attempts to mitigate the risk
151
- with some constant-time constructs.
152
- However, they are not sufficient by themselves: the type of protocol you
153
- implement and the way you handle errors make a big difference.
154
-
155
- Specifically, you should make it very hard for the (malicious)
156
- party that submitted the ciphertext to quickly understand if decryption
157
- succeeded or not.
158
-
159
- To this end, it is recommended that your protocol only encrypts
160
- plaintexts of fixed length (``expected_pt_len``),
161
- that ``sentinel`` is a random byte string of the same length,
162
- and that processing continues for as long
163
- as possible even if ``sentinel`` is returned (i.e. in case of
164
- incorrect decryption).
165
-
166
- .. __: https://dx.doi.org/10.1007/BFb0055716
167
- """
168
-
169
- # See 7.2.2 in RFC8017
170
- k = self._key.size_in_bytes()
171
-
172
- # Step 1
173
- if len(ciphertext) != k:
174
- raise ValueError("Ciphertext with incorrect length (not %d bytes)" % k)
175
-
176
- # Step 2a (O2SIP)
177
- ct_int = bytes_to_long(ciphertext)
178
-
179
- # Step 2b (RSADP)
180
- m_int = self._key._decrypt(ct_int)
181
-
182
- # Complete step 2c (I2OSP)
183
- em = long_to_bytes(m_int, k)
184
-
185
- # Step 3 (not constant time when the sentinel is not a byte string)
186
- output = bytes(bytearray(k))
187
- if not is_bytes(sentinel) or len(sentinel) > k:
188
- size = _pkcs1_decode(em, b'', expected_pt_len, output)
189
- if size < 0:
190
- return sentinel
191
- else:
192
- return output[size:]
193
-
194
- # Step 3 (somewhat constant time)
195
- size = _pkcs1_decode(em, sentinel, expected_pt_len, output)
196
- return output[size:]
197
-
198
-
199
- def new(key, randfunc=None):
200
- """Create a cipher for performing PKCS#1 v1.5 encryption or decryption.
201
-
202
- :param key:
203
- The key to use to encrypt or decrypt the message. This is a `Crypto.PublicKey.RSA` object.
204
- Decryption is only possible if *key* is a private RSA key.
205
- :type key: RSA key object
206
-
207
- :param randfunc:
208
- Function that return random bytes.
209
- The default is :func:`Crypto.Random.get_random_bytes`.
210
- :type randfunc: callable
211
-
212
- :returns: A cipher object `PKCS115_Cipher`.
213
- """
214
-
215
- if randfunc is None:
216
- randfunc = Random.get_random_bytes
217
- return PKCS115_Cipher(key, randfunc)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/PKCS1_v1_5.pyi DELETED
@@ -1,20 +0,0 @@
1
- from typing import Callable, Union, Any, Optional, TypeVar
2
-
3
- from Crypto.PublicKey.RSA import RsaKey
4
-
5
- Buffer = Union[bytes, bytearray, memoryview]
6
- T = TypeVar('T')
7
-
8
- class PKCS115_Cipher:
9
- def __init__(self,
10
- key: RsaKey,
11
- randfunc: Callable[[int], bytes]) -> None: ...
12
- def can_encrypt(self) -> bool: ...
13
- def can_decrypt(self) -> bool: ...
14
- def encrypt(self, message: Buffer) -> bytes: ...
15
- def decrypt(self, ciphertext: Buffer,
16
- sentinel: T,
17
- expected_pt_len: Optional[int] = ...) -> Union[bytes, T]: ...
18
-
19
- def new(key: RsaKey,
20
- randfunc: Optional[Callable[[int], bytes]] = ...) -> PKCS115_Cipher: ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Salsa20.py DELETED
@@ -1,167 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Cipher/Salsa20.py : Salsa20 stream cipher (http://cr.yp.to/snuffle.html)
4
- #
5
- # Contributed by Fabrizio Tarizzo <fabrizio@fabriziotarizzo.org>.
6
- #
7
- # ===================================================================
8
- # The contents of this file are dedicated to the public domain. To
9
- # the extent that dedication to the public domain is not available,
10
- # everyone is granted a worldwide, perpetual, royalty-free,
11
- # non-exclusive license to exercise all rights associated with the
12
- # contents of this file for any purpose whatsoever.
13
- # No rights are reserved.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- # SOFTWARE.
23
- # ===================================================================
24
-
25
- from Crypto.Util.py3compat import _copy_bytes
26
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
27
- create_string_buffer,
28
- get_raw_buffer, VoidPointer,
29
- SmartPointer, c_size_t,
30
- c_uint8_ptr, is_writeable_buffer)
31
-
32
- from Crypto.Random import get_random_bytes
33
-
34
- _raw_salsa20_lib = load_pycryptodome_raw_lib("Crypto.Cipher._Salsa20",
35
- """
36
- int Salsa20_stream_init(uint8_t *key, size_t keylen,
37
- uint8_t *nonce, size_t nonce_len,
38
- void **pSalsaState);
39
- int Salsa20_stream_destroy(void *salsaState);
40
- int Salsa20_stream_encrypt(void *salsaState,
41
- const uint8_t in[],
42
- uint8_t out[], size_t len);
43
- """)
44
-
45
-
46
- class Salsa20Cipher:
47
- """Salsa20 cipher object. Do not create it directly. Use :py:func:`new`
48
- instead.
49
-
50
- :var nonce: The nonce with length 8
51
- :vartype nonce: byte string
52
- """
53
-
54
- def __init__(self, key, nonce):
55
- """Initialize a Salsa20 cipher object
56
-
57
- See also `new()` at the module level."""
58
-
59
- if len(key) not in key_size:
60
- raise ValueError("Incorrect key length for Salsa20 (%d bytes)" % len(key))
61
-
62
- if len(nonce) != 8:
63
- raise ValueError("Incorrect nonce length for Salsa20 (%d bytes)" %
64
- len(nonce))
65
-
66
- self.nonce = _copy_bytes(None, None, nonce)
67
-
68
- self._state = VoidPointer()
69
- result = _raw_salsa20_lib.Salsa20_stream_init(
70
- c_uint8_ptr(key),
71
- c_size_t(len(key)),
72
- c_uint8_ptr(nonce),
73
- c_size_t(len(nonce)),
74
- self._state.address_of())
75
- if result:
76
- raise ValueError("Error %d instantiating a Salsa20 cipher")
77
- self._state = SmartPointer(self._state.get(),
78
- _raw_salsa20_lib.Salsa20_stream_destroy)
79
-
80
- self.block_size = 1
81
- self.key_size = len(key)
82
-
83
- def encrypt(self, plaintext, output=None):
84
- """Encrypt a piece of data.
85
-
86
- Args:
87
- plaintext(bytes/bytearray/memoryview): The data to encrypt, of any size.
88
- Keyword Args:
89
- output(bytes/bytearray/memoryview): The location where the ciphertext
90
- is written to. If ``None``, the ciphertext is returned.
91
- Returns:
92
- If ``output`` is ``None``, the ciphertext is returned as ``bytes``.
93
- Otherwise, ``None``.
94
- """
95
-
96
- if output is None:
97
- ciphertext = create_string_buffer(len(plaintext))
98
- else:
99
- ciphertext = output
100
-
101
- if not is_writeable_buffer(output):
102
- raise TypeError("output must be a bytearray or a writeable memoryview")
103
-
104
- if len(plaintext) != len(output):
105
- raise ValueError("output must have the same length as the input"
106
- " (%d bytes)" % len(plaintext))
107
-
108
- result = _raw_salsa20_lib.Salsa20_stream_encrypt(
109
- self._state.get(),
110
- c_uint8_ptr(plaintext),
111
- c_uint8_ptr(ciphertext),
112
- c_size_t(len(plaintext)))
113
- if result:
114
- raise ValueError("Error %d while encrypting with Salsa20" % result)
115
-
116
- if output is None:
117
- return get_raw_buffer(ciphertext)
118
- else:
119
- return None
120
-
121
- def decrypt(self, ciphertext, output=None):
122
- """Decrypt a piece of data.
123
-
124
- Args:
125
- ciphertext(bytes/bytearray/memoryview): The data to decrypt, of any size.
126
- Keyword Args:
127
- output(bytes/bytearray/memoryview): The location where the plaintext
128
- is written to. If ``None``, the plaintext is returned.
129
- Returns:
130
- If ``output`` is ``None``, the plaintext is returned as ``bytes``.
131
- Otherwise, ``None``.
132
- """
133
-
134
- try:
135
- return self.encrypt(ciphertext, output=output)
136
- except ValueError as e:
137
- raise ValueError(str(e).replace("enc", "dec"))
138
-
139
-
140
- def new(key, nonce=None):
141
- """Create a new Salsa20 cipher
142
-
143
- :keyword key: The secret key to use. It must be 16 or 32 bytes long.
144
- :type key: bytes/bytearray/memoryview
145
-
146
- :keyword nonce:
147
- A value that must never be reused for any other encryption
148
- done with this key. It must be 8 bytes long.
149
-
150
- If not provided, a random byte string will be generated (you can read
151
- it back via the ``nonce`` attribute of the returned object).
152
- :type nonce: bytes/bytearray/memoryview
153
-
154
- :Return: a :class:`Crypto.Cipher.Salsa20.Salsa20Cipher` object
155
- """
156
-
157
- if nonce is None:
158
- nonce = get_random_bytes(8)
159
-
160
- return Salsa20Cipher(key, nonce)
161
-
162
- # Size of a data block (in bytes)
163
- block_size = 1
164
-
165
- # Size of a key (in bytes)
166
- key_size = (16, 32)
167
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/Salsa20.pyi DELETED
@@ -1,24 +0,0 @@
1
- from typing import Union, Tuple, Optional, overload, ByteString, Optional
2
-
3
- class Salsa20Cipher:
4
- nonce: bytes
5
- block_size: int
6
- key_size: int
7
-
8
- def __init__(self,
9
- key: ByteString,
10
- nonce: ByteString) -> None: ...
11
- @overload
12
- def encrypt(self, plaintext: ByteString) -> bytes: ...
13
- @overload
14
- def encrypt(self, plaintext: ByteString, output: Union[bytearray, memoryview]) -> None: ...
15
- @overload
16
- def decrypt(self, plaintext: ByteString) -> bytes: ...
17
- @overload
18
- def decrypt(self, plaintext: ByteString, output: Union[bytearray, memoryview]) -> None: ...
19
-
20
- def new(key: ByteString, nonce: Optional[ByteString] = ...) -> Salsa20Cipher: ...
21
-
22
- block_size: int
23
- key_size: Tuple[int, int]
24
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_ARC4.pyd DELETED
Binary file (11.3 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_EKSBlowfish.py DELETED
@@ -1,131 +0,0 @@
1
- # ===================================================================
2
- #
3
- # Copyright (c) 2019, Legrandin <helderijs@gmail.com>
4
- # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions
8
- # are met:
9
- #
10
- # 1. Redistributions of source code must retain the above copyright
11
- # notice, this list of conditions and the following disclaimer.
12
- # 2. Redistributions in binary form must reproduce the above copyright
13
- # notice, this list of conditions and the following disclaimer in
14
- # the documentation and/or other materials provided with the
15
- # distribution.
16
- #
17
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
- # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23
- # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
- # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27
- # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
- # POSSIBILITY OF SUCH DAMAGE.
29
- # ===================================================================
30
-
31
- import sys
32
-
33
- from Crypto.Cipher import _create_cipher
34
- from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
35
- VoidPointer, SmartPointer, c_size_t,
36
- c_uint8_ptr, c_uint)
37
-
38
- _raw_blowfish_lib = load_pycryptodome_raw_lib(
39
- "Crypto.Cipher._raw_eksblowfish",
40
- """
41
- int EKSBlowfish_start_operation(const uint8_t key[],
42
- size_t key_len,
43
- const uint8_t salt[16],
44
- size_t salt_len,
45
- unsigned cost,
46
- unsigned invert,
47
- void **pResult);
48
- int EKSBlowfish_encrypt(const void *state,
49
- const uint8_t *in,
50
- uint8_t *out,
51
- size_t data_len);
52
- int EKSBlowfish_decrypt(const void *state,
53
- const uint8_t *in,
54
- uint8_t *out,
55
- size_t data_len);
56
- int EKSBlowfish_stop_operation(void *state);
57
- """
58
- )
59
-
60
-
61
- def _create_base_cipher(dict_parameters):
62
- """This method instantiates and returns a smart pointer to
63
- a low-level base cipher. It will absorb named parameters in
64
- the process."""
65
-
66
- try:
67
- key = dict_parameters.pop("key")
68
- salt = dict_parameters.pop("salt")
69
- cost = dict_parameters.pop("cost")
70
- except KeyError as e:
71
- raise TypeError("Missing EKSBlowfish parameter: " + str(e))
72
- invert = dict_parameters.pop("invert", True)
73
-
74
- if len(key) not in key_size:
75
- raise ValueError("Incorrect EKSBlowfish key length (%d bytes)" % len(key))
76
-
77
- start_operation = _raw_blowfish_lib.EKSBlowfish_start_operation
78
- stop_operation = _raw_blowfish_lib.EKSBlowfish_stop_operation
79
-
80
- void_p = VoidPointer()
81
- result = start_operation(c_uint8_ptr(key),
82
- c_size_t(len(key)),
83
- c_uint8_ptr(salt),
84
- c_size_t(len(salt)),
85
- c_uint(cost),
86
- c_uint(int(invert)),
87
- void_p.address_of())
88
- if result:
89
- raise ValueError("Error %X while instantiating the EKSBlowfish cipher"
90
- % result)
91
- return SmartPointer(void_p.get(), stop_operation)
92
-
93
-
94
- def new(key, mode, salt, cost, invert):
95
- """Create a new EKSBlowfish cipher
96
-
97
- Args:
98
-
99
- key (bytes, bytearray, memoryview):
100
- The secret key to use in the symmetric cipher.
101
- Its length can vary from 0 to 72 bytes.
102
-
103
- mode (one of the supported ``MODE_*`` constants):
104
- The chaining mode to use for encryption or decryption.
105
-
106
- salt (bytes, bytearray, memoryview):
107
- The salt that bcrypt uses to thwart rainbow table attacks
108
-
109
- cost (integer):
110
- The complexity factor in bcrypt
111
-
112
- invert (bool):
113
- If ``False``, in the inner loop use ``ExpandKey`` first over the salt
114
- and then over the key, as defined in
115
- the `original bcrypt specification <https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node4.html>`_.
116
- If ``True``, reverse the order, as in the first implementation of
117
- `bcrypt` in OpenBSD.
118
-
119
- :Return: an EKSBlowfish object
120
- """
121
-
122
- kwargs = { 'salt':salt, 'cost':cost, 'invert':invert }
123
- return _create_cipher(sys.modules[__name__], key, mode, **kwargs)
124
-
125
-
126
- MODE_ECB = 1
127
-
128
- # Size of a data block (in bytes)
129
- block_size = 8
130
- # Size of a key (in bytes)
131
- key_size = range(0, 72 + 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_EKSBlowfish.pyi DELETED
@@ -1,15 +0,0 @@
1
- from typing import Union, Iterable
2
-
3
- from Crypto.Cipher._mode_ecb import EcbMode
4
-
5
- MODE_ECB: int
6
-
7
- Buffer = Union[bytes, bytearray, memoryview]
8
-
9
- def new(key: Buffer,
10
- mode: int,
11
- salt: Buffer,
12
- cost: int) -> EcbMode: ...
13
-
14
- block_size: int
15
- key_size: Iterable[int]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/_Salsa20.pyd DELETED
Binary file (13.8 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__init__.py DELETED
@@ -1,79 +0,0 @@
1
- #
2
- # A block cipher is instantiated as a combination of:
3
- # 1. A base cipher (such as AES)
4
- # 2. A mode of operation (such as CBC)
5
- #
6
- # Both items are implemented as C modules.
7
- #
8
- # The API of #1 is (replace "AES" with the name of the actual cipher):
9
- # - AES_start_operaion(key) --> base_cipher_state
10
- # - AES_encrypt(base_cipher_state, in, out, length)
11
- # - AES_decrypt(base_cipher_state, in, out, length)
12
- # - AES_stop_operation(base_cipher_state)
13
- #
14
- # Where base_cipher_state is AES_State, a struct with BlockBase (set of
15
- # pointers to encrypt/decrypt/stop) followed by cipher-specific data.
16
- #
17
- # The API of #2 is (replace "CBC" with the name of the actual mode):
18
- # - CBC_start_operation(base_cipher_state) --> mode_state
19
- # - CBC_encrypt(mode_state, in, out, length)
20
- # - CBC_decrypt(mode_state, in, out, length)
21
- # - CBC_stop_operation(mode_state)
22
- #
23
- # where mode_state is a a pointer to base_cipher_state plus mode-specific data.
24
-
25
- import os
26
-
27
- from Crypto.Cipher._mode_ecb import _create_ecb_cipher
28
- from Crypto.Cipher._mode_cbc import _create_cbc_cipher
29
- from Crypto.Cipher._mode_cfb import _create_cfb_cipher
30
- from Crypto.Cipher._mode_ofb import _create_ofb_cipher
31
- from Crypto.Cipher._mode_ctr import _create_ctr_cipher
32
- from Crypto.Cipher._mode_openpgp import _create_openpgp_cipher
33
- from Crypto.Cipher._mode_ccm import _create_ccm_cipher
34
- from Crypto.Cipher._mode_eax import _create_eax_cipher
35
- from Crypto.Cipher._mode_siv import _create_siv_cipher
36
- from Crypto.Cipher._mode_gcm import _create_gcm_cipher
37
- from Crypto.Cipher._mode_ocb import _create_ocb_cipher
38
-
39
- _modes = { 1:_create_ecb_cipher,
40
- 2:_create_cbc_cipher,
41
- 3:_create_cfb_cipher,
42
- 5:_create_ofb_cipher,
43
- 6:_create_ctr_cipher,
44
- 7:_create_openpgp_cipher,
45
- 9:_create_eax_cipher
46
- }
47
-
48
- _extra_modes = { 8:_create_ccm_cipher,
49
- 10:_create_siv_cipher,
50
- 11:_create_gcm_cipher,
51
- 12:_create_ocb_cipher
52
- }
53
-
54
- def _create_cipher(factory, key, mode, *args, **kwargs):
55
-
56
- kwargs["key"] = key
57
-
58
- modes = dict(_modes)
59
- if kwargs.pop("add_aes_modes", False):
60
- modes.update(_extra_modes)
61
- if not mode in modes:
62
- raise ValueError("Mode not supported")
63
-
64
- if args:
65
- if mode in (8, 9, 10, 11, 12):
66
- if len(args) > 1:
67
- raise TypeError("Too many arguments for this mode")
68
- kwargs["nonce"] = args[0]
69
- elif mode in (2, 3, 5, 7):
70
- if len(args) > 1:
71
- raise TypeError("Too many arguments for this mode")
72
- kwargs["IV"] = args[0]
73
- elif mode == 6:
74
- if len(args) > 0:
75
- raise TypeError("Too many arguments for this mode")
76
- elif mode == 1:
77
- raise TypeError("IV is not meaningful for the ECB mode")
78
-
79
- return modes[mode](factory, **kwargs)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__init__.pyi DELETED
File without changes
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/AES.cpython-310.pyc DELETED
Binary file (7.1 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ARC2.cpython-310.pyc DELETED
Binary file (5.89 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ARC4.cpython-310.pyc DELETED
Binary file (3.74 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/Blowfish.cpython-310.pyc DELETED
Binary file (5.03 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/CAST.cpython-310.pyc DELETED
Binary file (5.14 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ChaCha20.cpython-310.pyc DELETED
Binary file (7.46 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/ChaCha20_Poly1305.cpython-310.pyc DELETED
Binary file (9.91 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/DES.cpython-310.pyc DELETED
Binary file (5.03 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/DES3.cpython-310.pyc DELETED
Binary file (6.24 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/PKCS1_OAEP.cpython-310.pyc DELETED
Binary file (7.16 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/PKCS1_v1_5.cpython-310.pyc DELETED
Binary file (6.69 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/Salsa20.cpython-310.pyc DELETED
Binary file (4.65 kB)
 
multilingual_toxic_comment_files/env/Lib/site-packages/Crypto/Cipher/__pycache__/_EKSBlowfish.cpython-310.pyc DELETED
Binary file (3.52 kB)