signature/csharp/core/Signer.cs (87 lines of code) (raw):

/** * Signature Util for Darabonba. */ // This file is auto-generated, don't edit it. Thanks. using Org.BouncyCastle.Crypto.Macs; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace AlibabaCloud.DarabonbaSignatureUtil { public class Signer { /** * HmacSHA1 Signature * @param stringToSign string * @param secret string * @return signed bytes */ public static byte[] HmacSHA1Sign(string stringToSign, string secret) { return HmacSHA1SignByBytes(stringToSign, Encoding.UTF8.GetBytes(secret)); } /** * HmacSHA1 Signature * @param stringToSign string * @param secret bytes * @return signed bytes */ public static byte[] HmacSHA1SignByBytes(string stringToSign, byte[] secret) { byte[] signData; using (KeyedHashAlgorithm algorithm = CryptoConfig.CreateFromName("HMACSHA1") as KeyedHashAlgorithm) { algorithm.Key = secret; signData = algorithm.ComputeHash(Encoding.UTF8.GetBytes(stringToSign.ToCharArray())); } return signData; } /** * HmacSHA256 Signature * @param stringToSign string * @param secret string * @return signed bytes */ public static byte[] HmacSHA256Sign(string stringToSign, string secret) { return HmacSHA256SignByBytes(stringToSign, Encoding.UTF8.GetBytes(secret)); } /** * HmacSHA256 Signature * @param stringToSign string * @param secret bytes * @return signed bytes */ public static byte[] HmacSHA256SignByBytes(string stringToSign, byte[] secret) { byte[] signData; using (KeyedHashAlgorithm algorithm = CryptoConfig.CreateFromName("HMACSHA256") as KeyedHashAlgorithm) { algorithm.Key = secret; signData = algorithm.ComputeHash(Encoding.UTF8.GetBytes(stringToSign.ToCharArray())); } return signData; } /** * HmacSM3 Signature * @param stringToSign string * @param secret string * @return signed bytes */ public static byte[] HmacSM3Sign(string stringToSign, string secret) { return HmacSM3SignByBytes(stringToSign, Encoding.Default.GetBytes(secret)); } /** * HmacSM3 Signature * @param stringToSign string * @param secret bytes * @return signed bytes */ public static byte[] HmacSM3SignByBytes(string stringToSign, byte[] secret) { byte[] msg = Encoding.Default.GetBytes(stringToSign); byte[] key = secret; KeyParameter keyParameter = new KeyParameter(key); SM3Digest sm3 = new SM3Digest(); HMac mac = new HMac(sm3); mac.Init(keyParameter); mac.BlockUpdate(msg, 0, msg.Length); byte[] signData = new byte[mac.GetMacSize()]; mac.DoFinal(signData, 0); return signData; } /** * SHA256withRSA Signature * @param stringToSign string * @param secret string * @return signed bytes */ public static byte[] SHA256withRSASign(string stringToSign, string secret) { byte[] signData; using (var rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(secret); var rsaClear = new RSACryptoServiceProvider(); var paras = rsa.ExportParameters(true); rsaClear.ImportParameters(paras); using (var sha256 = new SHA256CryptoServiceProvider()) { signData = rsa.SignData(Encoding.UTF8.GetBytes(stringToSign), sha256); } } return signData; } /** * MD5 Signature * @param stringToSign string * @return signed bytes */ public static byte[] MD5Sign(string stringToSign) { return MD5SignForBytes(Encoding.UTF8.GetBytes(stringToSign.ToCharArray())); } /** * MD5 Signature * @param bytesToSign bytes * @return signed bytes */ public static byte[] MD5SignForBytes(byte[] bytesToSign) { MD5 md5 = MD5.Create(); byte[] signData = md5.ComputeHash(bytesToSign); return signData; } } }