Проверка подписи в сообщении о покупке в приложении Android в Python на Google App Engine

Пример приложения на сайте разработчиков 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;
}

14
задан Toby Traylor 29 March 2011 в 17:44
поделиться