abstract class sun.security.ssl.NamedGroup$NamedGroupFunctions
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: sun.security.ssl.NamedGroup$NamedGroupFunctions
  super_class: java.lang.Object
{
  protected static final java.util.Map<sun.security.ssl.NamedGroup, java.security.AlgorithmParameters> namedGroupParams;
    descriptor: Ljava/util/Map;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Lsun/security/ssl/NamedGroup;Ljava/security/AlgorithmParameters;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 454
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic sun.security.ssl.NamedGroup$NamedGroupFunctions.namedGroupParams:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.NamedGroup$NamedGroupFunctions this
         0: .line 450
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.ssl.NamedGroup$NamedGroupFunctions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/NamedGroup$NamedGroupFunctions;

  protected void checkConstraints(java.security.PublicKey, java.security.AlgorithmConstraints, sun.security.ssl.NamedGroup$ExceptionSupplier);
    descriptor: (Ljava/security/PublicKey;Ljava/security/AlgorithmConstraints;Lsun/security/ssl/NamedGroup$ExceptionSupplier;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.security.ssl.NamedGroup$NamedGroupFunctions this
        start local 1 // java.security.PublicKey publicKey
        start local 2 // java.security.AlgorithmConstraints constraints
        start local 3 // sun.security.ssl.NamedGroup$ExceptionSupplier onConstraintFail
         0: .line 461
            aload 2 /* constraints */
         1: .line 462
            getstatic java.security.CryptoPrimitive.KEY_AGREEMENT:Ljava/security/CryptoPrimitive;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
         2: .line 463
            aload 1 /* publicKey */
         3: .line 461
            invokeinterface java.security.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/security/Key;)Z
         4: .line 463
            ifne 6
         5: .line 465
            aload 3 /* onConstraintFail */
            ldc "key share entry does not comply with algorithm constraints"
            invokeinterface sun.security.ssl.NamedGroup$ExceptionSupplier.apply:(Ljava/lang/String;)V
         6: .line 468
      StackMap locals:
      StackMap stack:
            return
        end local 3 // sun.security.ssl.NamedGroup$ExceptionSupplier onConstraintFail
        end local 2 // java.security.AlgorithmConstraints constraints
        end local 1 // java.security.PublicKey publicKey
        end local 0 // sun.security.ssl.NamedGroup$NamedGroupFunctions this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lsun/security/ssl/NamedGroup$NamedGroupFunctions;
            0    7     1         publicKey  Ljava/security/PublicKey;
            0    7     2       constraints  Ljava/security/AlgorithmConstraints;
            0    7     3  onConstraintFail  Lsun/security/ssl/NamedGroup$ExceptionSupplier;
    Exceptions:
      throws javax.net.ssl.SSLException
    MethodParameters:
                  Name  Flags
      publicKey         
      constraints       
      onConstraintFail  

  public java.security.AlgorithmParameters getParameters(sun.security.ssl.NamedGroup);
    descriptor: (Lsun/security/ssl/NamedGroup;)Ljava/security/AlgorithmParameters;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // sun.security.ssl.NamedGroup$NamedGroupFunctions this
        start local 1 // sun.security.ssl.NamedGroup ng
         0: .line 472
            getstatic sun.security.ssl.NamedGroup$NamedGroupFunctions.namedGroupParams:Ljava/util/Map;
            aload 1 /* ng */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.AlgorithmParameters
            astore 2 /* result */
        start local 2 // java.security.AlgorithmParameters result
         1: .line 473
            aload 2 /* result */
            ifnonnull 6
         2: .line 474
            aload 0 /* this */
            aload 1 /* ng */
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupFunctions.getParametersImpl:(Lsun/security/ssl/NamedGroup;)Ljava/util/Optional;
            astore 3 /* paramsOpt */
        start local 3 // java.util.Optional paramsOpt
         3: .line 475
            aload 3 /* paramsOpt */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 6
         4: .line 476
            aload 3 /* paramsOpt */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast java.security.AlgorithmParameters
            astore 2 /* result */
         5: .line 477
            getstatic sun.security.ssl.NamedGroup$NamedGroupFunctions.namedGroupParams:Ljava/util/Map;
            aload 1 /* ng */
            aload 2 /* result */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.util.Optional paramsOpt
         6: .line 481
      StackMap locals: java.security.AlgorithmParameters
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // java.security.AlgorithmParameters result
        end local 1 // sun.security.ssl.NamedGroup ng
        end local 0 // sun.security.ssl.NamedGroup$NamedGroupFunctions this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lsun/security/ssl/NamedGroup$NamedGroupFunctions;
            0    7     1         ng  Lsun/security/ssl/NamedGroup;
            1    7     2     result  Ljava/security/AlgorithmParameters;
            3    6     3  paramsOpt  Ljava/util/Optional<Ljava/security/AlgorithmParameters;>;
    MethodParameters:
      Name  Flags
      ng    

  public abstract byte[] encodePossessionPublicKey(sun.security.ssl.NamedGroupPossession);
    descriptor: (Lsun/security/ssl/NamedGroupPossession;)[B
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                      Name  Flags
      namedGroupPossession  

  public abstract sun.security.ssl.SSLCredentials decodeCredentials(sun.security.ssl.NamedGroup, byte[], java.security.AlgorithmConstraints, sun.security.ssl.NamedGroup$ExceptionSupplier);
    descriptor: (Lsun/security/ssl/NamedGroup;[BLjava/security/AlgorithmConstraints;Lsun/security/ssl/NamedGroup$ExceptionSupplier;)Lsun/security/ssl/SSLCredentials;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException, java.security.GeneralSecurityException
    MethodParameters:
                  Name  Flags
      ng                
      encoded           
      constraints       
      onConstraintFail  

  public abstract sun.security.ssl.SSLPossession createPossession(sun.security.ssl.NamedGroup, java.security.SecureRandom);
    descriptor: (Lsun/security/ssl/NamedGroup;Ljava/security/SecureRandom;)Lsun/security/ssl/SSLPossession;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      ng      
      random  

  public abstract sun.security.ssl.SSLKeyDerivation createKeyDerivation(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLKeyDerivation;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      hc    

  protected abstract java.util.Optional<java.security.AlgorithmParameters> getParametersImpl(sun.security.ssl.NamedGroup);
    descriptor: (Lsun/security/ssl/NamedGroup;)Ljava/util/Optional;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Lsun/security/ssl/NamedGroup;)Ljava/util/Optional<Ljava/security/AlgorithmParameters;>;
    MethodParameters:
      Name  Flags
      ng    

  public abstract java.security.spec.AlgorithmParameterSpec getParameterSpec(sun.security.ssl.NamedGroup);
    descriptor: (Lsun/security/ssl/NamedGroup;)Ljava/security/spec/AlgorithmParameterSpec;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      ng    

  public abstract boolean isAvailable(sun.security.ssl.NamedGroup);
    descriptor: (Lsun/security/ssl/NamedGroup;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      ng    
}
SourceFile: "NamedGroup.java"
NestHost: sun.security.ssl.NamedGroup
InnerClasses:
  abstract ExceptionSupplier = sun.security.ssl.NamedGroup$ExceptionSupplier of sun.security.ssl.NamedGroup
  private abstract NamedGroupFunctions = sun.security.ssl.NamedGroup$NamedGroupFunctions of sun.security.ssl.NamedGroup