NW.js (Node-Webkit) + Рутокен = RutokenJS (Начало)

    Решил создать модуль (C/C++ Addons) для NW.js для работы с Рутокенами и поделиться с сообществом кодом, а так же пригласить вас поучаствовать в этом Open source проекте.

    Суть идеи в том, чтобы можно было использовать все возможности Рутокена в NW приложении с помощью чистого и понятного JavaScript, а также этот модуль может быть использован в Node.JS или io.js.

    API RutokenJS
    • CKR initialize()
    • bool isInitialize()
    • CKR finalize()
    • object countSlot()
    • object getLibInfo()
    • object getSlotInfo(int slot)
    • object getTokenInfo(int slot)
    • object getMechanismList(int slot)
    • object getObjectList()
    • CKR login(int slot, string pin)
    • CKR loguot()
    • object random(int size)
    • CKR initToken(int slot)
    • CKR openSession()
    • CKR closeSession()
    • CKR closeAllSessions()
    • object getSessionInfo()
    • CKR getOperationState()
    • CKR setOperationState()


    Пример использования:

    var rutoken = require('./rutoken/rutoken');
    
    var cntSlot = rutoken.countSlot();
    console.log('cntSlot: ', cntSlot);
    
    if(cntSlot > 0) {
        for(var i=0; i <= cntSlot-1; i++) {
            rutoken.getSlotInfo(i, function(data) {
                console.log('Slot info #' + i + "\n", data);
            });
            rutoken.getTokenInfo(i, function(data) {
                console.log('Token info #' + i + "\n", data);
            });
            rutoken.getMechanismList(i, function(data) {
                console.log('Mechanism list #' + i + "\n", data);
            });
        }
    }
    


    Проект на GitHub: https://github.com/roman-sopov/RutokenJS

    Примеры Node addon: https://github.com/nodejs/node-addon-examples
    Документация Node addon: https://nodejs.org/api/addons.html
    Документация Рутокен SDK: http://developer.rutoken.ru/pages/viewpage.action?pageId=3178534
    Поделиться публикацией

    Комментарии 14

      +6
      Загуглить, конечно, не долго было, но пару предложений о том, что такое «Рутокен» — можно было вставить.
      В репозитории у вас и исходники, и nw.js (nw.exe + всякие dll) и билд для windows… А еще примеры сишной библиотеки в app прям лежат, в билде пути C:\… и т.д… Чистить, чистить и еще раз чистить репозиторий и проект.
      Лучше nw.js вообще выкинуть из репозитория, а билды хранить в отдельной папке.

      И, я так понимаю, это все только для windows актуально? Об этом статье/репозитории стоит указать
        0
        Почищу, это мой первый такой опыт. Т.е. надо оставить только app/rutoken и выкинуть из него примеры, да?
        Пока это под Windows т.к. других ОС у меня нет, но библиотеки рутокена есть под Mac и Unix и NW.js тоже кроссплатформенный.
          0
          да. Примеры можно оставить в виде ссылки в README.md на библиотеку
            0
            Репозиторий привел в порядок.
        +1
        Вопрос не холивара ради: зачем к именам методов добавлять префикс «fn»? Не первый раз просто с подобным сталкиваюсь, к чему эти лишние символы и чем не угодил «getSlotInfo» и «getSlotList»?

        И еще вопрос, не пробовали с Electron запускать? Под капотом вроде тот же набор (node.js + io.js).
          0
          Да как-то привычка от ExtJS осталась, когда нужно было добавлять в объекты собственные функции. Да, вы правы это лишнее, пофикшу :)
          Про Electron не слышал, посмотрю.
            0
            Что-то не пошло…

            Uncaught Exception:
            Error: The specified module could not be found.
            C:\...\electron-v0.31.1-win32-ia32\app\rutoken\build\Release\rutoken.node
            at Error (native)
            at Object.module.(anonymous function) (ATOM_SHELL_ASAR.js:137:20)
            at Object.module.(anonymous function) [as .node] (ATOM_SHELL_ASAR.js:137:20)
            at Module.load (module.js:355:32)
            at Function.Module._load (module.js:310:12)
            at Module.require (module.js:365:17)
            at require (module.js:384:17)
            at Object. (C:\...\electron-v0.31.1-win32-ia32\app\main.js:4:15)
            at Module._compile (module.js:430:26)
            at Object.Module._extensions..js (module.js:448:10)
              0
              Мрачно подозреваю, что в Electron другой ABI, так что addon поневоле придётся пересобрать.
          –1
          Внимание читателям хаба cpp

          Если кто-то вдруг всё таки (всякое бывает) сначала читает комментарии, предупреждаю, про C++ тут нет ни слова.
          Страшное слово рутокен это вот статья на вики .

          NW.js, Node-Webkit даже не стал гуглить (и вам не советую), что-то про веб.
            0
            Во-первых addon пишется на С++, и чтобы это понять можно было посмотреть ссылки или код на GitHub.
            Во-вторых это для тех кто знаком с Рутокеном, NW и С++.
              –3
              Да мало ли проектов пишется на С++. О всех в хаб писать?
                +1
                На то он и хаб тематический, чтобы в него писать.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое