/// <summary> /// Проверка подписи ответа /// </summary> /// <param name="src"></param> /// <param name="pubkey"></param> /// <param name="serial"></param> public static void VerifyMessage(string src, string pubkey, string serial) { IPrivKey PublicKey = null; IPriv.Initialize(); PublicKey = IPriv.openPublicKey(pubkey, Convert.ToUInt32(serial)); // Проверить подпись PublicKey.verifyText(src); // Закрыть крипто-провайдер PublicKey.closeKey(); IPriv.Done(); }
/// <summary> /// Подписать сообщение в строке в кодировке 1251 /// </summary> /// <param name="src">Исходное сообщение в кодировке UTF-8</param> /// <param name="trg">Сообщение в кодировке 1251 упакованное UrlEncode</param> /// <param name="s_text">Сообщение с подписью в кодировке UTF-8 (для лога)</param> /// <returns>0 - OK; 1 - ошибка криптопровайдера; -1 - системная ошибка</returns> public static void SignMessage(string src, out string trg, out string s_text, string secret, string passwd) { trg = ""; s_text = ""; IPrivKey SecretKey = null; if (string.IsNullOrEmpty(src)) { throw new IPrivException(-101); } IPriv.Initialize(); SecretKey = IPriv.openSecretKey(secret, passwd); // Подписать сообщение в кодировке 1251 s_text = SecretKey.signText(src); // Закрыть крипто-провайдер SecretKey.closeKey(); IPriv.Done(); trg = "inputmessage=" + HttpUtility.UrlEncode(s_text, Encoding.GetEncoding(1251)); }