X509_REQ_sign с использованием движка - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь подписать csr, используя X509_REQ_sign с механизмом TPM (tpm2tss). Я могу выполнить sh подпись запроса без движка, используя следующий код:

    X509_REQ* req = NULL;
    unsigned char* reqBytes = NULL;
    char* csrString = NULL;
    if((req = X509_REQ_new()) && \
            X509_REQ_set_subject_name(req, subject) && \
            X509_REQ_set_pubkey(req, keyPair) && \
            X509_REQ_sign(req, keyPair, EVP_sha256()))  
    {
        int reqLen = i2d_X509_REQ(req, NULL);
        reqBytes = malloc(reqLen);
        unsigned char* tempReqBytes = reqBytes;
        i2d_X509_REQ(req, &tempReqBytes);   
        csrString = base64_encode(reqBytes, (size_t)reqLen, false, NULL);
    }
    free(reqBytes);
    X509_REQ_free(req);
    return csrString;

Как правильно изменить функцию EVP_sha256 () со стандартного конверта на движок tpm2tss? KeyPair может использоваться только в модуле TPM (так как он существует как зашифрованный BLOB в файловой системе). Движок знает об этом и расшифровывает BLOB, прежде чем подписывать запрос закрытым ключом.

...