securestore
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
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 the @brightsign/securestore module using the Node.js® require() method:
var securestoreClass = require("@brightsign/securestore");
var securestore = new securestoreClass();SecureStore
writePkcs8DecryptionKey()
Promise<void> writePkcs8DecryptionKey(String name, Array<byte> data)Escribe la clave en formato pkcs8 en el securestore.
- nombre string: El nombre de archivo de la clave dentro del almacén seguro.
- datos Array: La clave como un arreglo de datos Uint8.
decryptWithPkcs8Key()
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 string: El nombre de archivo de la clave dentro del almacén seguro.
- algoritmo string: Por el momento, el único algoritmo compatible es ""RSA-OAEP".
- hash string: Los valores hash pueden ser cualquiera de los siguientes: "SHA-1", "SHA-256", "SHA-384" o "SHA-512".
- datos Array: datos Uint8Array
eraseSecureStore()
Promise<void> eraseSecureStore()Elimina completamente el securestore.
Ejemplos
Ejemplo de escritura:
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:
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:
var SecureClass = require("@brightsign/securestore");
var secure = new SecureClass();
secure.eraseSecureStore()