| 152 | } |
| 153 | |
| 154 | WasiCryptoExpect<size_t> stateEncrypt(StateVariant &StateVariant, |
| 155 | Span<uint8_t> Out, |
| 156 | Span<const uint8_t> Data) noexcept { |
| 157 | return std::visit( |
| 158 | [=](auto &State) noexcept -> WasiCryptoExpect<size_t> { |
| 159 | return State.maxTagLen() |
| 160 | .and_then([DataSize = Data.size()](size_t TagLen) noexcept { |
| 161 | return checkedAdd(DataSize, TagLen); |
| 162 | }) |
| 163 | .and_then([Out, Data, &State](size_t ActualDataLen) noexcept |
| 164 | -> WasiCryptoExpect<size_t> { |
| 165 | ensureOrReturn(Out.size() == ActualDataLen, |
| 166 | __WASI_CRYPTO_ERRNO_INVALID_LENGTH); |
| 167 | return State.encrypt(Out, Data); |
| 168 | }); |
| 169 | }, |
| 170 | StateVariant); |
| 171 | } |
| 172 | |
| 173 | WasiCryptoExpect<Tag> stateEncryptDetached(StateVariant &StateVariant, |
| 174 | Span<uint8_t> Out, |
no test coverage detected