mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-13 14:40:54 +08:00
ECC: Second attempt at encoding the public string
This commit is contained in:
@ -91,8 +91,38 @@ Future<SshKey> generateSSHEccKeys({required String comment}) async {
|
|||||||
|
|
||||||
// FIXME: I need to learn to convert from the public key PEM format to ecdsa-sha2-nistp384
|
// FIXME: I need to learn to convert from the public key PEM format to ecdsa-sha2-nistp384
|
||||||
return SshKey(
|
return SshKey(
|
||||||
publicKey: publicPem,
|
publicKey: publicKeyString(publicKey, comment),
|
||||||
privateKey: privatePem,
|
privateKey: privatePem,
|
||||||
password: "",
|
password: "",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc5656
|
||||||
|
String publicKeyString(ECPublicKey publicKey, String comment) {
|
||||||
|
var publicPem = CryptoUtils.encodeEcPublicKeyToPem(publicKey);
|
||||||
|
|
||||||
|
print('public PEM');
|
||||||
|
print(publicPem);
|
||||||
|
print('\n');
|
||||||
|
|
||||||
|
var publicKeyBytes2 = CryptoUtils.getBytesFromPEMString(publicPem);
|
||||||
|
|
||||||
|
var publicKeyBytes = publicKey.Q!.getEncoded(false);
|
||||||
|
if (publicKeyBytes != publicKeyBytes2) {
|
||||||
|
print("THE BYTES ARE NOT EQAU~L");
|
||||||
|
}
|
||||||
|
print("HUURAY");
|
||||||
|
|
||||||
|
var data = BinaryLengthValue.encode([
|
||||||
|
BinaryLengthValue.fromString("ecdsa-sha2-nistp384"),
|
||||||
|
BinaryLengthValue(publicKeyBytes),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (comment.isNotEmpty) {
|
||||||
|
comment = comment.replaceAll('\r', ' ');
|
||||||
|
comment = comment.replaceAll('\n', ' ');
|
||||||
|
comment = ' $comment';
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'ecdsa-sha2-nistp384 ${base64.encode(data)}$comment';
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user