1 package civitas.crypto.rsapublickey;
2
3 import java.security.PrivateKey;
4 import java.security.PublicKey;
5
6 import org.bouncycastle.crypto.CryptoException;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.stereotype.Controller;
9
10 import civitas.crypto.Constants;
11 import civitas.crypto.algorithms.CreateFreshNonceBase64;
12 import civitas.crypto.signature.SignWithPublicKey;
13 import civitas.crypto.signature.Signature;
14
15 @Controller
16 public class IsPublicKeyAuthorized implements Constants {
17
18 @Autowired
19 VerifyPublicKeySignature verifyPublicKeySignature;
20
21 @Autowired
22 SignWithPublicKey signWithPublicKey;
23
24 @Autowired
25 CreateFreshNonceBase64 createFreshNonceBase64;
26
27 public boolean apply(final PublicKey that, final PrivateKey privKey) throws CryptoException {
28 String m = createFreshNonceBase64.apply(AUTHENTICATION_NONCE_LENGTH);
29 Signature sig;
30 sig = signWithPublicKey.apply(privKey, that, m);
31 return verifyPublicKeySignature.apply(sig, that, m);
32 }
33 }