hi again,

here is a dummy example that reads the key usage extension from a
certificate.

thanks Steve.

regards,

aleix

==============================================


int
main(int argc, char** argv)
{
    FILE* in;
    int pos;
    int crit;
    X509* cert;
    X509_EXTENSION* ext;
    ASN1_BIT_STRING* key_usage;
    int digitalSignature, nonRepudiation, keyEncipherment;
    int dataEncipherment, keyAgreement, keyCertSign;

    OpenSSL_add_all_algorithms();

    in = fopen(argv[1], "r");
    if (in == NULL)
    {
        printf("unable to open file %s\n", argv[1]);
        exit(1);
    }

    cert = PEM_read_X509(in, NULL, NULL, NULL);

    if (cert == NULL)
    {
        printf("error reading certificate\n");
        exit(1);
    }
    printf("certificate OK\n");

    pos = X509_get_ext_by_NID(cert, NID_key_usage, -1);
    ext = X509_get_ext(cert, pos);

    if (ext == NULL)
    {
        printf("key usage extension not found!\n");
        exit(1);
    }
    printf("key usage extension found!\n");

    crit = X509_EXTENSION_get_critical(ext);
    printf("critical: %d\n", crit);

    key_usage = (ASN1_BIT_STRING*) X509V3_EXT_d2i(ext);

    digitalSignature = ASN1_BIT_STRING_get_bit(key_usage, 0);
    nonRepudiation = ASN1_BIT_STRING_get_bit(key_usage, 1);
    keyEncipherment = ASN1_BIT_STRING_get_bit(key_usage, 2);
    dataEncipherment = ASN1_BIT_STRING_get_bit(key_usage, 3);
    keyAgreement = ASN1_BIT_STRING_get_bit(key_usage, 4);
    keyCertSign = ASN1_BIT_STRING_get_bit(key_usage, 5);

    printf("digitalSignature: %d\n", digitalSignature);
    printf("nonRepudiation: %d\n", nonRepudiation);
    printf("keyEncipherment: %d\n", keyEncipherment);
    printf("dataEncipherment: %d\n", dataEncipherment);
    printf("keyAgreement: %d\n", keyAgreement);
    printf("keyCertSign: %d\n", keyCertSign);

    EVP_cleanup();
}

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to