Fix header files so that any one can be included first.
[oweals/openssl.git] / crypto / x509 / x509_req.c
index c1f10c2428616a64fd5b93fede1be217aeebd81a..2ef94decd1446107576699d394f3cb88b5100993 100644 (file)
@@ -1,5 +1,5 @@
 /* crypto/x509/x509_req.c */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
  * This package is an SSL implementation written
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include "bn.h"
-#include "evp.h"
-#include "asn1.h"
-#include "x509.h"
-#include "objects.h"
-#include "buffer.h"
-#include "pem.h"
+#include <openssl/bn.h>
+#include <openssl/evp.h>
+#include <openssl/asn1.h>
+#include <openssl/x509.h>
+#include <openssl/objects.h>
+#include <openssl/buffer.h>
+#include <openssl/pem.h>
 
-X509_REQ *X509_to_X509_REQ(x,pkey)
-X509 *x;
-EVP_PKEY *pkey;
+X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, EVP_MD *md)
        {
        X509_REQ *ret;
        X509_REQ_INFO *ri;
        int i;
+       EVP_PKEY *pktmp;
 
        ret=X509_REQ_new();
        if (ret == NULL)
@@ -91,21 +90,26 @@ EVP_PKEY *pkey;
        if (!X509_REQ_set_subject_name(ret,X509_get_subject_name(x)))
                goto err;
 
-       i=X509_REQ_set_pubkey(ret,X509_get_pubkey(x));
+       pktmp = X509_get_pubkey(x);
+       i=X509_REQ_set_pubkey(ret,pktmp);
+       EVP_PKEY_free(pktmp);
        if (!i) goto err;
 
-/* NEEDS FIXING EAY EAY EAY */
-       if (!X509_REQ_sign(ret,pkey,EVP_md5()))
-               goto err;
+       if (pkey != NULL)
+               {
+               if (!X509_REQ_sign(ret,pkey,md))
+                       goto err;
+               }
        return(ret);
 err:
        X509_REQ_free(ret);
        return(NULL);
        }
 
-EVP_PKEY *X509_REQ_get_pubkey(req)
-X509_REQ *req;
+EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req)
        {
+       if ((req == NULL) || (req->req_info == NULL))
+               return(NULL);
        return(X509_PUBKEY_get(req->req_info->pubkey));
        }