Cервер проверки подписи OpenSSL+ GOST

Мануал по настройке:

OpenSSL и ГОСТ. Настройка

OpenSSL и ГОСТ. Генерация ключей

Команды OpenSSL:
http://firstwiki.ru/index.php/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B_OpenSSL

Получилось настроить OpenSSL с поддержкой алгоритмов gost.
В фуникции openssl_verify в качестве обязательного параметра нужно указывать публичный ключ.
Достать его из подписанного сообщения не получилось, посылать отдельно тоже.
Проприетарный криптопровайдер (КриптоПро) генерирует сертификат и ключи к нему в виде (header.key, masks.key, masks2.key, name.key, primary.key, primary2.key) криптоконтейнера, что не подходит для работы с OpenSSL. (вариант конвертации ключей, понимаемых в OpenSSL: https://habrahabr.ru/post/275039/ )
Capicom-master.tar

Поиск ближайших точек по координатам

http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/

SELECT office_address, office_coordinates, ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS `distance` FROM `members` HAVING `distance`<=100 ORDER BY `distance` ASC

в yii2:

$query->select("*, ((ACOS(SIN({$params['lat']} * PI() / 180) * SIN(lat * PI() / 180) + COS({$params['lat']} * PI() / 180) * COS(lat * PI() / 180) * COS(({$params['lon']} - lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance")
->having("distance <= {$params['radius']}") ->orderBy("distance ASC");