예제 #1
0
    def _validate_certificate_meta(self, certificate_meta, schema_name):
        """Validation specific to meta for certificate type order."""

        self._assert_validity(
            certificate_meta.get('payload') is None, schema_name,
            u._("'payload' not allowed "
                "for certificate type order"), "meta")

        if 'profile' in certificate_meta:
            if 'ca_id' not in certificate_meta:
                raise exception.MissingMetadataField(required='ca_id')

        jump_table = {
            'simple-cmc': self._validate_simple_cmc_request,
            'full-cmc': self._validate_full_cmc_request,
            'stored-key': self._validate_stored_key_request,
            'custom': self._validate_custom_request
        }

        request_type = certificate_meta.get("request_type", "custom")
        if request_type not in jump_table:
            raise exception.InvalidCertificateRequestType(request_type)

        jump_table[request_type](certificate_meta)
예제 #2
0
 def _get_required_metadata_value(self, metadata, key):
     data = metadata.get(key, None)
     if data is None:
         raise exception.MissingMetadataField(required=key)
     return data