~~NOTOC~~ {{wvds:title>API Referenca}} ===== 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 [[.:protokoll#status_codes|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 [[.:protokoll#status_codes|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 ---- [[.:protokoll|< Protokol]] | [[.:sicherheit|Dalje: Sigurnost >]]