2022-07-28 11:29:35

О Российской ГОСТ-криптографии в браузере

JavaScript ЭЦП

Alice, Bob and GOST

В последнее время, видимо на волне импортозамещения, ко мне обратилось несколько совершенно не связанных человек за консультацией по проектам, которые в конечном итоге сводились к реализации ГОСТ-ового алгоритма шифрования или электронной подписи на JavaScript для использования в браузере. Ниже я попытаюсь объяснить, почему такая реализация не имеет смысла.

Читать дальше...

2017-10-13 17:20:43

Node.js + oracledb на Ubuntu

JavaScript Oracle Linux

Начнем с того, что у нас есть уже установленный Oracle Instant Client и SDK на Ubuntu, процесс его установки описывать не буду тк все это давно описано. Итак, мы хотим подружить наш новомодный Node.js с ораклом. Для этого нам потребуется фирменный node-oracledb - a Node.js driver for Oracle Database.

Скорее всего команда

npm install oracledb

закончится ошибкой, потому, что как обычно это бывает с ораклом, не хватает переменных окружения. В моем случае Oracle Instant Client установлен в /opt/Oracle/instantclient_11_2, поэтому все буду описывать относительного этого пути. SDK расположен в /opt/Oracle/instantclient_11_2/sdk.

Идем в /etc/profile.d/oracle.sh, который вы создали при установке клиента, и добавляем в него OCI_LIB_DIR и OCI_INC_DIR, таки образом, чтоб получилось что-то вроде моего:

export PATH=/opt/Oracle/instantclient_11_2:$PATH
export LD_LIBRARY_PATH=/opt/Oracle/instantclient_11_2:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_HOME=/opt/Oracle/instantclient_11_2
export TNS_ADMIN=/opt/Oracle
export SQLPATH=/opt/Oracle/instantclient_11_2
export OCI_LIB_DIR=$ORACLE_HOME
export OCI_INC_DIR=$ORACLE_HOME/sdk/include

Так же можно прописать нужные переменные в /root/.bashrc для того, чтоб они были доступны под суперпользователем.

Читать дальше...

2017-06-23 12:01:16

Добавление SubjectSignTool в КриптоПро ЭЦП Browser plug-in

Про работу JavaScript КриптоПро

КриптоПро


Пишу, как говорится, о наболевшем, я от всей души ненавижу создателей браузерного плагина crypto-pro, но об этом в PS, а теперь к делу. В процессе формирования запроса на сертификат (CSR) силами cadesplugin нам нужно добавить в него расширение SubjectSignTool (OID.1.2.643.100.111) со значением в виде строки (UTF8String).

На первый взгляд все кажется не сложно: создать объект X509Enrollment.CObjectId и инициализировать его значением, создать объект X509Enrollment.CX509Extension и инициализировать его созданным OID и нужной строкой с правильным EncodingType. Сделать это правда придется два раза, для синхронного и асинхронного режима, но об этом тоже в PS. На практике все не так просто, и приходится погружаться в низкоуровневое кодирование ASN.1.

Читать дальше...

2011-01-18 17:16:34

Кроссдоменная авторизация

Про работу JavaScript PHP

Суть новомодной тенденции, которая сейчас набирает обороты такова: вы заходите на сайт и авторизуетесь на нем, потом переходите на другой из тойже сети, но на другом домене, и там вы автоматически являетесь авторизованными. Примером такой схемы сейчас успешно служат Яндекс, Мейл.ру и другие.

А вот что касается реализации, то тут есть масса мнений и способов, достаточно спросить гугля по фразе "кроссдоменная авторизация" и почитать длинные дискуссии. Для себя я вижу 2 варианта реализации этой моды: одно простое и красивое, но с ограничениями, другое более сложное и не такое изящное, но более свободное.

О спецификации Cross-Origin Resource Sharing речь пока не идет, поскольку она еще нигде не поддерживается.

Начнем с простого и красивого решения.

Читать дальше...

2009-12-03 16:54:51

Вызов JavaScript функции из Flash для чайников :)

JavaScript Flash

Происходит это все от задач: надо сделать рекламный банер на флеше с кнопкой закрыть.

Реализация: Делаем флеш-ролик, помещаем в DIV, при нажатии на закрыть прячем DIV (если существует более простой или правильный способ рад буду узнать). Прятать DIV будем естественно жаваскриптом, для этого нужно чтоб наш ролик вызывал javascript-овую функцию в документе.

Для этого во флеше создаем кнопку закрыть, идем в ActionScript и там пишем:

on(release)
{
  
import flash.external.ExternalInterface;
ExternalInterface.call("myFunction");  

}

Благодаря этому при нажатии кнопки будет вызываться функция myFunction из документа :)

Читать дальше...