Unable to create Signature using genrate token in c# api

//Generate Signature for Join/Host meeting
public static clsZoomMeeting GetSignatureToken(clsZoomMeeting meeting)
{

        string SdkKey = sSdkKey;
        string SdkSecret = sSdkSecret;

        string meetingNumber = meeting.meeting_number;
        String ts = (ToTimestamp(DateTime.UtcNow.ToUniversalTime()) - 30000).ToString();
        string role = meeting.meeting_role.ToString();
        string token = GenerateToken(SdkKey, SdkSecret, meetingNumber, ts, role);

        meeting.signature = token;
        meeting.api_key = apiKey;

        return meeting;
    }

    public static long ToTimestamp(DateTime value)
    {
        long epoch = (value.Ticks - 621355968000000000) / 10000;
        return epoch;

    }

    public static string GenerateToken(string apiKey, string apiSecret, string meetingNumber, string ts, string role)
    {
        string message = String.Format("{0}{1}{2}{3}", apiKey, meetingNumber, ts, role);
        apiSecret = apiSecret ?? "";
        var encoding = new System.Text.ASCIIEncoding();
        byte[] keyByte = encoding.GetBytes(apiSecret);
        byte[] messageBytesTest = encoding.GetBytes(message);
        string msgHashPreHmac = System.Convert.ToBase64String(messageBytesTest);
        byte[] messageBytes = encoding.GetBytes(msgHashPreHmac);
        using (var hmacsha256 = new HMACSHA256(keyByte))
        {
            byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
            string msgHash = System.Convert.ToBase64String(hashmessage);
            string token = String.Format("{0}.{1}.{2}.{3}.{4}", apiKey, meetingNumber, ts, role, msgHash);
            var tokenBytes = System.Text.Encoding.UTF8.GetBytes(token);
            return System.Convert.ToBase64String(tokenBytes).TrimEnd(padding);
        }
    }

Hi @nirmaltiwari139

what error are you getting? Are you able to generate the signature at all?

Iam unable to generate the signature using SDK key and secret key kindly help me to generate signature using the SDK key and SDK secret key

http://localhost:57617/Settings/Webinar?name=Admin&mn=9585230794&email=apex4tutoring@gmail.com&pwd=6gW8Jc&role=0&lang=en-US&signature=TTlHNUlIUDZSaHltT3Mtazl0dzYtZy45NTg1MjMwNzk0LjE2NzExODMzOTQ3MzAuMC5pcVdzeTNkSnZSQUh0MDBxcU1mY0tmWWpmb2dJTFJUc3R5Ukl5R1NId2NnPQ&sdkKey=kCW7IVHfDdVaFPSFVM9VdsxfjNFITGScjb6q&china=0&classHistoryId=0

error :

  1. errorCode: 4003
  2. errorMessage: “apiKey or sdkKey only need one, and can’t empty ({"apiKey":"","sdkKey":""})”
  3. method: “join”
  4. result: null
  5. status: false

Please refer to this thread

I’am using this method to generate the signature but getting error as

{
“method”: “join”,
“status”: false,
“result”: “Invalid signature.”,
“errorMessage”: “Signature is invalid.”,
“errorCode”: 3712
}
iam passing the api key and secret key to generate the signature in .net

public static string GenerateToken(string apiKey, string apiSecret, string meetingNumber, string ts, string role)
{
string message = String.Format(“{0}{1}{2}{3}”, apiKey, meetingNumber, ts, role);
apiSecret = apiSecret ?? “”;
var encoding = new System.Text.ASCIIEncoding();
byte keyByte = encoding.GetBytes(apiSecret);
byte messageBytesTest = encoding.GetBytes(message);
string msgHashPreHmac = System.Convert.ToBase64String(messageBytesTest);
byte messageBytes = encoding.GetBytes(msgHashPreHmac);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte hashmessage = hmacsha256.ComputeHash(messageBytes);
string msgHash = System.Convert.ToBase64String(hashmessage);
string token = String.Format(“{0}.{1}.{2}.{3}.{4}”, apiKey, meetingNumber, ts, role, msgHash);
var tokenBytes = System.Text.Encoding.UTF8.GetBytes(token);
return System.Convert.ToBase64String(tokenBytes).TrimEnd(padding);
}
}

@nirmaltiwari139 for C#, can you follow the guidelines here: Generate SDK Signature with ASP.NET Core (C#) backend - #8 by donte.zoom ?