mirror of
https://github.com/urbit/shrub.git
synced 2024-12-22 10:21:31 +03:00
Initial
This commit is contained in:
commit
aa7e4cce8e
4
README.md
Normal file
4
README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
libent is a simple cross-platform entropy gathering library. It tries
|
||||||
|
to use the best available source of randomness, and is meant to be used
|
||||||
|
in applications that need high-quality entropy, e.g. for generating
|
||||||
|
cryptographic keys.
|
26
include/ent/detail.h
Normal file
26
include/ent/detail.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#ifndef _LIBENT_DETAIL_H
|
||||||
|
#define _LIBENT_DETAIL_H
|
||||||
|
|
||||||
|
#if defined _WIN32 || defined __CYGWIN__
|
||||||
|
# ifdef WIN_EXPORT
|
||||||
|
# ifdef __GNUC__
|
||||||
|
# define ENT_EXPORT __attribute__ ((dllexport))
|
||||||
|
# else
|
||||||
|
# define ENT_EXPORT __declspec(dllexport)
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# ifdef __GNUC__
|
||||||
|
# define ENT_EXPORT __attribute__ ((dllimport))
|
||||||
|
# else
|
||||||
|
# define ENT_EXPORT __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# if __GNUC__ >= 4
|
||||||
|
# define ENT_EXPORT __attribute__ ((visibility ("default")))
|
||||||
|
# else
|
||||||
|
# define ENT_EXPORT
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _LIBENT_DETAIL_H */
|
12
include/ent/ent.h
Normal file
12
include/ent/ent.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#ifndef _LIBENT_ENT_H
|
||||||
|
#define _LIBENT_ENT_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include <ent/detail.h>
|
||||||
|
|
||||||
|
ENT_EXPORT
|
||||||
|
int
|
||||||
|
ent_getentropy(void *buf, size_t buflen);
|
||||||
|
|
||||||
|
#endif /* _LIBENT_ENT_H */
|
21
meson.build
Normal file
21
meson.build
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
project('libent', 'c', 'cpp',
|
||||||
|
default_options : ['c_std=c99', 'cpp_std=c++11'],
|
||||||
|
version : '0.0.1',
|
||||||
|
license : 'MIT')
|
||||||
|
|
||||||
|
inc = include_directories('include')
|
||||||
|
|
||||||
|
install_headers('include/ent/ent.h', subdir : 'ent')
|
||||||
|
|
||||||
|
ent_sources = ['src/ent.c']
|
||||||
|
libent = shared_library('ent',
|
||||||
|
ent_sources,
|
||||||
|
include_directories : inc,
|
||||||
|
install : true)
|
||||||
|
|
||||||
|
pkg_mod = import('pkgconfig')
|
||||||
|
pkg_mod.generate(libraries : libent,
|
||||||
|
version : '0.0',
|
||||||
|
name : 'libent',
|
||||||
|
filebase : 'ent',
|
||||||
|
description : 'A library to get entropy.')
|
17
src/ent.c
Normal file
17
src/ent.c
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <ent/ent.h>
|
||||||
|
|
||||||
|
#if defined __OPENBSD__ || (defined __linux__ && defined _DEFAULT_SOURCE)
|
||||||
|
# include <unistd.h>
|
||||||
|
# define getentropy_impl getentropy
|
||||||
|
#elif defined __APPLE__ && defined __MACH__
|
||||||
|
# include <sys/random.h>
|
||||||
|
# define getentropy_impl getentropy
|
||||||
|
#else
|
||||||
|
# error "Port: getentropy unimplemented"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
ent_getentropy(void *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
return getentropy_impl(buf, buflen);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user