A list of small problems and bugs in the current M2Crypto:
I need to look at SSL certificates in some detail, so this
is all about the access functions for certificates.

Bugs:

        1.  Off by one error at "X509.get_ext_count()". Reports
        eight extensions on a certificate that only has seven.
        get_ext_at works for extensions 0..6, then returns
        an undefined for the nonexistent #7.
        Test against "https://www.verisign.com";.
        Entered into Bugzilla as #7717.

        3. /M2Crypto/SSL/Connection.py:147:
        DeprecationWarning: Old style callback, use cb_func(ok, store)
        instead return m2.ssl_connect(self.ssl)
        (Also reported, in Polish, here: 
http://www.mail-archive.com/pld-devel-pl@lists.pld-linux.org/msg12433.html)
        Entered into Bugzilla as #7718.

        4. "close()" on an SSL socket that's just finished certificate
        negotiation hangs, at least on Windows.  "del" does not hang,
        but I don't know if there's a leak problem.
        Not enough info yet to file a bug report.  I might be doing
        something wrong there.  Any known "close" issues?

Other issues:

        1. X509.X509_name.__getattr__:
        Field retrieval from X.509 name items with x509_name_by_nid
        retrieves only first instance of field, not all instances.
        Really should return a list.  The same key is used more
        than once very frequently; these keys aren't unique.
        It's tempting to treat these things like a hash, but they
        don't really work that way.  As for simply iterating through
        the name elements, there's no direct way to just get the
        elements one at a time.   X509_Name has an "entry_count"
        method, but no way to get the Nth entry.

        As a workaround, I'm converting the X508_name to a string with
           subjectstr = peer.get_subject().as_text(
                flags=(m2.XN_FLAG_RFC2253 | m2.ASN1_STRFLGS_UTF8_CONVERT)
                & ~m2.XN_FLAG_DUMP_UNKNOWN_FIELDS)      # in RFC2253 format
        This is safely parseable.  While the default format doesn't have
        escapes around the delimiter characters, with these flags,
        entries are comma-separated with backslash escapes where
        necessary.  This works, unlike the "server()" function in
        Python's built-in SSL, which returns a debug format that
        has the same characters as delimiters and text.

        2. Unclear if M2Crypto's X.509 interface is UTF-8 compatible.
        OpenSSL will return info in UTF-8 if you use the
        ASN1_STRFLGS_UTF8_CONVERT flag on as_text, but unclear if the
        M2 glue code handles this correctly.  Haven't found a UTF8 cert
        to test it on yet.

Other than that, I'm having relatively good results with M2Crypto.

                                        John Nagle
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to