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
Zuletzt geändert: dne 29.01.2026 ob 21:48