*/
int cms_pkey_get_ri_type(EVP_PKEY *pk)
{
+ /* Check types that we know about */
+ if (EVP_PKEY_is_a(pk, "DH"))
+ return CMS_RECIPINFO_AGREE;
+ else if (EVP_PKEY_is_a(pk, "DSA"))
+ return CMS_RECIPINFO_NONE;
+ else if (EVP_PKEY_is_a(pk, "EC"))
+ return CMS_RECIPINFO_AGREE;
+ else if (EVP_PKEY_is_a(pk, "RSA"))
+ return CMS_RECIPINFO_TRANS;
+
+ /*
+ * Otherwise this might ben an engine implementation, so see if we can get
+ * the type from the ameth.
+ */
if (pk->ameth && pk->ameth->pkey_ctrl) {
int i, r;
i = pk->ameth->pkey_ctrl(pk, ASN1_PKEY_CTRL_CMS_RI_TYPE, 0, &r);
#include <openssl/bn.h>
#include <openssl/core_names.h>
#include <openssl/param_build.h>
-#include <openssl/cms.h>
#include "internal/ffc.h"
#include "internal/cryptlib.h"
#include "crypto/asn1.h"
static int dhx_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
switch (op) {
-#ifndef OPENSSL_NO_CMS
- case ASN1_PKEY_CTRL_CMS_RI_TYPE:
- *(int *)arg2 = CMS_RECIPINFO_AGREE;
- return 1;
-#endif
default:
return -2;
}
#include <openssl/x509.h>
#include <openssl/asn1.h>
#include <openssl/bn.h>
-#include <openssl/cms.h>
#include <openssl/core_names.h>
#include <openssl/param_build.h>
#include "internal/cryptlib.h"
X509_ALGOR_set0(alg2, OBJ_nid2obj(snid), V_ASN1_UNDEF, 0);
}
return 1;
-#ifndef OPENSSL_NO_CMS
- case ASN1_PKEY_CTRL_CMS_RI_TYPE:
- *(int *)arg2 = CMS_RECIPINFO_NONE;
- return 1;
-#endif
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
*(int *)arg2 = NID_sha256;
#include <openssl/x509.h>
#include <openssl/ec.h>
#include <openssl/bn.h>
-#include <openssl/cms.h>
#include <openssl/asn1t.h>
#include "crypto/asn1.h"
#include "crypto/evp.h"
X509_ALGOR_set0(alg2, OBJ_nid2obj(snid), V_ASN1_UNDEF, 0);
}
return 1;
-#ifndef OPENSSL_NO_CMS
- case ASN1_PKEY_CTRL_CMS_RI_TYPE:
- *(int *)arg2 = CMS_RECIPINFO_AGREE;
- return 1;
-#endif
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
if (EVP_PKEY_id(pkey) == EVP_PKEY_SM2) {
#include <openssl/asn1t.h>
#include <openssl/x509.h>
#include <openssl/bn.h>
-#include <openssl/cms.h>
#include <openssl/core_names.h>
#include <openssl/param_build.h>
#include "crypto/asn1.h"
if (arg1 == 0)
PKCS7_RECIP_INFO_get0_alg(arg2, &alg);
break;
-#ifndef OPENSSL_NO_CMS
- case ASN1_PKEY_CTRL_CMS_RI_TYPE:
- if (pkey_is_pss(pkey))
- return -2;
- *(int *)arg2 = CMS_RECIPINFO_TRANS;
- return 1;
-#endif
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
if (pkey->pkey.rsa->pss != NULL) {