int mbedtls_entropy_update_seed_file( mbedtls_entropy_context *ctx, const char *path ) { FILE *f; size_t n; unsigned char buf[ MBEDTLS_ENTROPY_MAX_SEED_SIZE ]; if( ( f = fopen( path, "rb" ) ) == NULL ) return( MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR ); fseek( f, 0, SEEK_END ); n = (size_t) ftell( f ); fseek( f, 0, SEEK_SET ); if( n > MBEDTLS_ENTROPY_MAX_SEED_SIZE ) n = MBEDTLS_ENTROPY_MAX_SEED_SIZE; if( fread( buf, 1, n, f ) != n ) { fclose( f ); return( MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR ); } fclose( f ); mbedtls_entropy_update_manual( ctx, buf, n ); return( mbedtls_entropy_write_seed_file( ctx, path ) ); }
static int l_mbedtls_entropy_write_seed_file(lua_State *L) { mbedtls_entropy_context *ctx = (mbedtls_entropy_context *) luaL_checkudata(L, 1, CLASS_NAME); const char *path = luaL_checkstring(L, 2); lua_pushinteger(L, mbedtls_entropy_write_seed_file(ctx, path)); return 1; }