public byte[] getEncoded() throws IOException { return sequence.getEncoded(); } }
new CMSSignedData(tsSeq.getEncoded("DER")));
@Override protected Extension createNonce() { this.log.debug("Creating TM OCSP nonce ..."); try { return new Extension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, this.createSequence().getEncoded()); } catch (IOException e) { throw new DigiDoc4JException(e); } }
private byte[] DSAPlaintoDER(byte[] sig) throws IOException { BigInteger r = new BigInteger(1, Arrays.copyOfRange(sig, 0, sig.length/2)); BigInteger s = new BigInteger(1, Arrays.copyOfRange(sig, sig.length/2, sig.length)); ASN1EncodableVector var3 = new ASN1EncodableVector(); var3.add(new ASN1Integer(r)); var3.add(new ASN1Integer(s)); return (new DERSequence(var3)).getEncoded("DER"); } }
private byte[] DSAPlaintoDER(byte[] sig) throws IOException { BigInteger r = new BigInteger(1, Arrays.copyOfRange(sig, 0, sig.length/2)); BigInteger s = new BigInteger(1, Arrays.copyOfRange(sig, sig.length/2, sig.length)); ASN1EncodableVector var3 = new ASN1EncodableVector(); var3.add(new ASN1Integer(r)); var3.add(new ASN1Integer(s)); return (new DERSequence(var3)).getEncoded("DER"); } }
private byte[] encodeRsaPublicKeyAsBitString(RSAPublicKey rsaPublicKey) throws IOException { ASN1EncodableVector vec = new ASN1EncodableVector(); vec.add(new ASN1Integer(rsaPublicKey.getModulus())); vec.add(new ASN1Integer(rsaPublicKey.getPublicExponent())); DERSequence derSequence = new DERSequence(vec); return derSequence.getEncoded(); }
private byte[] encodeRsaPublicKeyAsBitString(RSAPublicKey rsaPublicKey) throws SpkacException { try { ASN1EncodableVector vec = new ASN1EncodableVector (); vec.add(new ASN1Integer(rsaPublicKey.getModulus())); vec.add(new ASN1Integer(rsaPublicKey.getPublicExponent())); DERSequence derSequence = new DERSequence(vec); return derSequence.getEncoded(ASN1Encoding.DER); } catch (Exception ex) { throw new SpkacException(res.getString("NoEncodeRsaPublicKey.exception.message"), ex); } }
public static byte[] dsaSigPlainToX962(byte[] signature) throws XiSecurityException { Args.notNull(signature, "signature"); if (signature.length % 2 != 0) { throw new XiSecurityException("signature.lenth must be even, but is odd"); } byte[] ba = new byte[signature.length / 2]; ASN1EncodableVector sigder = new ASN1EncodableVector(); System.arraycopy(signature, 0, ba, 0, ba.length); sigder.add(new ASN1Integer(new BigInteger(1, ba))); System.arraycopy(signature, ba.length, ba, 0, ba.length); sigder.add(new ASN1Integer(new BigInteger(1, ba))); DERSequence seq = new DERSequence(sigder); try { return seq.getEncoded(); } catch (IOException ex) { throw new XiSecurityException("IOException, message: " + ex.getMessage(), ex); } }
public static byte[] convertPlainDSASigToX962(final byte[] signature) throws XiSecurityException { ParamUtil.requireNonNull("signature", signature); if (signature.length % 2 != 0) { throw new XiSecurityException("signature.lenth must be even, but is odd"); } byte[] ba = new byte[signature.length / 2]; ASN1EncodableVector sigder = new ASN1EncodableVector(); System.arraycopy(signature, 0, ba, 0, ba.length); sigder.add(new ASN1Integer(new BigInteger(1, ba))); System.arraycopy(signature, ba.length, ba, 0, ba.length); sigder.add(new ASN1Integer(new BigInteger(1, ba))); DERSequence seq = new DERSequence(sigder); try { return seq.getEncoded(); } catch (IOException ex) { throw new XiSecurityException("IOException, message: " + ex.getMessage(), ex); } }
public byte[] encode(BigInteger n, BigInteger r, BigInteger s) throws IOException { ASN1EncodableVector v = new ASN1EncodableVector(); encodeValue(n, v, r); encodeValue(n, v, s); return new DERSequence(v).getEncoded(ASN1Encoding.DER); }
public static byte[] sign(byte[] data, BigInteger privateKeyS) throws IOException { //BigInteger privateKeyS = new BigInteger(hexPvk, 16); BigInteger[] rs = Sign(data, privateKeyS); // byte[] r = getEncoded(rs[0]); // byte[] s = getEncoded(rs[1]); ASN1Integer[] ars = new ASN1Integer[]{ new ASN1Integer(rs[0]), new ASN1Integer(rs[1]) }; return new DERSequence(ars).getEncoded(ASN1Encoding.DER); }
private X509Certificate sign(TBSCertificate toSign, AlgorithmIdentifier sigAlg, String sigAlgName, PrivateKey key, String provider, SecureRandom random) throws InvalidKeyException, NoSuchProviderException, NoSuchAlgorithmException, SignatureException, IOException, CertificateParsingException { byte[] signature = calculateSignature(sigAlgName, provider, key, random, toSign); ASN1EncodableVector v = new ASN1EncodableVector(); v.add(toSign); v.add(sigAlg.toASN1Primitive()); v.add(new DERBitString(signature)); DERSequence derCertificate = new DERSequence(v); CertificateFactory factory; try { factory = CertificateFactory.getInstance("X.509"); ByteArrayInputStream bais = new ByteArrayInputStream(derCertificate.getEncoded(ASN1Encoding.DER)); return (X509Certificate) factory.generateCertificate(bais); } catch (CertificateException e) { throw new RuntimeException("The generated proxy " + "certificate was not parsed by the JDK", e); } }
/** * 把64字节的纯R+S字节流转换成DER编码字节流 * * @param rawSign * @return * @throws IOException */ public static byte[] encodeSM2SignToDER(byte[] rawSign) throws IOException { //要保证大数是正数 BigInteger r = new BigInteger(1, extractBytes(rawSign, 0, 32)); BigInteger s = new BigInteger(1, extractBytes(rawSign, 32, 32)); ASN1EncodableVector v = new ASN1EncodableVector(); v.add(new ASN1Integer(r)); v.add(new ASN1Integer(s)); return new DERSequence(v).getEncoded(ASN1Encoding.DER); }
private X509Certificate generateJcaObject(TBSCertificate tbsCert, byte[] signature) throws Exception { ASN1EncodableVector v = new ASN1EncodableVector(); v.add(tbsCert); v.add(sigAlgId); v.add(new DERBitString(signature)); return (X509Certificate)certificateFactory.engineGenerateCertificate( new ByteArrayInputStream(new DERSequence(v).getEncoded(ASN1Encoding.DER))); }
private byte[] derEncode( BigInteger r, BigInteger s) throws IOException { ASN1EncodableVector v = new ASN1EncodableVector(); v.add(new ASN1Integer(r)); v.add(new ASN1Integer(s)); return new DERSequence(v).getEncoded(ASN1Encoding.DER); }
private X509Certificate generateJcaObject(TBSCertificate tbsCert, byte[] signature) throws CertificateEncodingException { ASN1EncodableVector v = new ASN1EncodableVector(); v.add(tbsCert); v.add(sigAlgId); v.add(new DERBitString(signature)); try { return (X509Certificate)certificateFactory.engineGenerateCertificate( new ByteArrayInputStream(new DERSequence(v).getEncoded(ASN1Encoding.DER))); } catch (Exception e) { throw new ExtCertificateEncodingException("exception producing certificate object", e); } }
public int generateBytes(byte[] out, int outOff, int len) throws DataLengthException, IllegalArgumentException { // TODO Create an ASN.1 class for this (RFC3278) // ECC-CMS-SharedInfo ASN1EncodableVector v = new ASN1EncodableVector(); v.add(new AlgorithmIdentifier(algorithm, DERNull.INSTANCE)); v.add(new DERTaggedObject(true, 2, new DEROctetString(Pack.intToBigEndian(keySize)))); try { kdf.init(new KDFParameters(z, new DERSequence(v).getEncoded(ASN1Encoding.DER))); } catch (IOException e) { throw new IllegalArgumentException("unable to initialise kdf: " + e.getMessage()); } return kdf.generateBytes(out, outOff, len); } }
public int generateBytes(byte[] out, int outOff, int len) throws DataLengthException, IllegalArgumentException { if (outOff + len > out.length) { throw new DataLengthException("output buffer too small"); } // TODO Create an ASN.1 class for this (RFC3278) // ECC-CMS-SharedInfo ASN1EncodableVector v = new ASN1EncodableVector(); v.add(new AlgorithmIdentifier(algorithm, DERNull.INSTANCE)); v.add(new DERTaggedObject(true, 2, new DEROctetString(Pack.intToBigEndian(keySize)))); try { kdf.init(new KDFParameters(z, new DERSequence(v).getEncoded(ASN1Encoding.DER))); } catch (IOException e) { throw new IllegalArgumentException("unable to initialise kdf: " + e.getMessage()); } return kdf.generateBytes(out, outOff, len); } }
private static byte[] buildOCSPResponse(byte[] BasicOCSPResponse) throws IOException { DEROctetString doctet = new DEROctetString(BasicOCSPResponse); ASN1EncodableVector v2 = new ASN1EncodableVector(); v2.add(OCSPObjectIdentifiers.id_pkix_ocsp_basic); v2.add(doctet); ASN1Enumerated den = new ASN1Enumerated(0); ASN1EncodableVector v3 = new ASN1EncodableVector(); v3.add(den); v3.add(new DERTaggedObject(true, 0, new DERSequence(v2))); DERSequence seq = new DERSequence(v3); return seq.getEncoded(); }
/** * 将SEC1标准的私钥字节流恢复为PKCS8标准的字节流 * * @param sec1Key * @return * @throws IOException */ public static byte[] convertECPrivateKeySEC1ToPKCS8(byte[] sec1Key) throws IOException { /** * 参考org.bouncycastle.asn1.pkcs.PrivateKeyInfo和 * org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey,逆向拼装 */ X962Parameters params = getDomainParametersFromName(SM2Util.JDK_EC_SPEC, false); ASN1OctetString privKey = new DEROctetString(sec1Key); ASN1EncodableVector v = new ASN1EncodableVector(); v.add(new ASN1Integer(0)); //版本号 v.add(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params)); //算法标识 v.add(privKey); DERSequence ds = new DERSequence(v); return ds.getEncoded(ASN1Encoding.DER); }