private void ReadX509CertificateProperties(JsonElement json) { foreach (JsonProperty prop in json.EnumerateObject()) { switch (prop.Name) { case SubjectPropertyName: Subject = prop.Value.GetString(); break; case SansPropertyName: SubjectAlternativeNames = new SubjectAlternativeNames(); ((IJsonDeserializable)SubjectAlternativeNames).ReadProperties(prop.Value); break; case KeyUsagePropertyName: foreach (JsonElement usageElem in prop.Value.EnumerateArray()) { KeyUsage.Add(usageElem.GetString()); } break; case EkusPropertyName: foreach (JsonElement usageElem in prop.Value.EnumerateArray()) { EnhancedKeyUsage.Add(usageElem.GetString()); } break; case ValidityMonthsPropertyName: ValidityInMonths = prop.Value.GetInt32(); break; } } }
private void WriteX509CertificateProperties(Utf8JsonWriter json) { if (Subject != null) { json.WriteString(s_subjectPropertyNameBytes, Subject); } if (SubjectAlternativeNames != null) { json.WriteStartObject(s_sansPropertyNameBytes); ((IJsonSerializable)SubjectAlternativeNames).WriteProperties(json); json.WriteEndObject(); } if (!KeyUsage.IsNullOrEmpty()) { json.WriteStartArray(s_keyUsagePropertyNameBytes); foreach (CertificateKeyUsage usage in KeyUsage) { json.WriteStringValue(usage.ToString()); } json.WriteEndArray(); } if (!EnhancedKeyUsage.IsNullOrEmpty()) { json.WriteStartArray(s_ekusPropertyNameBytes); foreach (var usage in EnhancedKeyUsage) { json.WriteStringValue(usage); } json.WriteEndArray(); } if (ValidityInMonths.HasValue) { json.WriteNumber(s_validityMonthsPropertyNameBytes, ValidityInMonths.Value); } }
void IJsonSerializable.WriteProperties(Utf8JsonWriter json) { // Key Props if (KeyType.HasValue || KeyCurveName.HasValue || KeySize.HasValue) { json.WriteStartObject(s_keyPropsPropertyNameBytes); WriteKeyProperties(json); json.WriteEndObject(); } // Secret Props if (ContentType.HasValue) { json.WriteStartObject(s_secretPropsPropertyNameBytes); WriteSecretProperties(json); json.WriteEndObject(); } // X509 Props if (Subject != null || SubjectAlternativeNames != null || !KeyUsage.IsNullOrEmpty() || !EnhancedKeyUsage.IsNullOrEmpty() || ValidityInMonths.HasValue) { json.WriteStartObject(s_x509PropsPropertyNameBytes); WriteX509CertificateProperties(json); json.WriteEndObject(); } // Issuer Props if (IssuerName != null || CertificateType != null || CertificateTransparency.HasValue) { json.WriteStartObject(s_issuerPropertyNameBytes); WriteIssuerProperties(json); json.WriteEndObject(); } if (Enabled.HasValue) { json.WriteStartObject(s_attributesPropertyNameBytes); WriteAttributesProperties(json); json.WriteEndObject(); } if (!LifetimeActions.IsNullOrEmpty()) { json.WriteStartArray(s_lifetimeActionsPropertyNameBytes); foreach (LifetimeAction action in LifetimeActions) { if (action != null) { json.WriteStartObject(); ((IJsonSerializable)action).WriteProperties(json); json.WriteEndObject(); } } json.WriteEndArray(); } }