Sprache

KeyStore Klasse

Definition

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

[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
Vererbung
Attribute

Hinweise

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

Eine KeyStore verwaltet verschiedene Arten von Einträgen. Jeder Eintragstyp implementiert die KeyStore.Entry Schnittstelle. Es werden drei grundlegende KeyStore.Entry Implementierungen bereitgestellt:

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

Dieser Eintragstyp enthält eine Kryptografie PrivateKey, die optional in einem geschützten Format gespeichert ist, um unbefugten Zugriff zu verhindern. Sie wird auch von einer Zertifikatkette für den entsprechenden öffentlichen Schlüssel begleitet.

Private Schlüssel und Zertifikatketten werden von einer bestimmten Entität für die Selbstauthentifizierung verwendet. Anwendungen für diese Authentifizierung umfassen Softwareverteilungsorganisationen, die JAR-Dateien als Teil der Veröffentlichung und/oder Lizenzierungssoftware signieren.

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

Dieser Eintragstyp enthält eine Kryptografie SecretKey, die optional in einem geschützten Format gespeichert ist, um unbefugten Zugriff zu verhindern.

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

Dieser Eintragstyp enthält einen einzelnen öffentlichen Schlüssel Certificate , der zu einer anderen Partei gehört. Es wird als vertrauenswürdiges Zertifikat bezeichnet, da der Schlüsselspeicherbesitzer dem vertrauen, dass der öffentliche Schlüssel im Zertifikat tatsächlich zur Identität gehört, die vom Antragsteller (Besitzer) des Zertifikats identifiziert wird.

Diese Art von Eintrag kann verwendet werden, um andere Parteien zu authentifizieren. </ul>

Jeder Eintrag in einem Keystore wird durch eine "Alias"-Zeichenfolge identifiziert. Bei privaten Schlüsseln und den zugehörigen Zertifikatketten unterscheiden sich diese Zeichenfolgen zwischen den verschiedenen Methoden, in denen sich die Entität authentifizieren kann. Beispielsweise kann sich die Entität mit unterschiedlichen Zertifizierungsstellen authentifizieren oder verschiedene Algorithmen für öffentliche Schlüssel verwenden.

Ob bei Aliasen die Groß-/Kleinschreibung beachtet wird, hängt von der Implementierung ab. Um Probleme zu vermeiden, empfiehlt es sich, aliase in einem KeyStore nicht zu verwenden, die sich nur in einem Fall unterscheiden.

Gibt an, ob Keystores persistent sind und die mechanismen, die vom Keystore verwendet werden, falls er persistent ist, hier nicht angegeben werden. Dies ermöglicht die Verwendung einer Vielzahl von Techniken zum Schutz vertraulicher Schlüssel (z. B. privater oder geheimer Schlüssel). Smartcards oder andere integrierte Kryptografiemodule (SafeKeyper) sind eine Option, und einfachere Mechanismen wie Dateien können auch verwendet werden (in einer Vielzahl von Formaten).

Typische Methoden zum Anfordern eines KeyStore-Objekts sind das Angeben einer vorhandenen Keystoredatei, die sich auf den Standardtyp und die Bereitstellung eines bestimmten Keystoretyps stützt.

<ul><li>So geben Sie eine vorhandene Keystoredatei an:

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

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

Das System prüft die angegebene Datei, um den Schlüsselspeichertyp zu ermitteln und eine Keystoreimplementierung mit den bereits geladenen Einträgen zurückzugeben. Wenn dieser Ansatz verwendet wird, ist es nicht erforderlich, die Methode des Keystores #load(java.io.InputStream, char[]) load aufzurufen.

<li>To rely on the default type:

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

Das System gibt eine Keystoreimplementierung für den Standardtyp zurück.

<li>So stellen Sie einen bestimmten Keystoretyp bereit:

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

Das System gibt die am häufigsten bevorzugte Implementierung des angegebenen Schlüsselspeichertyps zurück, der in der Umgebung verfügbar ist. </ul>

Bevor auf einen Keystore zugegriffen werden kann, muss er sein #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);
               }

Übergeben Sie als load Argument, null um einen leeren Keystore mit der obigen InputStream Methode zu erstellen.

Nachdem der Keystore geladen wurde, ist es möglich, vorhandene Einträge aus dem Keystore zu lesen oder neue Einträge in den Keystore zu schreiben:

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

Beachten Sie, dass auch wenn dasselbe Kennwort zum Laden des Keystores verwendet werden kann, um den Privaten Schlüsseleintrag zu schützen, den Schlüsseleintrag zu schützen und den Schlüsselspeicher zu speichern (wie im obigen Beispielcode gezeigt), können auch verschiedene Kennwörter oder andere Schutzparameter verwendet werden.

Android stellt die folgenden KeyStore Typen bereit: <Tabelle><thead><tr><th>Algorithm</th th><>Unterstützte API Levels</th></tr></thead><tbody><tr><td>AndroidCAStore</td td><>14+</td></tr><><td>AndroidKeyStore</td td td><>18+</td></tr tr><class="deprecated" ><>td BCPKCS12</td><td>1-8</td></tr><><td>BKS</td td td><>1+</td></tr><tr><t td>BouncyCastle</td td><>1+</td></tr><><t td>PKCS12</td td><>1+</td></tr tr><class="deprecated"><td>PKCS12-DEF</td><td>1-8</td></tr></tbody></table>

Diese Typen werden im Abschnitt "KeyStore" der Java Dokumentation zum Standardalgorithmus der Kryptografiearchitektur beschrieben.

