Python Crypto Module - ValueError: An Ed25519 private key is 32 bytes long

1k Views Asked by At

I am using a GO Language script to generate private and public keys. This algorithm uses Ed25519. When I am reading the private keys using python crypto module I am receiving following error.

>>> import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
>>> pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read())
>>> pk

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/var/folders/yy/..../T/ipykernel_15095/3709883678.py in <module>
      1 import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
      2 
----> 3 pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read())
      4 
      5 pk

.../lib/python3.8/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py in from_private_bytes(cls, data)
     67             )
     68 
---> 69         return backend.ed25519_load_private_bytes(data)
     70 
     71     @abc.abstractmethod

.../lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/backend.py in ed25519_load_private_bytes(self, data)
   1858     def ed25519_load_private_bytes(self, data):
   1859         if len(data) != ed25519._ED25519_KEY_SIZE:
-> 1860             raise ValueError("An Ed25519 private key is 32 bytes long")
   1861 
   1862         utils._check_byteslike("data", data)

ValueError: An Ed25519 private key is 32 bytes long
1

There are 1 best solutions below

0
On

The following solution is generating results as expected for me

>>> import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
>>> pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read()[:32])
>>> pk

b'Yl0hNCRvnjlAavjfDTfsTKFGajh.......'