merged AI doc, some new pages

This commit is contained in:
2026-03-12 14:46:57 +03:00
parent 07ae277f9e
commit ed13838237
206 changed files with 14088 additions and 5152 deletions

View File

@@ -1,9 +1,8 @@
/*! \file piauth.h
* \ingroup Crypt
* \~\brief
* \~english Authentication API
* \~russian API аутентификации
*/
//! \~\file piauth.h
//! \~\ingroup Crypt
//! \~\brief
//! \~english Authentication API
//! \~russian API аутентификации
/*
PIP - Platform Independent Primitives
PIP Authentication API
@@ -31,72 +30,110 @@
#include "pip_crypt_export.h"
//! \~\ingroup Crypt
//! \~\brief
//! \~english Peer authentication state machine with signed key exchange.
//! \~russian Машина состояний аутентификации узлов с подписанным обменом ключами.
class PIP_CRYPT_EXPORT PIAuth: public PIObject {
PIOBJECT(PIAuth)
public:
//! \~english Handshake state.
//! \~russian Состояние рукопожатия.
enum State {
NotConnected,
AuthProbe,
PassRequest,
AuthReply,
KeyExchange,
Connected
NotConnected /** \~english No active authentication session. \~russian Активной сессии аутентификации нет. */,
AuthProbe /** \~english Initial probe stage with signed peer introduction. \~russian Начальный этап с подписанным представлением
узла. */
,
PassRequest /** \~english Password verification stage for unknown peers. \~russian Этап проверки пароля для неизвестных узлов. */,
AuthReply /** \~english Reply with client authentication data. \~russian Ответ с данными аутентификации клиента. */,
KeyExchange /** \~english Session key exchange stage. \~russian Этап обмена сеансовым ключом. */,
Connected /** \~english Authentication finished and session key is established. \~russian Аутентификация завершена и сеансовый ключ
установлен. */
};
//! Create PIAuth with your digital sign
//! \~english Creates an authentication endpoint from a signing secret key.
//! \~russian Создает конечную точку аутентификации из секретного ключа подписи.
PIAuth(const PIByteArray & sign);
//! Set server info data for client authorize event
//! \~english Sets application-defined info exchanged during authorization.
//! \~russian Задает прикладные данные, передаваемые во время авторизации.
void setInfoData(const PIByteArray & info) { custom_info = info; }
//! Set server password for check
//! \~english Sets the server password used for password-based peer validation.
//! \~russian Устанавливает пароль сервера, используемый для проверки узла по паролю.
void setServerPassword(const PIString & ps);
//! Set list of trusted clients/servers public digital sign keys
//! \~english Replaces the list of trusted peer signing public keys.
//! \~russian Заменяет список доверенных открытых ключей подписи удаленных узлов.
void setAuthorizedPublicKeys(const PIVector<PIByteArray> & pkeys) { auth_pkeys = pkeys; }
//! Get list of trusted clients/servers public digital sign keys
//! \~english Returns the list of trusted peer signing public keys.
//! \~russian Возвращает список доверенных открытых ключей подписи удаленных узлов.
PIVector<PIByteArray> getAuthorizedPublicKeys() { return auth_pkeys; }
//! Get your digital sign public key
//! \~english Returns the public signing key derived from the local secret key.
//! \~russian Возвращает открытый ключ подписи, полученный из локального секретного ключа.
PIByteArray getSignPublicKey() { return sign_pk; }
//! Stop authorization
//! \~english Stops the current authorization session and clears transient keys.
//! \~russian Останавливает текущую сессию авторизации и очищает временные ключи.
void stop();
//! Start authorization as client
//! \~english Starts the handshake in client mode.
//! \~russian Запускает рукопожатие в режиме клиента.
void startClient();
//! Start authorization as server, return first server message for client
//! \~english Starts the handshake in server mode and returns the first packet for the client.
//! \~russian Запускает рукопожатие в режиме сервера и возвращает первый пакет для клиента.
PIByteArray startServer();
//! Process reseived message both for client and server, return current state and new message writed in "ba"
//! \~english Processes an incoming handshake packet, updates the state and writes the reply back to \a ba.
//! \~russian Обрабатывает входящий пакет рукопожатия, обновляет состояние и записывает ответ обратно в \a ba.
State receive(PIByteArray & ba);
//! Get session secret key, return key only when Connected state
//! \~english Returns the session secret key after the state becomes \a Connected.
//! \~russian Возвращает сеансовый секретный ключ после перехода в состояние \a Connected.
PIByteArray getSecretKey();
//! Generate digital sign from seed
//! \~english Generates a signing secret key from \a seed.
//! \~russian Генерирует секретный ключ подписи из \a seed.
static PIByteArray generateSign(const PIByteArray & seed);
//! Disconneted event
//! \events
//! \{
//! \fn void disconnected(PIString reason)
//! \~english Raised when the handshake is aborted or an established session is dropped.
//! \~russian Вызывается при прерывании рукопожатия или разрыве установленной сессии.
EVENT1(disconnected, PIString, reason);
//! Conneted event
//! \fn void connected(PIString info)
//! \~english Raised after the peer reaches state \a Connected.
//! \~russian Вызывается после перехода узла в состояние \a Connected.
EVENT1(connected, PIString, info);
//! Client event for authorize new server
//! \fn void authorize(PIByteArray info, bool * ok)
//! \~english Client-side callback used to approve an unknown server and optionally trust its signing key.
//! \~russian Клиентский вызов для подтверждения неизвестного сервера и, при необходимости, доверия его ключу подписи.
EVENT2(authorize, PIByteArray, info, bool *, ok);
//! Client event for input server password
//! \fn void passwordRequest(PIString * pass)
//! \~english Client-side callback requesting the server password.
//! \~russian Клиентский вызов для запроса пароля сервера.
EVENT1(passwordRequest, PIString *, pass);
//! Server event on check client password
//! \fn void passwordCheck(bool result)
//! \~english Server-side callback reporting the result of client password validation.
//! \~russian Серверный вызов, сообщающий результат проверки пароля клиента.
EVENT1(passwordCheck, bool, result);
//! \}
private:
enum Role {
Client,