public static void VerifyKnownSignature()
        {
            byte[] hash = "012d161304fa0c6321221516415813022320620c".HexToByteArray();
            byte[] sig;

            using (RSA key = RSAFactory.Create())
            {
                key.ImportParameters(TestData.RSA1024Params);
                RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);
                formatter.SetHashAlgorithm("SHA1");
                sig = formatter.CreateSignature(hash);

                byte[] expectedSig =
                    ("566390012605b1c4c01c3c2f91ce27d19476ab7131d9ee9cd1b811afb2be02ab6b498b862f0b2368ed6b09ccc9e0ec0d4f97a4f318f4f11" +
                     "ae882a1131012dc35d2e0b810a38e05da71d291e88b306605c9d34815091641370bd7db7a87b115bd427fcb9993bc5ba2bd518745aef80c" +
                     "a4557cfa1d827ff1610595d8eeb4c15073").HexToByteArray();
                Assert.Equal(expectedSig, sig);
            }

            using (RSA key = RSAFactory.Create()) // Test against a different instance
            {
                key.ImportParameters(TestData.RSA1024Params);
                RSAPKCS1SignatureDeformatter deformatter = new RSAPKCS1SignatureDeformatter(key);
                deformatter.SetHashAlgorithm("SHA1");
                bool verified = deformatter.VerifySignature(hash, sig);
                Assert.True(verified);

                sig[3] ^= 0xff;
                verified = deformatter.VerifySignature(hash, sig);
                Assert.False(verified);
            }
        }
        public static string RSAGetSignature(string PrivateKey, string Code)
        {
            RSACryptoServiceProvider key = new RSACryptoServiceProvider();

            key.FromXmlString(PrivateKey);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("SHA1");
            byte[] bytes   = Encoding.ASCII.GetBytes(Code);
            byte[] rgbHash = new SHA1Managed().ComputeHash(bytes);
            return(Convert.ToBase64String(formatter.CreateSignature(rgbHash)));
        }
        private static void StrongName(Stream stream, StrongNameKeyPair keyPair, uint headerLength, uint textSectionFileOffset, uint strongNameSignatureFileOffset, uint strongNameSignatureLength)
        {
            SHA1Managed hash = new SHA1Managed();

            using (CryptoStream cs = new CryptoStream(Stream.Null, hash, CryptoStreamMode.Write))
            {
                stream.Seek(0, SeekOrigin.Begin);
                byte[] buf = new byte[8192];
                HashChunk(stream, cs, buf, (int)headerLength);
                stream.Seek(textSectionFileOffset, SeekOrigin.Begin);
                HashChunk(stream, cs, buf, (int)(strongNameSignatureFileOffset - textSectionFileOffset));
                stream.Seek(strongNameSignatureLength, SeekOrigin.Current);
                HashChunk(stream, cs, buf, (int)(stream.Length - (strongNameSignatureFileOffset + strongNameSignatureLength)));
            }
            using (RSA rsa = keyPair.CreateRSA())
            {
                RSAPKCS1SignatureFormatter sign = new RSAPKCS1SignatureFormatter(rsa);
                byte[] signature = sign.CreateSignature(hash);
                Array.Reverse(signature);
                if (signature.Length != strongNameSignatureLength)
                {
                    throw new InvalidOperationException("Signature length mismatch");
                }
                stream.Seek(strongNameSignatureFileOffset, SeekOrigin.Begin);
                stream.Write(signature, 0, signature.Length);
            }

            // compute the PE checksum
            stream.Seek(0, SeekOrigin.Begin);
            int          count = (int)stream.Length / 4;
            BinaryReader br    = new BinaryReader(stream);
            long         sum   = 0;

            for (int i = 0; i < count; i++)
            {
                sum += br.ReadUInt32();
                int carry = (int)(sum >> 32);
                sum &= 0xFFFFFFFFU;
                sum += carry;
            }
            while ((sum >> 16) != 0)
            {
                sum = (sum & 0xFFFF) + (sum >> 16);
            }
            sum += stream.Length;

            // write the PE checksum, note that it is always at offset 0xD8 in the file
            ByteBuffer bb = new ByteBuffer(4);

            bb.Write((int)sum);
            stream.Seek(0xD8, SeekOrigin.Begin);
            bb.WriteTo(stream);
        }
