Ошибка разбора mbedTLS pk

Может ли кто-нибудь помочь мне выяснить, почему я получаю -16000 (неверные входные данные) при попытке проанализировать открытый / закрытый ключ из неподписанного символа *?

Вот мой код (отредактировано для краткости):

DataPoint* GetPublicKey(mbedtls_pk_context* pppctx)
{
unsigned char* PKey = new unsigned char[16000];
if (mbedtls_pk_write_pubkey_pem(pppctx, PKey, 16000) != 0)
{
delete[] PKey;
return NULL;
}
DataPoint* Out = new DataPoint(strlen((char*)PKey) + 1); //Initializes an internal unsigned char* and size_t with the length of the key and the null byte
memcpy(Out->Data, PKey, Out->Length);
delete[] PKey;
return Out;
}

void GenRSA(mbedtls_rsa_context* rs)
{
mbedtls_rsa_gen_key(rs, mbedtls_ctr_drbg_random, &dctx, 2048, 65537);
}

int main()
{
mbedtls_pk_context pctx;
mbedtls_pk_init(&pctx);
mbedtls_pk_setup(&pctx, mbedtls_pk_info_from_type(MBEDTLS_PK_RSA));

DataPoint* Key = GetPublicKey(&some_context_with_GenRSA_called);

cout << mbedtls_pk_parse_public_key(&pctx, Key->Data, Key->Length) << endl; //Returns -16000

return 0
}

И то же самое с закрытым ключом, что я делаю не так?

0

Решение

документы для mbedtls_pk_parse_public_key сказать:

При входе ctx должен быть пустым, либо заново инициализирован с помощью mbedtls_pk_init (), либо сброшен с помощью mbedtls_pk_free ().

Ваши псевдокодовые звонки mbedtls_pk_setup на pctx, Возможно, это проблема?

Можете ли вы проверить с другими конвертерами, такими как https://superdry.apphb.com/tools/online-rsa-key-converter чтобы увидеть, могут ли они разобрать ваш PEM?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]