mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
Accounts app improvements and tests
This commit is contained in:
parent
8afef36656
commit
5172a9f619
20 changed files with 622 additions and 227 deletions
|
|
@ -1,3 +1,7 @@
|
|||
import base64
|
||||
import binascii
|
||||
import struct
|
||||
|
||||
from django_otp import devices_for_user
|
||||
from django_otp.plugins.otp_totp.models import TOTPDevice
|
||||
|
||||
|
|
@ -7,3 +11,29 @@ def get_user_totp_device(user):
|
|||
for device in devices:
|
||||
if isinstance(device, TOTPDevice):
|
||||
return device
|
||||
|
||||
|
||||
def validate_ssh_key(key):
|
||||
array = key.encode().split()
|
||||
# Each rsa-ssh key has 3 different strings in it, first one being
|
||||
# typeofkey second one being keystring third one being username .
|
||||
if len(array) != 3:
|
||||
return False
|
||||
typeofkey = array[0]
|
||||
string = array[1]
|
||||
username = array[2]
|
||||
# must have only valid rsa-ssh key characters ie binascii characters
|
||||
try:
|
||||
data = base64.decodestring(string)
|
||||
except binascii.Error:
|
||||
return False
|
||||
# unpack the contents of data, from data[:4] , property of ssh key .
|
||||
try:
|
||||
str_len = struct.unpack('>I', data[:4])[0]
|
||||
except struct.error:
|
||||
return False
|
||||
# data[4:str_len] must have string which matches with the typeofkey, another ssh key property.
|
||||
if data[4:4 + str_len] == typeofkey:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue