Home / Class/ MockAlternativeKeyProvider Class — netty Architecture

MockAlternativeKeyProvider Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  df9d886f_62be_e802_e13f_51009bb41ae1["MockAlternativeKeyProvider"]
  f82e16e4_9173_4f05_5dfa_12b954c83e72["MockAlternativeKeyProvider.java"]
  df9d886f_62be_e802_e13f_51009bb41ae1 -->|defined in| f82e16e4_9173_4f05_5dfa_12b954c83e72
  cc163a05_0f70_b9dc_f744_a6ce7bf390ce["MockAlternativeKeyProvider()"]
  df9d886f_62be_e802_e13f_51009bb41ae1 -->|method| cc163a05_0f70_b9dc_f744_a6ce7bf390ce
  10919165_6942_5ad3_5ed3_638b849b2649["PrivateKey()"]
  df9d886f_62be_e802_e13f_51009bb41ae1 -->|method| 10919165_6942_5ad3_5ed3_638b849b2649
  fc9e8ba2_8e5d_9b6d_5414_c930865c2342["resetSignatureOperationCount()"]
  df9d886f_62be_e802_e13f_51009bb41ae1 -->|method| fc9e8ba2_8e5d_9b6d_5414_c930865c2342
  59961cb2_09d8_8fd8_010e_b45046da231a["getSignatureOperationCount()"]
  df9d886f_62be_e802_e13f_51009bb41ae1 -->|method| 59961cb2_09d8_8fd8_010e_b45046da231a

Relationship Graph

Source Code

handler/src/test/java/io/netty/handler/ssl/MockAlternativeKeyProvider.java lines 37–269

public final class MockAlternativeKeyProvider extends Provider {

    private static final String PROVIDER_NAME = "MockAlternativeKeyProvider";
    private static final double PROVIDER_VERSION = 1.0;
    private static final String PROVIDER_INFO = "Mock provider simulating alternative key providers";

    // Track signature operations for test verification
    private static final AtomicInteger signatureOperations = new AtomicInteger(0);

    MockAlternativeKeyProvider() {
        super(PROVIDER_NAME, PROVIDER_VERSION, PROVIDER_INFO);

        // Register RSA signature algorithms
        put("Signature.RSASSA-PSS", MockRsaPssSignature.class.getName());
        put("Signature.SHA1withRSA", MockSha1WithRsaSignature.class.getName());
        put("Signature.SHA256withRSA", MockSha256WithRsaSignature.class.getName());
        put("Signature.SHA384withRSA", MockSha384WithRsaSignature.class.getName());
        put("Signature.SHA512withRSA", MockSha512WithRsaSignature.class.getName());
        put("Signature.MD5withRSA", MockMd5WithRsaSignature.class.getName());

        // Register ECDSA signature algorithms
        put("Signature.SHA1withECDSA", MockSha1WithEcdsaSignature.class.getName());
        put("Signature.SHA256withECDSA", MockSha256WithEcdsaSignature.class.getName());
        put("Signature.SHA384withECDSA", MockSha384WithEcdsaSignature.class.getName());
        put("Signature.SHA512withECDSA", MockSha512WithEcdsaSignature.class.getName());
    }

    static PrivateKey wrapPrivateKey(PrivateKey realKey) {
        return new AlternativePrivateKeyWrapper(realKey);
    }

    /**
     * Reset the signature operation counter for test isolation.
     */
    static void resetSignatureOperationCount() {
        signatureOperations.set(0);
    }

    /**
     * Get the number of signature operations performed by this provider.
     */
    static int getSignatureOperationCount() {
        return signatureOperations.get();
    }

    private static final class AlternativePrivateKeyWrapper implements PrivateKey {
        private final PrivateKey delegate;

        AlternativePrivateKeyWrapper(PrivateKey delegate) {
            this.delegate = delegate;
        }

        @Override
        public String getAlgorithm() {
            return delegate.getAlgorithm();
        }

        @Override
        public String getFormat() {
            // Alternative key providers typically don't support standard formats
            return null;
        }

        @Override
        public byte[] getEncoded() {
            // This is the key behavior: alternative key providers return null
            // because the private key material is not directly accessible
            return null;
        }

        // Provide access to the real key for signature operations
        PrivateKey getDelegate() {
            return delegate;
        }
    }

    // Abstract base class for all mock signatures
    public abstract static class MockSignature extends SignatureSpi {
        protected final String algorithm;
        protected final String providerName;
        protected final Signature realSignature;

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free