Spec-Zone.ru › OpenJDK 8

Класс SNIHostName

  • java.lang.Object
    • javax.net.ssl.SNIServerName
      • javax.net.ssl.SNIHostName

public final class SNIHostName
extends SNIServerName

Экземпляры этого класса представляют имя сервера типа host_name в расширении Server Name Indication (SNI).

Как описано в разделе 3 «Указание имени сервера» документа TLS Extensions (RFC 6066), «HostName» содержит полное доменное имя сервера, понятное клиенту. Кодированное значение имени сервера типа хостнейм представлено как строка байтов с использованием кодировки ASCII без заключительной точки. Это позволяет поддерживать международные доменные имена (IDN) с использованием меток A (форма ASCII-совместимого кодирования (ACE) правильной строки международных доменных имён для приложений (IDNA)), определённых в RFC 5890.

Обратите внимание, что объекты SNIHostName являются неизменяемыми.

Since:
1.8
См. также:
SNIServerName, StandardConstants.SNI_HOST_NAME

Конструкторы

Конструктор и описание
SNIHostName(byte[] encoded)

Создаёт SNIHostName, используя указанное кодированное значение.

SNIHostName(String hostname)

Создаёт SNIHostName, используя указанное имя хоста.

Методы

Модификатор и тип Метод и описание
static SNIMatcher createSNIMatcher(String regex)

Создаёт объект SNIMatcher для SNIHostName.

boolean equals(Object other)

Сравнивает это имя сервера с указанным объектом.

String getAsciiName()

Возвращает имя хоста этого объекта SNIHostName в соответствии с StandardCharsets.US_ASCII.

int hashCode()

Возвращает хэш-код для этого SNIHostName.

String toString()

Возвращает строковое представление объекта, включая имя DNS хоста в этом SNIHostName.

Методы, унаследованные от класса javax.net.ssl.SNIServerName

getEncoded, getType

Методы, унаследованные от класса java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Детали конструкторов

SNIHostName

public SNIHostName(String hostname)

Создаёт SNIHostName с использованием указанного имени хоста.

Обратите внимание, что согласно RFC 6066, кодированное значение имени сервера типа хостнейм должно соответствовать StandardCharsets.US_ASCII. В данном методе hostname может быть удобным международным доменным именем (IDN). IDN.toASCII(String, int) используется для соблюдения ограничений на символы ASCII в именах хостов (см. RFC 3490, RFC 1122, RFC 1123) и перевода hostname в ASCII Compatible Encoding (ACE).

IDN.toASCII(hostname, IDN.USE_STD3_ASCII_RULES);

Аргумент hostname является недопустимым, если:

  • hostname пустое,
  • hostname заканчивается заключительной точкой,
  • hostname не является допустимым международным доменным именем (IDN), соответствующим спецификации RFC 3490.
Параметры:
hostname - имя хоста этого имени сервера
Исключения:
NullPointerException - если hostname null
IllegalArgumentException - если hostname недопустимо

SNIHostName

public SNIHostName(byte[] encoded)

Создаёт SNIHostName с использованием указанного кодированного значения.

Этот метод обычно используется для парсинга кодированного значения имени в запрошенном расширении SNI.

Согласно RFC 6066, кодированное значение имени хоста должно соответствовать StandardCharsets.US_ASCII. Однако в предыдущей версии расширения SNI ( RFC 4366) кодированное имя хоста представлялось как строка байтов с использованием кодировки UTF-8. Для обеспечения совместимости с различными версиями, этот метод допускает, что кодировка аргумента encoded может быть StandardCharsets.UTF_8, а также StandardCharsets.US_ASCII. IDN.toASCII(String) используется для перевода аргумента encoded в имя хоста ASCII Compatible Encoding (ACE).

Сильно рекомендуется использовать этот конструктор только для парсинга кодированного значения имени в запрошенном расширении SNI. В противном случае, для соответствия RFC 6066, пожалуйста, всегда используйте кодировку, соответствующую StandardCharsets.US_ASCII, соблюдайте ограничения на символы ASCII в именах хостов (см. RFC 3490, RFC 1122, RFC 1123) для аргумента encoded или используйте SNIHostName(String) вместо него.

Аргумент encoded является недопустимым, если:

  • encoded пустое,
  • encoded заканчивается заключительной точкой,
  • encoded не закодировано в StandardCharsets.US_ASCII или StandardCharsets.UTF_8-совместимой кодировке,
  • encoded не является допустимым международным доменным именем (IDN), соответствующим спецификации RFC 3490.

Обратите внимание, что массив байтов encoded клонируется для защиты от последующих изменений.

Параметры:
encoded - кодированное имя хоста этого имени сервера
Исключения:
NullPointerException - если encoded null
IllegalArgumentException - если encoded недопустимо

Детали методов

getAsciiName

public String getAsciiName()

Возвращает имя хоста, соответствующее StandardCharsets.US_ASCII, для этого объекта SNIHostName.

Обратите внимание, что согласно RFC 6066, возвращаемое имя хоста может быть международным доменным именем, содержащим метки A. См. RFC 5890 для получения дополнительной информации о подробной спецификации меток A.

Возвращает:
имя хоста, соответствующее StandardCharsets.US_ASCII, для этого объекта SNIHostName

equals

public boolean equals(Object other)

Сравнивает это имя сервера с указанным объектом.

Согласно RFC 6066, имена DNS хостов не чувствительны к регистру. Два имени хостов серверов равны, если и только если они имеют один и тот же тип имени и имена равны при сравнении без учёта регистра.

Переопределяет:
equals в классе SNIServerName
Параметры:
other - другой объект имени сервера для сравнения.
Возвращает:
true, если и только если other считается равным этому экземпляру
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает хэш-код для этого SNIHostName.

Значение хэш-кода генерируется с использованием имени хоста этого SNIHostName без учёта регистра.

Переопределяет:
hashCode в классе SNIServerName
Возвращает:
значение хэш-кода для этого SNIHostName.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

Возвращает строковое представление объекта, включая имя DNS хоста в этом SNIHostName.

Точные детали представления не определены и могут измениться, но следующее можно считать типичным:

"type=host_name (0), value= <hostname>"
Значение "<hostname>" — это представление имени хоста в ASCII, которое может содержать метки A. Например, возвращаемое значение псевдонима хоста может выглядеть так:
"type=host_name (0), value=www.example.com"
или
"type=host_name (0), value=xn--fsqu00a.xn--0zwm56d"

ПОЖАЛУЙСТА, обратите внимание, что точные детали представления не определены и могут измениться.

Переопределяет:
toString в классе SNIServerName
Возвращает:
строковое представление объекта.

createSNIMatcher

public static SNIMatcher createSNIMatcher(String regex)

Создаёт объект SNIMatcher для SNIHostName.

Этот метод может использоваться сервером для проверки допустимых SNIHostName. Например,

SNIMatcher matcher =
         SNIHostName.createSNIMatcher("www\\.example\\.com");
будет принимать имя хоста "www.example.com".
SNIMatcher matcher =
         SNIHostName.createSNIMatcher("www\\.example\\.(com|org)");
будет принимать имена хостов "www.example.com" и "www.example.org".
Параметры:
regex - шаблон регулярного выражения, представляющий имя хоста(ов) для соответствия
Возвращает:
объект SNIMatcher для SNIHostName
Исключения:
NullPointerException - если regex null
PatternSyntaxException - если синтаксис регулярного выражения некорректен

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API