---
title: securestore
slug: develop/es/securestore
docTags: 
createdAt: 2025-03-26T14:48:48.846Z
---

El objeto *securestore* proporciona un mecanismo para almacenar de forma segura datos de clientes dentro del reproductor. Los datos almacenados en el *securestore* se cifran utilizando claves raíz que se almacenan de forma segura dentro del hardware del reproductor y son únicas para cada unidad. En general, el *securestore* se utiliza para almacenar una clave de segundo nivel que a su vez se utiliza para el descifrado posterior. La clave en sí no se puede recuperar, pero el usuario puede solicitar al *securestore* que realice el descifrado utilizándola.

La capacidad del *securestore* es limitada y los clientes no deben almacenar más de 256 kB de claves.

**IDL de securestore**

```javascript
interface SecureStore {
    Promise<void> writePkcs8DecryptionKey(String name, Array<byte> data)
    Promise<void> writePkcs8MediaDecryptionKey(String name, Array<byte> data)
    Promise<Array<byte>> decryptWithPkcs8Key(String name, String algorithm, String hash, Array<byte> data)
    Promise<void> eraseSecureStore();
}; 
```

## Creación de objetos

Para crear un objeto *securestore* object, load th&#x65;*&#xA0;@brightsign/securestore* module using the Node.js® require() method:

```javascript
var securestoreClass = require("@brightsign/securestore");
var securestore = new securestoreClass();
```

## SecureStore

**writePkcs8DecryptionKey()**

```javascript
Promise<void> writePkcs8DecryptionKey(String name, Array<byte> data)
```

Escribe la clave en formato pkcs8 en el securestore.

- `nombre` <font color="#6554c0">string:</font> El nombre de archivo de la clave dentro del almacén seguro.
- `datos` <font color="#6554c0">Array:</font>  La clave como un arreglo de datos Uint8.

**decryptWithPkcs8Key()**

```javascript
Promise<Array<byte>> decryptWithPkcs8Key(String name, String algorithm, String hash, Array<byte> data)
```

Descifra un arreglo de datos utilizando la clave designada almacenada en el securestore y utilizando el algoritmo y hash designados.

- `nombre` <font color="#6554c0">string</font>: El nombre de archivo de la clave dentro del almacén seguro.
- `algoritmo` <font color="#6554c0">string</font>: Por el momento, el único algoritmo compatible es ""RSA-OAEP".  
- `hash` <font color="#6554c0">string</font>:  Los valores hash pueden ser cualquiera de los siguientes: "SHA-1", "SHA-256", "SHA-384" o "SHA-512".
- `datos` <font color="#6554c0">Array</font>:  datos Uint8Array

**eraseSecureStore()**

```javascript
Promise<void> eraseSecureStore()
```

Elimina completamente el securestore.

## Ejemplos

Ejemplo de escritura:

```javascript
window.crypto.subtle.generateKey(
    {
    name: "RSA-OAEP", 
    modulusLength: 2048, //can be 1024, 2048, or 4096
    publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
    hash: {name: "SHA-1"}, //can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512"
    },
    true, //whether the key is extractable (i.e. can be used in exportKey)
    ["encrypt", "decrypt"] //must be ["encrypt", "decrypt"] or ["wrapKey", "unwrapKey"]
)
.then(function(key){
    window.crypto.subtle.exportKey("pkcs8", key.privateKey)
    .then(function(exportKey) {
        var SecureClass = require("@brightsign/securestore");
        var secure = new SecureClass();
        secure.writePkcs8DecryptionKey("testkey.bin", Array.from(new Uint8Array(exportKey)))
        .then(function(){

        ....

       }

    ....

    });
```

Ejemplo de descifrado:

```javascript
var SecureClass = require("@brightsign/securestore");
var secure = new SecureClass();

decryptWithPkcs8Key("testkey.bin", "RSA-OAEP", "SHA-1", Array.from(new Uint8Array(encrypted)))
    .then(function(decryptedArray){

        ....
})
```

Ejemplo de eliminación:

```javascript
var SecureClass = require("@brightsign/securestore");
var secure = new SecureClass();

secure.eraseSecureStore()
```

