Generate public and private keys using sfa.trust.certificate library
authorLoic Baron <loic.baron@lip6.fr>
Mon, 26 Aug 2013 16:28:18 +0000 (18:28 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Mon, 26 Aug 2013 16:28:18 +0000 (18:28 +0200)
portal/urls.py
portal/views.py

index 2887388..2d870d5 100644 (file)
@@ -47,7 +47,7 @@ urlpatterns = patterns('',
     url(r'^platforms/?$', PlatformsView.as_view(), name='platforms'),
     #url(r'^portal/platform/?$', PlatformView.platform_view(), name='platform'),
     url(r'^platform/(?P<platformname>[\w\.]+)/?$', PlatformView.as_view(), name='platform'),
-    url(r'^acc_process/?$', views.acc_process),
+    url(r'^account/acc_process/?$', views.acc_process),
     url(r'^register/?$', views.register_4m_f4f),
     #url(r'^reg_process/?$', views.reg_4m_f4f_process),
     url(r'^contact/?$', views.contact),
index c9ae046..9699f0a 100644 (file)
@@ -640,35 +640,41 @@ def acc_process(request):
         get_user.save()
         return HttpResponse('Success: Password Changed!!')
     elif 'generate' in request.POST:
-        #import os
-        #from M2Crypto import Rand, RSA, BIO
-
-        KEY_LENGTH = 2048
-
-        def blank_callback():
-            "Replace the default dashes"
-            return
-
-        # Random seed
-        Rand.rand_seed (os.urandom (KEY_LENGTH))
-        # Generate key pair
-        key = RSA.gen_key (KEY_LENGTH, 65537, blank_callback)
-        # Create memory buffers
-        pri_mem = BIO.MemoryBuffer()
-        pub_mem = BIO.MemoryBuffer()
-        # Save keys to buffers
-        key.save_key_bio(pri_mem, None)
-        key.save_pub_key_bio(pub_mem)
-
-        # Get keys 
-        public_key = pub_mem.getvalue()
-        private_key = pri_mem.getvalue()
+        # Generate public and private keys using SFA Library
+        from sfa.trust.certificate  import Keypair
+        k = Keypair(create=True)
+        public_key = k.get_pubkey_string()
+        private_key = k.as_pem()
+       
+# DEPRECATED
+#        KEY_LENGTH = 2048
+#
+#        def blank_callback():
+#            "Replace the default dashes"
+#            return
+#
+#        # Random seed
+#        Rand.rand_seed (os.urandom (KEY_LENGTH))
+#        # Generate key pair
+#        key = RSA.gen_key (KEY_LENGTH, 65537, blank_callback)
+#        # Create memory buffers
+#        pri_mem = BIO.MemoryBuffer()
+#        pub_mem = BIO.MemoryBuffer()
+#        # Save keys to buffers
+#        key.save_key_bio(pri_mem, None)
+#        key.save_pub_key_bio(pub_mem)
+#
+#        # Get keys 
+#        public_key = pub_mem.getvalue()
+#        private_key = pri_mem.getvalue()
+        private_key = ''.join(private_key.split())
+        public_key = "ssh-rsa " + public_key
         # Saving to DB
         keypair = '{"user_public_key":"'+ public_key + '", "user_private_key":"'+ private_key + '"}'
-        keypair = re.sub("\r", "", keypair)
-        keypair = re.sub("\n", "\\n", keypair)
-        #keypair = keypair.rstrip('\r\n')
-        keypair = ''.join(keypair.split())
+#        keypair = re.sub("\r", "", keypair)
+#        keypair = re.sub("\n", "\\n", keypair)
+#        #keypair = keypair.rstrip('\r\n')
+#        keypair = ''.join(keypair.split())
         get_user.keypair = keypair
         get_user.save()
         return HttpResponse('Success: New Keypair Generated! %s' % keypair)
@@ -728,35 +734,44 @@ def register_4m_f4f(request):
             #return HttpResponse("Email Already exists")
             #return render(request, 'register_4m_f4f.html')
         if 'generate' in request.POST['question']:
-            #import os
-            #from M2Crypto import Rand, RSA, BIO
-            
-            KEY_LENGTH = 2048
-
-            def blank_callback():
-                "Replace the default dashes"
-                return
-
-            # Random seed
-            Rand.rand_seed (os.urandom (KEY_LENGTH))
-            # Generate key pair
-            key = RSA.gen_key (KEY_LENGTH, 65537, blank_callback)
-            # Create memory buffers
-            pri_mem = BIO.MemoryBuffer()
-            pub_mem = BIO.MemoryBuffer()
-            # Save keys to buffers
-            key.save_key_bio(pri_mem, None)
-            key.save_pub_key_bio(pub_mem)
-            # Get keys 
-            public_key = pub_mem.getvalue()
-            private_key = pri_mem.getvalue()
+            # Generate public and private keys using SFA Library
+            from sfa.trust.certificate  import Keypair
+            k = Keypair(create=True)
+            public_key = k.get_pubkey_string()
+            private_key = k.as_pem()
+
+# DEPRECATED
+#            #import os
+#            #from M2Crypto import Rand, RSA, BIO
+#            
+#            KEY_LENGTH = 2048
+#
+#            def blank_callback():
+#                "Replace the default dashes"
+#                return
+#
+#            # Random seed
+#            Rand.rand_seed (os.urandom (KEY_LENGTH))
+#            # Generate key pair
+#            key = RSA.gen_key (KEY_LENGTH, 65537, blank_callback)
+#            # Create memory buffers
+#            pri_mem = BIO.MemoryBuffer()
+#            pub_mem = BIO.MemoryBuffer()
+#            # Save keys to buffers
+#            key.save_key_bio(pri_mem, None)
+#            key.save_pub_key_bio(pub_mem)
+#            # Get keys 
+#            public_key = pub_mem.getvalue()
+#            private_key = pri_mem.getvalue()
+
+            private_key = ''.join(private_key.split())
+            public_key = "ssh-rsa " + public_key
             # Saving to DB
             keypair = '{"user_public_key":"'+ public_key + '", "user_private_key":"'+ private_key + '"}'
-            keypair = re.sub("\r", "", keypair)
-            keypair = re.sub("\n", "\\n", keypair)
-            #keypair = keypair.rstrip('\r\n')
-            keypair = ''.join(keypair.split())
-            #return HttpResponse(keypair)
+#            keypair = re.sub("\r", "", keypair)
+#            keypair = re.sub("\n", "\\n", keypair)
+#            #keypair = keypair.rstrip('\r\n')
+#            keypair = ''.join(keypair.split())
         else:
             up_file = request.FILES['user_public_key']
             file_content =  up_file.read()