quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

hsts.h (2508B)


      1 #ifndef HEADER_CURL_HSTS_H
      2 #define HEADER_CURL_HSTS_H
      3 /***************************************************************************
      4  *                                  _   _ ____  _
      5  *  Project                     ___| | | |  _ \| |
      6  *                             / __| | | | |_) | |
      7  *                            | (__| |_| |  _ <| |___
      8  *                             \___|\___/|_| \_\_____|
      9  *
     10  * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
     11  *
     12  * This software is licensed as described in the file COPYING, which
     13  * you should have received as part of this distribution. The terms
     14  * are also available at https://curl.se/docs/copyright.html.
     15  *
     16  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
     17  * copies of the Software, and permit persons to whom the Software is
     18  * furnished to do so, under the terms of the COPYING file.
     19  *
     20  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     21  * KIND, either express or implied.
     22  *
     23  * SPDX-License-Identifier: curl
     24  *
     25  ***************************************************************************/
     26 #include "curl_setup.h"
     27 
     28 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_HSTS)
     29 #include <curl/curl.h>
     30 #include "llist.h"
     31 
     32 #if defined(DEBUGBUILD) || defined(UNITTESTS)
     33 extern time_t deltatime;
     34 #endif
     35 
     36 struct stsentry {
     37   struct Curl_llist_node node;
     38   const char *host;
     39   curl_off_t expires; /* the timestamp of this entry's expiry */
     40   BIT(includeSubDomains);
     41 };
     42 
     43 /* The HSTS cache. Needs to be able to tailmatch hostnames. */
     44 struct hsts {
     45   struct Curl_llist list;
     46   char *filename;
     47   unsigned int flags;
     48 };
     49 
     50 struct hsts *Curl_hsts_init(void);
     51 void Curl_hsts_cleanup(struct hsts **hp);
     52 CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
     53                          const char *sts);
     54 struct stsentry *Curl_hsts(struct hsts *h, const char *hostname,
     55                            size_t hlen, bool subdomain);
     56 CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
     57                         const char *file);
     58 CURLcode Curl_hsts_loadfile(struct Curl_easy *data,
     59                             struct hsts *h, const char *file);
     60 CURLcode Curl_hsts_loadcb(struct Curl_easy *data,
     61                           struct hsts *h);
     62 void Curl_hsts_loadfiles(struct Curl_easy *data);
     63 #else
     64 #define Curl_hsts_cleanup(x)
     65 #define Curl_hsts_loadcb(x,y) CURLE_OK
     66 #define Curl_hsts_save(x,y,z)
     67 #define Curl_hsts_loadfiles(x)
     68 #endif /* CURL_DISABLE_HTTP || CURL_DISABLE_HSTS */
     69 #endif /* HEADER_CURL_HSTS_H */