#include <botan/ffi.h>
#include <stdio.h>
#include <string.h>
int main(void) {
botan_rng_t rng = NULL;
if (botan_rng_init(&rng, "system") != 0) {
printf("FAIL: botan_rng_init\n");
return 1;
}
botan_hash_t h = NULL;
if (botan_hash_init(&h, "SHA-3(256)", 0) != 0) {
printf("FAIL: botan_hash_init SHA-3(256)\n");
botan_rng_destroy(rng);
return 1;
}
const unsigned char in[] = "hello, ohos";
size_t in_len = sizeof(in) - 1;
if (botan_hash_update(h, in, in_len) != 0) {
printf("FAIL: botan_hash_update\n");
botan_hash_destroy(h);
botan_rng_destroy(rng);
return 1;
}
unsigned char out[32] = {0};
if (botan_hash_final(h, out) != 0) {
printf("FAIL: botan_hash_final\n");
botan_hash_destroy(h);
botan_rng_destroy(rng);
return 1;
}
printf("OK: SHA3-256(\"hello, ohos\") = ");
for (size_t i = 0; i < sizeof(out); i++) {
printf("%02x", out[i]);
}
printf("\n");
unsigned char rand_bytes[16] = {0};
if (botan_rng_get(rng, rand_bytes, sizeof(rand_bytes)) != 0) {
printf("FAIL: botan_rng_get\n");
botan_hash_destroy(h);
botan_rng_destroy(rng);
return 1;
}
printf("OK: RNG produced 16 random bytes\n");
botan_hash_destroy(h);
botan_rng_destroy(rng);
printf("OHOS smoke test: OK\n");
return 0;
}