Skip to content
This repository has been archived by the owner on Oct 9, 2023. It is now read-only.

Commit

Permalink
Implement Store-Api
Browse files Browse the repository at this point in the history
  • Loading branch information
MarGaaya committed May 29, 2024
1 parent e0715f3 commit 4dfe11a
Show file tree
Hide file tree
Showing 21 changed files with 144 additions and 604 deletions.
37 changes: 37 additions & 0 deletions src/Hyperledger.Aries/AskarStore/DefaultStoreService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using aries_askar_dotnet.AriesAskar;
using aries_askar_dotnet.Models;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace Hyperledger.Aries.AskarStore
{
public class DefaultStoreService : IStoreService
{
public Task<string> GenerateRawKeyAsync(string Seed = null)
{
var key = StoreApi.GenerateRawKeyAsync(Seed);
return key;
}

public async Task<Store> OpenStore(Store store, bool provision = false)
{
if (provision)
{
store = await StoreApi.ProvisionAsync(store.specUri);
}
else
{
store = await StoreApi.OpenAsync(store.specUri);
}

return store;
}

public Task<bool> RemoveStoreAsync(Store store)
{
return StoreApi.CloseAsync(store);
}
}
}
15 changes: 15 additions & 0 deletions src/Hyperledger.Aries/AskarStore/IStoreService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using aries_askar_dotnet.Models;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace Hyperledger.Aries.AskarStore
{
public interface IStoreService
{
Task<bool> RemoveStoreAsync(Store store);
Task<Store> OpenStore(Store store, bool provision =false);
Task<string> GenerateRawKeyAsync(string Seed = null);
}
}
6 changes: 6 additions & 0 deletions src/Hyperledger.Aries/Ledger/V2/DefaultLedgerServiceV2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ public async Task<string> LookupAttributeAsync(IAgentContext agentContext, strin
return result;
}

public async Task<ParseResponseResult> LookupAcceptanceMechanismsAsync(IAgentContext context, string submittedDid)
{
var req = await LedgerApi.BuildGetAcceptanceMechanismsRequestAsync();
var response = await SubmitRequestAsync(context, req);
return ResponseParser.ParseGetSchemaResponse(response);
}
/// <inheritdoc />
public async Task RegisterAttributeAsync(IAgentContext context, string submittedDid, string targetDid, string attributeName,
object value, TransactionCost paymentInfo = null)
Expand Down
14 changes: 14 additions & 0 deletions src/Hyperledger.Aries/Resolver/Abstrations/IResolverService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Hyperledger.Aries.Ledger;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace Hyperledger.Aries.Resolver.Abstrations
{
public interface IResolverService
{
public Task<string> ResolveAsync(PoolAwaitable poolHandle, string did);
public Task<string> DereferenceAsync(PoolAwaitable poolHandle, string did_url);
}
}
1 change: 1 addition & 0 deletions src/Hyperledger.Aries/Resolver/DefaultResolverService.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Hyperledger.Aries.Agents;
using Hyperledger.Aries.Ledger;
using Hyperledger.Aries.Resolver.Abstrations;
using indy_vdr_dotnet.libindy_vdr;
using System;
using System.Collections.Generic;
Expand Down
10 changes: 0 additions & 10 deletions src/Hyperledger.Aries/Resolver/IResolverService.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ namespace Hyperledger.Aries.Revocation.Abstractions
{
public interface IRevocationService
{
Task<RevRegDefResult> RegisterRevocationRegistryDefinition(Profile profile, RevocationRegistryDefinition revRegDef);
public Task CreateAndRegisterRevocationRegistryDefinitionAsync(IAgentContext context, string originDid, CredentialDefinition credDefObject, string credDefId, string tag, RegistryType revRegType, long maxCredNumber, string tailsDirPath);
}
}
47 changes: 47 additions & 0 deletions src/Hyperledger.Aries/Revocation/DefaultRegistryService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using anoncreds_rs_dotnet.Models;
using Hyperledger.Aries.Revocation.Abstractions;
using Hyperledger.Aries.Revocation.Models;
using Hyperledger.Aries.Revocation.Utils;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace Hyperledger.Aries.Revocation
{
public class DefaultRegistryService : IRegistryService
{
private List<BaseAnonCredsRegistrar> registrars;
public async Task<RevRegDefResult> RegisterRevocationRegistryDefinition(RevocationRegistryDefinition revRegDef)
{
RevRegDefResult result;
var registrar = await _registrar_for_identifier(revRegDef.IssuerId);
result = await registrar.RegisterRevocationRegistryDefinition(revRegDef);
return result;
}

public async Task<BaseAnonCredsRegistrar> _registrar_for_identifier(string IssuerId)
{
List<BaseAnonCredsRegistrar> matchingRegistrars = new List<BaseAnonCredsRegistrar>();
foreach (var registrar in registrars)
{
if (await registrar.SupportsAsync(IssuerId))
{
matchingRegistrars.Add(registrar);
}
}

if (matchingRegistrars.Count == 0)
{
throw new AnonCredsRegistrationError($"No registrar available for identifier {IssuerId}");
}

if (matchingRegistrars.Count > 1)
{
throw new AnonCredsRegistrationError($"More than one registrar found for identifier {IssuerId}");
}

return matchingRegistrars[0];
}
}
}
77 changes: 18 additions & 59 deletions src/Hyperledger.Aries/Revocation/DefaultRevocationService.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
using anoncreds_rs_dotnet.Anoncreds;
using anoncreds_rs_dotnet.Models;
using Hyperledger.Aries.Agents;
using Hyperledger.Aries.Configuration;
using Hyperledger.Aries.Contracts;
using Hyperledger.Aries.Extensions;
using Hyperledger.Aries.Models.Records;
using Hyperledger.Aries.Revocation.Abstractions;
using Hyperledger.Aries.Revocation.Models;
using Hyperledger.Aries.Revocation.Utils;
using Hyperledger.Indy.AnonCredsApi;
using indy_vdr_dotnet.libindy_vdr;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
Expand All @@ -15,75 +20,29 @@

