There are a lot of things to keep track of when verifying.
- Did you encode your data according to the proper sighash byte?
- Are you using the correct key to verify?
- Did you hash the data you are verifying?
- Did you add the four bytes representing the sighash byte to your data?
So, for the transaction you mentioned, there is only one input that contains a signature that ends with sighash byte 01. Sighash byte 01 means we basically use the raw transaction as our data. If there had been multiple inputs, we would use zero-length scripts for the inputs we are not verifying, but in this case we only have one. But we do have to put a 4-byte little endian value at the end of the data to represent the sighash byte.
So this is the data that I believe needs to be verified.
01000000 at the end. That represents the sighash byte which has to be signed along with the rest of the data.
I'm not familiar with the library you mentioned, but many of them will work. Typically, you need to pass the data and its length, the signature and the public key being verified. Since the signatures in bitcoin transactions usually have a sighash byte stuck on the end of them, you'll need to remove that byte before passing it to the function you use to verify.
If you serialize all of the bytes above into one message, convert it to binary and apply a double sha256 to it, I bet you can verify it with the public key included in the previous output's script.