Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/nodejs/src/crypto/crypto_dsa.h
1 #ifndef SRC_CRYPTO_CRYPTO_DSA_H_ 2 #define SRC_CRYPTO_CRYPTO_DSA_H_ 3 4 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 5 6 #include "crypto/crypto_keys.h" 7 #include "crypto/crypto_keygen.h" 8 #include "crypto/crypto_util.h" 9 #include "env.h" 10 #include "memory_tracker.h" 11 #include "v8.h" 12 13 namespace node { 14 namespace crypto { 15 struct DsaKeyPairParams final : public MemoryRetainer { 16 unsigned int modulus_bits; 17 int divisor_bits; 18 SET_NO_MEMORY_INFO() 19 SET_MEMORY_INFO_NAME(DsaKeyPairParams) 20 SET_SELF_SIZE(DsaKeyPairParams) 21 }; 22 23 using DsaKeyPairGenConfig = KeyPairGenConfig<DsaKeyPairParams>; 24 25 struct DsaKeyGenTraits final { 26 using AdditionalParameters = DsaKeyPairGenConfig; 27 static constexpr const char* JobName = "DsaKeyPairGenJob"; 28 29 static ncrypto::EVPKeyCtxPointer Setup(DsaKeyPairGenConfig* params); 30 31 static v8::Maybe<void> AdditionalConfig( 32 CryptoJobMode mode, 33 const v8::FunctionCallbackInfo<v8::Value>& args, 34 unsigned int* offset, 35 DsaKeyPairGenConfig* params); 36 }; 37 38 using DsaKeyPairGenJob = KeyGenJob<KeyPairGenTraits<DsaKeyGenTraits>>; 39 40 v8::Maybe<void> GetDsaKeyDetail(Environment* env, 41 const KeyObjectData& key, 42 v8::Local<v8::Object> target); 43 44 namespace DSAAlg { 45 void Initialize(Environment* env, v8::Local<v8::Object> target); 46 void RegisterExternalReferences(ExternalReferenceRegistry* registry); 47 } // namespace DSAAlg 48 } // namespace crypto 49 } // namespace node 50 51 #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 52 #endif // SRC_CRYPTO_CRYPTO_DSA_H_