Home / Class/ AsyncPrivateKeyMethod Class — netty Architecture

AsyncPrivateKeyMethod Class — netty Architecture

Architecture documentation for the AsyncPrivateKeyMethod class in ReferenceCountedOpenSslContext.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  1f6cde3a_dc11_0f05_71cf_e0c9b1833ddf["AsyncPrivateKeyMethod"]
  ec821021_8733_8627_194f_15d27e6d1f67["ReferenceCountedOpenSslContext.java"]
  1f6cde3a_dc11_0f05_71cf_e0c9b1833ddf -->|defined in| ec821021_8733_8627_194f_15d27e6d1f67
  b154f30b_10cd_8bc3_cd2f_4764f8bc4ce9["AsyncPrivateKeyMethod()"]
  1f6cde3a_dc11_0f05_71cf_e0c9b1833ddf -->|method| b154f30b_10cd_8bc3_cd2f_4764f8bc4ce9
  5a448219_dfe6_af1c_a007_a8506103416d["sign()"]
  1f6cde3a_dc11_0f05_71cf_e0c9b1833ddf -->|method| 5a448219_dfe6_af1c_a007_a8506103416d
  78c6b453_d8e1_4e66_cdbb_bab17320261f["decrypt()"]
  1f6cde3a_dc11_0f05_71cf_e0c9b1833ddf -->|method| 78c6b453_d8e1_4e66_cdbb_bab17320261f

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslContext.java lines 1148–1209

    private static final class AsyncPrivateKeyMethod implements AsyncSSLPrivateKeyMethod {

        private final Map<Long, ReferenceCountedOpenSslEngine> engines;
        private final OpenSslAsyncPrivateKeyMethod keyMethod;

        AsyncPrivateKeyMethod(Map<Long, ReferenceCountedOpenSslEngine> engines,
                              OpenSslAsyncPrivateKeyMethod keyMethod) {
            this.engines = engines;
            this.keyMethod = keyMethod;
        }

        @Override
        public void sign(long ssl, int signatureAlgorithm, byte[] bytes, ResultCallback<byte[]> resultCallback) {
            try {
                ReferenceCountedOpenSslEngine engine = retrieveEngine(engines, ssl);
                keyMethod.sign(engine, signatureAlgorithm, bytes)
                        .addListener(new ResultCallbackListener(engine, ssl, resultCallback));
            } catch (SSLException e) {
                resultCallback.onError(ssl, e);
            }
        }

        @Override
        public void decrypt(long ssl, byte[] bytes, ResultCallback<byte[]> resultCallback) {
            try {
                ReferenceCountedOpenSslEngine engine = retrieveEngine(engines, ssl);
                keyMethod.decrypt(engine, bytes)
                        .addListener(new ResultCallbackListener(engine, ssl, resultCallback));
            } catch (SSLException e) {
                resultCallback.onError(ssl, e);
            }
        }

        private static final class ResultCallbackListener implements FutureListener<byte[]> {
            private final ReferenceCountedOpenSslEngine engine;
            private final long ssl;
            private final ResultCallback<byte[]> resultCallback;

            ResultCallbackListener(ReferenceCountedOpenSslEngine engine, long ssl,
                                   ResultCallback<byte[]> resultCallback) {
                this.engine = engine;
                this.ssl = ssl;
                this.resultCallback = resultCallback;
            }

            @Override
            public void operationComplete(Future<byte[]> future) {
                Throwable cause = future.cause();
                if (cause == null) {
                    try {
                        byte[] result = verifyResult(future.getNow());
                        resultCallback.onSuccess(ssl, result);
                        return;
                    } catch (SignatureException e) {
                        cause = e;
                        engine.initHandshakeException(e);
                    }
                }
                resultCallback.onError(ssl, cause);
            }
        }
    }

Frequently Asked Questions

What is the AsyncPrivateKeyMethod class?
AsyncPrivateKeyMethod is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslContext.java.
Where is AsyncPrivateKeyMethod defined?
AsyncPrivateKeyMethod is defined in handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslContext.java at line 1148.

Analyze Your Own Codebase

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

Try Supermodel Free