MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / CreateDSA

Function CreateDSA

libi2pd/Crypto.cpp:152–180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

150 #define dsag GetCryptoConstants ().dsag
151#if (OPENSSL_VERSION_NUMBER >= 0x030000000) // since 3.0.0
152 EVP_PKEY * CreateDSA (BIGNUM * pubKey, BIGNUM * privKey)
153 {
154 EVP_PKEY * pkey = nullptr;
155 int selection = EVP_PKEY_KEY_PARAMETERS;
156 auto bld = OSSL_PARAM_BLD_new();
157 OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_FFC_P, dsap);
158 OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_FFC_Q, dsaq);
159 OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_FFC_G, dsag);
160 if (pubKey)
161 {
162 OSSL_PARAM_BLD_push_BN (bld, OSSL_PKEY_PARAM_PUB_KEY, pubKey);
163 selection = EVP_PKEY_PUBLIC_KEY;
164 }
165 if (privKey)
166 {
167 OSSL_PARAM_BLD_push_BN (bld, OSSL_PKEY_PARAM_PRIV_KEY, privKey);
168 selection = EVP_PKEY_KEYPAIR;
169 }
170 auto params = OSSL_PARAM_BLD_to_param(bld);
171
172 EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_from_name (NULL, "DSA", NULL);
173 EVP_PKEY_fromdata_init(ctx);
174 EVP_PKEY_fromdata(ctx, &pkey, selection, params);
175
176 EVP_PKEY_CTX_free(ctx);
177 OSSL_PARAM_free(params);
178 OSSL_PARAM_BLD_free(bld);
179 return pkey;
180 }
181#else
182 DSA * CreateDSA ()
183 {

Callers 4

SetPublicKeyMethod · 0.85
DSASignerMethod · 0.85
CreateDSARandomKeysFunction · 0.85
DSAVerifierMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected