Share via


KeyStore Classe

Definizione

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

[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
Ereditarietà
KeyStore
Attributi

Commenti

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

Un KeyStore gestisce diversi tipi di voci. Ogni tipo di voce implementa l'interfaccia KeyStore.Entry . Vengono fornite tre implementazioni di base KeyStore.Entry :

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

Questo tipo di voce contiene una crittografia PrivateKey, che è facoltativamente archiviata in un formato protetto per impedire l'accesso non autorizzato. È anche accompagnato da una catena di certificati per la chiave pubblica corrispondente.

Le chiavi private e le catene di certificati vengono usate da un'entità specificata per l'autenticazione self-authentication. Le applicazioni per questa autenticazione includono organizzazioni di distribuzione software che firmano i file JAR come parte del rilascio e/o del software di licenza.

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

Questo tipo di voce contiene una crittografia SecretKey, che è facoltativamente archiviata in un formato protetto per impedire l'accesso non autorizzato.

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

Questo tipo di voce contiene una singola chiave Certificate pubblica appartenente a un'altra parte. Viene chiamato un certificato attendibile perché il proprietario dell'archivio chiavi considera attendibile che la chiave pubblica nel certificato appartiene effettivamente all'identità identificata dall'oggetto (proprietario) del certificato.

Questo tipo di voce può essere usato per autenticare altre parti. </ul>

Ogni voce in un archivio chiavi viene identificata da una stringa "alias". Nel caso di chiavi private e catene di certificati associate, queste stringhe si differenziano tra i diversi modi in cui l'entità può autenticarsi. Ad esempio, l'entità può autenticarsi usando autorità di certificazione diverse o usando algoritmi di chiave pubblica diversi.

Se gli alias sono distinzione tra maiuscole e minuscole dipende dall'implementazione. Per evitare problemi, è consigliabile non usare alias in un KeyStore che differisce solo nel caso.

Se i keystore sono persistenti e i meccanismi usati dall'archivio chiavi se sono persistenti, non vengono specificati qui. Ciò consente l'uso di diverse tecniche per la protezione delle chiavi sensibili (ad esempio, private o secret). Le smart card o altri motori di crittografia integrati (SafeKeyper) sono un'opzione e meccanismi più semplici, ad esempio i file possono essere usati (in diversi formati).

I modi tipici per richiedere un oggetto KeyStore includono la specifica di un file di archivio chiavi esistente, basandosi sul tipo predefinito e fornendo un tipo di archivio chiavi specifico.

<ul><li>Per specificare un file dell'archivio chiavi esistente:

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

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

Il sistema eseguirà il probe del file specificato per determinare il tipo di archivio chiavi e restituire un'implementazione dell'archivio chiavi con le voci già caricate. Quando questo approccio viene usato non è necessario chiamare il metodo dell'archivio #load(java.io.InputStream, char[]) load chiavi.

<li>Per basarsi sul tipo predefinito:

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

Il sistema restituirà un'implementazione dell'archivio chiavi per il tipo predefinito.

<li>Per fornire un tipo di keystore specifico:

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

Il sistema restituirà l'implementazione più preferita del tipo di archivio chiavi specificato disponibile nell'ambiente. </ul>

Prima di accedere a un archivio chiavi, deve essere #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);
               }

Per creare un archivio chiavi vuoto usando il metodo precedente load , passare null come InputStream argomento.

Dopo aver caricato l'archivio chiavi, è possibile leggere le voci esistenti dall'archivio chiavi o scrivere nuove voci nell'archivio chiavi:

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);
               }

Si noti che anche se la stessa password può essere usata per caricare l'archivio chiavi, per proteggere la voce di chiave privata, per proteggere la voce della chiave privata e per archiviare l'archivio chiavi (come illustrato nel codice di esempio precedente), possono essere usate anche password diverse o altri parametri di protezione.

Android fornisce i tipi seguentiKeyStore: <tabella><tr th Algorithm<<>>/th th Supported API Levels<><></th>/tr/thead><<><<>><>>tbody tr td AndroidCAStore<>></td 14+</td<>>><></tr td AndroidKeyStore</td><>18+</td<>/tr><tr class="deprecato" >><td BCPKCS12<><>/td td 1-8<>><<>></td/tr td BKS<><><><><>></td 1+/td/tr tr td BouncyCastle<>></td td 1+>><<</td/tr tr<>>td PKCS12/td 1+</><><td/tr class="deprecato>><"td PKCS12-DEF>><<></td<td>1-8</td></tr></tbody></table>

