API Referenca

Sve funkcije su deklarirane u headeru wvds_crypto.h.


Request Builder

wvds_build_aes_encrypt_request

int wvds_build_aes_encrypt_request(
    uint8_t* buffer,        // [out] Odredišni buffer
    size_t* buffer_len,     // [in/out] Veličina buffera / stvarna duljina
    uint32_t key_id,        // Key-ID
    const void* aad,        // Additional Authenticated Data
    size_t aad_len,         // AAD duljina
    const void* plaintext,  // Podaci za šifriranje
    size_t pt_len           // Duljina čistog teksta
);
Povratna vrijednost Opis
0 Uspjeh
-1 Buffer premalen
-2 Sadržaj prevelik (> 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 novi 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] Šifrirani tekst
    size_t* ct_len          // [out] Duljina šifriranog teksta
);
Povratna vrijednost Opis
0 Uspjeh
>0 Statusni kod (vidi Protokol)
-1 Odgovor nevažeći

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 čisti tekst
    size_t* pt_len          // [out] Duljina čistog teksta
);

Povratna vrijednost 6 = DECRYPTION_FAILED

Podaci su promijenjeni ili je korišten pogrešan 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] Potpis (min. 4096 bajta)
    size_t* sig_len         // [out] Duljina potpisa
);

wvds_parse_mldsa_verify_response

int wvds_parse_mldsa_verify_response(
    const uint8_t* response,
    size_t response_len,
    int* valid              // [out] 1 = važeći, 0 = nevažeći
);

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 bajta)
    size_t* pk_len          // [out] Duljina javnog 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] Šifrirani tekst (min. 2048 bajta)
    size_t* ct_len,         // [out] Duljina šifriranog teksta
    uint8_t shared_secret[32] // [out] Dijeljena tajna
);

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] Dijeljena tajna
);

Pomoćne Funkcije

wvds_get_error_code

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

Izvlači statusni kod iz bilo kojeg odgovora.

Povratna vrijednost Opis
0 Uspjeh
1-9 Kod greške (vidi Protokol)
-1 Odgovor nevažeći

wvds_error_to_string

const char* wvds_error_to_string(int error_code);
Kod String
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
 
// Veličine
#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
 
// Ograničenja
#define WVDS_MAX_PAYLOAD_SIZE   65536
#define WVDS_HEADER_SIZE        8

< Protokol | Dalje: Sigurnost >

Zuletzt geändert: 29.01.2026. u 21:56