Diversas API de Proteção de Dados do ASP.NET Core

Aviso

Os tipos que implementam qualquer uma das interfaces a seguir devem ser thread-safe para vários chamadores.

ISecret

A interface ISecret representa um valor do segredo, como material de chave criptográfica. Ela contém a seguinte superfície de API:

  • Length: int

  • Dispose(): void

  • WriteSecretIntoBuffer(ArraySegment<byte> buffer): void

O método WriteSecretIntoBuffer preenche o buffer fornecido com o valor do segredo bruto. O motivo pelo qual essa API usa o buffer como um parâmetro em vez de retornar um byte[] diretamente é porque isso dá ao chamador a oportunidade de fixar o objeto do buffer, limitando a exposição secreta ao coletor de lixo gerenciado.

O tipo Secret é uma implementação concreta de ISecret onde o valor do segredo é armazenado na memória em processo. Em plataformas Windows, o valor do segredo é criptografado por meio de CryptProtectMemory.