Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

Changes between Version 38 and Version 39 of CertMgr


Ignore:
Timestamp:
Jun 19, 2007, 3:48:36 PM (17 years ago)
Author:
wehlhard
Comment:

fix terminology

Legend:

Unmodified
Added
Removed
Modified
  • CertMgr

    v38 v39  
    55
    66= Branch =
    7 im.pidgin.soc.2007.certmgr
     7im.pidgin.soc.2007.certmgr> gnutls_x509_crt_fmt_t
     8
     9
    810
    911= Handy-dandy overview =
    1012== SSL: The Connection Process ==
    11  1. purple_ssl_connect called, and the "tls_peers" CertificateAuthorizer is provided to it as the method to use for cert checking
     13 1. purple_ssl_connect called, and the "tls_peers" CertificateVerifier is provided to it as the method to use for cert checking
    1214 2. ssl_connect looks up the "x509" CertificateScheme, making sure that it is loaded
    1315 3. ssl_connect fetches a the host's certificate
    14  4. ssl_connect asks the "tls_peers" CertificateAuthorizer for verification of the certificate.
    15  5. The tls_peers CertificateAuthorizer sees if the get_unique_id(cert) can be found within the pool "tls_servers". If so, the certificate is considered Authenticated, and control returns to ssl_connect, which proceeds to the Hostname Check.
    16  6. If the certificate cannot be found in the "tls_servers" pool, the tls_peers Authorizer then checks the "tls_ca" pool to see if the certificate chain (using get_signer_unique_id(cert)) leads to any certificates in the "tls_ca" pool. If it does find such a certificate, it uses the check_signature function to verify the signature chain, and if THAT passes, control returns to ssl_connect, which proceeds to the Hostname Check.
    17  7. If the tls_peers CertAuthorizer finds an invalid (apparently attempted forged) signature, the connection fails and the user is given a popup detailing the reason.
    18  8. If the tls_peers CertAuthorizer fails to find any appropriate signers in the "tls_ca" or "tls_servers" pool,  the user is prompted with the certificate details given by get_verification_data. If the certificate passes user prompting, tls_peers->bless_certificate is called.
     16 4. ssl_connect asks the "tls_peers" CertificateVerifier for verification of the certificate.
     17 5. The tls_peers CertificateVerifier sees if the get_unique_id(cert) can be found within the pool "tls_servers". If so, the certificate is considered Verified, and control returns to ssl_connect, which proceeds to the Hostname Check.
     18 6. If the certificate cannot be found in the "tls_servers" pool, the tls_peers Verifier then checks the "tls_ca" pool to see if the certificate chain (using get_signer_unique_id(cert)) leads to any certificates in the "tls_ca" pool. If it does find such a certificate, it uses the check_signature function to verify the signature chain, and if THAT passes, control returns to ssl_connect, which proceeds to the Hostname Check.
     19 7. If the tls_peers CertVerifier finds an invalid (apparently attempted forged) signature, the connection fails and the user is given a popup detailing the reason.
     20 8. If the tls_peers CertVerifier fails to find any appropriate signers in the "tls_ca" or "tls_servers" pool,  the user is prompted with the certificate details given by get_verification_data. If the certificate passes user prompting, tls_peers->bless_certificate is called.
    1921 9. If tls_peers finds an expired certificate or any other problem, the connection is aborted with an error.
    2022 10. We shouldn't get to step 10.
     
    2426 1. ssl_connect checks that the certificate Common Name matches the hostname being connected to. If it matches, it completes the connection initialization. The hostname check may not always work, though, so:
    2527 2. If the hostname check fails, ssl_connect will prompt the user with the certificate data and a warning that the hostname check failed.
    26  3. If the user authorizes the certificate anyways, ssl_connect calls bless_certificate in the tls_peers CertificateAuthorizor, which adds it to the "tls_peers" pool. The connection initialization is then completed. (The exact action at this step is not really laid in stone, though)
     28 3. If the user accepts the certificate anyways, ssl_connect calls bless_certificate in the tls_peers CertificateVerifier, which adds it to the "tls_peers" pool. The connection initialization is then completed. (The exact action at this step is not really laid in stone, though)
    2729
    2830== CertificateScheme API  ==
     
    5860 * store_certificate(Certificate) - overwrites previous certificate by unique_id if it exists
    5961
    60 === struct CertificateAuthorizer ===
     62=== struct CertificateVerifier ===
    6163 * char * name - unique identifier ("tls_peers", "silc_servers", etc.)
    62  * CertificateScheme * scheme - certificate type this authorizer works with
    63  * bless_certificate - forces the certificate's authorization (just calls CertificatePool->store_certificate, most likely)
    64  * gboolean certificate_is_valid (Certificate) - returns whether a certificate can be verified as usable.
     64 * CertificateScheme * scheme - certificate type this Verifier works with
     65 * bless_certificate - forces the certificate's verification (just calls CertificatePool->store_certificate, most likely)
     66 * gboolean certificate_is_valid (Certificate) - returns whether a certificate can be verified as trustworthy.
    6567  * Perhaps it should also take an expected_values argument of the same form as the return value from get_verification_data(Certificate) to specify some values to check (such as Common Name, which maybe ought to be optional?)
    6668
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!