@ -23,13 +23,10 @@ import java.io.InputStream;
import java.io.OutputStream ;
import java.io.OutputStream ;
import java.io.OutputStreamWriter ;
import java.io.OutputStreamWriter ;
import java.nio.charset.StandardCharsets ;
import java.nio.charset.StandardCharsets ;
import java.security.MessageDigest ;
import java.security.NoSuchAlgorithmException ;
import java.time.OffsetDateTime ;
import java.time.OffsetDateTime ;
import java.time.ZoneOffset ;
import java.time.ZoneOffset ;
import java.util.Collection ;
import java.util.Collection ;
import java.util.HashMap ;
import java.util.HashMap ;
import java.util.HexFormat ;
import java.util.LinkedHashMap ;
import java.util.LinkedHashMap ;
import java.util.LinkedHashSet ;
import java.util.LinkedHashSet ;
import java.util.List ;
import java.util.List ;
@ -585,36 +582,24 @@ class BootZipCopyAction implements CopyAction {
private static final int BUFFER_SIZE = 32 * 1024 ;
private static final int BUFFER_SIZE = 32 * 1024 ;
private final @Nullable MessageDigest messageDigest ;
private final boolean unpack ;
private final CRC32 crc = new CRC32 ( ) ;
private final CRC32 crc = new CRC32 ( ) ;
private long size ;
private long size ;
StoredEntryPreparator ( InputStream inputStream , boolean unpack ) throws IOException {
StoredEntryPreparator ( InputStream inputStream , boolean unpack ) throws IOException {
this . messageDigest = ( unpack ) ? sha1Digest ( ) : null ;
this . unpack = unpack ;
try ( inputStream ) {
try ( inputStream ) {
load ( inputStream ) ;
load ( inputStream ) ;
}
}
}
}
private static MessageDigest sha1Digest ( ) {
try {
return MessageDigest . getInstance ( "SHA-1" ) ;
}
catch ( NoSuchAlgorithmException ex ) {
throw new IllegalStateException ( ex ) ;
}
}
private void load ( InputStream inputStream ) throws IOException {
private void load ( InputStream inputStream ) throws IOException {
byte [ ] buffer = new byte [ BUFFER_SIZE ] ;
byte [ ] buffer = new byte [ BUFFER_SIZE ] ;
int bytesRead ;
int bytesRead ;
while ( ( bytesRead = inputStream . read ( buffer ) ) ! = - 1 ) {
while ( ( bytesRead = inputStream . read ( buffer ) ) ! = - 1 ) {
this . crc . update ( buffer , 0 , bytesRead ) ;
this . crc . update ( buffer , 0 , bytesRead ) ;
if ( this . messageDigest ! = null ) {
this . messageDigest . update ( buffer , 0 , bytesRead ) ;
}
this . size + = bytesRead ;
this . size + = bytesRead ;
}
}
}
}
@ -624,8 +609,8 @@ class BootZipCopyAction implements CopyAction {
entry . setCompressedSize ( this . size ) ;
entry . setCompressedSize ( this . size ) ;
entry . setCrc ( this . crc . getValue ( ) ) ;
entry . setCrc ( this . crc . getValue ( ) ) ;
entry . setMethod ( ZipEntry . STORED ) ;
entry . setMethod ( ZipEntry . STORED ) ;
if ( this . messageDigest ! = null ) {
if ( this . unpack ) {
entry . setComment ( "UNPACK:" + HexFormat . of ( ) . formatHex ( this . messageDigest . digest ( ) ) ) ;
entry . setComment ( "UNPACK:" ) ;
}
}
}
}