From 2d1c67fc659aba6cf3afb03cd9e6d6ecb2e58d20 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 Date: Sat, 9 Sep 2023 21:59:23 +0200 Subject: [PATCH] Good rsa key ? --- .../backend/routes/users/MailConfirmation.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/dev/peerat/backend/routes/users/MailConfirmation.java b/src/dev/peerat/backend/routes/users/MailConfirmation.java index cc828bc..b575811 100644 --- a/src/dev/peerat/backend/routes/users/MailConfirmation.java +++ b/src/dev/peerat/backend/routes/users/MailConfirmation.java @@ -6,11 +6,13 @@ import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.URL; +import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; +import java.security.interfaces.RSAPublicKey; import java.util.Base64; import java.util.Map; import java.util.Base64.Encoder; @@ -124,8 +126,20 @@ public class MailConfirmation extends FormResponse { post("https://git-users.peerat.dev/api/v1/admin/users/", createUser); JSONObject sendKey = new JSONObject(); - System.out.println(new String(new byte[] {0,0,0,7})+"ssh-rsa "+new String(encoder.encode(pair.getPublic().getEncoded()))); - sendKey.put("key", new String(new byte[] {0,0,0,7})+"ssh-rsa "+new String(encoder.encode(pair.getPublic().getEncoded()))); + RSAPublicKey pub = (RSAPublicKey) pair.getPublic(); + byte[] exponent = pub.getPublicExponent().toByteArray(); + byte[] modulus = pub.getModulus().toByteArray(); + byte[] key = new byte[19+exponent.length+modulus.length]; + System.arraycopy(new byte[] {0,0,0,7,(byte)'s',(byte)'s',(byte)'h',(byte)'-',(byte)'r',(byte)'s',(byte)'a'}, 0, key, 0, 11); + byte[] exLength = ByteBuffer.allocate(4).putInt(exponent.length).array(); + byte[] modLength = ByteBuffer.allocate(4).putInt(modulus.length).array(); + System.arraycopy(exLength, 0, key, 11, 4); + System.arraycopy(exponent, 0, key, 14, exponent.length); + System.arraycopy(modLength, 0, key, 14+exponent.length, 4); + System.arraycopy(modulus, 0, key, 18+exponent.length, modulus.length); + + System.out.println("ssh-rsa "+new String(encoder.encode(key))); + sendKey.put("key", "ssh-rsa "+new String(encoder.encode(key))); sendKey.put("read_only", false); sendKey.put("title", "peer_at_code_auto_push_key_"+pseudo); post("https://git-users.peerat.dev/api/v1/admin/users/"+pseudo+"/keys", sendKey);