public byte[] Encode()
        {
            // Normalize (trim, remove punctuations and diacritics (accents), pad or crop if needed)

            var normInstituicaoEnsino       = normalizeText(InstituicaoEnsino, 40);
            var normGrauEscolaridade        = normalizeText(GrauEscolaridade, 15);
            var normCurso                   = normalizeText(Curso, 30);
            var normInstituicaoEnsinoCidade = normalizeText(InstituicaoEnsinoCidade, 20);
            var normInstituicaoEnsinoUF     = normalizeText(InstituicaoEnsinoUF, 2);

            // Encode string

            var content = new StringBuilder();

            content.Append(normInstituicaoEnsino);
            content.Append(normGrauEscolaridade);
            content.Append(normCurso);

            /*
             * "As 10 (dez) posições das informações sobre órgão emissor do RG e UF referem-se
             * ao tamanho máximo, devendo ser utilizadas apenas as posições necessárias
             * ao seu armazenamento, da esquerda para a direita. O mesmo se aplica às 22
             * (vinte e duas) posições das informações sobre município e UF da instituição de
             * ensino;"
             */
            content.Append(normInstituicaoEnsinoCidade.Trim());
            content.Append(normInstituicaoEnsinoUF.Trim());

            // Encode string as PrintableString

            return(Asn1Util.DerEncodePrintableString(content.ToString()));
        }
        public byte[] Encode()
        {
            // Normalize (trim, remove punctuations and diacritics (accents), pad or crop if needed)

            var normCpf         = normalizeNumber(Cpf, 11);
            var normMatricula   = normalizeNumber(Matricula, 15);
            var normRG          = normalizeNumber(RG, 15);
            var normRGEmissor   = normalizeText(RGEmissor, 8);
            var normRGEmissorUF = normalizeText(RGEmissorUF, 2);

            // Encode string

            var content = new StringBuilder();

            content.Append(DataNascimento.ToString("ddMMyyyy"));
            content.Append(normCpf);
            content.Append(normMatricula);
            content.Append(normRG);

            /**
             * "Se o número do RG não estiver disponível, não se deve preencher o campo de
             * órgão emissor e UF;"
             *
             * "As 10 (dez) posições das informações sobre órgão emissor do RG e UF referem-se
             * ao tamanho máximo, devendo ser utilizadas apenas as posições necessárias
             * ao seu armazenamento, da esquerda para a direita. O mesmo se aplica às 22
             * (vinte e duas) posições das informações sobre município e UF da instituição de
             * ensino;
             */
            if (normRG != "000000000000000")
            {
                content.Append(normRGEmissor.Trim());
                content.Append(normRGEmissorUF.Trim());
            }

            // Encode string as PrintableString

            return(Asn1Util.DerEncodePrintableString(content.ToString()));
        }