Skip to content

Commit 18ec547

Browse files
committed
less netty is always a good day
1 parent f0268b7 commit 18ec547

File tree

12 files changed

+30
-177
lines changed

12 files changed

+30
-177
lines changed

build.gradle

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ allprojects {
2222
maven { url "https://repo.papermc.io/repository/maven-public/" } // Paper + Velocity
2323
maven { url "https://api.modrinth.com/maven/" } // Modrinth
2424
}
25-
26-
tasks.withType(JavaCompile) {
27-
options.encoding = "UTF-8"
28-
options.release = project.javaVersion as Integer
25+
26+
tasks.withType(JavaCompile).tap {
27+
configureEach {
28+
options.encoding = "UTF-8"
29+
options.release = project.javaVersion as Integer
30+
}
2931
}
3032
}
3133

@@ -39,16 +41,14 @@ subprojects {
3941
compileOnly "io.netty:netty-buffer:${project.netty_version}"
4042
compileOnly "io.netty:netty-transport:${project.netty_version}"
4143
compileOnly "io.netty:netty-handler:${project.netty_version}"
42-
compileOnly "io.netty:netty-codec-http:${project.netty_version}"
43-
compileOnly "io.netty:netty-codec-http2:${project.netty_version}"
4444
compileOnly "org.bouncycastle:bcpkix-jdk18on:${project.bouncy_version}"
4545
compileOnly "me.mrnavastar:r:${project.r_version}"
4646

4747
compileOnly "org.projectlombok:lombok:${project.lombok_version}"
4848
annotationProcessor "org.projectlombok:lombok:${project.lombok_version}"
4949
}
5050

