#
# Copyright (c) 2015, 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
module name jdk.jartool
header exports com/sun/jarsigner,jdk/security/jarsigner requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;java/util/spi/ToolProvider\u0020;impls\u0020;sun/tools/jar/JarToolProvider flags 8000

class name com/sun/jarsigner/ContentSigner
header extends java/lang/Object flags 421 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
method name <init> descriptor ()V flags 1
method name generateSignedData descriptor (Lcom/sun/jarsigner/ContentSignerParameters;ZZ)[B thrownTypes java/security/NoSuchAlgorithmException,java/security/cert/CertificateException,java/io/IOException flags 401

class name com/sun/jarsigner/ContentSignerParameters
header extends java/lang/Object flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
method name getCommandLine descriptor ()[Ljava/lang/String; flags 401
method name getTimestampingAuthority descriptor ()Ljava/net/URI; flags 401
method name getTimestampingAuthorityCertificate descriptor ()Ljava/security/cert/X509Certificate; flags 401
method name getTSAPolicyID descriptor ()Ljava/lang/String; flags 1
method name getTSADigestAlg descriptor ()Ljava/lang/String; flags 1
method name getSignature descriptor ()[B flags 401
method name getSignatureAlgorithm descriptor ()Ljava/lang/String; flags 401
method name getSignerCertificateChain descriptor ()[Ljava/security/cert/X509Certificate; flags 401
method name getContent descriptor ()[B flags 401
method name getSource descriptor ()Ljava/util/zip/ZipFile; flags 401

class name jdk/security/jarsigner/JarSigner
header extends java/lang/Object flags 31
innerclass innerClass jdk/security/jarsigner/JarSigner$Builder outerClass jdk/security/jarsigner/JarSigner innerClassName Builder flags 9
innerclass innerClass java/util/jar/Attributes$Name outerClass java/util/jar/Attributes innerClassName Name flags 9
innerclass innerClass java/util/Base64$Encoder outerClass java/util/Base64 innerClassName Encoder flags 9
method name sign descriptor (Ljava/util/zip/ZipFile;Ljava/io/OutputStream;)V flags 1
method name getDigestAlgorithm descriptor ()Ljava/lang/String; flags 1
method name getSignatureAlgorithm descriptor ()Ljava/lang/String; flags 1
method name getTsa descriptor ()Ljava/net/URI; flags 1
method name getSignerName descriptor ()Ljava/lang/String; flags 1
method name getProperty descriptor (Ljava/lang/String;)Ljava/lang/String; flags 1

class name jdk/security/jarsigner/JarSigner$Builder
header extends java/lang/Object flags 21
innerclass innerClass java/security/KeyStore$PrivateKeyEntry outerClass java/security/KeyStore innerClassName PrivateKeyEntry flags 19
innerclass innerClass jdk/security/jarsigner/JarSigner$Builder outerClass jdk/security/jarsigner/JarSigner innerClassName Builder flags 9
method name <init> descriptor (Ljava/security/KeyStore$PrivateKeyEntry;)V flags 1
method name <init> descriptor (Ljava/security/PrivateKey;Ljava/security/cert/CertPath;)V flags 1
method name digestAlgorithm descriptor (Ljava/lang/String;)Ljdk/security/jarsigner/JarSigner$Builder; thrownTypes java/security/NoSuchAlgorithmException flags 1
method name digestAlgorithm descriptor (Ljava/lang/String;Ljava/security/Provider;)Ljdk/security/jarsigner/JarSigner$Builder; thrownTypes java/security/NoSuchAlgorithmException flags 1
method name signatureAlgorithm descriptor (Ljava/lang/String;)Ljdk/security/jarsigner/JarSigner$Builder; thrownTypes java/security/NoSuchAlgorithmException flags 1
method name signatureAlgorithm descriptor (Ljava/lang/String;Ljava/security/Provider;)Ljdk/security/jarsigner/JarSigner$Builder; thrownTypes java/security/NoSuchAlgorithmException flags 1
method name tsa descriptor (Ljava/net/URI;)Ljdk/security/jarsigner/JarSigner$Builder; flags 1
method name signerName descriptor (Ljava/lang/String;)Ljdk/security/jarsigner/JarSigner$Builder; flags 1
method name eventHandler descriptor (Ljava/util/function/BiConsumer;)Ljdk/security/jarsigner/JarSigner$Builder; flags 1 signature (Ljava/util/function/BiConsumer<Ljava/lang/String;Ljava/lang/String;>;)Ljdk/security/jarsigner/JarSigner$Builder;
method name setProperty descriptor (Ljava/lang/String;Ljava/lang/String;)Ljdk/security/jarsigner/JarSigner$Builder; flags 1
method name getDefaultDigestAlgorithm descriptor ()Ljava/lang/String; flags 9
method name getDefaultSignatureAlgorithm descriptor (Ljava/security/PrivateKey;)Ljava/lang/String; flags 9
method name build descriptor ()Ljdk/security/jarsigner/JarSigner; flags 1

class name jdk/security/jarsigner/JarSignerException
header extends java/lang/RuntimeException flags 21
method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;)V flags 1

