package com.connsec.client;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.text.ParseException;
import com.connsec.util.PathUtils;
import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.JWSAlgorithm;
import com.nimbusds.jose.JWSHeader;
import com.nimbusds.jose.crypto.RSASSAVerifier;
import com.nimbusds.jose.jwk.JWKSet;
import com.nimbusds.jose.jwk.RSAKey;
import com.nimbusds.jose.util.Base64URL;
public class TokenSignatureVerifier {
JWKSet jwkSet;
public TokenSignatureVerifier() {
try {
File jwksFile = new File(PathUtils.getInstance().getClassPath()+ "jwk");
jwkSet=JWKSet.load(jwksFile);
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
public TokenSignatureVerifier(String location) {
try {
if(location.startsWith("http")){
jwkSet=JWKSet.load(new URL(location));
}else{
jwkSet=JWKSet.load(new File(location));
}
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
public boolean verifier(String WSign_Token,Base64URL wsign_signature){
boolean isVerifier=false;
try {
RSASSAVerifier rsaSSAVerifier = new RSASSAVerifier(((RSAKey) jwkSet.getKeyByKeyId("connsec_rsa")).toRSAPublicKey());
isVerifier = rsaSSAVerifier.verify(new JWSHeader(JWSAlgorithm.RS256), WSign_Token.getBytes(), wsign_signature);
} catch (JOSEException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
System.out.println("verify : "+isVerifier);
return isVerifier;
}
}