github.com Open in urlscan Pro
140.82.121.4  Public Scan

Submitted URL: https://rustls.dev/
Effective URL: https://github.com/rustls/rustls
Submission Tags: phishingrod
Submission: On January 08 via api from DE — Scanned from DE

Form analysis 3 forms found in the DOM

GET

<form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get">
  <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder" data-min-width="300" data-catalyst="">
    <div class="FormControl FormControl--fullWidth">
      <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label>
      <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput">
        <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap">
          <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual">
            <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path>
          </svg>
        </span>
        <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer">
          <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent"></div>
          <div class="QueryBuilder-InputWrapper">
            <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"><span></span></div>
            <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-56bf8a54-8c14-4aea-979e-636929391dd4"
              data-target="query-builder.input" data-action="
          input:query-builder#inputChange
          blur:query-builder#inputBlur
          keydown:query-builder#inputKeydown
          focus:query-builder#inputFocus
        " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" aria-controls="query-builder-test-results" aria-autocomplete="list" aria-haspopup="listbox">
          </div>
        </div>
        <span class="sr-only" id="query-builder-test-clear">Clear</span>
        <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action="
                click:query-builder#clear
                focus:query-builder#clearButtonFocus
                blur:query-builder#clearButtonBlur
              " variant="small" hidden="" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16"
            viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual">
            <path
              d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z">
            </path>
          </svg>
        </button>
      </div>
      <template id="search-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search">
          <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path>
        </svg>
      </template>
      <template id="code-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code">
          <path
            d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z">
          </path>
        </svg>
      </template>
      <template id="file-code-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code">
          <path
            d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
          </path>
        </svg>
      </template>
      <template id="history-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history">
          <path
            d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z">
          </path>
        </svg>
      </template>
      <template id="repo-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo">
          <path
            d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z">
          </path>
        </svg>
      </template>
      <template id="bookmark-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark">
          <path
            d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z">
          </path>
        </svg>
      </template>
      <template id="plus-circle-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle">
          <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path>
        </svg>
      </template>
      <template id="circle-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill">
          <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path>
        </svg>
      </template>
      <template id="trash-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash">
          <path
            d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z">
          </path>
        </svg>
      </template>
      <template id="team-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people">
          <path
            d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z">
          </path>
        </svg>
      </template>
      <template id="project-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project">
          <path
            d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z">
          </path>
        </svg>
      </template>
      <template id="pencil-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil">
          <path
            d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z">
          </path>
        </svg>
      </template>
      <template id="copilot-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot">
          <path
            d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z">
          </path>
          <path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path>
        </svg>
      </template>
      <div class="position-relative">
        <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action="
                    combobox-commit:query-builder#comboboxCommit
                    mousedown:query-builder#resultsMousedown
                  " data-target="query-builder.resultsList" data-persist-list="false" id="query-builder-test-results"></ul>
      </div>
      <div class="FormControl-inlineValidation" id="validation-56bf8a54-8c14-4aea-979e-636929391dd4" hidden="hidden">
        <span class="FormControl-inlineValidation--visual">
          <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill">
            <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path>
          </svg>
        </span>
        <span></span>
      </div>
    </div>
    <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div>
  </query-builder>
</form>

POST /search/feedback

<form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token"
    value="nlVfml+bxYJElR29z5g0WbZPZQDmMBVLqi66/RPHZhsVi4b5vxRCWTxr3T1yrKQ7Mu7nPq9QxD8kzw0qkjIrLw==">
  <p>We read every piece of feedback, and take your input very seriously.</p>
  <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea>
  <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox">
  <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label>
</form>

POST /search/custom_scopes

<form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token"
    value="BgJu1LJ5bkVi5/10DrWpVH/Q/mxpGBpqzI95QKPucw3WlAnw6yJUCTFd/mGYPxetkvIi8Bba+VIoLcqs27tH9w==">
  <div data-target="custom-scopes.customScopesModalDialogFlash"></div>
  <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField">
  <div class="form-group">
    <label for="custom_scope_name">Name</label>
    <auto-check src="/search/custom_scopes/check_name" required="">
      <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required="" maxlength="50" spellcheck="false">
      <input type="hidden" data-csrf="true" value="XeeiOfBJG0LPjWc9NON0PZlx6+/bP+4eEoYYuoHkCj7AuHhb71FiwTovdpLyeZEuMWvqPO8QN5wuxsMo8YmT+g==">
    </auto-check>
  </div>
  <div class="form-group">
    <label for="custom_scope_query">Query</label>
    <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required=""
      maxlength="500">
  </div>
  <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p>
