encryptor = AES.new(base64.b64decode(site.cryptkey), AES.MODE_SIV, nonce=nonce)
cipher, tag = encryptor.encrypt_and_digest(s.encode('ascii'))
redirparams = {
- 'd': base64.b64encode(cipher, b"-_").decode('ascii'),
- 'n': base64.b64encode(nonce, b"-_").decode('ascii'),
- 't': base64.b64encode(tag, b"-_").decode('ascii'),
+ 'd': base64.urlsafe_b64encode(cipher),
+ 'n': base64.urlsafe_b64encode(nonce),
+ 't': base64.urlsafe_b64encode(tag),
}
else:
# v2 = plain AES
encryptor = AES.new(base64.b64decode(site.cryptkey), AES.MODE_CBC, iv)
cipher = encryptor.encrypt(s.encode('ascii') + b' ' * (16 - (len(s) % 16))) # Pad to even 16 bytes
redirparams = {
- 'i': base64.b64encode(iv, b"-_").decode('ascii'),
- 'd': base64.b64encode(cipher, b"-_").decode('ascii'),
+ 'i': base64.urlsafe_b64encode(iv),
+ 'd': base64.urlsafe_b64encode(cipher),
}
# Generate redirect
cipher, tag = encryptor.encrypt_and_digest(s.encode('ascii'))
return "&".join((
- base64.b64encode(nonce, b'-_').decode('ascii'),
- base64.b64encode(cipher, b'-_').decode('ascii'),
- base64.b64encode(tag, b'-_').decode('ascii'),
+ base64.urlsafe_b64encode(nonce).decode('ascii'),
+ base64.urlsafe_b64encode(cipher).decode('ascii'),
+ base64.urlsafe_b64encode(tag).decode('ascii'),
))
else:
# Encrypt it with the shared key (and IVs)
cipher = encryptor.encrypt(s.encode('ascii') + b' ' * (16 - (len(s) % 16))) # Pad to even 16 bytes
return "&".join((
- base64.b64encode(iv, b'-_').decode('ascii'),
- base64.b64encode(cipher, b'-_').decode('ascii'),
+ base64.urlsafe_b64encode(iv).decode('ascii'),
+ base64.urlsafe_b64encode(cipher).decode('ascii'),
))
return HttpResponseRedirect("%s?%s" % (settings.PGAUTH_REDIRECT, urlencode({
'd': '$'.join((
- base64.b64encode(nonce, b"-_").decode('utf8'),
- base64.b64encode(cipher, b"-_").decode('utf8'),
- base64.b64encode(tag, b"-_").decode('utf8'),
+ base64.urlsafe_b64encode(nonce).decode('utf8'),
+ base64.urlsafe_b64encode(cipher).decode('utf8'),
+ base64.urlsafe_b64encode(tag).decode('utf8'),
)),
})))
else:
decryptor = AES.new(
base64.b64decode(settings.PGAUTH_KEY),
AES.MODE_SIV,
- nonce=base64.b64decode(str(request.GET['n']), "-_"),
+ nonce=base64.urlsafe_b64decode(str(request.GET['n'])),
)
s = decryptor.decrypt_and_verify(
- base64.b64decode(str(request.GET['d']), "-_"),
- base64.b64decode(str(request.GET['t']), "-_"),
+ base64.urlsafe_b64decode(str(request.GET['d'])),
+ base64.urlsafe_b64decode(str(request.GET['t'])),
).rstrip(b' ').decode('utf8')
except UnicodeDecodeError:
return HttpResponse("Badly encoded data found", 400)
decryptor = AES.new(
SHA256.new(settings.SECRET_KEY.encode('ascii')).digest()[:32],
AES.MODE_SIV,
- nonce=base64.b64decode(nonces, b"-_"),
+ nonce=base64.urlsafe_b64decode(nonces),
)
s = decryptor.decrypt_and_verify(
- base64.b64decode(datas, "-_"),
- base64.b64decode(tags, "-_"),
+ base64.urlsafe_b64decode(datas),
+ base64.urlsafe_b64decode(tags),
).rstrip(b' ').decode('utf8')
try:
rdata = parse_qs(s, strict_parsing=True)
decryptor = AES.new(
base64.b64decode(settings.PGAUTH_KEY),
AES.MODE_SIV,
- nonce=base64.b64decode(nonces, "-_")
+ nonce=base64.urlsafe_b64decode(nonces)
)
s = decryptor.decrypt_and_verify(
- base64.b64decode(datas, "-_"),
- base64.b64decode(tags, "-_"),
+ base64.urlsafe_b64decode(datas),
+ base64.urlsafe_b64decode(tags),
).rstrip(b' ').decode('utf8')
j = json.loads(s)
cipher, tag = encryptor.encrypt_and_digest(s.encode('ascii'))
redirparams = {
- 'd': base64.b64encode(cipher, b"-_").decode('ascii'),
- 'n': base64.b64encode(nonce, b"-_").decode('ascii'),
- 't': base64.b64encode(tag, b"-_").decode('ascii'),
+ 'd': base64.urlsafe_b64encode(cipher).decode('ascii'),
+ 'n': base64.urlsafe_b64encode(nonce).decode('ascii'),
+ 't': base64.urlsafe_b64encode(tag).decode('ascii'),
}
print("Paste the following after the receiving url:")