Files
mabac/abac/forms.py

40 lines
1.2 KiB
Python
Raw Normal View History

2023-09-28 17:29:30 +02:00
from django import forms
2023-10-16 11:03:39 +02:00
from django.core.exceptions import ValidationError
2023-09-28 17:29:30 +02:00
2023-10-16 11:03:39 +02:00
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from .models import File, RuleAttribute, AttributeType, TrustedAuthority
2023-09-28 17:29:30 +02:00
class FileUploadForm(forms.ModelForm):
class Meta:
model = File
fields = ['name', 'file']
class UploadCertificateForm(forms.Form):
2023-10-16 11:03:39 +02:00
signature = forms.FileField(label='Signature File')
2023-09-28 17:29:30 +02:00
certificate = forms.FileField()
class RuleAttributeForm(forms.ModelForm):
class Meta:
model = RuleAttribute
fields = ['attribute_type', 'operator', 'value']
2023-10-16 11:03:39 +02:00
attribute_type = forms.ModelChoiceField(queryset=AttributeType.objects.all())
class TrustedAuthorityForm(forms.ModelForm):
class Meta:
model = TrustedAuthority
fields = ['name', 'public_key']
def clean_public_key(self):
data = self.cleaned_data['public_key']
try:
# Try to load the RSA public key. If it's invalid, it'll raise an error
serialization.load_pem_public_key(data.encode(), backend=default_backend())
except ValueError:
raise ValidationError("Invalid RSA public key.")
return data