Sergey Manoylo

Independent (one-person) freelancer (Software Development).
Overall 15 years of Software Development experience.
7+ years: C/C++ (4+ years – Security/Crypto/Networking);
7+ years: Java (Java SE, Java EE, Java Spring Framework) (Java EE and Java Spring Framework, mainly, Back-End);
3+ years: DataBase (MySQL, PostgreSQL, Oracle);
Major technical skills:

C++11/C++14/C++17L

C11/C17

Microsoft Visual Studio C++

gcc, g++

Eclipse C++

Kdevelop

Qt Creator

Qt

MFC

OpenSSL, LibTomCrypt, GnuPG

STL C++

Boost C++

POCO C++

CMake, Make Tool

gdb, Kdbg

flex, bison

Win API

Linux POSIX

Sockets

Multi-Threading

CppUnit, cmocka

valgrind

bash scripts

Java SE (inc multi-threading)

Java EE

Oracle, MySQL, PostgreSQL

Tomcat

Spring (Core Beans, Spring MVC, Spring Flow, Spring Security), JSF (MyFaces, Tomahawk, Richfaces)

Hibernate

JavaScript, HTML, XML/XSD, JSON

JCA

Gradle, Apache Maven, Apache Ant

Jenkins/Hudson

Junit

Eclipse, Spring Tool Suite

Crypto API

Git (github, bitbucket), SVN

Python

Windows XP/7/8/10

Linux (GNU Debian, CentOS, Ubuntu/Kubuntu, Mint, OpenSUSE)

root web link:	http://smansoft.com/portfolio/
contacts:	http://smansoft.com
e-mail	:	info@smansoft.com
mobile phone	:	+380-67-150-2244
skype	:	smansoft.net

GitHub:	https://github.com/smansoft
Kharkov (Kharkiv), Ukraine, Europe

SMan Portfolio:

Projects:

______________________________________________

25.sm_vpn_stack_suite

Own product/project.
sm_vpn_stack_suite (Android VPN Stack Suite) tool.

Features of the Android VPN Stack Suite:
- Simple TCP/UDP socket server (with multi-thread support) (Linux platform), that implements open simple
communication protocol (application level):
- TCP:
- The Client connects to the TCP Server;
- The Client sends "socket_client: Hello" to the Server;
- The Server reads message from the Client;
- The Server sends "socket_server: Hello" to the Client;
- The Client reads message from the Server;
- The Client sends some text message (size 1024 with '\0' symbol) to the Server;
- The Server reads text message from the Client and generates inverted message (src: "1234567890"
-> inverted: "0987654321");
- The Server sends inverted message to the Client;
- The Client reads message from the Server;
- The Client send read message to the Server;
- The Server reads text message from the Client and generates inverted message (src: "0987654321"
-> inverted: "1234567890");
- The Server sends inverted message to the Client;
- The Client reads message from the Server;
- Last received message by the Client should be similar to the first message sent by
Client to the Server;
- UDP:
- The Client connects to the TCP Server;
- The Client sends "socket_client: Hello" to the Server;
- The Server reads message from the Client;
- The Server opens new UDP connection on new socket port;
- The Server sends new UDP port number to the Client (using first connection);
- The Client reads the UDP port number and closes first connection;
- The Client creates new UDP connection, using received from Server port number;
- The Client sends "socket_client: Hello" to the Server;
- The Server reads message from the Client;
- The Server sends "socket_server: Hello" to the Client;
- ... Then communication protocol (application level) is same as described in TCP section;
- Simple TCP/UDP socket client (Microsoft Visual Studio C++, Windows platform), that implements previous	described protocol;
- Simple TCP/UDP socket client (Android Studio/Android SDK, Android platform), that implements previous described	protocol;
- VPN Stack Application, that (Android Studio/Android SDK/Android NDK/C, Android platform), that is based on
VpnService (Android platform) and implements intermediate IP/TCP/UDP stack (JNI/C/Sockets);
- VPN Stack Application provides catching, monitoring and processing TCP/UDP/ICMP/IP packages; Then these	packages are processed (via JNI) at the Native API level;
- VPN Stack Application can catch packages from some defined application (if text edit "Filtered Package Name" is	defined) or from all applications (if text edit "Filtered Package Name" is empty);
- VPN Stack Application creates tun0 device (after launching), which is used for catching
TCP/UDP/ICMP/IP packages;
- VPN Stack Application reads packages, sent from Android application(s) from tun0 device, provides processing	these packages and creates new or uses saved (sessions) TCP connections (if Android Application sends TCP	package) or just uses sendto (if Android Application sends TCP package);
- VPN Stack Application receives all packages from network, provides processing these packages
and writes packages to tun0 device, then packages will be received by Android application(s);
- VPN Stack Application doesn't use Raw Sockets;
- VPN Stack Application writes detailed log to Logcat and to the file
/data/data/com.smansoft.vpn_stack/files/logs/vpn_stack.log;
- Follow applications from this suite:
- Simple TCP/UDP socket server (with multi-thread support) (Linux platform);
- Simple TCP/UDP socket client (Microsoft Visual Studio C++, Windows platform);
- Simple TCP/UDP socket client (Android Studio/Android SDK, Android platform);
have been created and have been used for testing network connections and for testing the VPN Stack	Application;
Technologies and tools:
- Android Platform: Android Studio, Android SDK, Android NDK, JNI, C11, gradle, CMake, POSIX, multi-threading,	sockets;
- Windows Platform: C++17, Visual Studio 2019, Git, Tortoise Git client;
- Linux Platform: C++17, gcc, Make Tool, Bash scripts, Git;

More Info (links, documents, screenshots, examples): sm_vpn_stack_suite (Android VPN Stack Suite).
______________________________________________

24.vpn_tunnel

vpn_tunnel:
- simple Android Service Application, that is based on the Android VpnService
and provides catch and tunneling ip/tcp, ip/udp,... packages to Linux application, that
extracts packages and routes them in internet;
- provides tunneling in both directions: from Some Android Application to Internet
(Some Server) and from Internet (Some Server) to Some Android Application;
- this tool is based on ToyVpn and doesn't provide any encryption of tunneling packages;
- some improvement of handshake (Vpn tunnel service and Linux tunnel server) has been provided;
Technologies and tools:
- Android Platform: Android Studio, Android SDK, Gradle, Git;
- Linux Platform: Debian 10, gcc, Make tool, Bash, Git;

More Info (links, documents, screenshots, examples): vpn_tunnel.
______________________________________________

23.btcpool tuning

btcpool tuning - building, configuring and some investigate of the suite:
- bitcoind (bitcoin launched in the server mode);
- suite of tools of btcpool:
- blkmaker;
- gbtmaker;
- jobmaker;
- sserver (Stratum Server);
- statshttpd;
- sharelogger;
- slparser;
- poolwatcher;
- Kafka (+zookeeper) - broker manager (bus);
- simulator (part of the btcpool tools suite) -
multi-user and multi-miner testing tool, that provides testing the suite working and
modules cooperation, generating test/virtual blockchain blocks;
- MySql;
- Httpd + Php;

Technologies and tools:
- Linux Platform: Debian 10, gcc, g++, Make tool, GTest (unit tests framework from Google),
MySql, Php, Git;

More Info (screenshots, examples): btcpool tuning.
______________________________________________

22.sm_producer_consumer

Own product/project.

sm_producer_consumer (SM Producer Consumer) - is an open-source multi-thread demo/template resolving the producer-consumer (bounded-buffer) problem.

Features of the sm_producer_consumer (SM Producer Consumer) tool:

- Multi-thread demo/template, that resolves producer-consumer problem (bounded-buffer problem);

- Using thread support primitives (classes, api), which are parts of the C++ (C++11) language, defined by

the standard ISO/IEC 14882:2011;

- Using several producer-consumer objects, which use suite of limited-size queues shared by various number of	threads with various productivity/periodicity/frequency;

- Writing processed results into the text file (in the special directory);

- Logging results and applications workflow;

- Multi-thread (thread-safe) log library, that supports output to the log file and/or console;

- Multi-thread (thread-safe) log library, supports log level output (TRACE, DEBUG, INFO, WARN, ERROR, FATAL);

- Usage string secure library in some C-language functions;

- Self-stopping support, when file '.stop' is placed in the special directory;

Technologies and tools:

- Linux Platform: C/C11/C++/C++11, gcc, g++, Make Tool, Kdbg,

Eclipse IDE for C/C++ Developers, valgrind, Bash scripts, Git;

- Virtual Box (Virtualization Software), Various distros of Linux (Debian 9/10, OpenSUSE, Ubuntu, Mint);

More Info (links, documents, screenshots, examples): SM Producer Consumer.

______________________________________________

21.sm_regex

Own product/project.
sm_regex (SM Regular Expressions Calculator) - is a multi-platform (Windows/Linux) Qt-based Regular Expressions Calculator.

Features of the SM Regular Expressions Calculator:

- Multi-platform application: there are builds for Windows 64/32 (.zip) and Linux 64 (.tar.gz);

- Calculation a Match (finds all substrings in the input string which match a regular expression pattern

and returns all occurrences) using regular expressions;

- Calculation a Replace (finds all substrings in the input string which match a regular expression pattern

and replaces all occurrences, by entered replacement text), using regular expressions;

