Добавить подписанные / аутентифицированные атрибуты в подпись CMS с помощью BouncyCastle
Я хочу создать простую подпись CMS с помощью Bouncycastle. Этот код работает!
<code> Security.addProvider(new BouncyCastleProvider()); String password = "123456"; KeyStore ks = KeyStore.getInstance("PKCS12"); ks.load(new FileInputStream("c:/cert_123456.p12"), password.toCharArray()); String alias = (String)ks.aliases().nextElement(); PrivateKey key = (PrivateKey)ks.getKey(alias, password.toCharArray()); Certificate[] chain = ks.getCertificateChain(alias); CMSSignedDataGenerator generator = new CMSSignedDataGenerator(); generator.addSigner(key, (X509Certificate)chain[0], CMSSignedDataGenerator.DIGEST_SHA1); ArrayList list = new ArrayList(); for (int i = 0; i < chain.length; i++) { list.add(chain[i]); } CertStore chainStore = CertStore.getInstance("Collection", new CollectionCertStoreParameters(list), "BC"); generator.addCertificatesAndCRLs(chainStore); CMSProcessable content = new CMSProcessableByteArray("test".getBytes()); CMSSignedData signedData = generator.generate(content, false, "BC"); byte[] pk = signedData.getEncoded(); </code>
Но как добавить подписанные атрибуты?
Я хочу удалить подписанные атрибуты по умолчанию и добавить подпись-идентификатор-политики.
Статьи очень приветствуются.