예제 #1
0
    def _valida_emission_csr(self, valor, fields):
        csr = self.get_csr_decoded(valor)
        url = fields.get('emission_url', '')

        if not csr['ok']:
            raise self.ValidationError('CSR Inválida')

        try:
            voucher = self.get_voucher()
        except Voucher.DoesNotExist:
            raise self.ValidationError()

        if csr.get('CN') != url:
            raise self.ValidationError('O campo Common Name(CN) deve conter o domínio escolhido')

        if not comparacao_fuzzy(csr.get('O'), voucher.customer_companyname):
            raise self.ValidationError(get_erro_message(e.ERRO_CSR_ORGANIZATION_DIFERENTE_CNPJ))

        key_size = int(csr.get('KeySize'))
        if voucher.ssl_line in (voucher.LINHA_BASIC, voucher.LINHA_PRO) and key_size != 2048:
            raise self.ValidationError(get_erro_message(e.ERRO_CSR_PRODUTO_EXIGE_CHAVE_2048_BITS))

        if voucher.ssl_line == voucher.LINHA_PRIME and key_size != 4096:
            raise self.ValidationError(get_erro_message(e.ERRO_CSR_PRODUTO_EXIGE_CHAVE_4096_BITS))

        if voucher.ssl_product in (voucher.PRODUTO_MDC, voucher.PRODUTO_SAN_UCC, voucher.PRODUTO_EV_MDC):
            dominios = csr.get('dnsNames', [])

            if len(dominios) > voucher.ssl_domains_qty:
                if voucher.ssl_product == voucher.PRODUTO_SAN_UCC:
                    raise self.ValidationError(get_erro_message(e.ERRO_SEM_CREDITO_FQDN))
                raise self.ValidationError(get_erro_message(e.ERRO_SEM_CREDITO_DOMINIO))

            for dominio in dominios:
                if dominio.startswith('*.'):
                    dominio = dominio[2:]
                razao_social = get_razao_social_dominio(dominio)
                if not razao_social:
                    raise self.ValidationError('Não foi possível conseguir a razão social apartir do domínio: %s' % dominio)
                if not comparacao_fuzzy(razao_social, voucher.customer_companyname):
                    if fields.get('emission_assignment_letter'):
                        self.validacao_manual = True
                    else:
                        raise self.ValidationError('A razão social do seu CNPJ não bate com a do domínio: %s' % dominio)
            #TODO: TBD > Chamar o serviço da COMODO para validar o e-mail de confirmação enviado pela API
        return valor
예제 #2
0
    def _valida_emission_dcv_emails(self, valor, fields):
        dominios = fields['emission_fqdns'].split(' ')
        emails = valor.split(' ')

        if len(dominios) != len(emails):
            raise self.ValidationError(get_erro_message(e.ERRO_DOMINIO_SEM_EMAIL_VALIDACAO))

        for dominio, email in zip(dominios, emails):
            if email not in get_emails_validacao_padrao(dominio):
                raise self.ValidationError('E-mail de validação inválido: %s para o domínio %s' % (email, dominio))
        return valor
예제 #3
0
    def _valida_emission_url(self, valor, fields):
        razao_social = get_razao_social_dominio(valor)
        if not razao_social:
            raise self.ValidationError('Não foi possível conseguir a razão social apartir da url informada')

        try:
            voucher = self.get_voucher()
        except Voucher.DoesNotExist:
            raise self.ValidationError(get_erro_message(e.ERRO_VOUCHER_NAO_ENCONTRADO))

        if not comparacao_fuzzy(razao_social, voucher.customer_companyname):
            if fields.get('emission_assignment_letter'):
                # se a razão social for diferente, mas o cliente enviar uma carta de cessão,
                # será preciso validação manual
                self.validacao_manual = True

            else:
                raise self.ValidationError('A entidade no registro.br não é a mesma da razão social do CNPJ, é necessária a carta de cessão.')
        return valor