Merge pull request #3159 from charhate/key_type_column

Add key_type to CertificateUploadInputSchema
This commit is contained in:
charhate 2020-09-29 10:41:25 -07:00 committed by GitHub
commit d3b01d6b40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 0 deletions

View File

@ -326,6 +326,7 @@ class CertificateUploadInputSchema(CertificateCreationSchema):
body = fields.String(required=True) body = fields.String(required=True)
chain = fields.String(missing=None, allow_none=True) chain = fields.String(missing=None, allow_none=True)
csr = fields.String(required=False, allow_none=True, validate=validators.csr) csr = fields.String(required=False, allow_none=True, validate=validators.csr)
key_type = fields.String()
destinations = fields.Nested(AssociatedDestinationSchema, missing=[], many=True) destinations = fields.Nested(AssociatedDestinationSchema, missing=[], many=True)
notifications = fields.Nested(AssociatedNotificationSchema, missing=[], many=True) notifications = fields.Nested(AssociatedNotificationSchema, missing=[], many=True)
@ -373,6 +374,16 @@ class CertificateUploadInputSchema(CertificateCreationSchema):
# Throws ValidationError # Throws ValidationError
validators.verify_cert_chain([cert] + chain) validators.verify_cert_chain([cert] + chain)
@pre_load
def load_data(self, data):
if data.get("body"):
try:
data["key_type"] = utils.get_key_type_from_certificate(data["body"])
except ValueError:
raise ValidationError(
"Public certificate presented is not valid.", field_names=["body"]
)
class CertificateExportInputSchema(LemurInputSchema): class CertificateExportInputSchema(LemurInputSchema):
plugin = fields.Nested(PluginInputSchema) plugin = fields.Nested(PluginInputSchema)

View File

@ -55,6 +55,7 @@ def test_create_pending(pending_certificate, user, session):
assert real_cert.notify == pending_certificate.notify assert real_cert.notify == pending_certificate.notify
assert real_cert.private_key == pending_certificate.private_key assert real_cert.private_key == pending_certificate.private_key
assert real_cert.external_id == "54321" assert real_cert.external_id == "54321"
assert real_cert.key_type == "RSA2048"
@pytest.mark.parametrize( @pytest.mark.parametrize(