Когда вы подписываете файл - на самом деле это происходит в 2 этапа:
1) от файла берётся хэш (по соответствующему алгоритму, у вас тоже будет гостовый)
2) выполняется подпись этого хэша
Соответственно, решение для вас такое:
1) На сервере считаете хэш файла и его высылаете пользователю на подпись
2) пользователь подписывает хэш
Сделать это можно через BouncyCastle
А можно через рутокеновские библиотеки
А вот OpenSSL не подойдёт - в текущем виде он может взять гостовый хэш, может подписать файл, но подписать уже готовый хэш не может (разве что есть действовать не через скомпиленный исполняемый файл а через api)