View Javadoc
1   package civitas.crypto.rsapublickey;
2   
3   import static org.junit.jupiter.api.Assertions.assertFalse;
4   import static org.junit.jupiter.api.Assertions.assertTrue;
5   import static org.mockito.Mockito.verify;
6   
7   import org.bouncycastle.crypto.CryptoException;
8   import org.junit.jupiter.api.DisplayName;
9   import org.junit.jupiter.api.Test;
10  import org.mockito.InjectMocks;
11  
12  import civitas.crypto.rsaprivatekey.PrivateKeyTestData;
13  import civitas.crypto.signature.SignatureTestData;
14  import civitas.util.BasicValuesTestData;
15  import io.github.magwas.testing.TestBase;
16  
17  class IsPublicKeyAuthorizedTest extends TestBase
18  		implements PublicKeyTestData, BasicValuesTestData, SignatureTestData, PrivateKeyTestData {
19  
20  	@InjectMocks
21  	IsPublicKeyAuthorized isPublicKeyAuthorized;
22  
23  	@Test
24  	@DisplayName(
25  			"""
26  			isAuthorized checks if the private key is belonging to the public key
27  			- creates a new base64 nonce
28  			- signs the nonce with the private key
29  			- verifies that the signature is verifiable with the public key
30  			""")
31  	void test2() throws CryptoException {
32  		boolean actual = isPublicKeyAuthorized.apply(PUBLIC_KEY, PRIVATE_KEY);
33  		verify(isPublicKeyAuthorized.createFreshNonceBase64).apply(AUTHENTICATION_NONCE_LENGTH);
34  		verify(isPublicKeyAuthorized.signWithPublicKey).apply(PRIVATE_KEY, PUBLIC_KEY, AUTHENTICATION_NONCE);
35  		verify(isPublicKeyAuthorized.verifyPublicKeySignature)
36  				.apply(SIGNATURE_OF_AUTH_NONCE_WITH_KEY, PUBLIC_KEY, AUTHENTICATION_NONCE);
37  		assertTrue(actual);
38  	}
39  
40  	@Test
41  	@DisplayName("isAuthorized is false for other private key")
42  	void test2_2() throws CryptoException {
43  		assertFalse(isPublicKeyAuthorized.apply(PUBLIC_KEY, PRIVATE_KEY2));
44  	}
45  }