/usr/bin/ld: cannot find -lopenssl
this is the error when i have tried to compile the code i attached below i
install the openssl lib in ubuntu 12.10 i use eclipse and add at the linker
setting openssl usr/include/openssl
i don't know how to solve this problem please help

-- 
Warmest regards and best wishes for a good health,*urs sincerely *
*mero*
//============================================================================
// Name        : certificate.cpp
// Author      : Amir
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include "server.h"
#include "client.h"
using namespace std;

int main()
{
	Client clientest;
    Server servertest;


    clientest.SetCert(clientest.MakeSignedCertReq(1,2,90));
	return 0;
}
/*
 * client.cc
 *
 *  Created on: Sep 17, 2014
 *      Author: amirale32
 */

#include "client.h"

 Client :: Client()
 {
	  m_myCertReq = X509_REQ_new();
	  m_myCert = X509_new();
	  m_name = X509_NAME_new();
	  m_rsa_keyPair = RSA_new();
	  m_puk  = EVP_PKEY_new();

	  GenerateRSAKeyPair();
	  SetPublicKey();
 }

 Client :: ~Client()
 {
	  X509_REQ_free(m_myCertReq);
	  X509_free(m_myCert);
	  X509_NAME_free(m_name);
	  RSA_free(m_rsa_keyPair);
	  EVP_PKEY_free(m_puk);
 }

 void
 Client :: GenerateRSAKeyPair ( )
 {
     m_rsa_keyPair = RSA_generate_key(2048,RSA_F4,NULL,NULL);
}

 void
 Client::SetPublicKey()
 {
	 EVP_PKEY_assign_RSA(m_puk,m_rsa_keyPair);
 }

 X509_REQ*
 Client::MakeSignedCertReq(int bits, int serial, int days)
 {
	     X509_REQ_set_pubkey(m_myCertReq,m_puk);
	     m_name=X509_REQ_get_subject_name(m_myCertReq);
	     //X509_NAME_add_entry_by_txt(name,"C",MBSTRING_ASC, "UK", -1, -1, 0);
	     //X509_NAME_add_entry_by_txt(name,"CN",MBSTRING_ASC, "OpenSSL Group", -1, -1, 0);
	     X509_REQ_sign(m_myCertReq,m_puk,EVP_md5());
	     return m_myCertReq;
}

 void
 Client::SetCert(X509_REQ *req)
 {
	 m_myCert =  m_ca->CreateCertificate(m_myCertReq);
 }
/*
 * client.h
 *
 *  Created on: Sep 17, 2014
 *      Author: amirale32
 */

#ifndef CLIENT_H_
#define CLIENT_H_

#include <stdlib.h>
#include <stdio.h>
 #include "openssl/rsa.h"
 #include "openssl/conf.h"
 #include "openssl/x509.h"
#include "server.h"

 class Client
 {
   public:

   Client();
   ~Client();

   void GenerateRSAKeyPair ();
   void SetPublicKey ();

   X509_REQ *MakeSignedCertReq(int bits, int serial, int days);
   void SetCert (X509_REQ *req);

   private:

   X509_REQ   *m_myCertReq;
   X509       *m_myCert;
   X509_NAME  *m_name;
   RSA        *m_rsa_keyPair;
   EVP_PKEY   *m_puk;
   Server     *m_ca;
 };



#endif /* CLIENT_H_ */
#include "server.h"

 Server::Server()
 {
	  m_myCert = X509_new();
	  m_caKeyPairs = RSA_new();
	  m_pukey  = EVP_PKEY_new();
	  GenerateMyKeyPairs();
	  CreateMyCertificate();
	  SetPublicKey();
 }

 Server::~Server()
 {
	 X509_free(m_myCert);
	 RSA_free(m_caKeyPairs);
	 EVP_PKEY_free(m_pukey);
 }

 X509*
 Server::CreateCertificate(X509_REQ* req)
 {
	 X509 *m_req_reply;
	 m_req_reply = X509_new();
	 X509_NAME *subject = NULL;
	 EVP_PKEY *pkey = NULL;
	 X509_NAME *issuerSubject = X509_get_subject_name(m_myCert);
	 X509_set_issuer_name(m_req_reply, issuerSubject);
	    //xn_req = X509_REQ_get_subject_name(req);
	 X509_set_subject_name(m_req_reply, subject);
	 pkey = X509_REQ_get_pubkey(req);
	    //rv = X509_set_pubkey(reqreply, pkey);
	 X509_gmtime_adj(X509_get_notBefore(m_req_reply), 0);
	 X509_gmtime_adj(X509_get_notAfter(m_req_reply), 36400);
	 X509_sign(m_req_reply, pkey, EVP_md5());
	 return m_req_reply;
 }

 void
 Server::CreateMyCertificate()
 {
	 EVP_PKEY_assign_RSA(m_pukey, m_caKeyPairs);
	 ASN1_INTEGER_set(X509_get_serialNumber(m_myCert), 1);
	 X509_gmtime_adj(X509_get_notBefore(m_myCert), 0);
	 X509_gmtime_adj(X509_get_notAfter(m_myCert), 31536000L);
	 X509_set_pubkey(m_myCert, m_pukey);
	 X509_NAME * name;
	 name = X509_get_subject_name(m_myCert);
	 X509_set_issuer_name(m_myCert, name);
	 X509_sign(m_myCert, m_pukey, EVP_md5());
 }

 void
 Server::GenerateMyKeyPairs()
 {
	 m_caKeyPairs = RSA_generate_key(2048,RSA_F4 , NULL , NULL);
}

 void
 Server::SetPublicKey()
 {
	 EVP_PKEY_assign_RSA(m_pukey,m_caKeyPairs);
 }
/*
 * server.cc
 *
 *  Created on: Sep 17, 2014
 *      Author: amirale32
 */




/*
 * server.h
 *
 *  Created on: Sep 17, 2014
 *      Author: amirale32
 */

#ifndef SERVER_H_
#define SERVER_H_

 #include <stdlib.h>
 #include <stdio.h>
 #include "openssl/asn1.h"
 #include "openssl/ssl.h"
 #include "openssl/rsa.h"
 #include "openssl/conf.h"
 #include "openssl/x509.h"

 class Server
 {
 public:

	 Server();
	 ~Server();

	 X509 *CreateCertificate (X509_REQ *req);
	 void CreateMyCertificate();

	 void GenerateMyKeyPairs ( );
	 void SetPublicKey ();

 private:

	 X509       *m_myCert;
	 RSA        *m_caKeyPairs;
	 EVP_PKEY   *m_pukey;
 };



#endif /* SERVER_H_ */

Reply via email to