X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fcrypto%2FsimpleOpensslSigner.cpp;h=fa51a9e1ccd85c5c086a323b439c9779d9ea3338;hb=160ba9d844500d1e553a0dab21a4a2a7fabc60d5;hp=7f75142f2f964330a69cf784d9140cfda10b2441;hpb=3c27aae8d1bfbf441c25b273d328d0859022ed60;p=cassiopeia.git diff --git a/src/crypto/simpleOpensslSigner.cpp b/src/crypto/simpleOpensslSigner.cpp index 7f75142..fa51a9e 100644 --- a/src/crypto/simpleOpensslSigner.cpp +++ b/src/crypto/simpleOpensslSigner.cpp @@ -35,7 +35,7 @@ std::pair, std::string> SimpleOpensslSigner::nextSerial( if( res == "" ) { bn = BN_new(); - if( !bn ) { + if( !bn || !BN_hex2bn( &bn, "1" )) { throw "Initing serial failed"; } } else { @@ -72,6 +72,7 @@ std::pair, std::string> SimpleOpensslSigner::nextSerial( std::shared_ptr SimpleOpensslSigner::sign( std::shared_ptr cert ) { std::stringstream signlog; + logger::logger_set log_set_sign({logger::log_target(signlog, logger::level::debug)}, logger::auto_register::on); logger::note( "FINE: Profile name is: ", cert->profile ); @@ -121,7 +122,10 @@ std::shared_ptr SimpleOpensslSigner::sign( std::shared_ptr a : cert->AVAs ) { logger::notef( "INFO: Trying to add RDN: %s: %s", a->name, a->value ); - + if( a-> value == "") { + logger::notef( "INFO: Removing empty RDN: %s", a->name); + continue; + } if( a->name == "CN" ) { c.addRDN( NID_commonName, a->value ); } else if( a->name == "EMAIL" ) { @@ -222,7 +226,7 @@ std::shared_ptr SimpleOpensslSigner::sign( std::shared_ptrca, cert->SANs, prof ); + c.setExtensions( ca->ca, cert->SANs, prof, ca->crlURL, ca->crtURL ); logger::note( "FINE: Setting extensions successful." ); logger::note( "INFO: Generating next Serial Number ..." ); @@ -253,16 +257,20 @@ std::shared_ptr SimpleOpensslSigner::sign( std::shared_ptr, std::string> SimpleOpensslSigner::revoke( std::shared_ptr ca, std::vector serials ) { + logger::note( "revoking" ); std::string crlpath = ca->path + "/ca.crl"; - std::shared_ptr crl( new CRL( crlpath ) ); + auto crl = std::make_shared( crlpath ); std::string date = ""; + logger::note( "adding serials" ); for( std::string serial : serials ) { date = crl->revoke( serial, "" ); } + logger::note( "signing CRL" ); crl->sign( ca ); writeFile( crlpath, crl->toString() ); + logger::note( "wrote CRL" ); return std::pair, std::string>( crl, date ); }