/* * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package sun.security.ssl; import java.util.ArrayList; import java.util.List; final class ExtensionType { final int id; final String name; private ExtensionType(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return name; } static List knownExtensions = new ArrayList<>(15); static ExtensionType get(int id) { for (ExtensionType ext : knownExtensions) { if (ext.id == id) { return ext; } } return new ExtensionType(id, "type_" + id); } private static ExtensionType e(int id, String name) { ExtensionType ext = new ExtensionType(id, name); knownExtensions.add(ext); return ext; } // extensions defined in RFC 3546 static final ExtensionType EXT_SERVER_NAME = e(0x0000, "server_name"); // IANA registry value: 0 static final ExtensionType EXT_MAX_FRAGMENT_LENGTH = e(0x0001, "max_fragment_length"); // IANA registry value: 1 static final ExtensionType EXT_CLIENT_CERTIFICATE_URL = e(0x0002, "client_certificate_url"); // IANA registry value: 2 static final ExtensionType EXT_TRUSTED_CA_KEYS = e(0x0003, "trusted_ca_keys"); // IANA registry value: 3 static final ExtensionType EXT_TRUNCATED_HMAC = e(0x0004, "truncated_hmac"); // IANA registry value: 4 static final ExtensionType EXT_STATUS_REQUEST = e(0x0005, "status_request"); // IANA registry value: 5 // extensions defined in RFC 4681 static final ExtensionType EXT_USER_MAPPING = e(0x0006, "user_mapping"); // IANA registry value: 6 // extensions defined in RFC 5081 static final ExtensionType EXT_CERT_TYPE = e(0x0009, "cert_type"); // IANA registry value: 9 // extensions defined in RFC 4492 (ECC) and RFC 7919 (FFDHE) static final ExtensionType EXT_SUPPORTED_GROUPS = e(0x000A, "supported_groups"); // IANA registry value: 10 static final ExtensionType EXT_EC_POINT_FORMATS = e(0x000B, "ec_point_formats"); // IANA registry value: 11 // extensions defined in RFC 5054 static final ExtensionType EXT_SRP = e(0x000C, "srp"); // IANA registry value: 12 // extensions defined in RFC 5246 static final ExtensionType EXT_SIGNATURE_ALGORITHMS = e(0x000D, "signature_algorithms"); // IANA registry value: 13 // extension defined in RFC 7301 (ALPN) static final ExtensionType EXT_ALPN = e(0x0010, "application_layer_protocol_negotiation"); // IANA registry value: 16 // extensions defined in RFC 6961 static final ExtensionType EXT_STATUS_REQUEST_V2 = e(0x0011, "status_request_v2"); // IANA registry value: 17 // extensions defined in TLS 1.3 static final ExtensionType EXT_CERTIFICATE_AUTHORITIES = e(0x002f, "certificate_authorities");// IANA registry value: 47 // extensions defined in RFC 5746 static final ExtensionType EXT_RENEGOTIATION_INFO = e(0xff01, "renegotiation_info"); // IANA registry value: 65281 }