ed25519-java icon indicating copy to clipboard operation
ed25519-java copied to clipboard

ed25519,The value of the signature is wrong

Open imkos opened this issue 3 years ago • 0 comments

code:

import java.io.BufferedReader;
import java.io.FileReader;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.Signature;
import java.util.Base64;

import net.i2p.crypto.eddsa.Utils;
import net.i2p.crypto.eddsa.EdDSAEngine;
import net.i2p.crypto.eddsa.EdDSAPrivateKey;
import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable;
import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec;
import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec;

public class EdSignTest {
	// ed25519
	final static EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.ED_25519);

	public static void main(String[] args) throws Exception {
        byte[] ZERO_H = Utils.hexToBytes("39e6fb57062449a6a058f7117b3a3ac7e92fd23a6679bc23c882efe2cfb9b520d79a86ac2ebfe10add5e26bead8f6528e8d3b28785b2fe112fe3b78bac27787d");

		String data = "lexar{\"status\": true}BWTbpxar9GPX6yl7H6C5bClxaBFhdxgd1622015270";
		
		//Signature signature = new EdDSAEngine(MessageDigest.getInstance(spec.getHashAlgorithm()));
		EdDSAEngine signature = new EdDSAEngine(MessageDigest.getInstance(spec.getHashAlgorithm()));
		EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec(spec, ZERO_H); //new EdDSAPrivateKeySpec(privSeed, spec);
		PrivateKey sKey = new EdDSAPrivateKey(privKey);
		
		signature.initSign(sKey);
		byte[] msg = data.getBytes(StandardCharsets.UTF_8);
		System.out.println("msg.len:"+ msg.length);
		signature.update(msg);
		byte[] s = signature.sign();
		System.out.println("DATA_HEX : " + Utils.bytesToHex(s));
		String encodedString = Base64.getUrlEncoder().encodeToString(s);

		System.out.println("DATA : " + data);
		System.out.println("SIGN : " + encodedString);
	}
}

imkos avatar Jul 23 '21 03:07 imkos