- Calculation a SubExpressions (finds all substrings in the input string which match a regular expression pattern

and separates text, by found substrings), using regular expressions;

- Usage follow Regular Expressions engines: Qt RegEx, STL C++ RegEx (C++ 11);

- Usage ECMAScript standard (by both engines as Qt RegEx as STL C++ RegEx (C++ 11));

- One-line and multi-line modes;

- Case-insensitive and case-sensitive modes;

- Saving the result in the Clipboard;

- Saving the result in a Text File;

- Tuning interface, usage Light and Dark themes;

- Usage database, where Regular Expressions and options (one-line/multi-line and case-insensitive/case-	sensitive), using during calculations can be saved;

- Usage the System Tray on the Windows and Linux platforms during work of the SM Regular Expressions Calculator	tool;

- Log of results and applications workflow;

- Portable build/version (archive(s) which can be just extracted);

Technologies and tools:

- Windows Platform: C/C11/C++/C++11, CMake, Qt 5.14.2, Qt Creator 4.14,

Visual Studio 2019 (including NMake tool), diff tool, Git, Windows Batch scripts,

Tortoise Git client;

- Linux Platform: C/C11/C++/C++11, CMake, gcc, g++, Make Tool, Kdbg,

Qt 5.14.2, Qt Creator 4.14, diff tool, Python 3, Bash scripts, Git;

- Virtual Box (Virtualization Software), Various distros of Linux (Debian 9/10, OpenSUSE, Ubuntu,

Mint);

More Info (links, documents, screenshots, examples): SM Regular Expressions Calculator.

______________________________________________

20.vector_syntax_parser

Development of some suite of tools and PostgreSQL modules/extensions at the backend layer (for US and India Customers),
that provides processing of vector data, using special expressions language. This suite and PostgreSQL DB data are used by .Net Framework Web Application.

http://smansoft.com/portfolio/20.vector_syntax_parser/vector_syntax_parser.jpg.

This suite and PostgreSQL DB data are used by .Net Framework Web Application.
Technologies and tools:

- Linux Platform (Ubuntu, Debian);
- C11, C++11/C++17, GCC/G++;
- flex, bison;
- STL, Boost C++, Log4cplus;
- Multi-threading;
- Posix API;
- Make Tool;
- GDB, Kdbg;
- Eclipse C/C++, KDevelop;
- valgrind;
- Git, bitbucket;
- PostgreSQL 10, modules/extensions of PostgreSQL;
- PostgreSQL SPI;
- libpq, libpqxx;
- PL/pgSQL;
- pgAdmin, DBeaver;
- https://github.com/pjungwir/aggs_for_arrays;
- https://github.com/pjungwir/aggs_for_vecs;

More Info (links, documents, screenshots, examples): Vector Syntax Parser.

______________________________________________

19.sm_calculator

Own product/project.
sm_calculator (SM Calculator) tool - is a multi-platform (Windows/Linux) open-source console calculator, implementing a simple language for processing of mathematical expressions.

Features of the SM Calculator:
- Multi-platform application: there are builds for Windows 64/32 (.zip) and Linux 64/32 (.tar.gz);
- Various types of values (64 bits integers, 64 bits floats, strings);
- Various float constants (pi, exp,...);
- Solving of mathematical expressions, using basic arithmetic operators;
- Solving of mathematical expressions, using bracket delimiters
'(' and ')' (in one expression) and delimiters ';', '\n';
- Solving using suite of mathematical (including trigonometric, logarithm, exponentiation)
functions;
- Solving using bitwise functions and operators;
- Various types of entering and output formats of integers (decimal, octal, hexadecimal,
binary formats);
- Various values of unit for measuring of angles (radians, degrees, gradians), which are used
by trigonometric functions;
- Support of output properties (precision) of float values;
- Suite of converting functions (various values of unit for measuring of angles, various
types of entering and output formats of integers);
- Suite of commands, which provide setup of configuration of SM Calculator;
- Several modes of execution (processing of files, processing of expressions, obtained via command line,
processing of expressions in interactive mode, using standard input/output devices);
- Control/administration the creation/start of the log of the sm_calculator (SM Calculator) tool:
start without log output (command line option: -q, --no_log)
changing the path of the created/opened log file (command line option: -l, --log_file);
- Access to the sm_calculator (SM Calculator) tool can be included into $PATH (Windows/Linux) and
the sm_calculator (SM Calculator) tool can be launched from any current directory;
- Detailed processing of syntax error(s);
- Restoring of syntax parsing after error(s);
- Reentrant implementing of the parser, i.e. parser can work in multi-thread mode;
- Help (command: help[;] or command line option: -h, --help);
SM Calculator supports follow modes of execution:
- processing of file, that contains expression(s);
- processing of command line expression(s);
- interactive mode (user enters expression(s), using standard input device/console).
User can use same expressions in all these modes (processing of file,
processing of command line expression(s), interactive mode);
Technologies and tools:
- Windows Platform: C/C11, CMake, Visual Studio 2019 (including NMake tool), flex, bison,
diff tool, Python 3, Git, Windows Batch scripts, Tortoise Git client;
- Linux Platform: C/C11, CMake, gcc, Make Tool, Kdbg, flex, bison,
diff tool, Python 3, Git, Bash scripts;
- Virtual Box (Virtualization Software), Various distros of Linux (Debian 9/10, openSUSE, Ubuntu,
Mint);

More Info (links, documents, screenshots, examples): SM Calculator.

______________________________________________

18.secure_messenger

Android Secure XMPP/Jabber Messenger (for some European Company).
Adding secure solutions to already implemented XMPP/Jabber protocol.

Technologies and tools:

- Java 8;
- C/C++;
- Android Studio;
- Android SDK;
- Android NDK;
- XMPP/Jabber protocol;
- OpenSSL;
- Olm (Double-Ratchet ptotocol);
- SQLite cipher package;
- gradle;
- CMake;
- Git;

More Info (links, documents, screenshots, examples): Secure Messenger.

______________________________________________

17.qt-win

Qt-based CRM (customer relationship management) software tools (only Windows platform).
Projects of the Qt-based CRM application contain 65 forms and about 100 classes (without log4cplus).
Technologies and tools:
- C++11;
- Visual Studio 2003;
- Visual Studio 2017;
- Qt3.3.5;
- Qt5.12.2;
- PostgreSQL 10/11;
- log4cplus;

More Info (links, screenshots): Qt-Win.
______________________________________________

16.file_exchanger

Own product/project.
File Exchanger (file_exchanger) Tool is a peer-to-peer files exchanger for Windows/Linux platforms.

