2012-01-05 2 views
3

C에서 통신 프로그램을 작성 중이며 GnuPG 암호화를 사용하는 가장 좋은 방법을 찾고 있습니다. mcrypt 라이브러리를 통해 이미 대칭 암호화 알고리즘을 사용하고 있지만 가능하면 GnuPG를 사용하여 일부 공개 키 기능을 통합하고자합니다. 이 작업을 수행하는 데 유용한 라이브러리가 있습니까? 이것을 달성하기 위해 프로그램을 통해 GPG와 직접 상호 작용하는 것이 더 낫지 않습니까? 이 구현을 가능한 한 깨끗하게 유지하려면 모든 통찰력이 인정 될 것입니다. 감사.C에서 GPG를 사용 하시겠습니까?

답변

4

불행히도 GnuPG은 API가 아닌 대화식으로 사용하도록 설계되었습니다.

일부 공용 키 기능을 통합하려고합니다. SSL과 TLS는 훨씬 더 자주 사용되는 GPG의 대안입니다.

공개 키 기능이 일반적으로 찾는 것이면 GnuTLS은 원하는 것을 정확하게 제공하는 네트워크 기반 프로그램 용 API입니다. 많은 지원을 받고 SSL 및 TLS 공개 키 암호화 기능을 제공합니다.

그러나 GPG를 사용하여 설정하지 않은 경우 GPGME은 GPG 주위에 API를 래핑하는 프로젝트입니다. 나는 그것을 사용하지 않았고 그것의 사용에 관해 충고 할 수는 없지만 그것이 다소 강제 될 수 있다고 생각한다.

2

GPGme은 참으로 official API for GPG이며, (시험의 예제는/​​GPG은 매우 도움이됩니다) 여기

존 스미스 암호화하는 예이다 사용하기 쉽고 잘 설명되어 있습니다

gpgme_data_t clear_text, encrypted_text; 
gpgme_key_t recipients[2] = {NULL, NULL}; 
     /* The array must be NULL-terminated */ 
... 
error = gpgme_op_keylist_start(context, "John Smith", 1); 
error = gpgme_op_keylist_next(context, &recipients[0]); 
... 
error = gpgme_op_encrypt(context, recipients, 
       GPGME_ENCRYPT_ALWAYS_TRUST, 
          clear_text, encrypted_text);