| 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 | { |
no outgoing calls
no test coverage detected