namespace Hyperledger.Aries.Revocation
{
public class DefaultRevocationService :IRevocationService
public class DefaultRevocationService : IRevocationService
{
private List<BaseAnonCredsRegistrar> registrars;
private Profile _profile;


public DefaultRevocationService(Profile profile)
{
_profile = profile;
}

public Profile Profile
{
// Accessor for the profile instance

get
{
if (!(_profile is AskarAnoncredsProfile))
{
throw new Exception("AnonCreds interface requires AskarAnoncreds profile");
}

return _profile;
}
}
public async Task<RevRegDefResult> CreateAndRegisterRevocationRegistryDefinitionAsync(Profile profile, string originDid, CredentialDefinition credDefObject, string credDefId, string tag, RegistryType revRegType, long maxCredNumber, string tailsDirPath)
public readonly ILedgerService LedgerService;
private readonly IProvisioningService ProvisioningService;
public async Task CreateAndRegisterRevocationRegistryDefinitionAsync(IAgentContext context, string originDid, CredentialDefinition credDefObject, string credDefId, string tag, RegistryType revRegType, long maxCredNumber, string tailsDirPath)
{
var req = await RevocationApi.CreateRevocationRegistryDefinitionAsync(originDid, credDefObject, credDefId, tag, revRegType, maxCredNumber, tailsDirPath);
RevocationRegistryDefinition revRegDef = req.Item1;
RevocationRegistryDefinitionPrivate revRegDefPrivate = req.Item2;
RevRegDefResult result = await RegisterRevocationRegistryDefinition(profile, revRegDef);
return result;
}

public async Task<RevRegDefResult> RegisterRevocationRegistryDefinition(Profile profile, RevocationRegistryDefinition revRegDef)
{
RevRegDefResult result;
var registrar = await _registrar_for_identifier(revRegDef.IssuerId);
result = await registrar.RegisterRevocationRegistryDefinition(profile, revRegDef);
return result;
}
var provisioning = await ProvisioningService.GetProvisioningAsync(context.Wallet);
revRegDef.IssuerId ??= provisioning.IssuerDid;

public async Task<BaseAnonCredsRegistrar> _registrar_for_identifier(string IssuerId)
{
List<BaseAnonCredsRegistrar> matchingRegistrars = new List<BaseAnonCredsRegistrar>();
foreach (var registrar in registrars)
{
if (await registrar.SupportsAsync(IssuerId))
{
matchingRegistrars.Add(registrar);
}
}
var definitionRecord = new DefinitionRecord();
definitionRecord.IssuerDid = revRegDef.IssuerId;

if (matchingRegistrars.Count == 0)
{
throw new AnonCredsRegistrationError($"No registrar available for identifier {IssuerId}");
}
await LedgerService.RegisterRevocationRegistryDefinitionAsync(
context: context,
submitterDid: revRegDef.IssuerId,
data: revRegDef.JsonString,
paymentInfo: null);

if (matchingRegistrars.Count > 1)
{
throw new AnonCredsRegistrationError($"More than one registrar found for identifier {IssuerId}");
}

return matchingRegistrars[0];
}

}




}
10 changes: 0 additions & 10 deletions src/Hyperledger.Aries/Revocation/Models/AskarAnoncredsProfile.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public async Task<bool> SupportsAsync(string identifier)
/// <summary>
/// Register a revocation registry definition on the registry.
/// </summary>
public abstract Task<RevRegDefResult> RegisterRevocationRegistryDefinition(Profile profile, RevocationRegistryDefinition revocationRegistryDefinition);
public abstract Task<RevRegDefResult> RegisterRevocationRegistryDefinition(RevocationRegistryDefinition revocationRegistryDefinition);


}
34 changes: 0 additions & 34 deletions src/Hyperledger.Aries/Revocation/Models/BaseInjector.cs

This file was deleted.

Loading

0 comments on commit 4dfe11a

Please sign in to comment.