Exemple #4
0
        public static byte[] CreateSignWithPrivateKey(byte[] msgin, X509Certificate2 pfx)
        {
            HashAlgorithm SHA1 = HashAlgorithm.Create("sha1");

            byte[] hashdata = SHA1.ComputeHash(msgin);//求数字指纹

            RSAPKCS1SignatureFormatter signCrt = new RSAPKCS1SignatureFormatter();

            signCrt.SetKey(pfx.PrivateKey);
            signCrt.SetHashAlgorithm("sha1");
            return(signCrt.CreateSignature(hashdata));
        }
Exemple #5
0
        public static byte[] SignData(byte[] hashOfDataToSign)
        {
            using (var rsa = new RSACryptoServiceProvider(2048))
            {
                rsa.PersistKeyInCsp = false;
                rsa.ImportParameters(_privateKey);

                var rsaFormatter = new RSAPKCS1SignatureFormatter(rsa);
                rsaFormatter.SetHashAlgorithm("SHA256");
                return(rsaFormatter.CreateSignature(hashOfDataToSign));
            }
        }
        public static bool VertifySignedByCertify(string input)
        {
            var                        data = Convert.FromBase64String(SignDataUseCertify(input));
            string                     path = @"D:\Ceetificate\1.p12";
            X509Certificate2           x509 = new X509Certificate2(path);
            RSAPKCS1SignatureFormatter sign = new RSAPKCS1SignatureFormatter();

            rsa.FromXmlString(x509.PublicKey.Key.ToXmlString(false));
            bool vertify = rsa.VerifyData(Encoding.Default.GetBytes(input), "SHA1", data);

            return(vertify);
        }
        public string SignData(byte[] sha256hashOfDataToSign, string key)
        {
            this.rsa.ImportRSAPrivateKey(this.ImportKey(key), out _);

            var rsaFormatter = new RSAPKCS1SignatureFormatter(this.rsa);

            rsaFormatter.SetHashAlgorithm("SHA256");

            var signature = rsaFormatter.CreateSignature(sha256hashOfDataToSign);

            return(Convert.ToBase64String(signature));
        }
Exemple #8
0
        public byte[] Sign(byte[] securedInput, object key)
        {
            using (var sha = HashAlgorithm)
            {
                var privateKey = Ensure.Type <AsymmetricAlgorithm>(key, "RsaUsingSha alg expects key to be of AsymmetricAlgorithm type.");

                var pkcs1 = new RSAPKCS1SignatureFormatter(privateKey);
                pkcs1.SetHashAlgorithm(hashMethod);

                return(pkcs1.CreateSignature(sha.ComputeHash(securedInput)));
            }
        }
 public static byte[] Sign(string data, string privateKey)
 {
     byte[] hash = Hash.Calculate(data);
     using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(keySize))
     {
         string privateKeyReadable = Encoding.UTF8.GetString(Convert.FromBase64String(privateKey));
         rsa.FromXmlString(privateKeyReadable);
         RSAPKCS1SignatureFormatter rsaFormatter = new RSAPKCS1SignatureFormatter(rsa);
         rsaFormatter.SetHashAlgorithm("SHA256");
         return(rsaFormatter.CreateSignature(hash));
     }
 }
Exemple #10
0
        public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
        {
            if (key == null)
            {
                throw new ArgumentNullException("RSAPKCS1SHA256SignatureDescription AsymmetricAlgorithm param: key is null");
            }

            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("SHA256");
            return(formatter);
        }
        public virtual byte[] Sign(RSA key)
        {
            string oid = this.GetOid(this.hashName);
            ASN1   tbs = this.ToBeSigned(oid);

            byte[] rgbHash = HashAlgorithm.Create(this.hashName).ComputeHash(tbs.GetBytes());
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm(this.hashName);
            byte[] signature = formatter.CreateSignature(rgbHash);
            return(this.Build(tbs, oid, signature));
        }
Exemple #12
0
        public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref string m_strEncryptedSignatureData)
        {
            RSACryptoServiceProvider key = new RSACryptoServiceProvider();

            key.FromXmlString(p_strKeyPrivate);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("MD5");
            byte[] inArray = formatter.CreateSignature(HashbyteSignature);
            m_strEncryptedSignatureData = Convert.ToBase64String(inArray);
            return(true);
        }
        /// <summary>
        /// 对MD5加密后的密文进行签名
        /// </summary>
        /// <param name="p_strKeyPrivate">私钥</param>
        /// <param name="m_strHashbyteSignature">MD5加密后的密文</param>
        /// <returns></returns>
        public static string SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature)
        {
            byte[] rgbHash = Convert.FromBase64String(m_strHashbyteSignature);
            RSACryptoServiceProvider key = new RSACryptoServiceProvider();

            key.FromXmlString(p_strKeyPrivate);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("MD5");
            byte[] inArray = formatter.CreateSignature(rgbHash);
            return(Convert.ToBase64String(inArray));
        }
        public string generatesignature(RSAParameters privatekey1)
        {
            var sha        = SHA256.Create();                                           //SHA256 ile daha sonra RSA ile şifreliyorum
            var hashedData = sha.ComputeHash(FileReadWrite.fileData);
            var rsa        = RSA.Create();

            rsa.ImportParameters(privatekey1);
            var signer = new RSAPKCS1SignatureFormatter(rsa);

            signer.SetHashAlgorithm("SHA256");
            return(Convert.ToBase64String(signer.CreateSignature(hashedData)));
        }
        public byte[] AssinarDados(byte[] hashDeDadosParaAssinar)
        {
            using (var rsa = new RSACryptoServiceProvider(2048))
            {
                rsa.PersistKeyInCsp = false;
                rsa.ImportParameters(_chavePrivada);
                var rsaFormato = new RSAPKCS1SignatureFormatter(rsa);
                rsaFormato.SetHashAlgorithm("SHA256");

                return(rsaFormato.CreateSignature(hashDeDadosParaAssinar));
            }
        }
        /// <summary>
        /// Generate a PKS1 Signature of SHA1 digest
        /// </summary>
        /// <param name="xParam"></param>
        /// <param name="xHash"></param>
        /// <returns></returns>
        public static byte[] SignatureGenerate(RSAParameters xParam, byte[] xHash)
        {
            RSACryptoServiceProvider   xRSACrypto    = new RSACryptoServiceProvider();
            RSAPKCS1SignatureFormatter xRSASigFormat = new RSAPKCS1SignatureFormatter();

            try { xRSACrypto.ImportParameters(xParam); }
            catch (Exception xerror) { throw xerror; }
            xRSASigFormat.SetHashAlgorithm("SHA1");
            xRSASigFormat.SetKey(xRSACrypto);
            try { return(xRSASigFormat.CreateSignature(xHash)); }
            catch { throw CryptoExcepts.CryptoSign; }
        }
Exemple #17
0
        public static byte[] Sign(byte[] data, RSAParameters privateKey)
        {
            using (var rsa = new RSACryptoServiceProvider(2048))
            {
                rsa.ImportParameters(privateKey);

                var rsaFormatter = new RSAPKCS1SignatureFormatter(rsa);
                rsaFormatter.SetHashAlgorithm("SHA256");

                return(rsaFormatter.CreateSignature(data));
            }
        }
Exemple #18
0
        public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref byte[] EncryptedSignatureData)
        {
            byte[] rgbHash = Convert.FromBase64String(m_strHashbyteSignature);
            RSACryptoServiceProvider key = new RSACryptoServiceProvider();

            key.FromXmlString(p_strKeyPrivate);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("MD5");
            EncryptedSignatureData = formatter.CreateSignature(rgbHash);
            return(true);
        }
 /// <summary>
 /// Returns the strong name signature
 /// </summary>
 /// <param name="snk">Strong name key</param>
 /// <param name="hashAlg">Hash algorithm</param>
 /// <param name="hash">Strong name hash of the .NET PE file</param>
 /// <returns>Strong name signature</returns>
 private byte[] GetStrongNameSignature(StrongNameKey snk, AssemblyHashAlgorithm hashAlg, byte[] hash)
 {
     using (var rsa = snk.CreateRSA())
     {
         var    rsaFmt   = new RSAPKCS1SignatureFormatter(rsa);
         string hashName = hashAlg.GetName() ?? AssemblyHashAlgorithm.SHA1.GetName();
         rsaFmt.SetHashAlgorithm(hashName);
         var snSig = rsaFmt.CreateSignature(hash);
         Array.Reverse(snSig);
         return(snSig);
     }
 }
        public static byte[] CreateSignature(byte[] data, RSAParameters rsaParams)
        {
            RSACryptoServiceProvider provider = new RSACryptoServiceProvider();

            provider.ImportParameters(rsaParams);

            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(provider);

            formatter.SetHashAlgorithm("SHA2");

            return(provider.SignData(data, "SHA256"));
        }
Exemple #21
0
        public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
        {
            if (key == null)
            {
                throw new ArgumentNullException("key");
            }

            var formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm(_algorithm);
            return(formatter);
        }
Exemple #22
0
        //RSA签名
        /// <summary>
        /// RSA签名
        /// </summary>
        /// <param name="hashbyteSignature">签名字节数据</param>
        /// <param name="privateKey">私钥</param>
        /// <returns>处理结果</returns>
        /// <exception cref="CryptographicException">The cryptographic service provider (CSP) cannot be acquired. </exception>
        /// <exception cref="CryptographicUnexpectedOperationException">The key is null.-or- The hash algorithm is null. </exception>
        public static byte[] SignatureBytes(this byte[] hashbyteSignature, string privateKey)
        {
            var rsa = new RSACryptoServiceProvider();

            rsa.FromXmlString(privateKey);
            var rsaFormatter = new RSAPKCS1SignatureFormatter(rsa);

            //设置签名的算法为MD5
            rsaFormatter.SetHashAlgorithm("MD5");
            //执行签名
            return(rsaFormatter.CreateSignature(hashbyteSignature));
        }
Exemple #23
0
        void a()
        {
            //加密解密用到的公钥与私钥 
            RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider();
            string privatekey = oRSA.ToXmlString(true);//私钥 
            string publickey = oRSA.ToXmlString(false);//公钥 
                                                       //这两个密钥需要保存下来 
            byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗"); //需要加密的数据 

            //公钥加密 
            RSACryptoServiceProvider oRSA1 = new RSACryptoServiceProvider();
            oRSA1.FromXmlString(publickey); //加密要用到公钥所以导入公钥 
            byte[] AOutput = oRSA1.Encrypt(messagebytes, false); //AOutput 加密以后的数据
                                                                 //私钥解密 
            RSACryptoServiceProvider oRSA2 = new RSACryptoServiceProvider();
            oRSA2.FromXmlString(privatekey);
            byte[] AInput = oRSA2.Decrypt(AOutput, false);
            string reslut = Encoding.ASCII.GetString(AInput);
// 2、用RSACryptoServiceProvider签名验签
   byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗");
            RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider();
            string privatekey = oRSA.ToXmlString(true);
            string publickey = oRSA.ToXmlString(false);

            //私钥签名 
            RSACryptoServiceProvider oRSA3 = new RSACryptoServiceProvider();
            oRSA3.FromXmlString(privatekey);
            byte[] AOutput = oRSA3.SignData(messagebytes, "SHA1");
            //公钥验证 
            RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider();
            oRSA4.FromXmlString(publickey);
            bool bVerify = oRSA4.VerifyData(messagebytes, "SHA1", AOutput);


    //        3、用证书进行签名
    //因为一般证书的私钥是不可以导出的所以所以用第2种方法导入私钥的来进行签名行不通
byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗");
            string Path = @"D:Certificate1.P12";
            X509Certificate2 x509 = new X509Certificate2(Path, "12345678");
            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] hashbytes = sha1.ComputeHash(messagebytes); //对要签名的数据进行哈希 
            RSAPKCS1SignatureFormatter signe = new RSAPKCS1SignatureFormatter();
            signe.SetKey(x509.PrivateKey); //设置签名用到的私钥 
            signe.SetHashAlgorithm("SHA1"); //设置签名算法 
            byte[] reslut = signe.CreateSignature(hashbytes);


            //验签:与第2方法相同
           RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider();
            oRSA4.FromXmlString(x509.PublicKey.Key.ToXmlString(false));
            bool bVerify = oRSA4.VerifyData(messagebytes, "SHA1", reslut);
        }
