google/webcrypto.dart

Ensure correct handling of errors from thread-local storage

Opened this issue · 0 comments

BoringCrypto exposes ERR_clear_error() which clears the thread-local error stack.

For any function in BoringCrypto which may set error state, we must read the error stack, before we do any async/await, as this may trigger the code to continue running on a different thread.

Perhaps, we have to use _Scope.sync for everything, and ensure that we check/clear the error stack at the end of every _Scope.sync block.
Or maybe we have to invent a new block form.