본문 바로가기

BackEnd/Linux

OpenSSL docs 정리 (업데이트 예정)

OPENSSL_malloc

- 메모리 할당, ONENSSL_free와 같이 사용

 

 

CRYPTO_num_locks

- 최대 처리가능한 mutex 개수

- mutex 관련하여 int 형 상수를 반환, 이만큼을 처리 할 수 있어야함

- OpenSSL-1.0.1j 기준으로 41임

- openssl/crypto/lock.c 소스에서 확인 가능

- 다중 스레드를 사용할 경우 충돌 할 수 있으므로 lock 사용

 

 

CRYPTO_THREADID_set_callback

- 주어진 lock type과 잠금 해제 여부(mode)로 해당 lock를 관리해줌

- 현재 실행 중인 스레드의 tid 별로 등록해서 관리 함

→ CRYPTO_THREADID_set_numeric을 사용한 콜백을 등록

- 콜백 등록 하지 않으면 기본 구현으로 사용됨

 

 

CRYPTO_THREADID_set_numeric

- 콜백 등록할 때 사용

- thread id와 pthread_self() 두개를 파라미터로 넣어줌

 

 

CRYPTO_set_locking_callback

- 모든 SSL 버전에서 사용가능

- mode & CRYPTO_LOCK 이면 n 번째 잠금을 설정

 

 

OpenSSL_add_all_algorithms

- OpenSSL은 여러 암호화 알고리즘을 쓰는데, all이면 다 쓰겠다는 뜻

- 그밖에 _all_digests/_all_ciphers 등등이 있음

 

 

SSL_load_error_strings

- libcrypto와 libssl에 대한 에러 문자열을 등록 함

- error:[error code]:[library name]:[function name]:[reason string]

 

 

SSL_library_init

- 사용 가능한 SSL/TLS 암호 및 Digest를 등록

- 초기화 할 때 시작하면 됨

- 보통 사용시에 SSL_load_error_strings랑 같이 많이 사용 함

- 항상 "1"을 반환하니까 반환 값 버려도 됨

 

SSL_CTX_new

- TLS/SSL 또는 DTLS 사용 연결을 설정하기 위한 프레임워크로 새 SSL_CTX 개체를 생성

 

SSL_new

- SSL_CTX_new로 생성한 context 객체를 파라미터로 설정

- TLS/SSL connection을 위한 객체를 생성함

- SSL_CTX_new → SSL_new → SSL_connect 순

 

SSL_set_fd(ssl 객체, fd)

- 파일 설명자 fd를 TLS/SSL(암호화)를 하기 위한 입력/출력 기능으로 설정

 

SSL_connect

- 서버와의 TLS/SSL 핸드셰이크를 시작함
- 기본 BIO 를 설정하여 통신 채널이 이미 설정되고 SSL 에 할당되어 있어야 함

 

SSL_get_peer_certificate

- 피어가 제시한 X509 인증서에 대한 포인터를 반환

- 없으면 NULL 

 


참고자료

 

http://blog.purewell.biz/2014/11/openssl-supports-multi-threading.html

 

OpenSSL supports Multi-threading

Purewell's personal blog

blog.purewell.biz