Пример #1
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;

        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;
}
Пример #2
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;
}