#ifndef SRC_CRYPTO_CRYPTO_DSA_H_ #define SRC_CRYPTO_CRYPTO_DSA_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "crypto/crypto_keys.h" #include "crypto/crypto_keygen.h" #include "crypto/crypto_util.h" #include "env.h" #include "memory_tracker.h" #include "v8.h" namespace node { namespace crypto { struct DsaKeyPairParams final : public MemoryRetainer { unsigned int modulus_bits; int divisor_bits; SET_NO_MEMORY_INFO() SET_MEMORY_INFO_NAME(DsaKeyPairParams); SET_SELF_SIZE(DsaKeyPairParams); }; using DsaKeyPairGenConfig = KeyPairGenConfig; struct DsaKeyGenTraits final { using AdditionalParameters = DsaKeyPairGenConfig; static constexpr const char* JobName = "DsaKeyPairGenJob"; static EVPKeyCtxPointer Setup(DsaKeyPairGenConfig* params); static v8::Maybe AdditionalConfig( CryptoJobMode mode, const v8::FunctionCallbackInfo& args, unsigned int* offset, DsaKeyPairGenConfig* params); }; using DsaKeyPairGenJob = KeyGenJob>; struct DSAKeyExportConfig final : public MemoryRetainer { SET_NO_MEMORY_INFO(); SET_MEMORY_INFO_NAME(DSAKeyExportConfig); SET_SELF_SIZE(DSAKeyExportConfig); }; struct DSAKeyExportTraits final { static constexpr const char* JobName = "DSAKeyExportJob"; using AdditionalParameters = DSAKeyExportConfig; static v8::Maybe AdditionalConfig( const v8::FunctionCallbackInfo& args, unsigned int offset, DSAKeyExportConfig* config); static WebCryptoKeyExportStatus DoExport( std::shared_ptr key_data, WebCryptoKeyFormat format, const DSAKeyExportConfig& params, ByteSource* out); }; using DSAKeyExportJob = KeyExportJob; v8::Maybe ExportJWKDsaKey( Environment* env, std::shared_ptr key, v8::Local target); std::shared_ptr ImportJWKDsaKey( Environment* env, v8::Local jwk, const v8::FunctionCallbackInfo& args, unsigned int offset); v8::Maybe GetDsaKeyDetail( Environment* env, std::shared_ptr key, v8::Local target); namespace DSAAlg { void Initialize(Environment* env, v8::Local target); } // namespace DSAAlg } // namespace crypto } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_CRYPTO_CRYPTO_DSA_H_