Moin Leute
@_sivizius: Jo, Compiler-Threadsafe Checkbox war aktiviert.
Aber ich nehme auch an, dass 'OpenCryptRandom()' eine globale Funktion ist
Jo. Ich auch. Ansonsten müsste sie (glaub ich) einen #PB_Any Parameter erwarten der das OpenCryptRandom() für die weiteren Aufrufe identifiziert.
also man kann in einem Thread 'Open...' und in einem anderen 'Close...' machen, was natürlich keine besonders saubere Sache wäre und vor allem eine große Fehlerquelle.
Genau. Da bin ich drüber gestolpert auch gleich

Habs aber dann auch gleich gemerkt daß OpenCryptRandom() Global arbeitet.
Wenn dann müsste man das jedes mal mit Mutex absichern, und zwar den kompletten 'Open'-'Close'-Block und nicht etwa jedes 'Open' und 'Close' einzeln.
Genau. Hatte das zuerst dann auch gemacht. Funzte danach dann auch. Aber ich wollte auch nicht jedesmal (Un)LockMutex() machen... tat mir irgendwie das Betriebssystem leid
Da die Zufallswerte kryptografisch sicher sind, sind sie das immer und nicht nur direkt nach jedem 'Open'.
Da war ich ich mir eben nicht so ganz sicher ob eben die Zufälligikeit beinträchtigt wird oder nicht. Aber ich was bisher nachrecherchiert haben ist die Sicherheit der Zufälligkeit bei einem global Open() nicht beinträchtigt.
Aufpassen muss man aber dennoch, so oder so, im Falle wenn man PB-Libs/DLLs bzw. 3rd Party PB-Code includiert/benützt die ebenfalls OpenCryptRandom()/CloseCryptRandom() verwenden daß man sich nicht gegenseitig überschneidet mit diesen 2 Aufrufen.
Aufjedenfall geht ein einmaliges globales OpenCryptRandom() einwandfrei, die anderen Aufrufe wie zB CrytRandomData() sind dann auch Threadsafe, und die Zufälligkeit der Daten scheinen auch nicht beinträchtigt zu sein wenn man es so benützt... hab die Entropy der Zufallsdaten gemessen innerhalb 100 gleichzeitig laufender Threads... eine Stunde lang. War immer einwandrei.
lg Melow
