// Set the private key int CertManager::SetPrivateKey(const x509& key) { privateKey_.allocate(key.get_length()); privateKey_.assign(key.get_buffer(), key.get_length()); // set key type if (x509* cert = list_.front()) { TaoCrypt::Source source(cert->get_buffer(), cert->get_length()); TaoCrypt::CertDecoder cd(source, false); cd.DecodeToKey(); if (int err = cd.GetError().What()) return err; if (cd.GetKeyType() == TaoCrypt::RSAk) keyType_ = rsa_sa_algo; else keyType_ = dsa_sa_algo; size_t iSz = strlen(cd.GetIssuer()) + 1; size_t sSz = strlen(cd.GetCommonName()) + 1; ASN1_STRING beforeDate, afterDate; beforeDate.data= (unsigned char *) cd.GetBeforeDate(); beforeDate.type= cd.GetBeforeDateType(); beforeDate.length= strlen((char *) beforeDate.data) + 1; afterDate.data= (unsigned char *) cd.GetAfterDate(); afterDate.type= cd.GetAfterDateType(); afterDate.length= strlen((char *) afterDate.data) + 1; selfX509_ = NEW_YS X509(cd.GetIssuer(), iSz, cd.GetCommonName(), sSz, &beforeDate, &afterDate); } return 0; }
// Set the private key int CertManager::SetPrivateKey(const x509& key) { privateKey_.allocate(key.get_length()); privateKey_.assign(key.get_buffer(), key.get_length()); // set key type if (x509* cert = list_.front()) { TaoCrypt::Source source(cert->get_buffer(), cert->get_length()); TaoCrypt::CertDecoder cd(source, false); cd.DecodeToKey(); if (int err = cd.GetError().What()) return err; if (cd.GetKeyType() == TaoCrypt::RSAk) keyType_ = rsa_sa_algo; else keyType_ = dsa_sa_algo; } return 0; }