diff --git a/openid_provider.inc b/openid_provider.inc
index 064bc54..f8a45f1 100644
--- a/openid_provider.inc
+++ b/openid_provider.inc
@@ -408,7 +408,12 @@ function _openid_provider_add($a, $b) {
 
 function _openid_provider_powmod($base, $exp, $mod) {
   if (function_exists('gmp_powm')) {
-    return gmp_powm($base, $exp, $mod);
+    $ret = gmp_powm($base, $exp, $mod);
+    if(!is_string($ret)) {
+      return gmp_strval($ret);
+    } else {
+      return $ret;
+    }
   }
   elseif (function_exists('bcpowmod')) {
     return bcpowmod($base, $exp, $mod);
