On Thu, 5 May 2022 16:36:04 GMT, Mat Carter <d...@openjdk.java.net> wrote:

>> 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

@macarte You need to finalize your CSR soon if you want to include this change 
into JDK 19. RDP1 is 2022/06/09, and all enhancements require approval after 
that.

BTW, is it possible to detect whether you have admin privilege inside the test? 
There is a `NTSystem` class inside Java which can find out user info. Maybe the 
`getGroupIDs()` method will tell you if you are an admin?

We can enhance the test before RC.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8211

Reply via email to