diff options
Diffstat (limited to 'M2Crypto/BN.py')
-rwxr-xr-x | M2Crypto/BN.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/M2Crypto/BN.py b/M2Crypto/BN.py new file mode 100755 index 0000000..ec741c0 --- /dev/null +++ b/M2Crypto/BN.py @@ -0,0 +1,47 @@ +""" +M2Crypto wrapper for OpenSSL BN (BIGNUM) API. + +Copyright (c) 2005 Open Source Applications Foundation. All rights reserved. +""" + +import m2 + +def rand(bits, top=-1, bottom=0): + """ + Generate cryptographically strong random number. + + @param bits: Length of random number in bits. + @param top: If -1, the most significant bit can be 0. If 0, the most + significant bit is 1, and if 1, the two most significant + bits will be 1. + @param bottom: If bottom is true, the number will be odd. + """ + return m2.bn_rand(bits, top, bottom) + + +def rand_range(range): + """ + Generate a random number in a range. + + @param range: Upper limit for range. + @return: A random number in the range [0, range) + """ + return m2.bn_rand_range(range) + + +def randfname(length): + """ + Return a random filename, which is simply a string where all + the characters are from the set [a-zA-Z0-9]. + + @param length: Length of filename to return. + @type length: int + @return: random filename string + """ + letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890' + lettersLen = len(letters) + fname = [] + for x in range(length): + fname += [letters[m2.bn_rand_range(lettersLen)]] + + return ''.join(fname) |