#
import crypt
-try:
- from hashlib import sha1 as sha
-except ImportError:
- import sha
+from hashlib import sha1 as sha
import hmac
import time
import os
PlanetLab version 3.x node authentication structure. Used by the
Boot Manager to make authenticated calls to the API based on a
unique node key or boot nonce value.
-
- The original parameter serialization code did not define the byte
- encoding of strings, or the string encoding of all other types. We
- define the byte encoding to be UTF-8, and the string encoding of
- all other types to be however Python version 2.3 unicode() encodes
- them.
"""
def __init__(self):
args.sort()
msg = "[" + "".join(args) + "]"
- # We encode in UTF-8 before calculating the HMAC, which is
- # an 8-bit algorithm.
- # python 2.6 insists on receiving a 'str' as opposed to a 'unicode'
- digest = hmac.new(str(key), msg.encode('utf-8'), sha).hexdigest()
+ digest = hmac.new(key.encode('utf-8'), msg.encode('utf-8'), sha).hexdigest()
if digest != auth['value']:
raise PLCAuthenticationFailure(
xml = xmlrpc.client.dumps(args, methodname, methodresponse, encoding = 'utf-8', allow_none = 1)
dom = etree.fromstring(xml)
- canonical=etree.tostring(dom)
+ canonical = etree.tostring(dom)
# pre-f20 version was using Canonicalize from PyXML
# from xml.dom.ext import Canonicalize
# Canonicalize(), though it claims to, does not encode unicode
if regenerate_node_key:
# Generate 32 random bytes
- bytes = random.sample(range(0, 256), 32)
+ int8s = random.sample(range(0, 256), 32)
# Base64 encode their string representation
- node['key'] = base64.b64encode("".join(map(chr, bytes)))
+ node['key'] = base64.b64encode(bytes(int8s))
# XXX Boot Manager cannot handle = in the key
- node['key'] = node['key'].replace("=", "")
+ node['key'] = node['key'].replace(b"=", b"")
# Save it
node.sync()
# Base64 encode their string representation
key = base64.b64encode(bytes(int8s))
# Boot Manager cannot handle = in the key
- # XXX this sounds wrong, as it might prevent proper decoding
key = key.replace(b"=", b"")
return key
raise PLCInvalidArgument("Cannot reset admin passwords")
# Generate 32 random bytes
- bytes = random.sample(range(0, 256), 32)
+ int8s = random.sample(range(0, 256), 32)
# Base64 encode their string representation
- random_key = base64.b64encode("".join(map(chr, bytes)))
+ random_key = base64.b64encode(bytes(int8s))
if verification_key is not None:
if person['verification_key'] is None or \
site_name = "No Site"
# Generate 32 random bytes
- bytes = random.sample(range(0, 256), 32)
+ int8s = random.sample(range(0, 256), 32)
# Base64 encode their string representation
- random_key = base64.b64encode("".join(map(chr, bytes)))
+ random_key = base64.b64encode(bytes(int8s))
if verification_key is None or \
(verification_key is not None and person['verification_expires'] and \
session.delete(commit)
# Generate 32 random bytes
- bytes = random.sample(range(0, 256), 32)
+ int8s = random.sample(range(0, 256), 32)
# Base64 encode their string representation
- self['session_id'] = base64.b64encode("".join(map(chr, bytes)))
+ self['session_id'] = base64.b64encode(bytes(int8s))
# Force insert
insert = True