KeyStore Klasse

Definition

Diese Klasse stellt eine Speicherfunktion 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
KeyStore
Attribute

Hinweise

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

Ein KeyStore verwaltet verschiedene Arten von Einträgen. Jeder Typ von Eintrag implementiert die KeyStore.Entry -Schnittstelle. Es werden drei grundlegende KeyStore.Entry Implementierungen bereitgestellt:

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

Dieser Typ von Eintrag enthält eine kryptografische PrivateKey, die optional in einem geschützten Format gespeichert wird, um nicht autorisierten Zugriff zu verhindern. Es 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 im Rahmen der Veröffentlichung und/oder Lizenzierung von Software signieren.

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

Dieser Typ von Eintrag enthält eine kryptografische SecretKey, die optional in einem geschützten Format gespeichert wird, um nicht autorisierten Zugriff zu verhindern.

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

Dieser Typ von Eintrag enthält einen einzelnen öffentlichen Schlüssel Certificate , der einer anderen Partei gehört. Es wird als vertrauenswürdiges Zertifikat bezeichnet, da der Keystorebesitzer darauf vertraut, dass der öffentliche Schlüssel im Zertifikat tatsächlich zu der 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 Aliaszeichenfolge identifiziert. Bei privaten Schlüsseln und den zugehörigen Zertifikatketten unterscheiden sich diese Zeichenfolgen zwischen den verschiedenen Möglichkeiten, wie sich die Entität selbst authentifizieren kann. Beispielsweise kann sich die Entität mit unterschiedlichen Zertifizierungsstellen oder mit anderen Algorithmen für öffentliche Schlüssel authentifizieren.

Ob bei Aliasen die Groß-/Kleinschreibung beachtet wird, hängt von der Implementierung ab. Um Probleme zu vermeiden, wird empfohlen, keine Aliase in einem KeyStore zu verwenden, die sich nur in der Groß- und Kleinschreibung unterscheiden.

Ob Keystores persistent sind und welche Mechanismen vom Keystore verwendet werden, wenn er persistent ist, werden hier nicht angegeben. 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 kryptografische Engines (SafeKeyper) sind eine Option, und einfachere Mechanismen wie Dateien können ebenfalls verwendet werden (in einer Vielzahl von Formaten).

Typische Methoden zum Anfordern eines KeyStore-Objekts sind das Angeben einer vorhandenen Keystoredatei, die Verwendung des Standardtyps und das Bereitstellen eines bestimmten Keystoretyps.

<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 überprüft die angegebene Datei, um den Keystoretyp zu bestimmen, und gibt eine Keystoreimplementierung mit bereits geladenen Einträgen zurück. Wenn dieser Ansatz verwendet wird, ist es nicht erforderlich, die -Methode des Keystores #load(java.io.InputStream, char[]) load aufzurufen.

<li>So verlassen Sie sich auf den Standardtyp:

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

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

<li>So stellen Sie einen bestimmten Keystore-Typ bereit:

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

Das System gibt die bevorzugte Implementierung des angegebenen Keystoretyps 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 InputStream Argument, um einen leeren Keystore mithilfe der obigen loadnull 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 zwar dasselbe Kennwort zum Laden des Keystores, zum Schutz des Eintrags für den privaten Schlüssel, zum Schutz des Geheimschlüsseleintrags und zum Speichern des Keystores (wie im obigen Beispielcode gezeigt) verwendet werden kann, aber auch andere Kennwörter oder andere Schutzparameter verwendet werden können.

Android bietet die folgenden KeyStore Typen: <table><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><tr class="deprecated" ><td>BCPKCS12</td><td>1-8</td<>/tr<>tr<>td>BKS</td><td>1+</td<>/tr><tr tr><td>BouncyCastle</td<>td>1+</td<>/tr><tr td<>>PKCS12</td td>><1+</td></tr><tr tr class="deprecated"><td>PKCS12-DEF</td><td>1-8</td></tr></tbody></table>

Diese Typen werden im Abschnitt KeyStore der Java Cryptography Architecture Standard Algorithm Name Documentation beschrieben.

In Version 1.2 hinzugefügt.

Java-Dokumentation für java.security.KeyStore.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

KeyStore(IntPtr, JniHandleOwnership)

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

KeyStore(KeyStoreSpi, Provider, String)

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

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Objectzurück.

(Geerbt von Object)
DefaultType

Gibt den standardmäßigen Keystoretyp zurück, der von der keystore.type Sicherheitseigenschaft angegeben wird, oder die Zeichenfolge "jks" (Akronym für "Java Keystore"), wenn keine solche Eigenschaft vorhanden ist.

Handle

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

(Geerbt von Object)
JniIdentityHashCode

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

(Geerbt von Object)
JniPeerMembers

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

PeerReference

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

(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 Keystores zurück.

Methoden

Aliases()

Listet alle Aliasnamen dieses Keystores auf.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
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()

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

(Geerbt von Object)
Dispose(Boolean)

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

(Geerbt von Object)
EntryInstanceOf(String, Class)

Bestimmt, ob der Keystore Entry für den angegebenen alias ein instance oder eine Unterklasse des angegebenen entryClassist.

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 Namen (Alias) des ersten Keystoreeintrags 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 Keystore-Typs zurück.

GetInstance(File, KeyStore+ILoadStoreParameter)

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

GetInstance(String)

Gibt ein Keystore-Objekt des angegebenen 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.

GetKey(String, Char[])

Gibt den Schlüssel zurück, der dem angegebenen Alias zugeordnet ist, und verwendet das angegebene Kennwort, um ihn wiederherzustellen.

IsCertificateEntry(String)

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

IsKeyEntry(String)

Gibt true zurück, wenn der durch den angegebenen Alias identifizierte Eintrag durch einen Aufruf setKeyEntryvon oder erstellt setEntryPrivateKeyEntrySecretKeyEntrywurde.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr 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 den Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

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

(Geerbt von Object)
SetCertificateEntry(String, Certificate)

Weist das angegebene vertrauenswürdige Zertifikat dem angegebenen Alias 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 den angegebenen Schlüssel (der bereits geschützt wurde) dem angegebenen Alias zu.

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

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

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

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

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

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

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch <>Benachrichtigung</em> oder <em>interrupted</em>.

(Geerbt von Object)
Wait(Int64)

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

(Geerbt von Object)
Wait(Int64, Int32)

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

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

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

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

(Geerbt von Object)
IJavaPeerable.Finalized()

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

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

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

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

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

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

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

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

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

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine Typkonvertierung mit Überprüfung der Android-Laufzeit aus.

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

Gilt für: