return "HMAC";
case XSECCryptoKey::KEY_SYMMETRIC: {
- XSECCryptoSymmetricKey* skey = static_cast<XSECCryptoSymmetricKey*>(m_key);
- switch (skey->getSymmetricKeyType()) {
+ switch (static_cast<XSECCryptoSymmetricKey*>(m_key)->getSymmetricKeyType()) {
case XSECCryptoSymmetricKey::KEY_3DES_192:
return "DESede";
case XSECCryptoSymmetricKey::KEY_AES_128:
}
case XSECCryptoKey::KEY_SYMMETRIC: {
- XSECCryptoSymmetricKey* skey = static_cast<XSECCryptoSymmetricKey*>(m_key);
- switch (skey->getSymmetricKeyType()) {
+ switch (static_cast<XSECCryptoSymmetricKey*>(m_key)->getSymmetricKeyType()) {
case XSECCryptoSymmetricKey::KEY_3DES_192:
return 192;
case XSECCryptoSymmetricKey::KEY_AES_128:
KeyInfo* getKeyInfo(bool compact=false) const {
KeyInfo* ret = m_credctx->getKeyInfo() ? m_credctx->getKeyInfo()->cloneKeyInfo() : NULL;
- if (ret && compact) {
- ret->getKeyValues().clear();
- ret->getSPKIDatas().clear();
- ret->getPGPDatas().clear();
- ret->getUnknownXMLObjects().clear();
- const vector<X509Data*> x509Datas=const_cast<const KeyInfo*>(ret)->getX509Datas();
- for (vector<X509Data*>::const_iterator x=x509Datas.begin(); x!=x509Datas.end(); ++x) {
- (*x)->getX509Certificates().clear();
- (*x)->getX509CRLs().clear();
- (*x)->getUnknownXMLObjects().clear();
+ if (ret) {
+ ret->setId(NULL);
+ ret->getRetrievalMethods().clear();
+ if (compact) {
+ ret->getKeyValues().clear();
+ ret->getSPKIDatas().clear();
+ ret->getPGPDatas().clear();
+ ret->getUnknownXMLObjects().clear();
+ VectorOf(X509Data) x509Datas=ret->getX509Datas();
+ for (VectorOf(X509Data)::size_type pos = 0; pos < x509Datas.size();) {
+ x509Datas[pos]->getX509Certificates().clear();
+ x509Datas[pos]->getX509CRLs().clear();
+ x509Datas[pos]->getUnknownXMLObjects().clear();
+ if (x509Datas[pos]->hasChildren())
+ ++pos;
+ else
+ x509Datas.erase(x509Datas.begin() + pos);
+ }
}
}
+ if (!ret->hasChildren()) {
+ delete ret;
+ ret = NULL;
+ }
return ret;
}