KeyStore Classe

Definição

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

[Android.Runtime.Register("java/security/KeyStore", DoNotGenerateAcw=true)]
public class KeyStore : Java.Lang.Object
[<Android.Runtime.Register("java/security/KeyStore", DoNotGenerateAcw=true)>]
type KeyStore = class
    inherit Object
Herança
KeyStore
Atributos

Comentários

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

Um KeyStore gerencia diferentes tipos de entradas. Cada tipo de entrada implementa a KeyStore.Entry interface. Três implementações básicas KeyStore.Entry são fornecidas:

<ul><li><b>KeyStore.PrivateKeyEntry</b>

Esse tipo de entrada contém um criptográfico PrivateKey, que é opcionalmente armazenado em um formato protegido para impedir o acesso não autorizado. Ele também é acompanhado por uma cadeia de certificados para a chave pública correspondente.

Chaves privadas e cadeias de certificados são usadas por uma determinada entidade para auto-autenticação. Os aplicativos para essa autenticação incluem organizações de distribuição de software que assinam arquivos JAR como parte do software de lançamento e/ou licenciamento.

<li><b>KeyStore.SecretKeyEntry</b>

Esse tipo de entrada contém um criptográfico SecretKey, que é opcionalmente armazenado em um formato protegido para impedir o acesso não autorizado.

<li><b>KeyStore.TrustedCertificateEntry</b>

Esse tipo de entrada contém uma única chave Certificate pública que pertence a outra parte. Ele é chamado de certificado confiável porque o proprietário do repositório de chaves confia que a chave pública no certificado realmente pertence à identidade identificada pelo assunto (proprietário) do certificado.

Esse tipo de entrada pode ser usado para autenticar outras partes. </ul>

Cada entrada em um repositório de chaves é identificada por uma cadeia de caracteres "alias". No caso de chaves privadas e suas cadeias de certificados associadas, essas cadeias de caracteres distinguem entre as diferentes maneiras pelas quais a entidade pode se autenticar. Por exemplo, a entidade pode se autenticar usando diferentes autoridades de certificação ou usando algoritmos de chave pública diferentes.

Se os aliases diferenciam maiúsculas de minúsculas depende da implementação. Para evitar problemas, é recomendável não usar aliases em um KeyStore que diferem apenas no caso.

Se os repositórios de chaves são persistentes e os mecanismos usados pelo repositório de chaves, se forem persistentes, não serão especificados aqui. Isso permite o uso de uma variedade de técnicas para proteger chaves confidenciais (por exemplo, privadas ou secretas). Cartões inteligentes ou outros mecanismos criptográficos integrados (SafeKeyper) são uma opção e mecanismos mais simples, como arquivos, também podem ser usados (em uma variedade de formatos).

As maneiras típicas de solicitar um objeto KeyStore incluem especificar um arquivo de repositório de chaves existente, depender do tipo padrão e fornecer um tipo de repositório de chaves específico.

<ul><li>Para especificar um arquivo de repositório de chaves existente:

// get keystore password
               char[] password = getPassword();

               // probe the keystore file and load the keystore entries
               KeyStore ks = KeyStore.getInstance(new File("keyStoreName"), password);

O sistema investigará o arquivo especificado para determinar seu tipo de repositório de chaves e retornará uma implementação do repositório de chaves com suas entradas já carregadas. Quando essa abordagem é usada, não é necessário chamar o método do repositório de #load(java.io.InputStream, char[]) load chaves.

<li>Para contar com o tipo padrão:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

O sistema retornará uma implementação do repositório de chaves para o tipo padrão.

<li>Para fornecer um tipo de repositório de chaves específico:

KeyStore ks = KeyStore.getInstance("JKS");

O sistema retornará a implementação mais preferencial do tipo de repositório de chaves especificado disponível no ambiente. </ul>

Antes que um repositório de chaves possa ser acessado, ele deve ser #load(java.io.InputStream, char[]) loaded.

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

               // get user password and file input stream
               char[] password = getPassword();

               try (FileInputStream fis = new FileInputStream("keyStoreName")) {
                   ks.load(fis, password);
               }

Para criar um repositório de chaves vazio usando o método acima load , passe null como o InputStream argumento.

Depois que o repositório de chaves tiver sido carregado, é possível ler as entradas existentes do repositório de chaves ou gravar novas entradas no repositório de chaves:

KeyStore.ProtectionParameter protParam =
                   new KeyStore.PasswordProtection(password);

               // get my private key
               KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry)
                   ks.getEntry("privateKeyAlias", protParam);
               PrivateKey myPrivateKey = pkEntry.getPrivateKey();

               // save my secret key
               javax.crypto.SecretKey mySecretKey;
               KeyStore.SecretKeyEntry skEntry =
                   new KeyStore.SecretKeyEntry(mySecretKey);
               ks.setEntry("secretKeyAlias", skEntry, protParam);

               // store away the keystore
               try (FileOutputStream fos = new FileOutputStream("newKeyStoreName")) {
                   ks.store(fos, password);
               }

