Imported from Gentoo
https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9c50acec16bc7c33d6dc122c007d713e7fbecf9c

Signed-off-by: Khem Raj <raj.khem@gmail.com>

Rebase for crda 4.15.

Signed-off-by: Kai Kang <kai.kang@windriver.com>

 utils/key2pub.py | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/utils/key2pub.py b/utils/key2pub.py
index 22fda55..2a4980b 100755
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -1,22 +1,22 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import sys
 try:
        from M2Crypto import RSA
-except ImportError, e:
+except ImportError as e:
        sys.stderr.write('ERROR: Failed to import the "M2Crypto" module: %s\n' % e.message)
        sys.stderr.write('Please install the "M2Crypto" Python module.\n')
        sys.stderr.write('On Debian GNU/Linux the package is called "python-m2crypto".\n')
        sys.exit(1)
 
 def print_ssl_64(output, name, val):
-    while val[0] == '\0':
+    while val[0:1] == b'\0':
         val = val[1:]
     while len(val) % 8:
-        val = '\0' + val
+        val = b'\0' + val
     vnew = []
     while len(val):
-        vnew.append((val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7]))
+        vnew.append((val[0:1], val[1:2], val[2:3], val[3:4], val[4:5], val[5:6], val[6:7], val[7:8]))
         val = val[8:]
     vnew.reverse()
     output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew)))
@@ -34,13 +34,13 @@ def print_ssl_64(output, name, val):
     output.write('};\n\n')
 
 def print_ssl_32(output, name, val):
-    while val[0] == '\0':
+    while val[0:1] == b'\0':
         val = val[1:]
     while len(val) % 4:
-        val = '\0' + val
+        val = b'\0' + val
     vnew = []
     while len(val):
-        vnew.append((val[0], val[1], val[2], val[3], ))
+        vnew.append((val[0:1], val[1:2], val[2:3], val[3:4]))
         val = val[4:]
     vnew.reverse()
     output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew)))
@@ -81,21 +81,21 @@ struct pubkey {
 
 static struct pubkey keys[] __attribute__((unused))= {
 ''')
-    for n in xrange(n + 1):
+    for n in range(n + 1):
         output.write('	KEYS(e_%d, n_%d),\n' % (n, n))
     output.write('};\n')
     pass
 
 def print_gcrypt(output, name, val):
     output.write('#include <stdint.h>\n')
-    while val[0] == '\0':
+    while val[0:1] == b'\0':
         val = val[1:]
     output.write('static const uint8_t %s[%d] = {\n' % (name, len(val)))
     idx = 0
     for v in val:
         if not idx:
             output.write('\t')
-        output.write('0x%.2x, ' % ord(v))
+        output.write('0x%.2x, ' % (v if sys.version_info[0] >=3 else ord(v)))
         idx += 1
         if idx == 8:
             idx = 0
@@ -118,7 +118,7 @@ struct key_params {
 
 static const struct key_params __attribute__ ((unused)) keys[] = {
 ''')
-    for n in xrange(n + 1):
+    for n in range(n + 1):
         output.write('	KEYS(e_%d, n_%d),\n' % (n, n))
     output.write('};\n')
     
@@ -136,7 +136,7 @@ except IndexError:
     mode = None
 
 if not mode in modes:
-    print 'Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys()))
+    print('Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys())))
     sys.exit(2)
 
 output = open(outfile, 'w')
@@ -154,3 +154,5 @@ for f in files:
     idx += 1
 
 modes[mode][1](output, idx - 1)
+
+output.close()
