PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/webcrypto-shim/test/alg

Просмотр файла: aes-cbc.js

describe( 'AES-CBC' , function () {
    var alg = { name: 'AES-CBC', length: 256 };
    var key;

    var genKeyComplete = crypto.subtle.generateKey( alg, true, [ 'encrypt', 'decrypt' ] )
            .then( function ( res ) {
                key = res;
            });

    it( "generateKey", function ( done ) {
        genKeyComplete
            .then( function () {
                expect(key).toBeDefined();
                expect(key instanceof CryptoKey).toBe(true);
                expect(key.type).toBe('secret');
                expect(key.extractable).toBe(true);
                expect(key.algorithm).toEqual( normalizeAlg(alg) );
            })
            .catch(fail)
            .then(done);
    });

    it( "encrypt / decrypt", function ( done ) {
        genKeyComplete
            .then( function () {
                return crypto.subtle.encrypt( extend( alg, { iv: new Uint8Array(16) } ), key, new Uint8Array(16) )
            })
            .then( function ( res ) {
                expect(res).toEqual(jasmine.any(ArrayBuffer));
                expect(res.byteLength).toBe(32);

                return crypto.subtle.decrypt( extend( alg, { iv: new Uint8Array(16) } ), key, res )
            })
            .then( function ( res ) {
                expect(res).toEqual(jasmine.any(ArrayBuffer));
                expect(res.byteLength).toBe(16);
            })
            .catch(fail)
            .then(done);
    });

    it( 'wrapKey / unwrapKey', function ( done ) {
        var keyAlg = { name: 'AES-CBC', length: 128 };
            wrapAlg = { name: 'AES-CBC', length: 128 };

        var wrapParam = extend( wrapAlg, { iv: new Uint8Array(16) } );

        Promise.all([
            crypto.subtle.generateKey( keyAlg, true, [ 'encrypt' ] ),
            crypto.subtle.generateKey( wrapAlg, false, [ 'decrypt', 'wrapKey', 'unwrapKey' ] )
        ])
        .then( function ( keys ) {
            return crypto.subtle
                .wrapKey( 'raw', keys[0], keys[1], wrapParam )
                .then( function ( wrap ) {
                    return Promise.all([
                        crypto.subtle.exportKey( 'raw', keys[0] ),
                        crypto.subtle.decrypt( wrapParam, keys[1], wrap ),
                        crypto.subtle.unwrapKey( 'raw', wrap, keys[1], wrapParam, keyAlg, true, [ 'encrypt' ] )
                            .then( function ( res ) {
                                return crypto.subtle.exportKey( 'raw', res );
                            }),
                    ]);
                })
        })
        .then( function ( res ) {
            expect( new Uint8Array( res[0] ) ).toEqual( new Uint8Array( res[1] ) );
            expect( new Uint8Array( res[0] ) ).toEqual( new Uint8Array( res[2] ) );
        })
        .catch(fail)
        .then(done);
    });
});

Выполнить команду


Для локальной разработки. Не используйте в интернете!