Google Pay decryption error: Could not verify intermediate signing key signature

605 views Asked by At

I am trying to decrypt a google payment token using Python google-pay-token-decryption package following this link https://github.com/yoyowallet/google-pay-token-decryption. Currently I keep getting errors such as Could not verify message signature and Could not verify intermediate signing key signature. I tried changing all "\u003d" and "\u003d" in my token to "=" and still getting the same results. However, if I ignore the verification it will successfully decrypt. Does anyone know what these errors mean?

signingKey = [{"keyValue":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIsFro6K+IUxRr4yFTOTO+kFCCEvHo7B9IOMLxah6c977oFzX\/beObH4a9OfosMHmft3JJZ6B3xpjIb8kduK4\/A==","protocolVersion":"ECv1"},{"keyValue":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGnJ7Yo1sX9b4kr4Aa5uq58JRQfzD8bIJXw7WXaap\/hVE+PnFxvjx4nVxt79SdRuUVeu++HZD0cGAv4IOznc96w==","protocolVersion":"ECv2","keyExpiration":"2154841200000"},{"keyValue":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGnJ7Yo1sX9b4kr4Aa5uq58JRQfzD8bIJXw7WXaap\/hVE+PnFxvjx4nVxt79SdRuUVeu++HZD0cGAv4IOznc96w==","protocolVersion":"ECv2SigningOnly","keyExpiration":"2154841200000"}]
recipient_id = "merchant:12345678901234567890"
private_key = "string"

decryptor = GooglePayTokenDecryptor(signingKey, recipient_id, private_key)
decrypted_token = decryptor.decrypt_token(token, False)

I've also tried the Tink library in Java and also getting Exceptions related to verifying signature.

Exception in thread "main" java.security.GeneralSecurityException: cannot verify signature
    at com.google.crypto.tink.apps.paymentmethodtoken.PaymentMethodTokenRecipient.verify(PaymentMethodTokenRecipient.java:461)
    at com.google.crypto.tink.apps.paymentmethodtoken.PaymentMethodTokenRecipient.verifyECV2(PaymentMethodTokenRecipient.java:399)
    at com.google.crypto.tink.apps.paymentmethodtoken.PaymentMethodTokenRecipient.unsealECV2(PaymentMethodTokenRecipient.java:365)
    at com.google.crypto.tink.apps.paymentmethodtoken.PaymentMethodTokenRecipient.unseal(PaymentMethodTokenRecipient.java:342)
    at org.example.AeadExample.main(AeadExample.java:33)
0

There are 0 answers