</form>

Text Content

Skip to content

Toggle navigation
Sign in

 * Product
    * Actions
      Automate any workflow
    * Packages
      Host and manage packages
    * Security
      Find and fix vulnerabilities
    * Codespaces
      Instant dev environments
    * Copilot
      Write better code with AI
    * Code review
      Manage code changes
    * Issues
      Plan and track work
    * Discussions
      Collaborate outside of code
   
   Explore
    * All features
    * Documentation
    * GitHub Skills
    * Blog

 * Solutions
   For
    * Enterprise
    * Teams
    * Startups
    * Education
   
   By Solution
    * CI/CD & Automation
    * DevOps
    * DevSecOps
   
   Resources
    * Learning Pathways
    * White papers, Ebooks, Webinars
    * Customer Stories
    * Partners

 * Open Source
    * GitHub Sponsors
      Fund open source developers
   
    * The ReadME Project
      GitHub community articles
   
   Repositories
    * Topics
    * Trending
    * Collections

 * Pricing


Search or jump to...



SEARCH CODE, REPOSITORIES, USERS, ISSUES, PULL REQUESTS...

Search

Clear



Search syntax tips




PROVIDE FEEDBACK



We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted
Cancel Submit feedback


SAVED SEARCHES


USE SAVED SEARCHES TO FILTER YOUR RESULTS MORE QUICKLY


Name
Query

To see all available qualifiers, see our documentation.


Cancel Create saved search
Sign in
Sign up
You signed in with another tab or window. Reload to refresh your session. You
signed out in another tab or window. Reload to refresh your session. You
switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert

{{ message }}
rustls / rustls Public
 * Notifications
 * Fork 560
 * Star 5.1k

A modern TLS library in Rust


LICENSE

Unknown and 3 other licenses found


LICENSES FOUND

Unknown
LICENSE
Apache-2.0
LICENSE-APACHE
ISC
LICENSE-ISC
MIT
LICENSE-MIT
5.1k stars 560 forks Activity
Star
Notifications
 * Code
 * Issues 106
 * Pull requests 21
 * Actions
 * Projects 1
 * Wiki
 * Security
 * Insights

Additional navigation options
 * Code
 * Issues
 * Pull requests
 * Actions
 * Projects
 * Wiki
 * Security
 * Insights


RUSTLS/RUSTLS

This commit does not belong to any branch on this repository, and may belong to
a fork outside of the repository.
main
Switch branches/tags

Branches Tags
Could not load branches
Nothing to show

{{ refName }} default
View all branches
Could not load tags
Nothing to show
{{ refName }} default

View all tags


NAME ALREADY IN USE


A tag already exists with the provided branch name. Many Git commands accept
both tag and branch names, so creating this branch may cause unexpected
behavior. Are you sure you want to create this branch?
Cancel Create
107 branches 57 tags

Go to file Code
 * Local
 * Codespaces

 * Clone
   HTTPS GitHub CLI
   
   Use Git or checkout with SVN using the web URL.
   
   Work fast with our official CLI. Learn more about the CLI.

 * Open with GitHub Desktop
 * Download ZIP

SIGN IN REQUIRED

Please sign in to use Codespaces.

LAUNCHING GITHUB DESKTOP

If nothing happens, download GitHub Desktop and try again.

LAUNCHING GITHUB DESKTOP

If nothing happens, download GitHub Desktop and try again.

LAUNCHING XCODE

If nothing happens, download Xcode and try again.

LAUNCHING VISUAL STUDIO CODE

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.


LATEST COMMIT

ctz bogo: enable TLS13-Empty-Client-CA-List test
…
Loading status checks…
a3cc0bc Jan 5, 2024
bogo: enable TLS13-Empty-Client-CA-List test

This acts as a regression test for the previous commit.  This also enables:

- TLS12-Server-CertReq-CA-List
- TLS13-Server-CertReq-CA-List
- Null-Client-CA-List

a3cc0bc


GIT STATS

 * 2,788 commits


