169 <p> |
169 <p> |
170 Private method to add (XORs) the round key to the state. |
170 Private method to add (XORs) the round key to the state. |
171 </p> |
171 </p> |
172 <dl> |
172 <dl> |
173 |
173 |
174 <dt><i>state</i></dt> |
174 <dt><i>state</i> (bytearray)</dt> |
175 <dd> |
175 <dd> |
176 state to be changed (bytearray) |
176 state to be changed |
177 </dd> |
177 </dd> |
178 <dt><i>roundKey</i></dt> |
178 <dt><i>roundKey</i> (bytearray)</dt> |
179 <dd> |
179 <dd> |
180 key to be used for the modification (bytearray) |
180 key to be used for the modification |
181 </dd> |
181 </dd> |
182 </dl> |
182 </dl> |
183 <dl> |
183 <dl> |
184 <dt>Return:</dt> |
184 <dt>Return:</dt> |
185 <dd> |
185 <dd> |
186 modified state (bytearray) |
186 modified state |
|
187 </dd> |
|
188 </dl> |
|
189 <dl> |
|
190 <dt>Return Type:</dt> |
|
191 <dd> |
|
192 bytearray |
187 </dd> |
193 </dd> |
188 </dl> |
194 </dl> |
189 <a NAME="AES.__aes_invMain" ID="AES.__aes_invMain"></a> |
195 <a NAME="AES.__aes_invMain" ID="AES.__aes_invMain"></a> |
190 <h4>AES.__aes_invMain</h4> |
196 <h4>AES.__aes_invMain</h4> |
191 <b>__aes_invMain</b>(<i>state, expandedKey, nbrRounds</i>) |
197 <b>__aes_invMain</b>(<i>state, expandedKey, nbrRounds</i>) |
198 final operations of the inverse AES, creating a round key for |
204 final operations of the inverse AES, creating a round key for |
199 each round. |
205 each round. |
200 </p> |
206 </p> |
201 <dl> |
207 <dl> |
202 |
208 |
203 <dt><i>state</i></dt> |
209 <dt><i>state</i> (bytearray)</dt> |
204 <dd> |
210 <dd> |
205 state to be worked on (bytearray) |
211 state to be worked on |
206 </dd> |
212 </dd> |
207 <dt><i>expandedKey</i></dt> |
213 <dt><i>expandedKey</i> (bytearray)</dt> |
208 <dd> |
214 <dd> |
209 expanded key to be used (bytearray) |
215 expanded key to be used |
210 </dd> |
216 </dd> |
211 <dt><i>nbrRounds</i></dt> |
217 <dt><i>nbrRounds</i> (int)</dt> |
212 <dd> |
218 <dd> |
213 number of rounds to be done (integer) |
219 number of rounds to be done |
214 </dd> |
220 </dd> |
215 </dl> |
221 </dl> |
216 <dl> |
222 <dl> |
217 <dt>Return:</dt> |
223 <dt>Return:</dt> |
218 <dd> |
224 <dd> |
219 modified state (bytearray) |
225 modified state |
|
226 </dd> |
|
227 </dl> |
|
228 <dl> |
|
229 <dt>Return Type:</dt> |
|
230 <dd> |
|
231 bytearray |
220 </dd> |
232 </dd> |
221 </dl> |
233 </dl> |
222 <a NAME="AES.__aes_invRound" ID="AES.__aes_invRound"></a> |
234 <a NAME="AES.__aes_invRound" ID="AES.__aes_invRound"></a> |
223 <h4>AES.__aes_invRound</h4> |
235 <h4>AES.__aes_invRound</h4> |
224 <b>__aes_invRound</b>(<i>state, roundKey</i>) |
236 <b>__aes_invRound</b>(<i>state, roundKey</i>) |
227 Private method to apply the 4 operations of the inverse round in |
239 Private method to apply the 4 operations of the inverse round in |
228 sequence. |
240 sequence. |
229 </p> |
241 </p> |
230 <dl> |
242 <dl> |
231 |
243 |
232 <dt><i>state</i></dt> |
244 <dt><i>state</i> (bytearray)</dt> |
233 <dd> |
245 <dd> |
234 state to be worked on (bytearray) |
246 state to be worked on |
235 </dd> |
247 </dd> |
236 <dt><i>roundKey</i></dt> |
248 <dt><i>roundKey</i> (bytearray)</dt> |
237 <dd> |
249 <dd> |
238 round key to be used (bytearray) |
250 round key to be used |
239 </dd> |
251 </dd> |
240 </dl> |
252 </dl> |
241 <dl> |
253 <dl> |
242 <dt>Return:</dt> |
254 <dt>Return:</dt> |
243 <dd> |
255 <dd> |
244 modified state (bytearray) |
256 modified state |
|
257 </dd> |
|
258 </dl> |
|
259 <dl> |
|
260 <dt>Return Type:</dt> |
|
261 <dd> |
|
262 bytearray |
245 </dd> |
263 </dd> |
246 </dl> |
264 </dl> |
247 <a NAME="AES.__aes_main" ID="AES.__aes_main"></a> |
265 <a NAME="AES.__aes_main" ID="AES.__aes_main"></a> |
248 <h4>AES.__aes_main</h4> |
266 <h4>AES.__aes_main</h4> |
249 <b>__aes_main</b>(<i>state, expandedKey, nbrRounds</i>) |
267 <b>__aes_main</b>(<i>state, expandedKey, nbrRounds</i>) |
256 final operations of the forward AES, creating a round key for |
274 final operations of the forward AES, creating a round key for |
257 each round. |
275 each round. |
258 </p> |
276 </p> |
259 <dl> |
277 <dl> |
260 |
278 |
261 <dt><i>state</i></dt> |
279 <dt><i>state</i> (bytearray)</dt> |
262 <dd> |
280 <dd> |
263 state to be worked on (bytearray) |
281 state to be worked on |
264 </dd> |
282 </dd> |
265 <dt><i>expandedKey</i></dt> |
283 <dt><i>expandedKey</i> (bytearray)</dt> |
266 <dd> |
284 <dd> |
267 expanded key to be used (bytearray) |
285 expanded key to be used |
268 </dd> |
286 </dd> |
269 <dt><i>nbrRounds</i></dt> |
287 <dt><i>nbrRounds</i> (int)</dt> |
270 <dd> |
288 <dd> |
271 number of rounds to be done (integer) |
289 number of rounds to be done |
272 </dd> |
290 </dd> |
273 </dl> |
291 </dl> |
274 <dl> |
292 <dl> |
275 <dt>Return:</dt> |
293 <dt>Return:</dt> |
276 <dd> |
294 <dd> |
277 modified state (bytearray) |
295 modified state |
|
296 </dd> |
|
297 </dl> |
|
298 <dl> |
|
299 <dt>Return Type:</dt> |
|
300 <dd> |
|
301 bytearray |
278 </dd> |
302 </dd> |
279 </dl> |
303 </dl> |
280 <a NAME="AES.__aes_round" ID="AES.__aes_round"></a> |
304 <a NAME="AES.__aes_round" ID="AES.__aes_round"></a> |
281 <h4>AES.__aes_round</h4> |
305 <h4>AES.__aes_round</h4> |
282 <b>__aes_round</b>(<i>state, roundKey</i>) |
306 <b>__aes_round</b>(<i>state, roundKey</i>) |
285 Private method to apply the 4 operations of the forward round in |
309 Private method to apply the 4 operations of the forward round in |
286 sequence. |
310 sequence. |
287 </p> |
311 </p> |
288 <dl> |
312 <dl> |
289 |
313 |
290 <dt><i>state</i></dt> |
314 <dt><i>state</i> (bytearray)</dt> |
291 <dd> |
315 <dd> |
292 state to be worked on (bytearray) |
316 state to be worked on |
293 </dd> |
317 </dd> |
294 <dt><i>roundKey</i></dt> |
318 <dt><i>roundKey</i> (bytearray)</dt> |
295 <dd> |
319 <dd> |
296 round key to be used (bytearray) |
320 round key to be used |
297 </dd> |
321 </dd> |
298 </dl> |
322 </dl> |
299 <dl> |
323 <dl> |
300 <dt>Return:</dt> |
324 <dt>Return:</dt> |
301 <dd> |
325 <dd> |
302 modified state (bytearray) |
326 modified state |
|
327 </dd> |
|
328 </dl> |
|
329 <dl> |
|
330 <dt>Return Type:</dt> |
|
331 <dd> |
|
332 bytearray |
303 </dd> |
333 </dd> |
304 </dl> |
334 </dl> |
305 <a NAME="AES.__core" ID="AES.__core"></a> |
335 <a NAME="AES.__core" ID="AES.__core"></a> |
306 <h4>AES.__core</h4> |
336 <h4>AES.__core</h4> |
307 <b>__core</b>(<i>data, iteration</i>) |
337 <b>__core</b>(<i>data, iteration</i>) |
309 <p> |
339 <p> |
310 Private method performing the key schedule core operation. |
340 Private method performing the key schedule core operation. |
311 </p> |
341 </p> |
312 <dl> |
342 <dl> |
313 |
343 |
314 <dt><i>data</i></dt> |
344 <dt><i>data</i> (bytearray)</dt> |
315 <dd> |
345 <dd> |
316 data to operate on (bytearray) |
346 data to operate on |
317 </dd> |
347 </dd> |
318 <dt><i>iteration</i></dt> |
348 <dt><i>iteration</i> (int)</dt> |
319 <dd> |
349 <dd> |
320 iteration counter (integer) |
350 iteration counter |
321 </dd> |
351 </dd> |
322 </dl> |
352 </dl> |
323 <dl> |
353 <dl> |
324 <dt>Return:</dt> |
354 <dt>Return:</dt> |
325 <dd> |
355 <dd> |
326 modified data (bytearray) |
356 modified data |
|
357 </dd> |
|
358 </dl> |
|
359 <dl> |
|
360 <dt>Return Type:</dt> |
|
361 <dd> |
|
362 bytearray |
327 </dd> |
363 </dd> |
328 </dl> |
364 </dl> |
329 <a NAME="AES.__createRoundKey" ID="AES.__createRoundKey"></a> |
365 <a NAME="AES.__createRoundKey" ID="AES.__createRoundKey"></a> |
330 <h4>AES.__createRoundKey</h4> |
366 <h4>AES.__createRoundKey</h4> |
331 <b>__createRoundKey</b>(<i>expandedKey, roundKeyPointer</i>) |
367 <b>__createRoundKey</b>(<i>expandedKey, roundKeyPointer</i>) |
333 <p> |
369 <p> |
334 Private method to create a round key. |
370 Private method to create a round key. |
335 </p> |
371 </p> |
336 <dl> |
372 <dl> |
337 |
373 |
338 <dt><i>expandedKey</i></dt> |
374 <dt><i>expandedKey</i> (bytearray)</dt> |
339 <dd> |
375 <dd> |
340 expanded key to be used (bytearray) |
376 expanded key to be used |
341 </dd> |
377 </dd> |
342 <dt><i>roundKeyPointer</i></dt> |
378 <dt><i>roundKeyPointer</i> (int)</dt> |
343 <dd> |
379 <dd> |
344 position within the expanded key (integer) |
380 position within the expanded key |
345 </dd> |
381 </dd> |
346 </dl> |
382 </dl> |
347 <dl> |
383 <dl> |
348 <dt>Return:</dt> |
384 <dt>Return:</dt> |
349 <dd> |
385 <dd> |
350 round key (bytearray) |
386 round key |
|
387 </dd> |
|
388 </dl> |
|
389 <dl> |
|
390 <dt>Return Type:</dt> |
|
391 <dd> |
|
392 bytearray |
351 </dd> |
393 </dd> |
352 </dl> |
394 </dl> |
353 <a NAME="AES.__expandKey" ID="AES.__expandKey"></a> |
395 <a NAME="AES.__expandKey" ID="AES.__expandKey"></a> |
354 <h4>AES.__expandKey</h4> |
396 <h4>AES.__expandKey</h4> |
355 <b>__expandKey</b>(<i>key, size, expandedKeySize</i>) |
397 <b>__expandKey</b>(<i>key, size, expandedKeySize</i>) |
360 <p> |
402 <p> |
361 Expands a 128, 192 or 256 bit key into a 176, 208 or 240 bit key. |
403 Expands a 128, 192 or 256 bit key into a 176, 208 or 240 bit key. |
362 </p> |
404 </p> |
363 <dl> |
405 <dl> |
364 |
406 |
365 <dt><i>key</i></dt> |
407 <dt><i>key</i> (bytes or bytearray)</dt> |
366 <dd> |
408 <dd> |
367 key to be expanded (bytes or bytearray) |
409 key to be expanded |
368 </dd> |
410 </dd> |
369 <dt><i>size</i></dt> |
411 <dt><i>size</i> (int)</dt> |
370 <dd> |
412 <dd> |
371 size of the key in bytes (16, 24 or 32) |
413 size of the key in bytes (16, 24 or 32) |
372 </dd> |
414 </dd> |
373 <dt><i>expandedKeySize</i></dt> |
415 <dt><i>expandedKeySize</i> (int)</dt> |
374 <dd> |
416 <dd> |
375 size of the expanded key (integer) |
417 size of the expanded key |
376 </dd> |
418 </dd> |
377 </dl> |
419 </dl> |
378 <dl> |
420 <dl> |
379 <dt>Return:</dt> |
421 <dt>Return:</dt> |
380 <dd> |
422 <dd> |
381 expanded key (bytearray) |
423 expanded key |
|
424 </dd> |
|
425 </dl> |
|
426 <dl> |
|
427 <dt>Return Type:</dt> |
|
428 <dd> |
|
429 bytearray |
382 </dd> |
430 </dd> |
383 </dl> |
431 </dl> |
384 <a NAME="AES.__galois_multiplication" ID="AES.__galois_multiplication"></a> |
432 <a NAME="AES.__galois_multiplication" ID="AES.__galois_multiplication"></a> |
385 <h4>AES.__galois_multiplication</h4> |
433 <h4>AES.__galois_multiplication</h4> |
386 <b>__galois_multiplication</b>(<i>a, b</i>) |
434 <b>__galois_multiplication</b>(<i>a, b</i>) |
389 Private method to perform a Galois multiplication of 8 bit characters |
437 Private method to perform a Galois multiplication of 8 bit characters |
390 a and b. |
438 a and b. |
391 </p> |
439 </p> |
392 <dl> |
440 <dl> |
393 |
441 |
394 <dt><i>a</i></dt> |
442 <dt><i>a</i> (bytes)</dt> |
395 <dd> |
443 <dd> |
396 first factor (byte) |
444 first factor |
397 </dd> |
445 </dd> |
398 <dt><i>b</i></dt> |
446 <dt><i>b</i> (bytes)</dt> |
399 <dd> |
447 <dd> |
400 second factor (byte) |
448 second factor |
401 </dd> |
449 </dd> |
402 </dl> |
450 </dl> |
403 <dl> |
451 <dl> |
404 <dt>Return:</dt> |
452 <dt>Return:</dt> |
405 <dd> |
453 <dd> |
406 result (byte) |
454 result |
|
455 </dd> |
|
456 </dl> |
|
457 <dl> |
|
458 <dt>Return Type:</dt> |
|
459 <dd> |
|
460 bytes |
407 </dd> |
461 </dd> |
408 </dl> |
462 </dl> |
409 <a NAME="AES.__getRconValue" ID="AES.__getRconValue"></a> |
463 <a NAME="AES.__getRconValue" ID="AES.__getRconValue"></a> |
410 <h4>AES.__getRconValue</h4> |
464 <h4>AES.__getRconValue</h4> |
411 <b>__getRconValue</b>(<i>num</i>) |
465 <b>__getRconValue</b>(<i>num</i>) |
413 <p> |
467 <p> |
414 Private method to retrieve a given Rcon value. |
468 Private method to retrieve a given Rcon value. |
415 </p> |
469 </p> |
416 <dl> |
470 <dl> |
417 |
471 |
418 <dt><i>num</i></dt> |
472 <dt><i>num</i> (int)</dt> |
419 <dd> |
473 <dd> |
420 position of the value (integer) |
474 position of the value |
421 </dd> |
475 </dd> |
422 </dl> |
476 </dl> |
423 <dl> |
477 <dl> |
424 <dt>Return:</dt> |
478 <dt>Return:</dt> |
425 <dd> |
479 <dd> |
426 Rcon value (integer) |
480 Rcon value |
|
481 </dd> |
|
482 </dl> |
|
483 <dl> |
|
484 <dt>Return Type:</dt> |
|
485 <dd> |
|
486 int |
427 </dd> |
487 </dd> |
428 </dl> |
488 </dl> |
429 <a NAME="AES.__getSBoxInvert" ID="AES.__getSBoxInvert"></a> |
489 <a NAME="AES.__getSBoxInvert" ID="AES.__getSBoxInvert"></a> |
430 <h4>AES.__getSBoxInvert</h4> |
490 <h4>AES.__getSBoxInvert</h4> |
431 <b>__getSBoxInvert</b>(<i>num</i>) |
491 <b>__getSBoxInvert</b>(<i>num</i>) |
433 <p> |
493 <p> |
434 Private method to retrieve a given Inverted S-Box value. |
494 Private method to retrieve a given Inverted S-Box value. |
435 </p> |
495 </p> |
436 <dl> |
496 <dl> |
437 |
497 |
438 <dt><i>num</i></dt> |
498 <dt><i>num</i> (int)</dt> |
439 <dd> |
499 <dd> |
440 position of the value (integer) |
500 position of the value |
441 </dd> |
501 </dd> |
442 </dl> |
502 </dl> |
443 <dl> |
503 <dl> |
444 <dt>Return:</dt> |
504 <dt>Return:</dt> |
445 <dd> |
505 <dd> |
446 value of the Inverted S-Box (integer) |
506 value of the Inverted S-Box |
|
507 </dd> |
|
508 </dl> |
|
509 <dl> |
|
510 <dt>Return Type:</dt> |
|
511 <dd> |
|
512 int |
447 </dd> |
513 </dd> |
448 </dl> |
514 </dl> |
449 <a NAME="AES.__getSBoxValue" ID="AES.__getSBoxValue"></a> |
515 <a NAME="AES.__getSBoxValue" ID="AES.__getSBoxValue"></a> |
450 <h4>AES.__getSBoxValue</h4> |
516 <h4>AES.__getSBoxValue</h4> |
451 <b>__getSBoxValue</b>(<i>num</i>) |
517 <b>__getSBoxValue</b>(<i>num</i>) |
453 <p> |
519 <p> |
454 Private method to retrieve a given S-Box value. |
520 Private method to retrieve a given S-Box value. |
455 </p> |
521 </p> |
456 <dl> |
522 <dl> |
457 |
523 |
458 <dt><i>num</i></dt> |
524 <dt><i>num</i> (int)</dt> |
459 <dd> |
525 <dd> |
460 position of the value (integer) |
526 position of the value |
461 </dd> |
527 </dd> |
462 </dl> |
528 </dl> |
463 <dl> |
529 <dl> |
464 <dt>Return:</dt> |
530 <dt>Return:</dt> |
465 <dd> |
531 <dd> |
466 value of the S-Box (integer) |
532 value of the S-Box |
|
533 </dd> |
|
534 </dl> |
|
535 <dl> |
|
536 <dt>Return Type:</dt> |
|
537 <dd> |
|
538 int |
467 </dd> |
539 </dd> |
468 </dl> |
540 </dl> |
469 <a NAME="AES.__mixColumn" ID="AES.__mixColumn"></a> |
541 <a NAME="AES.__mixColumn" ID="AES.__mixColumn"></a> |
470 <h4>AES.__mixColumn</h4> |
542 <h4>AES.__mixColumn</h4> |
471 <b>__mixColumn</b>(<i>column, isInv</i>) |
543 <b>__mixColumn</b>(<i>column, isInv</i>) |
474 Private method to perform a galois multiplication of 1 column the |
546 Private method to perform a galois multiplication of 1 column the |
475 4x4 matrix. |
547 4x4 matrix. |
476 </p> |
548 </p> |
477 <dl> |
549 <dl> |
478 |
550 |
479 <dt><i>column</i></dt> |
551 <dt><i>column</i> (bytearray)</dt> |
480 <dd> |
552 <dd> |
481 column to be worked on (bytearray) |
553 column to be worked on |
482 </dd> |
554 </dd> |
483 <dt><i>isInv</i></dt> |
555 <dt><i>isInv</i> (bool)</dt> |
484 <dd> |
556 <dd> |
485 flag indicating an inverse operation (boolean) |
557 flag indicating an inverse operation |
486 </dd> |
558 </dd> |
487 </dl> |
559 </dl> |
488 <dl> |
560 <dl> |
489 <dt>Return:</dt> |
561 <dt>Return:</dt> |
490 <dd> |
562 <dd> |
491 modified column (bytearray) |
563 modified column |
|
564 </dd> |
|
565 </dl> |
|
566 <dl> |
|
567 <dt>Return Type:</dt> |
|
568 <dd> |
|
569 bytearray |
492 </dd> |
570 </dd> |
493 </dl> |
571 </dl> |
494 <a NAME="AES.__mixColumns" ID="AES.__mixColumns"></a> |
572 <a NAME="AES.__mixColumns" ID="AES.__mixColumns"></a> |
495 <h4>AES.__mixColumns</h4> |
573 <h4>AES.__mixColumns</h4> |
496 <b>__mixColumns</b>(<i>state, isInv</i>) |
574 <b>__mixColumns</b>(<i>state, isInv</i>) |
498 <p> |
576 <p> |
499 Private method to perform a galois multiplication of the 4x4 matrix. |
577 Private method to perform a galois multiplication of the 4x4 matrix. |
500 </p> |
578 </p> |
501 <dl> |
579 <dl> |
502 |
580 |
503 <dt><i>state</i></dt> |
581 <dt><i>state</i> (bytearray)</dt> |
504 <dd> |
582 <dd> |
505 state to be worked on (bytearray) |
583 state to be worked on |
506 </dd> |
584 </dd> |
507 <dt><i>isInv</i></dt> |
585 <dt><i>isInv</i> (bool)</dt> |
508 <dd> |
586 <dd> |
509 flag indicating an inverse operation (boolean) |
587 flag indicating an inverse operation |
510 </dd> |
588 </dd> |
511 </dl> |
589 </dl> |
512 <dl> |
590 <dl> |
513 <dt>Return:</dt> |
591 <dt>Return:</dt> |
514 <dd> |
592 <dd> |
515 modified state (bytearray) |
593 modified state |
|
594 </dd> |
|
595 </dl> |
|
596 <dl> |
|
597 <dt>Return Type:</dt> |
|
598 <dd> |
|
599 bytearray |
516 </dd> |
600 </dd> |
517 </dl> |
601 </dl> |
518 <a NAME="AES.__rotate" ID="AES.__rotate"></a> |
602 <a NAME="AES.__rotate" ID="AES.__rotate"></a> |
519 <h4>AES.__rotate</h4> |
603 <h4>AES.__rotate</h4> |
520 <b>__rotate</b>(<i>data</i>) |
604 <b>__rotate</b>(<i>data</i>) |
526 Rotate the data word eight bits to the left: eg, |
610 Rotate the data word eight bits to the left: eg, |
527 rotate(1d2c3a4f) == 2c3a4f1d. |
611 rotate(1d2c3a4f) == 2c3a4f1d. |
528 </p> |
612 </p> |
529 <dl> |
613 <dl> |
530 |
614 |
531 <dt><i>data</i></dt> |
615 <dt><i>data</i> (bytearray)</dt> |
532 <dd> |
616 <dd> |
533 data of size 4 (bytearray) |
617 data of size 4 |
534 </dd> |
618 </dd> |
535 </dl> |
619 </dl> |
536 <dl> |
620 <dl> |
537 <dt>Return:</dt> |
621 <dt>Return:</dt> |
538 <dd> |
622 <dd> |
539 rotated data (bytearray) |
623 rotated data |
|
624 </dd> |
|
625 </dl> |
|
626 <dl> |
|
627 <dt>Return Type:</dt> |
|
628 <dd> |
|
629 bytearray |
540 </dd> |
630 </dd> |
541 </dl> |
631 </dl> |
542 <a NAME="AES.__shiftRow" ID="AES.__shiftRow"></a> |
632 <a NAME="AES.__shiftRow" ID="AES.__shiftRow"></a> |
543 <h4>AES.__shiftRow</h4> |
633 <h4>AES.__shiftRow</h4> |
544 <b>__shiftRow</b>(<i>state, statePointer, nbr, isInv</i>) |
634 <b>__shiftRow</b>(<i>state, statePointer, nbr, isInv</i>) |
546 <p> |
636 <p> |
547 Private method to shift the bytes of a row to the left. |
637 Private method to shift the bytes of a row to the left. |
548 </p> |
638 </p> |
549 <dl> |
639 <dl> |
550 |
640 |
551 <dt><i>state</i></dt> |
641 <dt><i>state</i> (bytearray)</dt> |
552 <dd> |
642 <dd> |
553 state to be worked on (bytearray) |
643 state to be worked on |
554 </dd> |
644 </dd> |
555 <dt><i>statePointer</i></dt> |
645 <dt><i>statePointer</i> (int)</dt> |
556 <dd> |
646 <dd> |
557 index into the state (integer) |
647 index into the state |
558 </dd> |
648 </dd> |
559 <dt><i>nbr</i></dt> |
649 <dt><i>nbr</i> (int)</dt> |
560 <dd> |
650 <dd> |
561 number of positions to shift (integer) |
651 number of positions to shift |
562 </dd> |
652 </dd> |
563 <dt><i>isInv</i></dt> |
653 <dt><i>isInv</i> (bool)</dt> |
564 <dd> |
654 <dd> |
565 flag indicating an inverse operation (boolean) |
655 flag indicating an inverse operation |
566 </dd> |
656 </dd> |
567 </dl> |
657 </dl> |
568 <dl> |
658 <dl> |
569 <dt>Return:</dt> |
659 <dt>Return:</dt> |
570 <dd> |
660 <dd> |
571 modified state (bytearray) |
661 modified state |
|
662 </dd> |
|
663 </dl> |
|
664 <dl> |
|
665 <dt>Return Type:</dt> |
|
666 <dd> |
|
667 bytearray |
572 </dd> |
668 </dd> |
573 </dl> |
669 </dl> |
574 <a NAME="AES.__shiftRows" ID="AES.__shiftRows"></a> |
670 <a NAME="AES.__shiftRows" ID="AES.__shiftRows"></a> |
575 <h4>AES.__shiftRows</h4> |
671 <h4>AES.__shiftRows</h4> |
576 <b>__shiftRows</b>(<i>state, isInv</i>) |
672 <b>__shiftRows</b>(<i>state, isInv</i>) |
579 Private method to iterate over the 4 rows and call __shiftRow() with |
675 Private method to iterate over the 4 rows and call __shiftRow() with |
580 that row. |
676 that row. |
581 </p> |
677 </p> |
582 <dl> |
678 <dl> |
583 |
679 |
584 <dt><i>state</i></dt> |
680 <dt><i>state</i> (bytearray)</dt> |
585 <dd> |
681 <dd> |
586 state to be worked on (bytearray) |
682 state to be worked on |
587 </dd> |
683 </dd> |
588 <dt><i>isInv</i></dt> |
684 <dt><i>isInv</i> (bool)</dt> |
589 <dd> |
685 <dd> |
590 flag indicating an inverse operation (boolean) |
686 flag indicating an inverse operation |
591 </dd> |
687 </dd> |
592 </dl> |
688 </dl> |
593 <dl> |
689 <dl> |
594 <dt>Return:</dt> |
690 <dt>Return:</dt> |
595 <dd> |
691 <dd> |
596 modified state (bytearray) |
692 modified state |
|
693 </dd> |
|
694 </dl> |
|
695 <dl> |
|
696 <dt>Return Type:</dt> |
|
697 <dd> |
|
698 bytearray |
597 </dd> |
699 </dd> |
598 </dl> |
700 </dl> |
599 <a NAME="AES.__subBytes" ID="AES.__subBytes"></a> |
701 <a NAME="AES.__subBytes" ID="AES.__subBytes"></a> |
600 <h4>AES.__subBytes</h4> |
702 <h4>AES.__subBytes</h4> |
601 <b>__subBytes</b>(<i>state, isInv</i>) |
703 <b>__subBytes</b>(<i>state, isInv</i>) |
604 Private method to substitute all the values from the state with the |
706 Private method to substitute all the values from the state with the |
605 value in the SBox using the state value as index for the SBox. |
707 value in the SBox using the state value as index for the SBox. |
606 </p> |
708 </p> |
607 <dl> |
709 <dl> |
608 |
710 |
609 <dt><i>state</i></dt> |
711 <dt><i>state</i> (bytearray)</dt> |
610 <dd> |
712 <dd> |
611 state to be worked on (bytearray) |
713 state to be worked on |
612 </dd> |
714 </dd> |
613 <dt><i>isInv</i></dt> |
715 <dt><i>isInv</i> (bool)</dt> |
614 <dd> |
716 <dd> |
615 flag indicating an inverse operation (boolean) |
717 flag indicating an inverse operation |
616 </dd> |
718 </dd> |
617 </dl> |
719 </dl> |
618 <dl> |
720 <dl> |
619 <dt>Return:</dt> |
721 <dt>Return:</dt> |
620 <dd> |
722 <dd> |
621 modified state (bytearray) |
723 modified state |
|
724 </dd> |
|
725 </dl> |
|
726 <dl> |
|
727 <dt>Return Type:</dt> |
|
728 <dd> |
|
729 bytearray |
622 </dd> |
730 </dd> |
623 </dl> |
731 </dl> |
624 <a NAME="AES.decrypt" ID="AES.decrypt"></a> |
732 <a NAME="AES.decrypt" ID="AES.decrypt"></a> |
625 <h4>AES.decrypt</h4> |
733 <h4>AES.decrypt</h4> |
626 <b>decrypt</b>(<i>iput, key, size</i>) |
734 <b>decrypt</b>(<i>iput, key, size</i>) |
629 Public method to decrypt a 128 bit input block against the given key |
737 Public method to decrypt a 128 bit input block against the given key |
630 of size specified. |
738 of size specified. |
631 </p> |
739 </p> |
632 <dl> |
740 <dl> |
633 |
741 |
634 <dt><i>iput</i></dt> |
742 <dt><i>iput</i> (bytearray)</dt> |
635 <dd> |
743 <dd> |
636 input data (bytearray) |
744 input data |
637 </dd> |
745 </dd> |
638 <dt><i>key</i></dt> |
746 <dt><i>key</i> (bytes or bytearray)</dt> |
639 <dd> |
747 <dd> |
640 key to be used (bytes or bytearray) |
748 key to be used |
641 </dd> |
749 </dd> |
642 <dt><i>size</i></dt> |
750 <dt><i>size</i> (int)</dt> |
643 <dd> |
751 <dd> |
644 key size (16, 24 or 32) |
752 key size (16, 24 or 32) |
645 </dd> |
753 </dd> |
646 </dl> |
754 </dl> |
647 <dl> |
755 <dl> |
648 <dt>Return:</dt> |
756 <dt>Return:</dt> |
649 <dd> |
757 <dd> |
650 decrypted data (bytes) |
758 decrypted data |
|
759 </dd> |
|
760 </dl> |
|
761 <dl> |
|
762 <dt>Return Type:</dt> |
|
763 <dd> |
|
764 bytes |
651 </dd> |
765 </dd> |
652 </dl> |
766 </dl> |
653 <dl> |
767 <dl> |
654 |
768 |
655 <dt>Raises <b>ValueError</b>:</dt> |
769 <dt>Raises <b>ValueError</b>:</dt> |
665 Public method to encrypt a 128 bit input block against the given key |
779 Public method to encrypt a 128 bit input block against the given key |
666 of size specified. |
780 of size specified. |
667 </p> |
781 </p> |
668 <dl> |
782 <dl> |
669 |
783 |
670 <dt><i>iput</i></dt> |
784 <dt><i>iput</i> (bytearray)</dt> |
671 <dd> |
785 <dd> |
672 input data (bytearray) |
786 input data |
673 </dd> |
787 </dd> |
674 <dt><i>key</i></dt> |
788 <dt><i>key</i> (bytes or bytearray)</dt> |
675 <dd> |
789 <dd> |
676 key to be used (bytes or bytearray) |
790 key to be used |
677 </dd> |
791 </dd> |
678 <dt><i>size</i></dt> |
792 <dt><i>size</i> (int)</dt> |
679 <dd> |
793 <dd> |
680 key size (16, 24 or 32) |
794 key size (16, 24 or 32) |
681 </dd> |
795 </dd> |
682 </dl> |
796 </dl> |
683 <dl> |
797 <dl> |
684 <dt>Return:</dt> |
798 <dt>Return:</dt> |
685 <dd> |
799 <dd> |
686 encrypted data (bytes) |
800 encrypted data |
|
801 </dd> |
|
802 </dl> |
|
803 <dl> |
|
804 <dt>Return Type:</dt> |
|
805 <dd> |
|
806 bytes |
687 </dd> |
807 </dd> |
688 </dl> |
808 </dl> |
689 <dl> |
809 <dl> |
690 |
810 |
691 <dt>Raises <b>ValueError</b>:</dt> |
811 <dt>Raises <b>ValueError</b>:</dt> |
744 <p> |
864 <p> |
745 Private method to extract a range of bytes from the input. |
865 Private method to extract a range of bytes from the input. |
746 </p> |
866 </p> |
747 <dl> |
867 <dl> |
748 |
868 |
749 <dt><i>inputData</i></dt> |
869 <dt><i>inputData</i> (bytes)</dt> |
750 <dd> |
870 <dd> |
751 input data (bytes) |
871 input data |
752 </dd> |
872 </dd> |
753 <dt><i>start</i></dt> |
873 <dt><i>start</i> (int)</dt> |
754 <dd> |
874 <dd> |
755 start index (integer) |
875 start index |
756 </dd> |
876 </dd> |
757 <dt><i>end</i></dt> |
877 <dt><i>end</i> (int)</dt> |
758 <dd> |
878 <dd> |
759 end index (integer) |
879 end index |
760 </dd> |
880 </dd> |
761 <dt><i>mode</i></dt> |
881 <dt><i>mode</i> (int)</dt> |
762 <dd> |
882 <dd> |
763 mode of operation (0, 1, 2) |
883 mode of operation (0, 1, 2) |
764 </dd> |
884 </dd> |
765 </dl> |
885 </dl> |
766 <dl> |
886 <dl> |
767 <dt>Return:</dt> |
887 <dt>Return:</dt> |
768 <dd> |
888 <dd> |
769 extracted bytes (bytearray) |
889 extracted bytes |
|
890 </dd> |
|
891 </dl> |
|
892 <dl> |
|
893 <dt>Return Type:</dt> |
|
894 <dd> |
|
895 bytearray |
770 </dd> |
896 </dd> |
771 </dl> |
897 </dl> |
772 <a NAME="AESModeOfOperation.decrypt" ID="AESModeOfOperation.decrypt"></a> |
898 <a NAME="AESModeOfOperation.decrypt" ID="AESModeOfOperation.decrypt"></a> |
773 <h4>AESModeOfOperation.decrypt</h4> |
899 <h4>AESModeOfOperation.decrypt</h4> |
774 <b>decrypt</b>(<i>cipherIn, originalsize, mode, key, size, IV</i>) |
900 <b>decrypt</b>(<i>cipherIn, originalsize, mode, key, size, IV</i>) |
776 <p> |
902 <p> |
777 Public method to perform the decryption operation. |
903 Public method to perform the decryption operation. |
778 </p> |
904 </p> |
779 <dl> |
905 <dl> |
780 |
906 |
781 <dt><i>cipherIn</i></dt> |
907 <dt><i>cipherIn</i> (bytes)</dt> |
782 <dd> |
908 <dd> |
783 data to be decrypted (bytes) |
909 data to be decrypted |
784 </dd> |
910 </dd> |
785 <dt><i>originalsize</i></dt> |
911 <dt><i>originalsize</i> (int)</dt> |
786 <dd> |
912 <dd> |
787 unencrypted string length (required for CBC) |
913 unencrypted string length (required for CBC) |
788 (integer) |
914 </dd> |
789 </dd> |
915 <dt><i>mode</i> (int)</dt> |
790 <dt><i>mode</i></dt> |
|
791 <dd> |
916 <dd> |
792 mode of operation (0, 1 or 2) |
917 mode of operation (0, 1 or 2) |
793 </dd> |
918 </dd> |
794 <dt><i>key</i></dt> |
919 <dt><i>key</i> (bytes)</dt> |
795 <dd> |
920 <dd> |
796 key to be used (bytes) |
921 key to be used |
797 </dd> |
922 </dd> |
798 <dt><i>size</i></dt> |
923 <dt><i>size</i> (int)</dt> |
799 <dd> |
924 <dd> |
800 length of the key (16, 24 or 32) |
925 length of the key (16, 24 or 32) |
801 </dd> |
926 </dd> |
802 <dt><i>IV</i></dt> |
927 <dt><i>IV</i> (bytearray)</dt> |
803 <dd> |
928 <dd> |
804 initialisation vector (bytearray) |
929 initialisation vector |
805 </dd> |
930 </dd> |
806 </dl> |
931 </dl> |
807 <dl> |
932 <dl> |
808 <dt>Return:</dt> |
933 <dt>Return:</dt> |
809 <dd> |
934 <dd> |
810 decrypted data (bytes) |
935 decrypted data |
|
936 </dd> |
|
937 </dl> |
|
938 <dl> |
|
939 <dt>Return Type:</dt> |
|
940 <dd> |
|
941 bytes |
811 </dd> |
942 </dd> |
812 </dl> |
943 </dl> |
813 <dl> |
944 <dl> |
814 |
945 |
815 <dt>Raises <b>ValueError</b>:</dt> |
946 <dt>Raises <b>ValueError</b>:</dt> |
824 <p> |
955 <p> |
825 Public method to perform the encryption operation. |
956 Public method to perform the encryption operation. |
826 </p> |
957 </p> |
827 <dl> |
958 <dl> |
828 |
959 |
829 <dt><i>inputData</i></dt> |
960 <dt><i>inputData</i> (bytes)</dt> |
830 <dd> |
961 <dd> |
831 data to be encrypted (bytes) |
962 data to be encrypted |
832 </dd> |
963 </dd> |
833 <dt><i>mode</i></dt> |
964 <dt><i>mode</i> (int)</dt> |
834 <dd> |
965 <dd> |
835 mode of operation (0, 1 or 2) |
966 mode of operation (0, 1 or 2) |
836 </dd> |
967 </dd> |
837 <dt><i>key</i></dt> |
968 <dt><i>key</i> (bytes)</dt> |
838 <dd> |
969 <dd> |
839 key to be used (bytes) |
970 key to be used |
840 </dd> |
971 </dd> |
841 <dt><i>size</i></dt> |
972 <dt><i>size</i> (int)</dt> |
842 <dd> |
973 <dd> |
843 length of the key (16, 24 or 32) |
974 length of the key (16, 24 or 32) |
844 </dd> |
975 </dd> |
845 <dt><i>IV</i></dt> |
976 <dt><i>IV</i> (bytearray)</dt> |
846 <dd> |
977 <dd> |
847 initialisation vector (bytearray) |
978 initialisation vector |
848 </dd> |
979 </dd> |
849 </dl> |
980 </dl> |
850 <dl> |
981 <dl> |
851 <dt>Return:</dt> |
982 <dt>Return:</dt> |
852 <dd> |
983 <dd> |
853 tuple with mode of operation, length of the input data and |
984 tuple with mode of operation, length of the input data and |
854 the encrypted data (integer, integer, bytes) |
985 the encrypted data |
|
986 </dd> |
|
987 </dl> |
|
988 <dl> |
|
989 <dt>Return Type:</dt> |
|
990 <dd> |
|
991 tuple of (int, int, bytes) |
855 </dd> |
992 </dd> |
856 </dl> |
993 </dl> |
857 <dl> |
994 <dl> |
858 |
995 |
859 <dt>Raises <b>ValueError</b>:</dt> |
996 <dt>Raises <b>ValueError</b>:</dt> |
894 <p> |
1037 <p> |
895 Module function to decrypt the given data with the given key. |
1038 Module function to decrypt the given data with the given key. |
896 </p> |
1039 </p> |
897 <dl> |
1040 <dl> |
898 |
1041 |
899 <dt><i>key</i></dt> |
1042 <dt><i>key</i> (bytes)</dt> |
900 <dd> |
1043 <dd> |
901 key to be used for decryption (bytes) |
1044 key to be used for decryption |
902 </dd> |
1045 </dd> |
903 <dt><i>data</i></dt> |
1046 <dt><i>data</i> (bytes)</dt> |
904 <dd> |
1047 <dd> |
905 data to be decrypted (with initialization vector prepended) |
1048 data to be decrypted (with initialization vector prepended) |
906 (bytes) |
1049 </dd> |
907 </dd> |
1050 <dt><i>mode</i> (int)</dt> |
908 <dt><i>mode</i></dt> |
|
909 <dd> |
1051 <dd> |
910 mode of operations (0, 1 or 2) |
1052 mode of operations (0, 1 or 2) |
911 </dd> |
1053 </dd> |
912 </dl> |
1054 </dl> |
913 <dl> |
1055 <dl> |
914 <dt>Return:</dt> |
1056 <dt>Return:</dt> |
915 <dd> |
1057 <dd> |
916 decrypted data (bytes) |
1058 decrypted data |
|
1059 </dd> |
|
1060 </dl> |
|
1061 <dl> |
|
1062 <dt>Return Type:</dt> |
|
1063 <dd> |
|
1064 bytes |
917 </dd> |
1065 </dd> |
918 </dl> |
1066 </dl> |
919 <dl> |
1067 <dl> |
920 |
1068 |
921 <dt>Raises <b>ValueError</b>:</dt> |
1069 <dt>Raises <b>ValueError</b>:</dt> |
933 <p> |
1081 <p> |
934 Module function to encrypt the given data with the given key. |
1082 Module function to encrypt the given data with the given key. |
935 </p> |
1083 </p> |
936 <dl> |
1084 <dl> |
937 |
1085 |
938 <dt><i>key</i></dt> |
1086 <dt><i>key</i> (bytes)</dt> |
939 <dd> |
1087 <dd> |
940 key to be used for encryption (bytes) |
1088 key to be used for encryption |
941 </dd> |
1089 </dd> |
942 <dt><i>data</i></dt> |
1090 <dt><i>data</i> (bytes)</dt> |
943 <dd> |
1091 <dd> |
944 data to be encrypted (bytes) |
1092 data to be encrypted |
945 </dd> |
1093 </dd> |
946 <dt><i>mode</i></dt> |
1094 <dt><i>mode</i> (int)</dt> |
947 <dd> |
1095 <dd> |
948 mode of operations (0, 1 or 2) |
1096 mode of operations (0, 1 or 2) |
949 </dd> |
1097 </dd> |
950 </dl> |
1098 </dl> |
951 <dl> |
1099 <dl> |
952 <dt>Return:</dt> |
1100 <dt>Return:</dt> |
953 <dd> |
1101 <dd> |
954 encrypted data prepended with the initialization vector (bytes) |
1102 encrypted data prepended with the initialization vector |
|
1103 </dd> |
|
1104 </dl> |
|
1105 <dl> |
|
1106 <dt>Return Type:</dt> |
|
1107 <dd> |
|
1108 bytes |
955 </dd> |
1109 </dd> |
956 </dl> |
1110 </dl> |
957 <dl> |
1111 <dl> |
958 |
1112 |
959 <dt>Raises <b>ValueError</b>:</dt> |
1113 <dt>Raises <b>ValueError</b>:</dt> |