View Javadoc
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  }