Home / Class/ JdkDelegatingPrivateKeyMethodTest Class — netty Architecture

JdkDelegatingPrivateKeyMethodTest Class — netty Architecture

Architecture documentation for the JdkDelegatingPrivateKeyMethodTest class in JdkDelegatingPrivateKeyMethodTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc["JdkDelegatingPrivateKeyMethodTest"]
  5573b2bd_79a7_f28c_5ebe_732d956afd9a["JdkDelegatingPrivateKeyMethodTest.java"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|defined in| 5573b2bd_79a7_f28c_5ebe_732d956afd9a
  1a2e437e_da71_4f4a_291d_d6d8175a57c6["setUp()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 1a2e437e_da71_4f4a_291d_d6d8175a57c6
  dd2ae62e_cc28_336c_ed50_00ea46aa8d25["tearDown()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| dd2ae62e_cc28_336c_ed50_00ea46aa8d25
  d26da6c8_7bb6_e7bc_c739_caab95a29cc9["supportedAlgorithms()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| d26da6c8_7bb6_e7bc_c739_caab95a29cc9
  65243958_f616_51fc_3b00_1053f08d74be["testClientServerScenarios()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 65243958_f616_51fc_3b00_1053f08d74be
  4a2d9bb8_8e89_f8a6_4ddb_3c1163dd54fe["testAlgorithmSupport()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 4a2d9bb8_8e89_f8a6_4ddb_3c1163dd54fe
  a7f8dd70_f64f_5b30_337b_7aeea3a1751c["testMultipleHandshakes()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| a7f8dd70_f64f_5b30_337b_7aeea3a1751c
  0e81c0c6_ea19_d890_9809_f0b732afecda["testAlgorithmCaching()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 0e81c0c6_ea19_d890_9809_f0b732afecda
  5a3245c2_68b7_f5a4_493d_f9902be0f416["configureCipherSuitesForAlgorithm()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 5a3245c2_68b7_f5a4_493d_f9902be0f416
  41d98bce_8a2e_9d9a_01ba_fe614a603cf8["X509Bundle()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 41d98bce_8a2e_9d9a_01ba_fe614a603cf8
  a847fd95_75bd_8b53_9b1c_7d94990f5181["String()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| a847fd95_75bd_8b53_9b1c_7d94990f5181
  258ca29b_254c_5099_2a8a_08100b96b77c["runClient()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| 258ca29b_254c_5099_2a8a_08100b96b77c
  bf2593e9_aa1b_ab8d_296f_0379cc074524["isSignatureDelegationSupported()"]
  2ac7122d_91ea_6ce8_76a0_fb9ed7fcbdbc -->|method| bf2593e9_aa1b_ab8d_296f_0379cc074524

Relationship Graph

Source Code

handler/src/test/java/io/netty/handler/ssl/JdkDelegatingPrivateKeyMethodTest.java lines 73–552

@EnabledIf("isSignatureDelegationSupported")
@Timeout(30)
public class JdkDelegatingPrivateKeyMethodTest {

    private static MockAlternativeKeyProvider mockProvider;
    private static EventLoopGroup GROUP;
    private static X509Bundle RSA_BUNDLE;

    @BeforeAll
    static void setUp() throws Exception {
        Assumptions.assumeTrue(OpenSsl.isAvailable(), "OpenSSL is not available");

        mockProvider = new MockAlternativeKeyProvider();
        Security.addProvider(mockProvider);
        GROUP = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());

        // Create server certificate bundle
        RSA_BUNDLE = new CertificateBuilder()
            .subject("CN=localhost, O=Netty, C=US")
            .algorithm(CertificateBuilder.Algorithm.rsa2048)
            .setIsCertificateAuthority(true)
            .setKeyUsage(true, CertificateBuilder.KeyUsage.digitalSignature)
            .addExtendedKeyUsageServerAuth()
            .buildSelfSigned();
    }

    @AfterAll
    static void tearDown() {
        if (GROUP != null) {
            GROUP.shutdownGracefully();
        }
        if (mockProvider != null) {
            Security.removeProvider(mockProvider.getName());
        }
        RSA_BUNDLE = null;
    }

    /**
     * Test scenarios for client/server alternative key combinations
     */
    public enum TestScenario {
        SERVER_ALTERNATIVE_CLIENT_STANDARD("Server Alternative + Client Standard", true, false),
        SERVER_STANDARD_CLIENT_ALTERNATIVE("Server Standard + Client Alternative", false, true),
        BOTH_ALTERNATIVE("Both Alternative", true, true);

        final String description;
        final boolean serverUsesAlternativeKey;
        final boolean clientUsesAlternativeKey;

        TestScenario(String description, boolean serverUsesAlternativeKey, boolean clientUsesAlternativeKey) {
            this.description = description;
            this.serverUsesAlternativeKey = serverUsesAlternativeKey;
            this.clientUsesAlternativeKey = clientUsesAlternativeKey;
        }

        @Override
        public String toString() {
            return description;
        }
    }

    /**
     * Test data for supported signature algorithms
     */
    static Stream<Arguments> supportedAlgorithms() {
        return Stream.of(true, false).flatMap(clientUsesProvider ->
        Stream.of(
            // RSA PKCS#1 algorithms
            Arguments.of("RSA PKCS#1 SHA1", OpenSslAsyncPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1,
                    CertificateBuilder.Algorithm.rsa2048, clientUsesProvider),
            Arguments.of("RSA PKCS#1 SHA256", OpenSslAsyncPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256,
                    CertificateBuilder.Algorithm.rsa2048, clientUsesProvider),
            Arguments.of("RSA PKCS#1 SHA384", OpenSslAsyncPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384,
                    CertificateBuilder.Algorithm.rsa2048, clientUsesProvider),
            Arguments.of("RSA PKCS#1 SHA512", OpenSslAsyncPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512,
                    CertificateBuilder.Algorithm.rsa2048, clientUsesProvider),
            Arguments.of("RSA PKCS#1 MD5+SHA1", OpenSslAsyncPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1,
                    CertificateBuilder.Algorithm.rsa2048, clientUsesProvider),

            // RSA-PSS algorithms
            Arguments.of("RSA-PSS SHA256", OpenSslAsyncPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256,

Frequently Asked Questions

What is the JdkDelegatingPrivateKeyMethodTest class?
JdkDelegatingPrivateKeyMethodTest is a class in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/JdkDelegatingPrivateKeyMethodTest.java.
Where is JdkDelegatingPrivateKeyMethodTest defined?
JdkDelegatingPrivateKeyMethodTest is defined in handler/src/test/java/io/netty/handler/ssl/JdkDelegatingPrivateKeyMethodTest.java at line 73.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free