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