2011-08-16 7 views
7

openssl 동적 엔진을 작성하려고하지만 해당 문서를 찾을 수 없습니다.openssl 엔진을 작성하는 방법

쓸 알고리즘은 chipper 알고리즘 (rsa와 같은)과 해시 알고리즘 (md5와 같은)입니다.

내가 변경할 수있는 간단한 엔진 소스 코드가 있습니까?

+0

늦은 그러나 가능하게 관련 다른 사람을 위해 : [개발로드하고 (Random Numbers|Hardware에서) 기본 난수 생성기 엔진으로 설정하는 방법

다음
openssl-1.0.1f$ grep -R -i ENGINE_rdrand * crypto/engine/eng_rdrand.c:static ENGINE *ENGINE_rdrand(void) crypto/engine/eng_rdrand.c: ENGINE *toadd = ENGINE_rdrand(); 

가있다 : 당신과의 소스를 찾을 수 있습니다 OpenSSL 용 엔진] (http://sinodun.com/2009/02/developing-an-engine-for-openssl/). – javex

+1

모든 구직자에게 더 좋은 예가 OpenSSL Wiki 소스가 첨부되어 있습니다 : https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms 행운을 빕니다. – Jonas

답변

1

내가 변경할 수있는 간단한 엔진 소스 코드가 있습니까?

인텔 RDRAND 엔진은 매우 이해하기 쉽습니다.

unsigned long err = 0; 
int rc = 0; 

OPENSSL_cpuid_setup(); 
ENGINE_load_rdrand(); 

ENGINE* eng = ENGINE_by_id("rdrand"); 
err = ERR_get_error(); 

if(NULL == eng) { 
    fprintf(stderr, "ENGINE_load_rdrand failed, err = 0x%lx\n", err); 
    abort(); /* failed */ 
} 

rc = ENGINE_init(eng); 
err = ERR_get_error(); 

if(0 == rc) { 
    fprintf(stderr, "ENGINE_init failed, err = 0x%lx\n", err); 
    abort(); /* failed */ 
} 

rc = ENGINE_set_default(eng, ENGINE_METHOD_RAND); 
err = ERR_get_error(); 

if(0 == rc) { 
    fprintf(stderr, "ENGINE_set_default failed, err = 0x%lx\n", err); 
    abort(); /* failed */ 
} 

/* OK to proceed */ 

... 
ENGINE_finish(eng); 
ENGINE_free(eng); 
0

나는 당신이 당신에게있는 OpenSSL 소스 코드를 제공합니다

apt-get source openssl 

을 제안한다. 트리 내에서 예를 들어 crypto/rsa 및 crypto/md5라는 디렉토리를 찾을 수 있습니다.이 디렉토리는 프로젝트의 시작일 것입니다. 또한 README 등의 형태로 문서가 제공됩니다.

재미있게 보내십시오.

+0

동적 엔진 모드에서 사용할 수 있습니까? – hamSh

+0

나에게 그것은 그 것처럼 보인다. README.ENGINE을 살펴보십시오. 그것은 말합니다 : 또한 외부 ENGINE 구현에 대한 동적 바인딩은 "동적"이라는 특수 ENGINE에서 제공하는 입니다. 자세한 내용은 아래의 "동적 엔진" 섹션을 참조하십시오. – Nodebody

+0

오케이. 알겠습니다. 동적 엔진으로로드 할 엔진을 작성하는 방법. 테스트를 위해 컴파일하고로드 할 샘플 엔진은 무엇입니까? – hamSh

관련 문제