X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fcrypto%2FX509.cpp;h=7a4314deab9d830a79dfff527afeec82802206d8;hb=e0713d1539887566e0ea7d85942c305ec727c9dd;hp=caa2a9dfe0ff52435570faee628d9a7c8b88f1b0;hpb=44fdd6ec4486e0224d11324383b7a99d89e550d2;p=cassiopeia.git diff --git a/src/crypto/X509.cpp b/src/crypto/X509.cpp index caa2a9d..7a4314d 100644 --- a/src/crypto/X509.cpp +++ b/src/crypto/X509.cpp @@ -11,7 +11,7 @@ X509Req::X509Req( X509_REQ* csr ) : req( csr, X509_REQ_free ) { EVP_PKEY* pkt = X509_REQ_get_pubkey( req.get() ); if( !pkt ) { - throw "Error extracting public key"; + throw std::runtime_error("Error extracting public key"); } pk = std::shared_ptr( pkt, EVP_PKEY_free ); @@ -19,21 +19,21 @@ X509Req::X509Req( X509_REQ* csr ) : req( csr, X509_REQ_free ) { X509Req::X509Req( std::string spkac ) { if( spkac.compare( 0, 6, "SPKAC=" ) != 0 ) { - throw "Error: not a SPKAC"; + throw std::runtime_error("Error: not a SPKAC"); } spkac = spkac.substr( 6 ); NETSCAPE_SPKI* spki_p = NETSCAPE_SPKI_b64_decode( spkac.c_str(), spkac.size() ); if( !spki_p ) { - throw "Error: decode failed"; + throw std::runtime_error("Error: decode failed"); } spki = std::shared_ptr( spki_p, NETSCAPE_SPKI_free ); EVP_PKEY* pkt_p = NETSCAPE_SPKI_get_pubkey( spki.get() ); if( !pkt_p ) { - throw "Error: reading SPKAC Pubkey failed"; + throw std::runtime_error("Error: reading SPKAC Pubkey failed"); } pk = std::shared_ptr( pkt_p, EVP_PKEY_free ); @@ -56,7 +56,7 @@ std::shared_ptr X509Req::parseCSR( std::string content ) { X509_REQ* req = PEM_read_bio_X509_REQ( in.get(), NULL, NULL, NULL ); if( !req ) { - throw "Error parsing CSR"; + throw std::runtime_error("Error parsing CSR"); } return std::shared_ptr( new X509Req( req )); // TODO ask @@ -94,19 +94,19 @@ X509Cert::X509Cert() { X509* c = X509_new(); if( !c ) { - throw "malloc failed"; + throw std::runtime_error("malloc failed"); } target = std::shared_ptr( c, X509_free ); if( !X509_set_version( c, 2 ) ) { - throw "Setting X509-version to 3 failed"; + throw std::runtime_error("Setting X509-version to 3 failed"); } X509_NAME* subjectP = X509_NAME_new(); if( !subjectP ) { - throw "malloc failure in construct."; + throw std::runtime_error("malloc failure in construct."); } subject = std::shared_ptr( subjectP, X509_NAME_free ); @@ -114,13 +114,13 @@ X509Cert::X509Cert() { void X509Cert::addRDN( int nid, std::string data ) { if( ! X509_NAME_add_entry_by_NID( subject.get(), nid, MBSTRING_UTF8, ( unsigned char* )const_cast( data.data() ), data.size(), -1, 0 ) ) { - throw "malloc failure in RDN"; + throw std::runtime_error("malloc failure in RDN"); } } void X509Cert::setIssuerNameFrom( std::shared_ptr caCert ) { if( !X509_set_issuer_name( target.get(), X509_get_subject_name( caCert.get() ) ) ) { - throw "Error setting Issuer name"; + throw std::runtime_error("Error setting Issuer name"); } } @@ -128,7 +128,7 @@ void X509Cert::setPubkeyFrom( std::shared_ptr req ) { std::shared_ptr pktmp = req->getPkey(); if( !X509_set_pubkey( target.get(), pktmp.get() ) ) { - throw "Setting public key failed."; + throw std::runtime_error("Setting public key failed."); } } @@ -171,7 +171,7 @@ static X509_EXTENSION* do_ext_i2d( int ext_nid, int crit, ASN1_VALUE* ext_struc return ext; merr: - throw "memerr"; + throw std::runtime_error("memerr"); } void X509Cert::setExtensions( std::shared_ptr caCert, std::vector>& sans, Profile& prof, std::string crlURL, std::string crtURL ) { @@ -200,7 +200,7 @@ void X509Cert::setExtensions( std::shared_ptr caCert, std::vectortype = name->type == "DNS" ? GEN_DNS : name->type == "email" ? GEN_EMAIL : 0; // GEN_EMAIL; @@ -209,7 +209,7 @@ void X509Cert::setExtensions( std::shared_ptr caCert, std::vectord.ia5 = M_ASN1_IA5STRING_new() ) || !ASN1_STRING_set( gen->d.ia5, name->content.data(), name->content.size() ) ) { GENERAL_NAME_free( gen ); - throw "initing iasting5 failed"; + throw std::runtime_error("initing iasting5 failed"); } sk_GENERAL_NAME_push( gens.get(), gen ); @@ -223,7 +223,7 @@ void X509Cert::setExtensions( std::shared_ptr caCert, std::vector X509Cert::sign( std::shared_ptr caKey, std::string signAlg ) { if( !X509_set_subject_name( target.get(), subject.get() ) ) { - throw "error setting subject"; + throw std::runtime_error("error setting subject"); } const EVP_MD* md; @@ -237,11 +237,11 @@ std::shared_ptr X509Cert::sign( std::shared_ptr caK } else if( signAlg == "sha1" ) { md = EVP_sha1(); } else { - throw "Unknown md-type"; + throw std::runtime_error("Unknown md-type"); } if( !X509_sign( target.get(), caKey.get(), md ) ) { - throw "Signing failed."; + throw std::runtime_error("Signing failed."); } //X509_print_fp( stdout, target.get() ); @@ -249,7 +249,7 @@ std::shared_ptr X509Cert::sign( std::shared_ptr caK std::shared_ptr mem = std::shared_ptr( BIO_new( BIO_s_mem() ), BIO_free ); if( !mem ) { - throw "Failed to allocate memory for the signed certificate."; + throw std::runtime_error("Failed to allocate memory for the signed certificate."); } PEM_write_bio_X509( mem.get(), target.get() ); @@ -263,7 +263,7 @@ std::shared_ptr X509Cert::sign( std::shared_ptr caK std::shared_ptr ser( ASN1_INTEGER_to_BN( target->cert_info->serialNumber, NULL ), BN_free ); if( !ser ) { - throw "Failed to retrieve certificate serial of signed certificate."; + throw std::runtime_error("Failed to retrieve certificate serial of signed certificate."); } std::shared_ptr serStr(