Features of File Exchanger (file_exchanger) Tool:
- transfer of files from client to server, using open socket connections;
- transfer of files from client to server, using SSL connections;
- control of entirety of received files, comparing of checksum values sent and received files,
using CRC-32 algorithm;
- using transfer of files from client to server, using SSL connections;
- using follow SSL mode/algorithms (TLSv1.2), if SSL connection is used:
ECDHE-ECDSA-AES256-GCM-SHA384
TLSv1.2 - version
TLS - the protocol used
ECDHE - the key exchange mechanism
ECDSA - the algorithm of the authentication key
AES - the symmetric encryption algorithm
256 - the key size of AES
GCM - the mode of AES
SHA384 - the MAC used by the algorithm
prime256v1 (NIST P-256, secp256r1) - Elliptic Curve, that is used by ECDHE and ECDSA;
- using unique CA of client and server certificates;
- user can update CA, client/server keys/certificates, using suite of scripts ssl.ecdsa.tar.gz
(ReadMe.txt in ssl.ecdsa.tar.gz);
- using of xml configuration files, which can be updated by user and will be applied
without restart of processes (sm_file_send_clns, sm_file_send_srvs);
- scanning of configured directories, where sent files can be copy;
- copying of sub-directories with files, saving of sub-directories tree at the server side;
- support of unicode symbols in file/directory names;
- backup of sent/received files;
- server and client modules can be launched as Services (Windows)/Daemons (Linux);
- console command line control application (only Windows) of client/server Services (requires
Administrator permissions);
- Windows gui application, that allows to monitor states of client/server Services, control
of client/server Services and change parameters of client/server Services;
- Linux gui application (Qt-based), that allows to monitor states of client/server Daemons,
control of client/server Daemons (when it's possible, according to users permissions)
and change parameters of client/server Daemons;
- using ECDSA (NIST P-256, secp256r1) for signing/verification parameters, which are sent
between client/server and gui applications (Windows/Linux);
- tool applications don't use any intermediate servers and transfer files directly between
client and server;
Technologies and tools:
- Windows Desktop: C/C++, CMake, Visual Studio (C++) 17, MFC, WinApi, Poco, OpenSSL,
Sockets, Secure Sockets, Multi-threading, Windows Services, NSIS, Git, Windows Batch
scripts, Tortoise Git client;
- Linux Desktop: C/C++, CMake, gcc/g++, Qt, Qt Creator, Kdbg, Posix api, Poco, OpenSSL,
Sockets, Secure Sockets, Multi-threading, Linux Daemons, Linuxdeployqt, Makeself, Linux
Bash scripts, Git, Git Cola client;
- Virtual Box (Virtualization Software), Various distros of Linux (Debian 8/9, openSUSE, Ubuntu,
Mint);

More Info (links, documents, screenshots, examples): File Exchanger.

______________________________________________

15.ssl_scripts

Own product/project
SSL ECDSA Scripts and SSL Web Scripts.

The main features of SSL ECDSA scripts:
- generation of CA key and Self-Signed CA Certificate;
- generation of SSL private key, public key and sign public key, using CA key
and generation of X.509 certificate of server;
- generation of SSL private key, public key and sign public key, using CA key
and generation of X.509 certificate of client;
- usage of Elliptic Curves (ECDSA-WITH-SHA384) prime256v1 (NIST P-256, secp256r1) for
signing of public keys;
The main features of SSL Web scripts:
- generation of CA ECDSA key and Self-Signed CA ECDSA Certificate;
- generation of SSL ECDSA private key, ECDSA public key and sign ECDSA public key, using ECDSA CA key
and generation of X.509 certificate of server (server certificate);
- generation of CA RSA key and Self-Signed CA RSA Certificate;
- generation of SSL RSA private key, RSA public key and sign RSA public key, using RSA CA key
and generation of X.509 certificate of server (server certificate);
- usage (by default) of Elliptic Curves (ECDSA-WITH-SHA256) prime256v1 (NIST P-256, secp256r1) or RSA
(RSA2048-WITH-SHA256) for signing of public keys;
Technologies and tools:
- Bash, OpenSSL;

More Info (links, documents, screenshots, examples): SSL Scripts.
______________________________________________

14.spring_login

Own product/project.
Spring Login.

Suite of demo projects (tempaltes) (Spring, Spring Boot, Spring-Security, JSP, Apache Tiles, Thymeleaf, Spring-Jpa,
Spring-Data-Jpa, JCache, Ehcache, Infinispan, Hibernate, EclipseLink, MySQL, Logback, Maven, Gradle).
Technologies and tools:
- Java 8;

- Eclipse;

- Spring;

- Spring Boot;

- Spring-Security;

- JSP;

- Apache Tiles;

- Thymeleaf;
- Spring-Jpa;

- Spring-Data-Jpa;

- Jcache;

- Ehcache;

- Infinispan;

- Hibernate;

- EclipseLink;

- MySQL;

- Logback;

- Maven;

- Gradle;

- Git;

More Info (links, documents, screenshots, examples): Spring Login.

______________________________________________

13.print_tool

Own product/project.
Print Tool.

Reflection-based suite of facades over Logger, that provides logging of complex objects.
Technologies and tools:
- Java 8 SE;

- Eclipse;

More Info (links, documents, screenshots, examples): Print Tool.

______________________________________________

12.fundfulp2p

FundfulP2P project (Spring Boot application) (peer-to-peer fundraising).

Technologies and tools:
- Java Spring Framework: Java 8, Spring MVC + Spring Security + Spring Data JPA +
EclipseLink (as ORM), MultiTenancy, Thymeleaf, WePay, Validation,
CSS template Admin LTE, Captcha, JMeter, Facebook authentication, Share with twitter
facebook and google, Upload care, Scheduler to send emails, Trigger emails, Amazon email
service client, SQL Injection, XSS Filter, Wysiwyg editor, Chart.js, Freemarker, Maintenance
page, Performance logging aspect, Cloudflare, Liquibase, Slf4j, Log4j, Apache Maven,
Bootstrap, JQuery, JUnit, Mockito, Git (Tortoise Git);
- SQL, PostgreSQL;
- Jenkins CI, GitLab, Jira;
- Bash, Bash Scripts (build, install/deployment);
- Linux (Debian), Docker Virtualization Software;

More Info (links, documents, screenshots, examples): FundfulP2P.

______________________________________________

11.sumac

Sumac. Java SE CRM (customer relationship management) software tools.

This is a big CRM tool for control of donation activity of persons and organizations.
Projects of the Sumac Java SE application contain more than 3k classes.
Technologies and tools:
- Java 6, Java SE (Awt, Swing), Java WebStart, SQL, Derby Db, MySQL, Jacob,
BouncyCastle, iText, Java Mail, SSHJ Client, Apache Ant, Apache Maven, JUnit, Mockito,
Bash, Eclipse, Squirrel Sql Client, Git (Tortoise Git);
- GitLab, Jira;

More Info (links, documents, screenshots, examples): Sumac.

______________________________________________

10.curr-ip

Own products/projects.
On-line Network Tools.
On-line Nmap Scanner.

On-line Network Tools http://curr-ip.com – ajax-based suite of network tools, which implements follow features: Current Ip location (including ipv6 support), Browser Info, DNS resolve (A, AAAA, MX, NS, TXT, SRV, SOA, CNAME, HINFO requests), Reverse DNS resolve (PTR request), Whois Info lookup, Geo-Location resolve;
On-line Nmap Scanner http://scan-ip.curr-ip.com/scan-ip.htm – ajax-based network tool, that implements web interface of nmap command-line (with logging and backups support);
Technologies and tools:
- HTML, JavaScript, jQuery, Spring Core, Spring MVC, Spring Boot, EhCache, Hibernate,
MySQL, Tomcat, Apache WebServer, Debian, Log4j, JAXB, Spring Rest Json, nmap tool,
geolocation databases, Ant, Maven, Bash, Git, Git (Tortoise Git);
- Virtual Box (Virtualization Software), Linux Debian 8;

More Info (links, documents, screenshots, examples): Curr-IP.

______________________________________________

09.java_spring

Java Spring software development (Java Web Applications and WebServices) of Document
Circulation Project that provides control of Employee Visas (for Immigration Service)
(UAE customer).
Technologies and tools:
- Tomcat 7, Jboss AS 6, Spring (Core Beans, Spring MVC, Spring Flow,
Security, WebServices), Apache Tiles 2.0, JSP, Hibernate, Oracle 11g, JavaScript, jQuery, Maven;
- SVN;
- Eclipse;

More Info (links, documents, screenshots, examples): Java Spring (Document Circulation Project).
______________________________________________

08.java_spring_jsf_fin

Java Spring software development (Java Web Applications and WebServices) of Financial
On-Line Payments Project (Suite of Java Spring Applications, that provides global business
payments and money transfers to be made through the Internet like PayPal, Payoneer,...)
(startup, US customer).
Technologies and tools:

- Tomcat 7, Spring (Core Beans, WebServices), JSF 1.2/2.0 (Richfaces), RMI, JMS (Apache ActiveMQ),
Hibernate, PostgreSQL, Maven, JUnit;
- JCA, OpenSSL command-line tools;
- SVN;
- Eclipse, Linux (OpenSUSE, Mint);

More Info (links, documents, screenshots, examples): java_spring_jsf_fin.

______________________________________________

07.java_ee_ejb_jsf
Java EE application (Enterprise Applications, Web Applications, WebServices
using follow platforms JBoss AS, WebLogic AS) of the Control Telecommunication System
(several projects), that implements suite of TR-069 protocols family for US Customers.
Technologies and tools:

- Tomcat 7, WebLogic AS 11, Jboss AS 6, EJB3, JSF 1.2/2.0 (Richfaces), RMI,
Hibernate/OpenJPA, Oracle 11g, MySQL, Maven, JUnit;
- SVN;
- Eclipse, Linux (OpenSUSE, Mint);

More Info (links, documents, screenshots, examples): java_ee_ejb_jsf.

______________________________________________

06.java_spring_jsf_law

Java Spring application of the information system for Law Government Organization using JSF Richfaces,
Hibernate, Spring Core, Spring Security, Facelets (Italian customer).
Java web service of import/export support functionality for information system for Law Government Organization
using Java EE (Axis SOAP, JAXB, Hibernate) (Italian customer).
Technologies and tools:

- Tomcat 6, Spring (Core Beans, Security), JSF 1.2 (Richfaces), Axis SOAP, JAXB,
Facelets, Hibernate, MySQL;
- Hudson CI, SVN;
- Eclipse, NetBeans, Linux (Slackware);

More Info (links, documents, screenshots, examples): java_spring_jsf_law.

______________________________________________

05.cybermate

Medical software product for a big US company (with high requirements to quality and stability), that provides development of medical hardware and software.
This suite is an information system, that provides specialized ambulance workflow. This system communicates
with ambulance devices (defibrillator) and allows to get info from defibrillator(s), include this info into ambulance
workflow and save it on the server side. Also this information system allows to distribute and remote assign of
ambulance duty calls via server admin service/application.
This suite has been developed for Ambulance services and includes:
- Java SE client part (Java SE, JNI, RMI, Axis SOAP Client, Secure Network Connections, Java multi-threading)
for early mobile devices (tablet PC platform); For this client has been developed transactional high-stable	subsystem (controlling hash codes of files and modules), that provides remote updating of new versions, using	secured network connections (Axis SOAP client + SSL + JSSE + JCA), instead non-stable Java WebStart;
- Huge suite of COM/OLE/ActiveX servers (including multi-threading)(using VS “C/C++” and MS Access), that is a	part of Complex Medical Tools (including MFC/ATL/WTL GUI tools) which support communication with special	medicine devices; This suite is used by Java SE client part;
- Java SE RMI Server (Java SE, RMI, JSSE, JCA, JDBC, MS SQL);
- ASP.NET Admin Server (C#, ASP.NET + MS SQL) - admin application for control of ambulance workflow, including
remote assign of ambulance duty calls;
- Tomcat Apache-based server, that provides secure distribution of new versions of Java SE client parts (Apache	Tomcat, Axis SOAP server, SSL, JSSE, JCA, OpenSSL command-line tools);
Technologies and tools:
- Java SE 6, JNI, WebStart (partially), RMI, JSSE, JCA, Swing, Awt, JAXB, JDBC, Axis SOAP,
JUnit, Java Mutli-Threading;
- Visual Studio C++, C/C++, stl, COM/OLE/ActiveX, ATL, MFC, Windows Mutli-Threading;
- OpenSSL command line tools;
- MS SQL (main client-server storage of ambulance workflow documents);
- MS Access (used by suite of COM/OLE/ActiveX servers and GUI tools as
temporary storage of hardware (medicine devices) info,
used by the client at the tablet PC platform);
- Microsoft SourceSafe, Team Foundation Server (TFS);
- Microsoft SharePoint;

More Info (links, documents, screenshots, examples): cybermate.
______________________________________________

04.crypto_sdk

Taking part in the development of Crypto SDK, that implements National Ukrainian standard
of digital signature based on elliptic curves (National Ukrainian standard: DSTU 4145-2002).
Technologies and tools:
- MS Visual C++, Windows SDK, C/C++, stl, MFC, Long Numbers Math, Crypto Primitives,
Crypto Algorithms, Assembler, NASM;

More Info (links, documents, screenshots, examples): Crypto SDK.

______________________________________________

03.api_hooks_sdk

API hooks SDK (using Hooks, remote threads technology, PE header analysis).
Suite, that provides monitoring of some functions calls (input-output functions) in varoius processes of
Windows OS. Suite uses Win drivers to inform about new launched processes.
Technologies and tools:

- MS Visual C++, Windows SDK, C/C++, stl, MFC, Assembler, NASM, SysInternals/WinInternals Tools,
Kernel and User Mode debuggers (SoftIce, OllyDebug), WinPCap;

More Info (links, documents, screenshots, examples): API hooks SDK.
______________________________________________

02.billing_solver

Taking part in the development of a Billing Solution for a big European Telecommunication company (for the AIX Unix platform).
Technologies and tools:

- C/C++98, GCC/G++, Posix Api, GNU BIN Tools, STL, GDB, DDD, Make Tool, Bash,
Borland C++ Builder 3.0-5.0, Microsoft Visual C++ 6.0, Win32 API, Multi-Threading (AIX/Linux/Windows), Oracle	9i, Oracle Client API, PL/Sql Developer, Toad;
- CVS;
- AIX Unix, Fedora/RedHat Linux;

More Info (links, documents, screenshots, examples): Billing Solution.
______________________________________________

01.fdpa_fdp_language

Form Data Postprocessor Application (FDPA) (for a US company).

Tool, that implements Form Data Postprocessing Language (FDPL). Form Data Postprocessor Application implements own (without flex(lex)/bison(yacc) and similar tools) generators of lexical analyzer and syntax parser. Syntax parser implements recursive descent parser algorithm. Form Data Postprocessor Application provides processing of command scripts (FDPL) (generates simple byte-code files during processing of command scripts (FDPL)) and provides interpreted processing of data files in multi-thread mode.
This application has been used by US government department in the Massachusetts State.
Technologies and tools:
- C/C++, Visual Studio C++, stl, MFC, Windows API, Windows Multi-Threading;

More Info (links, documents, screenshots, examples): Form Data Postprocessor Application.

______________________________________________

Projects (detailed descriptions):

below...

______________________________________________

25.sm_vpn_stack_suite

Own product/project.
sm_vpn_stack_suite (Android VPN Stack Suite) tool.

Features of the Android VPN Stack Suite:
- Simple TCP/UDP socket server (with multi-thread support) (Linux platform), that implements open simple
communication protocol (application level):
- TCP:
- The Client connects to the TCP Server;
- The Client sends "socket_client: Hello" to the Server;
- The Server reads message from the Client;
- The Server sends "socket_server: Hello" to the Client;
- The Client reads message from the Server;
- The Client sends some text message (size 1024 with '\0' symbol) to the Server;
- The Server reads text message from the Client and generates inverted message (src: "1234567890"
-> inverted: "0987654321");
- The Server sends inverted message to the Client;
- The Client reads message from the Server;
- The Client send read message to the Server;
- The Server reads text message from the Client and generates inverted message (src: "0987654321"
-> inverted: "1234567890");
- The Server sends inverted message to the Client;
- The Client reads message from the Server;
- Last received message by the Client should be similar to the first message sent by
Client to the Server;
- UDP:
- The Client connects to the TCP Server;
- The Client sends "socket_client: Hello" to the Server;
- The Server reads message from the Client;
- The Server opens new UDP connection on new socket port;
- The Server sends new UDP port number to the Client (using first connection);
- The Client reads the UDP port number and closes first connection;
- The Client creates new UDP connection, using received from Server port number;
- The Client sends "socket_client: Hello" to the Server;
- The Server reads message from the Client;
- The Server sends "socket_server: Hello" to the Client;
- ... Then communication protocol (application level) is same as described in TCP section;
- Simple TCP/UDP socket client (Microsoft Visual Studio C++, Windows platform), that implements previous	described protocol;
- Simple TCP/UDP socket client (Android Studio/Android SDK, Android platform), that implements previous described	protocol;
- VPN Stack Application, that (Android Studio/Android SDK/Android NDK/C, Android platform), that is based on
VpnService (Android platform) and implements intermediate IP/TCP/UDP stack (JNI/C/Sockets);
- VPN Stack Application provides catching, monitoring and processing TCP/UDP/ICMP/IP packages; Then these	packages are processed (via JNI) at the Native API level;
- VPN Stack Application can catch packages from some defined application (if text edit "Filtered Package Name" is	defined) or from all applications (if text edit "Filtered Package Name" is empty);
- VPN Stack Application creates tun0 device (after launching), which is used for catching
TCP/UDP/ICMP/IP packages;
- VPN Stack Application reads packages, sent from Android application(s) from tun0 device, provides processing	these packages and creates new or uses saved (sessions) TCP connections (if Android Application sends TCP	package) or just uses sendto (if Android Application sends TCP package);
- VPN Stack Application receives all packages from network, provides processing these packages
and writes packages to tun0 device, then packages will be received by Android application(s);
- VPN Stack Application doesn't use Raw Sockets;
- VPN Stack Application writes detailed log to Logcat and to the file
/data/data/com.smansoft.vpn_stack/files/logs/vpn_stack.log;
- Follow applications from this suite:
- Simple TCP/UDP socket server (with multi-thread support) (Linux platform);
- Simple TCP/UDP socket client (Microsoft Visual Studio C++, Windows platform);
- Simple TCP/UDP socket client (Android Studio/Android SDK, Android platform);
have been created and have been used for testing network connections and for testing the VPN Stack	Application;
Technologies and tools:
- Android Platform: Android Studio, Android SDK, Android NDK, JNI, C11, gradle, CMake, POSIX, multi-threading,	sockets;
- Windows Platform: C++17, Visual Studio 2019, Git, Tortoise Git client;
- Linux Platform: C++17, gcc, Make Tool, Bash scripts, Git;

Activity:
- Development Linux Socket Server Application;
- Development Windows Socket Client Application;
- Development Android Socket Client Application;
- Development Android VPN Stack Application;

Resources:

Links file;

Blog Post;

sm_vpn_stack_suite-0.0.1.1

License.txt;

ChangeLog.txt;

ReadMe.txt;

Demo Video (.mp4), Screenshots (.jpg), demo log files (.log);

Some screenshots:

______________________________________________

24.vpn_tunnel

vpn_tunnel:
- simple Android Service Application, that is based on the Android VpnService
and provides catch and tunneling ip/tcp, ip/udp,... packages to Linux application, that
extracts packages and routes them in internet;
- provides tunneling in both directions: from Some Android Application to Internet
(Some Server) and from Internet (Some Server) to Some Android Application;
- this tool is based on ToyVpn and doesn't provide any encryption of tunneling packages;
- some improvement of handshake (Vpn tunnel service and Linux tunnel server) has been provided;
Technologies and tools:
- Android Platform: Android Studio, Android SDK, Gradle, Git;
- Linux Platform: Debian 10, gcc, Make tool, Bash, Git;

Activity:
- Development VPN Tunnel Android Service Application;
- Development Linux Tunnel Server Application;

Resources:

Demo Video (.mp4), Screenshots (.jpg);

Some screenshots:

______________________________________________

23.btcpool tuning

btcpool tuning - building, configuring and some investigate of the suite:
- bitcoind (bitcoin launched in the server mode);
- suite of tools of btcpool:
- blkmaker;
- gbtmaker;
- jobmaker;
- sserver (Stratum Server);
- statshttpd;
- sharelogger;
- slparser;
- poolwatcher;
- Kafka (+zookeeper) - broker manager (bus);
- simulator (part of the btcpool tools suite) -
multi-user and multi-miner testing tool, that provides testing the suite working and
modules cooperation, generating test/virtual blockchain blocks;
- MySql;
- Httpd + Php;

Technologies and tools:
- Linux Platform: Debian 10, gcc, g++, Make tool, GTest (unit tests framework from Google),
MySql, Php, Git;

Activity:
- Building bitcoin project (using sources);
- Building btcpool project (from sources), rebuilds with debug options;
- Configuring and launching bitcoind, bitcoin-qt (including initializing wallets, datadirs, ...);
- Configuring and launching kafka, zookeeper, btcpool (all modules, configuration files, ...);
- Configuring and launching btcpool (in various modes: one user/multiuser, various number of workers/miners);
- Investigating some algorithms of working this schema, including:
- rewards generation;
- new test blocks generation (including period and it's tuning);
- multi-user mode;
- multi-miners mode;

Resources:

Screenshots (.jpg);

Some screenshots:

______________________________________________

22. sm_producer_consumer

Own product/project.

sm_producer_consumer (SM Producer Consumer) - is an open-source multi-thread demo/template

resolving the producer–consumer (bounded-buffer) problem.

Features of the sm_producer_consumer (SM Producer Consumer) tool:

- Multi-thread demo/template, that resolves producer-consumer problem (bounded-buffer problem);

- Using thread support primitives (classes, api), which are parts of the C++ (C++11) language, defined by

the standard ISO/IEC 14882:2011;

- Using several producer-consumer objects, which use suite of limited-size queues shared by various number of	threads with various productivity/periodicity/frequency;

- Writing processed results into the text file (in the special directory);

- Logging results and applications workflow;

- Multi-thread (thread-safe) log library, that supports output to the log file and/or console;

- Multi-thread (thread-safe) log library, supports log level output (TRACE, DEBUG, INFO, WARN, ERROR, FATAL);

- Usage string secure library in some C-language functions;

- Self-stopping support, when file '.stop' is placed in the special directory;

Technologies and tools:

- Linux Platform: C/C11/C++/C++11, gcc, g++, Make Tool, Kdbg,

Eclipse IDE for C/C++ Developers, valgrind, Bash scripts, Git;

- Virtual Box (Virtualization Software), Various distros of Linux (Debian 9/10, OpenSUSE, Ubuntu, Mint);

Activity:

- Design and architecture;

- Software development;

- Documentation/help;

- Testing;

Resources:

Links file;

Blog Post;

sm_producer_consumer on GitHub;

sm_producer_consumer – 0.0.1.1;

License.txt;

ChangeLog.txt;

ReadMe.txt;

Install.txt;

Help.txt;

Screenshots (.jpg), demo log file (.log), demo result file (.out.txt);

Some screenshots:

______________________________________________

21. sm_regex

Own product/project.

sm_regex (SM Regular Expressions Calculator) - is a multi-platform (Windows/Linux) Qt-based Regular Expressions Calculator.

Features of the SM Regular Expressions Calculator:

- Multi-platform application: there are builds for Windows 64/32 (.zip) and Linux 64 (.tar.gz);

- Calculation a Match (finds all substrings in the input string which match a regular expression pattern

and returns all occurrences) using regular expressions;

- Calculation a Replace (finds all substrings in the input string which match a regular expression pattern

and replaces all occurrences, by entered replacement text), using regular expressions;

- Calculation a SubExpressions (finds all substrings in the input string which match a regular expression pattern

and separates text, by found substrings), using regular expressions;

- Usage follow Regular Expressions engines: Qt RegEx, STL C++ RegEx (C++ 11);

- Usage ECMAScript standard (by both engines as Qt RegEx as STL C++ RegEx (C++ 11));

- One-line and multi-line modes;

- Case-insensitive and case-sensitive modes;

- Saving the result in the Clipboard;

- Saving the result in a Text File;

- Tuning interface, usage Light and Dark themes;

- Usage database, where Regular Expressions and options (one-line/multi-line and case-insensitive/case-	sensitive), using during calculations can be saved;

- Usage the System Tray on the Windows and Linux platforms during work of the SM Regular Expressions Calculator	tool;

- Log of results and applications workflow;

- Portable build/version (archive(s) which can be just extracted);

Technologies and tools:

- Windows Platform: C/C11/C++/C++11, CMake, Qt 5.14.2, Qt Creator 4.14,

Visual Studio 2019 (including NMake tool), diff tool, Git, Windows Batch scripts,

Tortoise Git client;

- Linux Platform: C/C11/C++/C++11, CMake, gcc, g++, Make Tool, Kdbg,

Qt 5.14.2, Qt Creator 4.14, diff tool, Python 3, Bash scripts, Git;

- Virtual Box (Virtualization Software), Various distros of Linux (Debian 9/10, OpenSUSE, Ubuntu,

Mint);

Activity:

- Design and architecture;

- Software development;

- Documentation/help;

- Testing;

Resources:

Links file;

Blog Post;

Product Page;

sm_regex – 0.0.1.1;

License.txt;

ChangeLog.txt;

ReadMe.txt;

Install.txt;

Help.txt;

Screenshots (.jpg), demo log files (.log);

Some screenshots:

______________________________________________

20. vector_syntax_parser

Development of some suite of tools and PostgreSQL modules/extensions at the backend layer (for US and India Customers),
that provides processing of vector data, using special expressions language. This suite and PostgreSQL DB data are used by .Net Framework Web Application.

http://smansoft.com/portfolio/20.vector_syntax_parser/vector_syntax_parser.jpg.
This suite and PostgreSQL DB data are used by .Net Framework Web Application.
Technologies and tools:

- Linux Platform (Ubuntu, Debian);
- C11, C++11/C++17, GCC/G++;
- flex, bison;
- STL, Boost C++, Log4cplus;
- Multi-threading;
- Posix API;
- Make Tool;
- GDB, Kdbg;
- Eclipse C/C++, KDevelop;
- valgrind;
- Git, bitbucket;
- PostgreSQL 10, modules/extensions of PostgreSQL;
- PostgreSQL SPI;
- libpq, libpqxx;
- PL/pgSQL;
- pgAdmin, DBeaver;
- https://github.com/pjungwir/aggs_for_arrays;
- https://github.com/pjungwir/aggs_for_vecs;
Activity:

- Development of re-entrant/multi-thread support syntax parser, that implements special expressions language
for processing of vector data, that supports arithmetic, bitwise operators, comparison, various types
of constants, several functions for the processing of vector data, brackets, ordering, …:

- flex, bison;

- Development of console tool, that provides processing of vector data, using special expressions language:

- flex, bison;

- libpq, libpqxx;

- STL, Boost C++ (command line parameters, xml files reading, regular expressions parsing, boost algorithms);

- Log4cplus;

- Make Tool;

- GDB, Kdbg;

- Eclipse C/C++;

- valgrind;

- Development of PostgreSQL module/extension, that provides processing of vector data, using special expressions	language:

- flex, bison;
- PostgreSQL Native API (SPI);
- STL, Boost C++ (regular expressions parsing, boost algorithms);
- Make Tool;
- GDB, Kdbg;
- Eclipse C/C++, KDevelop;
- Updating the PostgreSQL open-source modules/extensions, adding some additional functionality (some additional	vectors processing, weighted medians solving, standard deviation (sigma) solving):

- https://github.com/pjungwir/aggs_for_arrays;
- https://github.com/pjungwir/aggs_for_vecs;
- ltree (standard PostgreSQL module/extension);
- PostgreSQL Native API (SPI);
- Make Tool;
- GDB, Kdbg;
- Eclipse C/C++, KDevelop;
- Development of some suite of stored functions and triggers (PostgreSQL, PL/pgSQL);
- Development of some suite of console tools for reading/analysis/parsing/extracting data/multi-thread export to DB,
that reads vector data in binary formats and provides multi-thread export these vector data to the DB.	Development some version of syntax/parser, that provides converting from one dialect of special expressions
language to another:

- flex, bison;
- libpq, libpqxx;
- STL, Boost C++ (command line parameters, xml files reading, regular expressions parsing, boost algorithms,	multi-threading);
- Log4cplus;
- Make Tool;
- GDB, Kdbg;
- Eclipse C/C++;
- valgrind;
- Support of Ubuntu/Debian WS/Servers;

Screenshots (.jpg);

Some screenshots:

______________________________________________

19. sm_calculator

Own product/project.

sm_calculator (SM Calculator) tool - is a multi-platform (Windows/Linux) open-source console calculator, implementing a simple language for processing of mathematical expressions.

Features of the SM Calculator:
- Multi-platform application: there are builds for Windows 64/32 (.zip) and Linux 64/32 (.tar.gz);
- Various types of values (64 bits integers, 64 bits floats, strings);
- Various float constants (pi, exp,...);
- Solving of mathematical expressions, using basic arithmetic operators;
- Solving of mathematical expressions, using bracket delimiters
'(' and ')' (in one expression) and delimiters ';', '\n';
- Solving using suite of mathematical (including trigonometric, logarithm, exponentiation)
functions;
- Solving using bitwise functions and operators;
- Various types of entering and output formats of integers (decimal, octal, hexadecimal,
binary formats);
- Various values of unit for measuring of angles (radians, degrees, gradians), which are used
by trigonometric functions;
- Support of output properties (precision) of float values;
- Suite of converting functions (various values of unit for measuring of angles, various
types of entering and output formats of integers);
- Suite of commands, which provide setup of configuration of SM Calculator;
- Several modes of execution (processing of files, processing of expressions, obtained via command line,
processing of expressions in interactive mode, using standard input/output devices);
- Control/administration the creation/start of the log of the sm_calculator (SM Calculator) tool:
start without log output (command line option: -q, --no_log)
changing the path of the created/opened log file (command line option: -l, --log_file);
- Access to the sm_calculator (SM Calculator) tool can be included into $PATH (Windows/Linux) and
the sm_calculator (SM Calculator) tool can be launched from any current directory;
- Detailed processing of syntax error(s);
- Restoring of syntax parsing after error(s);
- Reentrant implementing of the parser, i.e. parser can work in multi-thread mode;
- Help (command: help[;] or command line option: -h, --help);
SM Calculator supports follow modes of execution:

- processing of file, that contains expression(s);
- processing of command line expression(s);
- interactive mode (user enters expression(s), using standard input device/console).
User can use same expressions in all these modes (processing of file, processing of command line expression(s),	interactive mode);
Technologies and tools:
- Windows Platform: C/C11, CMake, Visual Studio 2019 (including NMake tool), flex, bison,
diff tool, Python 3, Git, Windows Batch scripts, Tortoise Git client;
- Linux Platform: C/C11, CMake, gcc, Make Tool, Kdbg, flex, bison,
diff tool, Python 3, Git, Bash scripts;
- Virtual Box (Virtualization Software), Various distros of Linux (Debian 9/10, openSUSE, Ubuntu,
Mint);

Activity:

- Design and architecture;
- Software development;
- Development of build scripts;
- Development of unit tests;
- Documentation/help;
- Testing;

Resources:

Links file;

Blog Posts:

- version 0.2.0.4 release;

- building the solution;

Product Page;

sm_calculator – 0.2.0.4;

License.txt;

ChangeLog.txt;

ReadMe.txt;

Install.txt;

Help.txt;

Screenshots (.jpg), demo video (.mp4), demo log files (.log);

Some screenshots:

______________________________________________

18. secure_messenger

Android Secure XMPP/Jabber Messenger (for some European Company).
Adding secure solutions to already implemented XMPP/Jabber protocol.

Technologies and tools:

- Java 8;
- C/C++;
- Android Studio;
- Android SDK;
- Android NDK;
- XMPP/Jabber protocol;
- OpenSSL;
- Olm (Double-Ratchet protocol);
- SQLite cipher package;
- gradle;
- CMake;
- Git;

Activity:
- Build of OpenSSL for Android platform;
- Native integration of OpenSSL in the Secure XMPP/Jabber Messenger (JNI access);
- Adding native OpenSSL-based crypto functionality:
- SHA256;
- SHA512;
- ECDH (using NID_X9_62_prime256v1/NID_secp256k1);
- AES256-CBC;
- Base64;
- Strong encrypted login, based on native OpenSSL-based crypto functionality:
- SHA512;
- Encryption of SQLite Database, using OpenSSL, based on:
net.zetetic:android-database-sqlcipher package, that uses:
- AES256-CBC;
- Native SSL connect to Jabber Server(s) (or any server, using SSL protocol)(using native OpenSSL functionality)	(messenger-to-server secure connection) using protocols:
- TLSv1.2;
- TLSv1.3;
- Implementing the contact-to-contact shared secret generation, using ECDSA (over XMPP/Jabber protocol):
ECDH protocol, using Elliptic Curve: NID_X9_62_prime256v1 (NID_secp256k1);
Generated contact-to-contact shared secret is used for base initializing of
contact-to-contact Double-Ratchet protocol:
https://signal.org/docs/specifications/doubleratchet/
- Integration the Double-Ratchet Algorithm (based on olm) in the Secure XMPP/Jabber Messenger
and integration Double-Ratchet Algorithm in the the XMPP/Jabber protocol (contact-to-contact encryption),
using the olm sdk:
https://gitlab.matrix.org/matrix-org/olm
Olm uses:
- EC 25519 (X25519) - used by ECDH during every generation of a new Shared Secret;
- AES256-CBC - Encryption of message, using new Shared Secret;
- HMAC-SHA256 - hmac for every message;
Secure XMPP/Jabber Messenger(s) provides regular synchronizing of the Double-Ratchet Protocol, for
the same contact-to-contact shared secret usage;
- Suite of bash scripts for generation the EC (prime256v1) keys in formats (for OpenSSL connections):
- PEM;
- PKCS12 (container, encrypted, by AES-256-CBC);
- Adding usage of Dagger (dependency injection framework for Java, Kotlin, and Android):
https://dagger.dev/;
- Multi-platform (Windows/Linux/Android) build of WebRTC, using depot_tools (for following integration);

Screenshots (.jpg), demo video (.mp4), examples;

Demo description:

-------------------------------------------

secure_messenger.launch.01.mp4

-------------------------------------------

Shows first launch of Secure Messenger and joining of Secure Messenger to the Jabber account;

/data of com.secure.encrypted.chat.messenger package:

following files:

- databases/

- history.enc

- message_delete.enc

- files/

- keys/

- ca_certificates.crt

- keys.p12

- logs/

- x-chat_logcat.log

- x-chat_logout.log

- shared_prefs/

- "com.secure.encrypted.chat.messenger_preferences.xml"

- "com.XECURE CHAT.systems.crypto.xml"

files:

- history.enc

- message_delete.enc

encrypted Databases (AES-256-CBC);

- ca_certificates.crt

certificates, is used during creating of SSL connection;

- keys.p12

EC public and private keys, are used during creating of SSL connection;

keys.p12 - pkcs12 is encrypted by AES-256-CBC:

openssl pkcs12 -certpbe AES-256-CBC -keypbe AES-256-CBC -maciter -macalg sha256 -export

-in "$OUT_DIR"/"$CERT_FILE" -inkey "$OUT_DIR"/"$KEY_FILE" -passout pass:"$CERT_PASSWORD"

-out "$OUT_DIR"/"$CERT12_FILE"

- x-chat_logcat.log

- x-chat_logout.log

log files:

x-chat_logcat.log - generated by Java code;

x-chat_logout.log - generated by JNI code;

- "com.secure.encrypted.chat.messenger_preferences.xml"

- "com.XECURE CHAT.systems.crypto.xml"

property files;

"com.XECURE CHAT.systems.crypto.xml"

contains:

<map>

<boolean name="is_locked" value="false" />

<string name="password_hash">ujJTh2rta8ItSm/1PYQGxq2GQZXtFEq1yHYhtsIztUi66uaVbfNG7IwX9eoQ817jy8UUeX7X3dMUVGTioLq0Ew==</string>

<string name="iv">2xCVvbjy6fUBUf06PrrWQw==</string>

<string name="domain_encrypted">CnUykjJ+y9XPox2rz6cF437RFlmv9+nnwo3OG/EMYDs=</string>

<string name="key">jqrXjG59JdWwDGvK3Ox9UMAmQx8GGH+M0LorW9Tf3ew=</string>

</map>

"password_hash" - hash of password;

"iv"

"key" - parameters of AES-256-CBC; these parameters are used for encryption of DB and other data;

"domain_encrypted" - XMPP/Jabber domain, encrypted by AES-256-CBC;

"iv"

"key"

and

password/key for reading keys.p12

should be saved on a remote protected storage;

in these release theay are saved in code and in "com.XECURE CHAT.systems.crypto.xml".

-------------------------------------------

secure_messenger.connect.ws-1.01.mp4

secure_messenger.connect.ws-2.01.mp4

-------------------------------------------

Show communication of two secure messengers.

They are launched at two different WSs (WS-1 and WS-2).

And they use various accounts:

sman_01@jabber.hot-chilli.eu

sman_02@jabber.hot-chilli.eu

.

At the start both secure messengers are launched.

They created SSL connections to XMPP/Jabber servers.

Then they create point-to-point connection, synchronizing public keys and generating common share secret, that is	used as the start point of Double-Ratchet protocol. I.e. Double-Ratchet protocol should use same shared secret at

the both side as init point.

During generation of Shared Secret ECDH is used.

After syncronizing of Shared Secrets both Secure Messenger have same state (ready for send/receive messengers):

12/06/2020 14:34:13.696 - <XenCrypt2ServiceLib> - setState(): state = 6

After that sent mmessage is read from buffer and encrypted/decrypted, using Double Ratchet:

secure_messenger.connect.ws-1.01.mp4

secure_messenger.connect.ws-2.01.mp4

and see attached logs.

After sending/receiving of several messages, secure messanger is closed at the WS-2 and launched again.

After that synchronizing of keys is produced again.

then after state:

12/06/2020 14:44:50.051 - <XenCrypt2ServiceLib> - getState(): this.state = 6

messages sent again (WS-1 <-> WS-2).

See:

secure_messenger.connect.ws-1.01.mp4

secure_messenger.connect.ws-2.01.mp4

-------------------------------------------

secure_messenger.connect.ws-1.02.mp4

secure_messenger.connect.ws-2.02.mp4

-------------------------------------------

Show similar communication

(like

secure_messenger.connect.ws-1.01.mp4

secure_messenger.connect.ws-2.01.mp4)

of two secure messengers, when one messenger sends several messages at the same time and other messenger send several messages at the same time too.

-------------------------------------------

Some screenshots:

______________________________________________

17. qt-win

Qt-based CRM (customer relationship management) software tools (only Windows platform).
Projects of the Qt-based CRM application contain 65 forms and about 100 classes (without log4cplus).
Technologies and tools:
- C++11;
- Visual Studio 2003;
- Visual Studio 2017;
- Qt3.3.5;
- Qt5.12.2;
- PostgreSQL 10/11;
- log4cplus;

Activity:

- Converting (and refactoring) sources of the Qt-based CRM from usage of Qt3.x api to Qt5.x api;
- Optimizing for increasing of CRM tools performance;
- Adding log4cplus support;
- New small Qt-based admin tool has been developed;

Screenshots (.jpg);

Some screenshots:

______________________________________________

16. file_exchanger

Own product/project.
File Exchanger (file_exchanger) Tool is a peer-to-peer files exchanger for Windows/Linux platforms.

Features of File Exchanger (file_exchanger) Tool:
- transfer of files from client to server, using open socket connections;
- transfer of files from client to server, using SSL connections;
- control of entirety of received files, comparing of checksum values sent and received files,
using CRC-32 algorithm;
- using transfer of files from client to server, using SSL connections;
- using follow SSL mode/algorithms (TLSv1.2), if SSL connection is used:
ECDHE-ECDSA-AES256-GCM-SHA384
TLSv1.2 - version
TLS - the protocol used
ECDHE - the key exchange mechanism
ECDSA - the algorithm of the authentication key
AES - the symmetric encryption algorithm
256 - the key size of AES
GCM - the mode of AES
SHA384 - the MAC used by the algorithm
prime256v1 (NIST P-256, secp256r1) - Elliptic Curve, that is used by ECDHE and ECDSA;
- using unique CA of client and server certificates;
- user can update CA, client/server keys/certificates, using suite of scripts ssl.ecdsa.tar.gz
(ReadMe.txt in ssl.ecdsa.tar.gz);
- using of xml configuration files, which can be updated by user and will be applied
without restart of processes (sm_file_send_clns, sm_file_send_srvs);
- scanning of configured directories, where sent files can be copy;
- copying of sub-directories with files, saving of sub-directories tree at the server side;
- support of unicode symbols in file/directory names;
- backup of sent/received files;
- server and client modules can be launched as Services (Windows)/Daemons (Linux);
- console command line control application (only Windows) of client/server Services (requires
Administrator permissions);
- Windows gui application, that allows to monitor states of client/server Services, control
of client/server Services and change parameters of client/server Services;
- Linux gui application (Qt-based), that allows to monitor states of client/server Daemons,
control of client/server Daemons (when it's possible, according to users permissions)
and change parameters of client/server Daemons;
- using ECDSA (NIST P-256, secp256r1) for signing/verification parameters, which are sent
between client/server and gui applications (Windows/Linux);
- tool applications don't use any intermediate servers and transfer files directly between
client and server;
Technologies and tools:
- Windows Desktop: C/C++, CMake, Visual Studio (C++) 17, MFC, WinApi, Poco, OpenSSL,
Sockets, Secure Sockets, Multi-threading, Windows Services, NSIS, Git, Windows Batch
scripts, Tortoise Git client;
- Linux Desktop: C/C++, CMake, gcc/g++, Qt, Qt Creator, Kdbg, Posix api, Poco, OpenSSL,
Sockets, Secure Sockets, Multi-threading, Linux Daemons, Linuxdeployqt, Makeself, Linux
Bash scripts, Git, Git Cola client;
- Virtual Box (Virtualization Software), Various distros of Linux (Debian 8/9, openSUSE, Ubuntu,
Mint);

Activity:

- Design and architecture;
- Software development;
- Development of build scripts;
- Documentation/help;
- Testing;

Resources:

Links file;

Blog Post;

Product Page;

file_exchanger – 0.0.11.11;

License.txt;

ReadMe.txt;

Screenshots (.jpg), demo video (install, run) (.mp4);

sm_fe.win.install.mp4;

sm_fe.linux.install.01.mp4;

sm_fe.linux.install.02.mp4;

sm_fe.win-linux.run.01.mp4;

sm_fe.win-linux.run.02.mp4;

sm_fe.win-linux.run.03.mp4;

sm_fe.win-linux.run.04.mp4;

Some screenshots:

______________________________________________

15. ssl_scripts

Own product/project
SSL ECDSA Scripts and SSL Web Scripts.

The main features of SSL ECDSA scripts:
- generation of CA key and Self-Signed CA Certificate;
- generation of SSL private key, public key and sign public key, using CA key
and generation of X.509 certificate of server;
- generation of SSL private key, public key and sign public key, using CA key
and generation of X.509 certificate of client;
- usage of Elliptic Curves (ECDSA-WITH-SHA384) prime256v1 (NIST P-256, secp256r1) for
signing of public keys;
The main features of SSL Web scripts:
- generation of CA ECDSA key and Self-Signed CA ECDSA Certificate;
- generation of SSL ECDSA private key, ECDSA public key and sign ECDSA public key, using ECDSA CA key
and generation of X.509 certificate of server (server certificate);
- generation of CA RSA key and Self-Signed CA RSA Certificate;
- generation of SSL RSA private key, RSA public key and sign RSA public key, using RSA CA key
and generation of X.509 certificate of server (server certificate);
- usage (by default) of Elliptic Curves (ECDSA-WITH-SHA256) prime256v1 (NIST P-256, secp256r1) or RSA
(RSA2048-WITH-SHA256) for signing of public keys;
Technologies and tools:
- Bash, OpenSSL;

Activity:

- Design;
- Software development;

Resources:

Blog Posts:

- SSL ECDSA scripts 0.0.11.11;

- Spring Login (Stack Templates) with HTTPS;

ssl-ecdsa-scripts on GitHub;

ssl-web-scripts on GitHub;

Screenshots (.jpg);

Some screenshots:

______________________________________________

14. spring_login

Own product/project.
Spring Login.

Suite of demo projects (tempaltes) (Spring, Spring Boot, Spring-Security, JSP, Apache Tiles, Thymeleaf, Spring-Jpa,
Spring-Data-Jpa, JCache, Ehcache, Infinispan, Hibernate, EclipseLink, MySQL, Logback, Maven, Gradle).
Technologies and tools:
- Java 8;

- Eclipse;

- Spring;

- Spring Boot;

- Spring-Security;

- JSP;

- Apache Tiles;

- Thymeleaf;
- Spring-Jpa;

- Spring-Data-Jpa;

- Jcache;

- Ehcache;

- Infinispan;

- Hibernate;

- EclipseLink;

- MySQL;

- Logback;

- Maven;

- Gradle;

- Git;

Activity:

- Design and architecture;
- Software development;
Resources:

Blog Posts:

- Spring Login (Stack Templates);

- Spring Login (Stack Templates) with HTTPS;

Spring Login on GitHub;

Screenshots (.jpg);

Some screenshots:

______________________________________________

13. print_tool

Own product/project.
Print Tool.

Reflection-based suite of facades over Logger, that provides logging of complex objects.
Technologies and tools:
- Java 8 SE;

- Eclipse;

Activity:

- Design;
- Software development;

Resources:

Blog Posts:

- Java Print Tool;

Print Tool on GitHub;

Screenshots (.jpg);

Some screenshots:

______________________________________________

12. fundfulp2p

FundfulP2P project (Spring Boot application) (peer-to-peer fundraising).

Technologies and tools:
- Java Spring Framework: Java 8, Spring MVC + Spring Security + Spring Data JPA +
EclipseLink (as ORM), MultiTenancy, Thymeleaf, WePay, Validation,
CSS template Admin LTE, Captcha, JMeter, Facebook authentication, Share with twitter
facebook and google, Upload care, Scheduler to send emails, Trigger emails, Amazon email
service client, SQL Injection, XSS Filter, Wysiwyg editor, Chart.js, Freemarker, Maintenance
page, Performance logging aspect, Cloudflare, Liquibase, Slf4j, Log4j, Apache Maven,
Bootstrap, JQuery, JUnit, Mockito, Git (Tortoise Git);
- SQL, PostgreSQL;
- Jenkins CI, GitLab, Jira;
- Bash, Bash Scripts (build, install/deployment);
- Linux (Debian), Docker Virtualization Software;

Activity:

- Development of Persistence (EclipseLink) Layer (Entities);
- Development of Some functionality of Services Layer;
- Development of Unit tests and Integration tests;
- Stress Testing of some functionality, using JMeter;
- Development of some Bash Scripts, which have been used by Jenkins and for providing of
deployment;
- Some investigation tasks, including working with Docker (creating of several Linux-based
containers);

Resources:

FundfulP2P;

Screenshots (.jpg), demo video (.mp4);

Some screenshots:

______________________________________________

11. sumac

Sumac. Java SE CRM (customer relationship management) software tools.

This is a big CRM tool for control of donation activity of persons and organizations.
Projects of the Sumac Java SE application contain more than 3k classes.
Technologies and tools:
- Java 6, Java SE (Awt, Swing), Java WebStart, SQL, Derby Db, MySQL, Jacob,
BouncyCastle, iText, Java Mail, SSHJ Client, Apache Ant, Apache Maven, JUnit, Mockito,
Bash, Eclipse, Squirrel Sql Client, Git (Tortoise Git);
- GitLab, Jira;

Activity:

- Software development;

Resources:

Sumac;

Screenshots (.jpg), demo video (.mp4);

Some screenshots:

______________________________________________

10. curr-ip

Own products/projects
On-line Network Tools.
On-line Nmap Scanner.
On-line Network Tools http://curr-ip.com – ajax-based suite of network tools, which
implements follow features: Current Ip location (including ipv6 support), Browser Info, DNS
resolve (A, AAAA, MX, NS, TXT, SRV, SOA, CNAME, HINFO requests), Reverse DNS
resolve (PTR request), Whois Info lookup, Geo-Location resolve;
On-line Nmap Scanner http://scan-ip.curr-ip.com/scan-ip.htm – ajax-based network tool, that
implements web interface of nmap command-line (with logging and backups support);
Technologies and tools:
- HTML, JavaScript, jQuery, Spring Core, Spring MVC, Spring Boot, EhCache, Hibernate,
MySQL, Tomcat, Apache WebServer, Debian, Log4j, JAXB, Spring Rest Json, nmap tool,
geolocation databases, Ant, Maven, Bash, Git, Git (Tortoise Git);
- Virtual Box (Virtualization Software), Linux Debian 8;

http://curr-ip.com
http://scan-ip.curr-ip.com/scan-ip.htm

Activity:

- Design and architecture;
- Software development;
- Testing;

Resources:

Curr-Ip;

Scan-Ip;

Screenshots (.jpg);

Some screenshots:

______________________________________________

09. java_spring

Java Spring software development (Java Web Applications and WebServices) of Document Circulation Project that provides control of Employee Visas (for Immigration Service)(UAE customer).
Technologies and tools:
- Tomcat 7, Jboss AS 6, Spring (Core Beans, Spring MVC, Spring Flow,
Security, WebServices), Apache Tiles 2.0, JSP, Hibernate, Oracle 11g, JavaScript, jQuery, Maven;
- SVN;
- Eclipse;
Activity:

- Development of some functionality of the project;

______________________________________________

08. java_spring_jsf_fin

Java Spring software development (Java Web Applications and WebServices) of Financial On-Line Payments Project (Suite of Java Spring Applications, that provides global business payments and money transfers to be made through the Internet like PayPal, Payoneer,…) (startup, US customer).
Technologies and tools:

- Tomcat 7, Spring (Core Beans, WebServices), JSF 1.2/2.0 (Richfaces), RMI, JMS (Apache ActiveMQ),
Hibernate, PostgreSQL, Maven, JUnit;
- JCA, OpenSSL command-line tools;
- SVN;
- Eclipse, Linux (OpenSUSE, Mint);
Activity:

- Development of some functionality of the project;
- Cryptography security development (using ECDSA for financial data verification);

______________________________________________

07. java_ee_ejb_jsf
Java EE application (Enterprise Applications, Web Applications, WebServices
using follow platforms JBoss AS, WebLogic AS) of the Control Telecommunication System
(several projects), that implements suite of TR-069 protocols family for US Customers.
Technologies and tools:

- Tomcat 7, WebLogic AS 11, Jboss AS 6, EJB3, JSF 1.2/2.0 (Richfaces), RMI,
Hibernate/OpenJPA, Oracle 11g, MySQL, Maven, JUnit;
- SVN;
- Eclipse, Linux (OpenSUSE, Mint);

Activity:
- Development of some functionality of the project;

______________________________________________

06. java_spring_jsf_law

Java Spring application of the information system for Law Government Organization using JSF Richfaces,
Hibernate, Spring Core, Spring Security, Facelets (Italian customer).
Java web service of import/export support functionality for information system for Law Government Organization
using Java EE (Axis SOAP, JAXB, Hibernate) (Italian customer).
Technologies and tools:

- Tomcat 6, Spring (Core Beans, Security), JSF 1.2 (Richfaces), Axis SOAP, JAXB,
Facelets, Hibernate, MySQL;
- Hudson CI, SVN;
- Eclipse, NetBeans, Linux (Slackware);

Activity:
- Development of some functionality of the project;
- Requirements agreements, detailed design specification control, control of technical solutions;

______________________________________________

05. cybermate

Medical software product for a big US company (with high requirements to quality and stability), that provides development of medical hardware and software.
This suite is an information system, that provides specialized ambulance workflow. This system communicates
with ambulance devices (defibrillator) and allows to get info from defibrillator(s), include this info into ambulance
workflow and save it on the server side. Also this information system allows to distribute and remote assign of
ambulance duty calls via server admin service/application.
This suite has been developed for Ambulance services and includes:

- Java SE client part (Java SE, JNI, RMI, Axis SOAP Client, Secure Network Connections, Java multi-threading)
for early mobile devices (tablet PC platform); For this client has been developed transactional high-stable	subsystem (controlling hash codes of files and modules), that provides remote updating of new versions, using	secured network connections (Axis SOAP client + SSL + JSSE + JCA), instead non-stable Java WebStart;
- Huge suite of COM/OLE/ActiveX servers (including multi-threading)(using VS “C/C++” and MS Access), that is a	part of Complex Medical Tools (including MFC/ATL/WTL GUI tools) which support communication with special	medicine devices; This suite is used by Java SE client part;
- Java SE RMI Server (Java SE, RMI, JSSE, JCA, JDBC, MS SQL);
- ASP.NET Admin Server (C#, ASP.NET + MS SQL) - admin application for control of ambulance workflow, including
remote assign of ambulance duty calls;
- Tomcat Apache-based server, that provides secure distribution of new versions of Java SE client parts (Apache	Tomcat, Axis SOAP server, SSL, JSSE, JCA, OpenSSL command-line tools);
Technologies and tools:
- Java SE 6, JNI, WebStart (partially), RMI, JSSE, JCA, Swing, Awt, JAXB, JDBC, Axis SOAP, JUnit, Java Multi-	Threading;
- Visual Studio C++, C/C++, stl, COM/OLE/ActiveX, ATL, MFC, Windows Multi-Threading;
- OpenSSL command line tools;
- MS SQL (main client-server storage of ambulance workflow documents);
- MS Access (used by suite of COM/OLE/ActiveX servers and GUI tools as
temporary storage of hardware (medicine devices) info,
used by the client at the tablet PC platform);
- Microsoft SourceSafe, Team Foundation Server (TFS);
- Microsoft SharePoint;

Activity:
- Creating/support of requirements (as a part of software development process of medicine/ambulance services);
- Design and architecture of some parts of product(s);
- Software development;
- Stabilization of the suite (as a part of software development process of medicine/ambulance services);
- Design/build documentation;
- User manuals;
- Unit testing;

Resources:

Screenshots (.jpg), Documentation (.pdf);

Some screenshots:

______________________________________________

04. crypto_sdk

Taking part in the development of Crypto SDK, that implements National Ukrainian standard
of digital signature based on elliptic curves (National Ukrainian standard: DSTU 4145-2002).
Technologies and tools:
- MS Visual C++, Windows SDK, C/C++, stl, MFC, Long Numbers Math, Crypto Primitives,
Crypto Algorithms, Assembler, NASM;

Activity:
- Development of the SDK for primitive and reducible polynomials testing;
- Development of the SDK for long number factorization (including distributed computing);
- Optimization and Speed-up of Scalar multiplication over Elliptic Curves (for elliptic curves
signature generation/verification);
- Quantum calculations research;
- Quantum cryptography research;

______________________________________________

03. api_hooks_sdk

API hooks SDK (using Hooks, remote threads technology, PE header analysis).
Suite, that provides monitoring of some functions calls (input-output functions) in varoius processes of
Windows OS. Suite uses Win drivers to inform about new launched processes.
Technologies and tools:

- MS Visual C++, Windows SDK, C/C++, stl, MFC, Assembler, NASM, SysInternals/WinInternals Tools,
Kernel and User Mode debuggers (SoftIce, OllyDebug), WinPCap;

Activity:
- Design and architecture of some parts;
- Software development;

______________________________________________

02. billing_solver

Taking part in the development of a Billing Solution for a big European Telecommunication company (for the AIX Unix platform).
Technologies and tools:

- C/C++98, GCC/G++, Posix Api, GNU BIN Tools, STL, GDB, DDD, Make Tool, Bash,
Borland C++ Builder 3.0-5.0, Microsoft Visual C++ 6.0, Win32 API, Multi-Threading (AIX/Linux/Windows), Oracle	9i, Oracle Client API, PL/Sql Developer, Toad;
- CVS;
- AIX Unix, Fedora/RedHat Linux;

Activity:
- System analysis and development of high-efficient multi-platform (AIX, Linux, Windows)
financial-oriented applications (including development and client customization of billing solvers);
- Development of multi-platform applications with paralleling processing;
- Multi-platform client applications development for Oracle 9i for financial-oriented info access;
- Multi-platform multi-thread applications development for huge text/report files processing;

Activity:
- Design and architecture of some parts;
- Software development;

______________________________________________

01. fdpa_fdp_language

Form Data Postprocessor Application (FDPA) (for a US company).

Tool, that implements Form Data Postprocessing Language (FDPL). Form Data Postprocessor Application implements own (without flex(lex)/bison(yacc) and similar tools) generators of lexical analyzer and syntax parser. Syntax parser implements recursive descent parser algorithm. Form Data Postprocessor Application provides processing of command scripts (FDPL) (generates simple byte-code files during processing of command scripts (FDPL)) and provides interpreted processing of data files in multi-thread mode.
This application has been used by US government department in the Massachusetts State.
Technologies and tools:
- C/C++, Visual Studio C++, stl, MFC, Windows API, Windows Multi-Threading;

Resources:

Documentation (.pdf);

Form Data Postprocessor Application Specification;

Form Postprocessing Language Ref;

Form Postprocessing Language specification;