public void SignRequest(IRegisterRequest request, X509Certificate2 certificate, string issuerTIN = null)
        {
            if (request is RegisterInvoiceRequest)
            {
                var invoiceRequest   = request as RegisterInvoiceRequest;
                var invoiceSignature = GetIICandIICSignature(invoiceRequest, certificate, issuerTIN);
                if (invoiceSignature != null)
                {
                    invoiceRequest.Invoice.IICSignature = invoiceSignature.IICSignature;
                    invoiceRequest.Invoice.IIC          = invoiceSignature.IIC;
                }
            }

            XmlDocument xmlDocument = LoadXmlDocument(request);
            SignedXml   xml         = SignXmlDocument(xmlDocument, certificate);

            var transforms = new Transform[]
            {
                new XmlDsigEnvelopedSignatureTransform(false),
                new XmlDsigExcC14NTransform(false)
            };

            var reference = GetReference(transforms, "#" + request.Id);

            xml.AddReference(reference);
            xml.ComputeSignature();

            request.Signature = GetSignatureType(xml.Signature, transforms, certificate);
        }
        /// <summary>
        ///     Validates the register request.
        /// </summary>
        /// <param name="registerRequest">The register request.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        public override bool ValidateRegisterRequest(IRegisterRequest registerRequest, out List <string> errorMessages)
        {
            errorMessages = new List <string>();

            if (!this.IsValidDeviceDescriptor(registerRequest.DeviceDescriptor, out errorMessages))
            {
                return(false);
            }

            if (!this.IsValid(registerRequest.Location, out errorMessages))
            {
                return(false);
            }

            if (!this.IsValid(registerRequest.DeviceOwner, out errorMessages))
            {
                return(false);
            }

            if (!this.IsValidLocation(registerRequest.Location, out errorMessages))
            {
                return(false);
            }

            var result = this.FCCIdValidate(out errorMessages, registerRequest.DeviceDescriptor);

            return(result);
        }
        private XmlDocument LoadXmlDocument(IRegisterRequest request)
        {
            string      serialize   = SerializationHelper.SerializeDataToXmlString(request);
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(serialize);

            return(xmlDocument);
        }
Beispiel #4
0
        public async Task RegisterUserAsync(IRegisterRequest model)
        {
            using (var transaction = await _context.Database.BeginTransactionAsync(System.Data.IsolationLevel.ReadUncommitted))
            {
                try
                {
                    var user = new ApplicationUser
                    {
                        Email       = model.Email,
                        UserName    = model.Email,
                        PhoneNumber = model.PhoneNumber,
                    };

                    var result = await _userManager.CreateAsync(user, model.Password);

                    if (!result.Succeeded) // TODO: result.Errors to error list
                    {
                        throw new ValidationException(ExceptionMapping.Register_OrganizationExists);
                    }

                    var refreshToken = await _userManager.GenerateConcurrencyStampAsync(user);

                    var refreshTokenResult = await _context.UserRefreshTokens.AddAsync(new UserRefreshToken
                    {
                        UserID       = user.Id,
                        RefreshToken = refreshToken,
                        ExpiryDate   = DateTime.Now.AddDays(1)
                    });

                    await _userManager.UpdateAsync(user);

                    await _context.SaveChangesAsync();

                    await transaction.CommitAsync();

                    var confirmationToken = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    await _mailer.SendEmailVerificationAsync(user.Email, $"{user.UserName}", confirmationToken, Guid.Parse(user.Id));
                }
                catch (Exception ex)
                {
                    await transaction.RollbackAsync();

                    throw new ValidationException("Failed to create user", ex);
                }
            }
        }
        /// <summary>
        /// Validates the register request.
        /// </summary>
        /// <param name="registerRequest">The register request.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        public override bool ValidateRegisterRequest(IRegisterRequest registerRequest, out List <string> errorMessages)
        {
            errorMessages = new List <string>();

            if (!this.IsValid(registerRequest.DeviceDescriptor, out errorMessages))
            {
                errorMessages.AddRange(errorMessages);
                return(false);
            }

            if (registerRequest.DeviceDescriptor.EtsiDeviceCategory == null || registerRequest.DeviceDescriptor.EtsiDeviceCategory == string.Empty)
            {
                errorMessages.Add(Constants.ErrorMessagEtsiDeviceCategory);
                return(false);
            }
            else if (registerRequest.DeviceDescriptor.EtsiDeviceCategory.ToLower() != Constants.PropertyNameEtsiDeviceCategoryMaster.ToLower() && registerRequest.DeviceDescriptor.EtsiDeviceCategory.ToLower() != Constants.PropertyNameEtsiDeviceCategorySlave.ToLower())
            {
                errorMessages.Add(Constants.ErrorMessagInvalidEtsiDeviceCategory);
                return(false);
            }

            if (registerRequest.DeviceDescriptor.ManufacturerId == null || registerRequest.DeviceDescriptor.ManufacturerId == string.Empty)
            {
                errorMessages.Add(Constants.ErrorMessagEtsiManufacturerId);
                return(false);
            }

            if (registerRequest.DeviceDescriptor.ModelId == null || registerRequest.DeviceDescriptor.ModelId == string.Empty)
            {
                errorMessages.Add(Constants.ErrorMessagEtsiModelId);
                return(false);
            }

            if (!this.IsValidLocation(registerRequest.Location, out errorMessages))
            {
                return(false);
            }

            var result = this.OfcomDeviceIdValidate(out errorMessages, registerRequest.DeviceDescriptor);

            return(result);
        }
        public long Register(IRegisterRequest request, RegisterOptions options, string procedure)
        {
            WampCalleeRpcOperation <TMessage> operation =
                new WampCalleeRpcOperation <TMessage>(procedure,
                                                      request.Callee,
                                                      options,
                                                      mInvocationHandler,
                                                      this);

            try
            {
                IWampRegistrationSubscriptionToken token =
                    mCatalog.Register(operation, options);

                long registrationId = token.TokenId;

                operation.RegistrationId = registrationId;

                CompositeDisposable disposable = new CompositeDisposable(token, operation);

                bool alreadyRegistered =
                    !mOperationToDisposable.TryAdd(operation, disposable);

                request.Registered(registrationId);

                // If the operation is already registered, ignore it.
                if (!alreadyRegistered)
                {
                    operation.Open();
                }

                return(registrationId);
            }
            catch (Exception)
            {
                operation.Dispose();
                throw;
            }
        }
 /// <summary>
 /// Validates the register request.
 /// </summary>
 /// <param name="registerRequest">The register request.</param>
 /// <param name="errorMessages">The error messages.</param>
 /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
 public virtual bool ValidateRegisterRequest(IRegisterRequest registerRequest, out List <string> errorMessages)
 {
     errorMessages = new List <string>();
     return(true);
 }