public IActionResult Index(RequestToken request) { ResponseToken token; if (string.IsNullOrEmpty(request.Username)) { return(BadRequest(ResponseTokenError.InvalidRequest("username"))); } else if (string.IsNullOrEmpty(request.Password)) { return(BadRequest(ResponseTokenError.InvalidRequest("password"))); } var passwordBase = _oAuth2PasswordBaseService.GetPasswordBaseByUsername(request.Username); if (passwordBase == null) { return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid username"))); } else if (passwordBase.Password != SHA512Helper.Crip(request.Password)) { return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid password"))); } token = TokenHelper.GenerateToken(passwordBase, _configuration["OAuth2Configuration:Key"], int.Parse(_configuration["OAuth2Configuration:Expires:Password"]), _configuration["OAuth2Configuration:Issuer"], _configuration["OAuth2Configuration:Audience"]); return(Ok(token)); }
private static bool CheckPassword(User user, string password) { var hash = SHA512Helper.GetHash(password); var isValid = user.PasswordHash == hash; return(isValid); }
/// <summary> /// Создать пользователя /// </summary> public async Task CreateAsync(User user, string password, CancellationToken cancellationToken = default(CancellationToken)) { user = user ?? throw new ArgumentNullException(nameof(user)); password = password ?? throw new ArgumentNullException(nameof(password)); user.PasswordHash = SHA512Helper.GetHash(password); await _appDbContext.AddAsync(user, cancellationToken); await _appDbContext.SaveChangesAsync(cancellationToken); }
public void CheckPassword_Positive() { const string password = "******"; IUserManager userManager = new UserManager(_mockDbContext.Object); var user = new User { PasswordHash = SHA512Helper.GetHash(password) }; var isValid = userManager.CheckPassword(user, password); Assert.True(isValid); }
public void CheckPassword_Negative() { const string password1 = "123"; const string password2 = "111"; IUserManager userManager = new UserManager(_mockDbContext.Object); var user = new User { PasswordHash = SHA512Helper.GetHash(password1) }; var isValid = userManager.CheckPassword(user, password2); Assert.False(isValid); }
public void TupleHashCompute_Should_GenerateExpectedHash() { var expectedHash = "3696FB515910C43033D7BE0DD1ABFA4F3F8D8354EEC017D41F9" + "3A344C9AAB02C006771824DC09C5040BEC8CE9C5FD3833D1301B62750726160098E9A1ED440E4"; var arr1 = new byte[] { 0x00, 0x01, 0x02 }; var arr2 = new byte[] { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 }; var arr3 = new byte[] { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 }; var domain = Bytes.FromString("My Tuple App"); var tupleHash = new SHA512Helper(); var hash = tupleHash.ComputeHash(domain, arr1, arr2, arr3); Assert.Equal(expectedHash, Bytes.ToString(hash, StringEncoding.HEX).ToUpper()); }
public void HashToPoint_Should_GeneratePointOnCurve_When_RandomHashesArePassed() { var phe = new PheCrypto(); var swu = new Swu(phe.Curve.Q, phe.Curve.B.ToBigInteger()); var rng = new SecureRandom(); var sha512 = new SHA512Helper(); var random = new byte[32]; for (int i = 0; i <= 15000; i++) { rng.NextBytes(random); var hash = sha512.ComputeHash(null, random); var(x, y) = swu.DataToPoint(hash); Assert.True(phe.Curve.CreatePoint(x, y).IsValid()); } }
private static byte[] ComputeHash(byte[] content, string algorithm) { switch (algorithm.ToUpper()) { case "MD5": return(MD5Helper.ComputeHash(content)); case "SHA256": return(SHA256Helper.ComputeHash(content)); case "SHA384": return(SHA384Helper.ComputeHash(content)); case "SHA512": return(SHA512Helper.ComputeHash(content)); default: return(SHA1Helper.ComputeHash(content)); } }
public void HashToPoint_Should_GeneratePointOnCurve_When_RandomHashesArePassed2() { var phe = new PheCrypto(); var swu = new Swu(phe.Curve.Q, phe.Curve.B.ToBigInteger()); var sha512 = new SHA512Helper(); var data = new byte[] { 0x80, 0x39, 0x05, 0x35, 0x49, 0x44, 0x70, 0xbe, 0x0b, 0x29, 0x65, 0x01, 0x58, 0x6b, 0xfc, 0xd9, 0xe1, 0x31, 0xc3, 0x9e, 0x2d, 0xec, 0xc7, 0x53, 0xd4, 0xf2, 0x5f, 0xdd, 0xd2, 0x28, 0x1e, 0xe3, }; var hash = sha512.ComputeHash(null, data); for (int i = 0; i <= 15000; i++) { var(x, y) = swu.DataToPoint(hash); Assert.True(phe.Curve.CreatePoint(x, y).IsValid()); hash = sha512.ComputeHash(null, hash); } }
public void HkdfGenerateBytes_Should_GenerateExpectedValue() { var expectedValue = "0F097707AAB66A4CD5FCC79CEB96FB4B99DE2E73DF09295E" + "CFF6F6CC7C1DCF169D51B62999BC206487800E8DD451518FA6C50F5C053B8B780208BE7164D3A7F2"; var arr1 = new byte[] { 0x00, 0x01, 0x02 }; var arr2 = new byte[] { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 }; var arr3 = new byte[] { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 }; var domain = Bytes.FromString("My Tuple App"); var sha512 = new SHA512Helper(); var key = sha512.ComputeHash(null, arr1, arr2, arr3); var hkdf = new HkdfBytesGenerator(new Sha512Digest()); var phe = new PheCrypto(); hkdf.Init(new HkdfParameters(key, domain, Domains.KdfInfoZ)); var resultValue = new byte[64]; hkdf.GenerateBytes(resultValue, 0, resultValue.Length); Assert.Equal(expectedValue, Bytes.ToString(resultValue, StringEncoding.HEX).ToUpper()); }
public static void AdicionarDadosParaTeste(EcmDbContext context) { var conta = new ContaJuridica { Nome = "Teste", Cnpj = "12345678901234", Ie = "12345678901", Email = "*****@*****.**", Endereco = new Endereco { Cep = "15000000", Bairro = "Bairro", Rua = "Rua", Numero = 0, UfId = "SP" } }; context.Set <Conta>().Add(conta); var owner = new Usuario { Nome = "OWNER", Senha = SHA512Helper.Create("admin"), Email = "admin", Sobrenome = "da Silva", Ativo = true, Owners = new List <UsuarioOwnerConta> { new UsuarioOwnerConta { Conta = conta, UsuarioId = 1 } } }; owner.AssociarAConta <ContaUsuario, Usuario>(conta); context.Set <Usuario>().Add(owner); //var associacaoContaDrawer = context.Set<TecnoSet.ECM.Modelo.ImageNow.ContaDrawerImageNow>(); //associacaoContaDrawer.Add(new Modelo.ImageNow.ContaDrawerImageNow //{ // Conta = conta, // DrawerImageNowId = "321YY3Z_0006T4VBQ0001GW", // DrawerImageNowNome = "TesteDesenv" //}); var propriedade1 = new TipoDocumentoPropriedade { Nome = "Primeiro propriedade", Obrigatorio = true }; var propriedade2 = new TipoDocumentoPropriedade { Nome = "Segunda", Obrigatorio = true }; var propriedade3 = new TipoDocumentoPropriedade { Nome = "Terça", Obrigatorio = true }; var propriedade4 = new TipoDocumentoPropriedade { Nome = "Quarta", Obrigatorio = true }; var propriedade5 = new TipoDocumentoPropriedade { Nome = "Quinta", Obrigatorio = true }; var tipoDocumentoDefault = new TipoDocumento { Nome = "Padrão", Propriedades = new List <TipoDocumentoPropriedade> { propriedade1, propriedade2, propriedade3, propriedade4, propriedade5 } }; tipoDocumentoDefault.AssociarAConta <ContaTipoDocumento, TipoDocumento>(conta); //var associacaoTipos = context.Set<TecnoSet.ECM.Modelo.ImageNow.TipoDocumentoImageNow>(); //associacaoTipos.Add(new Modelo.ImageNow.TipoDocumentoImageNow //{ // DocumentTypeName = "Default", // DocumentTypeId = "1000184816_1738021400", // TipoDocumento = tipoDocumentoDefault //}); byte i = 0; //var posicoesKey = context.Set<TecnoSet.ECM.Modelo.ImageNow.TipoDocumentoPosicaoPropriedadeImageNow>(); //foreach (var propriedade in tipoDocumentoDefault.Propriedades) //{ // posicoesKey.Add(new Modelo.ImageNow.TipoDocumentoPosicaoPropriedadeImageNow { Posicao = i++, TipoDocumentoPropriedade = propriedade }); //} // context.SaveChanges(); var novasAtividades = new List <Atividade> { new Atividade { Ordem = 0, Id = Claims.Documento.DoTipo(tipoDocumentoDefault.Id, Claims.ler), Nome = "Ler" }, new Atividade { Ordem = 1, Id = Claims.Documento.DoTipo(tipoDocumentoDefault.Id, Claims.criar), Nome = "Incluir" }, new Atividade { Ordem = 2, Id = Claims.Documento.DoTipo(tipoDocumentoDefault.Id, Claims.alterar), Nome = "Alterar" }, new Atividade { Ordem = 3, Id = Claims.Documento.DoTipo(tipoDocumentoDefault.Id, Claims.excluir), Nome = "Excluir" }, new Atividade { Ordem = 4, Id = Claims.Documento.DoTipo(tipoDocumentoDefault.Id, Claims.Documento.Download), Nome = "Download" } }; context.Set <AtividadeTipoDocumento>().Add(new AtividadeTipoDocumento { AtividadePaiId = "doc", Id = string.Concat(Claims.Documento.PrefixoAtividadeTipoDoc, tipoDocumentoDefault.Id), TipoDocumentoId = tipoDocumentoDefault.Id, Atividades = novasAtividades }); // context.SaveChanges(); }