In 1.2 hinzugefügt.

Java Dokumentation für java.security.KeyStore.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

Name Beschreibung
KeyStore(IntPtr, JniHandleOwnership)

Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen.

KeyStore(KeyStoreSpi, Provider, String)

Erstellt ein KeyStore-Objekt des angegebenen Typs und kapselt die angegebene Anbieterimplementierung (SPI-Objekt) darin.

Eigenschaften

Name Beschreibung
Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
DefaultType

Gibt den Standardschlüsselspeichertyp gemäß der Angabe der keystore.type Sicherheitseigenschaft oder die Zeichenfolge "jks" (Akronym für "Java Keystore") zurück, wenn keine solche Eigenschaft vorhanden ist.

Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
JniIdentityHashCode

Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist.

(Geerbt von Object)
JniManagedPeerState

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
JniPeerMembers

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

PeerReference

Ruft den JNI-Objektverweis für diesen Java Peer ab.

(Geerbt von Object)
Provider

Gibt den Anbieter dieses Keystores zurück.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

Type

Gibt den Typ dieses Schlüsselspeichers zurück.

Methoden

Name Beschreibung
Aliases()

Listet alle Aliasnamen dieses Schlüsselspeichers auf.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
ContainsAlias(String)

Überprüft, ob der angegebene Alias in diesem Keystore vorhanden ist.

DeleteEntry(String)

Löscht den durch den angegebenen Alias identifizierten Eintrag aus diesem Keystore.

Dispose()

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
Dispose(Boolean)

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
DisposeUnlessReferenced()

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
EntryInstanceOf(String, Class)

Bestimmt, ob der Schlüsselspeicher Entry für den angegebenen Wert eine Instanz oder Unterklasse der angegebenen aliasentryClassist.

Equals(Object)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetCertificate(String)

Gibt das Zertifikat zurück, das dem angegebenen Alias zugeordnet ist.

GetCertificateAlias(Certificate)

Gibt den (Alias)-Namen des ersten Schlüsselspeichereintrags zurück, dessen Zertifikat mit dem angegebenen Zertifikat übereinstimmt.

GetCertificateChain(String)

Gibt die Zertifikatkette zurück, die dem angegebenen Alias zugeordnet ist.

GetCreationDate(String)

Gibt das Erstellungsdatum des Eintrags zurück, der durch den angegebenen Alias identifiziert wird.

GetEntry(String, KeyStore+IProtectionParameter)

Ruft einen Keystore Entry für den angegebenen Alias mit dem angegebenen Schutzparameter ab.

GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
GetInstance(File, Char[])

Gibt ein geladenes Keystore-Objekt des entsprechenden Schlüsselspeichertyps zurück.

GetInstance(File, KeyStore+ILoadStoreParameter)

Testet eine Keystoredatei und gibt einen geladenen Schlüsselspeicher des erkannten Typs zurück.

GetInstance(String, Provider)

Gibt ein Keystore-Objekt des angegebenen Typs zurück.

GetInstance(String, String)

Gibt ein Keystore-Objekt des angegebenen Typs zurück.

GetInstance(String)

Gibt ein Keystore-Objekt des angegebenen Typs zurück.

GetKey(String, Char[])

Gibt den schlüssel, der dem angegebenen Alias zugeordnet ist, mithilfe des angegebenen Kennworts zurück, um ihn wiederherzustellen.

IsCertificateEntry(String)

Gibt true zurück, wenn der vom angegebenen Alias identifizierte Eintrag durch einen Aufruf setCertificateEntryvon oder durch einen Aufruf mit einem setEntryAufruf TrustedCertificateEntry erstellt wurde.

IsKeyEntry(String)

Gibt true zurück, wenn der durch den angegebenen Alias identifizierte Eintrag durch einen Aufruf setKeyEntryerstellt oder von einem Aufruf setEntry mit einem PrivateKeyEntry oder einem Aufruf SecretKeyEntryerstellt wurde.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Load(KeyStore+ILoadStoreParameter)

Lädt diesen KeyStore aus dem angegebenen Eingabedatenstrom.

Load(Stream, Char[])

Lädt diesen KeyStore aus dem angegebenen Eingabedatenstrom.

Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
SetCertificateEntry(String, Certificate)

Weist dem angegebenen Alias das angegebene vertrauenswürdige Zertifikat zu.

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

Speichert einen Keystore Entry unter dem angegebenen Alias.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetKeyEntry(String, Byte[], Certificate[])

Weist dem angegebenen Alias den angegebenen Schlüssel (der bereits geschützt wurde) zu.

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

Weist dem angegebenen Alias den angegebenen Schlüssel zu, und schützt ihn mit dem angegebenen Kennwort.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
Size()

Ruft die Anzahl der Einträge in diesem Keystore ab.

Store(KeyStore+ILoadStoreParameter)

Speichert diesen Keystore im angegebenen Ausgabedatenstrom und schützt seine Integrität mit dem angegebenen Kennwort.

Store(Stream, Char[])

Speichert diesen Keystore im angegebenen Ausgabedatenstrom und schützt seine Integrität mit dem angegebenen Kennwort.

ToArray<T>()

Erstellt ein verwaltetes Array aus diesem Java Arraywrapper.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><>

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IJavaPeerable.Disposed()

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

(Geerbt von JavaObject)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Diese Klasse stellt eine Speichereinrichtung für kryptografische Schlüssel und Zertifikate dar.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: