{"id":52,"date":"2010-04-17T21:29:54","date_gmt":"2010-04-18T06:29:54","guid":{"rendered":"\/blog\/?p=52"},"modified":"2023-09-21T09:41:21","modified_gmt":"2023-09-21T00:41:21","slug":"openssl-library","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=52","title":{"rendered":"OpenSSL Library"},"content":{"rendered":"\n<H1><FONT size=4>ssl<\/FONT><\/H1>\n<H1><a class=\"con_link\" name=\"NAME\" target=\"_blank\" rel=\"noopener\"><FONT size=4 face=\uad74\ub9bc>NAME <\/FONT><\/A><\/H1><FONT face=\uad74\ub9bc><FONT size=-1>SSL<\/FONT> - OpenSSL <FONT size=-1>SSL\/TLS<\/FONT> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac <\/FONT>\n<P>\n<H1><a class=\"con_link\" name=\"SYNOPSIS\" target=\"_blank\" _cssquery_UID=\"40\" rel=\"noopener\"><FONT size=4 face=\uad74\ub9bc>SYNOPSIS <\/FONT><\/A><\/H1>\n<P>\n<H1><a class=\"con_link\" name=\"DESCRIPTION\" target=\"_blank\" rel=\"noopener\"><FONT size=4 face=\uad74\ub9bc>DESCRIPTION <\/FONT><\/A><\/H1><FONT face=\uad74\ub9bc>OpenSSL <STRONG>ssl<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 Secure Sockets Layer <FONT size=-1>(SSL<\/FONT> v2\/v3)\uc640 Transport Layer Security <FONT size=-1>(TLS<\/FONT> v1) \ud504\ub85c\ud1a0\ucf5c\uc744 \uc2e4\uc7a5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0 \uae30\uc220\ub418\ub294 \ud48d\ubd80\ud55c <FONT size=-1>API<\/FONT> \ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. <\/FONT>\n<P>\n<H1><a class=\"con_link\" name=\"HEADER_FILES\" target=\"_blank\" _cssquery_UID=\"42\" rel=\"noopener\"><FONT size=4 face=\uad74\ub9bc>HEADER FILES <\/FONT><\/A><\/H1><FONT face=\uad74\ub9bc>\ucd5c\uc2e0\uc758 OpenSSL <STRONG>ssl<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294, \ub370\uc774\ud130\u00b7\uc2a4\ud2b8\ub7ed\uccd0\uc640 \uae30\ub2a5\uc758 prototype\ub97c \ud3ec\ud568\ud55c, \uc774\ud558\uc758 <FONT size=-1>C<\/FONT> \ud5e4\ub354\u00b7\ud30c\uc77c\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4: <\/FONT>\n<P>\n<DL>\n<DT><STRONG><a class=\"con_link\" name=\"item_ssl\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>ssl.h <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc><FONT size=-1>SSL\/TLS<\/FONT> <FONT size=-1>API<\/FONT> \ub97c \uc704\ud55c \uacf5\ud1b5 \ud5e4\ub354\u00b7\ud30c\uc77c\uc785\ub2c8\ub2e4. <STRONG>ssl<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\ub294 <FONT size=-1>API<\/FONT> \ub97c make \ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ud3ec\ud568\ud558\uac8c \ud569\ub2c8\ub2e4. \uc0ac\uc801\uc778 <FONT size=-1>SSL<\/FONT> \ud5e4\ub354\uc640 <STRONG>crypto<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c\ubd80\ud130\uc758 \ud5e4\ub354\uc758 \uc591\ucabd \ubaa8\ub450\ub97c \ub0b4\ubd80\uc801\uc73c\ub85c \ud3ec\ud568\ud569\ub2c8\ub2e4. <FONT size=-1>SSL<\/FONT> <FONT size=-1>API<\/FONT> \ub0b4\ubd80\uc758 \ud575\uc2ec\uc758 \uc0c1\uc138\ub97c \uc54c \ud544\uc694\uac00 \uc788\ub2e4\uba74, \uc774 \ud5e4\ub354 \ud30c\uc77c \ub0b4\ubd80\ub97c \ubd10 \uc8fc\uc138\uc694. <\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_ssl2\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>ssl2.h <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>SSLv2 \ud504\ub85c\ud1a0\ucf5c\ub9cc\uc73c\ub85c \ucde8\uae09\ud558\ub294 \uc11c\ube0c\u00b7\ud5e4\ub354\u00b7\ud30c\uc77c\uc785\ub2c8\ub2e4. <EM>\uc774\ubbf8 ssl.h \uc5d0 \uc758\ud574 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c, \ubcf4\ud1b5\uc740 \ub2f9\uc2e0\uc774 \ud3ec\ud568\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. <\/EM><\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_ssl3\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>ssl3.h <\/FONT><\/A><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>SSLv3 \ud504\ub85c\ud1a0\ucf5c\ub9cc\uc73c\ub85c \ucde8\uae09\ud558\ub294 \uc11c\ube0c\u00b7\ud5e4\ub354\u00b7\ud30c\uc77c\uc785\ub2c8\ub2e4. <EM>\uc774\ubbf8 ssl.h \uc5d0 \uc758\ud574 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c, \ubcf4\ud1b5\uc740 \ub2f9\uc2e0\uc774 \ud3ec\ud568\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. <\/EM><\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_ssl23\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>ssl23.h <\/FONT><\/A><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>SSLv2 \uc640 SSLv3 \ud504\ub85c\ud1a0\ucf5c\uc758 \ud3b8\uc131\uc73c\ub85c \ucde8\uae09\ud558\ub294 \uc11c\ube0c\u00b7\ud5e4\ub354\u00b7\ud30c\uc77c\uc785\ub2c8\ub2e4. <EM>\uc774\ubbf8 ssl.h \uc5d0 \uc758\ud574 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c, \ubcf4\ud1b5\uc740 \ub2f9\uc2e0\uc774 \ud3ec\ud568\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. <\/EM><\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_tls1\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>tls1.h <\/FONT><\/A><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>TLSv1 \ud504\ub85c\ud1a0\ucf5c\ub9cc\uc73c\ub85c \ucde8\uae09\ud558\ub294 \uc11c\ube0c\u00b7\ud5e4\ub354\u00b7\ud30c\uc77c\uc785\ub2c8\ub2e4. <EM>\uc774\ubbf8 ssl.h \uc5d0 \uc758\ud574 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c, \ubcf4\ud1b5\uc740 \ub2f9\uc2e0\uc774 \ud3ec\ud568\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. <\/EM><\/FONT><\/DD><\/DL>\n<P>\n<H1><a class=\"con_link\" name=\"DATA_STRUCTURES\" target=\"_blank\" rel=\"noopener\"><FONT size=4 face=\uad74\ub9bc>DATA STRUCTURES <\/FONT><\/A><\/H1><FONT face=\uad74\ub9bc>\ucd5c\uc2e0\uc758 OpenSSL <STRONG>ssl<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac \uae30\ub2a5\uc740, \uc774\ud558\uc758 \ub370\uc774\ud130\u00b7\uc2a4\ud2b8\ub7ed\uccd0\uc5d0 \ub300\uc751\ud569\ub2c8\ub2e4: <\/FONT>\n<P>\n<DL>\n<DT><STRONG><a class=\"con_link\" name=\"item_SSL_METHOD\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>SSL_METHOD (SSL Method) <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc5ec\ub7ec\uac00\uc9c0 \ud504\ub85c\ud1a0\ucf5c\uc758 \ubc84\uc83c (SSLv1, SSLv2, TLSv1)\uc744 \uc2e4\uc7a5\ud55c \ub0b4\ubd80\uc801\uc778 <STRONG>ssl<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubc29\uc2dd\u00b7\uae30\ub2a5\uc744 \uae30\uc220\ud558\uace0 \uc788\ub294 \ub514\uc2a4\ud31f\uce58 \uad6c\uc131\uc785\ub2c8\ub2e4. <STRONG>SSL_CTX<\/STRONG> \ub97c \ub9cc\ub4e4 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4. <\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_SSL_CIPHER\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>SSL_CIPHER (SSL Cipher) <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc774 \uad6c\uc131\uc740 <FONT size=-1>SSL\/TLS<\/FONT> \ud504\ub85c\ud1a0\ucf5c\uc758 \ud575\uc2ec \ubd80\ubd84\uc774 \ub418\uc5b4 \uc788\ub294 \ud2b9\uc815\uc758 cipher \ub97c \uc704\ud55c \uc54c\uace0\ub9ac\uc998 \uc815\ubcf4\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc6a9\ud560 \uc218 \uc788\ub294 cipher \ub294 <STRONG>SSL_CTX<\/STRONG> \ub97c \uae30\ubcf8\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc2e4\uc81c\ub85c \uc0ac\uc6a9\ub418\ub294 \uac83\uc740 <STRONG>SSL_SESSION<\/STRONG> \uc758 \ubd80\ubd84\uc785\ub2c8\ub2e4. <\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_SSL_CTX\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>SSL_CTX (SSL Context) <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\ud504\ub85c\uadf8\ub7a8\uc758 life-time \ub9c8\ub2e4 \ud55c \ubc88, \uc11c\ubc84\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \uc758\ud574 \ub9cc\ub4e4\uc5b4\uc838 \uc811\uc18d\uc744 \uc704\ud574\uc11c(\ub54c\ubb38\uc5d0) \ub2e4\uc74c\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c0\ub294 <STRONG>SSL<\/STRONG> \uad6c\uc131\uc744 \uc704\ud55c \ub514\ud3f4\ud2b8\uce58\ub97c \uc8fc\ub85c \uac00\uc9c0\ub294 \uc804\uccb4\uc801\uc778 \ucf58\ud14d\uc2a4\ud2b8 \uad6c\uc131\uc785\ub2c8\ub2e4. <\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_SSL_SESSION\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>SSL_SESSION (SSL Session) <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc774\uac83\uc740 \uc811\uc18d\uc744 \uc704\ud55c \ucd5c\uc2e0\uc758 <FONT size=-1>SSL<\/FONT> \uc138\uc158\uc758 \uc0c1\uc138\ub97c \ud3ec\ud568\ud55c \uad6c\uc131\uc785\ub2c8\ub2e4:<STRONG>SSL_CIPHER<\/STRONG>, \ud074\ub77c\uc774\uc5b8\ud2b8\uc640 \uc11c\ubc84\uc758 \uc99d\uba85\uc11c, \uc5f4\uc1e0, \ub4f1. <\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_SSL\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>SSL (SSL Connection) <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\ud655\ub9bd\ud55c \uc811\uc18d\ub9c8\ub2e4 \uc11c\ubc84\ub098 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \uc758\ud574 \ub9cc\ub4e4\uc5b4\uc9c0\ub294 \uc8fc\ub41c <FONT size=-1>SSL\/TLS<\/FONT> \uad6c\uc131\uc785\ub2c8\ub2e4. \uc774\uac83\uc740 \uc2e4\uc81c\ub85c\ub294 <FONT size=-1>SSL<\/FONT> <FONT size=-1>API<\/FONT> \uc5d0\uc11c\ub294 \ud575\uc2ec\uc774 \ub418\ub294 \uad6c\uc131\uc785\ub2c8\ub2e4. run-time \uc758 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ud1b5\uc0c1, \uac70\uc758 \ub2e4\ub978 \ubaa8\ub4e0 \uad6c\uc131\uc5d0 \ub300\ud55c \ub9c1\ud06c\ub97c \uac00\uc9c4 \uad6c\uc131\uc5d0 \ub300\uc751\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/FONT><\/DD><\/DL>\n<P>\n<H1><a class=\"con_link\" name=\"API_FUNCTIONS\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc><FONT size=4>API FUNCTIONS<\/FONT> <\/FONT><\/A><\/H1><FONT face=\uad74\ub9bc>\ucd5c\uc2e0\uc758 OpenSSL <STRONG>ssl<\/STRONG> \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 214 \uc758 <FONT size=-1>API<\/FONT> \uae30\ub2a5\uc744 export \ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ud558\uc5d0 \uae30\uc220\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4: <\/FONT>\n<P>\n<H2><a class=\"con_link\" name=\"DEALING_WITH_PROTOCOL_METHODS\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc><FONT size=4>DEALING WITH PROTOCOL METHODS<\/FONT> <\/FONT><\/A><\/H2><FONT face=\uad74\ub9bc>\uc5ec\uae30\uc5d0\uc11c\ub294 <STRONG>SSL_METHOD<\/STRONG> \uad6c\uc131\uc73c\ub85c \uc815\uc758\ub418\ub294 <FONT size=-1>SSL\/TLS<\/FONT> \ud504\ub85c\ud1a0\ucf5c \ubc29\uc2dd\uc73c\ub85c \ub300\uc751\ud55c, \uc5ec\ub7ec\uac00\uc9c0 <FONT size=-1>API<\/FONT> \uae30\ub2a5\uc744 \uae30\uc220\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/FONT>\n<P>\n<DL>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSLv2_client_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc804\uc6a9 \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc704\ud55c SSLv2 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSLv2_server_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc804\uc6a9 \uc11c\ubc84\ub97c \uc704\ud55c SSLv2 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSLv2_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc9dc \ud569\uccd0\uc9c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uc640 \uc11c\ubc84\ub97c \uc704\ud55c SSLv2 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSLv3_client_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc804\uc6a9\uc758 \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc704\ud55c SSLv3 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSLv3_server_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc804\uc6a9 \uc11c\ubc84\ub97c \uc704\ud55c SSLv3 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSLv3_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc9dc \ud569\uccd0\uc9c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uc640 \uc11c\ubc84\ub97c \uc704\ud55c SSLv3 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *TLSv1_client_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc804\uc6a9 \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc704\ud55c TLSv1 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *TLSv1_server_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc804\uc6a9 \uc11c\ubc84\ub97c \uc704\ud55c TLSv1 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *TLSv1_method(void); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc9dc \ud569\uccd0\uc9c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uc640 \uc11c\ubc84\ub97c \uc704\ud55c TLSv1 <FONT size=-1>SSL_METHOD<\/FONT> \uad6c\uc131\uc5d0 \ub300\ud55c \ucee8\uc2a4\ud2b8\ub9ad\ud130. <\/FONT><\/DD><\/DL>\n<P>\n<H2><a class=\"con_link\" name=\"DEALING_WITH_CIPHERS\" target=\"_blank\" _cssquery_UID=\"43\" rel=\"noopener\"><FONT face=\uad74\ub9bc><FONT size=4>DEALING WITH CIPHERS<\/FONT> <\/FONT><\/A><\/H2><FONT face=\uad74\ub9bc>\uc5ec\uae30\uc5d0\uc11c\ub294 <STRONG>SSL_CIPHER<\/STRONG> \uad6c\uc131\uc73c\ub85c \uc815\uc758\ub41c <FONT size=-1>SSL\/TLS<\/FONT> cipher \uc5d0 \ub300\uc751\ud55c \uc5ec\ub7ec\uac00\uc9c0 <FONT size=-1>API<\/FONT> \uc758 \uae30\ub2a5\uc744 \uae30\uc220\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/FONT>\n<P>\n<DL>\n<DT><STRONG><a class=\"con_link\" name=\"item_char\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uc0ac\ub78c\uc774 \uc77d\uc744 \uc218 \uc788\ub294 <EM>cipher<\/EM> \uc758 \uae30\uc220\uc744 \ud3ec\ud568\ud55c <EM>buf<\/EM> (<EM>len<\/EM> \uc758 \ucd5c\ub300 \uc0ac\uc774\uc988\ub85c)\uc5d0 \uce90\ub9ad\ud130 \ub77c\uc778\uc744 \uc368,<EM>buf<\/EM> \ub97c \ub3cc\ub824\uc90d\ub2c8\ub2e4. <\/FONT>\n<DT><STRONG><a class=\"con_link\" name=\"item_int\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>int SSL_CIPHER_get_bits(SSL_CIPHER *cipher, int *alg_bits); <\/FONT><\/A><\/STRONG>\n<DD><FONT face=\uad74\ub9bc><EM>cipher<\/EM> \ub85c \ube44\ud2b8\uc218\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. 2 \ube44\ud2b8\uc5d0\uc11c\ub294 \ub3c4\uc6c0\uc774 \ub418\uc9c0 \uc54a\ub294 cipher \ub97c export \ud558\uae30 (\uc704\ud574)\ub54c\ubb38\uc5d0\uc785\ub2c8\ub2e4: \uc77c\ubc18\uc801(<EM>alg_bits<\/EM> \uc5d0 \ucd95\uc801\ub418\uace0 \uc788\ub2e4)\uc73c\ub85c \uc54c\uace0\ub9ac\uc998\uc774 \uc11c\ud3ec\ud2b8\ud558\uace0 \uc788\ub294 \ube44\ud2b8\uc640 \uc2e4\uc81c\ub85c \uc0ac\uc6a9\ub418\ub294 \ube44\ud2b8(\ub3cc\uc544\uac00 \uac12) <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_CIPHER_get_name(SSL_CIPHER *cipher); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc>\uce90\ub9ad\ud130 \ub77c\uc778\uc73c\ub85c\uc11c \ub0b4\ubd80\uc801\uc778 <EM>cipher<\/EM> \uc758 \uc774\ub984\uc744 \ub3cc\ub824\uc90d\ub2c8\ub2e4. \uc774\uac83\ub4e4\uc740 \ud5e4\ub354\u00b7\ud30c\uc77c\ub85c <EM>SSL2_TXT_xxx<\/EM>,<EM>SSL3_TXT_xxx<\/EM>,<EM>TLS1_TXT_xxx<\/EM> \uc5d0 \uc758\ud574 \uc815\uc758\ub41c \uc5ec\ub7ec\uac00\uc9c0 \uce90\ub9ad\ud130 \ub77c\uc778\uc785\ub2c8\ub2e4. <\/FONT>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_CIPHER_get_version(SSL_CIPHER *cipher); <\/FONT><\/STRONG>\n<DD><FONT face=\uad74\ub9bc><EM>cipher<\/EM> \uac00 \uc18d\ud558\ub294 (\uc989, \ucd5c\ucd08\uc758 \uc0ac\uc591\uc73c\ub85c \uc815\uc758\ub41c) <FONT size=-1>SSL\/TLS<\/FONT> \ud504\ub85c\ud1a0\ucf5c\uc758 \ubc84\uc83c\uc744 \ub098\ud0c0\ub0b4\ub294 ``<CODE>TLSv1\/SSLv3<\/CODE>''\ub098 ``<CODE>SSLv2<\/CODE>''\uc640 \uac19\uc740 \uce90\ub9ad\ud130 \ub77c\uc778\uc744 \ub3cc\ub824\uc90d\ub2c8\ub2e4 <\/FONT><\/DD><\/DL>\n<P>\n<H2><a class=\"con_link\" name=\"DEALING_WITH_PROTOCOL_CONTEXTS\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc><FONT size=4>DEALING WITH PROTOCOL CONTEXTS<\/FONT> <\/FONT><\/A><\/H2><FONT face=\uad74\ub9bc>\uc5ec\uae30\uc5d0\uc11c\ub294,<STRONG>SSL_CTX<\/STRONG> \uad6c\uc131\uc73c\ub85c \uc815\uc758\ub41c <FONT size=-1>SSL\/TLS<\/FONT> \ud504\ub85c\ud1a0\ucf5c\uc758 \ucf58\ud14d\uc2a4\ud2b8\uc5d0 \ub300\uc751\ud55c \uc5ec\ub7ec\uac00\uc9c0 <FONT size=-1>API<\/FONT> \uae30\ub2a5\uc744 \uae30\uc220\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/FONT>\n<P>\n<DL>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_long\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>long SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *x509); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_check_private_key(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_void\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>void SSL_CTX_flush_sessions(SSL_CTX *s, long t); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_free(SSL_CTX *a); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_CTX_get_app_data(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_X509_STORE\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_STACK\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>STACK *SSL_CTX_get_client_CA_list(SSL_CTX *ctx); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, EVP_PKEY **pkey); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_CTX_get_ex_data(SSL_CTX *s, int idx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_get_ex_new_index(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(SSL *ssl, int cb, int ret); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_get_quiet_shutdown(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_get_session_cache_mode(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_get_timeout(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int (*SSL_CTX_get_verify_callback(SSL_CTX *ctx))(int ok, X509_STORE_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_get_verify_mode(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_load_verify_locations(SSL_CTX *ctx, char *CAfile, char *CApath); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_need_tmp_RSA(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_CTX *SSL_CTX_new(SSL_METHOD *meth); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *c); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_accept(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_accept_good(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_accept_renegotiate(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_cache_full(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_cb_hits(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_connect(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_connect_good(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_connect_renegotiate(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_get_cache_size(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(SSL *ssl, unsigned char *data, int len, int *copy); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)(SSL *ssl, SSL_SESSION *sess); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)(SSL_CTX *ctx, SSL_SESSION *sess); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_hits(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_misses(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_number(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_sess_set_cache_size(SSL_CTX *ctx, t); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESSION *(*cb)(SSL *ssl, unsigned char *data, int len, int *copy)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, int (*cb)(SSL *ssl, SSL_SESSION *sess)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, void (*cb)(SSL_CTX *ctx, SSL_SESSION *sess)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_sess_timeouts(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_LHASH\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>LHASH *SSL_CTX_sessions(SSL_CTX *ctx); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_app_data(SSL_CTX *ctx, void *arg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *cs); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_cert_verify_cb(SSL_CTX *ctx, int (*cb)(SSL_CTX *), char *arg) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_set_cipher_list(SSL_CTX *ctx, char *str); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK *list); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, int (*cb);(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_default_read_ahead(SSL_CTX *ctx, int m); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_set_ex_data(SSL_CTX *s, int idx, char *arg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(SSL *ssl, int cb, int ret)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_session_cache_mode(SSL_CTX *ctx, int mode); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_set_ssl_version(SSL_CTX *ctx, SSL_METHOD *meth); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_timeout(SSL_CTX *ctx, long t); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_set_tmp_dh(SSL_CTX* ctx, DH *dh); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, DH *(*cb)(void)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_set_tmp_rsa(SSL_CTX *ctx, RSA *rsa); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, RSA *(*cb)(void)); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*cb);(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_PrivateKey_ASN1(int type, SSL_CTX *ctx, unsigned char *d, long len); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, char *file, int type); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, char *file, int type); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_CTX_use_certificate_file(SSL_CTX *ctx, char *file, int type); <\/FONT><\/STRONG>\n<DD>&nbsp;<\/DD><\/DL>\n<P>\n<H2><a class=\"con_link\" name=\"DEALING_WITH_SESSIONS\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc><FONT size=4>DEALING WITH SESSIONS<\/FONT> <\/FONT><\/A><\/H2><FONT face=\uad74\ub9bc>Here we document the various <FONT size=-1>API<\/FONT> functions which deal with the <FONT size=-1>SSL\/TLS<\/FONT> sessions defined in the <STRONG>SSL_SESSION<\/STRONG> structures. <\/FONT>\n<P>\n<DL>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_SESSION_cmp(SSL_SESSION *a, SSL_SESSION *b); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_SESSION_free(SSL_SESSION *ss); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_SESSION_get_app_data(SSL_SESSION *s); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_SESSION_get_ex_data(SSL_SESSION *s, int idx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_SESSION_get_ex_new_index(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_SESSION_get_time(SSL_SESSION *s); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_SESSION_get_timeout(SSL_SESSION *s); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_unsigned\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>unsigned long SSL_SESSION_hash(SSL_SESSION *a); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_SESSION *SSL_SESSION_new(void); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_SESSION_print(BIO *bp, SSL_SESSION *x); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_SESSION_print_fp(FILE *fp, SSL_SESSION *x); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_SESSION_set_app_data(SSL_SESSION *s, char *a); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, char *arg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_SESSION_set_time(SSL_SESSION *s, long t); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); <\/FONT><\/STRONG>\n<DD>&nbsp;<\/DD><\/DL>\n<P>\n<H2><a class=\"con_link\" name=\"DEALING_WITH_CONNECTIONS\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc><FONT size=4>DEALING WITH CONNECTIONS<\/FONT> <\/FONT><\/A><\/H2><FONT face=\uad74\ub9bc>Here we document the various <FONT size=-1>API<\/FONT> functions which deal with the <FONT size=-1>SSL\/TLS<\/FONT> connection defined in the <STRONG>SSL<\/STRONG> structure. <\/FONT>\n<P>\n<DL>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_accept(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_add_client_CA(SSL *ssl, X509 *x); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_alert_desc_string(int value); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_alert_desc_string_long(int value); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_alert_type_string(int value); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_alert_type_string_long(int value); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_check_private_key(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_clear(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_clear_num_renegotiations(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_connect(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_copy_session_id(SSL *t, SSL *f); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_ctrl(SSL *ssl, int cmd, long larg, char *parg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_do_handshake(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL *SSL_dup(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>STACK *SSL_dup_CA_list(STACK *sk); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_free(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_CTX *SSL_get_SSL_CTX(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_app_data(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_X509\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>X509 *SSL_get_certificate(SSL *ssl); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_CIPHER *SSL_get_cipher(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_cipher_bits(SSL *ssl, int *alg_bits); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_cipher_list(SSL *ssl, int n); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_cipher_name(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_cipher_version(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>STACK *SSL_get_ciphers(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>STACK *SSL_get_client_CA_list(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_CIPHER *SSL_get_current_cipher(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_get_default_timeout(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_error(SSL *ssl, int i); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_ex_data(SSL *ssl, int idx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_ex_data_X509_STORE_CTX_idx(void); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_ex_new_index(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_fd(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void (*SSL_get_info_callback(SSL *ssl);)(void) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>STACK *SSL_get_peer_cert_chain(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>X509 *SSL_get_peer_certificate(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_EVP_PKEY\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>EVP_PKEY *SSL_get_privatekey(SSL *ssl); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_quiet_shutdown(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><a class=\"con_link\" name=\"item_BIO\" target=\"_blank\" rel=\"noopener\"><FONT face=\uad74\ub9bc>BIO *SSL_get_rbio(SSL *ssl); <\/FONT><\/A><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_read_ahead(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_SESSION *SSL_get_session(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_shared_ciphers(SSL *ssl, char *buf, int len); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_shutdown(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL_METHOD *SSL_get_ssl_method(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_state(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_get_time(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_get_timeout(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int (*SSL_get_verify_callback(SSL *ssl);)(void) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_get_verify_mode(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_get_verify_result(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_get_version(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>BIO *SSL_get_wbio(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_in_accept_init(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_in_before(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_in_connect_init(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_in_init(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_is_init_finished(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>STACK *SSL_load_client_CA_file(char *file); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_load_error_strings(void); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>SSL *SSL_new(SSL_CTX *ctx); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_num_renegotiations(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_peek(SSL *ssl, char *buf, int num); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_pending(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_read(SSL *ssl, char *buf, int num); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_renegotiate(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_rstate_string(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_rstate_string_long(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_session_reused(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_accept_state(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_app_data(SSL *ssl, char *arg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_cipher_list(SSL *ssl, char *str); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_client_CA_list(SSL *ssl, STACK *list); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_connect_state(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_ex_data(SSL *ssl, int idx, char *arg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_fd(SSL *ssl, int fd); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_info_callback(SSL *ssl, void (*cb);(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_options(SSL *ssl, unsigned long op); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_quiet_shutdown(SSL *ssl, int mode); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_read_ahead(SSL *ssl, int yes); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_rfd(SSL *ssl, int fd); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_session(SSL *ssl, SSL_SESSION *session); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_shutdown(SSL *ssl, int mode); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_ssl_method(SSL *ssl, SSL_METHOD *meth); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_time(SSL *ssl, long t); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_timeout(SSL *ssl, long t); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_verify(SSL *ssl, int mode, int (*callback);(void)) <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>void SSL_set_verify_result(SSL *ssl, long arg); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_set_wfd(SSL *ssl, int fd); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_shutdown(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_state(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_state_string(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>char *SSL_state_string_long(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>long SSL_total_renegotiations(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_PrivateKey_ASN1(int type, SSL *ssl, unsigned char *d, long len); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_PrivateKey_file(SSL *ssl, char *file, int type); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_RSAPrivateKey_file(SSL *ssl, char *file, int type); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_certificate(SSL *ssl, X509 *x); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_certificate_ASN1(SSL *ssl, int len, unsigned char *d); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_use_certificate_file(SSL *ssl, char *file, int type); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_version(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_want(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_want_nothing(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_want_read(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_want_write(SSL *ssl); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_want_x509_lookup(s); <\/FONT><\/STRONG>\n<DD>\n<DT><STRONG><FONT face=\uad74\ub9bc>int SSL_write(SSL *ssl, char *buf, int num);&nbsp; <\/FONT><\/STRONG><\/DT><\/DL>\n","protected":false},"excerpt":{"rendered":"<p>ssl NAME SSL &#8211; OpenSSL SSL\/TLS \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac SYNOPSIS DESCRIPTION OpenSSL ssl \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 Secure Sockets Layer (SSL v2\/v3)\uc640 Transport Layer Security (TLS v1) \ud504\ub85c\ud1a0\ucf5c\uc744 \uc2e4\uc7a5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0 \uae30\uc220\ub418\ub294 \ud48d\ubd80\ud55c API \ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. HEADER FILES \ucd5c\uc2e0\uc758 OpenSSL ssl \ud504\ub85c\uadf8\ub7a8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294, \ub370\uc774\ud130\u00b7\uc2a4\ud2b8\ub7ed\uccd0\uc640 \uae30\ub2a5\uc758 prototype\ub97c \ud3ec\ud568\ud55c, \uc774\ud558\uc758 C \ud5e4\ub354\u00b7\ud30c\uc77c\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4: ssl.h SSL\/TLS API \ub97c \uc704\ud55c \uacf5\ud1b5 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[19],"tags":[],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-development_lib"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/52\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}