From 59a8e768dc6f866db0184c64e118d32b75f4c166 Mon Sep 17 00:00:00 2001 From: duke Date: Mon, 30 May 2022 16:20:55 +0000 Subject: [PATCH] Backport bf3438c5dc993b96d089cabb5318bfc64a6904a3 --- src/java.base/share/classes/sun/security/provider/DSA.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/java.base/share/classes/sun/security/provider/DSA.java b/src/java.base/share/classes/sun/security/provider/DSA.java index b0d06c55727..012172e5899 100644 --- a/src/java.base/share/classes/sun/security/provider/DSA.java +++ b/src/java.base/share/classes/sun/security/provider/DSA.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2021, 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 @@ -357,7 +357,8 @@ protected boolean engineVerify(byte[] signature, int offset, int length) s = new BigInteger(1, s.toByteArray()); } - if ((r.compareTo(presetQ) == -1) && (s.compareTo(presetQ) == -1)) { + if ((r.compareTo(presetQ) == -1) && (s.compareTo(presetQ) == -1) + && r.signum() > 0 && s.signum() > 0) { BigInteger w = generateW(presetP, presetQ, presetG, s); BigInteger v = generateV(presetY, presetP, presetQ, presetG, w, r); return v.equals(r);