< prev index next > src/java.base/share/classes/sun/security/util/SignatureFileVerifier.java
Print this page
import java.security.cert.CertificateFactory;
import java.util.ArrayList;
import java.util.Base64;
import java.util.HashMap;
import java.util.Hashtable;
+ import java.util.Hex;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.jar.Attributes;
Base64.getMimeDecoder().decode((String)se.getValue());
if (debug != null) {
debug.println("Signature File: Manifest digest " +
algorithm);
! debug.println( " sigfile " + toHex(expectedHash));
! debug.println( " computed " + toHex(computedHash));
debug.println();
}
if (MessageDigest.isEqual(computedHash, expectedHash)) {
manifestSigned = true;
Base64.getMimeDecoder().decode((String)se.getValue());
if (debug != null) {
debug.println("Signature File: Manifest digest " +
algorithm);
! debug.println( " sigfile " + Hex.encoder().encode(expectedHash));
! debug.println( " computed " + Hex.encoder().encode(computedHash));
debug.println();
}
if (MessageDigest.isEqual(computedHash, expectedHash)) {
manifestSigned = true;
if (debug != null) {
debug.println("Signature File: " +
"Manifest Main Attributes digest " +
digest.getAlgorithm());
! debug.println( " sigfile " + toHex(expectedHash));
! debug.println( " computed " + toHex(computedHash));
debug.println();
}
if (MessageDigest.isEqual(computedHash, expectedHash)) {
// good
if (debug != null) {
debug.println("Signature File: " +
"Manifest Main Attributes digest " +
digest.getAlgorithm());
! debug.println( " sigfile " + Hex.encoder().encode(expectedHash));
! debug.println( " computed " + Hex.encoder().encode(computedHash));
debug.println();
}
if (MessageDigest.isEqual(computedHash, expectedHash)) {
// good
}
if (debug != null) {
debug.println("Signature Block File: " +
name + " digest=" + digest.getAlgorithm());
! debug.println(" expected " + toHex(expected));
! debug.println(" computed " + toHex(computed));
debug.println();
}
if (MessageDigest.isEqual(computed, expected)) {
oneDigestVerified = true;
}
if (debug != null) {
debug.println("Signature Block File: " +
name + " digest=" + digest.getAlgorithm());
! debug.println(" expected " + Hex.encoder().encode(expected));
! debug.println(" computed " + Hex.encoder().encode(computed));
debug.println();
}
if (MessageDigest.isEqual(computed, expected)) {
oneDigestVerified = true;
// attempt to fallback to the workaround
if (!workaround) {
computed = mde.digestWorkaround(digest);
if (MessageDigest.isEqual(computed, expected)) {
if (debug != null) {
! debug.println(" re-computed " + toHex(computed));
debug.println();
}
workaround = true;
oneDigestVerified = true;
ok = true;
// attempt to fallback to the workaround
if (!workaround) {
computed = mde.digestWorkaround(digest);
if (MessageDigest.isEqual(computed, expected)) {
if (debug != null) {
! debug.println(" re-computed " + Hex.encoder().encode(computed));
debug.println();
}
workaround = true;
oneDigestVerified = true;
ok = true;
} else {
return null;
}
}
- // for the toHex function
- private static final char[] hexc =
- {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
- /**
- * convert a byte array to a hex string for debugging purposes
- * @param data the binary data to be converted to a hex string
- * @return an ASCII hex string
- */
-
- static String toHex(byte[] data) {
-
- StringBuilder sb = new StringBuilder(data.length*2);
-
- for (int i=0; i<data.length; i++) {
- sb.append(hexc[(data[i] >>4) & 0x0f]);
- sb.append(hexc[data[i] & 0x0f]);
- }
- return sb.toString();
- }
-
// returns true if set contains signer
static boolean contains(CodeSigner[] set, CodeSigner signer)
{
for (int i = 0; i < set.length; i++) {
if (set[i].equals(signer))
< prev index next >