>>>>>Какие существуют аналоги функций php openssl_sign() и openssl_verify() в Си? И если >>>>>есть примеры проверки цифровой подписи на них. >>>> >>>>openssl API. В зависимости от системы /usr/include/openssl/ или /usr/local/include/openssl/ >>> >>>Можете привести примеры проверки цифровой подписи? Или ссылку, где их можно найти. >>> >> >>Имеется две переменные char *txl и char *sign и ключи. Нужно >>1) Проверить данные по сигнатуре (аналог openssl_verify в php) >>2) К данным сгенерировать сигнатуру (аналог openssl_sign). > > >EVP_SignInit (&md_ctx, EVP_sha1()); > EVP_SignUpdate (&md_ctx, data, strlen(data)); > sig_len = sizeof(sig_buf); > err = EVP_SignFinal (&md_ctx, sig_buf, &sig_len, pkey); > > if (err != 1) { > ERR_print_errors_fp(stderr); > exit (1); > } > > EVP_PKEY_free (pkey); > > >Как извлечь отсюда сигнатуру и вывести в файл или на печать? /* Read private key */ fp = fopen (keyfile, "r"); if (fp == NULL) exit (1); pkey = PEM_read_PrivateKey(fp, NULL, NULL, NULL); fclose (fp);
Что нужно изменить, чтобы читались RSA ключи? Как аналог PEM_read_PrivateKey(fp, NULL, NULL, NULL) для RSA ? Иначе эта ошибка. 13188:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:642:Expecting: ANY PRIVATE KEY
|