Теперь, когда мы в 2016 году, вот как это сделать с
р приложения на сайте разработчиков Android проверяет покупку JSON с помощью кода Java. У кого-нибудь была удача решить, как проверить покупку в python. В частности в GAE?
Ниже приведены соответствующие выдержки из Android-биллинга в приложении.пример программы, Это то, что должно быть преобразовано в Python с помощьюPyCrypto которая была переписана Google как полностью python и является единственной библиотекой безопасности, доступной в движке приложения. Надеюсь, Google здорово со мной использует выдержки ниже.
private static final String KEY_FACTORY_ALGORITHM = "RSA";
private static final String SIGNATURE_ALGORITHM = "SHA1withRSA";
String base64EncodedPublicKey = "your public key here";
PublicKey key = Security.generatePublicKey(base64EncodedPublicKey);
verified = Security.verify(key, signedData, signature);
public static PublicKey generatePublicKey(String encodedPublicKey) {
try {
byte[] decodedKey = Base64.decode(encodedPublicKey);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_FACTORY_ALGORITHM);
return keyFactory.generatePublic(new X509EncodedKeySpec(decodedKey));
} catch ...
}
}
public static boolean verify(PublicKey publicKey, String signedData, String signature) {
if (Consts.DEBUG) {
Log.i(TAG, "signature: " + signature);
}
Signature sig;
try {
sig = Signature.getInstance(SIGNATURE_ALGORITHM);
sig.initVerify(publicKey);
sig.update(signedData.getBytes());
if (!sig.verify(Base64.decode(signature))) {
Log.e(TAG, "Signature verification failed.");
return false;
}
return true;
} catch ...
}
return false;
}