During an API call, the requester may receive a response that contains a signature string from the recipient. In this case, the requester can verify the signature string in order to check if the response has been tampered with. This helps secure the API call.
Note the following when splicing the string:
The public key of a game is generated after Game Service is enabled for the game. For details about how to query the public key, please refer to Querying Game Service Information.
Java sample code:
/**
* Verify signature information.
* @param content String to be verified.
* @param sign Signature string.
* @param publicKey Public key.
* @param signType Encryption type.
* @param Whether the verification is successful.
*/
public static boolean doCheck(String content, String sign, String publicKey, String signtype) {
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] encodedKey = decoder.decode(publicKey);
PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
java.security.Signature signature = null;
if ("RSA256".equals(signtype)) {
signature = java.security.Signature.getInstance(SIGN_ALGORITHMS256);
} else {
signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
}
signature.initVerify(pubKey);
signature.update(content.getBytes("utf-8"));
boolean bverify = signature.verify(decoder.decode(sign));
return bverify;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}