KeyStore Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
| DefaultType |
Gibt den Standardschlüsselspeichertyp gemäß der Angabe der |
| 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 |
| 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 |
| 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 |
| IsKeyEntry(String) |
Gibt true zurück, wenn der durch den angegebenen Alias identifizierte Eintrag durch einen Aufruf |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| 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 |