Signing/verification between Java and the OpenSSL I'm trying to sign/verify data between a C application and a Java application.

In java for now I was using the built-in JCE provider with SHA256withRSA as algorithm. On the C part I'm using OpenSSL RSA_sign/RSA_verify methods with NID_sha256 as type.

With this configuration I can't verify in my java application data signed from the C one and vice versa. It seems that SHA256withRSA is using PKCS#1 v1.5 and openssl state that they use PKCS# 2.0 as padding (source).

This is why I think that the problem could come from this padding difference, but I can't find any JCE provider that support the v2.0 padding.

Is this correct? What is the difference between these paddings?
Your problem is not with the signature scheme, something else is wrong.

RSA is specified by the RSA cryptography standard, PKCS#1 (mirrored in various RFC's). The PKCS#1 v1.5 padding was introduced in version 1.5 but it persisted in 2.0, 2.1 and 2.2. Those did however introduce a more secure padding scheme called PSS.

Unfortunately nobody calls the signature generation schemes by their true name: RSASSA-PKCS1-v1_5. Both your C code and your Java code seem to use that signature scheme.