Questi tipi sono descritti nella sezione KeyStore della documentazione relativa al nome dell'algoritmo standard dell'architettura di crittografia Java.

Aggiunto nella versione 1.2.

Documentazione Java per java.security.KeyStore.

Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .

Costruttori

KeyStore(IntPtr, JniHandleOwnership)

Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

KeyStore(KeyStoreSpi, Provider, String)

Crea un oggetto KeyStore del tipo specificato e incapsula l'implementazione del provider specificato (oggetto SPI).

Proprietà

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
DefaultType

Restituisce il tipo di archivio chiavi predefinito come specificato dalla keystore.type proprietà di sicurezza o la stringa "jks" (acronimo di "Java keystore") se non esiste alcuna proprietà.

Handle

Handle all'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
JniPeerMembers

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

PeerReference

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
Provider

Restituisce il provider di questo archivio chiavi.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Type

Restituisce il tipo di questo archivio chiavi.

Metodi

Aliases()

Elenca tutti i nomi alias di questo archivio chiavi.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
ContainsAlias(String)

Verifica se l'alias specificato esiste in questo archivio chiavi.

DeleteEntry(String)

Elimina la voce identificata dall'alias specificato da questo archivio chiavi.

Dispose()

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
Dispose(Boolean)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
EntryInstanceOf(String, Class)

Determina se l'archivio Entry chiavi per l'oggetto specificato alias è un'istanza o una sottoclasse dell'oggetto specificato entryClass.

Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetCertificate(String)

Restituisce il certificato associato all'alias specificato.

GetCertificateAlias(Certificate)

Restituisce il nome (alias) della prima voce dell'archivio chiavi il cui certificato corrisponde al certificato specificato.

GetCertificateChain(String)

Restituisce la catena di certificati associata all'alias specificato.

GetCreationDate(String)

Restituisce la data di creazione della voce identificata dall'alias specificato.

GetEntry(String, KeyStore+IProtectionParameter)

Ottiene un archivio Entry chiavi per l'alias specificato con il parametro di protezione specificato.

GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
GetInstance(File, Char[])

Restituisce un oggetto keystore caricato del tipo di archivio chiavi appropriato.

GetInstance(File, KeyStore+ILoadStoreParameter)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

GetInstance(String)

Restituisce un oggetto keystore del tipo specificato.

GetInstance(String, Provider)

Restituisce un oggetto keystore del tipo specificato.

GetInstance(String, String)

Restituisce un oggetto keystore del tipo specificato.

GetKey(String, Char[])

Restituisce la chiave associata all'alias specificato usando la password specificata per ripristinarla.

IsCertificateEntry(String)

Restituisce true se la voce identificata dall'alias specificato è stata creata da una chiamata a setCertificateEntryo creata da una chiamata a setEntry con un TrustedCertificateEntryoggetto .

IsKeyEntry(String)

Restituisce true se la voce identificata dall'alias specificato è stata creata da una chiamata a setKeyEntryo creata da una chiamata a setEntry con un PrivateKeyEntry oggetto o .SecretKeyEntry

JavaFinalize()

Chiamato dal Garbage Collector in un oggetto quando Garbage Collection determina che non sono presenti più riferimenti all'oggetto.

(Ereditato da Object)
Load(KeyStore+ILoadStoreParameter)

Carica questo KeyStore dal flusso di input specificato.

Load(Stream, Char[])

Carica questo KeyStore dal flusso di input specificato.

Notify()

Riattiva un singolo thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
SetCertificateEntry(String, Certificate)

Assegna il certificato attendibile specificato all'alias specificato.

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

Salva un archivio Entry chiavi nell'alias specificato.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetKeyEntry(String, Byte[], Certificate[])

Assegna la chiave specificata (già protetta) all'alias specificato.

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

Assegna la chiave specificata all'alias specificato, proteggendola con la password specificata.

Size()

Recupera il numero di voci in questo archivio chiavi.

Store(KeyStore+ILoadStoreParameter)

Archivia questo archivio chiavi al flusso di output specificato e ne protegge l'integrità con la password specificata.

Store(Stream, Char[])

Archivia questo archivio chiavi al flusso di output specificato e ne protegge l'integrità con la password specificata.

ToArray<T>()

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
Wait()

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere eseguendo>una notifica</em o <em interrotto</>em>>.<

(Ereditato da Object)
Wait(Int64)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
IJavaPeerable.Finalized()

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione dei tipi controllati dal runtime Android.

JavaCast<TResult>(IJavaObject)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

GetJniTypeName(IJavaPeerable)

Questa classe rappresenta una struttura di archiviazione per chiavi e certificati crittografici.

Si applica a