It's probably an encoding issue.
$sign2 = (stripslashes($_POST['sign']));
$sign2 = mb_convert_encoding($sign2, "auto");
code above is a result of trial-and-error method which made $sign2 look like $sign which is an output from:
openssl_sign($content, $sign, $key_pr);
but openssl_verify() returns false when I type $sign2 instead of $sign for verification - despite they are both of type string, length 128 and look the same.
$sign: KOóÂ^0Å ¶Ô®þó :æ aêÌCæÃñ÷”äþÊÝÌ7=ËæK-ÎËÚ¦iÛtËš½Då^Ðv¶:Å*^'¬˜8êšq
$sign2: KOóÂ^0Å ¶Ô®þó :æ aêÌCæÃñ÷”äþÊÝÌ7=ËæK-ÎËÚ¦iÛtËš½Då^Ðv¶:Å*^'¬˜8êšq
verification: bad