[crans_utils/hash] Backward compatibility needed
* À l'heure actuelle, les hash ssha contenus dans la base LDAP ont un sel de seulement 4 octets.
This commit is contained in:
parent
ecc1b59d4a
commit
5559fa1876
1 changed files with 11 additions and 9 deletions
|
@ -80,7 +80,7 @@ def ip4_of_rid(rid):
|
||||||
net, plage = find_rid_plage(rid)
|
net, plage = find_rid_plage(rid)
|
||||||
if net == 'Inconnu':
|
if net == 'Inconnu':
|
||||||
raise ValueError("Rid dans aucune plage: %d" % rid)
|
raise ValueError("Rid dans aucune plage: %d" % rid)
|
||||||
|
|
||||||
if net == 'special':
|
if net == 'special':
|
||||||
try:
|
try:
|
||||||
return netaddr.IPAddress(config.rid_machines_speciales[rid])
|
return netaddr.IPAddress(config.rid_machines_speciales[rid])
|
||||||
|
@ -103,7 +103,7 @@ def rid_of_ip4(ipv4):
|
||||||
|
|
||||||
# Le cas non-échéant, on va devoir faire de la deep NETs inspection
|
# Le cas non-échéant, on va devoir faire de la deep NETs inspection
|
||||||
realm, sousplage = find_ipv4_plage(ipv4)
|
realm, sousplage = find_ipv4_plage(ipv4)
|
||||||
|
|
||||||
return config.rid[realm][0][0] + int(ipv4 - sousplage.first)
|
return config.rid[realm][0][0] + int(ipv4 - sousplage.first)
|
||||||
|
|
||||||
def prefixev6_of_rid(rid):
|
def prefixev6_of_rid(rid):
|
||||||
|
@ -119,7 +119,7 @@ def prefixev6_of_rid(rid):
|
||||||
net, plage = find_rid_plage(rid)
|
net, plage = find_rid_plage(rid)
|
||||||
if net == 'Inconnu':
|
if net == 'Inconnu':
|
||||||
raise ValueError("Rid dans aucune plage: %d" % rid)
|
raise ValueError("Rid dans aucune plage: %d" % rid)
|
||||||
|
|
||||||
# adherents-v6 ou wifi-adh-v6, we don't care
|
# adherents-v6 ou wifi-adh-v6, we don't care
|
||||||
return netaddr.IPAddress(netaddr.IPNetwork(config.prefix['adherents-v6'][0]).first + 2**64*rid)
|
return netaddr.IPAddress(netaddr.IPNetwork(config.prefix['adherents-v6'][0]).first + 2**64*rid)
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ def ip6_of_mac(mac, rid):
|
||||||
net, plage = find_rid_plage(rid)
|
net, plage = find_rid_plage(rid)
|
||||||
if net == 'Inconnu':
|
if net == 'Inconnu':
|
||||||
raise ValueError("Rid dans aucune plage: %d" % rid)
|
raise ValueError("Rid dans aucune plage: %d" % rid)
|
||||||
|
|
||||||
# En théorie, format_mac est inutile, car on ne devrait avoir
|
# En théorie, format_mac est inutile, car on ne devrait avoir
|
||||||
# que des mac formatées.
|
# que des mac formatées.
|
||||||
mac = format_mac(mac)
|
mac = format_mac(mac)
|
||||||
|
@ -238,12 +238,14 @@ def escape(chaine):
|
||||||
return ldap.filter.escape_filter_chars(chaine)
|
return ldap.filter.escape_filter_chars(chaine)
|
||||||
|
|
||||||
|
|
||||||
def hash_password(password, salt=None):
|
def hash_password(password, salt=None, longueur=4):
|
||||||
|
if longueur < 4:
|
||||||
|
raise ValueError("salt devrait faire au moins 4 octets")
|
||||||
if salt is None:
|
if salt is None:
|
||||||
salt = os.urandom(8)
|
salt = os.urandom(longueur)
|
||||||
elif len(salt)<8:
|
elif len(salt)<4:
|
||||||
raise ValueError("salt devrait faire au moins 8 octets")
|
raise ValueError("salt devrait faire au moins 4 octets")
|
||||||
|
|
||||||
return '{SSHA}' + base64.b64encode(hashlib.sha1(password + salt).digest() + salt)
|
return '{SSHA}' + base64.b64encode(hashlib.sha1(password + salt).digest() + salt)
|
||||||
|
|
||||||
def decode_subjectAltName(data):
|
def decode_subjectAltName(data):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue