KeyStore Clase

Definición

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

[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
Herencia
KeyStore
Atributos

Comentarios

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

Un KeyStore administra diferentes tipos de entradas. Cada tipo de entrada implementa la KeyStore.Entry interfaz . Se proporcionan tres implementaciones básicas KeyStore.Entry :

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

Este tipo de entrada contiene un cifrado PrivateKey, que se almacena opcionalmente en un formato protegido para evitar el acceso no autorizado. También va acompañada de una cadena de certificados para la clave pública correspondiente.

Las claves privadas y las cadenas de certificados las usa una entidad determinada para la autenticación automática. Las aplicaciones para esta autenticación incluyen organizaciones de distribución de software que firman archivos JAR como parte de la publicación o el software de licencias.

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

Este tipo de entrada contiene un cifrado SecretKey, que se almacena opcionalmente en un formato protegido para evitar el acceso no autorizado.

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

Este tipo de entrada contiene una sola clave Certificate pública que pertenece a otra entidad. Se denomina certificado de confianza porque el propietario del almacén de claves confía en que la clave pública del certificado pertenece realmente a la identidad identificada por el firmante (propietario) del certificado.

Este tipo de entrada se puede usar para autenticar a otras partes. </ul>

Cada entrada de un almacén de claves se identifica mediante una cadena de "alias". En el caso de las claves privadas y sus cadenas de certificados asociadas, estas cadenas distinguen entre las distintas formas en las que la entidad se puede autenticar. Por ejemplo, la entidad puede autenticarse mediante diferentes entidades de certificación o usar algoritmos de clave pública diferentes.

Si los alias distinguen mayúsculas de minúsculas depende de la implementación. Para evitar problemas, se recomienda no usar alias en un almacén de claves que solo difieren en el caso.

Si los almacenes de claves son persistentes y los mecanismos utilizados por el almacén de claves si es persistente, no se especifican aquí. Esto permite el uso de diversas técnicas para proteger las claves confidenciales (por ejemplo, privadas o secretas). Las tarjetas inteligentes u otros motores criptográficos integrados (SafeKeyper) son una opción, y también se pueden usar mecanismos más sencillos como archivos (en diversos formatos).

Las formas típicas de solicitar un objeto KeyStore incluyen especificar un archivo de almacén de claves existente, basarse en el tipo predeterminado y proporcionar un tipo de almacén de claves específico.

<ul><li>Para especificar un archivo de almacén de claves existente:

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

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

El sistema sondeará el archivo especificado para determinar su tipo de almacén de claves y devolverá una implementación de almacén de claves con sus entradas ya cargadas. Cuando se usa este enfoque, no es necesario llamar al método del almacén de #load(java.io.InputStream, char[]) load claves.

<li>Para confiar en el tipo predeterminado:

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

El sistema devolverá una implementación de almacén de claves para el tipo predeterminado.

<li>Para proporcionar un tipo de almacén de claves específico:

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

El sistema devolverá la implementación más preferida del tipo de almacén de claves especificado disponible en el entorno. </ul>

Para poder acceder a un almacén de claves, debe ser #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);
               }

Para crear un almacén de claves vacío mediante el método anterior load , pase null como InputStream argumento .

Una vez cargado el almacén de claves, es posible leer las entradas existentes del almacén de claves o escribir nuevas entradas en el almacén de claves:

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

Tenga en cuenta que, aunque se puede usar la misma contraseña para cargar el almacén de claves, para proteger la entrada de clave privada, para proteger la entrada de clave secreta y para almacenar el almacén de claves (como se muestra en el código de ejemplo anterior), también se pueden usar contraseñas diferentes u otros parámetros de protección.

Android proporciona los siguientes KeyStore tipos: <table><thead><tr><th>Algorithm</th><>Supported API Levels</th></tr></thead<>td>><><AndroidCAStore</td td td>><14+</td<>/tr tr td<>><>AndroidKeyStore</td td td><>18+</td<>/tr tr><class="desusado" ><td>BCPKCS12</td td><>1-8</td></tr<><>tr td>BKS</td td<>>1+</td></tr tr<<>>td>BouncyCastle</td td><>1+</td<>/tr tr td<><>>PKCS12</td><td>1+</td<>/tr<>class="deprecated"><td>PKCS12-DEF</td><td>1-8</td></tr></tbody></table>

Estos tipos se describen en la sección KeyStore de la documentación de nombre de algoritmo estándar de arquitectura de criptografía de Java.

Agregado en la versión 1.2.

Java documentación para java.security.KeyStore.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Constructores

Nombre Description
KeyStore(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución.

KeyStore(KeyStoreSpi, Provider, String)

Crea un objeto KeyStore del tipo especificado y encapsula la implementación de proveedor especificada (objeto SPI) en él.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
DefaultType

Devuelve el tipo de almacén de claves predeterminado especificado por la keystore.type propiedad de seguridad o la cadena "jks" (acrónimo de "Java almacén de claves") si no existe dicha propiedad.

Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
JniPeerMembers

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

PeerReference

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
Provider

Devuelve el proveedor de este almacén de claves.

ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

Type

Devuelve el tipo de este almacén de claves.

Métodos

Nombre Description
Aliases()

Enumera todos los nombres de alias de este almacén de claves.

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
ContainsAlias(String)

Comprueba si el alias especificado existe en este almacén de claves.

DeleteEntry(String)

Elimina la entrada identificada por el alias especificado de este almacén de claves.

Dispose()

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
Dispose(Boolean)

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
EntryInstanceOf(String, Class)

Determina si el almacén Entry de claves para el especificado alias es una instancia o subclase del especificado entryClass.

Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetCertificate(String)

Devuelve el certificado asociado al alias especificado.

GetCertificateAlias(Certificate)

Devuelve el nombre (alias) de la primera entrada de almacén de claves cuyo certificado coincide con el certificado especificado.

GetCertificateChain(String)

Devuelve la cadena de certificados asociada al alias especificado.

GetCreationDate(String)

Devuelve la fecha de creación de la entrada identificada por el alias especificado.

GetEntry(String, KeyStore+IProtectionParameter)

Obtiene un almacén de claves Entry para el alias especificado con el parámetro de protección especificado.

GetHashCode()

Devuelve un valor de código hash para el objeto .

(Heredado de Object)
GetInstance(File, Char[])

Devuelve un objeto de almacén de claves cargado del tipo de almacén de claves adecuado.

GetInstance(File, KeyStore+ILoadStoreParameter)

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

GetInstance(String, Provider)

Devuelve un objeto de almacén de claves del tipo especificado.

GetInstance(String, String)

Devuelve un objeto de almacén de claves del tipo especificado.

GetInstance(String)

Devuelve un objeto de almacén de claves del tipo especificado.

GetKey(String, Char[])

Devuelve la clave asociada al alias especificado, utilizando la contraseña especificada para recuperarla.

IsCertificateEntry(String)

Devuelve true si la entrada identificada por el alias especificado se creó mediante una llamada a setCertificateEntryo creada por una llamada a setEntry con .TrustedCertificateEntry

IsKeyEntry(String)

Devuelve true si la entrada identificada por el alias especificado se creó mediante una llamada a setKeyEntryo creada por una llamada a setEntry con o PrivateKeyEntrySecretKeyEntry.

JavaFinalize()

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Load(KeyStore+ILoadStoreParameter)

Carga este almacén de claves desde el flujo de entrada especificado.

Load(Stream, Char[])

Carga este almacén de claves desde el flujo de entrada especificado.

Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
SetCertificateEntry(String, Certificate)

Asigna el certificado de confianza especificado al alias especificado.

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

Guarda un almacén Entry de claves en el alias especificado.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetKeyEntry(String, Byte[], Certificate[])

Asigna la clave especificada (que ya se ha protegido) al alias especificado.

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

Asigna la clave especificada al alias especificado, protegiéndolo con la contraseña especificada.

Size()

Recupera el número de entradas de este almacén de claves.

Store(KeyStore+ILoadStoreParameter)

Almacena este almacén de claves en el flujo de salida especificado y protege su integridad con la contraseña especificada.

Store(Stream, Char[])

Almacena este almacén de claves en el flujo de salida especificado y protege su integridad con la contraseña especificada.

ToArray<T>()

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto .

(Heredado de Object)
UnregisterFromRuntime()

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><>

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

Nombre Description
IJavaPeerable.Disposed()

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
IJavaPeerable.Finalized()

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

(Heredado de Object)

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Esta clase representa una instalación de almacenamiento para claves criptográficas y certificados.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a