tortls_nss.c 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. /* Copyright (c) 2003, Roger Dingledine.
  2. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
  3. * Copyright (c) 2007-2018, The Tor Project, Inc. */
  4. /* See LICENSE for licensing information */
  5. /**
  6. * \file tortls_nss.c
  7. * \brief Wrapper functions to present a consistent interface to
  8. * TLS and SSL X.509 functions from NSS.
  9. **/
  10. #include "orconfig.h"
  11. #define TORTLS_PRIVATE
  12. #ifdef _WIN32 /*wrkard for dtls1.h >= 0.9.8m of "#include <winsock.h>"*/
  13. #include <winsock2.h>
  14. #include <ws2tcpip.h>
  15. #endif
  16. #include "lib/crypt_ops/crypto_cipher.h"
  17. #include "lib/crypt_ops/crypto_rand.h"
  18. #include "lib/crypt_ops/crypto_dh.h"
  19. #include "lib/crypt_ops/crypto_util.h"
  20. #include "lib/tls/x509.h"
  21. #include "lib/tls/tortls.h"
  22. #include "lib/tls/tortls_internal.h"
  23. #include "lib/log/util_bug.h"
  24. int
  25. tor_errno_to_tls_error(int e)
  26. {
  27. (void)e;
  28. // XXXX
  29. return -1;
  30. }
  31. int
  32. tor_tls_get_error(tor_tls_t *tls, int r, int extra,
  33. const char *doing, int severity, int domain)
  34. {
  35. (void)tls;
  36. (void)r;
  37. (void)extra;
  38. (void)doing;
  39. (void)severity;
  40. (void)domain;
  41. // XXXX
  42. return -1;
  43. }
  44. tor_tls_t *
  45. tor_tls_get_by_ssl(const struct ssl_st *ssl)
  46. {
  47. (void) ssl;
  48. // XXXX
  49. // XXXX refers to ssl_st.
  50. return NULL;
  51. }
  52. void
  53. tor_tls_allocate_tor_tls_object_ex_data_index(void)
  54. {
  55. // XXXX openssl only.
  56. }
  57. MOCK_IMPL(void,
  58. try_to_extract_certs_from_tls,(int severity, tor_tls_t *tls,
  59. tor_x509_cert_impl_t **cert_out,
  60. tor_x509_cert_impl_t **id_cert_out))
  61. {
  62. tor_assert(tls);
  63. tor_assert(cert_out);
  64. tor_assert(id_cert_out);
  65. (void)severity;
  66. // XXXX
  67. }
  68. int
  69. tor_tls_client_is_using_v2_ciphers(const struct ssl_st *ssl)
  70. {
  71. (void) ssl;
  72. // XXXX
  73. // XXXX refers to ssl_st.
  74. return 0;
  75. }
  76. void
  77. tor_tls_debug_state_callback(const struct ssl_st *ssl,
  78. int type, int val)
  79. {
  80. (void) ssl;
  81. (void)type;
  82. (void)val;
  83. // XXXX
  84. // XXXX refers to ssl_st.
  85. }
  86. void
  87. tor_tls_server_info_callback(const struct ssl_st *ssl,
  88. int type, int val)
  89. {
  90. (void)ssl;
  91. (void)type;
  92. (void)val;
  93. // XXXX
  94. // XXXX refers to ssl_st.
  95. }
  96. tor_tls_context_t *
  97. tor_tls_context_new(crypto_pk_t *identity,
  98. unsigned int key_lifetime, unsigned flags, int is_client)
  99. {
  100. tor_assert(identity);
  101. tor_assert(key_lifetime);
  102. (void)flags;
  103. (void)is_client;
  104. // XXXX
  105. return NULL;
  106. }
  107. int
  108. tor_tls_context_init_one(tor_tls_context_t **ppcontext,
  109. crypto_pk_t *identity,
  110. unsigned int key_lifetime,
  111. unsigned int flags,
  112. int is_client)
  113. {
  114. tor_assert(ppcontext);
  115. tor_assert(identity);
  116. tor_assert(key_lifetime);
  117. (void)flags;
  118. (void)is_client;
  119. // XXXX
  120. return -1;
  121. }
  122. void
  123. tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz)
  124. {
  125. (void)tls;
  126. (void)buf;
  127. (void)sz;
  128. // XXXX
  129. }
  130. void
  131. tor_tls_init(void)
  132. {
  133. // XXXX
  134. }
  135. void
  136. tls_log_errors(tor_tls_t *tls, int severity, int domain,
  137. const char *doing)
  138. {
  139. (void)tls;
  140. (void)severity;
  141. (void)domain;
  142. (void)doing;
  143. // XXXX
  144. }
  145. tor_tls_t *
  146. tor_tls_new(int sock, int is_server)
  147. {
  148. (void)sock;
  149. (void)is_server;
  150. // XXXX
  151. return NULL;
  152. }
  153. void
  154. tor_tls_set_renegotiate_callback(tor_tls_t *tls,
  155. void (*cb)(tor_tls_t *, void *arg),
  156. void *arg)
  157. {
  158. tor_assert(tls);
  159. (void)cb;
  160. (void)arg;
  161. // XXXX;
  162. }
  163. void
  164. tor_tls_free_(tor_tls_t *tls)
  165. {
  166. (void)tls;
  167. // XXXX
  168. }
  169. int
  170. tor_tls_peer_has_cert(tor_tls_t *tls)
  171. {
  172. (void)tls;
  173. // XXXX
  174. return -1;
  175. }
  176. MOCK_IMPL(tor_x509_cert_t *,
  177. tor_tls_get_peer_cert,(tor_tls_t *tls))
  178. {
  179. tor_assert(tls);
  180. // XXXX
  181. return NULL;
  182. }
  183. MOCK_IMPL(tor_x509_cert_t *,
  184. tor_tls_get_own_cert,(tor_tls_t *tls))
  185. {
  186. tor_assert(tls);
  187. // XXXX
  188. return NULL;
  189. }
  190. int
  191. tor_tls_verify(int severity, tor_tls_t *tls, crypto_pk_t **identity)
  192. {
  193. tor_assert(tls);
  194. tor_assert(identity);
  195. (void)severity;
  196. // XXXX
  197. return -1;
  198. }
  199. int
  200. tor_tls_check_lifetime(int severity,
  201. tor_tls_t *tls, time_t now,
  202. int past_tolerance,
  203. int future_tolerance)
  204. {
  205. tor_assert(tls);
  206. (void)severity;
  207. (void)now;
  208. (void)past_tolerance;
  209. (void)future_tolerance;
  210. // XXXX
  211. return -1;
  212. }
  213. MOCK_IMPL(int,
  214. tor_tls_read, (tor_tls_t *tls, char *cp, size_t len))
  215. {
  216. tor_assert(tls);
  217. tor_assert(cp);
  218. (void)len;
  219. // XXXX
  220. return -1;
  221. }
  222. int
  223. tor_tls_write(tor_tls_t *tls, const char *cp, size_t n)
  224. {
  225. tor_assert(tls);
  226. tor_assert(cp);
  227. (void)n;
  228. // XXXX
  229. return -1;
  230. }
  231. int
  232. tor_tls_handshake(tor_tls_t *tls)
  233. {
  234. tor_assert(tls);
  235. // XXXX
  236. return -1;
  237. }
  238. int
  239. tor_tls_finish_handshake(tor_tls_t *tls)
  240. {
  241. tor_assert(tls);
  242. // XXXX
  243. return -1;
  244. }
  245. void
  246. tor_tls_unblock_renegotiation(tor_tls_t *tls)
  247. {
  248. tor_assert(tls);
  249. // XXXX
  250. }
  251. void
  252. tor_tls_block_renegotiation(tor_tls_t *tls)
  253. {
  254. tor_assert(tls);
  255. // XXXX
  256. }
  257. void
  258. tor_tls_assert_renegotiation_unblocked(tor_tls_t *tls)
  259. {
  260. tor_assert(tls);
  261. // XXXX
  262. }
  263. int
  264. tor_tls_shutdown(tor_tls_t *tls)
  265. {
  266. tor_assert(tls);
  267. // XXXX
  268. return -1;
  269. }
  270. int
  271. tor_tls_get_pending_bytes(tor_tls_t *tls)
  272. {
  273. tor_assert(tls);
  274. // XXXX
  275. return -1;
  276. }
  277. size_t
  278. tor_tls_get_forced_write_size(tor_tls_t *tls)
  279. {
  280. tor_assert(tls);
  281. // XXXX
  282. return 0;
  283. }
  284. void
  285. tor_tls_get_n_raw_bytes(tor_tls_t *tls,
  286. size_t *n_read, size_t *n_written)
  287. {
  288. tor_assert(tls);
  289. tor_assert(n_read);
  290. tor_assert(n_written);
  291. // XXXX
  292. }
  293. int
  294. tor_tls_get_buffer_sizes(tor_tls_t *tls,
  295. size_t *rbuf_capacity, size_t *rbuf_bytes,
  296. size_t *wbuf_capacity, size_t *wbuf_bytes)
  297. {
  298. tor_assert(tls);
  299. tor_assert(rbuf_capacity);
  300. tor_assert(rbuf_bytes);
  301. tor_assert(wbuf_capacity);
  302. tor_assert(wbuf_bytes);
  303. // XXXX
  304. return -1;
  305. }
  306. MOCK_IMPL(double,
  307. tls_get_write_overhead_ratio, (void))
  308. {
  309. // XXXX
  310. return 0.0;
  311. }
  312. int
  313. tor_tls_used_v1_handshake(tor_tls_t *tls)
  314. {
  315. tor_assert(tls);
  316. // XXXX
  317. return -1;
  318. }
  319. int
  320. tor_tls_get_num_server_handshakes(tor_tls_t *tls)
  321. {
  322. tor_assert(tls);
  323. // XXXX
  324. return -1;
  325. }
  326. int
  327. tor_tls_server_got_renegotiate(tor_tls_t *tls)
  328. {
  329. tor_assert(tls);
  330. // XXXX
  331. return -1;
  332. }
  333. MOCK_IMPL(int,
  334. tor_tls_cert_matches_key,(const tor_tls_t *tls,
  335. const struct tor_x509_cert_t *cert))
  336. {
  337. tor_assert(tls);
  338. tor_assert(cert);
  339. // XXXX
  340. return 0;
  341. }
  342. MOCK_IMPL(int,
  343. tor_tls_get_tlssecrets,(tor_tls_t *tls, uint8_t *secrets_out))
  344. {
  345. tor_assert(tls);
  346. tor_assert(secrets_out);
  347. // XXXX
  348. return -1;
  349. }
  350. MOCK_IMPL(int,
  351. tor_tls_export_key_material,(tor_tls_t *tls, uint8_t *secrets_out,
  352. const uint8_t *context,
  353. size_t context_len,
  354. const char *label))
  355. {
  356. tor_assert(tls);
  357. tor_assert(secrets_out);
  358. tor_assert(context);
  359. tor_assert(label);
  360. (void)context_len;
  361. // XXXX
  362. return -1;
  363. }
  364. void
  365. check_no_tls_errors_(const char *fname, int line)
  366. {
  367. (void)fname;
  368. (void)line;
  369. // XXXX
  370. }
  371. void
  372. tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
  373. int severity, int domain, const char *doing)
  374. {
  375. tor_assert(tls);
  376. (void)err;
  377. (void)severity;
  378. (void)domain;
  379. (void)doing;
  380. // XXXX
  381. }
  382. int
  383. tor_tls_get_my_certs(int server,
  384. const struct tor_x509_cert_t **link_cert_out,
  385. const struct tor_x509_cert_t **id_cert_out)
  386. {
  387. tor_assert(link_cert_out);
  388. tor_assert(id_cert_out);
  389. (void)server;
  390. // XXXX
  391. return -1;
  392. }
  393. crypto_pk_t *
  394. tor_tls_get_my_client_auth_key(void)
  395. {
  396. // XXXX
  397. return NULL;
  398. }
  399. const char *
  400. tor_tls_get_ciphersuite_name(tor_tls_t *tls)
  401. {
  402. tor_assert(tls);
  403. // XXXX
  404. return NULL;
  405. }
  406. int
  407. evaluate_ecgroup_for_tls(const char *ecgroup)
  408. {
  409. (void)ecgroup;
  410. // XXXX
  411. return -1;
  412. }