public class sun.security.ec.ed.EdDSAKeyPairGenerator extends java.security.KeyPairGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.ec.ed.EdDSAKeyPairGenerator
  super_class: java.security.KeyPairGeneratorSpi
{
  private java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0002) ACC_PRIVATE

  private sun.security.ec.ed.EdDSAOperations ops;
    descriptor: Lsun/security/ec/ed/EdDSAOperations;
    flags: (0x0002) ACC_PRIVATE

  private sun.security.ec.ed.EdDSAParameters lockedParams;
    descriptor: Lsun/security/ec/ed/EdDSAParameters;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
         0: .line 53
            aload 0 /* this */
            invokespecial java.security.KeyPairGeneratorSpi.<init>:()V
         1: .line 49
            aload 0 /* this */
            aconst_null
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.random:Ljava/security/SecureRandom;
         2: .line 50
            aload 0 /* this */
            aconst_null
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
         3: .line 51
            aload 0 /* this */
            aconst_null
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.lockedParams:Lsun/security/ec/ed/EdDSAParameters;
         4: .line 54
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_ED_KEY_SIZE:I
            aconst_null
            invokevirtual sun.security.ec.ed.EdDSAKeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
         5: .line 55
            return
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;

  private void <init>(java.security.spec.NamedParameterSpec);
    descriptor: (Ljava/security/spec/NamedParameterSpec;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
        start local 1 // java.security.spec.NamedParameterSpec paramSpec
         0: .line 57
            aload 0 /* this */
            invokespecial java.security.KeyPairGeneratorSpi.<init>:()V
         1: .line 49
            aload 0 /* this */
            aconst_null
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.random:Ljava/security/SecureRandom;
         2: .line 50
            aload 0 /* this */
            aconst_null
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
         3: .line 51
            aload 0 /* this */
            aconst_null
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.lockedParams:Lsun/security/ec/ed/EdDSAParameters;
         4: .line 58
            aload 0 /* this */
            aload 1 /* paramSpec */
            invokevirtual sun.security.ec.ed.EdDSAKeyPairGenerator.tryInitialize:(Ljava/security/spec/NamedParameterSpec;)V
         5: .line 59
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
            invokevirtual sun.security.ec.ed.EdDSAOperations.getParameters:()Lsun/security/ec/ed/EdDSAParameters;
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.lockedParams:Lsun/security/ec/ed/EdDSAParameters;
         6: .line 60
            return
        end local 1 // java.security.spec.NamedParameterSpec paramSpec
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;
            0    7     1  paramSpec  Ljava/security/spec/NamedParameterSpec;
    MethodParameters:
           Name  Flags
      paramSpec  

  private void tryInitialize(java.security.spec.NamedParameterSpec);
    descriptor: (Ljava/security/spec/NamedParameterSpec;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
        start local 1 // java.security.spec.NamedParameterSpec paramSpec
         0: .line 64
            aload 0 /* this */
            aload 1 /* paramSpec */
            aconst_null
            invokevirtual sun.security.ec.ed.EdDSAKeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         1: .line 65
            goto 5
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
         2: pop
         3: .line 66
            aload 1 /* paramSpec */
            invokevirtual java.security.spec.NamedParameterSpec.getName:()Ljava/lang/String;
            astore 2 /* name */
        start local 2 // java.lang.String name
         4: .line 67
            new java.security.ProviderException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.String name
         5: .line 69
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.security.spec.NamedParameterSpec paramSpec
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;
            0    6     1  paramSpec  Ljava/security/spec/NamedParameterSpec;
            4    5     2       name  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidAlgorithmParameterException
    MethodParameters:
           Name  Flags
      paramSpec  

  public void initialize(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
        start local 1 // int keySize
        start local 2 // java.security.SecureRandom random
         0: .line 75
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/security/InvalidParameterException.<init>(Ljava/lang/String;)V (8)
                  (Ljava/lang/String;)Ljava/security/InvalidParameterException;
            iload 1 /* keySize */
         1: .line 74
            invokestatic sun.security.ec.ed.EdDSAParameters.getBySize:(Ljava/util/function/Function;I)Lsun/security/ec/ed/EdDSAParameters;
            astore 3 /* params */
        start local 3 // sun.security.ec.ed.EdDSAParameters params
         2: .line 77
            aload 0 /* this */
            aload 3 /* params */
            aload 2 /* random */
            invokevirtual sun.security.ec.ed.EdDSAKeyPairGenerator.initializeImpl:(Lsun/security/ec/ed/EdDSAParameters;Ljava/security/SecureRandom;)V
         3: .line 78
            return
        end local 3 // sun.security.ec.ed.EdDSAParameters params
        end local 2 // java.security.SecureRandom random
        end local 1 // int keySize
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;
            0    4     1  keySize  I
            0    4     2   random  Ljava/security/SecureRandom;
            2    4     3   params  Lsun/security/ec/ed/EdDSAParameters;
    MethodParameters:
         Name  Flags
      keySize  
      random   

  public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 85
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/security/InvalidAlgorithmParameterException.<init>(Ljava/lang/String;)V (8)
                  (Ljava/lang/String;)Ljava/security/InvalidAlgorithmParameterException;
            aload 1 /* params */
         1: .line 84
            invokestatic sun.security.ec.ed.EdDSAParameters.get:(Ljava/util/function/Function;Ljava/security/spec/AlgorithmParameterSpec;)Lsun/security/ec/ed/EdDSAParameters;
            astore 3 /* edParams */
        start local 3 // sun.security.ec.ed.EdDSAParameters edParams
         2: .line 88
            aload 0 /* this */
            aload 3 /* edParams */
            aload 2 /* random */
            invokevirtual sun.security.ec.ed.EdDSAKeyPairGenerator.initializeImpl:(Lsun/security/ec/ed/EdDSAParameters;Ljava/security/SecureRandom;)V
         3: .line 89
            goto 6
      StackMap locals: sun.security.ec.ed.EdDSAKeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom sun.security.ec.ed.EdDSAParameters
      StackMap stack: java.security.InvalidParameterException
         4: astore 4 /* e */
        start local 4 // java.security.InvalidParameterException e
         5: .line 90
            new java.security.InvalidAlgorithmParameterException
            dup
            aload 4 /* e */
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.InvalidParameterException e
         6: .line 92
      StackMap locals:
      StackMap stack:
            return
        end local 3 // sun.security.ec.ed.EdDSAParameters edParams
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec params
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;
            0    7     1    params  Ljava/security/spec/AlgorithmParameterSpec;
            0    7     2    random  Ljava/security/SecureRandom;
            2    7     3  edParams  Lsun/security/ec/ed/EdDSAParameters;
            5    6     4         e  Ljava/security/InvalidParameterException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.InvalidParameterException
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      params  
      random  

  private void initializeImpl(sun.security.ec.ed.EdDSAParameters, java.security.SecureRandom);
    descriptor: (Lsun/security/ec/ed/EdDSAParameters;Ljava/security/SecureRandom;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
        start local 1 // sun.security.ec.ed.EdDSAParameters params
        start local 2 // java.security.SecureRandom random
         0: .line 96
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.lockedParams:Lsun/security/ec/ed/EdDSAParameters;
            ifnull 4
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.lockedParams:Lsun/security/ec/ed/EdDSAParameters;
            aload 1 /* params */
            if_acmpeq 4
         1: .line 97
            new java.security.InvalidParameterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Parameters must be "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 98
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.lockedParams:Lsun/security/ec/ed/EdDSAParameters;
            invokevirtual sun.security.ec.ed.EdDSAParameters.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 97
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new sun.security.ec.ed.EdDSAOperations
            dup
            aload 1 /* params */
            invokespecial sun.security.ec.ed.EdDSAOperations.<init>:(Lsun/security/ec/ed/EdDSAParameters;)V
            putfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
         5: .line 103
            goto 8
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
         6: astore 3 /* ex */
        start local 3 // java.security.NoSuchAlgorithmException ex
         7: .line 104
            new java.security.ProviderException
            dup
            aload 3 /* ex */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.NoSuchAlgorithmException ex
         8: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* random */
            ifnonnull 9
            invokestatic sun.security.jca.JCAUtil.getSecureRandom:()Ljava/security/SecureRandom;
            goto 10
      StackMap locals:
      StackMap stack: sun.security.ec.ed.EdDSAKeyPairGenerator
         9: aload 2 /* random */
      StackMap locals: sun.security.ec.ed.EdDSAKeyPairGenerator sun.security.ec.ed.EdDSAParameters java.security.SecureRandom
      StackMap stack: sun.security.ec.ed.EdDSAKeyPairGenerator java.security.SecureRandom
        10: putfield sun.security.ec.ed.EdDSAKeyPairGenerator.random:Ljava/security/SecureRandom;
        11: .line 107
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // sun.security.ec.ed.EdDSAParameters params
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;
            0   12     1  params  Lsun/security/ec/ed/EdDSAParameters;
            0   12     2  random  Ljava/security/SecureRandom;
            7    8     3      ex  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.security.NoSuchAlgorithmException
    MethodParameters:
        Name  Flags
      params  
      random  

  public java.security.KeyPair generateKeyPair();
    descriptor: ()Ljava/security/KeyPair;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
         0: .line 113
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.random:Ljava/security/SecureRandom;
            invokevirtual sun.security.ec.ed.EdDSAOperations.generatePrivate:(Ljava/security/SecureRandom;)[B
            astore 1 /* privateKey */
        start local 1 // byte[] privateKey
         1: .line 114
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
            aload 1 /* privateKey */
            invokevirtual sun.security.ec.ed.EdDSAOperations.computePublic:([B)Ljava/security/spec/EdECPoint;
            astore 2 /* publicKey */
        start local 2 // java.security.spec.EdECPoint publicKey
         2: .line 117
            new java.security.KeyPair
            dup
         3: .line 118
            new sun.security.ec.ed.EdDSAPublicKeyImpl
            dup
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
            invokevirtual sun.security.ec.ed.EdDSAOperations.getParameters:()Lsun/security/ec/ed/EdDSAParameters;
            aload 2 /* publicKey */
            invokespecial sun.security.ec.ed.EdDSAPublicKeyImpl.<init>:(Lsun/security/ec/ed/EdDSAParameters;Ljava/security/spec/EdECPoint;)V
         4: .line 119
            new sun.security.ec.ed.EdDSAPrivateKeyImpl
            dup
            aload 0 /* this */
            getfield sun.security.ec.ed.EdDSAKeyPairGenerator.ops:Lsun/security/ec/ed/EdDSAOperations;
            invokevirtual sun.security.ec.ed.EdDSAOperations.getParameters:()Lsun/security/ec/ed/EdDSAParameters;
            aload 1 /* privateKey */
            invokespecial sun.security.ec.ed.EdDSAPrivateKeyImpl.<init>:(Lsun/security/ec/ed/EdDSAParameters;[B)V
         5: .line 117
            invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
         6: areturn
         7: .line 121
      StackMap locals: sun.security.ec.ed.EdDSAKeyPairGenerator byte[] java.security.spec.EdECPoint
      StackMap stack: java.security.InvalidKeyException
            astore 3 /* ex */
        start local 3 // java.security.InvalidKeyException ex
         8: .line 122
            new java.security.ProviderException
            dup
            aload 3 /* ex */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.InvalidKeyException ex
        end local 2 // java.security.spec.EdECPoint publicKey
        end local 1 // byte[] privateKey
        end local 0 // sun.security.ec.ed.EdDSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lsun/security/ec/ed/EdDSAKeyPairGenerator;
            1    9     1  privateKey  [B
            2    9     2   publicKey  Ljava/security/spec/EdECPoint;
            8    9     3          ex  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           2     6       7  Class java.security.InvalidKeyException
}
SourceFile: "EdDSAKeyPairGenerator.java"
NestMembers:
  sun.security.ec.ed.EdDSAKeyPairGenerator$Ed25519  sun.security.ec.ed.EdDSAKeyPairGenerator$Ed448
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Ed25519 = sun.security.ec.ed.EdDSAKeyPairGenerator$Ed25519 of sun.security.ec.ed.EdDSAKeyPairGenerator
  public Ed448 = sun.security.ec.ed.EdDSAKeyPairGenerator$Ed448 of sun.security.ec.ed.EdDSAKeyPairGenerator