Add X509_CHECK_FLAG_NEVER_CHECK_SUBJECT flag
[openssl.git] / crypto / asn1 / t_spki.c
index 67b0cc9f00e56479a7605fbcaea4299d27deec0f..206bd24e3949f2de3611cd1adc76543777957644 100644 (file)
@@ -1,6 +1,6 @@
-/* t_spki.c */
-/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
- * project 1999.
+/*
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
+ * 1999.
  */
 /* ====================================================================
  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
@@ -10,7 +10,7 @@
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
+ *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
  */
 
 #include <stdio.h>
-#include "cryptlib.h"
+#include "internal/cryptlib.h"
 #include <openssl/x509.h>
 #include <openssl/asn1.h>
-#include <openssl/rsa.h>
-#include <openssl/dsa.h>
-
-/* Print out an SPKI */
-
-int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki)
-{
-       EVP_PKEY *pkey;
-       ASN1_IA5STRING *chal;
-       int i, n;
-       char *s;
-       BIO_printf(out, "Netscape SPKI:\n");
-       i=OBJ_obj2nid(spki->spkac->pubkey->algor->algorithm);
-       BIO_printf(out,"  Public Key Algorithm: %s\n",
-                               (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i));
-       pkey = X509_PUBKEY_get(spki->spkac->pubkey);
-       if(!pkey) BIO_printf(out, "  Unable to load public key\n");
-       else {
 #ifndef OPENSSL_NO_RSA
-               if (pkey->type == EVP_PKEY_RSA)
-                       {
-                       BIO_printf(out,"  RSA Public Key: (%d bit)\n",
-                               BN_num_bits(pkey->pkey.rsa->n));
-                       RSA_print(out,pkey->pkey.rsa,2);
-                       }
-               else 
+# include <openssl/rsa.h>
 #endif
 #ifndef OPENSSL_NO_DSA
-               if (pkey->type == EVP_PKEY_DSA)
-               {
-               BIO_printf(out,"  DSA Public Key:\n");
-               DSA_print(out,pkey->pkey.dsa,2);
-               }
-               else
-#endif
-#ifndef OPENSSL_NO_EC
-               if (pkey->type == EVP_PKEY_EC)
-               {
-                       BIO_printf(out, "  EC Public Key:\n");
-                       EC_KEY_print(out, pkey->pkey.eckey,2);
-               }
-               else
+# include <openssl/dsa.h>
 #endif
+#include <openssl/bn.h>
+
+/* Print out an SPKI */
 
-                       BIO_printf(out,"  Unknown Public Key:\n");
-               EVP_PKEY_free(pkey);
-       }
-       chal = spki->spkac->challenge;
-       if(chal->length)
-               BIO_printf(out, "  Challenge String: %s\n", chal->data);
-       i=OBJ_obj2nid(spki->sig_algor->algorithm);
-       BIO_printf(out,"  Signature Algorithm: %s",
-                               (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i));
+int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki)
+{
+    EVP_PKEY *pkey;
+    ASN1_IA5STRING *chal;
+    int i, n;
+    char *s;
+    BIO_printf(out, "Netscape SPKI:\n");
+    i = OBJ_obj2nid(spki->spkac->pubkey->algor->algorithm);
+    BIO_printf(out, "  Public Key Algorithm: %s\n",
+               (i == NID_undef) ? "UNKNOWN" : OBJ_nid2ln(i));
+    pkey = X509_PUBKEY_get(spki->spkac->pubkey);
+    if (!pkey)
+        BIO_printf(out, "  Unable to load public key\n");
+    else {
+        EVP_PKEY_print_public(out, pkey, 4, NULL);
+        EVP_PKEY_free(pkey);
+    }
+    chal = spki->spkac->challenge;
+    if (chal->length)
+        BIO_printf(out, "  Challenge String: %s\n", chal->data);
+    i = OBJ_obj2nid(spki->sig_algor.algorithm);
+    BIO_printf(out, "  Signature Algorithm: %s",
+               (i == NID_undef) ? "UNKNOWN" : OBJ_nid2ln(i));
 
-       n=spki->signature->length;
-       s=(char *)spki->signature->data;
-       for (i=0; i<n; i++)
-               {
-               if ((i%18) == 0) BIO_write(out,"\n      ",7);
-               BIO_printf(out,"%02x%s",(unsigned char)s[i],
-                                               ((i+1) == n)?"":":");
-               }
-       BIO_write(out,"\n",1);
-       return 1;
+    n = spki->signature->length;
+    s = (char *)spki->signature->data;
+    for (i = 0; i < n; i++) {
+        if ((i % 18) == 0)
+            BIO_write(out, "\n      ", 7);
+        BIO_printf(out, "%02x%s", (unsigned char)s[i],
+                   ((i + 1) == n) ? "" : ":");
+    }
+    BIO_write(out, "\n", 1);
+    return 1;
 }