Добрый день, Владимир Салыкин, 
Для подписи используется некоторая модификация предложенного на вашем сайте примера, в частности сама подпись происходит путем вызова функции sign():
         plugin.sign(rutokenHandle, certHandle, textToSign, false, {addSignTime: true}) ,
где textToSign - подписываемая строка. 
Подпись и проверка происходит с использованием алгоритмов ГОСТ Р 34.11-2012/34.10-2012 512 бит.
Как уже писал ранее, полученное CMS сообщение пересылается на сервер и парсится используя средства bouncycastle:
     byte[] signerBytes = Base64.decodeBase64(data);
     CMSSignedData signedData = new CMSSignedData(signerBytes);
     content = (byte[]) signedData.getSignedContent().getContent();
     SignerInformation signerInformation = signedData.getSignerInfos().get(signer.getSID());
     AttributeTable signedAttributes = signerInformation.getSignedAttributes();
     byte[] sign = signerInformation.getSignature(); // вытаскиваем "голую" подпись
Данные записываются в БД.
Код проверки:
    KeyFactory keyFactory = KeyFactory.getInstance("GOST3410_2012_512");
    EncodedKeySpec spec = new X509EncodedKeySpec(bytesPublicKey);
    publicKey = keyFactory.generatePublic(spec);
    Signature signature = Signature.getInstance("GOST3411_2012_512withGOST3410_2012_512");
    signature.initVerify(publicKey);
    signature.update(content.getBytes(StandardCharsets.UTF_8)); 
    boolean flagVerified = signature.verify(signedBytes);
Метод verify() всегда возвращает false.