Observe que, embora a mesma senha possa ser usada para carregar o repositório de chaves, para proteger a entrada de chave privada, para proteger a entrada de chave secreta e para armazenar o repositório de chaves (conforme mostrado no código de exemplo acima), senhas diferentes ou outros parâmetros de proteção também podem ser usados.

O Android fornece os seguintes KeyStore tipos: <tabela><thead><tr><th>Algorithm</th th><>Supported API Levels</th></tr<>/thead><tbody><tr<>td>AndroidCAStore</td td><>14+</td<>/tr<>tr<>td>AndroidKeyStore</td td><>18+</td<>/tr><class="preterido" ><td>BCPKCS12</td<>td>1-8</td></tr<>tr<>td>BKS</td td<>>1+</td<>/tr><tr><td>BouncyCastle</td td>><1+</td<>/tr><tr<>td>PKCS12</td td>><1+</td></tr<>tr class="preterido"><td>PKCS12-DEF</td><td>1-8</td></tr></tbody></table>

Esses tipos são descritos na seção KeyStore da documentação Java Cryptography Architecture Standard Algorithm Name.

Adicionado em 1.2.

Java documentação para java.security.KeyStore.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.

Construtores

Nome Description
KeyStore(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime.

KeyStore(KeyStoreSpi, Provider, String)

Cria um objeto KeyStore do tipo fornecido e encapsula a implementação de provedor (objeto SPI) fornecida nele.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
DefaultType

Retorna o tipo de repositório de chaves padrão, conforme especificado pela keystore.type propriedade de segurança, ou a cadeia de caracteres "jks" (acrônimo para "Java repositório de chaves") se essa propriedade não existir.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
JniPeerMembers

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

PeerReference

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
Provider

Retorna o provedor desse repositório de chaves.

ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

Type

Retorna o tipo desse repositório de chaves.

Métodos

Nome Description
Aliases()

Lista todos os nomes de alias deste repositório de chaves.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
ContainsAlias(String)

Verifica se o alias especificado existe neste repositório de chaves.

DeleteEntry(String)

Exclui a entrada identificada pelo alias especificado desse repositório de chaves.

Dispose()

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
Dispose(Boolean)

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
EntryInstanceOf(String, Class)

Determina se o repositório Entry de chaves para o especificado alias é uma instância ou subclasse do especificado entryClass.

Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetCertificate(String)

Retorna o certificado associado ao alias especificado.

GetCertificateAlias(Certificate)

Retorna o nome (alias) da primeira entrada do repositório de chaves cujo certificado corresponde ao certificado fornecido.

GetCertificateChain(String)

Retorna a cadeia de certificados associada ao alias especificado.

GetCreationDate(String)

Retorna a data de criação da entrada identificada pelo alias especificado.

GetEntry(String, KeyStore+IProtectionParameter)

Obtém um repositório de chaves Entry para o alias especificado com o parâmetro de proteção especificado.

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetInstance(File, Char[])

Retorna um objeto de repositório de chaves carregado do tipo de repositório de chaves apropriado.

GetInstance(File, KeyStore+ILoadStoreParameter)

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

GetInstance(String, Provider)

Retorna um objeto de repositório de chaves do tipo especificado.

GetInstance(String, String)

Retorna um objeto de repositório de chaves do tipo especificado.

GetInstance(String)

Retorna um objeto de repositório de chaves do tipo especificado.

GetKey(String, Char[])

Retorna a chave associada ao alias especificado, usando a senha fornecida para recuperá-la.

IsCertificateEntry(String)

Retorna true se a entrada identificada pelo alias especificado foi criada por uma chamada para setCertificateEntry, ou criada por uma chamada para setEntry com um TrustedCertificateEntry.

IsKeyEntry(String)

Retorna true se a entrada identificada pelo alias determinado foi criada por uma chamada para setKeyEntry, ou criada por uma chamada para setEntry com um PrivateKeyEntry ou um SecretKeyEntry.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Load(KeyStore+ILoadStoreParameter)

Carrega esse KeyStore do fluxo de entrada fornecido.

Load(Stream, Char[])

Carrega esse KeyStore do fluxo de entrada fornecido.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
SetCertificateEntry(String, Certificate)

Atribui o certificado confiável especificado ao alias especificado.

SetEntry(String, KeyStore+IEntry, KeyStore+IProtectionParameter)

Salva um repositório Entry de chaves no alias especificado.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetKeyEntry(String, Byte[], Certificate[])

Atribui a chave fornecida (que já foi protegida) ao alias especificado.

SetKeyEntry(String, IKey, Char[], Certificate[])

Atribui a chave fornecida ao alias especificado, protegendo-a com a senha fornecida.

Size()

Recupera o número de entradas neste repositório de chaves.

Store(KeyStore+ILoadStoreParameter)

Armazena esse repositório de chaves no fluxo de saída fornecido e protege sua integridade com a senha fornecida.

Store(Stream, Char[])

Armazena esse repositório de chaves no fluxo de saída fornecido e protege sua integridade com a senha fornecida.

ToArray<T>()

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
IJavaPeerable.Finalized()

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

(Herdado de Object)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Essa classe representa uma instalação de armazenamento para chaves criptográficas e certificados.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a