question

Upvotes
Accepted
3 0 0 0

Error "module 'Crypto.Cipher.AES' has no attribute 'MODE_CCM'" in sqsQueue.py when subscribing to RDP newsAlerts

Error "module 'Crypto.Cipher.AES' has no attribute 'MODE_CCM'" pops up , in sqsQueue.py when subscribing to RDP newsAlerts

Curable by 'pip install pycryptodomex', and amending the sqsQueue.py as:

10: from Crypto.Cipher import AES

to

10: from Cryptodome.Cipher import AES

Could you please adjust the https://developers.refinitiv.com/refinitiv-data-platform/refinitiv-data-platform-apis/downloads "Quickstart and Python tutorials source code" accourdingly.

Or recommend an alternative solution.

rdp-apirefinitiv-data-platformaws
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@oleksiy.bondarenko1

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If so please can you click the 'Accept' text next to the appropriate reply. This will guide all community members who have a similar question.

Thanks,

AHS

Upvotes
Accepted
22k 58 14 21

pycryptodome was chosen since it is a fork of popular PyCrypto and a drop in replacement. It does not expose the module as Cryptodome.Cipher but as Crypto.Cipher.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
22k 58 14 21

Hi @oleksiy.bondarenko1,

Can you please elaborate your question - why do you need CCM? Both the News and Research alerts are encrypted using AES-GCM. The tutorial and the comment in the sample file state that it depends on pycryptodome module for decryption.

Does that not work? Thanks.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
3 0 0 0

Indeed

The error I get under default anaconda-packaged pycrypto 2.6.1 , on both linux and windows, since late 2019, is

AttributeError: module 'Crypto.Cipher.AES' has no attribute 'MODE_GCM'

from Crypto.Cipher import AES (this import is used in your sample code)

dir(AES)

Out[53]:

['AESCipher',

'MODE_CBC',

'MODE_CFB',

'MODE_CTR',

'MODE_ECB',

'MODE_OFB',

'MODE_OPENPGP',

'MODE_PGP',

'_AES',

...

So I need to pip install pycryptodome (or pycryptodomex)

from Cryptodome.Cipher import AES (need to change the import to this, i.e. Cryptodome)

dir(AES)

Out[55]:

['MODE_CBC',

'MODE_CCM',

'MODE_CFB',

'MODE_CTR',

'MODE_EAX',

'MODE_ECB',

'MODE_GCM',

...

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
22k 58 14 21

Well, the tutorial and the sample explicitly state that it uses pycryptodome.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
3 0 0 0

Then you can be as explicit, and have

from Cryptodome.Cipher import AES (rather than from Crypto.Cipher import AES )

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.