Exemple #24
0
    protected void Page_Load(object sender, EventArgs e)
    {
        productName     = Server.UrlDecode(Request.QueryString["productName"]);
        OrderAmountText = decimal.Parse(Server.UrlDecode(Request.QueryString["orderAmount"]));
        productDesc     = Server.UrlDecode(Request.QueryString["productDesc"]);
        orderAmount     = Convert.ToInt32(OrderAmountText * 100).ToString();

        this.lab_ProductName.Text = productName;
        this.lab_OrderAmount.Text = OrderAmountText.ToString();
        this.lab_ProductDesc.Text = productDesc;

        //拼接字符串
        string signMsgVal = "";

        signMsgVal = appendParam(signMsgVal, "inputCharset", inputCharset);
        signMsgVal = appendParam(signMsgVal, "pageUrl", pageUrl);
        signMsgVal = appendParam(signMsgVal, "bgUrl", bgUrl);
        signMsgVal = appendParam(signMsgVal, "version", version);
        signMsgVal = appendParam(signMsgVal, "language", language);
        signMsgVal = appendParam(signMsgVal, "signType", signType);
        signMsgVal = appendParam(signMsgVal, "merchantAcctId", merchantAcctId);
        signMsgVal = appendParam(signMsgVal, "payerName", payerName);
        signMsgVal = appendParam(signMsgVal, "payerContactType", payerContactType);
        signMsgVal = appendParam(signMsgVal, "payerContact", payerContact);
        signMsgVal = appendParam(signMsgVal, "orderId", orderId);
        signMsgVal = appendParam(signMsgVal, "orderAmount", orderAmount);
        signMsgVal = appendParam(signMsgVal, "orderTime", orderTime);
        signMsgVal = appendParam(signMsgVal, "productName", productName);
        signMsgVal = appendParam(signMsgVal, "productNum", productNum);
        signMsgVal = appendParam(signMsgVal, "productId", productId);
        signMsgVal = appendParam(signMsgVal, "productDesc", productDesc);
        signMsgVal = appendParam(signMsgVal, "ext1", ext1);
        signMsgVal = appendParam(signMsgVal, "ext2", ext2);
        signMsgVal = appendParam(signMsgVal, "payType", payType);
        signMsgVal = appendParam(signMsgVal, "redoFlag", redoFlag);
        signMsgVal = appendParam(signMsgVal, "pid", pid);

        ///PKI加密
        ///编码方式UTF-8 GB2312  用户可以根据自己系统的编码选择对应的加密方式
        ///byte[] OriginalByte=Encoding.GetEncoding("GB2312").GetBytes(OriginalString);
        byte[]                     bytes  = System.Text.Encoding.UTF8.GetBytes(signMsgVal);
        X509Certificate2           cert   = new X509Certificate2(HttpContext.Current.Server.MapPath("~/99bill/99bill-rsa.pfx"), "fei580lwhui", X509KeyStorageFlags.MachineKeySet);
        RSACryptoServiceProvider   rsapri = (RSACryptoServiceProvider)cert.PrivateKey;
        RSAPKCS1SignatureFormatter f      = new RSAPKCS1SignatureFormatter(rsapri);

        byte[] result;
        f.SetHashAlgorithm("SHA1");
        SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();

        result  = sha.ComputeHash(bytes);
        signMsg = System.Convert.ToBase64String(f.CreateSignature(result)).ToString();
    }
Exemple #25
0
        private static byte[] GenerateSignatureRSASHA1(string signatureBase, string privateKey)
        {
            byte[] dataBuffer = Encoding.ASCII.GetBytes(signatureBase);

            using (SHA1CryptoServiceProvider sha1 = GenerateSha1Hash(dataBuffer))
                using (AsymmetricAlgorithm algorithm = new RSACryptoServiceProvider())
                {
                    algorithm.FromXmlString(privateKey);
                    RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(algorithm);
                    formatter.SetHashAlgorithm("MD5");
                    return(formatter.CreateSignature(sha1));
                }
        }
        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);
            AssertNotNull("CreateSignature(MD5)", signature);
        }
Exemple #27
0
        /// <summary>
        /// Calculate the signature of <paramref name="data"/>
        /// </summary>
        /// <param name="data">The data to sign</param>
        /// <param name="consumerSecret">The consumer secret</param>
        /// <param name="tokenSecret">The token secret</param>
        /// <returns>The signature</returns>
        public string CalculateSignature(byte[] data, string consumerSecret, string tokenSecret)
        {
            var signatureFormatter = new RSAPKCS1SignatureFormatter(_privateKey);

            signatureFormatter.SetHashAlgorithm("SHA1");
            using (var hasher = HashAlgorithm.Create("SHA1"))
            {
                Debug.Assert(hasher != null, "hasher != null");
                var hash      = hasher.ComputeHash(data);
                var signature = signatureFormatter.CreateSignature(hash);
                return(Convert.ToBase64String(signature));
            }
        }
        public static byte[] SignData(RSAParameters rsaParams, byte[] Data)
        {
            byte[] rgbHash = SHA1(Data);
            RSACryptoServiceProvider key = new RSACryptoServiceProvider();

            key.ImportParameters(rsaParams);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("SHA1");
            byte[] array = formatter.CreateSignature(rgbHash);
            Array.Reverse(array);
            return(array);
        }
Exemple #29
0
        /// <summary>
        /// Creates a counter signature, just like
        /// <c>sn -a IdentityPubKey.snk IdentityKey.snk SignaturePubKey.snk</c> can do.
        /// The public key <c>sn</c> prints is <paramref name="signaturePubKey"/>'s value.
        /// </summary>
        /// <param name="identityPubKey">Identity public key</param>
        /// <param name="identityKey">Identity strong name key pair</param>
        /// <param name="signaturePubKey">Signature public key</param>
        /// <returns>The counter signature</returns>
        public static byte[] CreateCounterSignature(StrongNamePublicKey identityPubKey, StrongNameKey identityKey, StrongNamePublicKey signaturePubKey)
        {
            var hash = AssemblyHash.Hash(signaturePubKey.CreatePublicKey(), identityPubKey.HashAlgorithm);

            using (var rsa = identityKey.CreateRSA()) {
                var rsaFmt      = new RSAPKCS1SignatureFormatter(rsa);
                string hashName = identityPubKey.HashAlgorithm.GetName();
                rsaFmt.SetHashAlgorithm(hashName);
                var snSig = rsaFmt.CreateSignature(hash);
                Array.Reverse(snSig);
                return(snSig);
            }
        }
        public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
        {
            if (key == null)
            {
                throw new Exception("Invalid key specified for RSAPKCS1SHA256SignatureDescription!");
            }

            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("SHA256");

            return(formatter);
        }
Exemple #31
0
        /// <inheritdoc />
        public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }
            key = GetSha2CompatibleKey(key);

            var formatter = new RSAPKCS1SignatureFormatter(key);

            formatter.SetHashAlgorithm("SHA256");
            return(formatter);
        }
        public static void VerifySignature_SHA256()
        {
            using (RSA rsa = RSAFactory.Create())
            {
                var formatter = new RSAPKCS1SignatureFormatter(rsa);
                var deformatter = new RSAPKCS1SignatureDeformatter(rsa);

                using (SHA256 alg = SHA256.Create())
                {
                    VerifySignature(formatter, deformatter, alg, "SHA256");
                    VerifySignature(formatter, deformatter, alg, "sha256");
                }
            }
        }
        public static void InvalidHashAlgorithm()
        {
            using (RSA rsa = RSAFactory.Create())
            {
                var formatter = new RSAPKCS1SignatureFormatter(rsa);
                var deformatter = new RSAPKCS1SignatureDeformatter(rsa);

                // Exception is deferred until VerifySignature
                formatter.SetHashAlgorithm("INVALIDVALUE");
                deformatter.SetHashAlgorithm("INVALIDVALUE");

                using (SHA1 alg = SHA1.Create())
                {
                    Assert.Throws<CryptographicUnexpectedOperationException>(() =>
                        VerifySignature(formatter, deformatter, alg, "INVALIDVALUE"));
                }
            }
        }
Exemple #34
0
 /// <summary>
 /// Generate a PKS1 Signature of SHA1 digest
 /// </summary>
 /// <param name="xParam"></param>
 /// <param name="xHash"></param>
 /// <returns></returns>
 public static byte[] SignatureGenerate(RSAParameters xParam, byte[] xHash)
 {
     RSACryptoServiceProvider xRSACrypto = new RSACryptoServiceProvider();
     RSAPKCS1SignatureFormatter xRSASigFormat = new RSAPKCS1SignatureFormatter();
     try { xRSACrypto.ImportParameters(xParam); }
     catch (Exception xerror) { throw xerror; }
     xRSASigFormat.SetHashAlgorithm("SHA1");
     xRSASigFormat.SetKey(xRSACrypto);
     try { return xRSASigFormat.CreateSignature(xHash); }
     catch { throw CryptoExcepts.CryptoSign; }
 }
        public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
        {
            if (key == null)
            {
                throw new ArgumentNullException("key");
            }

            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);
            formatter.SetHashAlgorithm("SHA256");
            return formatter;
        }
Exemple #36
0
 public MerchantApiKeyAuth(string merchantId, string userId, RSA privateKey)
 {
     this.merchantId = merchantId;
     this.userId = userId;
     signer = new RSAPKCS1SignatureFormatter(privateKey);
 }