summary refs log tree commit diff
path: root/crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs')
-rw-r--r--crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs42
1 files changed, 15 insertions, 27 deletions
diff --git a/crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs b/crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs

index a918d3483..0ddd90773 100644 --- a/crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs +++ b/crypto/src/util/ssh/OpenSSHPrivateKeyUtil.cs
@@ -1,9 +1,5 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; + using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Nist; using Org.BouncyCastle.Asn1.Pkcs; @@ -16,17 +12,11 @@ using Org.BouncyCastle.Pkcs; namespace Org.BouncyCastle.Utilities.SSH { - public class OpenSSHPrivateKeyUtil + public static class OpenSshPrivateKeyUtilities { - private OpenSSHPrivateKeyUtil() - { - - } - - /** - * Magic value for proprietary OpenSSH private key. - **/ - static readonly byte[] AUTH_MAGIC = Strings.ToByteArray("openssh-key-v1\0"); // C string so null terminated + /// <summary>Magic value for proprietary OpenSSH private key.</summary> + /// <remarks>C string so null terminated.</remarks> + private static readonly byte[] AUTH_MAGIC = Strings.ToByteArray("openssh-key-v1\0"); /** * Encode a cipher parameters into an OpenSSH private key. @@ -38,9 +28,7 @@ namespace Org.BouncyCastle.Utilities.SSH public static byte[] EncodePrivateKey(AsymmetricKeyParameter parameters) { if (parameters == null) - { - throw new ArgumentException("parameters is null"); - } + throw new ArgumentNullException(nameof(parameters)); if (parameters is RsaPrivateCrtKeyParameters || parameters is ECPrivateKeyParameters) { @@ -76,7 +64,7 @@ namespace Org.BouncyCastle.Utilities.SSH { Ed25519PublicKeyParameters publicKeyParameters = ed25519PrivateKey.GeneratePublicKey(); - SSHBuilder builder = new SSHBuilder(); + SshBuilder builder = new SshBuilder(); builder.WriteBytes(AUTH_MAGIC); builder.WriteString("none"); // cipher name builder.WriteString("none"); // KDF name @@ -85,12 +73,12 @@ namespace Org.BouncyCastle.Utilities.SSH builder.U32(1); // Number of keys { - byte[] pkEncoded = OpenSSHPublicKeyUtil.EncodePublicKey(publicKeyParameters); + byte[] pkEncoded = OpenSshPublicKeyUtilities.EncodePublicKey(publicKeyParameters); builder.WriteBlock(pkEncoded); } { - SSHBuilder pkBuild = new SSHBuilder(); + SshBuilder pkBuild = new SshBuilder(); int checkint = CryptoServicesRegistrar.GetSecureRandom().NextInt(); pkBuild.U32((uint)checkint); @@ -120,10 +108,10 @@ namespace Org.BouncyCastle.Utilities.SSH /** * Parse a private key. - * <p> + * <p/> * This method accepts the body of the OpenSSH private key. * The easiest way to extract the body is to use PemReader, for example: - * <p> + * <p/> * byte[] blob = new PemReader([reader]).readPemObject().getContent(); * CipherParameters params = parsePrivateKeyBlob(blob); * @@ -187,7 +175,7 @@ namespace Org.BouncyCastle.Utilities.SSH } else { - SSHBuffer kIn = new SSHBuffer(AUTH_MAGIC, blob); + SshBuffer kIn = new SshBuffer(AUTH_MAGIC, blob); String cipherName = kIn.ReadString(); if (!"none".Equals(cipherName)) @@ -208,7 +196,7 @@ namespace Org.BouncyCastle.Utilities.SSH } // Burn off public key. - OpenSSHPublicKeyUtil.ParsePublicKey(kIn.ReadBlock()); + OpenSshPublicKeyUtilities.ParsePublicKey(kIn.ReadBlock()); byte[] privateKeyBlock = kIn.ReadPaddedBlock(); @@ -217,7 +205,7 @@ namespace Org.BouncyCastle.Utilities.SSH throw new InvalidOperationException("decoded key has trailing data"); } - SSHBuffer pkIn = new SSHBuffer(privateKeyBlock); + SshBuffer pkIn = new SshBuffer(privateKeyBlock); int check1 = pkIn.ReadU32(); int check2 = pkIn.ReadU32(); @@ -243,7 +231,7 @@ namespace Org.BouncyCastle.Utilities.SSH } else if (keyType.StartsWith("ecdsa")) { - DerObjectIdentifier oid = SSHNamedCurves.GetByName(Strings.FromByteArray(pkIn.ReadBlock())) ?? + DerObjectIdentifier oid = SshNamedCurves.GetByName(Strings.FromByteArray(pkIn.ReadBlock())) ?? throw new InvalidOperationException("OID not found for: " + keyType); X9ECParameters curveParams = NistNamedCurves.GetByOid(oid) ?? throw new InvalidOperationException("Curve not found for: " + oid);