src/share/classes/org/openjdk/jigsaw/cli/Signer.java

Print this page

        

@@ -414,31 +414,26 @@
             // Compute the signature
             SignedModule.PKCS7Signer signer = new SignedModule.PKCS7Signer();
             byte[] signature = signer.generateSignature(toBeSigned, params);
 
             // Generate the hash for the signature header and content
+            SignatureSection signatureSection =
+                    new SignatureSection(signer.getSignatureType().value(),
+                                         signature.length, signature);
             baos = new ByteArrayOutputStream();
             DataOutputStream dos = new DataOutputStream(baos);
-            short signatureType = (short)signer.getSignatureType().value();
-            dos.writeShort(signatureType);
-            short signatureLength = (short)signature.length;
-            dos.writeInt(signature.length);
-            byte[] signatureHeader = baos.toByteArray();
-            MessageDigest md = MessageDigest.getInstance("SHA-256");
-            md.update(signatureHeader);
-            md.update(signature);
-            byte[] hash = md.digest();
+            signatureSection.write(dos);
+            byte[] hash = MessageDigest.getInstance("SHA-256").digest(baos.toByteArray());
 
             // Write out the Signature Section
             SectionHeader header =
                     new SectionHeader(FileConstants.ModuleFile.SectionType.SIGNATURE,
                                       FileConstants.ModuleFile.Compressor.NONE,
                                       signature.length + 6,
                                       (short)0, hash);
             header.write(out);
-            out.write(signatureHeader);
-            out.write(signature);
+            signatureSection.write(out);
         }
     }
 
     /**
      * Returns true if KeyStore has a password. This is true except for