diff options
| author | Merlin Scholz <merlin@scholz.ruhr> | 2026-05-13 20:15:33 +0200 |
|---|---|---|
| committer | Merlin Scholz <merlin@scholz.ruhr> | 2026-05-13 20:15:33 +0200 |
| commit | 7573a3047737ded42e589591af7f1776dc1c2f9a (patch) | |
| tree | 1579b39c65c6e5ca75d2c791229416ffbff36f48 /certificate_test.go | |
| parent | 31757f21ba81a13d0d2cdb2b7f0a1174d3419566 (diff) | |
Rewrite in Go
Diffstat (limited to 'certificate_test.go')
| -rw-r--r-- | certificate_test.go | 94 |
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()) + } + } +} |
