sdk/Common/Authentication/HmacSHA1Signature.cs (34 lines of code) (raw):
/*
* Copyright (C) Alibaba Cloud Computing
* All rights reserved.
*
*/
using System;
using System.Diagnostics;
using System.Security.Cryptography;
using System.Text;
namespace Aliyun.OSS.Common.Authentication
{
internal class HmacSha1Signature : ServiceSignature
{
private static readonly Encoding Encoding = Encoding.UTF8;
public override string SignatureMethod
{
get { return "HmacSHA1"; }
}
public override string SignatureVersion
{
get { return "1"; }
}
protected override string ComputeSignatureCore(string key, string data)
{
Debug.Assert(!string.IsNullOrEmpty(data));
#if NETCOREAPP2_0
using (var algorithm = new HMACSHA1())
#else
using (var algorithm = KeyedHashAlgorithm.Create(SignatureMethod.ToUpperInvariant()))
#endif
{
algorithm.Key = Encoding.GetBytes(key.ToCharArray());
return Convert.ToBase64String(
algorithm.ComputeHash(Encoding.GetBytes(data.ToCharArray())));
}
}
}
}