in sdk/keyvault/azure-security-keyvault-certificates/src/certificate_client_models.cpp [473:661]
_detail::Models::CertificatePolicy CertificatePolicy::ToCertificatePolicy() const
{
_detail::Models::CertificatePolicy result;
if (Enabled.HasValue() || CreatedOn.HasValue() || UpdatedOn.HasValue())
{
_detail::Models::CertificateAttributes attributes;
if (CreatedOn.HasValue())
{
attributes.Created = CreatedOn.Value();
}
if (Enabled.HasValue())
{
attributes.Enabled = Enabled.Value();
}
// attributes.Expires = ;
// attributes.NotBefore = ;
// attributes.RecoverableDays = ;
// attributes.RecoveryLevel = ;
if (UpdatedOn.HasValue())
{
attributes.Updated = UpdatedOn.Value();
}
result.Attributes = attributes;
}
if (IssuerName.HasValue() || CertificateTransparency.HasValue() || CertificateType.HasValue())
{
_detail::Models::IssuerParameters issuer;
if (IssuerName.HasValue())
{
issuer.Name = IssuerName.Value();
}
if (CertificateTransparency.HasValue())
{
issuer.CertificateTransparency = CertificateTransparency.Value();
}
if (CertificateType.HasValue())
{
issuer.CertificateType = CertificateType.Value();
}
result.IssuerParameters = issuer;
}
if (Exportable.HasValue() || ReuseKey.HasValue() || KeySize.HasValue() || KeyCurveName.HasValue()
|| KeyType.HasValue())
{
_detail::Models::KeyProperties keyProperties;
if (Exportable.HasValue())
{
keyProperties.Exportable = Exportable.Value();
}
if (ReuseKey.HasValue())
{
keyProperties.ReuseKey = ReuseKey.Value();
}
if (KeySize.HasValue())
{
keyProperties.KeySize = KeySize.Value();
}
if (KeyCurveName.HasValue())
{
keyProperties.Curve = _detail::Models::JsonWebKeyCurveName(KeyCurveName.Value().ToString());
}
if (KeyType.HasValue())
{
keyProperties.KeyType = _detail::Models::JsonWebKeyType(KeyType.Value().ToString());
}
result.KeyProperties = keyProperties;
}
if (LifetimeActions.size() > 0)
{
std::vector<_detail::Models::LifetimeAction> actions;
for (auto const& item : LifetimeActions)
{
_detail::Models::LifetimeAction action;
if (item.DaysBeforeExpiry.HasValue() || item.LifetimePercentage.HasValue())
{
_detail::Models::Trigger trigger;
if (item.DaysBeforeExpiry.HasValue())
{
trigger.DaysBeforeExpiry = item.DaysBeforeExpiry.Value();
}
if (item.LifetimePercentage.HasValue())
{
trigger.LifetimePercentage = item.LifetimePercentage.Value();
}
action.Trigger = trigger;
}
_detail::Models::Action actionType;
actionType.ActionType = _detail::Models::CertificatePolicyAction(item.Action.ToString());
action.Action = actionType;
actions.emplace_back(action);
}
result.LifetimeActions = actions;
}
if (ContentType.HasValue())
{
_detail::Models::SecretProperties secretProps;
secretProps.ContentType = ContentType.Value().ToString();
result.SecretProperties = secretProps;
}
if (Subject.size() > 0 || EnhancedKeyUsage.size() > 0 || KeyUsage.size() > 0
|| SubjectAlternativeNames.Emails.size() > 0 || SubjectAlternativeNames.DnsNames.size() > 0
|| SubjectAlternativeNames.UserPrincipalNames.size() > 0 || ValidityInMonths.HasValue())
{
_detail::Models::X509CertificateProperties x509Props;
if (Subject.size() > 0)
{
x509Props.Subject = Subject;
}
if (EnhancedKeyUsage.size() > 0)
{
std::vector<std::string> keyUsages;
for (auto const& item : EnhancedKeyUsage)
{
keyUsages.emplace_back(item);
}
x509Props.Ekus = keyUsages;
}
if (KeyUsage.size() > 0)
{
std::vector<_detail::Models::KeyUsageType> keyUsages;
for (auto const& item : KeyUsage)
{
if (item == CertificateKeyUsage::DigitalSignature)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::DigitalSignatureValue));
}
else if (item == CertificateKeyUsage::NonRepudiation)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::NonRepudiationValue));
}
else if (item == CertificateKeyUsage::KeyEncipherment)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::KeyEnciphermentValue));
}
else if (item == CertificateKeyUsage::DataEncipherment)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::DataEnciphermentValue));
}
else if (item == CertificateKeyUsage::KeyAgreement)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::KeyAgreementValue));
}
else if (item == CertificateKeyUsage::KeyCertSign)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::KeyCertSignValue));
}
else if (item == CertificateKeyUsage::CrlSign)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::CrlSignValue));
}
else if (item == CertificateKeyUsage::EncipherOnly)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::EncipherOnlyValue));
}
else if (item == CertificateKeyUsage::DecipherOnly)
{
keyUsages.emplace_back(_detail::Models::KeyUsageType(_detail::DecipherOnlyValue));
}
}
x509Props.KeyUsage = keyUsages;
}
if (SubjectAlternativeNames.Emails.size() > 0 || SubjectAlternativeNames.DnsNames.size() > 0
|| SubjectAlternativeNames.UserPrincipalNames.size() > 0)
{
_detail::Models::SubjectAlternativeNames subjectAlternativeNames;
if (SubjectAlternativeNames.Emails.size() > 0)
{
subjectAlternativeNames.Emails = SubjectAlternativeNames.Emails;
}
if (SubjectAlternativeNames.DnsNames.size() > 0)
{
subjectAlternativeNames.DnsNames = SubjectAlternativeNames.DnsNames;
}
if (SubjectAlternativeNames.UserPrincipalNames.size() > 0)
{
subjectAlternativeNames.Upns = SubjectAlternativeNames.UserPrincipalNames;
}
x509Props.SubjectAlternativeNames = subjectAlternativeNames;
}
if (ValidityInMonths.HasValue())
{
x509Props.ValidityInMonths = ValidityInMonths.Value();
}
result.X509CertificateProperties = x509Props;
}
return result;
}