X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2FX509.cpp;h=92d7773f22f4cbff36b0b5cb4a179f030018087a;hb=7a72391242e316a16992e0874a118999486afb87;hp=a0c11711752bae8ad7e8daeecc605d007a75b230;hpb=e6d1df050e9d01fb289aad857ab9e26d54b0d95e;p=cassiopeia.git diff --git a/src/X509.cpp b/src/X509.cpp index a0c1171..92d7773 100644 --- a/src/X509.cpp +++ b/src/X509.cpp @@ -221,12 +221,26 @@ void X509Cert::setExtensions( std::shared_ptr caCert, std::vector X509Cert::sign( std::shared_ptr caKey ) { +std::shared_ptr X509Cert::sign( std::shared_ptr caKey, std::string signAlg ) { if( !X509_set_subject_name( target.get(), subject.get() ) ) { throw "error setting subject"; } - if( !X509_sign( target.get(), caKey.get(), EVP_sha512() ) ) { + const EVP_MD* md; + + if( signAlg == "sha512" ) { + md = EVP_sha512(); + } else if( signAlg == "sha384" ) { + md = EVP_sha384(); + } else if( signAlg == "sha256" ) { + md = EVP_sha256(); + } else if( signAlg == "sha1" ) { + md = EVP_sha1(); + } else { + throw "Unknown md-type"; + } + + if( !X509_sign( target.get(), caKey.get(), md ) ) { throw "Signing failed."; }