FILES

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
.github
add async example
December 19, 2023 09:30
admin
Run bogo against both ring and aws-lc-rs providers
November 21, 2023 09:58
audit
Audit report with editorial changes
June 15, 2020 22:15
bogo
Test P521-SHA512 in bogo
January 4, 2024 09:21
ci-bench
ci-bench: separately bench use of P384 curve
January 4, 2024 09:21
connect-tests
Split test-ca ecdsa by curve; add p521
January 4, 2024 09:21
examples
examples: use CLI args vs env vars in simpleserver
January 4, 2024 13:41
fuzz
Depend on rustls-webpki 0.102.1
January 4, 2024 09:21
provider-example
Implement FromIterator for RootCertStore (#1708)
December 25, 2023 10:58
rustls
bogo: enable TLS13-Empty-Client-CA-List test
January 5, 2024 16:31
test-ca
Split test-ca ecdsa by curve; add p521
January 4, 2024 09:21
.clippy.toml
proj: enforce aggressive upper_case_acronyms lint
October 18, 2023 08:25
.gitignore
Keep Cargo.lock under version control
September 26, 2023 13:38
.rustfmt.toml
rustfmt tlsclient.rs and tlsserver.rs
November 1, 2020 11:52
BENCHMARKING.md
Add BENCHMARKING.md
December 20, 2023 16:13
CHANGELOG.md
doc: make it easier to find changelog
December 1, 2023 08:40
CODE_OF_CONDUCT.md
Adopt the Rust CoC; use mailing list for vuln reports
August 8, 2021 11:13
CONTRIBUTING.md
CONTRIBUTING: add note about fully qualified function calls
November 23, 2023 14:36
Cargo.lock
Depend on rustls-webpki 0.102.1
January 4, 2024 09:21
Cargo.toml
Make connect-tests part of the workspace
October 2, 2023 13:24
LICENSE
Add license info
June 19, 2016 17:42
LICENSE-APACHE
Add license info
June 19, 2016 17:42
LICENSE-ISC
Add license info
June 19, 2016 17:42
LICENSE-MIT
Add license info
June 19, 2016 17:42
README.md
docs: provide more pointers for examples
January 3, 2024 15:05
RELEASING.md
docs: update RELEASING w/ maintenance release steps.
July 17, 2023 19:31
ROADMAP.md
Update ECH roadmap entry to reflect that it refers only to client sid…
January 4, 2024 16:01
SECURITY.md
SECURITY.md: use github vuln reporting tool
August 23, 2023 08:11
View code
Status Changelog Documentation Approach Current functionality (with default
crate features) Non-features Platform support Example code Client example
program Server example program License Project Membership Code of conduct


README.MD

Rustls is a modern TLS library written in Rust.


STATUS

Rustls is used in production at many organizations and projects. We aim to
maintain reasonable API surface stability but the API may evolve as we make
changes to accomodate new features or performance improvements.

We have a roadmap for our future plans. We also have benchmarks to prevent
performance regressions and to let you evaluate rustls on your target hardware.

If you'd like to help out, please see CONTRIBUTING.md.




CHANGELOG

The detailed list of changes in each release can be found at
https://github.com/rustls/rustls/releases.


DOCUMENTATION

https://docs.rs/rustls/


APPROACH

Rustls is a TLS library that aims to provide a good level of cryptographic
security, requires no configuration to achieve that security, and provides no
unsafe features or obsolete cryptography by default.


CURRENT FUNCTIONALITY (WITH DEFAULT CRATE FEATURES)

 * TLS1.2 and TLS1.3.
 * ECDSA, Ed25519 or RSA server authentication by clients.
 * ECDSA, Ed25519 or RSA server authentication by servers.
 * Forward secrecy using ECDHE; with curve25519, nistp256 or nistp384 curves.
 * AES128-GCM and AES256-GCM bulk encryption, with safe nonces.
 * ChaCha20-Poly1305 bulk encryption (RFC7905).
 * ALPN support.
 * SNI support.
 * Tunable fragment size to make TLS messages match size of underlying
   transport.
 * Optional use of vectored IO to minimise system calls.
 * TLS1.2 session resumption.
 * TLS1.2 resumption via tickets (RFC5077).
 * TLS1.3 resumption via tickets or session storage.
 * TLS1.3 0-RTT data for clients.
 * TLS1.3 0-RTT data for servers.
 * Client authentication by clients.
 * Client authentication by servers.
 * Extended master secret support (RFC7627).
 * Exporters (RFC5705).
 * OCSP stapling by servers.


NON-FEATURES

For reasons explained in the manual, rustls does not and will not support:

 * SSL1, SSL2, SSL3, TLS1 or TLS1.1.
 * RC4.
 * DES or triple DES.
 * EXPORT ciphersuites.
 * MAC-then-encrypt ciphersuites.
 * Ciphersuites without forward secrecy.
 * Renegotiation.
 * Kerberos.
 * TLS 1.2 protocol compression.
 * Discrete-log Diffie-Hellman.
 * Automatic protocol version downgrade.
 * Using CA certificates directly to authenticate a server/client (often called
   "self-signed certificates"). Rustls' default certificate verifier does not
   support using a trust anchor as both a CA certificate and an end-entity
   certificate in order to limit complexity and risk in path building. While
   dangerous, all authentication can be turned off if required -- see the
   example code.

There are plenty of other libraries that provide these features should you need
them.


PLATFORM SUPPORT

While Rustls itself is platform independent, by default it uses ring for
implementing the cryptography in TLS. As a result, rustls only runs on platforms
supported by ring. At the time of writing, this means 32-bit ARM, Aarch64
(64-bit ARM), x86, x86-64, LoongArch64, 32-bit & 64-bit Little Endian MIPS,
32-bit PowerPC (Big Endian), 64-bit PowerPC (Big and Little Endian), 64-bit
RISC-V, and s390x. We do not presently support WebAssembly. For more
information, see the supported ring target platforms.

By providing a custom instance of the [crypto::CryptoProvider] struct, you can
replace all cryptography dependencies of rustls. This is a route to being
portable to a wider set of architectures and environments, or compliance
requirements. See the [crypto::CryptoProvider] documentation for more details.

Specifying default-features = false when depending on rustls will remove the
dependency on ring.

Rustls requires Rust 1.61 or later.


EXAMPLE CODE

Our examples directory contains demos that show how to handle I/O using the
stream::Stream helper, as well as more complex asynchronous I/O using mio. If
you're already using Tokio for an async runtime you may prefer to use
tokio-rustls instead of interacting with rustls directly.

The mio based examples are the most complete, and discussed below. Users new to
Rustls may prefer to look at the simple client/server examples before diving in
to the more complex MIO examples.


CLIENT EXAMPLE PROGRAM

The MIO client example program is named tlsclient-mio. The interface looks like:

Connects to the TLS server at hostname:PORT.  The default PORT
is 443.  By default, this reads a request from stdin (to EOF)
before making the connection.  --http replaces this with a
basic HTTP GET request for /.

If --cafile is not supplied, a built-in set of CA certificates
are used from the webpki-roots crate.

Usage:
  tlsclient-mio [options] [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] <hostname>
  tlsclient-mio (--version | -v)
  tlsclient-mio (--help | -h)

Options:
    -p, --port PORT     Connect to PORT [default: 443].
    --http              Send a basic HTTP GET request for /.
    --cafile CAFILE     Read root certificates from CAFILE.
    --auth-key KEY      Read client authentication key from KEY.
    --auth-certs CERTS  Read client authentication certificates from CERTS.
                        CERTS must match up with KEY.
    --protover VERSION  Disable default TLS version list, and use
                        VERSION instead.  May be used multiple times.
    --suite SUITE       Disable default cipher suite list, and use
                        SUITE instead.  May be used multiple times.
    --proto PROTOCOL    Send ALPN extension containing PROTOCOL.
                        May be used multiple times to offer several protocols.
    --no-tickets        Disable session ticket support.
    --no-sni            Disable server name indication support.
    --insecure          Disable certificate verification.
    --verbose           Emit log output.
    --max-frag-size M   Limit outgoing messages to M bytes.
    --version, -v       Show tool version.
    --help, -h          Show this screen.




Some sample runs:

$ cargo run --bin tlsclient-mio -- --http mozilla-modern.badssl.com
HTTP/1.1 200 OK
Server: nginx/1.6.2 (Ubuntu)
Date: Wed, 01 Jun 2016 18:44:00 GMT
Content-Type: text/html
Content-Length: 644
(...)




or

$ cargo run --bin tlsclient-mio -- --http expired.badssl.com
TLS error: InvalidCertificate(Expired)
Connection closed





SERVER EXAMPLE PROGRAM

The MIO server example program is named tlsserver-mio. The interface looks like:

Runs a TLS server on :PORT.  The default PORT is 443.

`echo' mode means the server echoes received data on each connection.

`http' mode means the server blindly sends a HTTP response on each
connection.

`forward' means the server forwards plaintext to a connection made to
localhost:fport.

`--certs' names the full certificate chain, `--key' provides the
RSA private key.

Usage:
  tlsserver-mio --certs CERTFILE --key KEYFILE [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] [options] echo
  tlsserver-mio --certs CERTFILE --key KEYFILE [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] [options] http
  tlsserver-mio --certs CERTFILE --key KEYFILE [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] [options] forward <fport>
  tlsserver-mio (--version | -v)
  tlsserver-mio (--help | -h)

Options:
    -p, --port PORT     Listen on PORT [default: 443].
    --certs CERTFILE    Read server certificates from CERTFILE.
                        This should contain PEM-format certificates
                        in the right order (the first certificate should
                        certify KEYFILE, the last should be a root CA).
    --key KEYFILE       Read private key from KEYFILE.  This should be a RSA
                        private key or PKCS8-encoded private key, in PEM format.
    --ocsp OCSPFILE     Read DER-encoded OCSP response from OCSPFILE and staple
                        to certificate.  Optional.
    --auth CERTFILE     Enable client authentication, and accept certificates
                        signed by those roots provided in CERTFILE.
    --crl CRLFILE ...   Perform client certificate revocation checking using the DER-encoded
                        CRLFILE. May be used multiple times.
    --require-auth      Send a fatal alert if the client does not complete client
                        authentication.
    --resumption        Support session resumption.
    --tickets           Support tickets.
    --protover VERSION  Disable default TLS version list, and use
                        VERSION instead.  May be used multiple times.
    --suite SUITE       Disable default cipher suite list, and use
                        SUITE instead.  May be used multiple times.
    --proto PROTOCOL    Negotiate PROTOCOL using ALPN.
                        May be used multiple times.
    --verbose           Emit log output.
    --version, -v       Show tool version.
    --help, -h          Show this screen.




Here's a sample run; we start a TLS echo server, then connect to it with openssl
and tlsclient-mio:

$ cargo run --bin tlsserver-mio -- --certs test-ca/rsa/end.fullchain --key test-ca/rsa/end.rsa -p 8443 echo &
$ echo hello world | openssl s_client -ign_eof -quiet -connect localhost:8443
depth=2 CN = ponytown RSA CA
verify error:num=19:self signed certificate in certificate chain
hello world
^C
$ echo hello world | cargo run --bin tlsclient-mio -- --cafile test-ca/rsa/ca.cert -p 8443 localhost
hello world
^C





LICENSE

Rustls is distributed under the following three licenses:

 * Apache License version 2.0.
 * MIT license.
 * ISC license.

These are included as LICENSE-APACHE, LICENSE-MIT and LICENSE-ISC respectively.
You may use this software under the terms of any of these licenses, at your
option.


PROJECT MEMBERSHIP

 * Joe Birr-Pixton (@ctz, Project Founder - full-time funded by Prossimo)
 * Dirkjan Ochtman (@djc, Co-maintainer)
 * Daniel McCarney (@cpu, Co-maintainer - full-time funded by Prossimo)
 * Josh Aas (@bdaehlie, Project Management)


CODE OF CONDUCT

This project adopts the Rust Code of Conduct. Please email
rustls-mod@googlegroups.com to report any instance of misconduct, or if you have
any comments or questions on the Code of Conduct.


ABOUT

A modern TLS library in Rust


TOPICS

tls rust ssl cryptography


RESOURCES

Readme


LICENSE

Unknown and 3 other licenses found


LICENSES FOUND

Unknown
LICENSE
Apache-2.0
LICENSE-APACHE
ISC
LICENSE-ISC
MIT
LICENSE-MIT


CODE OF CONDUCT

Code of conduct


SECURITY POLICY

Security policy
Activity


STARS

5.1k stars


WATCHERS

81 watching


FORKS

560 forks
Report repository


RELEASES 54

0.22.1 Latest
Dec 8, 2023
+ 53 releases


PACKAGES 0

No packages published



USED BY 123K

 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 

+ 122,958


CONTRIBUTORS 125

 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 

+ 111 contributors


LANGUAGES


 * Rust 98.9%
 * Other 1.1%


FOOTER

© 2024 GitHub, Inc.


FOOTER NAVIGATION

 * Terms
 * Privacy
 * Security
 * Status
 * Docs
 * Contact
 * Manage cookies
 * Do not share my personal information

You can’t perform that action at this time.