keystone/keystone/identity/id_generators/sha256.py
Henry Nash 4f0107e434 Make identity id mapping handle unicode
Idenitity id mapping is used to create public ids for local entities,
typically stored in LDAP backends. Part of the mapping involves
creating a hash of the local identifiers - but this hashing did
not correctly handle unicode. This patch fixes this.

Change-Id: Icc2a6bc4a7e88004bbe6f86d3a96cff07be4c6f9
Closes-Bug: 1419187
2015-02-08 11:02:08 +00:00

29 lines
888 B
Python

# Copyright 2014 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import hashlib
import six
from keystone.identity import generator
class Generator(generator.IDGenerator):
def generate_public_ID(self, mapping):
m = hashlib.sha256()
for key in sorted(six.iterkeys(mapping)):
m.update(mapping[key].encode('utf-8'))
return m.hexdigest()