Skip to content

Commit

Permalink
Merge branch 'release'
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Kurilenko authored and Denis Kurilenko committed May 3, 2016
2 parents bdc5659 + a0543f7 commit a94cc83
Show file tree
Hide file tree
Showing 92 changed files with 4,038 additions and 5,092 deletions.
3,063 changes: 1,317 additions & 1,746 deletions Docs/sdk-reference-api.md

Large diffs are not rendered by default.

1,331 changes: 558 additions & 773 deletions Docs/sdk-reference-api.xml

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions Examples/Virgil.Examples.IPMessaging/ChatMember.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ namespace Virgil.Examples.IPMessaging
{
using System;

using Virgil.SDK.TransferObject;
using Virgil.SDK.Models;

public class ChatMember
{
public ChatMember(VirgilCardDto card, byte[] privateKey)
public ChatMember(CardModel card, byte[] privateKey)
{
this.CardId = card.Id;
this.Identity = card.Identity.Value;
this.PublicKey = card.PublicKey.PublicKey;
this.PublicKey = card.PublicKey.Value;
this.PrivateKey = privateKey;
}

Expand Down
40 changes: 23 additions & 17 deletions Examples/Virgil.Examples.IPMessaging/SimpleChat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
using Virgil.Examples.Common;

using Virgil.Crypto;
using Virgil.SDK.Infrastructure;
using Virgil.SDK.TransferObject;
using Virgil.SDK;
using Virgil.SDK.Identities;

public class SimpleChat
{
private static VirgilHub ServiceHub;
private static ServiceHub serviceHub;

private readonly IIPMessagingClient client;
private readonly ChatMember currentMember;
Expand Down Expand Up @@ -75,13 +75,13 @@ private async Task OnMessageSend(string message)
/// </summary>
private async Task OnMessageRecived(string sender, string message)
{
var foundCards = await ServiceHub.Cards.Search(sender);
var foundCards = await serviceHub.Cards.Search(sender);
var senderCard = foundCards.Single();

var encryptedModel = JsonConvert.DeserializeObject<EncryptedMessageModel>(message);

var isValid = CryptoHelper.Verify(encryptedModel.Message,
encryptedModel.Sign, senderCard.PublicKey.PublicKey);
encryptedModel.Sign, senderCard.PublicKey.Value);

if (!isValid)
{
Expand All @@ -101,15 +101,15 @@ private async Task<IDictionary<string, byte[]>> GetChannelRecipients()
{
var channelMembers = await this.channel.GetMembers();
var cardsTasks = channelMembers
.Select(cm => ServiceHub.Cards.Search(cm, includeUnconfirmed: true))
.Select(cm => serviceHub.Cards.Search(cm, includeUnconfirmed: true))
.ToList();

await Task.WhenAll(cardsTasks);

var recipients = cardsTasks.Select(ct => ct.Result)
.Where(it => it.Any())
.Select(it => it.First())
.ToDictionary(c => c.Id.ToString(), c => c.PublicKey.PublicKey);
.ToDictionary(c => c.Id.ToString(), c => c.PublicKey.Value);

return recipients;
}
Expand All @@ -119,7 +119,7 @@ private async Task<IDictionary<string, byte[]>> GetChannelRecipients()
/// </summary>
public static async Task Launch()
{
ServiceHub = VirgilHub.Create(Constants.VirgilSimpleChatAccessToken);
serviceHub = ServiceHub.Create(Constants.VirgilSimpleChatAccessToken);

var emailAddress = Param<string>.Mandatory("Enter Email Address").WaitInput();
var chatMember = await Authorize(emailAddress);
Expand All @@ -138,7 +138,7 @@ public static async Task Launch()
private static async Task<ChatMember> Authorize(string emailAddress)
{
// search the card by email identity on Virgil Keys service.
var foundCards = await ServiceHub.Cards.Search(emailAddress, includeUnconfirmed: true);
var foundCards = await serviceHub.Cards.Search(emailAddress, includeUnconfirmed: true);
var theCard = foundCards.ToList().SingleOrDefault();

// The app is verifying whether the user really owns the provided email
Expand All @@ -151,20 +151,18 @@ private static async Task<ChatMember> Authorize(string emailAddress)
return await Register(emailAddress);
}

var identityResponce = await ServiceHub.Identity
.Verify(emailAddress, IdentityType.Email);
var emailVerifier = await serviceHub.Identity.VerifyEmail(emailAddress);

Console.WriteLine("\nThe email with confirmation code has been sent to your email address. Please check it!\n");

var confirmationCode =
Param<string>.Mandatory("Enter Code: ").WaitInput();

var identityToken = await ServiceHub.Identity
.Confirm(identityResponce.ActionId, confirmationCode);
var identityInfo = await emailVerifier.Confirm(confirmationCode);

Console.WriteLine("\nLoading member's keys...\n");

var privateKeyResult = await ServiceHub.PrivateKeys.Get(theCard.Id, identityToken);
var privateKeyResult = await serviceHub.PrivateKeys.Get(theCard.Id, identityInfo);
var privateKey = privateKeyResult.PrivateKey;

return new ChatMember(theCard, privateKey);
Expand All @@ -186,13 +184,21 @@ private static async Task<ChatMember> Register(string email)
// be used for the public key identification and searching
// for it in the Public Keys Service.

var card = await ServiceHub.Cards
.Create(email, IdentityType.Email, keyPair.PublicKey(), keyPair.PrivateKey());
var emailVerifier = await serviceHub.Identity.VerifyEmail(email);

Console.WriteLine("\nThe email with confirmation code has been sent to your email address. Please check it!\n");

var confirmationCode =
Param<string>.Mandatory("Enter Code: ").WaitInput();

var identity = await emailVerifier.Confirm(confirmationCode);

var card = await serviceHub.Cards.Create(identity, keyPair.PublicKey(), keyPair.PrivateKey());

// Private key can be added to Virgil Security storage if you want to
// easily synchronise yout private key between devices.

await ServiceHub.PrivateKeys.Stash(card.Id, keyPair.PrivateKey());
await serviceHub.PrivateKeys.Stash(card.Id, keyPair.PrivateKey());

return new ChatMember(card, keyPair.PrivateKey());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="Virgil.Crypto, Version=1.3.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Virgil.Crypto.1.3.4.5\lib\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.dll</HintPath>
<Reference Include="Virgil.Crypto, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Virgil.Crypto.1.5.0\lib\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Virgil.SDK, Version=3.0.11.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Virgil.SDK.3.0.11.0\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\Virgil.SDK.dll</HintPath>
<Reference Include="Virgil.SDK, Version=3.2.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Virgil.SDK.3.2.2\lib\portable45-net45+win8+wpa81\Virgil.SDK.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
Expand All @@ -79,12 +79,12 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Virgil.Crypto.1.3.4.5\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets" Condition="Exists('..\packages\Virgil.Crypto.1.3.4.5\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets')" />
<Import Project="..\packages\Virgil.Crypto.1.5.0\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets" Condition="Exists('..\packages\Virgil.Crypto.1.5.0\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Virgil.Crypto.1.3.4.5\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Virgil.Crypto.1.3.4.5\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets'))" />
<Error Condition="!Exists('..\packages\Virgil.Crypto.1.5.0\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Virgil.Crypto.1.5.0\build\portable-net4+sl4+wp7+win8+wpa81\Virgil.Crypto.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
Expand Down
4 changes: 2 additions & 2 deletions Examples/Virgil.Examples.IPMessaging/packages.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net452" />
<package id="Virgil.Crypto" version="1.3.4.5" targetFramework="net452" />
<package id="Virgil.SDK" version="3.0.11.0" targetFramework="net452" />
<package id="Virgil.Crypto" version="1.5.0" targetFramework="net452" />
<package id="Virgil.SDK" version="3.2.2" targetFramework="net452" />
</packages>
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Virgil Security for .NET/Xamarin
# Virgil Security for .NET/Xamarin [![Build status](https://ci.appveyor.com/api/projects/status/kqs4lqw426gbpccm/branch/release?svg=true)](https://ci.appveyor.com/project/unlim-it/virgil-sdk-net/branch/release) [![Nuget package](https://img.shields.io/nuget/v/Virgil.SDK.svg)](https://www.nuget.org/packages/Virgil.SDK/)


<a href="https://d3js.org"><img width="230px" src="https://github.com/VirgilSecurity/virgil-net/blob/master/logo.png" align="left" hspace="10" vspace="6"></a>

Expand Down
39 changes: 12 additions & 27 deletions SDK/Source/Virgil.SDK.Tests/App.config
Original file line number Diff line number Diff line change
@@ -1,30 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Virgil.SDK.Keys.Tests.Variables" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data>
<userSettings>
<Virgil.SDK.Keys.Tests.Variables>
<setting name="UnconfirmedPersonalCard" serializeAs="String">
<value>{"virgil_card":{"id":"daa70f1f-5ab7-4789-a9da-7de413b4acc9","created_at":"2015-12-21T10:52:56","data":{"hello":"world"},"is_confirmed":false,"hash":"eyJpZCI6ImRhYTcwZjFmLTVhYjctNDc4OS1hOWRhLTdkZTQxM2I0YWNjOSIsImNyZWF0ZWRfYXQiOiIyMDE1LTEyLTIxIDEwOjUyOjU2IiwiZGF0YSI6eyJoZWxsbyI6IndvcmxkIn0sImlzX2NvbmZpcm1lZCI6ZmFsc2UsInB1YmxpY19rZXlfaWQiOiIxNTlkMjBiMS05MTE1LTRlZmEtYmM1Ny1hMTM2MTk0NWYyZWMiLCJpZGVudGl0eV9pZCI6ImUwMjExYmYxLTMxNGQtNDk5OC05ZmRiLWNjNDNiYjJiZjBiNCJ9","public_key":{"id":"159d20b1-9115-4efa-bc57-a1361945f2ec","created_at":"2015-12-21T10:52:56","public_key":"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHYk1CUUdCeXFHU000OUFnRUdDU3NrQXdNQ0NBRUJEUU9CZ2dBRWRBdjQ1V2dYYWpEU0VjclhHazFQcFZZNgp4Q1IxV1MxWTVSZ254eEdxVEkweHU3azlOeCtpN2NsRVloVlF2TUgxd3RpWGtsSmw2R2FRTHUrMUhVbWJEMkkxCnRLUDQyRXFNQ2JSSGR3SzQ5Nms2czZBRlZEN0x2WmVzQmJTQysxd014Vi9zUDlJWmhxTjhxL3hsUVkrN2hPYU8KdkxEWmJJeFc2TVBxdkxHYjdPUT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=="},"identity":{"id":"e0211bf1-314d-4998-9fdb-cc43bb2bf0b4","created_at":"2015-12-21T10:52:56","type":0,"value":"3051b774@mailinator.com","is_confirmed":false}},"private_key":"LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1JSGFBZ0VCQkVCREN1NzJlcUFDSTh3WlZvQkJOQ3lTMVVKSThYOEFhU2YrQXFJaysrdmFOUDdiL0ZUeXVsYVMKN3hBaW5YaVpMbzBMWEFBamI4enpmelgrSlZXL0U1c1BvQXNHQ1Nza0F3TUNDQUVCRGFHQmhRT0JnZ0FFZEF2NAo1V2dYYWpEU0VjclhHazFQcFZZNnhDUjFXUzFZNVJnbnh4R3FUSTB4dTdrOU54K2k3Y2xFWWhWUXZNSDF3dGlYCmtsSmw2R2FRTHUrMUhVbWJEMkkxdEtQNDJFcU1DYlJIZHdLNDk2azZzNkFGVkQ3THZaZXNCYlNDKzF3TXhWL3MKUDlJWmhxTjhxL3hsUVkrN2hPYU92TERaYkl4VzZNUHF2TEdiN09RPQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tCg=="}</value>
</setting>
</Virgil.SDK.Keys.Tests.Variables>
</userSettings>
<appSettings>
<add key="virgil:AppBundleID" value="%APPLICATION_BUNDLE_ID%" />
<add key="virgil:AppAccessToken" value="%APPLICATION_ACCESS_TOKEN%" />
<add key="virgil:AppPublicKey" value="%APPLICATION_PUBLIC_KEY%" />
<add key="virgil:AppPrivateKey" value="%APPLICATION_PRIVATE_KEY%" />
<add key="virgil:AppPrivateKeyPassword" value="%APPLICATION_PRIVATE_KEY_PASSWORD%" />
<add key="virgil:IdentityServiceAddress" value="https://identity.virgilsecurity.com" />
<add key="virgil:PrivateServicesAddress" value="https://keys-private.virgilsecurity.com" />
<add key="virgil:PublicServicesAddress" value="https://keys.virgilsecurity.com" />
<add key="mailinator:AuthToken" value="%MAILINATOR_ACCESS_TOKEN%" />
<add key="mailinator:APIUrl" value="https://api.mailinator.com/api/" />
</appSettings>
</configuration>
Loading

0 comments on commit a94cc83

Please sign in to comment.