You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2013/11/05 20:05:20 UTC
[2/7] git commit: Add get_secure_random_string utility function.
Add get_secure_random_string utility function.
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/53a67432
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/53a67432
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/53a67432
Branch: refs/heads/trunk
Commit: 53a67432c963a5dd95c4f796a1888e287018764b
Parents: ca1104f
Author: Tomaz Muraus <to...@apache.org>
Authored: Tue Nov 5 15:20:41 2013 +0000
Committer: Tomaz Muraus <to...@apache.org>
Committed: Tue Nov 5 18:52:12 2013 +0000
----------------------------------------------------------------------
libcloud/test/test_utils.py | 6 ++++++
libcloud/utils/misc.py | 27 ++++++++++++++++++++++++---
2 files changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/53a67432/libcloud/test/test_utils.py
----------------------------------------------------------------------
diff --git a/libcloud/test/test_utils.py b/libcloud/test/test_utils.py
index a4f8531..0233036 100644
--- a/libcloud/test/test_utils.py
+++ b/libcloud/test/test_utils.py
@@ -33,6 +33,7 @@ from libcloud.utils.py3 import b
from libcloud.utils.py3 import urlquote
from libcloud.compute.types import Provider
from libcloud.compute.providers import DRIVERS
+from libcloud.utils.misc import get_secure_random_string
WARNINGS_BUFFER = []
@@ -226,6 +227,11 @@ class TestUtils(unittest.TestCase):
uri = urlquote(b('~abc'))
self.assertEqual(b(uri), b('%7Eabc'))
+ def test_get_secure_random_string(self):
+ for i in range(1, 500):
+ value = get_secure_random_string(size=i)
+ self.assertEqual(len(value), i)
+
if __name__ == '__main__':
sys.exit(unittest.main())
http://git-wip-us.apache.org/repos/asf/libcloud/blob/53a67432/libcloud/utils/misc.py
----------------------------------------------------------------------
diff --git a/libcloud/utils/misc.py b/libcloud/utils/misc.py
index 93570ad..21978e1 100644
--- a/libcloud/utils/misc.py
+++ b/libcloud/utils/misc.py
@@ -13,6 +13,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import os
+import sys
+import binascii
+
+
__all__ = [
'get_driver',
'set_driver',
@@ -21,11 +26,10 @@ __all__ = [
'str2dicts',
'dict2str',
'reverse_dict',
- 'lowercase_keys'
+ 'lowercase_keys',
+ 'get_secure_random_string'
]
-import sys
-
def get_driver(drivers, provider):
"""
@@ -231,3 +235,20 @@ def reverse_dict(dictionary):
def lowercase_keys(dictionary):
return dict(((k.lower(), v) for k, v in dictionary.items()))
+
+
+def get_secure_random_string(size):
+ """
+ Return a string of ``size`` random bytes. Returned string is suitable for
+ cryptographic use.
+
+ :param size: Size of the generated string.
+ :type size: ``int``
+
+ :return: Random string.
+ :rtype: ``str``
+ """
+ value = os.urandom(size)
+ value = binascii.hexlify(value)
+ value = value.decode('utf-8')[:size]
+ return value