Создайте сертификат атрибута, используя bouncycastle - PullRequest
0 голосов
/ 12 июня 2019

Я покупаю цифровой сертификат A3 (токен USB) своей компании.

Теперь я хочу сгенерировать сертификаты атрибутов для своих работодателей, подписав их своим сертификатом A3.

Я пытаюсь начать использовать приведенный выше код, но я действительно застрял, кто-нибудь может дать какие-нибудь идеи?

AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find("SHA256withRSA");

AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
ContentSigner authority = null;

// create a bouncy castle content signer convert using our existing private key
authority = new BcRSAContentSignerBuilder(sigAlgId, digAlgId).build(PrivateKeyFactory.createKey(issuerPrivateKey.getEncoded()));
// second, prepare the attribute certificate
// which is expected to be a UUID  like this: 33766a63-5c55-4461-8a84-5936577df450
AttributeCertificateHolder holder = new AttributeCertificateHolder(subjectName);
AttributeCertificateIssuer issuer = new AttributeCertificateIssuer(issuerName);
X509v2AttributeCertificateBuilder builder = new X509v2AttributeCertificateBuilder(holder, issuer, serialNumber, notBefore, notAfter);

for (Attribute attribute : attributes) {
    builder.addAttribute(attribute.oid, attribute.value);
}

// fourth, sign the attribute certificate
if (authority != null) {
    X509AttributeCertificateHolder cert;
    cert = builder.build(authority);
    //X509AttributeCertificate.valueOf(cert.getEncoded());
    return cert.getEncoded();
}

Моя последняя цель - создать сертификат атрибута, подобный этому:

Сертификат декодированного атрибута

...