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 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
- 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 load
null
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 |
DefaultType |
Gibt den standardmäßigen Keystoretyp zurück, der von der |
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 |
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 |
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 |
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 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 |
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. |