public SecondIssuanceMessageInfo SecondMessage(SecondIssuanceMessageSpec spec) { if (spec.IssuerParameter == null) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "IssuerSetupParametersSpec.ID"; fault.ArgumentValue = spec.IssuerParameter.Serialize(); throw new FaultException <ApiArgumentFault>(fault); } ProverProtocolParameters pProtoParam = new ProverProtocolParameters(spec.IssuerParameter); pProtoParam.NumberOfTokens = spec.NumberOfTokens; if (!String.IsNullOrWhiteSpace(spec.TokenInfomation)) { pProtoParam.TokenInformation = ExtensionMethods.ToByteArray(spec.TokenInfomation); } if (!String.IsNullOrWhiteSpace(spec.Gamma)) { pProtoParam.Gamma = ExtensionMethods.ToGroupElement(spec.Gamma, spec.IssuerParameter); } if (!String.IsNullOrWhiteSpace(spec.DevicePublicKey)) { pProtoParam.DevicePublicKey = ExtensionMethods.ToGroupElement(spec.DevicePublicKey, spec.IssuerParameter); } if (!String.IsNullOrWhiteSpace(spec.ProverInfomation)) { pProtoParam.ProverInformation = ExtensionMethods.ToByteArray(spec.ProverInfomation); } if (spec.RandomData != null) { pProtoParam.ProverRandomData = spec.RandomData; } if (spec.BatchSecurityLevel > 0) { pProtoParam.BatchValidationSecurityLevel = spec.BatchSecurityLevel; } pProtoParam.Validate(); Prover prover = pProtoParam.CreateProver(); SecondIssuanceMessage secondMessage = prover.GenerateSecondMessage(spec.FirstMessage); PostSecondMessageState postSecondMessageState = prover.ExportPostSecondMessageState(); SecondIssuanceMessageInfo simInfo = new SecondIssuanceMessageInfo(); simInfo.PostSecondMessageState = postSecondMessageState; simInfo.SecondMessage = secondMessage; Guid issuerInstance = Guid.NewGuid(); simInfo.ProverInstanceID = issuerInstance; proverInstanceDB.TryAdd(issuerInstance, new ProverInstanceData(prover)); return(simInfo); }
public SecondIssuanceMessageInfo SecondMessage(SecondIssuanceMessageSpec spec) { if (spec.IssuerParameter == null) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "IssuerSetupParametersSpec.ID"; fault.ArgumentValue = spec.IssuerParameter.Serialize(); throw new FaultException<ApiArgumentFault>(fault); } ProverProtocolParameters pProtoParam = new ProverProtocolParameters(spec.IssuerParameter); pProtoParam.NumberOfTokens = spec.NumberOfTokens; if (!String.IsNullOrWhiteSpace(spec.TokenInfomation)) { pProtoParam.TokenInformation = ExtensionMethods.ToByteArray(spec.TokenInfomation); } if (!String.IsNullOrWhiteSpace(spec.Gamma)) { pProtoParam.Gamma = ExtensionMethods.ToGroupElement(spec.Gamma, spec.IssuerParameter); } if (!String.IsNullOrWhiteSpace(spec.DevicePublicKey)) { pProtoParam.DevicePublicKey = ExtensionMethods.ToGroupElement(spec.DevicePublicKey, spec.IssuerParameter); } if (!String.IsNullOrWhiteSpace(spec.ProverInfomation)) { pProtoParam.ProverInformation = ExtensionMethods.ToByteArray(spec.ProverInfomation); } if (spec.RandomData != null) { pProtoParam.ProverRandomData = spec.RandomData; } if (spec.BatchSecurityLevel > 0) { pProtoParam.BatchValidationSecurityLevel = spec.BatchSecurityLevel; } pProtoParam.Validate(); Prover prover = pProtoParam.CreateProver(); SecondIssuanceMessage secondMessage = prover.GenerateSecondMessage(spec.FirstMessage); PostSecondMessageState postSecondMessageState = prover.ExportPostSecondMessageState(); SecondIssuanceMessageInfo simInfo = new SecondIssuanceMessageInfo(); simInfo.PostSecondMessageState = postSecondMessageState; simInfo.SecondMessage = secondMessage; Guid issuerInstance = Guid.NewGuid(); simInfo.ProverInstanceID = issuerInstance; proverInstanceDB.TryAdd(issuerInstance, new ProverInstanceData(prover)); return simInfo; }
public IssuerKeyAndParameters CreateIssuerSetupParameters(IssuerSetupParametersSpec spec) { IssuerSetupParameters isp = new IssuerSetupParameters(); isp.GroupConstruction = spec.GroupConstruction ?? GroupType.Subgroup; isp.UidP = ExtensionMethods.ToByteArray(spec.IssuerID); isp.E = spec.AttributeEncoding != null ? spec.AttributeEncoding : IssuerSetupParameters.GetDefaultEValues(spec.NumberOfAttributes); isp.UseRecommendedParameterSet = spec.UseRecommendedParameterSet ?? true; if (issuerStore.HasValue(spec.IssuerID) && spec.StoreOnServer) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "IssuerSetupParametersSpec.ID"; fault.ArgumentValue = spec.ParameterSetName; throw new FaultException <ApiArgumentFault>(fault); } // look up ParameterSet. if (isp.UseRecommendedParameterSet) { isp.ParameterSet = IssuerSetupParameters.GetDefaultParameterSet(isp.GroupConstruction); // XXX add a check here to see if the name of the default parameterset is that same as // specified in spec.ParameterSetName and that match with the sha method specified. } else { ParameterSet pSet; if (ParameterSet.TryGetNamedParameterSet(spec.ParameterSetName, out pSet)) { isp.ParameterSet = pSet; } else { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Member value vas not found"; fault.Argument = "IssuerSetupParametersSpec.ParameterSetName"; fault.ArgumentValue = spec.ParameterSetName; throw new FaultException <ApiArgumentFault>(fault); } } // specification field unused in ABC4Trust isp.S = null; IssuerKeyAndParameters issuerKeyParam = isp.Generate(true); if (spec.StoreOnServer) { issuerStore.AddValue(spec.IssuerID, issuerKeyParam); } return(issuerKeyParam); }
public void DeleteIssuerSetupParameter(string id) { if (!issuerStore.HasValue(id)) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "ID"; fault.ArgumentValue = id; throw new FaultException <ApiArgumentFault>(fault); } issuerStore.RemoveValue(id); }
public IssuerKeyAndParameters CreateIssuerSetupParameters(IssuerSetupParametersSpec spec) { IssuerSetupParameters isp = new IssuerSetupParameters(); isp.GroupConstruction = spec.GroupConstruction ?? GroupType.Subgroup; isp.UidP = ExtensionMethods.ToByteArray(spec.IssuerID); isp.E = spec.AttributeEncoding != null ? spec.AttributeEncoding : IssuerSetupParameters.GetDefaultEValues(spec.NumberOfAttributes); isp.UseRecommendedParameterSet = spec.UseRecommendedParameterSet ?? true; if (issuerStore.HasValue(spec.IssuerID) && spec.StoreOnServer) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "IssuerSetupParametersSpec.ID"; fault.ArgumentValue = spec.ParameterSetName; throw new FaultException<ApiArgumentFault>(fault); } // look up ParameterSet. if (isp.UseRecommendedParameterSet) { isp.ParameterSet = IssuerSetupParameters.GetDefaultParameterSet(isp.GroupConstruction); // XXX add a check here to see if the name of the default parameterset is that same as // specified in spec.ParameterSetName and that match with the sha method specified. } else { ParameterSet pSet; if (ParameterSet.TryGetNamedParameterSet(spec.ParameterSetName, out pSet)) { isp.ParameterSet = pSet; } else { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Member value vas not found"; fault.Argument = "IssuerSetupParametersSpec.ParameterSetName"; fault.ArgumentValue = spec.ParameterSetName; throw new FaultException<ApiArgumentFault>(fault); } } // specification field unused in ABC4Trust isp.S = null; IssuerKeyAndParameters issuerKeyParam = isp.Generate(true); if (spec.StoreOnServer) { issuerStore.AddValue(spec.IssuerID, issuerKeyParam); } return issuerKeyParam; }
public FirstIssuanceMessageInfo FirstMessage(FirstIssuanceMessageSpec spec) { if (!issuerStore.HasValue(spec.IssuerID)) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "FirstIssuanceMessageSpec.IssuerID"; fault.ArgumentValue = spec.IssuerID; throw new FaultException <ApiArgumentFault>(fault); } IssuerKeyAndParameters ikp = issuerStore.GetValue(spec.IssuerID); IssuerProtocolParameters ipp = new IssuerProtocolParameters(ikp); ipp.NumberOfTokens = spec.NumberOfTokens; ipp.Attributes = ConvertToByteArray(spec.Attributes); if (!String.IsNullOrWhiteSpace(spec.TokenInfomation)) { ipp.TokenInformation = ExtensionMethods.ToByteArray(spec.TokenInfomation); } if (!String.IsNullOrWhiteSpace(spec.Gamma)) { ipp.Gamma = ExtensionMethods.ToGroupElement(spec.Gamma, ikp.IssuerParameters); } if (!String.IsNullOrWhiteSpace(spec.DevicePublicKey)) { ipp.DevicePublicKey = ExtensionMethods.ToGroupElement(spec.DevicePublicKey, ikp.IssuerParameters); } ipp.Validate(); Issuer issuer = ipp.CreateIssuer(); FirstIssuanceMessage firstMessage = issuer.GenerateFirstMessage(); FirstIssuanceMessageInfo ret = new FirstIssuanceMessageInfo(); ret.FirstMessage = firstMessage; Guid issuerInstance = Guid.NewGuid(); ret.IssuerInstanceID = issuerInstance; ret.FirstMessageState = issuer.ExportPostFirstMessageState(); issuerInstanceDB.TryAdd(issuerInstance, new IssuerInstanceData(issuer)); return(ret); }
public IssuerParameterInfo GetIssuerSetupParameter(string id) { IssuerParameterInfo infoItem = new IssuerParameterInfo(); if (!issuerStore.HasValue(id)) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "ID"; fault.ArgumentValue = id; throw new FaultException <ApiArgumentFault>(fault); } IssuerKeyAndParameters issuerParam = issuerStore.GetValue(id); infoItem.ParameterSetName = id; infoItem.IssuerParameterSet = issuerParam.IssuerParameters; return(infoItem); }
public GenerateTokensInfo GenerateTokens(GenerateTokensSpec spec) { // first we will try to lookup the cache value of the prover object. Prover prover = null; if (spec.ProverInstanceID != null) { ProverInstanceData proverInstance; bool ok = proverInstanceDB.TryGetValue(spec.ProverInstanceID, out proverInstance); if (ok) { prover = proverInstance.Prover; } else { //XXX add log about Prover not found in cache. } } if (prover != null) { return(HandleGenerateTokens(prover, spec.ThirdMessage)); } if (spec.SecondMessageState != null && spec.IssuerParameter != null) { prover = new Prover(spec.IssuerParameter, spec.SecondMessageState); proverInstanceDB.TryAdd(spec.ProverInstanceID, new ProverInstanceData(prover)); return(HandleGenerateTokens(prover, spec.ThirdMessage)); } ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Prover with unique ID was found or SecondMessageState and IssuerParameter not provided."; fault.Argument = "GenerateTokensSpec.ProverInstanceID/GenerateTokensSpec.SecondMessageState/GenerateTokensSpec.IssuerParameter"; fault.ArgumentValue = spec.ProverInstanceID.ToString(); throw new FaultException <ApiArgumentFault>(fault); }
public ThirdIssuanceMessageInfo ThirdMessage(ThirdIssuanceMessageSpec spec) { // first we will try to lookup the cache value of the issuer object. Issuer issuer = null; if (spec.IssuerInstanceID != null) { IssuerInstanceData issuerInstance; bool ok = issuerInstanceDB.TryGetValue(spec.IssuerInstanceID, out issuerInstance); if (ok) { issuer = issuerInstance.Issuer; } else { //XXX add log about Issuer not found in cache. } } if (issuer != null) { return(HandleThirdMessageInfo(issuer, spec.SecondMessage)); } if (spec.FistMessageState != null && spec.IssuerKeyAndParameter != null) { issuer = new Issuer(spec.IssuerKeyAndParameter, spec.FistMessageState); issuerInstanceDB.TryAdd(spec.IssuerInstanceID, new IssuerInstanceData(issuer)); return(HandleThirdMessageInfo(issuer, spec.SecondMessage)); } ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found or FirstMessageState and IssuerKeyAndParameter not provided."; fault.Argument = "ThirdIssuanceMessageSpec.IssuerInstanceID/ThirdIssuanceMessageSpec.FirstMessageState/ThirdIssuanceMessageSpec.IssuerKeyAndParameter"; fault.ArgumentValue = spec.IssuerInstanceID.ToString(); throw new FaultException <ApiArgumentFault>(fault); }
public GenerateTokensInfo GenerateTokens(GenerateTokensSpec spec) { // first we will try to lookup the cache value of the prover object. Prover prover = null; if (spec.ProverInstanceID != null) { ProverInstanceData proverInstance; bool ok = proverInstanceDB.TryGetValue(spec.ProverInstanceID, out proverInstance); if (ok) { prover = proverInstance.Prover; } else { //XXX add log about Prover not found in cache. } } if (prover != null) { return HandleGenerateTokens(prover, spec.ThirdMessage); } if (spec.SecondMessageState != null && spec.IssuerParameter != null) { prover = new Prover(spec.IssuerParameter, spec.SecondMessageState); proverInstanceDB.TryAdd(spec.ProverInstanceID, new ProverInstanceData(prover)); return HandleGenerateTokens(prover, spec.ThirdMessage); } ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Prover with unique ID was found or SecondMessageState and IssuerParameter not provided."; fault.Argument = "GenerateTokensSpec.ProverInstanceID/GenerateTokensSpec.SecondMessageState/GenerateTokensSpec.IssuerParameter"; fault.ArgumentValue = spec.ProverInstanceID.ToString(); throw new FaultException<ApiArgumentFault>(fault); }
public ThirdIssuanceMessageInfo ThirdMessage(ThirdIssuanceMessageSpec spec) { // first we will try to lookup the cache value of the issuer object. Issuer issuer = null; if (spec.IssuerInstanceID != null) { IssuerInstanceData issuerInstance; bool ok = issuerInstanceDB.TryGetValue(spec.IssuerInstanceID, out issuerInstance); if (ok) { issuer = issuerInstance.Issuer; } else { //XXX add log about Issuer not found in cache. } } if (issuer != null) { return HandleThirdMessageInfo(issuer, spec.SecondMessage); } if (spec.FistMessageState != null && spec.IssuerKeyAndParameter != null) { issuer = new Issuer(spec.IssuerKeyAndParameter, spec.FistMessageState); issuerInstanceDB.TryAdd(spec.IssuerInstanceID, new IssuerInstanceData(issuer)); return HandleThirdMessageInfo(issuer, spec.SecondMessage); } ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found or FirstMessageState and IssuerKeyAndParameter not provided."; fault.Argument = "ThirdIssuanceMessageSpec.IssuerInstanceID/ThirdIssuanceMessageSpec.FirstMessageState/ThirdIssuanceMessageSpec.IssuerKeyAndParameter"; fault.ArgumentValue = spec.IssuerInstanceID.ToString(); throw new FaultException<ApiArgumentFault>(fault); }
public FirstIssuanceMessageInfo FirstMessage(FirstIssuanceMessageSpec spec) { if (!issuerStore.HasValue(spec.IssuerID)) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "FirstIssuanceMessageSpec.IssuerID"; fault.ArgumentValue = spec.IssuerID; throw new FaultException<ApiArgumentFault>(fault); } IssuerKeyAndParameters ikp = issuerStore.GetValue(spec.IssuerID); IssuerProtocolParameters ipp = new IssuerProtocolParameters(ikp); ipp.NumberOfTokens = spec.NumberOfTokens; ipp.Attributes = ConvertToByteArray(spec.Attributes); if (!String.IsNullOrWhiteSpace(spec.TokenInfomation)) { ipp.TokenInformation = ExtensionMethods.ToByteArray(spec.TokenInfomation); } if (!String.IsNullOrWhiteSpace(spec.Gamma)) { ipp.Gamma = ExtensionMethods.ToGroupElement(spec.Gamma, ikp.IssuerParameters); } if (!String.IsNullOrWhiteSpace(spec.DevicePublicKey)) { ipp.DevicePublicKey = ExtensionMethods.ToGroupElement(spec.DevicePublicKey, ikp.IssuerParameters); } ipp.Validate(); Issuer issuer = ipp.CreateIssuer(); FirstIssuanceMessage firstMessage = issuer.GenerateFirstMessage(); FirstIssuanceMessageInfo ret = new FirstIssuanceMessageInfo(); ret.FirstMessage = firstMessage; Guid issuerInstance = Guid.NewGuid(); ret.IssuerInstanceID = issuerInstance; ret.FirstMessageState = issuer.ExportPostFirstMessageState(); issuerInstanceDB.TryAdd(issuerInstance, new IssuerInstanceData(issuer)); return ret; }
public void DeleteIssuerSetupParameter(string id) { if (!issuerStore.HasValue(id)) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "ID"; fault.ArgumentValue = id; throw new FaultException<ApiArgumentFault>(fault); } issuerStore.RemoveValue(id); }
public IssuerParameterInfo GetIssuerSetupParameter(string id) { IssuerParameterInfo infoItem = new IssuerParameterInfo(); if (!issuerStore.HasValue(id)) { ApiArgumentFault fault = new ApiArgumentFault(); fault.Details = "Issuer with unique ID was found"; fault.Argument = "ID"; fault.ArgumentValue = id; throw new FaultException<ApiArgumentFault>(fault); } IssuerKeyAndParameters issuerParam = issuerStore.GetValue(id); infoItem.ParameterSetName = id; infoItem.IssuerParameterSet = issuerParam.IssuerParameters; return infoItem; }