Cryptography Reference
In-Depth Information
p = source->children;
q = p->next;
g = q->next;
parse_huge( &target->dsa_parameters.p, p );
parse_huge( &target->dsa_parameters.q, q );
parse_huge( &target->dsa_parameters.g, g );
return 0;
}
To test this, you have to generate your own DSA certifi cate; this was shown
in the section “Using OpenSSL to Generate a DSA KeyPair and Certifi cate”
earlier. Extend the certifi cate display routine just a bit as shown in Listing 5-35,
and you can output the details of this certifi cate:
Listing 5-35: “x509.c” display_x509_certifi cate
static void display_x509_certificate( signed_x509_certificate *certificate )
{
printf( “Public key algorithm: “ );
switch ( certificate->tbsCertificate.subjectPublicKeyInfo.algorithm )
{
case dsa:
printf( “DSA\n” );
printf( “y: “ );
print_huge(
&certificate->tbsCertificate.subjectPublicKeyInfo.dsa_public_key );
printf( “p: “ );
print_huge(
&certificate->tbsCertificate.subjectPublicKeyInfo.dsa_parameters.p );
printf( “q: “ );
print_huge(
&certificate->tbsCertificate.subjectPublicKeyInfo.dsa_parameters.q );
printf( “g: “ );
print_huge(
&certificate->tbsCertificate.subjectPublicKeyInfo.dsa_parameters.g );
break;
switch ( certificate->algorithm )
{
case shaWithDSA:
printf( “SHA-1 with DSA\n” );
break;
}
printf( “Signature value: “ );
 
Search WWH ::




Custom Search