#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 GetDsaKeyDetail( Environment* env, std::shared_ptr key, v8::Local target); namespace DSAAlg { void Initialize(Environment* env, v8::Local target); void RegisterExternalReferences(ExternalReferenceRegistry* registry); } // namespace DSAAlg } // namespace crypto } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_CRYPTO_CRYPTO_DSA_H_