diff --git a/lib/modules/Crypto.pmod/DSA.pike b/lib/modules/Crypto.pmod/DSA.pike
index 0a51d5a16f86b5f5928853fc7298d51b64f3a0e0..83d01b18f7dd7841216a9447b43c4150b18b5bc3 100644
--- a/lib/modules/Crypto.pmod/DSA.pike
+++ b/lib/modules/Crypto.pmod/DSA.pike
@@ -8,6 +8,12 @@
 
 inherit Crypto.Sign;
 
+protected string _sprintf(int t)
+{
+  return t=='O' && sprintf("%O(%d,%d)", this_program, sizeof(p->digits(2)),
+                           sizeof(q->digits(2)));
+}
+
 //
 // --- Variables and accessors
 //
diff --git a/lib/modules/Crypto.pmod/RSA.pike b/lib/modules/Crypto.pmod/RSA.pike
index 1a47196dbe79746b7c2471468f253f14c99566b5..1f98d28b05e506f56fd6ac9345af1319b5d4d280 100644
--- a/lib/modules/Crypto.pmod/RSA.pike
+++ b/lib/modules/Crypto.pmod/RSA.pike
@@ -8,6 +8,11 @@
 
 inherit Crypto.Sign;
 
+protected string _sprintf(int t)
+{
+  return t=='O' && sprintf("%O(%d)", this_program, size*8);
+}
+
 //
 // --- Variables and accessors
 //