DeviceBridge/Common/Utils.cs (26 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Security.Cryptography;
using System.Text;
using DeviceBridge.Providers;
using NLog;
namespace DeviceBridge.Common
{
public static class Utils
{
private static SHA256 hasher = SHA256.Create();
/// <summary>
/// Generates a GUID hashed from an input string.
/// </summary>
/// <param name="input">Input to generate the GUID from.</param>
/// <returns>GUID hashed from input.</returns>
public static Guid GuidFromString(string input)
{
return new Guid(hasher.ComputeHash(Encoding.Default.GetBytes(input)));
}
/// <summary>
/// Fetches the sql connection string.
/// </summary>
/// <param name="logger">Logger.</param>
/// <param name="secretsProvider">Secrets provider for retrieving credentials.</param>
/// <returns>The sql connection string.</returns>
public static string GetSqlConnectionString(Logger logger, SecretsProvider secretsProvider)
{
var sqlServerName = secretsProvider.GetSqlServerAsync(logger).Result;
var sqlDatabaseName = secretsProvider.GetSqlDatabaseAsync(logger).Result;
var sqlUsername = secretsProvider.GetSqlUsernameAsync(logger).Result;
var sqlPassword = secretsProvider.GetSqlPasswordAsync(logger).Result;
sqlPassword = sqlPassword.Replace("'", "''");
return $"Server=tcp:{sqlServerName},1433;Initial Catalog={sqlDatabaseName};Persist Security Info=False;User ID={sqlUsername};Password='{sqlPassword}';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
}
}
}