2013-05-06 3 views
0

В настоящее время я работаю над созданием запросов сертификата атрибутов с использованием bouncycastle 1.48. Поскольку произошли некоторые изменения в API (и я новичок в этом деле) Я unnable, чтобы добавить атрибуты созданного запроса Мой текущий кодДобавление атрибутов в запрос сертификата, java + bouncycastle 1.48

 KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
    keyGen.initialize(512); 

    KeyPair rsaKey = keyGen.generateKeyPair(); 
    PrivateKey privateKey = rsaKey.getPrivate(); 
    PublicKey publicKey = rsaKey.getPublic(); 

    System.out.println(privateKey.getEncoded()); 
    System.out.println(publicKey.getEncoded()); 
    ContentSigner sigGen = new JcaContentSignerBuilder("SHA1withRSA").build(privateKey); 
    AlgorithmIdentifier rsaEncryption = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, null); 
    SubjectPublicKeyInfo publicKeyInfo = new SubjectPublicKeyInfo(rsaEncryption, publicKey.getEncoded()); 
    Date startDate = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000); 
    Date endDate = new Date(System.currentTimeMillis() + 365 * 24 * 60 * 60 * 1000); 
    X500NameBuilder nameBuilder = new X500NameBuilder(); 
    nameBuilder.addRDN(BCStyle.CN, "test request"); 
    nameBuilder.addRDN(BCStyle.C, "UK"); 
    nameBuilder.addRDN(BCStyle.E,"[email protected]"); 
    nameBuilder.addRDN(BCStyle.GENDER,"M"); 
    X500Name name = nameBuilder.build(); 

    PKCS10CertificationRequestBuilder genReq = new PKCS10CertificationRequestBuilder(name,publicKeyInfo); 
    PKCS10CertificationRequest request = genReq.build(sigGen); 
    PEMWriter pemWriter = new PEMWriter(new FileWriter(new File("C:\\certs\\request.txt"))); 
    pemWriter.writeObject(request); 
    pemWriter.flush();  

Мой вопрос - как следует правильный синтаксис выглядит для AddAttribute метод? Заранее спасибо

+0

не соответствует друг другу, но клавиши длиной до 512 бит больше не принимаются как «защищенные» некоторыми браузерами. – EpicPandaForce

ответ

2

Это зависит от того, что вы хотите добавить. Главное - помнить, что атрибуты в запросе на сертификат и расширения в сертификате - это не одно и то же. Обычно люди пытаются добавить одно или несколько расширений, но в этом случае вам нужно использовать соответствующий атрибут PKCS # 9, чтобы обозначить это, а не идентификатор OID, связанный с расширением.

Скажем, к примеру, вы хотите, чтобы запросить определенное расширение KeyUsage от CA, вы бы что-то вроде:

ExtensionsGenerator extGen = new ExtensionsGenerator(); 

extGen.addExtension(Extension.keyUsage, true, new KeyUsage(KeyUsage.keyCertSign | KeyUsage.cRLSign)); 

genReq.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, extGen.generate()); 

extensionRequest блок должен затем считать СА содержит расширения, которые вы хотите ,

Смежные вопросы