RFR: JDK-6782021: It is not possible to read local computer certificates with the SunMSCAPI provider [v3]
Mat Carter
duke at openjdk.java.net
Thu May 5 16:39:18 UTC 2022
On Thu, 5 May 2022 14:32:14 GMT, Weijun Wang <weijun at openjdk.org> wrote:
>> Mat Carter has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Removed whitespace and simply passing ints between java and C++
>
> I'd like to contribute a test. Please modify it as much as you like. You can put it inside `test/jdk/sun/security/mscapi/`.
>
> /*
> * Copyright (c) 2022, 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.
> *
> * 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.
> */
>
> import jdk.test.lib.Asserts;
> import jdk.test.lib.SecurityTools;
>
> import java.security.KeyStore;
> import java.util.Collections;
> import java.util.List;
> import java.util.Locale;
>
> /*
> * @test
> * @bug 6782021
> * @requires os.family == "windows"
> * @library /test/lib
> * @summary More keystore types
> */
> public class AllTypes {
> public static void main(String[] args) throws Exception {
> var nm = test("windows-my");
> var nr = test("windows-root");
> var nmu = test("windows-my-currentuser");
> var nru = test("windows-root-currentuser");
> var nmm = test("windows-my-localmachine");
> var nrm = test("windows-root-localmachine");
> Asserts.assertEQ(nm, nmu);
> Asserts.assertEQ(nr, nru);
> }
>
> private static List<String> test(String type) throws Exception {
> var stdType = "Windows-" + type.substring(8).toUpperCase(Locale.ROOT);
> SecurityTools.keytool("-storetype " + type + " -list")
> .shouldHaveExitValue(0)
> .shouldContain("Keystore provider: SunMSCAPI")
> .shouldContain("Keystore type: " + stdType);
> KeyStore ks = KeyStore.getInstance(type);
> ks.load(null, null);
> var content = Collections.list(ks.aliases());
> Collections.sort(content);
> return content;
> }
> }
@wangweij - regarding the two tests for localmachine, these will throw a KeyStore exception "Access denied" if the test is not run as admin, is there anyway in the test to make that a requirement? If so we could split into two tests, one in admin that does all and one in non-admin that does the currentuser tests
-------------
PR: https://git.openjdk.java.net/jdk/pull/8211
More information about the security-dev
mailing list