private byte[] sign(byte[] message) { if (certificate.PrivateKey == null) { throw new Exception("a private key is required when generating RSA-SHA1 signatures."); } using (HashAlgorithm hasher = HashAlgorithm.Create("SHA1")) { RSAPKCS1SignatureFormatter signatureFormatter = new RSAPKCS1SignatureFormatter(); signatureFormatter.SetKey(certificate.PrivateKey); signatureFormatter.SetHashAlgorithm("SHA1"); byte[] hash = hasher.ComputeHash(message); return signatureFormatter.CreateSignature(hash); } }
private byte[] CreateSignatureHash (string hashName) { fmt = new RSAPKCS1SignatureFormatter (); // we need the private key RSA rsa = RSA.Create ("Mono.Security.Cryptography.RSAManaged"); // only available with Mono:: if (rsa == null) { rsa = RSA.Create (); } rsa.ImportParameters (AllTests.GetRsaKey (true)); fmt.SetKey (rsa); HashAlgorithm hash = HashAlgorithm.Create (hashName); byte[] data = new byte [(hash.HashSize >> 3)]; hash.ComputeHash (data); return fmt.CreateSignature (hash); }
public void SetKeyRSA () { fmt = new RSAPKCS1SignatureFormatter (); fmt.SetKey (rsa); }
public void CreateSignatureRSABadHash () { fmt = new RSAPKCS1SignatureFormatter (); // we need the private key fmt.SetKey (rsa); // null (bad ;-) byte[] hash = null; byte[] signature = fmt.CreateSignature (hash); }
public void CreateSignatureHashMD5 () { fmt = new RSAPKCS1SignatureFormatter (); byte[] data = new byte [16]; // we need the private key fmt.SetKey (rsa); // good MD5 HashAlgorithm hash = MD5.Create (); hash.ComputeHash (data); byte[] signature = fmt.CreateSignature (hash); Assert.IsNotNull (signature); }
public void CreateSignatureRSAMD5 () { fmt = new RSAPKCS1SignatureFormatter (); // we need the private key fmt.SetKey (rsa); // good MD5 fmt.SetHashAlgorithm ("MD5"); byte[] hash = new byte [16]; byte[] signature = fmt.CreateSignature (hash); Assert.IsNotNull (fmt); }
public void CreateSignatureRSASHA1BadLength () { fmt = new RSAPKCS1SignatureFormatter (); // we need the private key fmt.SetKey (rsa); // wrong length SHA1 fmt.SetHashAlgorithm ("SHA1"); byte[] hash = new byte [19]; byte[] signature = fmt.CreateSignature (hash); }
public void CreateSignatureNullHash () { fmt = new RSAPKCS1SignatureFormatter (); fmt.SetKey (rsa); byte[] hash = null; byte[] signature = fmt.CreateSignature (hash); }
public void SetKeyNull () { fmt = new RSAPKCS1SignatureFormatter (); fmt.SetKey (null); }
/// <summary> /// Signiert einen Text mit dem angegebenen privaten Schlüssel. /// </summary> /// <param name="textToSign">Der zusignierende Text.</param> /// <param name="privateKey">Der private Schlüssel.</param> /// <returns></returns> public static string Sign(string textToSign, string privateKey) { //Initialisieren der Provider var rsaCryptoServiceProvider = new RSACryptoServiceProvider(); var rsaFormatter = new RSAPKCS1SignatureFormatter(rsaCryptoServiceProvider); System.Security.Cryptography.RSA rsa = System.Security.Cryptography.RSA.Create(); var encoding = new ASCIIEncoding(); var sha1 = new SHA1Managed(); //Zuweisen des Hashalgorithmus und des privaten Schlüssels rsaFormatter.SetHashAlgorithm("SHA1"); rsa.FromXmlString(privateKey); rsaFormatter.SetKey(rsa); //String nach Byte[] Konvertieren und die Signatur erstellen byte[] valueToHash = encoding.GetBytes(textToSign); byte[] signedValue = rsaFormatter.CreateSignature(sha1.ComputeHash(valueToHash)); return Convert.ToBase64String(signedValue); }