Beispiel #1
0
/* This is a variant of gpgsm_print_name sending it output to an estream. */
void
gpgsm_es_print_name2 (estream_t fp, const char *name, int translate)
{
  const unsigned char *s = (const unsigned char *)name;
  int i;

  if (!s)
    {
      es_fputs (_("[Error - No name]"), fp);
    }
  else if (*s == '<')
    {
      const char *s2 = strchr ( (char*)s+1, '>');

      if (s2)
        {
          if (translate)
            es_write_sanitized_utf8_buffer (fp, s + 1, s2 - (char*)s - 1,
                                            NULL, NULL);
          else
            es_write_sanitized (fp, s + 1, s2 - (char*)s - 1, NULL, NULL);
        }
    }
  else if (*s == '(')
    {
      pretty_es_print_sexp (fp, s, gcry_sexp_canon_len (s, 0, NULL, NULL));
    }
  else if (!((*s >= '0' && *s < '9')
             || (*s >= 'A' && *s <= 'Z')
             || (*s >= 'a' && *s <= 'z')))
    es_fputs (_("[Error - invalid encoding]"), fp);
  else
    {
      struct dn_array_s *dn = parse_dn (s);

      if (!dn)
        es_fputs (_("[Error - invalid DN]"), fp);
      else
        {
          print_dn_parts (NULL, fp, dn, translate);
          for (i=0; dn[i].key; i++)
            {
              xfree (dn[i].key);
              xfree (dn[i].value);
            }
          xfree (dn);
        }
    }
}
Beispiel #2
0
/* Format an RFC2253 encoded DN or GeneralName.  Caller needs to
   release the return ed string.  This function will never return
   NULL.  */
char *
gpa_format_dn (const char *name) 
{
  char *retval = NULL;
  
  if (!name)
    retval = g_strdup (_("[Error - No name]"));
  else if (*name == '<')
    {
      const char *s = strchr (name+1, '>');
      if (s)
        retval = g_strndup (name+1, s - (name+1));
    }
  else if (*name == '(')
    retval = g_strdup (_("[Error - Encoding not supported]"));
  else if (g_ascii_isalnum (*name))
    {
      struct dn_array_s *dn;
      int i;

      dn = parse_dn (name);
      if (dn)
        {
          GString *output = g_string_sized_new (strlen (name));
          print_dn_parts (output, dn);          
          retval = g_string_free (output, FALSE);
          for (i=0; dn[i].key; i++)
            {
              g_free (dn[i].key);
              g_free (dn[i].value);
            }
          g_free (dn);
        }
    }
 
  if (!retval)
    retval = g_strdup (_("[Error - Invalid encoding]"));

  return retval;
}
Beispiel #3
0
Kleo::DN::DN( const char * utf8DN ) {
  d = new Private();
  d->ref();
  if ( utf8DN )
    d->attributes = parse_dn( (const unsigned char*)utf8DN );
}
Beispiel #4
0
Kleo::DN::DN( const QString & dn ) {
  d = new Private();
  d->ref();
  d->attributes = parse_dn( dn );
}
Beispiel #5
0
static QValueVector<Kleo::DN::Attribute>
parse_dn( const QString & dn ) {
  return parse_dn( (const unsigned char*)dn.utf8().data() );
}