reading Ed25519 key from env variable to sign/verify a JWT

Viewed 33

I am trying to sign (and later verify) a JWT. The issue I have is that there will be multiple servers running and one can sign a JWT and others need to verify. So I can not internally generate a key pair. Our devops would generate the keys store them in a secrets manager and put them as an env variable. I am trying to read the env and create the private key object

My issue is that the key generated by

    ssh-keygen -t ed25519

-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIPtNTjzDd8/b8asuFRpkrmbmraj3xinurMHoTQFYUMLa
-----END PRIVATE KEY-----

Assuming I put this in an env variable env.key

how do I get the ed25519 key in ruby, neither of the below options seems to work.

#option 1
private_key =  RbNaCl::Signatures::Ed25519::SigningKey.new(env.key)

#option 2
private_key = RbNaCl::Signatures::Ed25519::SigningKey.new(Base64.decode64(env.key))

token = JWT.encode payload, private_key, 'ED25519'
0 Answers
Related