Add utility method to write public key

pull/140/head
Richard Körber 2023-05-07 11:29:55 +02:00
parent 5db82b1ad7
commit 22e8969b89
No known key found for this signature in database
GPG Key ID: AAB9FD19C78AA3E0
2 changed files with 30 additions and 0 deletions

View File

@ -21,6 +21,7 @@ import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PublicKey;
import java.security.SecureRandom;
import org.bouncycastle.jce.ECNamedCurveTable;
@ -123,4 +124,20 @@ public class KeyPairUtils {
}
}
/**
* Writes a {@link PublicKey} as PEM file.
*
* @param key
* {@link PublicKey}
* @param w
* {@link Writer} to write the PEM file to. The {@link Writer} is closed
* after use.
* @since 3.0.0
*/
public static void writePublicKey(PublicKey key, Writer w) throws IOException {
try (var jw = new JcaPEMWriter(w)) {
jw.writeObject(key);
}
}
}

View File

@ -140,6 +140,19 @@ public class KeyPairUtilsTest {
assertThat(pair).isNotSameAs(readPair);
assertThat(pair.getPublic().getEncoded()).isEqualTo(readPair.getPublic().getEncoded());
assertThat(pair.getPrivate().getEncoded()).isEqualTo(readPair.getPrivate().getEncoded());
// Write Public Key
String publicPem;
try (var out = new StringWriter()) {
KeyPairUtils.writePublicKey(pair.getPublic(), out);
publicPem = out.toString();
}
// Make sure PEM file is properly formatted
assertThat(publicPem).matches(
"-----BEGIN PUBLIC KEY-----[\\r\\n]+"
+ "([a-zA-Z0-9/+=]+[\\r\\n]+)+"
+ "-----END PUBLIC KEY-----[\\r\\n]*");
}
/**