51-
task jarSources(type:Jar){
51+
tasks.register('jarSources', Jar) {
5252
archiveBaseName.set("protoweaver")
5353
archiveClassifier.set("sources")
5454
exclude {

fabric/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ dependencies {
3030
include implementation("org.bouncycastle:bcpkix-jdk18on:${project.bouncy_version}")
3131
include implementation("org.bouncycastle:bcprov-jdk18on:${project.bouncy_version}")
3232
include implementation("org.bouncycastle:bcutil-jdk18on:${project.bouncy_version}")
33-
include implementation("io.netty:netty-codec-http2:${project.netty_version}")
3433
include implementation("me.mrnavastar:r:${project.r_version}")
3534

3635
// Mod Compat

forge/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ dependencies {
3333
include forgeRuntimeLibrary(implementation("org.bouncycastle:bcpkix-jdk18on:${project.bouncy_version}"))
3434
include forgeRuntimeLibrary(implementation("org.bouncycastle:bcprov-jdk18on:${project.bouncy_version}"))
3535
include forgeRuntimeLibrary(implementation("org.bouncycastle:bcutil-jdk18on:${project.bouncy_version}"))
36-
include forgeRuntimeLibrary(implementation("io.netty:netty-codec-http2:${project.netty_version}"))
3736
include forgeRuntimeLibrary(implementation("me.mrnavastar:r:${project.r_version}"))
3837

3938
// Mod Compat

loader-common/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apply plugin: "dev.architectury.loom"
22

33
architectury {
4-
common("fabric", "forge")
4+
common("fabric")
55
}
66

77
loom {

loader-common/src/main/java/me/mrnavastar/protoweaver/loader/netty/Http2ServerResponseHandler.java

Lines changed: 0 additions & 51 deletions
This file was deleted.

loader-common/src/main/java/me/mrnavastar/protoweaver/loader/netty/Http2Util.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

loader-common/src/main/java/me/mrnavastar/protoweaver/loader/netty/HttpHandler.java

Lines changed: 0 additions & 68 deletions
This file was deleted.

loader-common/src/main/java/me/mrnavastar/protoweaver/loader/netty/SSLContext.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package me.mrnavastar.protoweaver.loader.netty;
22

3-
import io.netty.handler.codec.http2.Http2SecurityUtil;
43
import io.netty.handler.ssl.*;
54
import lombok.Cleanup;
65
import lombok.Getter;
@@ -23,30 +22,41 @@
2322
import java.security.*;
2423
import java.security.cert.CertificateException;
2524
import java.security.cert.X509Certificate;
26-
import java.util.Calendar;
27-
import java.util.Date;
28-
import java.util.Optional;
25+
import java.util.*;
2926

3027
public class SSLContext {
3128

3229
@Getter
3330
private static io.netty.handler.ssl.SslContext context;
3431
private static InputStream privateKey;
3532
private static InputStream cert;
33+
private static final Provider provider = new BouncyCastleProvider();
34+
35+
// These https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29
36+
// Minus These https://datatracker.ietf.org/doc/html/rfc7540#appendix-A
37+
private static final List<String> CIPHERS = List.of(
38+
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
39+
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
40+
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
41+
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
42+
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
43+
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
44+
"TLS_AES_128_GCM_SHA256",
45+
"TLS_AES_256_GCM_SHA384",
46+
"TLS_CHACHA20_POLY1305_SHA256"
47+
);
3648

3749
@SneakyThrows
3850
public static void init(String dir) {
39-
40-
41-
Security.addProvider(new BouncyCastleProvider());
51+
Security.addProvider(provider);
4252

4353
Optional.ofNullable(System.getenv("PROTOWEAVER_PRIVATE_KEY")).ifPresent(value -> privateKey = new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8)));
4454
Optional.ofNullable(System.getenv("PROTOWEAVER_CERT")).ifPresent(value -> cert = new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8)));
4555

4656
genKeys(dir);
4757
context = SslContextBuilder.forServer(cert, privateKey)
4858
.sslProvider(OpenSsl.isAvailable() ? SslProvider.OPENSSL : SslProvider.JDK)
49-
.ciphers(Http2SecurityUtil.CIPHERS, SupportedCipherSuiteFilter.INSTANCE)
59+
.ciphers(CIPHERS, SupportedCipherSuiteFilter.INSTANCE)
5060
.applicationProtocolConfig(new ApplicationProtocolConfig(
5161
ApplicationProtocolConfig.Protocol.ALPN,
5262
ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE,
@@ -82,22 +92,18 @@ private static void genKeys(String dir) throws NoSuchAlgorithmException, Certifi
8292

8393
// From https://stackoverflow.com/questions/29852290/self-signed-x509-certificate-with-bouncy-castle-in-java
8494
private static X509Certificate genCert(KeyPair keyPair) throws OperatorCreationException, CertificateException, IOException {
85-
Provider bcProvider = new BouncyCastleProvider();
86-
Security.addProvider(bcProvider);
87-
X500Name dnName = new X500Name("CN=PROTOWEAVER");
88-
8995
long now = System.currentTimeMillis();
9096
Date startDate = new Date(now);
9197
Calendar calendar = Calendar.getInstance();
9298
calendar.setTime(startDate);
9399
calendar.add(Calendar.YEAR, 999);
94100
Date endDate = calendar.getTime();
95101

102+
X500Name dnName = new X500Name("CN=PROTOWEAVER");
96103
ContentSigner contentSigner = new JcaContentSignerBuilder("SHA256WithRSA").build(keyPair.getPrivate());
97104
JcaX509v3CertificateBuilder certBuilder = new JcaX509v3CertificateBuilder(dnName, new BigInteger(Long.toString(now)), startDate, endDate, dnName, keyPair.getPublic());
98-
BasicConstraints basicConstraints = new BasicConstraints(true);
99-
certBuilder.addExtension(new ASN1ObjectIdentifier("2.5.29.19"), true, basicConstraints);
105+
certBuilder.addExtension(new ASN1ObjectIdentifier("2.5.29.19"), true, new BasicConstraints(true));
100106

101-
return new JcaX509CertificateConverter().setProvider(bcProvider).getCertificate(certBuilder.build(contentSigner));
107+
return new JcaX509CertificateConverter().setProvider(provider).getCertificate(certBuilder.build(contentSigner));
102108
}
103109
}

neoforge/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ dependencies {
3030
jarJar implementation("org.bouncycastle:bcpkix-jdk18on:${project.bouncy_version}")
3131
jarJar implementation("org.bouncycastle:bcprov-jdk18on:${project.bouncy_version}")
3232
jarJar implementation("org.bouncycastle:bcutil-jdk18on:${project.bouncy_version}")
33-
jarJar implementation("io.netty:netty-codec-http2:${project.netty_version}")
3433
jarJar implementation("me.mrnavastar:r:${project.r_version}")
3534

3635
// Mod Compat

paper/build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ dependencies {
1313
shadow implementation("org.bouncycastle:bcpkix-jdk18on:${project.bouncy_version}")
1414
shadow implementation("org.bouncycastle:bcprov-jdk18on:${project.bouncy_version}")
1515
shadow implementation("org.bouncycastle:bcutil-jdk18on:${project.bouncy_version}")
16-
shadow implementation("io.netty:netty-codec-http2:${project.netty_version}")
1716
}
1817

1918
shadowJar {
@@ -27,7 +26,6 @@ shadowJar {
2726
relocate 'me.mrnavastar.r', 'me.mrnavastar.protoweaver.libs.me.mrnavastar.r'
2827
relocate 'org.apache.fory', 'me.mrnavastar.protoweaver.libs.org.apache.fory'
2928
relocate 'org.bouncycastle', 'me.mrnavastar.protoweaver.libs.org.bouncycastle'
30-
relocate 'io.netty', "me.mrnavastar.protoweaver.libs.io.netty"
3129
}
3230

3331
jar.finalizedBy(shadowJar)

0 commit comments

Comments
 (0)