Index: java/io/netty/internal/tcnative/NativeStaticallyReferencedJniMethods.java |
diff --git a/java/io/netty/internal/tcnative/NativeStaticallyReferencedJniMethods.java b/java/io/netty/internal/tcnative/NativeStaticallyReferencedJniMethods.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9aed4fd2d62c4f2e1efc14e857bd787b95646009 |
--- /dev/null |
+++ b/java/io/netty/internal/tcnative/NativeStaticallyReferencedJniMethods.java |
@@ -0,0 +1,145 @@ |
+/* |
+ * Copyright 2017 The Netty Project |
+ * |
+ * The Netty Project licenses this file to you under the Apache License, |
+ * version 2.0 (the "License"); you may not use this file except in compliance |
+ * with the License. You may obtain a copy of the License at: |
+ * |
+ * http://www.apache.org/licenses/LICENSE-2.0 |
+ * |
+ * Unless required by applicable law or agreed to in writing, software |
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
+ * License for the specific language governing permissions and limitations |
+ * under the License. |
+ */ |
+package io.netty.internal.tcnative; |
+ |
+/** |
+ * This class is necessary to break the following cyclic dependency: |
+ * <ol> |
+ * <li>JNI_OnLoad</li> |
+ * <li>JNI Calls FindClass because RegisterNatives (used to register JNI methods) requires a class</li> |
+ * <li>FindClass loads the class, but static members variables of that class attempt to call a JNI method which has not |
+ * yet been registered.</li> |
+ * <li>{@link java.lang.UnsatisfiedLinkError} is thrown because native method has not yet been registered.</li> |
+ * </ol> |
+ * <strong>Static members which call JNI methods must not be declared in this class!</strong> |
+ */ |
+final class NativeStaticallyReferencedJniMethods { |
+ private NativeStaticallyReferencedJniMethods() { |
+ } |
+ |
+ /** |
+ * Options that may impact security and may be set by default as defined in: |
+ * <a href="https://www.openssl.org/docs/man1.0.1/ssl/SSL_CTX_set_options.html">SSL Docs</a>. |
+ */ |
+ static native int sslOpCipherServerPreference(); |
+ static native int sslOpNoSSLv2(); |
+ static native int sslOpNoSSLv3(); |
+ static native int sslOpNoTLSv1(); |
+ static native int sslOpNoTLSv11(); |
+ static native int sslOpNoTLSv12(); |
+ static native int sslOpNoTicket(); |
+ |
+ /** |
+ * Options not defined in the OpenSSL docs but may impact security. |
+ */ |
+ static native int sslOpNoCompression(); |
+ |
+ /* Only support OFF and SERVER for now */ |
+ static native int sslSessCacheOff(); |
+ static native int sslSessCacheServer(); |
+ |
+ static native int sslStConnect(); |
+ static native int sslStAccept(); |
+ |
+ static native int sslModeEnablePartialWrite(); |
+ static native int sslModeAcceptMovingWriteBuffer(); |
+ static native int sslModeReleaseBuffers(); |
+ |
+ static native int sslSendShutdown(); |
+ static native int sslReceivedShutdown(); |
+ static native int sslErrorNone(); |
+ static native int sslErrorSSL(); |
+ static native int sslErrorWantRead(); |
+ static native int sslErrorWantWrite(); |
+ static native int sslErrorWantX509Lookup(); |
+ static native int sslErrorSyscall(); |
+ static native int sslErrorZeroReturn(); |
+ static native int sslErrorWantConnect(); |
+ static native int sslErrorWantAccept(); |
+ |
+ static native int x509CheckFlagAlwaysCheckSubject(); |
+ static native int x509CheckFlagDisableWildCards(); |
+ static native int x509CheckFlagNoPartialWildCards(); |
+ static native int x509CheckFlagMultiLabelWildCards(); |
+ |
+ /* x509 certificate verification errors */ |
+ static native int x509vOK(); |
+ static native int x509vErrUnspecified(); |
+ static native int x509vErrUnableToGetIssuerCert(); |
+ static native int x509vErrUnableToGetCrl(); |
+ static native int x509vErrUnableToDecryptCertSignature(); |
+ static native int x509vErrUnableToDecryptCrlSignature(); |
+ static native int x509vErrUnableToDecodeIssuerPublicKey(); |
+ static native int x509vErrCertSignatureFailure(); |
+ static native int x509vErrCrlSignatureFailure(); |
+ static native int x509vErrCertNotYetValid(); |
+ static native int x509vErrCertHasExpired(); |
+ static native int x509vErrCrlNotYetValid(); |
+ static native int x509vErrCrlHasExpired(); |
+ static native int x509vErrErrorInCertNotBeforeField(); |
+ static native int x509vErrErrorInCertNotAfterField(); |
+ static native int x509vErrErrorInCrlLastUpdateField(); |
+ static native int x509vErrErrorInCrlNextUpdateField(); |
+ static native int x509vErrOutOfMem(); |
+ static native int x509vErrDepthZeroSelfSignedCert(); |
+ static native int x509vErrSelfSignedCertInChain(); |
+ static native int x509vErrUnableToGetIssuerCertLocally(); |
+ static native int x509vErrUnableToVerifyLeafSignature(); |
+ static native int x509vErrCertChainTooLong(); |
+ static native int x509vErrCertRevoked(); |
+ static native int x509vErrInvalidCa(); |
+ static native int x509vErrPathLengthExceeded(); |
+ static native int x509vErrInvalidPurpose(); |
+ static native int x509vErrCertUntrusted(); |
+ static native int x509vErrCertRejected(); |
+ static native int x509vErrSubjectIssuerMismatch(); |
+ static native int x509vErrAkidSkidMismatch(); |
+ static native int x509vErrAkidIssuerSerialMismatch(); |
+ static native int x509vErrKeyUsageNoCertSign(); |
+ static native int x509vErrUnableToGetCrlIssuer(); |
+ static native int x509vErrUnhandledCriticalExtension(); |
+ static native int x509vErrKeyUsageNoCrlSign(); |
+ static native int x509vErrUnhandledCriticalCrlExtension(); |
+ static native int x509vErrInvalidNonCa(); |
+ static native int x509vErrProxyPathLengthExceeded(); |
+ static native int x509vErrKeyUsageNoDigitalSignature(); |
+ static native int x509vErrProxyCertificatesNotAllowed(); |
+ static native int x509vErrInvalidExtension(); |
+ static native int x509vErrInvalidPolicyExtension(); |
+ static native int x509vErrNoExplicitPolicy(); |
+ static native int x509vErrDifferntCrlScope(); |
+ static native int x509vErrUnsupportedExtensionFeature(); |
+ static native int x509vErrUnnestedResource(); |
+ static native int x509vErrPermittedViolation(); |
+ static native int x509vErrExcludedViolation(); |
+ static native int x509vErrSubtreeMinMax(); |
+ static native int x509vErrApplicationVerification(); |
+ static native int x509vErrUnsupportedConstraintType(); |
+ static native int x509vErrUnsupportedConstraintSyntax(); |
+ static native int x509vErrUnsupportedNameSyntax(); |
+ static native int x509vErrCrlPathValidationError(); |
+ static native int x509vErrPathLoop(); |
+ static native int x509vErrSuiteBInvalidVersion(); |
+ static native int x509vErrSuiteBInvalidAlgorithm(); |
+ static native int x509vErrSuiteBInvalidCurve(); |
+ static native int x509vErrSuiteBInvalidSignatureAlgorithm(); |
+ static native int x509vErrSuiteBLosNotAllowed(); |
+ static native int x509vErrSuiteBCannotSignP384WithP256(); |
+ static native int x509vErrHostnameMismatch(); |
+ static native int x509vErrEmailMismatch(); |
+ static native int x509vErrIpAddressMismatch(); |
+ static native int x509vErrDaneNoMatch(); |
+} |