API Referenca

Vse funkcije so deklarirane v headerju wvds_crypto.h.


Request Builder

wvds_build_aes_encrypt_request

int wvds_build_aes_encrypt_request(
    uint8_t* buffer,        // [out] Ciljni buffer
    size_t* buffer_len,     // [in/out] Velikost bufferja / dejanska dolžina
    uint32_t key_id,        // Key-ID
    const void* aad,        // Additional Authenticated Data
    size_t aad_len,         // AAD dolžina
    const void* plaintext,  // Podatki za šifriranje
    size_t pt_len           // Dolžina čistopisa
);
Vrnitev Opis
0 Uspeh
-1 Buffer premajhen
-2 Vsebina prevelika (> 64 KB)

wvds_build_aes_decrypt_request

int wvds_build_aes_decrypt_request(
    uint8_t* buffer,
    size_t* buffer_len,
    uint32_t key_id,
    const uint8_t nonce[12],
    const uint8_t tag[16],
    const void* aad,
    size_t aad_len,
    const void* ciphertext,
    size_t ct_len
);

wvds_build_mldsa_sign_request

int wvds_build_mldsa_sign_request(
    uint8_t* buffer,
    size_t* buffer_len,
    uint32_t key_id,        // Private Key ID
    const void* message,
    size_t msg_len
);

wvds_build_mldsa_verify_request

int wvds_build_mldsa_verify_request(
    uint8_t* buffer,
    size_t* buffer_len,
    uint32_t key_id,        // Public Key ID
    const void* message,
    size_t msg_len,
    const void* signature,
    size_t sig_len
);

wvds_build_mlkem_keygen_request

int wvds_build_mlkem_keygen_request(
    uint8_t* buffer,
    size_t* buffer_len,
    uint32_t key_id         // ID za nov ključni par
);

wvds_build_mlkem_encaps_request

int wvds_build_mlkem_encaps_request(
    uint8_t* buffer,
    size_t* buffer_len,
    const void* public_key,
    size_t pk_len
);

wvds_build_mlkem_decaps_request

int wvds_build_mlkem_decaps_request(
    uint8_t* buffer,
    size_t* buffer_len,
    uint32_t key_id,        // Private Key ID
    const void* ciphertext,
    size_t ct_len
);

Response Parser

wvds_parse_aes_encrypt_response

int wvds_parse_aes_encrypt_response(
    const uint8_t* response,
    size_t response_len,
    uint8_t nonce[12],      // [out] Generirana nonce
    uint8_t tag[16],        // [out] Authentication Tag
    uint8_t* ciphertext,    // [out] Šifrirano besedilo
    size_t* ct_len          // [out] Dolžina šifriranega besedila
);
Vrnitev Opis
0 Uspeh
>0 Statusna koda (glejte Protokol)
-1 Odgovor neveljaven

wvds_parse_aes_decrypt_response

int wvds_parse_aes_decrypt_response(
    const uint8_t* response,
    size_t response_len,
    uint8_t* plaintext,     // [out] Dešifrirani čistopis
    size_t* pt_len          // [out] Dolžina čistopisa
);

Vrnitev 6 = DECRYPTION_FAILED

Podatki so bili spremenjeni ali uporabljen napačen ključ/AAD!

wvds_parse_mldsa_sign_response

int wvds_parse_mldsa_sign_response(
    const uint8_t* response,
    size_t response_len,
    uint8_t* signature,     // [out] Podpis (min. 4096 bajtov)
    size_t* sig_len         // [out] Dolžina podpisa
);

wvds_parse_mldsa_verify_response

int wvds_parse_mldsa_verify_response(
    const uint8_t* response,
    size_t response_len,
    int* valid              // [out] 1 = veljaven, 0 = neveljaven
);

wvds_parse_mlkem_keygen_response

int wvds_parse_mlkem_keygen_response(
    const uint8_t* response,
    size_t response_len,
    uint8_t* public_key,    // [out] Javni ključ (min. 2048 bajtov)
    size_t* pk_len          // [out] Dolžina javnega ključa
);

wvds_parse_mlkem_encaps_response

int wvds_parse_mlkem_encaps_response(
    const uint8_t* response,
    size_t response_len,
    uint8_t* ciphertext,    // [out] Šifrirano besedilo (min. 2048 bajtov)
    size_t* ct_len,         // [out] Dolžina šifriranega besedila
    uint8_t shared_secret[32] // [out] Skupna skrivnost
);

wvds_parse_mlkem_decaps_response

int wvds_parse_mlkem_decaps_response(
    const uint8_t* response,
    size_t response_len,
    uint8_t shared_secret[32] // [out] Skupna skrivnost
);

Utility Funkcije

wvds_get_error_code

int wvds_get_error_code(
    const uint8_t* response,
    size_t response_len
);

Izvleče statusno kodo iz poljubnega odgovora.

Vrnitev Opis
0 Uspeh
1-9 Koda napake (glejte Protokol)
-1 Odgovor neveljaven

wvds_error_to_string

const char* wvds_error_to_string(int error_code);
Koda Niz
0 „Success“
1 „Invalid header“
2 „Invalid request type“
3 „Invalid payload“
4 „Key not found“
5 „Crypto error“
6 „Decryption failed“
7 „Rate limited“
8 „Nonce reuse detected“
9 „Payload too large“

Konstante

// Request Types
#define WVDS_REQ_AES_ENCRYPT    0x01
#define WVDS_REQ_AES_DECRYPT    0x02
#define WVDS_REQ_MLDSA_SIGN     0x10
#define WVDS_REQ_MLDSA_VERIFY   0x11
#define WVDS_REQ_MLKEM_KEYGEN   0x20
#define WVDS_REQ_MLKEM_ENCAPS   0x21
#define WVDS_REQ_MLKEM_DECAPS   0x22
 
// Velikosti
#define WVDS_AES_NONCE_SIZE     12
#define WVDS_AES_TAG_SIZE       16
#define WVDS_AES_KEY_SIZE       32
#define WVDS_MLDSA65_SIG_SIZE   3293
#define WVDS_MLDSA65_PK_SIZE    1952
#define WVDS_MLKEM768_PK_SIZE   1184
#define WVDS_MLKEM768_CT_SIZE   1088
#define WVDS_SHARED_SECRET_SIZE 32
 
// Omejitve
#define WVDS_MAX_PAYLOAD_SIZE   65536
#define WVDS_HEADER_SIZE        8

< Protokol | Naprej: Varnost >