summaryrefslogtreecommitdiff
path: root/certificate_test.go
diff options
context:
space:
mode:
authorMerlin Scholz <merlin@scholz.ruhr>2026-05-13 20:15:33 +0200
committerMerlin Scholz <merlin@scholz.ruhr>2026-05-13 20:15:33 +0200
commit7573a3047737ded42e589591af7f1776dc1c2f9a (patch)
tree1579b39c65c6e5ca75d2c791229416ffbff36f48 /certificate_test.go
parent31757f21ba81a13d0d2cdb2b7f0a1174d3419566 (diff)
Rewrite in Go
Diffstat (limited to 'certificate_test.go')
-rw-r--r--certificate_test.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/certificate_test.go b/certificate_test.go
new file mode 100644
index 0000000..3c9dcc5
--- /dev/null
+++ b/certificate_test.go
@@ -0,0 +1,94 @@
+package main
+
+import (
+ "bytes"
+ "crypto/rand"
+ "crypto/rsa"
+ "path/filepath"
+ "testing"
+)
+
+func TestGenerateRsaKeypair(t *testing.T) {
+ privateKey, err := rsa.GenerateKey(rand.Reader, 4096)
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ err = WriteKeypairToFile(privateKey, filepath.Join("certs", "key.pem"))
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ loadedPrivateKey, err := ReadKeypairFromFile(filepath.Join("certs", "key.pem"))
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ if !privateKey.Equal(loadedPrivateKey) {
+ t.Error("saved and loaded private keys differ")
+ }
+}
+
+func TestGenerateSelfSignedCertificate(t *testing.T) {
+ privateKey, err := rsa.GenerateKey(rand.Reader, 4096)
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ certificate, err := GenerateSelfSignedCertificate(X002, *privateKey)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ err = WriteCertificateToFile(certificate, filepath.Join("certs", "cert.pem"))
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ t.Logf("Saved certificate has following fingerprints: %s", GetCertificateFingerprintAsString(certificate))
+
+ loadedCertificate, err := ReadCertificateFromFile(filepath.Join("certs", "cert.pem"), X002)
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ t.Logf("Loaded certificate has following fingerprints: %s", GetCertificateFingerprintAsString(loadedCertificate))
+
+ if !bytes.Equal(certificate.x509Certificate, loadedCertificate.x509Certificate) {
+ t.Error("saved and loaded certificates differ")
+ }
+}
+
+// also generates keys
+func TestGenerateSelfSignedCertificateTriplet(t *testing.T) {
+ var filenamePrefix string
+ for _, ebicsCertificateType := range []EbicsCertificateType{A005, X002, E002} {
+ switch ebicsCertificateType {
+ case X002:
+ filenamePrefix = "authentication"
+ case E002:
+ filenamePrefix = "encryption"
+ case A005, A006:
+ filenamePrefix = "signature"
+ }
+
+ privateKey, err := rsa.GenerateKey(rand.Reader, 4096)
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ err = WriteKeypairToFile(privateKey, filepath.Join("certs", filenamePrefix+"_key.pem"))
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ certificate, err := GenerateSelfSignedCertificate(ebicsCertificateType, *privateKey)
+ if err != nil {
+ t.Error(err.Error())
+ }
+
+ err = WriteCertificateToFile(certificate, filepath.Join("certs", filenamePrefix+"_cert.pem"))
+ if err != nil {
+ t.Error(err.Error())
+ }
+ }
+}