Skip to content

Commit d676d16

Browse files
author
Roland Hedberg
committed
Move from Crypto to Cryptodome
1 parent 4ed153c commit d676d16

File tree

13 files changed

+65
-51
lines changed

13 files changed

+65
-51
lines changed

script/jwk_create.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python
22
import json
3-
from Crypto.PublicKey import RSA
3+
from Cryptodome.PublicKey import RSA
44
import argparse
55
import os
66
from jwkest.jwk import RSAKey

src/jwkest/PBKDF2.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@
8181
from random import randint
8282

8383
try:
84-
# Use PyCrypto (if available)
85-
from Crypto.Hash import HMAC, SHA as SHA1
86-
84+
# Use PyCryptoDome (if available)
85+
from Cryptodome.Hash import HMAC
86+
from Cryptodome.Hash import SHA as SHA1
8787
except ImportError:
8888
# PyCrypto not available. Use the Python standard library.
8989
import hmac as HMAC

src/jwkest/aes_gcm.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,20 @@
2323
"""
2424
from __future__ import print_function
2525
from __future__ import division
26+
2627
try:
2728
from builtins import str
2829
from builtins import hex
2930
from builtins import range
3031
from builtins import object
3132
except ImportError:
3233
pass
33-
#from past.utils import old_div
34+
# from past.utils import old_div
3435

35-
from Crypto.Cipher import AES
36-
from Crypto.Util import Counter
37-
from Crypto.Util.number import long_to_bytes, bytes_to_long
36+
from Cryptodome.Cipher import AES
37+
from Cryptodome.Util import Counter
38+
from Cryptodome.Util.number import bytes_to_long
39+
from Cryptodome.Util.number import long_to_bytes
3840

3941

4042
# GF(2^128) defined by 1 + a + a^2 + a^7 + a^128
@@ -74,8 +76,8 @@ def __init__(self, master_key):
7476
self.change_key(master_key)
7577

7678
def change_key(self, master_key):
77-
#RLB: Need to allow 192-, 256-bit keys
78-
#if master_key >= (1 << 128):
79+
# RLB: Need to allow 192-, 256-bit keys
80+
# if master_key >= (1 << 128):
7981
# raise InvalidInputException('Master key should be 128-bit')
8082

8183
self._master_key = long_to_bytes(master_key, 16)
@@ -146,7 +148,7 @@ def encrypt(self, init_value, plaintext, auth_data=b''):
146148

147149
if 0 != len_plaintext % 16:
148150
padded_plaintext = plaintext + \
149-
b'\x00' * (16 - len_plaintext % 16)
151+
b'\x00' * (16 - len_plaintext % 16)
150152
else:
151153
padded_plaintext = plaintext
152154
ciphertext = aes_ctr.encrypt(padded_plaintext)[:len_plaintext]
@@ -157,7 +159,7 @@ def encrypt(self, init_value, plaintext, auth_data=b''):
157159
auth_tag = self.__ghash(auth_data, ciphertext)
158160
# print 'GHASH\t', hex(auth_tag)
159161
auth_tag ^= bytes_to_long(self._aes_ecb.encrypt(
160-
long_to_bytes((init_value << 32) | 1, 16)))
162+
long_to_bytes((init_value << 32) | 1, 16)))
161163

162164
# assert len(ciphertext) == len(plaintext)
163165
assert auth_tag < (1 << 128)
@@ -171,8 +173,8 @@ def decrypt(self, init_value, ciphertext, auth_tag, auth_data=b''):
171173

172174
if auth_tag != self.__ghash(
173175
auth_data, ciphertext) ^ bytes_to_long(
174-
self._aes_ecb.encrypt(
175-
long_to_bytes((init_value << 32) | 1, 16))):
176+
self._aes_ecb.encrypt(
177+
long_to_bytes((init_value << 32) | 1, 16))):
176178
raise InvalidTagException
177179

178180
len_ciphertext = len(ciphertext)
@@ -186,7 +188,7 @@ def decrypt(self, init_value, ciphertext, auth_tag, auth_data=b''):
186188

187189
if 0 != len_ciphertext % 16:
188190
padded_ciphertext = ciphertext + \
189-
b'\x00' * (16 - len_ciphertext % 16)
191+
b'\x00' * (16 - len_ciphertext % 16)
190192
else:
191193
padded_ciphertext = ciphertext
192194
plaintext = aes_ctr.decrypt(padded_ciphertext)[:len_ciphertext]

src/jwkest/aes_key_wrap.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@
1616
PyCrypto's AES.
1717
"""
1818
from __future__ import division
19-
from Crypto.Cipher.AES import MODE_ECB
2019

