Bitstamp - nueva autenticación en C # - firma

La nueva autenticación de bitstamp dice lo siguiente:

La firma es un mensaje codificado HMAC-SHA256 que contiene: nonce, ID de cliente y clave de API. El código HMAC-SHA256 debe generarse usando una clave secreta que se generó con su clave API. Este código debe convertirse a su representación hexadecimal (64 caracteres en mayúscula). Ejemplo (Python): mensaje = nonce + client_id + api_key signature = hmac.new (API_SECRET, msg = message, digestmod = hashlib.sha256) .hexdigest (). Superior()

Fuente:enlazar

Tengo el siguiente código para agregar la nueva firma (y otros parámetros):

public void AddApiAuthentication(RestRequest restRequest)
    {
        var nonce = DateTime.Now.Ticks;
        var signature = GetSignature(nonce, apiKey, apiSecret, clientId);

        restRequest.AddParameter("key", apiKey);
        restRequest.AddParameter("signature", signature);
        restRequest.AddParameter("nonce", nonce);

    }

    private string GetSignature(long nonce, string key, string secret, string clientId)
    {
        string msg = string.Format("{0}{1}{2}", nonce,
            clientId,
            key);

        return ByteArrayToString(SignHMACSHA256(secret, StrinToByteArray(msg))).ToUpper();
    }
    public static byte[] SignHMACSHA256(String key, byte[] data)
    {
        HMACSHA256 hashMaker = new HMACSHA256(Encoding.ASCII.GetBytes(key));
        return hashMaker.ComputeHash(data);
    }

    public static byte[] StrinToByteArray(string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
    }

    public static string ByteArrayToString(byte[] hash)
    {
        return BitConverter.ToString(hash).Replace("-", "").ToLower();
    }

Y luego me sale este error:

{"error": "Firma inválida"}

¿Alguien tiene una idea de cuál podría ser el problema? Revisé mis parámetros 100 veces y no están mal. ¿Tal vez alguien consiguió un código de trabajo (en C #) para la nueva autenticación?

ACTUALIZAR

Abhinav tenía razón, el método StringToByteArray estaba equivocado (no solo el error tipográfico: P), el código de trabajo es:

public static byte[] StrinToByteArray(string str)
    {
        return System.Text.Encoding.ASCII.GetBytes(str);
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta