public void InvalidStreamArrayArguments_Throws() { using (DSA dsa = DSAFactory.Create(1024)) { AssertExtensions.Throws <ArgumentNullException>("rgbHash", () => dsa.CreateSignature(null)); AssertExtensions.Throws <ArgumentNullException>("data", () => dsa.SignData((byte[])null, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentNullException>("data", () => dsa.SignData(null, 0, 0, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("offset", () => dsa.SignData(new byte[1], -1, 0, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("offset", () => dsa.SignData(new byte[1], 2, 0, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("count", () => dsa.SignData(new byte[1], 0, -1, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("count", () => dsa.SignData(new byte[1], 0, 2, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentNullException>("data", () => dsa.VerifyData((byte[])null, null, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentNullException>("data", () => dsa.VerifyData(null, 0, 0, null, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentNullException>("signature", () => dsa.VerifyData(new byte[1], null, HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("offset", () => dsa.VerifyData(new byte[1], -1, 0, new byte[1], HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("offset", () => dsa.VerifyData(new byte[1], 2, 0, new byte[1], HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("count", () => dsa.VerifyData(new byte[1], 0, -1, new byte[1], HashAlgorithmName.SHA1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("count", () => dsa.VerifyData(new byte[1], 0, 2, new byte[1], HashAlgorithmName.SHA1)); } }
/// <summary>デジタル署名を作成する</summary> /// <param name="data">デジタル署名を行なう対象データ</param> /// <returns>対象データに対してデジタル署名したデジタル署名部分のデータ</returns> public virtual byte[] Sign(byte[] data) { AsymmetricAlgorithm aa = this.AsymmetricAlgorithm; // デジタル署名 byte[] signedByte = null; if (aa is RSA) { // RSA RSA rsa = (RSA)aa; #if NET45 if (rsa is RSACryptoServiceProvider) { signedByte = ((RSACryptoServiceProvider)rsa).SignData(data, this.HashAlgorithmString); } // NET45にRSACng、RSAOpenSsl等は無し。 #else signedByte = rsa.SignData(data, this.HashAlgorithmName, this.Padding); #endif } else if (aa is DSA) { // DSA DSA dsa = (DSA)aa; signedByte = dsa.CreateSignature(data); } else { throw new NotImplementedException(PublicExceptionMessage.NOT_IMPLEMENTED); } return(signedByte); }
protected override void UseAfterDispose(DSA dsa, byte[] data, byte[] sig) { base.UseAfterDispose(dsa, data, sig); byte[] hash = new byte[20]; Assert.Throws <ObjectDisposedException>(() => dsa.CreateSignature(hash)); Assert.Throws <ObjectDisposedException>(() => dsa.VerifySignature(hash, sig)); }
public override byte[] CreateSignature(byte[] rgbHash) { if (dsa == null) { throw new CryptographicUnexpectedOperationException(Locale.GetText("missing key")); } return(dsa.CreateSignature(rgbHash)); }
public byte[] CreateSignature(ReadOnlySpan <byte> rgbHash, PgpHashAlgorithm hashAlgorithm) { byte[] ieeeSignature = dsa.CreateSignature(rgbHash.ToArray(), DSASignatureFormat.IeeeP1363FixedFieldConcatenation); var r = ieeeSignature.AsSpan(0, ieeeSignature.Length / 2); var s = ieeeSignature.AsSpan(ieeeSignature.Length / 2); byte[] pgpSignature = new byte[MPInteger.GetMPEncodedLength(r) + MPInteger.GetMPEncodedLength(s)]; MPInteger.TryWriteInteger(r, pgpSignature, out int rWritten); MPInteger.TryWriteInteger(s, pgpSignature.AsSpan(rWritten), out int _); return(pgpSignature); }
public static string EnDSA(this string data, string publickey) { DSA dsa = DSA.Create(); Byte[] result; dsa.FromXmlString(publickey); SHA1 sha1 = System.Security.Cryptography.SHA1.Create(); result = dsa.CreateSignature(sha1.ComputeHash(Convert.FromBase64String(data))); return(Convert.ToBase64String(result)); }
public static void DSADemo() { string keyString = "This is important...This is important...This is important..This is important"; DSA dsa = DSA.Create(); byte[] rgbHash = new byte[] { 59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135 }; byte[] rgbSignature = dsa.CreateSignature(rgbHash); bool result = dsa.VerifySignature(rgbHash, rgbSignature); byte[] data = Encoding.UTF8.GetBytes(keyString); }
private void MakeDSA() { var hash = SHA1.Create().ComputeHash(this._message); DSA dsa = DSACryptoServiceProvider.Create(); this._stopwatch.Start(); for (int i = 0; i < runs; i++) { _aux = dsa.CreateSignature(hash); } this._stopwatch.Stop(); prettyPrint("DSA sign"); this._stopwatch.Start(); for (int i = 0; i < runs; i++) { dsa.VerifySignature(hash, _aux); } this._stopwatch.Stop(); prettyPrint("DSA verify"); }
public static void ExportAfterDispose(bool importKey) { DSA key = importKey ? DSAFactory.Create(DSATestData.GetDSA1024Params()) : DSAFactory.Create(1024); byte[] hash = new byte[20]; // Ensure that the key got created, and then Dispose it. using (key) { try { key.CreateSignature(hash); } catch (PlatformNotSupportedException) when(!SupportsKeyGeneration) { } } Assert.Throws <ObjectDisposedException>(() => key.ExportParameters(false)); Assert.Throws <ObjectDisposedException>(() => key.ExportParameters(true)); Assert.Throws <ObjectDisposedException>(() => key.ImportParameters(DSATestData.GetDSA1024Params())); }
public override byte[] CreateSignature(byte[] rgbHash) => _impl.CreateSignature(rgbHash);