private void CopyToClipboard(Vault vault) { PropertyObject po = null; switch (Collection) { case VaultUriCollection.Keys: return; case VaultUriCollection.Certificates: var cb = vault.GetCertificateAsync(ItemName, Version, CancellationToken.None).GetAwaiter().GetResult(); var cert = vault.GetCertificateWithExportableKeysAsync(ItemName, Version, CancellationToken.None).GetAwaiter().GetResult(); po = new PropertyObjectCertificate(cb, cb.Policy, cert, null); break; case VaultUriCollection.Secrets: var s = vault.GetSecretAsync(ItemName, Version, CancellationToken.None).GetAwaiter().GetResult(); po = new PropertyObjectSecret(s, null); break; default: throw new ArgumentOutOfRangeException(nameof(Collection), $"Invalid endpoint {Collection}"); } po.CopyToClipboard(true); }
private static async Task <ListViewItemSecret> NewOrUpdateAsync(ISession session, object originalObject, PropertyObject newObject, CancellationToken cancellationToken) { SecretBundle sOriginal = (SecretBundle)originalObject; PropertyObjectSecret posNew = (PropertyObjectSecret)newObject; SecretBundle s = null; // New secret, secret rename or new value if ((sOriginal == null) || (sOriginal.SecretIdentifier.Name != posNew.Name) || (sOriginal.Value != posNew.RawValue)) { s = await session.CurrentVault.SetSecretAsync(posNew.Name, posNew.RawValue, posNew.ToTagsDictionary(), ContentTypeEnumConverter.GetDescription(posNew.ContentType), posNew.ToSecretAttributes(), cancellationToken); } else // Same secret name and value { s = await session.CurrentVault.UpdateSecretAsync(posNew.Name, null, posNew.ToTagsDictionary(), ContentTypeEnumConverter.GetDescription(posNew.ContentType), posNew.ToSecretAttributes(), cancellationToken); } string oldSecretName = sOriginal?.SecretIdentifier.Name; if ((oldSecretName != null) && (oldSecretName != posNew.Name)) // Delete old secret { await session.CurrentVault.DeleteSecretAsync(oldSecretName, cancellationToken); } return(new ListViewItemSecret(session, s)); }