2120
try:
2221
from builtins import hex
2322
from builtins import range
2423
except ImportError:
2524
pass
25+
2626
import struct
27-
from Crypto.Cipher import AES
27+
from Cryptodome.Cipher.AES import MODE_ECB
28+
from Cryptodome.Cipher import AES
2829

2930
QUAD = struct.Struct('>Q')
3031

src/jwkest/ecc.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@
66
from __future__ import absolute_import
77
from __future__ import division
88

9-
from Crypto.Util.number import long_to_bytes, bytes_to_long
10-
from jwkest.elliptic import inv, mulp, sign_bit, y_from_x, muladdp
9+
from Cryptodome.Util.number import long_to_bytes
10+
from Cryptodome.Util.number import bytes_to_long
11+
from jwkest.elliptic import inv
12+
from jwkest.elliptic import mulp
13+
from jwkest.elliptic import sign_bit
14+
from jwkest.elliptic import muladdp
15+
from jwkest.elliptic import y_from_x
1116
from jwkest.curves import get_curve
1217
from random import getrandbits
1318
from math import ceil

src/jwkest/elliptic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,8 @@ def y_from_x(x, p, q, n, sign):
349349

350350

351351
if __name__ == "__main__":
352-
from Crypto.Random.random import randint
353-
from Crypto.Util.number import getPrime
352+
from Cryptodome.Random.random import randint
353+
from Cryptodome.Util.number import getPrime
354354
import time
355355

356356
t = time.time()

src/jwkest/extra.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
#from past.utils import old_div
77
from math import ceil
88
from struct import pack, unpack
9-
from Crypto.Cipher import AES
10-
from Crypto.Hash import SHA256
11-
from Crypto.Hash import SHA384
12-
from Crypto.Hash import SHA512
13-
from Crypto.Hash import HMAC
9+
from Cryptodome.Cipher import AES
10+
from Cryptodome.Hash import SHA256
11+
from Cryptodome.Hash import SHA384
12+
from Cryptodome.Hash import SHA512
13+
from Cryptodome.Hash import HMAC
1414

1515

1616
LENMET = {

src/jwkest/jwe.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
import zlib
1212
import six
1313

14-
from Crypto import Random
15-
from Crypto.Hash import SHA
16-
from Crypto.Util.number import bytes_to_long
17-
from Crypto.Util.number import long_to_bytes
18-
from Crypto.Cipher import PKCS1_v1_5
19-
from Crypto.Cipher import PKCS1_OAEP
14+
from Cryptodome import Random
15+
from Cryptodome.Hash import SHA
16+
from Cryptodome.Util.number import bytes_to_long
17+
from Cryptodome.Util.number import long_to_bytes
18+
from Cryptodome.Cipher import PKCS1_v1_5
19+
from Cryptodome.Cipher import PKCS1_OAEP
2020

2121
from jwkest import b64d
2222
from jwkest import b64e

src/jwkest/jwk.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88

99
from binascii import a2b_base64
1010

11-
from Crypto.PublicKey import RSA
12-
from Crypto.PublicKey.RSA import importKey
13-
from Crypto.PublicKey.RSA import RsaKey
14-
from Crypto.Util.asn1 import DerSequence
11+
from Cryptodome.PublicKey import RSA
12+
from Cryptodome.PublicKey.RSA import importKey
13+
from Cryptodome.PublicKey.RSA import RsaKey
14+
from Cryptodome.Util.asn1 import DerSequence
1515

1616
from requests import request
1717

src/jwkest/jws.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
import logging
1515

1616
import struct
17-
from Crypto.Hash import SHA256
18-
from Crypto.Hash import SHA384
19-
from Crypto.Hash import SHA512
20-
from Crypto.Hash import HMAC
21-
from Crypto.Signature import PKCS1_v1_5
22-
from Crypto.Signature import PKCS1_PSS
23-
from Crypto.Util.number import bytes_to_long
17+
from Cryptodome.Hash import SHA256
18+
from Cryptodome.Hash import SHA384
19+
from Cryptodome.Hash import SHA512
20+
from Cryptodome.Hash import HMAC
21+
from Cryptodome.Signature import PKCS1_v1_5
22+
from Cryptodome.Signature import PKCS1_PSS
23+
from Cryptodome.Util.number import bytes_to_long
2424
import sys
2525

2626
from jwkest import b64d

0 commit comments

Comments
 (0)