ho provato ad usare un array di appoggio in cui copiare i byte letti... mi aspettavo fosse più lenta la cosa, cmq è poco elegante, se avete qualche idea migliore è sempre ben accetta

ecco la modifica con l'array di appoggio
codice:
byte b[]=new byte[500];
     
        while ((ch = dIn.read(b)) >= 0)
        {
			
			byte app[]=new byte[ch];
			for(int j=0;j<ch;j++) app[j]=b[j];
            sig.update((byte[])app);
            
        }