MCPcopy Create free account
hub / github.com/WasmEdge/WasmEdge / symmetricKeyGenerate

Method symmetricKeyGenerate

plugins/wasi_crypto/symmetric/ctx.cpp:190–221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

188}
189
190WasiCryptoExpect<__wasi_symmetric_key_t>
191Context::symmetricKeyGenerate(Symmetric::Algorithm Alg,
192 __wasi_opt_options_t OptOptionsHandle) noexcept {
193 auto OptOptionsResult = mapAndTransposeOptional(
194 OptOptionsHandle, [this](__wasi_options_t OptionsHandle) noexcept {
195 return OptionsManager.get(OptionsHandle);
196 });
197 if (!OptOptionsResult) {
198 return WasiCryptoUnexpect(OptOptionsResult);
199 }
200
201 // Refer to OptOptionsResult if it's a Symmetric::Options.
202 auto OptSymmetricOptionsResult = transposeOptionalToRef(
203 *OptOptionsResult,
204 [](const auto &Options) noexcept
205 -> WasiCryptoExpect<OptionalRef<const Symmetric::Options>> {
206 auto *SymmetricOptions = std::get_if<Symmetric::Options>(&Options);
207 if (!SymmetricOptions) {
208 return WasiCryptoUnexpect(__WASI_CRYPTO_ERRNO_INVALID_HANDLE);
209 }
210 return SymmetricOptions;
211 });
212 if (!OptSymmetricOptionsResult) {
213 return WasiCryptoUnexpect(OptSymmetricOptionsResult);
214 }
215
216 return Symmetric::generateKey(Alg, *OptSymmetricOptionsResult)
217 .and_then([this](auto &&Key) noexcept {
218 return SymmetricKeyManager.registerManager(
219 std::forward<decltype(Key)>(Key));
220 });
221}
222
223WasiCryptoExpect<__wasi_symmetric_state_t>
224Context::symmetricStateOpen(Symmetric::Algorithm Alg,

Callers 1

bodyMethod · 0.45

Calls 6

mapAndTransposeOptionalFunction · 0.85
WasiCryptoUnexpectFunction · 0.85
transposeOptionalToRefFunction · 0.85
generateKeyFunction · 0.85
registerManagerMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected