1
지원되는 모든 다이제스트 알고리즘에 대해 동적으로 EVP_MD*
의 목록을 얻는 방법을 궁금합니다. 순간 나는 정적 배열지원되는 모든 다이제스트 알고리즘 목록 얻기
const EVP_MD* aHashAlgos[] = { EVP_sha512(), EVP_sha384(), EVP_sha256() ... }
가 감사를 사용하고 있습니다!
지원되는 모든 다이제스트 알고리즘에 대해 동적으로 EVP_MD*
의 목록을 얻는 방법을 궁금합니다. 순간 나는 정적 배열지원되는 모든 다이제스트 알고리즘 목록 얻기
const EVP_MD* aHashAlgos[] = { EVP_sha512(), EVP_sha384(), EVP_sha256() ... }
가 감사를 사용하고 있습니다!
다음은 등록 된 모든 다이제스트 방법을 나열합니다.
#include <openssl/evp.h>
#include <openssl/objects.h>
#include <stdio.h>
void my_callback(const OBJ_NAME *obj, void *arg)
{
printf("Digest: %s\n", obj->name);
}
int main(int argc, char *argv)
{
void *my_arg;
OpenSSL_add_all_digests(); //make sure they're loaded
my_arg = NULL;
OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, my_callback, my_arg);
}
콜백은 OBJ_NAME 유형의 객체를받습니다
typedef struct obj_name_st {
int type;
int alias;
const char *name;
const char *data;
} OBJ_NAME;
당신은 EVP_get_digestbyname()
를 통해 관련 EVP_MD*
를 찾아 볼 수 있습니다. 이 방법은 원하지 않는 것들이 많이 있습니다.
$ ./a.out
Digest: ripemd160WithRSA
Digest: ssl2-md5
Digest: sha384
Digest: sha224
Digest: SHA224
Digest: md4
Digest: sha512
Digest: RSA-SHA256
Digest: DSA-SHA
Digest: sha1WithRSAEncryption
Digest: MD5
Digest: MD4
Digest: ssl3-sha1
Digest: ripemd160
Digest: sha
Digest: SHA384
Digest: SHA1
Digest: ssl3-md5
Digest: sha256
Digest: sha384WithRSAEncryption
Digest: SHA512
Digest: DSA-SHA1-old
Digest: dsaWithSHA1
Digest: ecdsa-with-SHA1
Digest: whirlpool
Digest: RSA-RIPEMD160
Digest: rmd160
Digest: RIPEMD160
Digest: RSA-SHA1-2
Digest: RSA-SHA1
Digest: dsaWithSHA
Digest: md5WithRSAEncryption
Digest: DSS1
Digest: RSA-MD5
Digest: dsaEncryption
Digest: ripemd
Digest: md4WithRSAEncryption
Digest: DSA
Digest: sha512WithRSAEncryption
Digest: SHA
Digest: dss1
Digest: RSA-SHA224
Digest: RSA-SHA512
Digest: SHA256
Digest: md5
Digest: RSA-SHA384
Digest: sha1
Digest: sha224WithRSAEncryption
Digest: RSA-SHA
Digest: shaWithRSAEncryption
Digest: sha256WithRSAEncryption
Digest: DSA-SHA1
Digest: RSA-MD4