WMSignerFX

WMSigner для платформы .Net (библиотека WebMoney.Cryptography)

Данная статья предназначена для разработчиков, использующих интерфейсы WebMoney Transfer в Microsoft .Net/.Net Core приложениях. В статье описано как использовать с библиотеку WebMoney.Cryptography (кодовое имя библиотеки WMSignerFX).

Библиотека WebMoney.Cryptography используется для получения цифровой подписи сообщения закрытым ключом WM Keeper WinPro. Она реализована на управляемом (managed) языке (язык разработки C#) и не требует специальных прав для своей работы.

Текущая версия библиотеки 4.0.0.

Получение цифровой подписи сообщения с помощью библиотеки WebMoney.Cryptography

Пример получения подписи сообщения на языке C#:

using WebMoney.Cryptography
using System;

namespace WebMoney.Examination
{
    public class Program
    {
        static void Main(string[] args)
        {
            // xml-представление ключа WebMoney Keeper WinPro, полученное с помощью утилиты KeyExtractor
            string xmlKey = "<RSAKeyValue><Modulus>ccqACxNjlkI</Modulus><D>FW1RaQMqeIn8otCeHgD</D></RSAKeyValue>";

            Signer signer = new Signer();
            signer.Initialize(xmlKey);

            string signature = signer.Sign("message"); // подпись строки

            Console.WriteLine(signature);
        }
    }
}

Для запуска этого кода, необходимо добавить в проект ссылку на библиотеку WebMoney.Cryptography или подключить ее с помощью менеджера пакетов NuGet:

Install-Package WebMoney.Cryptography

При инициализации объекта класса Signer, используется представление ключа в XML-формате: <RSAKeyValue><Modulus>{0}</Modulus><D>{1}</D></RSAKeyValue>, где {0} и {1} — значение модуля и приватной экспоненты в формате Base64. Порядок байт little-endian.

Возможные исключения при инициализации объекта класса Signer:

  1. ArgumentNullException.
  2. ArgumentOutOfRangeException (пустая строка).
  3. XmlException — строка не в XML-формате.
  4. FormatException — узел Modulus или D не содержат строку в Base64 формате.
  5. CryptographicException — неверный формат XML-документа (см. выше) или длина ключа меньше 528 бит или modulus является четным числом.

Возможные исключения при подписи строки (вызов метода Sign):

  1. ArgumentNullException.
  2. ArgumentException — строка содержит недопустимые символы ('\r' — недопустимый символ).
  3. InvalidOperationException — объект класса Signer не инициализирован. Перед использованием объект класса Signer нужно инициализировать, вызвав любой из двух методов Initialize (см. описание выше).

Пример получения подписи сообщения на языке VBScript и JScript (для использования в гаджетах Windows Vista и Windows 7):

VBScript

Dim signer
Dim signature

Set signer = CreateObject("WebMoney.Cryptography.Signer")
signer.Initialize("<RSAKeyValue><Modulus>ccqACxNjlkI</Modulus><D>FW1RaQMqeIn8otCeHgD</D></RSAKeyValue>")

signature = signer.Sign("test")

Call MsgBox(signature)

JScript

var signer = WScript.CreateObject("WebMoney.Cryptography.Signer");
signer.Initialize("<RSAKeyValue><Modulus>ccqACxNjlkI</Modulus><D>FW1RaQMqeIn8otCeHgD</D></RSAKeyValue>");

var signature = signer.Sign("test");

WScript.Echo(signature);

Для запуска этого кода, необходимо зарегистрировать WebMoney.Cryptography как COM-компонент:

RegAsm.exe .\..\PUBLIC\v3.2-bin\WebMoney.Cryptography.dll \tlb
gacutil.exe /if .\..\PUBLIC\v3.2-bin\WebMoney.Cryptography.dll
gacutil.exe /if .\..\PUBLIC\v3.2-bin\BusinessTools.Cryptography.dll

Утилиты RegAsm и gacutil следует поместить в рабочую папку.

Получение XML-представления ключа WM Keeper WinPro

Получить представление ключа WM Keeper WinPro можно с помощью программы Key Extractor.

Обратите внимание! Начиная с версии библиотеки 3.1. формат представления ключа WM Keeper изменился. Старый формат более не поддерживается.

Рекомендации по использованию библиотеки.

Xml-представление ключа WMKeeper рекомендуется хранить в конфигурационном файле приложения в зашифрованном виде. Подробнее о шифровании разделов конфигурационного файла вы можете узнать в библиотеке MSDN

Использование библиотеки WebMoney.Cryptography в операционных системах GNU/Linux.

Проект Mono позволяет использовать библиотеку WebMoney.Cryptography и программу Key Extractor практически на любой операционной системе семейства Unix. Ни библиотека, ни программа не требуют какой-либо доработки для этого. Дополнительную информацию смотрите в статье Key Extractor.

Список изменений

Версия 4.0 от 9 декабря 2021

  1. Добавлена поддержка .Net Core (.Net Standard 2.0).

Версия 3.3.1

  1. Добавлена возможность подключения с помощью менеджера пакетов NuGet.
  2. Объединена библиотека BusinessTools.Cryptography и WebMoney.Cryptography.
  3. Исправлена ошибка "Invalid Key Length", возникавшая при расшифровке некоторых ключей.

Поддержка участников

Техническая поддержка осуществляется по e-mail:

Ссылки на ресурсы

Старые версии

Зеркала на CodePlex, Google Code и SourceForge содержат старые версии и не обновляются.
Все исполняемые файлы и библиотеки подписаны цифровой подписью. Безопасность файлов без валидной цифровой подписи не гарантируется.