Esempio n. 1
0
        /// <summary>
        /// Exports a RawSignedModel into string. Use this method to transmit the card
        /// signing request through the network.
        /// </summary>
        public static string ExportAsString(this RawSignedModel model)
        {
            var rawCardBytes  = Bytes.FromString(model.ExportAsJson());
            var rawCardString = Bytes.ToString(rawCardBytes, StringEncoding.BASE64);

            return(rawCardString);
        }
Esempio n. 2
0
        /// <summary>
        /// Publishes card in Virgil Cards service.
        /// </summary>
        /// <param name="request">An instance of <see cref="RawSignedModel"/> class</param>
        /// <param name="token">The string representation of <see cref="Jwt"/> token.</param>
        /// <returns>published raw card.</returns>
        ///
        /// <example>
        /// <code>
        /// var crypto = new VirgilCrypto();
        /// var keyPair = crypto.GenerateKeys();
        /// var rawCardContent = new RawCardContent()
        /// {
        ///    CreatedAt = DateTime.UtcNow,
        ///    Identity = "test",
        ///    PublicKey = crypto.ExportPublicKey(keyPair.PublicKey),
        ///    Version = "5.0"
        /// };
        /// var model = new RawSignedModel() { ContentSnapshot = SnapshotUtils.TakeSnapshot(rawCardContent) };
        ///
        /// var signer = new ModelSigner(new VirgilCardCrypto());
        /// signer.SelfSign(model, keyPair.PrivateKey);
        ///
        /// var jwtGenerator = new JwtGenerator(
        ///    "[APP_ID_HERE]",
        ///    "[API_PRIVATE_KEY_HERE]",
        ///    "[API_PUBLIC_KEY_ID_HERE]",
        ///    TimeSpan.FromMinutes(10),
        ///    new VirgilAccessTokenSigner()
        /// );
        /// var token = jwtGenerator.GenerateToken(rawCardContent.Identity);
        ///
        /// var client  = new CardsClient();
        /// await client.PublishCardAsync(model, token.ToString());
        /// </code>
        /// </example>
        public async Task <RawSignedModel> PublishCardAsync(RawSignedModel request, string token)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (String.IsNullOrWhiteSpace(token))
            {
                throw new ArgumentNullException(nameof(token));
            }

            var postRequest = HttpRequest.Create(HttpRequestMethod.Post)
                              .WithAuthorization(token)
                              .WithEndpoint("/card/v5")
                              .WithBody(this.serializer, request);

            var response = await this.connection.SendAsync(postRequest).ConfigureAwait(false);

            return(response
                   .HandleError(this.serializer)
                   .Parse <RawSignedModel>(this.serializer));
        }
Esempio n. 3
0
 /// <summary>
 /// Exports a RawSignedModel into json. Use this method to transmit the card
 /// signing request through the network.
 /// </summary>
 public static string ExportAsJson(this RawSignedModel model)
 {
     return(Configuration.Serializer.Serialize(model));
 }