KeyStore Classe

Definizione

Questa classe rappresenta una funzionalità 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 funzionalità di archiviazione per chiavi e certificati crittografici.

Un KeyStore oggetto 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 una determinata entità per l'autenticazione automatica. 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 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 è identificata da una stringa "alias". Nel caso di chiavi private e catene di certificati associate, queste stringhe distinguono 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.

Indica se gli alias fanno distinzione tra maiuscole e minuscole dipende dall'implementazione. Per evitare problemi, è consigliabile non usare alias in un archivio chiavi che differisce solo nel caso.

Se gli archivi chiavi sono persistenti e i meccanismi usati dall'archivio chiavi se è persistente, non vengono specificati qui. Ciò consente l'uso di un'ampia gamma di tecniche per la protezione delle chiavi sensibili (ad esempio, private o segrete). 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 un'ampia gamma di formati).

I modi tipici per richiedere un oggetto KeyStore includono la specifica di un file dell'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 restituirà un'implementazione dell'archivio chiavi con le relative voci già caricate. Quando questo approccio viene usato non è necessario chiamare il metodo dell'archivio #load(java.io.InputStream, char[]) load chiavi.

<li>Per fare affidamento 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 archivio chiavi specifico:

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

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

Prima di poter 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 seguenti: tabellaKeyStorethead<>tr<>th<Algorithm>/th th<><Supported API Levels>/th<>/tr<>/thead<>tbody<>tr<>td<AndroidCAStore>/td td td<><14+>/td/tr tr<><>td<>< AndroidKeyStore>/td td<><18+>/td<>/tr tr<>class="deprecato"<><><td>BCPKCS12</td td><>1-8</td></tr tr><><td>BKS</td td><>1+</td></tr tr><><td>BouncyCastle</td td>1+</td><></tr td><><>PKCS12</td td td><>1+</td></tr 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.

Aggiunta nella versione 1.2.

per java.security.KeyStore.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Costruttori

Nome Descrizione
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 (oggetto SPI) specificato.

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
DefaultType

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

Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniPeerMembers

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

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
Provider

Restituisce il provider dell'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

Nome Descrizione
Aliases()

Elenca tutti i nomi alias di questo archivio chiavi.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
ContainsAlias(String)

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

DeleteEntry(String)

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

Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(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)

Esegue il probe di un file dell'archivio chiavi e restituisce un archivio chiavi caricato del tipo rilevato.

GetInstance(String, Provider)

Restituisce un oggetto keystore del tipo specificato.

GetInstance(String, String)

Restituisce un oggetto keystore del tipo specificato.

GetInstance(String)

Restituisce un oggetto keystore del tipo specificato.

GetKey(String, Char[])

Restituisce la chiave associata all'alias specificato, utilizzando la password specificata per recuperarla.

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 oggetto TrustedCertificateEntry.

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 o PrivateKeyEntry .SecretKeyEntry

JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Load(KeyStore+ILoadStoreParameter)

Carica questo archivio chiavi dal flusso di input specificato.

Load(Stream, Char[])

Carica questo archivio chiavi dal flusso di input specificato.

Notify()

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

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor 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 chiavi Entry sotto l'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 nel flusso di output specificato e ne protegge l'integrità con la password specificata.

Store(Stream, Char[])

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

ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> 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

Nome Descrizione
IJavaPeerable.Disposed()

Notifica al runtime di interoperabilità che il peer gestito è stato eliminato.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Rilascia questo Java peer a meno che non venga conservato da un altro riferimento gestito.

(Ereditato da Object)
IJavaPeerable.Finalized()

Notifica al runtime di interoperabilità che il peer gestito è stato finalizzato.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Ottiene lo stato che descrive la relazione tra questo peer gestito e il relativo riferimento JNI.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Imposta il codice hash dell'identità di interoperabilità per questo Java peer.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Imposta lo stato peer gestito e JNI per questo peer Java.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Imposta il riferimento all'oggetto JNI usato da questo peer gestito.

(Ereditato da Object)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a