간단한 서버 응용 프로그램의 개인 키와 공개 키를 C/C++ API를 통해 포함시킬 수 있습니까? 가급적이면 전체 OpenSSL 라이브러리를 먼저 해킹하지 않아도됩니다.응용 프로그램에 SSL 키 포함
그리고 embed는 파일에서 직접 읽는 대신 문자열이나 char * 같은 것을 API에 전달하는 것을 의미합니다.
감사합니다.
간단한 서버 응용 프로그램의 개인 키와 공개 키를 C/C++ API를 통해 포함시킬 수 있습니까? 가급적이면 전체 OpenSSL 라이브러리를 먼저 해킹하지 않아도됩니다.응용 프로그램에 SSL 키 포함
그리고 embed는 파일에서 직접 읽는 대신 문자열이나 char * 같은 것을 API에 전달하는 것을 의미합니다.
감사합니다.
당신은 직접 X509의 object에 unsigned char *
버퍼에서 DER로 인코딩 된 인증서를 변환 할 d2i_X509()
기능을 사용할 수 있습니다 :
const unsigned char cert_DER[] = /* ... */;
const unsigned char *p = cert_DER;
X509 *cert_X509 = d2i_X509(NULL, &p, sizeof cert_DER);
키와 같은 다른 OpenSSL을 개체에 대한 유사한 d2i_*()
기능이 있습니다 - 예. d2i_RSAPrivateKey()
.
예. BIO_new_mem_buf
을 사용하여 읽기 루틴에 대해 BIO
입력을 만든 다음 적절한 PEM_read_bio_*
함수를 호출하여 키와 인증서를 추출합니다. (openssl
에 국한되지 않음) 내가 open
/read
또는 mmap
그것을 가지고하지 않으려는 메모리에 파일 같은 것을 인코딩 할 필요를 찾을 때, 나는 보통 objcopy
을 사용하여 일반적으로
BIO *in = BIO_new_mem_buf(pkey, pkey_len);
EVP_PKEY *ep = PEM_read_bio_PrivateKey(in, ...);
BIO *in = BIO_new_mem_buf(certs, cert_len);
X509 *x = PEM_read_bio_X509_AUX(in, ...);
(제공 I 해당 프로젝트에 대해 GNU binutils
에 액세스하십시오. 대단히 효과적입니다. 예를 들어
:
objcopy --input binary --output elf32-i386 --binary-architecture i386 resource.img resource.o
objcopy
resource.img
는 상기 데이터를 포함하는 오브젝트 코드를 생성하고 그리고 _binary_resource_img_start
_binary_data_txt_end
(그리고 ... length
)라는 심볼을 생성한다. 나는이 변수들에 대한 선언을 extern
으로 만들 수 있으며 메모리에서 리소스를 찾기 위해 그들의 주소를 취할 수있다. Voilà!
이것은 매우 유망 해 보이며 x86_64에서 이것을 수행하는 방법을 알고 있습니까? 나 혼자 힘으로 노력하면서 몇 가지 문제가있다. – Schoentoon
나는이 방법과 'objcopy' – Schoentoon