33
44#ifdef __cplusplus
55extern "C" {
6- #endif
6+ #endif /* __cplusplus */
77
88#include "acquire_handle.h"
99#include "libacquire_export.h"
@@ -26,11 +26,16 @@ extern LIBACQUIRE_EXPORT int acquire_verify_sync(struct acquire_handle *handle,
2626 enum Checksum algorithm ,
2727 const char * expected_hash );
2828
29- #if defined(LIBACQUIRE_IMPLEMENTATION )
30- #ifndef ACQUIRE_CHECKSUMS_IMPL_
31- #define ACQUIRE_CHECKSUMS_IMPL_
29+ #ifdef LIBACQUIRE_IMPLEMENTATION
30+
3231#include <string.h>
3332
33+ #if defined(WIN32 ) || defined(_WIN32 ) || defined(__WIN32__ ) || defined(__NT__ )
34+ #include <synchapi.h> /* For Sleep() */
35+ #else
36+ #include <unistd.h> /* For usleep() */
37+ #endif
38+
3439enum Checksum string2checksum (const char * const s ) {
3540 if (s == NULL )
3641 return LIBACQUIRE_UNSUPPORTED_CHECKSUM ;
@@ -56,17 +61,18 @@ int acquire_verify_async_start(struct acquire_handle *handle,
5661 handle -> status = ACQUIRE_IDLE ;
5762 handle -> error .code = ACQUIRE_OK ;
5863 handle -> error .message [0 ] = '\0' ;
59- #if defined(LIBACQUIRE_USE_LIBRHASH )
64+ #if defined(LIBACQUIRE_USE_LIBRHASH ) && LIBACQUIRE_USE_LIBRHASH
6065 if (_librhash_verify_async_start (handle , filepath , algorithm ,
6166 expected_hash ) == 0 ) {
6267 handle -> active_backend = ACQUIRE_BACKEND_CHECKSUM_LIBRHASH ;
6368 return 0 ;
6469 }
6570 if (handle -> error .code != ACQUIRE_OK )
6671 return -1 ;
67- #endif
68- #if defined(LIBACQUIRE_USE_COMMON_CRYPTO ) || \
69- defined(LIBACQUIRE_USE_OPENSSL ) || defined(LIBACQUIRE_USE_LIBRESSL )
72+ #endif /* defined(LIBACQUIRE_USE_LIBRHASH) && LIBACQUIRE_USE_LIBRHASH */
73+ #if defined(LIBACQUIRE_USE_COMMON_CRYPTO ) && LIBACQUIRE_USE_COMMON_CRYPTO || \
74+ defined(LIBACQUIRE_USE_OPENSSL ) && LIBACQUIRE_USE_OPENSSL || \
75+ defined(LIBACQUIRE_USE_LIBRESSL ) && LIBACQUIRE_USE_LIBRESSL
7076 if (_openssl_verify_async_start (handle , filepath , algorithm , expected_hash ) ==
7177 0 ) {
7278 handle -> active_backend = ACQUIRE_BACKEND_CHECKSUM_OPENSSL ;
@@ -75,24 +81,24 @@ int acquire_verify_async_start(struct acquire_handle *handle,
7581 if (handle -> error .code != ACQUIRE_OK )
7682 return -1 ;
7783#endif
78- #if defined(LIBACQUIRE_USE_WINCRYPT )
84+ #if defined(LIBACQUIRE_USE_WINCRYPT ) && LIBACQUIRE_USE_WINCRYPT
7985 if (_wincrypt_verify_async_start (handle , filepath , algorithm ,
8086 expected_hash ) == 0 ) {
8187 handle -> active_backend = ACQUIRE_BACKEND_CHECKSUM_WINCRYPT ;
8288 return 0 ;
8389 }
8490 if (handle -> error .code != ACQUIRE_OK )
8591 return -1 ;
86- #endif
87- #if defined(LIBACQUIRE_USE_CRC32C )
92+ #endif /* defined(LIBACQUIRE_USE_WINCRYPT) && LIBACQUIRE_USE_WINCRYPT */
93+ #if defined(LIBACQUIRE_USE_CRC32C ) && LIBACQUIRE_USE_CRC32C
8894 if (_crc32c_verify_async_start (handle , filepath , algorithm , expected_hash ) ==
8995 0 ) {
9096 handle -> active_backend = ACQUIRE_BACKEND_CHECKSUM_CRC32C ;
9197 return 0 ;
9298 }
9399 if (handle -> error .code != ACQUIRE_OK )
94100 return -1 ;
95- #endif
101+ #endif /* defined(LIBACQUIRE_USE_CRC32C) && LIBACQUIRE_USE_CRC32C */
96102 acquire_handle_set_error (handle , ACQUIRE_ERROR_UNSUPPORTED_CHECKSUM_FORMAT ,
97103 "Unsupported checksum or no backend" );
98104 return -1 ;
@@ -102,23 +108,24 @@ enum acquire_status acquire_verify_async_poll(struct acquire_handle *handle) {
102108 if (!handle )
103109 return ACQUIRE_ERROR ;
104110 switch (handle -> active_backend ) {
105- #if defined(LIBACQUIRE_USE_LIBRHASH )
111+ #if defined(LIBACQUIRE_USE_LIBRHASH ) && LIBACQUIRE_USE_LIBRHASH
106112 case ACQUIRE_BACKEND_CHECKSUM_LIBRHASH :
107113 return _librhash_verify_async_poll (handle );
108114#endif
109- #if defined(LIBACQUIRE_USE_COMMON_CRYPTO ) || \
110- defined(LIBACQUIRE_USE_OPENSSL ) || defined(LIBACQUIRE_USE_LIBRESSL )
115+ #if defined(LIBACQUIRE_USE_COMMON_CRYPTO ) && LIBACQUIRE_USE_COMMON_CRYPTO || \
116+ defined(LIBACQUIRE_USE_OPENSSL ) && LIBACQUIRE_USE_OPENSSL || \
117+ defined(LIBACQUIRE_USE_LIBRESSL ) && LIBACQUIRE_USE_LIBRESSL
111118 case ACQUIRE_BACKEND_CHECKSUM_OPENSSL :
112119 return _openssl_verify_async_poll (handle );
113120#endif
114- #if defined(LIBACQUIRE_USE_WINCRYPT )
121+ #if defined(LIBACQUIRE_USE_WINCRYPT ) && LIBACQUIRE_USE_WINCRYPT
115122 case ACQUIRE_BACKEND_CHECKSUM_WINCRYPT :
116123 return _wincrypt_verify_async_poll (handle );
117- #endif
118- #if defined(LIBACQUIRE_USE_CRC32C )
124+ #endif /* defined(LIBACQUIRE_USE_WINCRYPT) && LIBACQUIRE_USE_WINCRYPT */
125+ #if defined(LIBACQUIRE_USE_CRC32C ) && LIBACQUIRE_USE_CRC32C
119126 case ACQUIRE_BACKEND_CHECKSUM_CRC32C :
120127 return _crc32c_verify_async_poll (handle );
121- #endif
128+ #endif /* defined(LIBACQUIRE_USE_CRC32C) && LIBACQUIRE_USE_CRC32C */
122129 default :
123130 if (handle -> status != ACQUIRE_IN_PROGRESS )
124131 return handle -> status ;
@@ -141,15 +148,19 @@ int acquire_verify_sync(struct acquire_handle *handle, const char *filepath,
141148 return -1 ;
142149 do {
143150 status = acquire_verify_async_poll (handle );
151+ #if defined(WIN32 ) || defined(_WIN32 ) || defined(__WIN32__ ) || defined(__NT__ )
152+ Sleep (100 ); /* 100ms */
153+ #else
154+ usleep (100000 ); /* 100ms */
155+ #endif
144156 } while (status == ACQUIRE_IN_PROGRESS );
145157 return (status == ACQUIRE_COMPLETE ) ? 0 : -1 ;
146158}
147159
148- #endif /* ACQUIRE_CHECKSUMS_IMPL_ */
149- #endif /* defined(LIBACQUIRE_IMPLEMENTATION) */
160+ #endif /* LIBACQUIRE_IMPLEMENTATION */
150161
151162#ifdef __cplusplus
152163}
153- #endif
164+ #endif /* __cplusplus */
154165
155166#endif /* !LIBACQUIRE_ACQUIRE_CHECKSUMS_H */
0 commit comments