import base64
import struct
import binascii
-from M2Crypto import RSA, DSA
+from M2Crypto import RSA, DSA, m2
+
+
+###### Workaround for bug in m2crypto-0.18 (on Fedora 8)
+class RSA_pub_fix(RSA.RSA_pub):
+ def save_key_bio(self, bio, *args, **kw):
+ return self.save_pub_key_bio(bio)
+
+def rsa_new_pub_key(couple):
+ (e,n)=couple
+ rsa = m2.rsa_new()
+ m2.rsa_set_e(rsa, e)
+ m2.rsa_set_n(rsa, n)
+ return RSA_pub_fix(rsa, 1)
+######
+#rsa_new_pub_key = RSA.new_pub_key
def decode_key(fname):
if key_type == "ssh-rsa":
e, n = ret[1:]
- rsa = RSA.new_pub_key((e, n))
+ rsa = rsa_new_pub_key((e, n))
rsa.save_pem(fout)
elif key_type == "ssh-dss":
dsa.save_pub_key(fout)
# FIXME: This is wrong.
# M2Crypto doesn't allow us to set the public key parameter
- raise(Exception, "DSA keys are not supported yet: M2Crypto doesn't allow us to set the public key parameter")
+ raise Exception("DSA keys are not supported yet: M2Crypto doesn't allow us to set the public key parameter")
if __name__ == "__main__":