Lines Matching refs:source
14 * compiled via inclusion from the relevant OS source file, ie,
81 * pseudorandom data and they cannot provide a stronger random source,
140 isc_uint32_t total; /*%< entropy from this source */
154 #define ENTROPY_SOURCETYPE_SAMPLE 1 /*%< Type is a sample source */
155 #define ENTROPY_SOURCETYPE_FILE 2 /*%< Type is a file source */
156 #define ENTROPY_SOURCETYPE_CALLBACK 3 /*%< Type is a callback source */
157 #define ENTROPY_SOURCETYPE_USOCKET 4 /*%< Type is a Unix socket source */
182 destroyfilesource(isc_entropyfilesource_t *source);
185 destroyusocketsource(isc_entropyusocketsource_t *source);
483 get_from_callback(isc_entropysource_t *source, unsigned int desired,
486 isc_entropy_t *ent = source->ent;
487 isc_cbsource_t *cbs = &source->sources.callback;
495 if (source->bad)
499 result = cbs->startfunc(source, cbs->arg, blocking);
508 result = cbs->getfunc(source, cbs->arg, blocking);
516 source->bad = ISC_TRUE;
726 isc_entropysource_t *source;
730 source = *sourcep;
732 ent = source->ent;
734 ISC_LIST_UNLINK(ent->sources, source, link);
739 switch (source->type) {
741 if (! source->bad)
742 destroyfilesource(&source->sources.file);
745 if (! source->bad)
746 destroyusocketsource(&source->sources.usocket);
749 samplequeue_release(ent, &source->sources.sample.samplequeue);
752 cbs = &source->sources.callback;
754 cbs->stopfunc(source, cbs->arg);
761 isc_safe_memwipe(source, sizeof(*source));
762 isc_mem_put(ent->mctx, source, sizeof(*source));
767 isc_entropysource_t *source;
772 source = ISC_LIST_HEAD(ent->sources);
773 while (source != NULL) {
774 switch (source->type) {
781 source = ISC_LIST_NEXT(source, link);
790 isc_entropysource_t *source;
804 source = ISC_LIST_HEAD(ent->sources);
805 while (source != NULL) {
806 switch(source->type) {
809 destroysource(&source);
812 source = ISC_LIST_HEAD(ent->sources);
835 isc_entropysource_t *source;
842 source = *sourcep;
845 ent = source->ent;
850 destroysource(&source);
869 isc_entropysource_t *source;
878 source = isc_mem_get(ent->mctx, sizeof(isc_entropysource_t));
879 if (source == NULL) {
883 source->bad = ISC_FALSE;
885 cbs = &source->sources.callback;
900 source->magic = SOURCE_MAGIC;
901 source->type = ENTROPY_SOURCETYPE_CALLBACK;
902 source->ent = ent;
903 source->total = 0;
904 memset(source->name, 0, sizeof(source->name));
905 ISC_LINK_INIT(source, link);
910 ISC_LIST_APPEND(ent->sources, source, link);
913 *sourcep = source;
919 if (source != NULL)
920 isc_mem_put(ent->mctx, source, sizeof(isc_entropysource_t));
929 isc_entropysource_t *source;
936 source = ISC_LIST_HEAD(ent->sources);
937 while (source != NULL) {
938 if (source->type == ENTROPY_SOURCETYPE_CALLBACK) {
939 cbs = &source->sources.callback;
941 cbs->stopfunc(source, cbs->arg);
946 source = ISC_LIST_NEXT(source, link);
957 isc_entropysource_t *source;
965 source = isc_mem_get(ent->mctx, sizeof(isc_entropysource_t));
966 if (source == NULL) {
971 sq = &source->sources.sample.samplequeue;
979 source->magic = SOURCE_MAGIC;
980 source->type = ENTROPY_SOURCETYPE_SAMPLE;
981 source->ent = ent;
982 source->total = 0;
983 memset(source->name, 0, sizeof(source->name));
984 ISC_LINK_INIT(source, link);
989 ISC_LIST_APPEND(ent->sources, source, link);
992 *sourcep = source;
998 if (source != NULL)
999 isc_mem_put(ent->mctx, source, sizeof(isc_entropysource_t));
1027 isc_entropy_addsample(isc_entropysource_t *source, isc_uint32_t sample,
1035 REQUIRE(VALID_SOURCE(source));
1037 ent = source->ent;
1041 sq = &source->sources.sample.samplequeue;
1054 isc_entropy_addcallbacksample(isc_entropysource_t *source, isc_uint32_t sample,
1060 REQUIRE(VALID_SOURCE(source));
1061 REQUIRE(source->type == ENTROPY_SOURCETYPE_CALLBACK);
1063 sq = &source->sources.callback.samplequeue;
1159 kbdstart(isc_entropysource_t *source, void *arg, isc_boolean_t blocking) {
1173 if (source->warn_keyboard)
1181 return (isc_keyboard_open(&source->kbd));
1185 kbdstop(isc_entropysource_t *source, void *arg) {
1189 if (! isc_keyboard_canceled(&source->kbd))
1192 (void)isc_keyboard_close(&source->kbd, 3);
1196 kbdget(isc_entropysource_t *source, void *arg, isc_boolean_t blocking) {
1208 result = isc_keyboard_getchar(&source->kbd, &c);
1217 result = isc_entropy_addcallbacksample(source, sample, extra);
1230 isc_entropy_usebestsource(isc_entropy_t *ectx, isc_entropysource_t **source,
1238 REQUIRE(source != NULL && *source == NULL);
1269 NULL, source);
1271 (*source)->warn_keyboard =
1280 * final_result is ISC_R_SUCCESS if at least one source of entropy