/// <summary> /// Generate a short, unique secret, using given sharing parameters. /// /// This is useful for temporary passwords, one-time pads, salts, etc. /// </summary> /// <param name="sharingParams">Sharing parameters. See <see cref="SharingParams"/>.</param> /// <returns>Metadata object related to generated secret.</returns> public GeneratedSecret GenerateSecret(SharingParams sharingParams) { const string urlPartGenerate = "/generate"; var generateUrl = ApiUrl + urlPartGenerate; var postData = SharingParamsToPost(sharingParams); return(ApiPostRequest <GeneratedSecret>(generateUrl, postData)); }
/// <summary> /// Shares secret message, using given sharing parameters. /// </summary> /// <param name="secret">Secret message to share.</param> /// <param name="sharingParams">Sharing parameters. See <see cref="VStepanov.OneTimeSharp.DataStructures.SharingParams"/>.</param> /// <returns>Metadata object related to shared secret.</returns> public SharedSecret ShareSecret(string secret, SharingParams sharingParams) { const string urlPartShare = "/share"; var shareUrl = ApiUrl + urlPartShare; var postData = SharingParamsToPost(sharingParams); postData.Add("secret", secret); return(ApiPostRequest <SharedSecret>(shareUrl, postData)); }
private static Dictionary <string, string> SharingParamsToPost(SharingParams sharingParams) { var postData = new Dictionary <string, string>(); if (sharingParams.Password != null) { postData.Add("passphrase", sharingParams.Password); } if (sharingParams.Ttl != null) { postData.Add("ttl", sharingParams.Ttl); } if (sharingParams.Recipient != null) { postData.Add("recipient", sharingParams.Recipient); } return(postData); }