22
33import static org .junit .jupiter .api .Assertions .assertEquals ;
44import static org .junit .jupiter .api .Assertions .assertNotNull ;
5+ import static org .junit .jupiter .api .Assertions .assertTrue ;
56
67import java .io .IOException ;
78import java .security .GeneralSecurityException ;
89import java .security .PrivateKey ;
910import java .security .Security ;
1011import java .security .cert .X509Certificate ;
1112import java .security .interfaces .RSAPublicKey ;
13+ import java .time .temporal .ChronoUnit ;
1214import java .util .Calendar ;
1315import java .util .Date ;
1416
@@ -30,7 +32,69 @@ class CertificateManagerTest {
3032
3133 @ Test
3234 void createA005Certificate () throws GeneralSecurityException , IOException {
33- var user = new EbicsUser () {
35+ var user = testUser ();
36+ var manager = new CertificateManager (user );
37+ Calendar calendar = Calendar .getInstance ();
38+ calendar .add (Calendar .DAY_OF_YEAR , X509Constants .DEFAULT_DURATION );
39+
40+ manager .createA005Certificate (new Date (calendar .getTimeInMillis ()));
41+
42+ var cert = manager .getA005Certificate ();
43+
44+ assertNotNull (cert );
45+
46+ //System.out.println(cert);
47+
48+ assertEquals (3 , cert .getVersion (), "Certificate version must be 3 (V3)." );
49+ String expectedDN = "CN=test-dn" ;
50+ assertEquals (expectedDN , cert .getIssuerX500Principal ().getName (X500Principal .RFC2253 ));
51+ assertEquals (expectedDN , cert .getSubjectX500Principal ().getName (X500Principal .RFC2253 ));
52+ assertEquals ("SHA256WITHRSA" , cert .getSigAlgName ());
53+ }
54+
55+ @ Test
56+ void createUsesConfiguredKeyLength () throws Exception {
57+ String previousKeyLength = System .getProperty ("ebics.key.length" );
58+ System .setProperty ("ebics.key.length" , "3072" );
59+ try {
60+ var manager = new CertificateManager (testUser ());
61+ manager .create ();
62+ var cert = manager .getA005Certificate ();
63+ assertNotNull (cert );
64+ assertEquals (3072 , ((RSAPublicKey ) cert .getPublicKey ()).getModulus ().bitLength ());
65+ } finally {
66+ if (previousKeyLength == null ) {
67+ System .clearProperty ("ebics.key.length" );
68+ } else {
69+ System .setProperty ("ebics.key.length" , previousKeyLength );
70+ }
71+ }
72+ }
73+
74+ @ Test
75+ void createUsesConfiguredCertificateValidityYears () throws Exception {
76+ String previousValidityYears = System .getProperty ("ebics.cert.validity.years" );
77+ System .setProperty ("ebics.cert.validity.years" , "2" );
78+ try {
79+ var manager = new CertificateManager (testUser ());
80+ manager .create ();
81+ var cert = manager .getA005Certificate ();
82+ assertNotNull (cert );
83+ long validDays = ChronoUnit .DAYS .between (
84+ cert .getNotBefore ().toInstant (),
85+ cert .getNotAfter ().toInstant ());
86+ assertTrue (validDays >= 730 && validDays <= 732 );
87+ } finally {
88+ if (previousValidityYears == null ) {
89+ System .clearProperty ("ebics.cert.validity.years" );
90+ } else {
91+ System .setProperty ("ebics.cert.validity.years" , previousValidityYears );
92+ }
93+ }
94+ }
95+
96+ private EbicsUser testUser () {
97+ return new EbicsUser () {
3498 @ Override
3599 public RSAPublicKey getA005PublicKey () {
36100 return null ;
@@ -136,24 +200,6 @@ public byte[] decrypt(byte[] encryptedKey, byte[] transactionKey)
136200 throws GeneralSecurityException , IOException , EbicsException {
137201 return new byte [0 ];
138202 }
139-
140203 };
141- var manager = new CertificateManager (user );
142- Calendar calendar = Calendar .getInstance ();
143- calendar .add (Calendar .DAY_OF_YEAR , X509Constants .DEFAULT_DURATION );
144-
145- manager .createA005Certificate (new Date (calendar .getTimeInMillis ()));
146-
147- var cert = manager .getA005Certificate ();
148-
149- assertNotNull (cert );
150-
151- //System.out.println(cert);
152-
153- assertEquals (3 , cert .getVersion (), "Certificate version must be 3 (V3)." );
154- String expectedDN = "CN=test-dn" ;
155- assertEquals (expectedDN , cert .getIssuerX500Principal ().getName (X500Principal .RFC2253 ));
156- assertEquals (expectedDN , cert .getSubjectX500Principal ().getName (X500Principal .RFC2253 ));
157- assertEquals ("SHA256WITHRSA" , cert .getSigAlgName ());
158204 }
159205}
0 commit comments