private DERBitString getPublicKeyDetails(JCEECPublicKey pub) { try { SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(ASN1Object.fromByteArray(pub.getEncoded())); return info.getPublicKeyData(); } catch (IOException e) { // should never happen return null; } }
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { byte[] enc = (byte[]) in.readObject(); populateFromPrivKeyInfo(PrivateKeyInfo.getInstance(ASN1Object.fromByteArray(enc))); this.algorithm = (String) in.readObject(); this.withCompression = in.readBoolean(); this.attrCarrier = new PKCS12BagAttributeCarrierImpl(); attrCarrier.readObject(in); }
private BasicOCSPResp generateResponse( String signatureName, PrivateKey key, X509Certificate[] chain, Date producedAt, String provider, SecureRandom random) throws OCSPException, NoSuchProviderException { Iterator it = list.iterator(); DERObjectIdentifier signingAlgorithm; try { signingAlgorithm = OCSPUtil.getAlgorithmOID(signatureName); } catch (Exception e) { throw new IllegalArgumentException("unknown signing algorithm specified"); } ASN1EncodableVector responses = new ASN1EncodableVector(); while (it.hasNext()) { try { responses.add(((ResponseObject) it.next()).toResponse()); } catch (Exception e) { throw new OCSPException("exception creating Request", e); } } ResponseData tbsResp = new ResponseData( responderID.toASN1Object(), new DERGeneralizedTime(producedAt), new DERSequence(responses), responseExtensions); Signature sig = null; try { sig = OCSPUtil.createSignatureInstance(signatureName, provider); if (random != null) { sig.initSign(key, random); } else { sig.initSign(key); } } catch (NoSuchProviderException e) { // TODO Why this special case? throw e; } catch (GeneralSecurityException e) { throw new OCSPException("exception creating signature: " + e, e); } DERBitString bitSig = null; try { sig.update(tbsResp.getEncoded(ASN1Encodable.DER)); bitSig = new DERBitString(sig.sign()); } catch (Exception e) { throw new OCSPException("exception processing TBSRequest: " + e, e); } AlgorithmIdentifier sigAlgId = OCSPUtil.getSigAlgID(signingAlgorithm); DERSequence chainSeq = null; if (chain != null && chain.length > 0) { ASN1EncodableVector v = new ASN1EncodableVector(); try { for (int i = 0; i != chain.length; i++) { v.add( new X509CertificateStructure( (ASN1Sequence) ASN1Object.fromByteArray(chain[i].getEncoded()))); } } catch (IOException e) { throw new OCSPException("error processing certs", e); } catch (CertificateEncodingException e) { throw new OCSPException("error encoding certs", e); } chainSeq = new DERSequence(v); } return new BasicOCSPResp(new BasicOCSPResponse(tbsResp, sigAlgId, bitSig, chainSeq)); }