using System.Security.Cryptography; using BenchmarkDotNet.Attributes; using Renci.SshNet.Security; using Renci.SshNet.Security.Cryptography; namespace Renci.SshNet.Benchmarks.Security.Cryptography { [MemoryDiagnoser] public class RsaDigitalSignatureBenchmarks { private readonly RsaKey _key; private readonly byte[] _data; private readonly byte[] _signature; public RsaDigitalSignatureBenchmarks() { _data = new byte[128]; Random random = new(Seed: 12345); random.NextBytes(_data); using (var s = typeof(RsaDigitalSignatureBenchmarks).Assembly.GetManifestResourceStream("Renci.SshNet.Benchmarks.Data.Key.OPENSSH.RSA.txt")) { _key = (RsaKey)new PrivateKeyFile(s!).Key; } _signature = new RsaDigitalSignature(_key, HashAlgorithmName.SHA256).Sign(_data); } [Benchmark] public byte[] Sign() { return new RsaDigitalSignature(_key, HashAlgorithmName.SHA256).Sign(_data); } [Benchmark] public bool Verify() { return new RsaDigitalSignature(_key, HashAlgorithmName.SHA256).Verify(_data, _signature); } } }