How to create signature Ed25519 in java

120 Views Asked by At

I need to create a signature using Ed25519 by giving secret key as string and payload, which I use for binance api requests.

The problem is I found realisation below, from official binance java library, but it parses secret key from file and it is slow. I want to create a signature by giving secret key as string directly, without having files

PemReader pemReader = new PemReader(new FileReader(pathToSecretKeyFile));
PemObject pemObject = pemReader.readPemObject();
byte[] privateKeyBytes = pemObject.getContent();
Ed25519PrivateKeyParameters privateKey = (Ed25519PrivateKeyParameters)        PrivateKeyFactory.createKey(privateKeyBytes);
pemReader.close();

byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8);
Ed25519Signer signer = new Ed25519Signer();
signer.init(true, privateKey);
signer.update(dataBytes, 0, dataBytes.length);
byte[] signatureBytes = signer.generateSignature();
return Base64.getEncoder().encodeToString(signatureBytes);

UPDATE I replace fileReader with StringReader as proposed

    PemReader pemReader = new PemReader(new StringReader(secret)); // secret key MCow********************fasaIo
    PemObject pemObject = pemReader.readPemObject();
    byte[] privateKeyBytes = pemObject.getContent();

And I get that pemObject now is null. It throws on the last line "byte[] privateKeyBytes=pemObject.getContent();"

NullPointerException: Cannot invoke "org.bouncycastle.util.io.pem.PemObject.getContent()" because "pemObject" is null

0

There are 0 best solutions below