SSH Private Key: Try formats supported by ssh_key

This commit is contained in:
Vishesh Handa
2020-11-15 00:43:45 +01:00
parent 3b4c257afc
commit f821fc73e1
2 changed files with 33 additions and 7 deletions

View File

@ -1,11 +1,11 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'package:crypton/crypton.dart';
import 'package:isolate/isolate_runner.dart'; import 'package:isolate/isolate_runner.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import 'package:ssh_key/ssh_key.dart' as ssh_key; import 'package:ssh_key/ssh_key.dart' as ssh_key;
import 'package:crypton/crypton.dart';
import 'package:gitjournal/error_reporting.dart'; import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/ssh/binary_length_value.dart'; import 'package:gitjournal/ssh/binary_length_value.dart';
import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/utils/logger.dart';
@ -25,22 +25,32 @@ class RsaKeyPair {
this.publicKey = RSAPublicKey(key.modulus, key.exponent); this.publicKey = RSAPublicKey(key.modulus, key.exponent);
} }
} catch (e) { } catch (e) {
// Ignore print(e);
} }
if (publicKey == null) { if (publicKey == null) {
try { try {
this.publicKey = RSAPublicKey.fromString(publicKey); this.publicKey = RSAPublicKey.fromString(publicKey);
} catch (e) { } catch (e) {
// Ignore print(e);
} }
} }
try {
var key = ssh_key.privateKeyDecode(privateKey);
if (key is ssh_key.RSAPrivateKeyWithInfo) {
this.privateKey =
RSAPrivateKey(key.modulus, key.exponent, key.p, key.q);
}
} catch (e) {
print(e);
}
if (privateKey == null) { if (privateKey == null) {
try { try {
this.privateKey = RSAPrivateKey.fromPEM(privateKey); this.privateKey = RSAPrivateKey.fromPEM(privateKey);
} catch (e) { } catch (e) {
// Ignore print(e);
} }
} }
@ -48,7 +58,7 @@ class RsaKeyPair {
try { try {
this.privateKey = RSAPrivateKey.fromString(privateKey); this.privateKey = RSAPrivateKey.fromString(privateKey);
} catch (e) { } catch (e) {
// Ignore print(e);
} }
} }
} }

View File

@ -49,7 +49,6 @@ AEQwc1bG+Z/Gc1Fd8DncgxyhKSQzLsfWroTnIn8wsnmhPJtaZWNuT5BJa8GhnzX0
expect(pair.publicKeyString(), publicKeySingleLine); expect(pair.publicKeyString(), publicKeySingleLine);
}); });
/*
var privateOpenSshKey = '''-----BEGIN OPENSSH PRIVATE KEY----- var privateOpenSshKey = '''-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAnSgRJuxDPuTAyUQoGTF+tmA/7kT3FPg5DtM4RbcinIteCbkUWOoA NhAAAAAwEAAQAAAYEAnSgRJuxDPuTAyUQoGTF+tmA/7kT3FPg5DtM4RbcinIteCbkUWOoA
@ -128,5 +127,22 @@ gsiY5pDTPJqEiGrO4wwz0Hj5Pn9cFl2l3zN1/HUSzNszuyIvZflI7HHWcguYXH9E
FaG9LapMZjfIj7QTmJCqRpeOaSjoQx0a2Rtcgv7uo4haC502mYMcbhxllJWY4g0/ FaG9LapMZjfIj7QTmJCqRpeOaSjoQx0a2Rtcgv7uo4haC502mYMcbhxllJWY4g0/
0Shlq/1WGhnWLu8x+570q3eE9kF11Rpq95lSTdfP3RRPa43403Ld 0Shlq/1WGhnWLu8x+570q3eE9kF11Rpq95lSTdfP3RRPa43403Ld
-----END RSA PRIVATE KEY-----'''; -----END RSA PRIVATE KEY-----''';
*/
test('Should read privateOpenSshKey', () async {
var pair = RsaKeyPair.fromStrings(
publicKey: '',
privateKey: privateOpenSshKey,
);
expect(pair.privateKeyString().isNotEmpty, true);
});
test('Should read privateRsaKey', () async {
var pair = RsaKeyPair.fromStrings(
publicKey: '',
privateKey: privateRsaKey,
);
expect(pair.privateKeyString().isNotEmpty, true);
}, skip: true);
} }