Здравствуйте.
Судя по всему SSSD использует в один заход хэширование и подпись:
prefs[] = {
{ CKM_SHA512_RSA_PKCS, "CKM_SHA512_RSA_PKCS", EVP_sha512(), "sha512" },
{ CKM_SHA384_RSA_PKCS, "CKM_SHA384_RSA_PKCS", EVP_sha384(), "sha384" },
{ CKM_SHA256_RSA_PKCS, "CKM_SHA256_RSA_PKCS", EVP_sha256(), "sha256" },
{ CKM_SHA224_RSA_PKCS, "CKM_SHA224_RSA_PKCS", EVP_sha224(), "sha224" },
{ CKM_SHA1_RSA_PKCS, "CKM_SHA1_RSA_PKCS", EVP_sha1(), "sha1" },
{ 0, NULL }
};
https://pagure.io/SSSD/sssd/blob/master … _openssl.c
В нашем PKCS поддерживаются CKM_RSA_PKCS и CKM_RSA_PKCS_OAEP
На первый взгляд можно поправить несколько строк в исходнике SSSD и собрать его с поддержкой нашего PKCS:
case CKK_RSA:
rv = get_preferred_rsa_mechanism(cert, module, slot_id,
&preferred_mechanism, &evp_md);
if (rv != CKR_OK) {
DEBUG(SSSDBG_OP_FAILURE, "get_preferred_rsa_mechanism failed, "
"using default CKM_RSA_PKCS.\n");
//дальше идет измененый код
preferred_mechanism = CKM_RSA_PKCS;
card_does_hash = false;
evp_md = EVP_sha1();
} else {
card_does_hash = true;
}
mechanism.mechanism = preferred_mechanism;
DEBUG(SSSDBG_TRACE_ALL, "Found RSA key using mechanism [%lu].\n",
preferred_mechanism);
break;
Задачу по реализации совместимости с SSSD передадим разработчикам в бэклог.