in rocketmq-client-csharp/Signature.cs [26:74]
public static void sign(IClientConfig clientConfig, grpc::Metadata metadata)
{
metadata.Add(MetadataConstants.LANGUAGE_KEY, "DOTNET");
metadata.Add(MetadataConstants.CLIENT_VERSION_KEY, "5.0.0");
metadata.Add(MetadataConstants.CLIENT_ID_KEY, clientConfig.clientId());
if (!String.IsNullOrEmpty(clientConfig.tenantId()))
{
metadata.Add(MetadataConstants.TENANT_ID_KEY, clientConfig.tenantId());
}
if (!String.IsNullOrEmpty(clientConfig.resourceNamespace()))
{
metadata.Add(MetadataConstants.NAMESPACE_KEY, clientConfig.resourceNamespace());
}
string time = DateTime.Now.ToString(MetadataConstants.DATE_TIME_FORMAT);
metadata.Add(MetadataConstants.DATE_TIME_KEY, time);
if (null != clientConfig.credentialsProvider())
{
var credentials = clientConfig.credentialsProvider().getCredentials();
if (null == credentials || credentials.expired())
{
return;
}
if (!String.IsNullOrEmpty(credentials.SessionToken))
{
metadata.Add(MetadataConstants.STS_SESSION_TOKEN, credentials.SessionToken);
}
byte[] secretData = Encoding.ASCII.GetBytes(credentials.AccessSecret);
byte[] data = Encoding.ASCII.GetBytes(time);
HMACSHA1 signer = new HMACSHA1(secretData);
byte[] digest = signer.ComputeHash(data);
string hmac = BitConverter.ToString(digest).Replace("-", "");
string authorization = string.Format("{0} {1}={2}/{3}/{4}, {5}={6}, {7}={8}",
MetadataConstants.ALGORITHM_KEY,
MetadataConstants.CREDENTIAL_KEY,
credentials.AccessKey,
clientConfig.region(),
clientConfig.serviceName(),
MetadataConstants.SIGNED_HEADERS_KEY,
MetadataConstants.DATE_TIME_KEY,
MetadataConstants.SIGNATURE_KEY,
hmac);
metadata.Add(MetadataConstants.AUTHORIZATION, authorization);
}
}