mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-12-23 09:01:08 +03:00
[FEATURE] Чтение сертификатов
This commit is contained in:
parent
27b54cccba
commit
5a889e0471
2 changed files with 31 additions and 6 deletions
|
@ -44,6 +44,10 @@ public void invoke(String... args) throws Exception {
|
||||||
server.certificateManager.writePrivateKey(Paths.get("ca.key"), server.certificateManager.caKey);
|
server.certificateManager.writePrivateKey(Paths.get("ca.key"), server.certificateManager.caKey);
|
||||||
server.certificateManager.writeCertificate(Paths.get("ca.crt"), server.certificateManager.ca);
|
server.certificateManager.writeCertificate(Paths.get("ca.crt"), server.certificateManager.ca);
|
||||||
}
|
}
|
||||||
|
if(args[0].equals("readCA")) {
|
||||||
|
server.certificateManager.ca = server.certificateManager.readCertificate(Paths.get("ca.crt"));
|
||||||
|
server.certificateManager.caKey = server.certificateManager.readPrivateKey(Paths.get("ca.key"));
|
||||||
|
}
|
||||||
if(args[0].equals("genCert")) {
|
if(args[0].equals("genCert")) {
|
||||||
verifyArgs(args, 2);
|
verifyArgs(args, 2);
|
||||||
String name = args[1];
|
String name = args[1];
|
||||||
|
|
|
@ -7,32 +7,29 @@
|
||||||
import org.bouncycastle.asn1.x500.style.BCStyle;
|
import org.bouncycastle.asn1.x500.style.BCStyle;
|
||||||
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
|
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
|
||||||
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
|
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
|
||||||
import org.bouncycastle.cert.CertIOException;
|
|
||||||
import org.bouncycastle.cert.X509CertificateHolder;
|
import org.bouncycastle.cert.X509CertificateHolder;
|
||||||
import org.bouncycastle.cert.X509v3CertificateBuilder;
|
import org.bouncycastle.cert.X509v3CertificateBuilder;
|
||||||
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
|
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
|
||||||
import org.bouncycastle.crypto.params.ECKeyParameters;
|
|
||||||
import org.bouncycastle.crypto.util.PrivateKeyFactory;
|
import org.bouncycastle.crypto.util.PrivateKeyFactory;
|
||||||
import org.bouncycastle.crypto.util.PrivateKeyInfoFactory;
|
import org.bouncycastle.crypto.util.PrivateKeyInfoFactory;
|
||||||
import org.bouncycastle.jce.ECNamedCurveTable;
|
|
||||||
import org.bouncycastle.jce.spec.ECParameterSpec;
|
|
||||||
import org.bouncycastle.openssl.PEMWriter;
|
|
||||||
import org.bouncycastle.operator.ContentSigner;
|
import org.bouncycastle.operator.ContentSigner;
|
||||||
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
|
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
|
||||||
import org.bouncycastle.operator.OperatorCreationException;
|
import org.bouncycastle.operator.OperatorCreationException;
|
||||||
import org.bouncycastle.operator.bc.BcECContentSignerBuilder;
|
import org.bouncycastle.operator.bc.BcECContentSignerBuilder;
|
||||||
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
|
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
|
||||||
import org.bouncycastle.util.io.pem.PemObject;
|
import org.bouncycastle.util.io.pem.PemObject;
|
||||||
|
import org.bouncycastle.util.io.pem.PemReader;
|
||||||
import org.bouncycastle.util.io.pem.PemWriter;
|
import org.bouncycastle.util.io.pem.PemWriter;
|
||||||
import pro.gravit.utils.helper.IOHelper;
|
import pro.gravit.utils.helper.IOHelper;
|
||||||
import pro.gravit.utils.helper.SecurityHelper;
|
import pro.gravit.utils.helper.SecurityHelper;
|
||||||
|
|
||||||
import java.io.FileWriter;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.security.*;
|
import java.security.*;
|
||||||
import java.security.cert.CertificateException;
|
import java.security.cert.CertificateException;
|
||||||
|
import java.security.cert.CertificateFactory;
|
||||||
import java.security.spec.ECGenParameterSpec;
|
import java.security.spec.ECGenParameterSpec;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
@ -114,4 +111,28 @@ public void writeCertificate(Path file, X509CertificateHolder holder) throws IOE
|
||||||
writer.writeObject(new PemObject("CERTIFICATE", holder.toASN1Structure().getEncoded()));
|
writer.writeObject(new PemObject("CERTIFICATE", holder.toASN1Structure().getEncoded()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AsymmetricKeyParameter readPrivateKey(Path file) throws IOException {
|
||||||
|
AsymmetricKeyParameter ret;
|
||||||
|
try(PemReader reader = new PemReader(IOHelper.newReader(file)))
|
||||||
|
{
|
||||||
|
byte[] bytes = reader.readPemObject().getContent();
|
||||||
|
try(ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes))
|
||||||
|
{
|
||||||
|
|
||||||
|
ret = PrivateKeyFactory.createKey(inputStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public X509CertificateHolder readCertificate(Path file) throws IOException {
|
||||||
|
X509CertificateHolder ret;
|
||||||
|
try(PemReader reader = new PemReader(IOHelper.newReader(file)))
|
||||||
|
{
|
||||||
|
byte[] bytes = reader.readPemObject().getContent();
|
||||||
|
ret = new X509CertificateHolder(bytes);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue