return pk;
}
-std::shared_ptr<X509Req> X509Req::parse( std::string filename ) {
- std::shared_ptr<BIO> in = std::shared_ptr<BIO>( BIO_new_mem_buf( const_cast<char*>( filename.c_str() ), -1 ), BIO_free );
+std::shared_ptr<X509Req> X509Req::parse( std::string content ) {
+ std::shared_ptr<BIO> in = std::shared_ptr<BIO>( BIO_new_mem_buf( const_cast<char*>( content.c_str() ), -1 ), BIO_free );
X509_REQ* req = PEM_read_bio_X509_REQ( in.get(), NULL, NULL, NULL );
if( !req ) {
X509Req( X509_REQ* csr );
X509Req( std::string spkac );
public:
- static std::shared_ptr<X509Req> parse( std::string filename );
- static std::shared_ptr<X509Req> parseSPKAC( std::string filename );
+ static std::shared_ptr<X509Req> parse( std::string content );
+ static std::shared_ptr<X509Req> parseSPKAC( std::string content );
int verify();
std::shared_ptr<EVP_PKEY> getPkey();
};
#include "database.h"
#include "mysql.h"
#include "simpleOpensslSigner.h"
+#include "util.h"
#ifdef NO_DAEMON
#define DAEMON false
filename += "/" + std::to_string( serial / 1000 );
mkdir( filename.c_str(), 0755 );
filename += "/" + std::to_string( serial ) + ".crt";
- std::ofstream file;
- file.open( filename.c_str() );
- file << cert.c_str();
- file.close();
+ writeFile( filename, cert );
std::cout << "wrote to " << filename << std::endl;
return filename;
}
}
std::ifstream config;
- if(DAEMON){
- config.open( "/etc/cacert/cassiopeia/cassiopeia.conf" );
- }else{
- config.open( "config.txt" );
+
+ if( DAEMON ) {
+ config.open( "/etc/cacert/cassiopeia/cassiopeia.conf" );
+ } else {
+ config.open( "config.txt" );
}
if( !config.is_open() ) {
}
std::cout << "Found a CSR at '" << cert->csr << "' signing" << std::endl;
- std::ifstream t( cert->csr );
- cert->csr_content = std::string( std::istreambuf_iterator<char>( t ), std::istreambuf_iterator<char>() );
+ cert->csr_content = readFile( cert->csr );
std::shared_ptr<SignedCertificate> res = sign->sign( cert );
std::string fn = writeBackFile( atoi( job->target.c_str() ), res->certificate );
#include "simpleOpensslSigner.h"
#include <iostream>
-#include <fstream>
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/x509v3.h>
#include "X509.h"
+#include "util.h"
extern std::vector<Profile> profiles;
}
std::shared_ptr<BIGNUM> SimpleOpensslSigner::nextSerial( uint16_t profile ) {
- std::ifstream serialif( "serial" );
- std::string res;
- serialif >> res;
- serialif.close();
+ std::string res = readFile( "serial" );
BIGNUM* bn = 0;
}
char* serStr = BN_bn2hex( serial.get() );
- std::ofstream serialf( "serial" );
- serialf << serStr;
- serialf.close();
+ writeFile( serStr, "serial" );
OPENSSL_free( serStr );
return std::shared_ptr<BIGNUM>( BN_bin2bn( data.get(), len + 4 + 16 , 0 ), BN_free );
--- /dev/null
+#include "util.h"
+
+#include <fstream>
+
+void writeFile( const std::string& content, const std::string& name ) {
+ std::ofstream file;
+
+ file.open( name );
+ file << content;
+ file.close();
+}
+
+std::string readFile( const std::string& name ) {
+ std::ifstream t( name );
+ std::string res = std::string( std::istreambuf_iterator<char>( t ), std::istreambuf_iterator<char>() );
+ t.close();
+
+ return res;
+}
--- /dev/null
+#pragma once
+
+#include <string>
+
+void writeFile( const std::string& content, const std::string& name );
+std::string readFile( const std::string& name );