code: function aesKeyWrap(cek, key, bits) {
    let bytes = bits >> 3;
    if (typeof key === 'string') {
      key = Buffer.from(key, 'base64');
    } else if (!(key instanceof Buffer)) {
      throw new TypeError('Key must be a buffer or a base64-encoded string');
    }
    if (key.length < bytes) {
      throw new TypeError(`Key length must be at least ${bytes} bytes`);
    }
    key = key.slice(0, bytes);
    let r = [];
    for (let i = 0; i < cek.length; i += 8) {
      r.push(cek.slice(i, i + 8));
    }
    let iv = Buffer.alloc(16);
    let a = Buffer.from('A6A6A6A6A6A6A6A6', 'hex');
    let count = 1;
    for (let j = 0; j < 6; j++) {
      for (let i = 0; i < r.length; i++) {
        let cipher = crypto.createCipheriv(`AES${bits}`, key, iv);
        let c = `000000000000000${count.toString(16)}`.slice(-16);
        let b = cipher.update(Buffer.concat([a, r[i]]));
        a = Buffer.from(c, 'hex');
        for (let n = 0; n < 8; n++) {
          a[n] ^= b[n];
        }
        r[i] = b.slice(8, 16);
        count++;
      }
    }
    return buf2b64url(Buffer.concat([a].concat(r)));
  }
docs: ===== A128KW, A192KW, A256KW ===============================================