I am looking into https://github.com/str4d/ed25519-java library as well as some other libraries like BouncyCastle, but I am so far unsuccessful in generating a public key out from a private key. I am not interested in generating a key pair because I already have a private key and am interested in generating the corresponding public key only.
How derive ed25519 (eddsa) public key from private key using Java
4.8k views Asked by troy_achilies At
2
There are 2 answers
0
Judith Kahrer
On
If you want to avoid or can't use Bouncy Castle for some reason, then use Sun Crypto Service Provider instead (for Java 15 and later). Something like the following should work, where params is either NamedParameterSpec.Ed25519 or NamedParameterSpec.Ed448
public PublicKey getEdDSAPublicKeyFromPrivateKey(NamedParameterSpec params, byte[] privateKey) {
EdDSAOperations eddsaOperations = new EdDSAOperations(EdDSAParameters.get(InvalidAlgorithmParameterException::new, params));
EdECPoint edecPublicKeyPoint = eddsaOperations.computePublic(privateKey);
// Use KeyFactory to convert public point to public key
KeyFactory kf = KeyFactory.getInstance("EdDSA");
EdECPublicKeySpec pubSpec = new EdECPublicKeySpec(params, edecPublicKeyPoint);
return kf.generatePublic(pubSpec);
}
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in CRYPTOGRAPHY
- Secure Messaging Implementation in C#
- How to verify JWS (x5c chain) is signed by apple using Jose
- How to Safely Use Crypto.subtle Property for Local Testing Without Security Risks?
- OpenSSL3.0 RSA Signature Verification in C
- npm install tulind in my crypto server side
- how i need place arg in code for funtion send?
- Mbed TLS: in-place en-/decryption for OAEP doesn't seem to work
- Cannot test cryptographic performance using crypto_aesni_mb
- Installation Private Blockchain
- Encountered this error while implementing NTT cpp code: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
- Cryptography Notion - Diffie-Hellmann
- Hash password with another password
- How to convert CryptAcquireContext to .NET 8 using System.Security.Cryptography methods
- Error "Cannot find module 'crypto'" in WalletConnect module
- Why do some cryptographic signature npm packages (like superdilithium) convert text to an array of integers before signing?
Related Questions in ED25519
- The problem of invalid signature when I am posting data
- How to use Ed25519 / Curve25519 with SpringBoot for JWK, JWE, JWS and JWT security?
- ssh picking wrong private key even after config file change
- How to create signature Ed25519 in java
- how to import ed25519 root ca into Keychain Access MacOS?
- Encoding a Ed25519 Public Key to SSH format in Java
- Convert X25519 to Ed25519 in curve25519-dalek
- Derive same X25519 public from either Ed25519-public or Ed25519-secret
- Generate an Ed25519 public key in OpenSSL - without hashing and clamping
- How can I extract the 32 byte ED25519 public key from a PEM file? And how can I create a public PEM file from the 32 bytes key?
- Reading HEX formatted private key back into OpenSSL
- Restricted Python in Zope - Unauthorized Error
- Generate Ed25519 keys in Java
- Verify digital signature signed using ED25519
- how to use ecdsa and ecdh with only one keypair (p256)
Related Questions in EDDSA
- Why Does Iden3 Use 253-bit Slots for Claims
- Encoding a Ed25519 Public Key to SSH format in Java
- Error getting fingerprint of PGP PublicKey, UserIDs is empty
- How to decode and verify EdDSA JWT in Spring Security
- Signing a file using JWT with ed25519 encryption key
- Adding support for ED25519 to Apache MINA sshd. How to achieve this?
- Crypto.sign() function to sign a message with given private key
- Sign a message with EdDSA algorithm in Javascript to get JWT
- Receiving "TypeError: sign() missing 1 required positional argument: 'algorithm'" with python PyJWT
- How to verify jwt token in spring boot?
- Decrypt RC8032 PGP with Bouncy Castle .NET
- Bouncy castle - how to rebuild Public key from EdDSA
- Creating a JWT using EdDSA/Ed25519 algorithm in C++
- How to decide publicKey is raw bits or encoded and is private key is always pkcs8 encoded?
- How derive ed25519 (eddsa) public key from private key using Java
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Using Bouncy Castle (BC) as crypto provider library is always a good choice, and they have a "build in" support for deriving the public key from an existing private key. Please keep in mind that BC does not work with a Private or Public key but instead with Ed25519PrivateKeyParameters and Ed25519PublicKeyParameters but as you can see it's very easy to get them from the encoded keys.
The full program is a little bit longer to prove that the rebuild public key is been able to verify a signature generated by its corresponding private key. Therefore, the main part of the program is to generate and verify a ED25519 signature.
Those two lines are doing what you are asking:
The following lines are verifying the signature with the rebuild public key successfully.
output:
Security warning: the code does not have any exception handling and is for educational purpose only.
code: